From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from m16.mail.126.com (m16.mail.126.com [117.135.210.9]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 19B25156228 for ; Thu, 26 Sep 2024 11:42:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=117.135.210.9 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1727350932; cv=none; b=pamAXCohlcBT8Nb08tvKqrBg687mBTWrRevSXvh6may7EYMOj5NGZtBlE1UR/pqyN99HaFOKoVehlV9u8S/N6KuBcXLmC6nazhNlwKgTigQ27nTk5Fq+WvinQIb4atweq/cKOsGjkO9/mq/E60A1TjYOSSs+WGeA+XvVKP0/LS4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1727350932; c=relaxed/simple; bh=Kqb8NAxHTeViMRJ0B5cqqCHr0VQZOPKZwWS7aal6Xus=; h=Content-Type:Message-ID:Date:MIME-Version:To:Cc:References: Subject:From:In-Reply-To; b=KSXslcXsFb1v/ZTov6Rb2sHvbMu29wFVJ1IxlcHJCcCbrgYx+5LThUX3N5gvohFTFXVmeHiE7KQEDAzyoxsGy2EjgGWDqtF+x3Y6pNn9mf3zV/TtA3yjv0qZHGsMd3QPstorD4P/Q0cp+Wawb8LKrkX1T8XzsqTA0wd18atTrvs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=126.com; spf=pass smtp.mailfrom=126.com; dkim=pass (1024-bit key) header.d=126.com header.i=@126.com header.b=pBh+LY6Q; arc=none smtp.client-ip=117.135.210.9 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=126.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=126.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=126.com header.i=@126.com header.b="pBh+LY6Q" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=Content-Type:Message-ID:Date:MIME-Version:Subject: From; bh=Kqb8NAxHTeViMRJ0B5cqqCHr0VQZOPKZwWS7aal6Xus=; b=pBh+LY6 Q1wFuZDNHd2rlTFbkrb7MyJLgdw2qY/hSviP9GjCwja9MulWTOP6uan7Q4Sjw3nV 1CWerV/PTlY5QqM4/y/+h9DUdx15nX1xH7HHm/P7FikLzRMSQ22gQtEE0ZbGL8wJ D9DtpDyIgZtVCmLBBNymtlTy84dk6vGNKcdw= Received: from [192.168.109.86] (unknown [123.149.2.202]) by gzsmtp1 (Coremail) with SMTP id pSkvCgDXPqVMR_Vmsz90AQ--.43171S2; Thu, 26 Sep 2024 19:36:45 +0800 (CST) Content-Type: multipart/mixed; boundary="------------DxrKwbmcw0RvjX0HVNpiyC7m" Message-ID: <29447f93-7b01-499c-85c2-747285d0a73c@126.com> Date: Thu, 26 Sep 2024 19:36:44 +0800 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: syzbot+7a4842f0b1801230a989@syzkaller.appspotmail.com Cc: jack@suse.com, linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com, zhaomengmeng@kylinos.cn References: <000000000000ad7e090622613d7d@google.com> Subject: Re: [syzbot] [udf?] KASAN: slab-out-of-bounds Read in udf_get_filelongad (2) From: Zhao Mengmeng In-Reply-To: <000000000000ad7e090622613d7d@google.com> X-CM-TRANSID:pSkvCgDXPqVMR_Vmsz90AQ--.43171S2 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjxUzwIDUUUUU X-CM-SenderInfo: 52kd0zp2kd0qqrswhudrp/1tbi6Bdmd2b1NEDeCwAAsc This is a multi-part message in MIME format. --------------DxrKwbmcw0RvjX0HVNpiyC7m Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit #syz test: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 67784a74e258 --------------DxrKwbmcw0RvjX0HVNpiyC7m Content-Type: text/x-patch; charset=UTF-8; name="test.patch" Content-Disposition: attachment; filename="test.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2ZzL3VkZi9iYWxsb2MuYyBiL2ZzL3VkZi9iYWxsb2MuYwppbmRleCBk OGZjMTE3NjVkNjEuLjk5Y2Y4ZmJjODA1ZSAxMDA2NDQKLS0tIGEvZnMvdWRmL2JhbGxvYy5j CisrKyBiL2ZzL3VkZi9iYWxsb2MuYwpAQCAtMzcwLDYgKzM3MCw3IEBAIHN0YXRpYyB2b2lk IHVkZl90YWJsZV9mcmVlX2Jsb2NrcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAogCXN0cnVj dCBleHRlbnRfcG9zaXRpb24gb2Vwb3MsIGVwb3M7CiAJaW50OF90IGV0eXBlOwogCXN0cnVj dCB1ZGZfaW5vZGVfaW5mbyAqaWluZm87CisJaW50IGVyciA9IDA7CiAKIAltdXRleF9sb2Nr KCZzYmktPnNfYWxsb2NfbXV0ZXgpOwogCWlpbmZvID0gVURGX0kodGFibGUpOwpAQCAtMzg0 LDcgKzM4NSw3IEBAIHN0YXRpYyB2b2lkIHVkZl90YWJsZV9mcmVlX2Jsb2NrcyhzdHJ1Y3Qg c3VwZXJfYmxvY2sgKnNiLAogCWVwb3MuYmggPSBvZXBvcy5iaCA9IE5VTEw7CiAKIAl3aGls ZSAoY291bnQgJiYKLQkgICAgICAgKGV0eXBlID0gdWRmX25leHRfYWV4dCh0YWJsZSwgJmVw b3MsICZlbG9jLCAmZWxlbiwgMSkpICE9IC0xKSB7CisJICAgICAgICEoZXJyID0gdWRmX25l eHRfYWV4dCh0YWJsZSwgJmVwb3MsICZlbG9jLCAmZWxlbiwgJmV0eXBlLCAxKSkpIHsKIAkJ aWYgKCgoZWxvYy5sb2dpY2FsQmxvY2tOdW0gKwogCQkJKGVsZW4gPj4gc2ItPnNfYmxvY2tz aXplX2JpdHMpKSA9PSBzdGFydCkpIHsKIAkJCWlmICgoMHgzRkZGRkZGRiAtIGVsZW4pIDwK QEAgLTQzNSw2ICs0MzYsOSBAQCBzdGF0aWMgdm9pZCB1ZGZfdGFibGVfZnJlZV9ibG9ja3Mo c3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKIAkJfQogCX0KIAorCWlmIChVREZfRVhUX0VSUihl cnIpKQorCQlnb3RvIGVycm9yX3JldHVybjsKKwogCWlmIChjb3VudCkgewogCQkvKgogCQkg KiBOT1RFOiB3ZSBDQU5OT1QgdXNlIHVkZl9hZGRfYWV4dCBoZXJlLCBhcyBpdCBjYW4gdHJ5 IHRvCkBAIC00NjAsOCArNDY0LDYgQEAgc3RhdGljIHZvaWQgdWRmX3RhYmxlX2ZyZWVfYmxv Y2tzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsCiAJCWVsc2UgaWYgKGlpbmZvLT5pX2FsbG9j X3R5cGUgPT0gSUNCVEFHX0ZMQUdfQURfTE9ORykKIAkJCWFkc2l6ZSA9IHNpemVvZihzdHJ1 Y3QgbG9uZ19hZCk7CiAJCWVsc2UgewotCQkJYnJlbHNlKG9lcG9zLmJoKTsKLQkJCWJyZWxz ZShlcG9zLmJoKTsKIAkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCQl9CiAKQEAgLTQ3OSwxMCAr NDgxLDEwIEBAIHN0YXRpYyB2b2lkIHVkZl90YWJsZV9mcmVlX2Jsb2NrcyhzdHJ1Y3Qgc3Vw ZXJfYmxvY2sgKnNiLAogCQkJX191ZGZfYWRkX2FleHQodGFibGUsICZlcG9zLCAmZWxvYywg ZWxlbiwgMSk7CiAJfQogCitlcnJvcl9yZXR1cm46CiAJYnJlbHNlKGVwb3MuYmgpOwogCWJy ZWxzZShvZXBvcy5iaCk7CiAKLWVycm9yX3JldHVybjoKIAltdXRleF91bmxvY2soJnNiaS0+ c19hbGxvY19tdXRleCk7CiAJcmV0dXJuOwogfQpAQCAtNDk4LDYgKzUwMCw3IEBAIHN0YXRp YyBpbnQgdWRmX3RhYmxlX3ByZWFsbG9jX2Jsb2NrcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNi LAogCXN0cnVjdCBleHRlbnRfcG9zaXRpb24gZXBvczsKIAlpbnQ4X3QgZXR5cGUgPSAtMTsK IAlzdHJ1Y3QgdWRmX2lub2RlX2luZm8gKmlpbmZvOworCWludCBlcnIgPSAwOwogCiAJaWYg KGZpcnN0X2Jsb2NrID49IHNiaS0+c19wYXJ0bWFwc1twYXJ0aXRpb25dLnNfcGFydGl0aW9u X2xlbikKIAkJcmV0dXJuIDA7CkBAIC01MTcsMTIgKzUyMCwxNSBAQCBzdGF0aWMgaW50IHVk Zl90YWJsZV9wcmVhbGxvY19ibG9ja3Moc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKIAllbG9j LmxvZ2ljYWxCbG9ja051bSA9IDB4RkZGRkZGRkY7CiAKIAl3aGlsZSAoZmlyc3RfYmxvY2sg IT0gZWxvYy5sb2dpY2FsQmxvY2tOdW0gJiYKLQkgICAgICAgKGV0eXBlID0gdWRmX25leHRf YWV4dCh0YWJsZSwgJmVwb3MsICZlbG9jLCAmZWxlbiwgMSkpICE9IC0xKSB7CisJICAgICAg ICEoZXJyID0gdWRmX25leHRfYWV4dCh0YWJsZSwgJmVwb3MsICZlbG9jLCAmZWxlbiwgJmV0 eXBlLCAxKSkpIHsKIAkJdWRmX2RlYnVnKCJlbG9jPSV1LCBlbGVuPSV1LCBmaXJzdF9ibG9j az0ldVxuIiwKIAkJCSAgZWxvYy5sb2dpY2FsQmxvY2tOdW0sIGVsZW4sIGZpcnN0X2Jsb2Nr KTsKIAkJOyAvKiBlbXB0eSBsb29wIGJvZHkgKi8KIAl9CiAKKwlpZiAoVURGX0VYVF9FUlIo ZXJyKSkKKwkJZ290byBlcnJfb3V0OworCiAJaWYgKGZpcnN0X2Jsb2NrID09IGVsb2MubG9n aWNhbEJsb2NrTnVtKSB7CiAJCWVwb3Mub2Zmc2V0IC09IGFkc2l6ZTsKIApAQCAtNTM5LDYg KzU0NSw3IEBAIHN0YXRpYyBpbnQgdWRmX3RhYmxlX3ByZWFsbG9jX2Jsb2NrcyhzdHJ1Y3Qg c3VwZXJfYmxvY2sgKnNiLAogCQlhbGxvY19jb3VudCA9IDA7CiAJfQogCitlcnJfb3V0Ogog CWJyZWxzZShlcG9zLmJoKTsKIAogCWlmIChhbGxvY19jb3VudCkKQEAgLTU2MCw2ICs1Njcs NyBAQCBzdGF0aWMgdWRmX3BibGtfdCB1ZGZfdGFibGVfbmV3X2Jsb2NrKHN0cnVjdCBzdXBl cl9ibG9jayAqc2IsCiAJc3RydWN0IGV4dGVudF9wb3NpdGlvbiBlcG9zLCBnb2FsX2Vwb3M7 CiAJaW50OF90IGV0eXBlOwogCXN0cnVjdCB1ZGZfaW5vZGVfaW5mbyAqaWluZm8gPSBVREZf SSh0YWJsZSk7CisJaW50IHJldCA9IDA7CiAKIAkqZXJyID0gLUVOT1NQQzsKIApAQCAtNTg0 LDcgKzU5Miw3IEBAIHN0YXRpYyB1ZGZfcGJsa190IHVkZl90YWJsZV9uZXdfYmxvY2soc3Ry dWN0IHN1cGVyX2Jsb2NrICpzYiwKIAllcG9zLmJoID0gZ29hbF9lcG9zLmJoID0gTlVMTDsK IAogCXdoaWxlIChzcHJlYWQgJiYKLQkgICAgICAgKGV0eXBlID0gdWRmX25leHRfYWV4dCh0 YWJsZSwgJmVwb3MsICZlbG9jLCAmZWxlbiwgMSkpICE9IC0xKSB7CisJICAgICAgICEocmV0 ID0gdWRmX25leHRfYWV4dCh0YWJsZSwgJmVwb3MsICZlbG9jLCAmZWxlbiwgJmV0eXBlLCAx KSkpIHsKIAkJaWYgKGdvYWwgPj0gZWxvYy5sb2dpY2FsQmxvY2tOdW0pIHsKIAkJCWlmIChn b2FsIDwgZWxvYy5sb2dpY2FsQmxvY2tOdW0gKwogCQkJCQkoZWxlbiA+PiBzYi0+c19ibG9j a3NpemVfYml0cykpCkBAIC02MTIsNyArNjIwLDcgQEAgc3RhdGljIHVkZl9wYmxrX3QgdWRm X3RhYmxlX25ld19ibG9jayhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAogCiAJYnJlbHNlKGVw b3MuYmgpOwogCi0JaWYgKHNwcmVhZCA9PSAweEZGRkZGRkZGKSB7CisJaWYgKFVERl9FWFRf RVJSKHJldCkgfHwgc3ByZWFkID09IDB4RkZGRkZGRkYpIHsKIAkJYnJlbHNlKGdvYWxfZXBv cy5iaCk7CiAJCW11dGV4X3VubG9jaygmc2JpLT5zX2FsbG9jX211dGV4KTsKIAkJcmV0dXJu IDA7CmRpZmYgLS1naXQgYS9mcy91ZGYvZGlyZWN0b3J5LmMgYi9mcy91ZGYvZGlyZWN0b3J5 LmMKaW5kZXggOTMxNTM2NjVlYjM3Li40YjhiYjc3ZWFmZmEgMTAwNjQ0Ci0tLSBhL2ZzL3Vk Zi9kaXJlY3RvcnkuYworKysgYi9mcy91ZGYvZGlyZWN0b3J5LmMKQEAgLTE2NiwxMyArMTY2 LDE5IEBAIHN0YXRpYyBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnVkZl9maWl0ZXJfYnJlYWRfYmxr KHN0cnVjdCB1ZGZfZmlsZWlkZW50X2l0ZXIgKml0ZXIpCiAgKi8KIHN0YXRpYyBpbnQgdWRm X2ZpaXRlcl9hZHZhbmNlX2JsayhzdHJ1Y3QgdWRmX2ZpbGVpZGVudF9pdGVyICppdGVyKQog eworCWludDhfdCBldHlwZSA9IC0xOworCWludCBlcnIgPSAwOworCiAJaXRlci0+bG9mZnNl dCsrOwogCWlmIChpdGVyLT5sb2Zmc2V0IDwgRElWX1JPVU5EX1VQKGl0ZXItPmVsZW4sIDE8 PGl0ZXItPmRpci0+aV9ibGtiaXRzKSkKIAkJcmV0dXJuIDA7CiAKIAlpdGVyLT5sb2Zmc2V0 ID0gMDsKLQlpZiAodWRmX25leHRfYWV4dChpdGVyLT5kaXIsICZpdGVyLT5lcG9zLCAmaXRl ci0+ZWxvYywgJml0ZXItPmVsZW4sIDEpCi0JCQkhPSAoRVhUX1JFQ09SREVEX0FMTE9DQVRF RCA+PiAzMCkpIHsKKwllcnIgPSB1ZGZfbmV4dF9hZXh0KGl0ZXItPmRpciwgJml0ZXItPmVw b3MsICZpdGVyLT5lbG9jLCAmaXRlci0+ZWxlbiwKKwkJCSAgICAmZXR5cGUsIDEpOworCWlm IChVREZfRVhUX0VSUihlcnIpKQorCQlyZXR1cm4gZXJyOworCWVsc2UgaWYgKFVERl9FWFRf RU9GKGVycikgfHwgZXR5cGUgIT0gKEVYVF9SRUNPUkRFRF9BTExPQ0FURUQgPj4gMzApKSB7 CiAJCWlmIChpdGVyLT5wb3MgPT0gaXRlci0+ZGlyLT5pX3NpemUpIHsKIAkJCWl0ZXItPmVs ZW4gPSAwOwogCQkJcmV0dXJuIDA7CkBAIC0yNDAsNiArMjQ2LDcgQEAgaW50IHVkZl9maWl0 ZXJfaW5pdChzdHJ1Y3QgdWRmX2ZpbGVpZGVudF9pdGVyICppdGVyLCBzdHJ1Y3QgaW5vZGUg KmRpciwKIHsKIAlzdHJ1Y3QgdWRmX2lub2RlX2luZm8gKmlpbmZvID0gVURGX0koZGlyKTsK IAlpbnQgZXJyID0gMDsKKwlpbnQ4X3QgZXR5cGU7CiAKIAlpdGVyLT5kaXIgPSBkaXI7CiAJ aXRlci0+YmhbMF0gPSBpdGVyLT5iaFsxXSA9IE5VTEw7CkBAIC0yNTksOSArMjY2LDkgQEAg aW50IHVkZl9maWl0ZXJfaW5pdChzdHJ1Y3QgdWRmX2ZpbGVpZGVudF9pdGVyICppdGVyLCBz dHJ1Y3QgaW5vZGUgKmRpciwKIAkJZ290byBvdXQ7CiAJfQogCi0JaWYgKGlub2RlX2JtYXAo ZGlyLCBpdGVyLT5wb3MgPj4gZGlyLT5pX2Jsa2JpdHMsICZpdGVyLT5lcG9zLAotCQkgICAg ICAgJml0ZXItPmVsb2MsICZpdGVyLT5lbGVuLCAmaXRlci0+bG9mZnNldCkgIT0KLQkgICAg KEVYVF9SRUNPUkRFRF9BTExPQ0FURUQgPj4gMzApKSB7CisJZXJyID0gaW5vZGVfYm1hcChk aXIsIGl0ZXItPnBvcyA+PiBkaXItPmlfYmxrYml0cywgJml0ZXItPmVwb3MsICZpdGVyLT5l bG9jLAorCQkgICAmaXRlci0+ZWxlbiwgJml0ZXItPmxvZmZzZXQsICZldHlwZSk7CisJaWYg KGVyciB8fCBldHlwZSAhPSAoRVhUX1JFQ09SREVEX0FMTE9DQVRFRCA+PiAzMCkpIHsKIAkJ aWYgKHBvcyA9PSBkaXItPmlfc2l6ZSkKIAkJCXJldHVybiAwOwogCQl1ZGZfZXJyKGRpci0+ aV9zYiwKQEAgLTQ1Nyw2ICs0NjQsNyBAQCBpbnQgdWRmX2ZpaXRlcl9hcHBlbmRfYmxrKHN0 cnVjdCB1ZGZfZmlsZWlkZW50X2l0ZXIgKml0ZXIpCiAJc2VjdG9yX3QgYmxvY2s7CiAJdWlu dDMyX3Qgb2xkX2VsZW4gPSBpdGVyLT5lbGVuOwogCWludCBlcnI7CisJaW50OF90IGV0eXBl OwogCiAJaWYgKFdBUk5fT05fT05DRShpaW5mby0+aV9hbGxvY190eXBlID09IElDQlRBR19G TEFHX0FEX0lOX0lDQikpCiAJCXJldHVybiAtRUlOVkFMOwpAQCAtNDcxLDggKzQ3OSw5IEBA IGludCB1ZGZfZmlpdGVyX2FwcGVuZF9ibGsoc3RydWN0IHVkZl9maWxlaWRlbnRfaXRlciAq aXRlcikKIAkJdWRmX2ZpaXRlcl91cGRhdGVfZWxlbihpdGVyLCBvbGRfZWxlbik7CiAJCXJl dHVybiBlcnI7CiAJfQotCWlmIChpbm9kZV9ibWFwKGl0ZXItPmRpciwgYmxvY2ssICZpdGVy LT5lcG9zLCAmaXRlci0+ZWxvYywgJml0ZXItPmVsZW4sCi0JCSAgICAgICAmaXRlci0+bG9m ZnNldCkgIT0gKEVYVF9SRUNPUkRFRF9BTExPQ0FURUQgPj4gMzApKSB7CisJZXJyID0gaW5v ZGVfYm1hcChpdGVyLT5kaXIsIGJsb2NrLCAmaXRlci0+ZXBvcywgJml0ZXItPmVsb2MsICZp dGVyLT5lbGVuLAorCQkgICAmaXRlci0+bG9mZnNldCwgJmV0eXBlKTsKKwlpZiAoZXJyIHx8 IGV0eXBlICE9IChFWFRfUkVDT1JERURfQUxMT0NBVEVEID4+IDMwKSkgewogCQl1ZGZfZXJy KGl0ZXItPmRpci0+aV9zYiwKIAkJCSJibG9jayAlbGx1IG5vdCBhbGxvY2F0ZWQgaW4gZGly ZWN0b3J5IChpbm8gJWx1KVxuIiwKIAkJCSh1bnNpZ25lZCBsb25nIGxvbmcpYmxvY2ssIGl0 ZXItPmRpci0+aV9pbm8pOwpkaWZmIC0tZ2l0IGEvZnMvdWRmL2lub2RlLmMgYi9mcy91ZGYv aW5vZGUuYwppbmRleCA0NzI2YTRkMDE0YjYuLmJlOTM1NmYwZWVjZiAxMDA2NDQKLS0tIGEv ZnMvdWRmL2lub2RlLmMKKysrIGIvZnMvdWRmL2lub2RlLmMKQEAgLTQxOCwxMCArNDE4LDEx IEBAIHN0YXRpYyBpbnQgdWRmX21hcF9ibG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1 Y3QgdWRmX21hcF9ycSAqbWFwKQogCQl1aW50MzJfdCBlbGVuOwogCQlzZWN0b3JfdCBvZmZz ZXQ7CiAJCXN0cnVjdCBleHRlbnRfcG9zaXRpb24gZXBvcyA9IHt9OworCQlpbnQ4X3QgZXR5 cGU7CiAKIAkJZG93bl9yZWFkKCZpaW5mby0+aV9kYXRhX3NlbSk7Ci0JCWlmIChpbm9kZV9i bWFwKGlub2RlLCBtYXAtPmxibGssICZlcG9zLCAmZWxvYywgJmVsZW4sICZvZmZzZXQpCi0J CQkJPT0gKEVYVF9SRUNPUkRFRF9BTExPQ0FURUQgPj4gMzApKSB7CisJCWVyciA9IGlub2Rl X2JtYXAoaW5vZGUsIG1hcC0+bGJsaywgJmVwb3MsICZlbG9jLCAmZWxlbiwgJm9mZnNldCwg JmV0eXBlKTsKKwkJaWYgKCFlcnIgJiYgZXR5cGUgPT0gKEVYVF9SRUNPUkRFRF9BTExPQ0FU RUQgPj4gMzApKSB7CiAJCQltYXAtPnBibGsgPSB1ZGZfZ2V0X2xiX3BibG9jayhpbm9kZS0+ aV9zYiwgJmVsb2MsCiAJCQkJCQkJb2Zmc2V0KTsKIAkJCW1hcC0+b2ZsYWdzIHw9IFVERl9C TEtfTUFQUEVEOwpAQCAtNTQ1LDYgKzU0Niw3IEBAIHN0YXRpYyBpbnQgdWRmX2RvX2V4dGVu ZF9maWxlKHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAJfSBlbHNlIHsKIAkJc3RydWN0IGtlcm5l bF9sYl9hZGRyIHRtcGxvYzsKIAkJdWludDMyX3QgdG1wbGVuOworCQlpbnQ4X3QgdG1wdHlw ZTsKIAogCQl1ZGZfd3JpdGVfYWV4dChpbm9kZSwgbGFzdF9wb3MsICZsYXN0X2V4dC0+ZXh0 TG9jYXRpb24sCiAJCQkJbGFzdF9leHQtPmV4dExlbmd0aCwgMSk7CkBAIC01NTQsOCArNTU2 LDEyIEBAIHN0YXRpYyBpbnQgdWRmX2RvX2V4dGVuZF9maWxlKHN0cnVjdCBpbm9kZSAqaW5v ZGUsCiAJCSAqIG1vcmUgZXh0ZW50cywgd2UgbWF5IG5lZWQgdG8gZW50ZXIgcG9zc2libGUg Zm9sbG93aW5nCiAJCSAqIGVtcHR5IGluZGlyZWN0IGV4dGVudC4KIAkJICovCi0JCWlmIChu ZXdfYmxvY2tfYnl0ZXMpCi0JCQl1ZGZfbmV4dF9hZXh0KGlub2RlLCBsYXN0X3BvcywgJnRt cGxvYywgJnRtcGxlbiwgMCk7CisJCWlmIChuZXdfYmxvY2tfYnl0ZXMpIHsKKwkJCWVyciA9 IHVkZl9uZXh0X2FleHQoaW5vZGUsIGxhc3RfcG9zLCAmdG1wbG9jLCAmdG1wbGVuLAorCQkJ CQkgICAgJnRtcHR5cGUsIDApOworCQkJaWYgKFVERl9FWFRfRVJSKGVycikpCisJCQkJZ290 byBvdXRfZXJyOworCQl9CiAJfQogCWlpbmZvLT5pX2xlbkV4dGVudHMgKz0gYWRkOwogCkBA IC02NTksOCArNjY1LDEwIEBAIHN0YXRpYyBpbnQgdWRmX2V4dGVuZF9maWxlKHN0cnVjdCBp bm9kZSAqaW5vZGUsIGxvZmZfdCBuZXdzaXplKQogCSAqLwogCXVkZl9kaXNjYXJkX3ByZWFs bG9jKGlub2RlKTsKIAotCWV0eXBlID0gaW5vZGVfYm1hcChpbm9kZSwgZmlyc3RfYmxvY2ss ICZlcG9zLCAmZWxvYywgJmVsZW4sICZvZmZzZXQpOwotCXdpdGhpbl9sYXN0X2V4dCA9IChl dHlwZSAhPSAtMSk7CisJZXJyID0gaW5vZGVfYm1hcChpbm9kZSwgZmlyc3RfYmxvY2ssICZl cG9zLCAmZWxvYywgJmVsZW4sICZvZmZzZXQsICZldHlwZSk7CisJaWYgKFVERl9FWFRfRVJS KGVycikpCisJCWdvdG8gb3V0OworCXdpdGhpbl9sYXN0X2V4dCA9ICghZXJyKTsKIAkvKiBX ZSBkb24ndCBleHBlY3QgZXh0ZW50cyBwYXN0IEVPRi4uLiAqLwogCVdBUk5fT05fT05DRSh3 aXRoaW5fbGFzdF9leHQgJiYKIAkJICAgICBlbGVuID4gKChsb2ZmX3Qpb2Zmc2V0ICsgMSkg PDwgaW5vZGUtPmlfYmxrYml0cyk7CkBAIC02NzQsOCArNjgyLDEwIEBAIHN0YXRpYyBpbnQg dWRmX2V4dGVuZF9maWxlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBuZXdzaXplKQog CQlleHRlbnQuZXh0TGVuZ3RoID0gRVhUX05PVF9SRUNPUkRFRF9OT1RfQUxMT0NBVEVEOwog CX0gZWxzZSB7CiAJCWVwb3Mub2Zmc2V0IC09IGFkc2l6ZTsKLQkJZXR5cGUgPSB1ZGZfbmV4 dF9hZXh0KGlub2RlLCAmZXBvcywgJmV4dGVudC5leHRMb2NhdGlvbiwKLQkJCQkgICAgICAm ZXh0ZW50LmV4dExlbmd0aCwgMCk7CisJCWVyciA9IHVkZl9uZXh0X2FleHQoaW5vZGUsICZl cG9zLCAmZXh0ZW50LmV4dExvY2F0aW9uLAorCQkJCSAgICAmZXh0ZW50LmV4dExlbmd0aCwg JmV0eXBlLCAwKTsKKwkJaWYgKFVERl9FWFRfRVJSKGVycikpCisJCQlnb3RvIG91dDsKIAkJ ZXh0ZW50LmV4dExlbmd0aCB8PSBldHlwZSA8PCAzMDsKIAl9CiAKQEAgLTcxMiwxMSArNzIy LDExIEBAIHN0YXRpYyBpbnQgaW5vZGVfZ2V0YmxrKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0 cnVjdCB1ZGZfbWFwX3JxICptYXApCiAJbG9mZl90IGxiY291bnQgPSAwLCBiX29mZiA9IDA7 CiAJdWRmX3BibGtfdCBuZXdibG9ja251bTsKIAlzZWN0b3JfdCBvZmZzZXQgPSAwOwotCWlu dDhfdCBldHlwZTsKKwlpbnQ4X3QgZXR5cGUsIHRtcGV0eXBlOwogCXN0cnVjdCB1ZGZfaW5v ZGVfaW5mbyAqaWluZm8gPSBVREZfSShpbm9kZSk7CiAJdWRmX3BibGtfdCBnb2FsID0gMCwg cGdvYWwgPSBpaW5mby0+aV9sb2NhdGlvbi5sb2dpY2FsQmxvY2tOdW07CiAJaW50IGxhc3Ri bG9jayA9IDA7Ci0JYm9vbCBpc0JleW9uZEVPRjsKKwlib29sIGlzQmV5b25kRU9GID0gZmFs c2U7CiAJaW50IHJldCA9IDA7CiAKIAlwcmV2X2Vwb3Mub2Zmc2V0ID0gdWRmX2ZpbGVfZW50 cnlfYWxsb2Nfb2Zmc2V0KGlub2RlKTsKQEAgLTc0OCw5ICs3NTgsMTIgQEAgc3RhdGljIGlu dCBpbm9kZV9nZXRibGsoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IHVkZl9tYXBfcnEg Km1hcCkKIAkJcHJldl9lcG9zLm9mZnNldCA9IGN1cl9lcG9zLm9mZnNldDsKIAkJY3VyX2Vw b3Mub2Zmc2V0ID0gbmV4dF9lcG9zLm9mZnNldDsKIAotCQlldHlwZSA9IHVkZl9uZXh0X2Fl eHQoaW5vZGUsICZuZXh0X2Vwb3MsICZlbG9jLCAmZWxlbiwgMSk7Ci0JCWlmIChldHlwZSA9 PSAtMSkKKwkJcmV0ID0gdWRmX25leHRfYWV4dChpbm9kZSwgJm5leHRfZXBvcywgJmVsb2Ms ICZlbGVuLCAmZXR5cGUsIDEpOworCQlpZiAoVURGX0VYVF9FT0YocmV0KSkgeworCQkJaXNC ZXlvbmRFT0YgPSB0cnVlOwogCQkJYnJlYWs7CisJCX0gZWxzZSBpZiAocmV0IDwgMCkKKwkJ CWdvdG8gb3V0X2ZyZWU7CiAKIAkJYyA9ICFjOwogCkBAIC03NzEsOCArNzg0LDEyIEBAIHN0 YXRpYyBpbnQgaW5vZGVfZ2V0YmxrKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCB1ZGZf bWFwX3JxICptYXApCiAJICogTW92ZSBwcmV2X2Vwb3MgYW5kIGN1cl9lcG9zIGludG8gaW5k aXJlY3QgZXh0ZW50IGlmIHdlIGFyZSBhdAogCSAqIHRoZSBwb2ludGVyIHRvIGl0CiAJICov Ci0JdWRmX25leHRfYWV4dChpbm9kZSwgJnByZXZfZXBvcywgJnRtcGVsb2MsICZ0bXBlbGVu LCAwKTsKLQl1ZGZfbmV4dF9hZXh0KGlub2RlLCAmY3VyX2Vwb3MsICZ0bXBlbG9jLCAmdG1w ZWxlbiwgMCk7CisJcmV0ID0gdWRmX25leHRfYWV4dChpbm9kZSwgJnByZXZfZXBvcywgJnRt cGVsb2MsICZ0bXBlbGVuLCAmdG1wZXR5cGUsIDApOworCWlmIChVREZfRVhUX0VSUihyZXQp KQorCQlnb3RvIG91dF9mcmVlOworCXJldCA9IHVkZl9uZXh0X2FleHQoaW5vZGUsICZjdXJf ZXBvcywgJnRtcGVsb2MsICZ0bXBlbGVuLCAmdG1wZXR5cGUsIDApOworCWlmIChVREZfRVhU X0VSUihyZXQpKQorCQlnb3RvIG91dF9mcmVlOwogCiAJLyogaWYgdGhlIGV4dGVudCBpcyBh bGxvY2F0ZWQgYW5kIHJlY29yZGVkLCByZXR1cm4gdGhlIGJsb2NrCiAJICAgaWYgdGhlIGV4 dGVudCBpcyBub3QgYSBtdWx0aXBsZSBvZiB0aGUgYmxvY2tzaXplLCByb3VuZCB1cCAqLwpA QCAtNzkzLDEwICs4MTAsOSBAQCBzdGF0aWMgaW50IGlub2RlX2dldGJsayhzdHJ1Y3QgaW5v ZGUgKmlub2RlLCBzdHJ1Y3QgdWRmX21hcF9ycSAqbWFwKQogCX0KIAogCS8qIEFyZSB3ZSBi ZXlvbmQgRU9GIGFuZCBwcmVhbGxvY2F0ZWQgZXh0ZW50PyAqLwotCWlmIChldHlwZSA9PSAt MSkgeworCWlmIChpc0JleW9uZEVPRikgewogCQlsb2ZmX3QgaG9sZV9sZW47CiAKLQkJaXNC ZXlvbmRFT0YgPSB0cnVlOwogCQlpZiAoY291bnQpIHsKIAkJCWlmIChjKQogCQkJCWxhYXJy WzBdID0gbGFhcnJbMV07CkBAIC04MzIsNyArODQ4LDYgQEAgc3RhdGljIGludCBpbm9kZV9n ZXRibGsoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IHVkZl9tYXBfcnEgKm1hcCkKIAkJ ZW5kbnVtID0gYyArIDE7CiAJCWxhc3RibG9jayA9IDE7CiAJfSBlbHNlIHsKLQkJaXNCZXlv bmRFT0YgPSBmYWxzZTsKIAkJZW5kbnVtID0gc3RhcnRudW0gPSAoKGNvdW50ID4gMikgPyAy IDogY291bnQpOwogCiAJCS8qIGlmIHRoZSBjdXJyZW50IGV4dGVudCBpcyBpbiBwb3NpdGlv biAwLApAQCAtODQ2LDE1ICs4NjEsMTcgQEAgc3RhdGljIGludCBpbm9kZV9nZXRibGsoc3Ry dWN0IGlub2RlICppbm9kZSwgc3RydWN0IHVkZl9tYXBfcnEgKm1hcCkKIAogCQkvKiBpZiB0 aGUgY3VycmVudCBibG9jayBpcyBsb2NhdGVkIGluIGFuIGV4dGVudCwKIAkJICAgcmVhZCB0 aGUgbmV4dCBleHRlbnQgKi8KLQkJZXR5cGUgPSB1ZGZfbmV4dF9hZXh0KGlub2RlLCAmbmV4 dF9lcG9zLCAmZWxvYywgJmVsZW4sIDApOwotCQlpZiAoZXR5cGUgIT0gLTEpIHsKKwkJcmV0 ID0gdWRmX25leHRfYWV4dChpbm9kZSwgJm5leHRfZXBvcywgJmVsb2MsICZlbGVuLCAmZXR5 cGUsIDApOworCQlpZiAoIXJldCkgewogCQkJbGFhcnJbYyArIDFdLmV4dExlbmd0aCA9IChl dHlwZSA8PCAzMCkgfCBlbGVuOwogCQkJbGFhcnJbYyArIDFdLmV4dExvY2F0aW9uID0gZWxv YzsKIAkJCWNvdW50Kys7CiAJCQlzdGFydG51bSsrOwogCQkJZW5kbnVtKys7Ci0JCX0gZWxz ZQorCQl9IGVsc2UgaWYgKFVERl9FWFRfRU9GKHJldCkpCiAJCQlsYXN0YmxvY2sgPSAxOwor CQllbHNlCisJCQlnb3RvIG91dF9mcmVlOwogCX0KIAogCS8qIGlmIHRoZSBjdXJyZW50IGV4 dGVudCBpcyBub3QgcmVjb3JkZWQgYnV0IGFsbG9jYXRlZCwgZ2V0IHRoZQpAQCAtMTE3Miw2 ICsxMTg5LDcgQEAgc3RhdGljIGludCB1ZGZfdXBkYXRlX2V4dGVudHMoc3RydWN0IGlub2Rl ICppbm9kZSwgc3RydWN0IGtlcm5lbF9sb25nX2FkICpsYWFyciwKIAlpbnQgc3RhcnQgPSAw LCBpOwogCXN0cnVjdCBrZXJuZWxfbGJfYWRkciB0bXBsb2M7CiAJdWludDMyX3QgdG1wbGVu OworCWludDhfdCB0bXBldHlwZTsKIAlpbnQgZXJyOwogCiAJaWYgKHN0YXJ0bnVtID4gZW5k bnVtKSB7CkBAIC0xMTg5LDE0ICsxMjA3LDE5IEBAIHN0YXRpYyBpbnQgdWRmX3VwZGF0ZV9l eHRlbnRzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBrZXJuZWxfbG9uZ19hZCAqbGFh cnIsCiAJCQkgKi8KIAkJCWlmIChlcnIgPCAwKQogCQkJCXJldHVybiBlcnI7Ci0JCQl1ZGZf bmV4dF9hZXh0KGlub2RlLCBlcG9zLCAmbGFhcnJbaV0uZXh0TG9jYXRpb24sCi0JCQkJICAg ICAgJmxhYXJyW2ldLmV4dExlbmd0aCwgMSk7CisJCQllcnIgPSB1ZGZfbmV4dF9hZXh0KGlu b2RlLCBlcG9zLCAmbGFhcnJbaV0uZXh0TG9jYXRpb24sCisJCQkJICAgICAgJmxhYXJyW2ld LmV4dExlbmd0aCwgJnRtcGV0eXBlLCAxKTsKKwkJCWlmIChVREZfRVhUX0VSUihlcnIpKQor CQkJCXJldHVybiBlcnI7CiAJCQlzdGFydCsrOwogCQl9CiAJfQogCiAJZm9yIChpID0gc3Rh cnQ7IGkgPCBlbmRudW07IGkrKykgewotCQl1ZGZfbmV4dF9hZXh0KGlub2RlLCBlcG9zLCAm dG1wbG9jLCAmdG1wbGVuLCAwKTsKKwkJZXJyID0gdWRmX25leHRfYWV4dChpbm9kZSwgZXBv cywgJnRtcGxvYywgJnRtcGxlbiwgJnRtcGV0eXBlLCAwKTsKKwkJaWYgKFVERl9FWFRfRVJS KGVycikpCisJCQlyZXR1cm4gZXJyOworCiAJCXVkZl93cml0ZV9hZXh0KGlub2RlLCBlcG9z LCAmbGFhcnJbaV0uZXh0TG9jYXRpb24sCiAJCQkgICAgICAgbGFhcnJbaV0uZXh0TGVuZ3Ro LCAxKTsKIAl9CkBAIC0xOTU1LDYgKzE5NzgsNyBAQCBpbnQgdWRmX3NldHVwX2luZGlyZWN0 X2FleHQoc3RydWN0IGlub2RlICppbm9kZSwgdWRmX3BibGtfdCBibG9jaywKIAlzdHJ1Y3Qg ZXh0ZW50X3Bvc2l0aW9uIG5lcG9zOwogCXN0cnVjdCBrZXJuZWxfbGJfYWRkciBuZWxvYzsK IAlpbnQgdmVyLCBhZHNpemU7CisJaW50IGVyciA9IDA7CiAKIAlpZiAoVURGX0koaW5vZGUp LT5pX2FsbG9jX3R5cGUgPT0gSUNCVEFHX0ZMQUdfQURfU0hPUlQpCiAJCWFkc2l6ZSA9IHNp emVvZihzdHJ1Y3Qgc2hvcnRfYWQpOwpAQCAtMTk5OSwxMCArMjAyMywxMiBAQCBpbnQgdWRm X3NldHVwX2luZGlyZWN0X2FleHQoc3RydWN0IGlub2RlICppbm9kZSwgdWRmX3BibGtfdCBi bG9jaywKIAlpZiAoZXBvcy0+b2Zmc2V0ICsgYWRzaXplID4gc2ItPnNfYmxvY2tzaXplKSB7 CiAJCXN0cnVjdCBrZXJuZWxfbGJfYWRkciBjcF9sb2M7CiAJCXVpbnQzMl90IGNwX2xlbjsK LQkJaW50IGNwX3R5cGU7CisJCWludDhfdCBjcF90eXBlOwogCiAJCWVwb3MtPm9mZnNldCAt PSBhZHNpemU7Ci0JCWNwX3R5cGUgPSB1ZGZfY3VycmVudF9hZXh0KGlub2RlLCBlcG9zLCAm Y3BfbG9jLCAmY3BfbGVuLCAwKTsKKwkJZXJyID0gdWRmX2N1cnJlbnRfYWV4dChpbm9kZSwg ZXBvcywgJmNwX2xvYywgJmNwX2xlbiwgJmNwX3R5cGUsIDApOworCQlpZiAoZXJyIDwgMCkK KwkJCWdvdG8gZXJyX291dDsKIAkJY3BfbGVuIHw9ICgodWludDMyX3QpY3BfdHlwZSkgPDwg MzA7CiAKIAkJX191ZGZfYWRkX2FleHQoaW5vZGUsICZuZXBvcywgJmNwX2xvYywgY3BfbGVu LCAxKTsKQEAgLTIwMTcsNiArMjA0Myw5IEBAIGludCB1ZGZfc2V0dXBfaW5kaXJlY3RfYWV4 dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1ZGZfcGJsa190IGJsb2NrLAogCSplcG9zID0gbmVw b3M7CiAKIAlyZXR1cm4gMDsKK2Vycl9vdXQ6CisJYnJlbHNlKGJoKTsKKwlyZXR1cm4gZXJy OwogfQogCiAvKgpAQCAtMjE2MiwyMSArMjE5MSwyNCBAQCB2b2lkIHVkZl93cml0ZV9hZXh0 KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBleHRlbnRfcG9zaXRpb24gKmVwb3MsCiAg Ki8KICNkZWZpbmUgVURGX01BWF9JTkRJUl9FWFRTIDE2CiAKLWludDhfdCB1ZGZfbmV4dF9h ZXh0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBleHRlbnRfcG9zaXRpb24gKmVwb3Ms Ci0JCSAgICAgc3RydWN0IGtlcm5lbF9sYl9hZGRyICplbG9jLCB1aW50MzJfdCAqZWxlbiwg aW50IGluYykKK2ludCB1ZGZfbmV4dF9hZXh0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVj dCBleHRlbnRfcG9zaXRpb24gKmVwb3MsCisJCSAgc3RydWN0IGtlcm5lbF9sYl9hZGRyICpl bG9jLCB1aW50MzJfdCAqZWxlbiwgaW50OF90ICpldHlwZSwKKwkJICBpbnQgaW5jKQogewot CWludDhfdCBldHlwZTsKIAl1bnNpZ25lZCBpbnQgaW5kaXJlY3Rpb25zID0gMDsKKwlpbnQg ZXJyID0gMDsKKworCXdoaWxlICgoZXJyID0gdWRmX2N1cnJlbnRfYWV4dChpbm9kZSwgZXBv cywgZWxvYywgZWxlbiwgZXR5cGUsIGluYykpKSB7CisJCWlmIChlcnIgfHwgKmV0eXBlICE9 IChFWFRfTkVYVF9FWFRFTlRfQUxMT0NERVNDUyA+PiAzMCkpCisJCQlicmVhazsKIAotCXdo aWxlICgoZXR5cGUgPSB1ZGZfY3VycmVudF9hZXh0KGlub2RlLCBlcG9zLCBlbG9jLCBlbGVu LCBpbmMpKSA9PQotCSAgICAgICAoRVhUX05FWFRfRVhURU5UX0FMTE9DREVTQ1MgPj4gMzAp KSB7CiAJCXVkZl9wYmxrX3QgYmxvY2s7CiAKIAkJaWYgKCsraW5kaXJlY3Rpb25zID4gVURG X01BWF9JTkRJUl9FWFRTKSB7CiAJCQl1ZGZfZXJyKGlub2RlLT5pX3NiLAogCQkJCSJ0b28g bWFueSBpbmRpcmVjdCBleHRlbnRzIGluIGlub2RlICVsdVxuIiwKIAkJCQlpbm9kZS0+aV9p bm8pOwotCQkJcmV0dXJuIC0xOworCQkJcmV0dXJuIC1FRlNDT1JSVVBURUQ7CiAJCX0KIAog CQllcG9zLT5ibG9jayA9ICplbG9jOwpAQCAtMjE4NiwxOCArMjIxOCwxOCBAQCBpbnQ4X3Qg dWRmX25leHRfYWV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZXh0ZW50X3Bvc2l0 aW9uICplcG9zLAogCQllcG9zLT5iaCA9IHNiX2JyZWFkKGlub2RlLT5pX3NiLCBibG9jayk7 CiAJCWlmICghZXBvcy0+YmgpIHsKIAkJCXVkZl9kZWJ1ZygicmVhZGluZyBibG9jayAldSBm YWlsZWQhXG4iLCBibG9jayk7Ci0JCQlyZXR1cm4gLTE7CisJCQlyZXR1cm4gLUVJTzsKIAkJ fQogCX0KIAotCXJldHVybiBldHlwZTsKKwlyZXR1cm4gZXJyOwogfQogCi1pbnQ4X3QgdWRm X2N1cnJlbnRfYWV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZXh0ZW50X3Bvc2l0 aW9uICplcG9zLAotCQkJc3RydWN0IGtlcm5lbF9sYl9hZGRyICplbG9jLCB1aW50MzJfdCAq ZWxlbiwgaW50IGluYykKK2ludCB1ZGZfY3VycmVudF9hZXh0KHN0cnVjdCBpbm9kZSAqaW5v ZGUsIHN0cnVjdCBleHRlbnRfcG9zaXRpb24gKmVwb3MsCisJCSAgICAgc3RydWN0IGtlcm5l bF9sYl9hZGRyICplbG9jLCB1aW50MzJfdCAqZWxlbiwgaW50OF90ICpldHlwZSwKKwkJICAg ICBpbnQgaW5jKQogewogCWludCBhbGVuOwotCWludDhfdCBldHlwZTsKIAl1aW50OF90ICpw dHI7CiAJc3RydWN0IHNob3J0X2FkICpzYWQ7CiAJc3RydWN0IGxvbmdfYWQgKmxhZDsKQEAg LTIyMjQsOCArMjI1Niw4IEBAIGludDhfdCB1ZGZfY3VycmVudF9hZXh0KHN0cnVjdCBpbm9k ZSAqaW5vZGUsIHN0cnVjdCBleHRlbnRfcG9zaXRpb24gKmVwb3MsCiAJY2FzZSBJQ0JUQUdf RkxBR19BRF9TSE9SVDoKIAkJc2FkID0gdWRmX2dldF9maWxlc2hvcnRhZChwdHIsIGFsZW4s ICZlcG9zLT5vZmZzZXQsIGluYyk7CiAJCWlmICghc2FkKQotCQkJcmV0dXJuIC0xOwotCQll dHlwZSA9IGxlMzJfdG9fY3B1KHNhZC0+ZXh0TGVuZ3RoKSA+PiAzMDsKKwkJCXJldHVybiAt RU5PREFUQTsKKwkJKmV0eXBlID0gbGUzMl90b19jcHUoc2FkLT5leHRMZW5ndGgpID4+IDMw OwogCQllbG9jLT5sb2dpY2FsQmxvY2tOdW0gPSBsZTMyX3RvX2NwdShzYWQtPmV4dFBvc2l0 aW9uKTsKIAkJZWxvYy0+cGFydGl0aW9uUmVmZXJlbmNlTnVtID0KIAkJCQlpaW5mby0+aV9s b2NhdGlvbi5wYXJ0aXRpb25SZWZlcmVuY2VOdW07CkBAIC0yMjM0LDE3ICsyMjY2LDE3IEBA IGludDhfdCB1ZGZfY3VycmVudF9hZXh0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBl eHRlbnRfcG9zaXRpb24gKmVwb3MsCiAJY2FzZSBJQ0JUQUdfRkxBR19BRF9MT05HOgogCQls YWQgPSB1ZGZfZ2V0X2ZpbGVsb25nYWQocHRyLCBhbGVuLCAmZXBvcy0+b2Zmc2V0LCBpbmMp OwogCQlpZiAoIWxhZCkKLQkJCXJldHVybiAtMTsKLQkJZXR5cGUgPSBsZTMyX3RvX2NwdShs YWQtPmV4dExlbmd0aCkgPj4gMzA7CisJCQlyZXR1cm4gLUVOT0RBVEE7CisJCSpldHlwZSA9 IGxlMzJfdG9fY3B1KGxhZC0+ZXh0TGVuZ3RoKSA+PiAzMDsKIAkJKmVsb2MgPSBsZWxiX3Rv X2NwdShsYWQtPmV4dExvY2F0aW9uKTsKIAkJKmVsZW4gPSBsZTMyX3RvX2NwdShsYWQtPmV4 dExlbmd0aCkgJiBVREZfRVhURU5UX0xFTkdUSF9NQVNLOwogCQlicmVhazsKIAlkZWZhdWx0 OgogCQl1ZGZfZGVidWcoImFsbG9jX3R5cGUgPSAldSB1bnN1cHBvcnRlZFxuIiwgaWluZm8t PmlfYWxsb2NfdHlwZSk7Ci0JCXJldHVybiAtMTsKKwkJcmV0dXJuIC1FSU5WQUw7CiAJfQog Ci0JcmV0dXJuIGV0eXBlOworCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IHVkZl9pbnNl cnRfYWV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZXh0ZW50X3Bvc2l0aW9uIGVw b3MsCkBAIC0yMjU4LDEyICsyMjkwLDE0IEBAIHN0YXRpYyBpbnQgdWRmX2luc2VydF9hZXh0 KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBleHRlbnRfcG9zaXRpb24gZXBvcywKIAlp ZiAoZXBvcy5iaCkKIAkJZ2V0X2JoKGVwb3MuYmgpOwogCi0Jd2hpbGUgKChldHlwZSA9IHVk Zl9uZXh0X2FleHQoaW5vZGUsICZlcG9zLCAmb2Vsb2MsICZvZWxlbiwgMCkpICE9IC0xKSB7 CisJd2hpbGUgKCEoZXJyID0gdWRmX25leHRfYWV4dChpbm9kZSwgJmVwb3MsICZvZWxvYywK KwkJCQkgICAgICZvZWxlbiwgJmV0eXBlLCAwKSkpIHsKIAkJdWRmX3dyaXRlX2FleHQoaW5v ZGUsICZlcG9zLCAmbmVsb2MsIG5lbGVuLCAxKTsKIAkJbmVsb2MgPSBvZWxvYzsKIAkJbmVs ZW4gPSAoZXR5cGUgPDwgMzApIHwgb2VsZW47CiAJfQotCWVyciA9IHVkZl9hZGRfYWV4dChp bm9kZSwgJmVwb3MsICZuZWxvYywgbmVsZW4sIDEpOworCWlmIChVREZfRVhUX0VPRihlcnIp KQorCQllcnIgPSB1ZGZfYWRkX2FleHQoaW5vZGUsICZlcG9zLCAmbmVsb2MsIG5lbGVuLCAx KTsKIAlicmVsc2UoZXBvcy5iaCk7CiAKIAlyZXR1cm4gZXJyOwpAQCAtMjI3OCw2ICsyMzEy LDcgQEAgaW50OF90IHVkZl9kZWxldGVfYWV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1 Y3QgZXh0ZW50X3Bvc2l0aW9uIGVwb3MpCiAJc3RydWN0IHVkZl9pbm9kZV9pbmZvICppaW5m bzsKIAlzdHJ1Y3Qga2VybmVsX2xiX2FkZHIgZWxvYzsKIAl1aW50MzJfdCBlbGVuOworCWlu dCBlcnIgPSAwOwogCiAJaWYgKGVwb3MuYmgpIHsKIAkJZ2V0X2JoKGVwb3MuYmgpOwpAQCAt MjI5MywxMCArMjMyOCwxMSBAQCBpbnQ4X3QgdWRmX2RlbGV0ZV9hZXh0KHN0cnVjdCBpbm9k ZSAqaW5vZGUsIHN0cnVjdCBleHRlbnRfcG9zaXRpb24gZXBvcykKIAkJYWRzaXplID0gMDsK IAogCW9lcG9zID0gZXBvczsKLQlpZiAodWRmX25leHRfYWV4dChpbm9kZSwgJmVwb3MsICZl bG9jLCAmZWxlbiwgMSkgPT0gLTEpCisJZXJyID0gdWRmX25leHRfYWV4dChpbm9kZSwgJmVw b3MsICZlbG9jLCAmZWxlbiwgJmV0eXBlLCAxKTsKKwlpZiAoVURGX0VYVF9FUlIoZXJyKSkK IAkJcmV0dXJuIC0xOwogCi0Jd2hpbGUgKChldHlwZSA9IHVkZl9uZXh0X2FleHQoaW5vZGUs ICZlcG9zLCAmZWxvYywgJmVsZW4sIDEpKSAhPSAtMSkgeworCXdoaWxlICghKGVyciA9IHVk Zl9uZXh0X2FleHQoaW5vZGUsICZlcG9zLCAmZWxvYywgJmVsZW4sICZldHlwZSwgMSkpKSB7 CiAJCXVkZl93cml0ZV9hZXh0KGlub2RlLCAmb2Vwb3MsICZlbG9jLCAoZXR5cGUgPDwgMzAp IHwgZWxlbiwgMSk7CiAJCWlmIChvZXBvcy5iaCAhPSBlcG9zLmJoKSB7CiAJCQlvZXBvcy5i bG9jayA9IGVwb3MuYmxvY2s7CkBAIC0yMzA2LDYgKzIzNDIsMTEgQEAgaW50OF90IHVkZl9k ZWxldGVfYWV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZXh0ZW50X3Bvc2l0aW9u IGVwb3MpCiAJCQlvZXBvcy5vZmZzZXQgPSBlcG9zLm9mZnNldCAtIGFkc2l6ZTsKIAkJfQog CX0KKwlpZiAoVURGX0VYVF9FUlIoZXJyKSkgeworCQlicmVsc2UoZXBvcy5iaCk7CisJCWJy ZWxzZShvZXBvcy5iaCk7CisJCXJldHVybiAtMTsKKwl9CiAJbWVtc2V0KCZlbG9jLCAweDAw LCBzaXplb2Yoc3RydWN0IGtlcm5lbF9sYl9hZGRyKSk7CiAJZWxlbiA9IDA7CiAKQEAgLTIz NTMsMTQgKzIzOTQsMTkgQEAgaW50OF90IHVkZl9kZWxldGVfYWV4dChzdHJ1Y3QgaW5vZGUg Kmlub2RlLCBzdHJ1Y3QgZXh0ZW50X3Bvc2l0aW9uIGVwb3MpCiAJcmV0dXJuIChlbGVuID4+ IDMwKTsKIH0KIAotaW50OF90IGlub2RlX2JtYXAoc3RydWN0IGlub2RlICppbm9kZSwgc2Vj dG9yX3QgYmxvY2ssCi0JCSAgc3RydWN0IGV4dGVudF9wb3NpdGlvbiAqcG9zLCBzdHJ1Y3Qg a2VybmVsX2xiX2FkZHIgKmVsb2MsCi0JCSAgdWludDMyX3QgKmVsZW4sIHNlY3Rvcl90ICpv ZmZzZXQpCisvKgorICogcmV0dXJuIDAgd2hlbiBpdWRmX25leHRfYWV4dCgpIGxvb3Agc3Vj Y2Vzcy4KKyAqIHJldHVybiBlcnIgPCAwIGFuZCBlcnIgIT0gLUVOT0RBVEEgaW5kaWNhdGVz IGVycm9yLgorICogcmV0dXJuIGVyciA9PSAtRU5PREFUQSBpbmRpY2F0ZXMgaGl0IEVPRi4K KyAqLworaW50IGlub2RlX2JtYXAoc3RydWN0IGlub2RlICppbm9kZSwgc2VjdG9yX3QgYmxv Y2ssIHN0cnVjdCBleHRlbnRfcG9zaXRpb24gKnBvcywKKwkgICAgICAgc3RydWN0IGtlcm5l bF9sYl9hZGRyICplbG9jLCB1aW50MzJfdCAqZWxlbiwgc2VjdG9yX3QgKm9mZnNldCwKKwkg ICAgICAgaW50OF90ICpldHlwZSkKIHsKIAl1bnNpZ25lZCBjaGFyIGJsb2Nrc2l6ZV9iaXRz ID0gaW5vZGUtPmlfc2ItPnNfYmxvY2tzaXplX2JpdHM7CiAJbG9mZl90IGxiY291bnQgPSAw LCBiY291bnQgPSAobG9mZl90KSBibG9jayA8PCBibG9ja3NpemVfYml0czsKLQlpbnQ4X3Qg ZXR5cGU7CiAJc3RydWN0IHVkZl9pbm9kZV9pbmZvICppaW5mbzsKKwlpbnQgZXJyID0gMDsK IAogCWlpbmZvID0gVURGX0koaW5vZGUpOwogCWlmICghdWRmX3JlYWRfZXh0ZW50X2NhY2hl KGlub2RlLCBiY291bnQsICZsYmNvdW50LCBwb3MpKSB7CkBAIC0yMzcwLDE3ICsyNDE2LDE4 IEBAIGludDhfdCBpbm9kZV9ibWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHNlY3Rvcl90IGJs b2NrLAogCX0KIAkqZWxlbiA9IDA7CiAJZG8gewotCQlldHlwZSA9IHVkZl9uZXh0X2FleHQo aW5vZGUsIHBvcywgZWxvYywgZWxlbiwgMSk7Ci0JCWlmIChldHlwZSA9PSAtMSkgeworCQll cnIgPSB1ZGZfbmV4dF9hZXh0KGlub2RlLCBwb3MsIGVsb2MsIGVsZW4sIGV0eXBlLCAxKTsK KwkJaWYgKFVERl9FWFRfRU9GKGVycikpIHsKIAkJCSpvZmZzZXQgPSAoYmNvdW50IC0gbGJj b3VudCkgPj4gYmxvY2tzaXplX2JpdHM7CiAJCQlpaW5mby0+aV9sZW5FeHRlbnRzID0gbGJj b3VudDsKLQkJCXJldHVybiAtMTsKIAkJfQorCQlpZiAoZXJyIDwgMCkKKwkJCXJldHVybiBl cnI7CiAJCWxiY291bnQgKz0gKmVsZW47CiAJfSB3aGlsZSAobGJjb3VudCA8PSBiY291bnQp OwogCS8qIHVwZGF0ZSBleHRlbnQgY2FjaGUgKi8KIAl1ZGZfdXBkYXRlX2V4dGVudF9jYWNo ZShpbm9kZSwgbGJjb3VudCAtICplbGVuLCBwb3MpOwogCSpvZmZzZXQgPSAoYmNvdW50ICsg KmVsZW4gLSBsYmNvdW50KSA+PiBibG9ja3NpemVfYml0czsKIAotCXJldHVybiBldHlwZTsK KwlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2ZzL3VkZi9wYXJ0aXRpb24uYyBiL2ZzL3Vk Zi9wYXJ0aXRpb24uYwppbmRleCBhZjg3Nzk5MWVkYzEuLmM0NDFkNGFlMWY5NiAxMDA2NDQK LS0tIGEvZnMvdWRmL3BhcnRpdGlvbi5jCisrKyBiL2ZzL3VkZi9wYXJ0aXRpb24uYwpAQCAt MjgyLDkgKzI4MiwxMSBAQCBzdGF0aWMgdWludDMyX3QgdWRmX3RyeV9yZWFkX21ldGEoc3Ry dWN0IGlub2RlICppbm9kZSwgdWludDMyX3QgYmxvY2ssCiAJc2VjdG9yX3QgZXh0X29mZnNl dDsKIAlzdHJ1Y3QgZXh0ZW50X3Bvc2l0aW9uIGVwb3MgPSB7fTsKIAl1aW50MzJfdCBwaHli bG9jazsKKwlpbnQ4X3QgZXR5cGU7CisJaW50IGVyciA9IDA7CiAKLQlpZiAoaW5vZGVfYm1h cChpbm9kZSwgYmxvY2ssICZlcG9zLCAmZWxvYywgJmVsZW4sICZleHRfb2Zmc2V0KSAhPQot CQkJCQkJKEVYVF9SRUNPUkRFRF9BTExPQ0FURUQgPj4gMzApKQorCWVyciA9IGlub2RlX2Jt YXAoaW5vZGUsIGJsb2NrLCAmZXBvcywgJmVsb2MsICZlbGVuLCAmZXh0X29mZnNldCwgJmV0 eXBlKTsKKwlpZiAoZXJyIHx8IGV0eXBlICE9IChFWFRfUkVDT1JERURfQUxMT0NBVEVEID4+ IDMwKSkKIAkJcGh5YmxvY2sgPSAweEZGRkZGRkZGOwogCWVsc2UgewogCQltYXAgPSAmVURG X1NCKHNiKS0+c19wYXJ0bWFwc1twYXJ0aXRpb25dOwpkaWZmIC0tZ2l0IGEvZnMvdWRmL3N1 cGVyLmMgYi9mcy91ZGYvc3VwZXIuYwppbmRleCAzNDYwZWNjODI2ZDEuLjhjMzQyMjRlMWFl ZSAxMDA2NDQKLS0tIGEvZnMvdWRmL3N1cGVyLmMKKysrIGIvZnMvdWRmL3N1cGVyLmMKQEAg LTI0ODIsMTMgKzI0ODIsMTQgQEAgc3RhdGljIHVuc2lnbmVkIGludCB1ZGZfY291bnRfZnJl ZV90YWJsZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAogCXVpbnQzMl90IGVsZW47CiAJc3Ry dWN0IGtlcm5lbF9sYl9hZGRyIGVsb2M7CiAJc3RydWN0IGV4dGVudF9wb3NpdGlvbiBlcG9z OworCWludDhfdCBldHlwZTsKIAogCW11dGV4X2xvY2soJlVERl9TQihzYiktPnNfYWxsb2Nf bXV0ZXgpOwogCWVwb3MuYmxvY2sgPSBVREZfSSh0YWJsZSktPmlfbG9jYXRpb247CiAJZXBv cy5vZmZzZXQgPSBzaXplb2Yoc3RydWN0IHVuYWxsb2NTcGFjZUVudHJ5KTsKIAllcG9zLmJo ID0gTlVMTDsKIAotCXdoaWxlICh1ZGZfbmV4dF9hZXh0KHRhYmxlLCAmZXBvcywgJmVsb2Ms ICZlbGVuLCAxKSAhPSAtMSkKKwl3aGlsZSAoIXVkZl9uZXh0X2FleHQodGFibGUsICZlcG9z LCAmZWxvYywgJmVsZW4sICZldHlwZSwgMSkpCiAJCWFjY3VtICs9IChlbGVuID4+IHRhYmxl LT5pX3NiLT5zX2Jsb2Nrc2l6ZV9iaXRzKTsKIAogCWJyZWxzZShlcG9zLmJoKTsKZGlmZiAt LWdpdCBhL2ZzL3VkZi90cnVuY2F0ZS5jIGIvZnMvdWRmL3RydW5jYXRlLmMKaW5kZXggYTY4 NmMxMGZkNzA5Li5kMTNiYTlmZDEzMDkgMTAwNjQ0Ci0tLSBhL2ZzL3VkZi90cnVuY2F0ZS5j CisrKyBiL2ZzL3VkZi90cnVuY2F0ZS5jCkBAIC02OSw2ICs2OSw3IEBAIHZvaWQgdWRmX3Ry dW5jYXRlX3RhaWxfZXh0ZW50KHN0cnVjdCBpbm9kZSAqaW5vZGUpCiAJaW50OF90IGV0eXBl ID0gLTEsIG5ldHlwZTsKIAlpbnQgYWRzaXplOwogCXN0cnVjdCB1ZGZfaW5vZGVfaW5mbyAq aWluZm8gPSBVREZfSShpbm9kZSk7CisJaW50IGVyciA9IDA7CiAKIAlpZiAoaWluZm8tPmlf YWxsb2NfdHlwZSA9PSBJQ0JUQUdfRkxBR19BRF9JTl9JQ0IgfHwKIAkgICAgaW5vZGUtPmlf c2l6ZSA9PSBpaW5mby0+aV9sZW5FeHRlbnRzKQpAQCAtODUsNyArODYsNyBAQCB2b2lkIHVk Zl90cnVuY2F0ZV90YWlsX2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlKQogCQlCVUcoKTsK IAogCS8qIEZpbmQgdGhlIGxhc3QgZXh0ZW50IGluIHRoZSBmaWxlICovCi0Jd2hpbGUgKChu ZXR5cGUgPSB1ZGZfbmV4dF9hZXh0KGlub2RlLCAmZXBvcywgJmVsb2MsICZlbGVuLCAxKSkg IT0gLTEpIHsKKwl3aGlsZSAoIShlcnIgPSB1ZGZfbmV4dF9hZXh0KGlub2RlLCAmZXBvcywg JmVsb2MsICZlbGVuLCAmbmV0eXBlLCAxKSkpIHsKIAkJZXR5cGUgPSBuZXR5cGU7CiAJCWxi Y291bnQgKz0gZWxlbjsKIAkJaWYgKGxiY291bnQgPiBpbm9kZS0+aV9zaXplKSB7CkBAIC0x MDEsNyArMTAyLDcgQEAgdm9pZCB1ZGZfdHJ1bmNhdGVfdGFpbF9leHRlbnQoc3RydWN0IGlu b2RlICppbm9kZSkKIAkJCWVwb3Mub2Zmc2V0IC09IGFkc2l6ZTsKIAkJCWV4dGVudF90cnVu Yyhpbm9kZSwgJmVwb3MsICZlbG9jLCBldHlwZSwgZWxlbiwgbmVsZW4pOwogCQkJZXBvcy5v ZmZzZXQgKz0gYWRzaXplOwotCQkJaWYgKHVkZl9uZXh0X2FleHQoaW5vZGUsICZlcG9zLCAm ZWxvYywgJmVsZW4sIDEpICE9IC0xKQorCQkJaWYgKCF1ZGZfbmV4dF9hZXh0KGlub2RlLCAm ZXBvcywgJmVsb2MsICZlbGVuLCAmbmV0eXBlLCAxKSkKIAkJCQl1ZGZfZXJyKGlub2RlLT5p X3NiLAogCQkJCQkiRXh0ZW50IGFmdGVyIEVPRiBpbiBpbm9kZSAldVxuIiwKIAkJCQkJKHVu c2lnbmVkKWlub2RlLT5pX2lubyk7CkBAIC0xMTAsNyArMTExLDggQEAgdm9pZCB1ZGZfdHJ1 bmNhdGVfdGFpbF9leHRlbnQoc3RydWN0IGlub2RlICppbm9kZSkKIAl9CiAJLyogVGhpcyBp bm9kZSBlbnRyeSBpcyBpbi1tZW1vcnkgb25seSBhbmQgdGh1cyB3ZSBkb24ndCBoYXZlIHRv IG1hcmsKIAkgKiB0aGUgaW5vZGUgZGlydHkgKi8KLQlpaW5mby0+aV9sZW5FeHRlbnRzID0g aW5vZGUtPmlfc2l6ZTsKKwlpZiAoVURGX0VYVF9FT0YoZXJyKSkKKwkJaWluZm8tPmlfbGVu RXh0ZW50cyA9IGlub2RlLT5pX3NpemU7CiAJYnJlbHNlKGVwb3MuYmgpOwogfQogCkBAIC0x MjQsNiArMTI2LDggQEAgdm9pZCB1ZGZfZGlzY2FyZF9wcmVhbGxvYyhzdHJ1Y3QgaW5vZGUg Kmlub2RlKQogCWludDhfdCBldHlwZSA9IC0xOwogCXN0cnVjdCB1ZGZfaW5vZGVfaW5mbyAq aWluZm8gPSBVREZfSShpbm9kZSk7CiAJaW50IGJzaXplID0gaV9ibG9ja3NpemUoaW5vZGUp OworCWludDhfdCB0bXBldHlwZSA9IC0xOworCWludCBlcnIgPSAwOwogCiAJaWYgKGlpbmZv LT5pX2FsbG9jX3R5cGUgPT0gSUNCVEFHX0ZMQUdfQURfSU5fSUNCIHx8CiAJICAgIEFMSUdO KGlub2RlLT5pX3NpemUsIGJzaXplKSA9PSBBTElHTihpaW5mby0+aV9sZW5FeHRlbnRzLCBi c2l6ZSkpCkBAIC0xMzIsMTYgKzEzNiwyMiBAQCB2b2lkIHVkZl9kaXNjYXJkX3ByZWFsbG9j KHN0cnVjdCBpbm9kZSAqaW5vZGUpCiAJZXBvcy5ibG9jayA9IGlpbmZvLT5pX2xvY2F0aW9u OwogCiAJLyogRmluZCB0aGUgbGFzdCBleHRlbnQgaW4gdGhlIGZpbGUgKi8KLQl3aGlsZSAo dWRmX25leHRfYWV4dChpbm9kZSwgJmVwb3MsICZlbG9jLCAmZWxlbiwgMCkgIT0gLTEpIHsK Kwl3aGlsZSAoIShlcnIgPSB1ZGZfbmV4dF9hZXh0KGlub2RlLCAmZXBvcywgJmVsb2MsICZl bGVuLCAmdG1wZXR5cGUsCisJCQkJICAgICAwKSkpIHsKIAkJYnJlbHNlKHByZXZfZXBvcy5i aCk7CiAJCXByZXZfZXBvcyA9IGVwb3M7CiAJCWlmIChwcmV2X2Vwb3MuYmgpCiAJCQlnZXRf YmgocHJldl9lcG9zLmJoKTsKIAotCQlldHlwZSA9IHVkZl9uZXh0X2FleHQoaW5vZGUsICZl cG9zLCAmZWxvYywgJmVsZW4sIDEpOworCQllcnIgPSB1ZGZfbmV4dF9hZXh0KGlub2RlLCAm ZXBvcywgJmVsb2MsICZlbGVuLCAmZXR5cGUsIDEpOworCQlpZiAoZXJyIDwgMCkKKwkJCWJy ZWFrOwogCQlsYmNvdW50ICs9IGVsZW47CiAJfQotCWlmIChldHlwZSA9PSAoRVhUX05PVF9S RUNPUkRFRF9BTExPQ0FURUQgPj4gMzApKSB7CisJaWYgKFVERl9FWFRfRVJSKGVycikpCisJ CWdvdG8gb3V0OworCisJaWYgKCFlcnIgJiYgZXR5cGUgPT0gKEVYVF9OT1RfUkVDT1JERURf QUxMT0NBVEVEID4+IDMwKSkgewogCQlsYmNvdW50IC09IGVsZW47CiAJCXVkZl9kZWxldGVf YWV4dChpbm9kZSwgcHJldl9lcG9zKTsKIAkJdWRmX2ZyZWVfYmxvY2tzKGlub2RlLT5pX3Ni LCBpbm9kZSwgJmVsb2MsIDAsCkBAIC0xNTAsNiArMTYwLDcgQEAgdm9pZCB1ZGZfZGlzY2Fy ZF9wcmVhbGxvYyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQogCS8qIFRoaXMgaW5vZGUgZW50cnkg aXMgaW4tbWVtb3J5IG9ubHkgYW5kIHRodXMgd2UgZG9uJ3QgaGF2ZSB0byBtYXJrCiAJICog dGhlIGlub2RlIGRpcnR5ICovCiAJaWluZm8tPmlfbGVuRXh0ZW50cyA9IGxiY291bnQ7Citv dXQ6CiAJYnJlbHNlKGVwb3MuYmgpOwogCWJyZWxzZShwcmV2X2Vwb3MuYmgpOwogfQpAQCAt MTg4LDYgKzE5OSw3IEBAIGludCB1ZGZfdHJ1bmNhdGVfZXh0ZW50cyhzdHJ1Y3QgaW5vZGUg Kmlub2RlKQogCWxvZmZfdCBieXRlX29mZnNldDsKIAlpbnQgYWRzaXplOwogCXN0cnVjdCB1 ZGZfaW5vZGVfaW5mbyAqaWluZm8gPSBVREZfSShpbm9kZSk7CisJaW50IGVyciA9IDA7CiAK IAlpZiAoaWluZm8tPmlfYWxsb2NfdHlwZSA9PSBJQ0JUQUdfRkxBR19BRF9TSE9SVCkKIAkJ YWRzaXplID0gc2l6ZW9mKHN0cnVjdCBzaG9ydF9hZCk7CkBAIC0xOTYsMTAgKzIwOCwxMiBA QCBpbnQgdWRmX3RydW5jYXRlX2V4dGVudHMoc3RydWN0IGlub2RlICppbm9kZSkKIAllbHNl CiAJCUJVRygpOwogCi0JZXR5cGUgPSBpbm9kZV9ibWFwKGlub2RlLCBmaXJzdF9ibG9jaywg JmVwb3MsICZlbG9jLCAmZWxlbiwgJm9mZnNldCk7CisJZXJyID0gaW5vZGVfYm1hcChpbm9k ZSwgZmlyc3RfYmxvY2ssICZlcG9zLCAmZWxvYywgJmVsZW4sICZvZmZzZXQsICZldHlwZSk7 CiAJYnl0ZV9vZmZzZXQgPSAob2Zmc2V0IDw8IHNiLT5zX2Jsb2Nrc2l6ZV9iaXRzKSArCi0J CShpbm9kZS0+aV9zaXplICYgKHNiLT5zX2Jsb2Nrc2l6ZSAtIDEpKTsKLQlpZiAoZXR5cGUg PT0gLTEpIHsKKwkJICAgICAgKGlub2RlLT5pX3NpemUgJiAoc2ItPnNfYmxvY2tzaXplIC0g MSkpOworCWlmIChVREZfRVhUX0VSUihlcnIpKQorCQlyZXR1cm4gZXJyOworCWlmIChVREZf RVhUX0VPRihlcnIpKSB7CiAJCS8qIFdlIHNob3VsZCBleHRlbmQgdGhlIGZpbGU/ICovCiAJ CVdBUk5fT04oYnl0ZV9vZmZzZXQpOwogCQlyZXR1cm4gMDsKQEAgLTIxNyw4ICsyMzEsOCBA QCBpbnQgdWRmX3RydW5jYXRlX2V4dGVudHMoc3RydWN0IGlub2RlICppbm9kZSkKIAllbHNl CiAJCWxlbmFsbG9jIC09IHNpemVvZihzdHJ1Y3QgYWxsb2NFeHREZXNjKTsKIAotCXdoaWxl ICgoZXR5cGUgPSB1ZGZfY3VycmVudF9hZXh0KGlub2RlLCAmZXBvcywgJmVsb2MsCi0JCQkJ CSAmZWxlbiwgMCkpICE9IC0xKSB7CisJd2hpbGUgKCEoZXJyID0gdWRmX2N1cnJlbnRfYWV4 dChpbm9kZSwgJmVwb3MsICZlbG9jLCAmZWxlbiwgJmV0eXBlLAorCQkJCQkwKSkpIHsKIAkJ aWYgKGV0eXBlID09IChFWFRfTkVYVF9FWFRFTlRfQUxMT0NERVNDUyA+PiAzMCkpIHsKIAkJ CXVkZl93cml0ZV9hZXh0KGlub2RlLCAmZXBvcywgJm5lbG9jLCBuZWxlbiwgMCk7CiAJCQlp ZiAoaW5kaXJlY3RfZXh0X2xlbikgewpAQCAtMjUzLDYgKzI2NywxMSBAQCBpbnQgdWRmX3Ry dW5jYXRlX2V4dGVudHMoc3RydWN0IGlub2RlICppbm9kZSkKIAkJfQogCX0KIAorCWlmIChV REZfRVhUX0VSUihlcnIpKSB7CisJCWJyZWxzZShlcG9zLmJoKTsKKwkJcmV0dXJuIGVycjsK Kwl9CisKIAlpZiAoaW5kaXJlY3RfZXh0X2xlbikgewogCQlCVUdfT04oIWVwb3MuYmgpOwog CQl1ZGZfZnJlZV9ibG9ja3Moc2IsIE5VTEwsICZlcG9zLmJsb2NrLCAwLCBpbmRpcmVjdF9l eHRfbGVuKTsKZGlmZiAtLWdpdCBhL2ZzL3VkZi91ZGZkZWNsLmggYi9mcy91ZGYvdWRmZGVj bC5oCmluZGV4IDg4NjkyNTEyYTQ2Ni4uYTE1NmVkOTUxODlhIDEwMDY0NAotLS0gYS9mcy91 ZGYvdWRmZGVjbC5oCisrKyBiL2ZzL3VkZi91ZGZkZWNsLmgKQEAgLTQzLDYgKzQzLDkgQEAg ZXh0ZXJuIF9fcHJpbnRmKDMsIDQpIHZvaWQgX3VkZl93YXJuKHN0cnVjdCBzdXBlcl9ibG9j ayAqc2IsCiAjZGVmaW5lIFVERl9OQU1FX0xFTgkJMjU0CiAjZGVmaW5lIFVERl9OQU1FX0xF Tl9DUzAJMjU1CiAKKyNkZWZpbmUgVURGX0VYVF9FT0YoZXJyKSAgICAgICAgKChlcnIpID09 IC1FTk9EQVRBKQorI2RlZmluZSBVREZfRVhUX0VSUihlcnIpICAgICAgICAoKChlcnIpIDwg MCkgJiYgKCFVREZfRVhUX0VPRihlcnIpKSkKKwogc3RhdGljIGlubGluZSBzaXplX3QgdWRm X2ZpbGVfZW50cnlfYWxsb2Nfb2Zmc2V0KHN0cnVjdCBpbm9kZSAqaW5vZGUpCiB7CiAJc3Ry dWN0IHVkZl9pbm9kZV9pbmZvICppaW5mbyA9IFVERl9JKGlub2RlKTsKQEAgLTE1Nyw4ICsx NjAsOSBAQCBleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICp1ZGZfYnJlYWQoc3RydWN0IGlu b2RlICppbm9kZSwgdWRmX3BibGtfdCBibG9jaywKIGV4dGVybiBpbnQgdWRmX3NldHNpemUo c3RydWN0IGlub2RlICosIGxvZmZfdCk7CiBleHRlcm4gdm9pZCB1ZGZfZXZpY3RfaW5vZGUo c3RydWN0IGlub2RlICopOwogZXh0ZXJuIGludCB1ZGZfd3JpdGVfaW5vZGUoc3RydWN0IGlu b2RlICosIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjKTsKLWV4dGVybiBpbnQ4X3Qg aW5vZGVfYm1hcChzdHJ1Y3QgaW5vZGUgKiwgc2VjdG9yX3QsIHN0cnVjdCBleHRlbnRfcG9z aXRpb24gKiwKLQkJCSBzdHJ1Y3Qga2VybmVsX2xiX2FkZHIgKiwgdWludDMyX3QgKiwgc2Vj dG9yX3QgKik7CitleHRlcm4gaW50IGlub2RlX2JtYXAoc3RydWN0IGlub2RlICppbm9kZSwg c2VjdG9yX3QgYmxvY2ssCisJCSAgICAgIHN0cnVjdCBleHRlbnRfcG9zaXRpb24gKnBvcywg c3RydWN0IGtlcm5lbF9sYl9hZGRyICplbG9jLAorCQkgICAgICB1aW50MzJfdCAqZWxlbiwg c2VjdG9yX3QgKm9mZnNldCwgaW50OF90ICpldHlwZSk7CiBpbnQgdWRmX2dldF9ibG9jayhz dHJ1Y3QgaW5vZGUgKiwgc2VjdG9yX3QsIHN0cnVjdCBidWZmZXJfaGVhZCAqLCBpbnQpOwog ZXh0ZXJuIGludCB1ZGZfc2V0dXBfaW5kaXJlY3RfYWV4dChzdHJ1Y3QgaW5vZGUgKmlub2Rl LCB1ZGZfcGJsa190IGJsb2NrLAogCQkJCSAgIHN0cnVjdCBleHRlbnRfcG9zaXRpb24gKmVw b3MpOwpAQCAtMTY5LDEwICsxNzMsMTIgQEAgZXh0ZXJuIGludCB1ZGZfYWRkX2FleHQoc3Ry dWN0IGlub2RlICosIHN0cnVjdCBleHRlbnRfcG9zaXRpb24gKiwKIGV4dGVybiB2b2lkIHVk Zl93cml0ZV9hZXh0KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZXh0ZW50X3Bvc2l0aW9uICos CiAJCQkgICBzdHJ1Y3Qga2VybmVsX2xiX2FkZHIgKiwgdWludDMyX3QsIGludCk7CiBleHRl cm4gaW50OF90IHVkZl9kZWxldGVfYWV4dChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGV4dGVu dF9wb3NpdGlvbik7Ci1leHRlcm4gaW50OF90IHVkZl9uZXh0X2FleHQoc3RydWN0IGlub2Rl ICosIHN0cnVjdCBleHRlbnRfcG9zaXRpb24gKiwKLQkJCSAgICBzdHJ1Y3Qga2VybmVsX2xi X2FkZHIgKiwgdWludDMyX3QgKiwgaW50KTsKLWV4dGVybiBpbnQ4X3QgdWRmX2N1cnJlbnRf YWV4dChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGV4dGVudF9wb3NpdGlvbiAqLAotCQkJICAg ICAgIHN0cnVjdCBrZXJuZWxfbGJfYWRkciAqLCB1aW50MzJfdCAqLCBpbnQpOworZXh0ZXJu IGludCB1ZGZfbmV4dF9hZXh0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBleHRlbnRf cG9zaXRpb24gKmVwb3MsCisJCQkgc3RydWN0IGtlcm5lbF9sYl9hZGRyICplbG9jLCB1aW50 MzJfdCAqZWxlbiwKKwkJCSBpbnQ4X3QgKmV0eXBlLCBpbnQgaW5jKTsKK2V4dGVybiBpbnQg dWRmX2N1cnJlbnRfYWV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZXh0ZW50X3Bv c2l0aW9uICplcG9zLAorCQkJICAgIHN0cnVjdCBrZXJuZWxfbGJfYWRkciAqZWxvYywgdWlu dDMyX3QgKmVsZW4sCisJCQkgICAgaW50OF90ICpldHlwZSwgaW50IGluYyk7CiBleHRlcm4g dm9pZCB1ZGZfdXBkYXRlX2V4dHJhX3Blcm1zKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVtb2Rl X3QgbW9kZSk7CiAKIC8qIG1pc2MuYyAqLwo= --------------DxrKwbmcw0RvjX0HVNpiyC7m--