From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 288C7C7EE26 for ; Tue, 23 May 2023 17:22:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:From:References:CC:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=4Lc+P6eE0jKKrdyqW9YAKw3Iv0xSxODh2FBAJ0gjC9g=; b=p/j4jhEbzXBhzy YkxHdVw63m0PDg96/52if65i9Gq2/CnfiSkHxtRVq6o5tUoXlEElMDgGNfji1QR1hMfLOyXsfFbX2 +2meLrrgmuA3J5nx/ejn8XAyqGCwjhvmibQzDg7TYsgIRhtz2ke/sp4ckKK6jYdxKU2kY5s3Gbo8c iz8mPgs4TarM10k4oL9i28zuHf0fSd4JE7l89GLXs4RTXrduWV9TMOGgT12eetON1uytCE+Z6O+8b QXx+S4lt+cCUhdLYk9rVGVc+IqcHvKMdhwu9mzKeZ0q52BuAx+1upqrCALUEvlSM7uhcxCeUhm4vd cplEcx1G39loOdfGbsEg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q1Vhm-00AwY3-0v; Tue, 23 May 2023 17:21:50 +0000 Received: from mx.sberdevices.ru ([45.89.227.171]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q1Vhh-00AwUf-0N; Tue, 23 May 2023 17:21:48 +0000 Received: from s-lin-edge02.sberdevices.ru (localhost [127.0.0.1]) by mx.sberdevices.ru (Postfix) with ESMTP id 015CF5FD1D; Tue, 23 May 2023 20:21:38 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sberdevices.ru; s=mail; t=1684862498; bh=mzLt5EJCdpfxSrQ1d30MhCajOUon/3fTlDAmZQS6bbQ=; h=Message-ID:Date:MIME-Version:Subject:To:From:Content-Type; b=ZQ0X0K9iA3a4or2mJPCWQ+WeSWKI4TfYB307mHBnp0PjJHQ1iwVakF8DyWpHTYCIm ZLV0CIVew2F6/gUZKS4vZVDqSIlCyvr2oDyEHZskzZTuoe5/K8I7ubc0qO/wNhbByJ gbS4AMOEwFPOks4xyh9BmimadVXOium9/V6Wi5udKQD4hMF6/WU21w5nXvNRuo+j+z SD4OPh2xUgX142plg+lfjtmvp4ZfNDwOQr5qkbODZREvD2nXh06Zyu5RNULtGtr2aK ZEFghCd6uqo5gj79EOoBgrsT7DnDffQTGbFAJgaalQhMcCmtlwcagxg/Ar+IYC2hrN 7bckuB8+ZS0Lw== Received: from S-MS-EXCH01.sberdevices.ru (S-MS-EXCH01.sberdevices.ru [172.16.1.4]) by mx.sberdevices.ru (Postfix) with ESMTP; Tue, 23 May 2023 20:21:36 +0300 (MSK) Message-ID: Date: Tue, 23 May 2023 20:17:14 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: [PATCH v4 2/5] mtd: rawnand: meson: move OOB to non-protected ECC area Content-Language: en-US To: Miquel Raynal , Liang Yang CC: Richard Weinberger , Vignesh Raghavendra , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Yixun Lan , Jianxin Pan , , , , , , References: <20230515094440.3552094-1-AVKrasnov@sberdevices.ru> <20230515094440.3552094-3-AVKrasnov@sberdevices.ru> <20230522173334.7aa6f917@xps-13> From: Arseniy Krasnov In-Reply-To: <20230522173334.7aa6f917@xps-13> X-Originating-IP: [172.16.1.6] X-ClientProxiedBy: S-MS-EXCH02.sberdevices.ru (172.16.1.5) To S-MS-EXCH01.sberdevices.ru (172.16.1.4) X-KSMG-Rule-ID: 4 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiPhishing: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 1.1.2.30, bases: 2023/05/23 12:15:00 #21372692 X-KSMG-AntiVirus-Status: Clean, skipped X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230523_102146_014224_B0D2097E X-CRM114-Status: GOOD ( 44.93 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org SGVsbG8gTWlxdWVsISBUaGFua3MgZm9yIGRldGFpbGVkIHJldmlldyEKCk9uIDIyLjA1LjIwMjMg MTg6MzMsIE1pcXVlbCBSYXluYWwgd3JvdGU6Cj4gSGkgQXJzZW5peSwKPiAKPiBBVktyYXNub3ZA c2JlcmRldmljZXMucnUgd3JvdGUgb24gTW9uLCAxNSBNYXkgMjAyMyAxMjo0NDozNiArMDMwMDoK PiAKPiBUaGUgdGl0bGUgc2hvdWxkIHBlcmhhcHMgYmUgIm9ubHkgZXhwb3NlIHVucHJvdGVjdGVk IHVzZXIgT09CIGJ5dGVzIi4KPiAKPj4gVGhpcyBtb3ZlcyBmcmVlIGJ5dGVzIG9mIE9PQiB0byBu b24tcHJvdGVjdGVkIEVDQyBhcmVhLiBJdCBpcyBuZWVkZWQgdG8KPj4gbWFrZSBKRkZTMiB3b3Jr cyBjb3JyZWN0bHkgd2l0aCB0aGlzIE5BTkQgY29udHJvbGxlci4gUHJvYmxlbSBmaXJlcyB3aGVu Cj4+IEpGRlMyIGRyaXZlciB3cml0ZXMgY2xlYW5tYXJrZXIgdG8gc29tZSBwYWdlIGFuZCBsYXRl ciBpdCB0cmllcyB0byB3cml0ZQo+PiB0byB0aGlzIHBhZ2UgLSB3cml0ZSB3aWxsIGJlIGRvbmUg c3VjY2Vzc2Z1bGx5LCBidXQgYWZ0ZXIgdGhhdCBzdWNoIHBhZ2UKPj4gYmVjb21lcyB1bnJlYWRh YmxlIGR1ZSB0byBpbnZhbGlkIEVDQyBjb2Rlcy4gVGhpcyBoYXBwZW5zIGJlY2F1c2Ugc2Vjb25k Cj4+IHdyaXRlIG5lZWRzIHRvIHVwZGF0ZSBFQ0MgY29kZXMsIGJ1dCBpdCBpcyBpbXBvc3NpYmxl IHRvIGRvIGl0IGNvcnJlY3RseQo+PiB3aXRob3V0IGJsb2NrIGVyYXNlLiBTbyBpZGVhIG9mIHRo aXMgcGF0Y2ggaXMgdG8KPiAKPiAiLi4uIGlzIHRvIHVzZSB0aGUgdW5wcm90ZWN0ZWQgT09CIGFy ZWEgdG8gc3RvcmUgdGhlIGNsZWFubWFya2Vycywgc28KPiB0aGF0IHRoZXkgY2FuIGJlIHdyaXR0 ZW4gYnkgdGhlIGZpbGVzeXN0ZW0gd2l0aG91dCBjYXJpbmcgbXVjaCBhYm91dAo+IHRoZSBwYWdl IGJlaW5nIGVtcHR5IG9yIG5vdDogdGhlIEVDQyBjb2RlcyB3aWxsIG5vdCBiZSB3cml0dGVuIGFu eXdheS4iCj4gPwoKT2sKCj4gCj4gSkZGUzIgaXMgb25seSB1c2VmdWwgb24gdGlueSBOQU5EIGRl dmljZXMsIHdoZXJlIFVCSSBkb2VzIG5vdCBmaXQsCj4gd2hpY2ggYXJlIHVzdWFsbHkgdHJ1ZSBT TEMgZmxhc2hlcywgd2l0aCB0aGUgY2FwYWJpbGl0eSBvZiB3cml0aW5nCj4gYSBwYWdlIHdpdGgg ZW1wdHkgKDB4RkYpIGRhdGEsIGFuZCBzdGlsbCBiZSBhYmxlIHRvIHdyaXRlIGFjdHVhbCBkYXRh Cj4gdG8gaXQgbGF0ZXIgaW4gYSBzZWNvbmQgd3JpdGUuCgpZb3UgbWVhbiB0byBpbmNsdWRlIHRl eHQgYWJvdmUgdG8gY29tbWl0IG1lc3NhZ2UgYWxzbz8KCj4gCj4+IHNwbGl0IGFjY2Vzc2VzIHRv IE9PQgo+PiBmcmVlIGJ5dGVzIGFuZCBkYXRhIG9uIGVhY2ggcGFnZSAtIG5vdyBib3RoIG9mIHRo ZW0gZG9lcyBub3QgZGVwZW5kcyBvbgo+PiBlYWNoIG90aGVyLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5 OiBBcnNlbml5IEtyYXNub3YgPEFWS3Jhc25vdkBzYmVyZGV2aWNlcy5ydT4KPj4gLS0tCj4+ICBk cml2ZXJzL210ZC9uYW5kL3Jhdy9tZXNvbl9uYW5kLmMgfCAxOTIgKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tCj4+ICAxIGZpbGUgY2hhbmdlZCwgMTU1IGluc2VydGlvbnMoKyksIDM3IGRl bGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9yYXcvbWVzb25f bmFuZC5jIGIvZHJpdmVycy9tdGQvbmFuZC9yYXcvbWVzb25fbmFuZC5jCj4+IGluZGV4IDJmNGQ4 Yzg0MTg2Yi4uODUyNmE2Yjg3NzIwIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL210ZC9uYW5kL3Jh dy9tZXNvbl9uYW5kLmMKPj4gKysrIGIvZHJpdmVycy9tdGQvbmFuZC9yYXcvbWVzb25fbmFuZC5j Cj4+IEBAIC0xMDgsNiArMTA4LDkgQEAKPj4gIAo+PiAgI2RlZmluZSBQRVJfSU5GT19CWVRFCQk4 Cj4+ICAKPj4gKyNkZWZpbmUgTkZDX1VTRVJfQllURVMJCTIKPj4gKyNkZWZpbmUgTkZDX09PQl9Q RVJfRUNDKG5hbmQpCSgobmFuZCktPmVjYy5ieXRlcyArIE5GQ19VU0VSX0JZVEVTKQo+PiArCj4+ ICBzdHJ1Y3QgbWVzb25fbmZjX25hbmRfY2hpcCB7Cj4+ICAJc3RydWN0IGxpc3RfaGVhZCBub2Rl Owo+PiAgCXN0cnVjdCBuYW5kX2NoaXAgbmFuZDsKPj4gQEAgLTEyMiw2ICsxMjUsNyBAQCBzdHJ1 Y3QgbWVzb25fbmZjX25hbmRfY2hpcCB7Cj4+ICAJdTggKmRhdGFfYnVmOwo+PiAgCV9fbGU2NCAq aW5mb19idWY7Cj4+ICAJdTMyIG5zZWxzOwo+PiArCXU4ICpvb2JfYnVmOwo+PiAgCXU4IHNlbHNb XTsKPj4gIH07Cj4+ICAKPj4gQEAgLTMzOCw3ICszNDIsNyBAQCBzdGF0aWMgdTggKm1lc29uX25m Y19vb2JfcHRyKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIGludCBpKQo+PiAgCXN0cnVjdCBtZXNv bl9uZmNfbmFuZF9jaGlwICptZXNvbl9jaGlwID0gdG9fbWVzb25fbmFuZChuYW5kKTsKPj4gIAlp bnQgbGVuOwo+PiAgCj4+IC0JbGVuID0gbmFuZC0+ZWNjLnNpemUgKiAoaSArIDEpICsgKG5hbmQt PmVjYy5ieXRlcyArIDIpICogaTsKPj4gKwlsZW4gPSBuYW5kLT5lY2Muc2l6ZSAqIChpICsgMSkg KyBORkNfT09CX1BFUl9FQ0MobmFuZCkgKiBpOwo+IAo+IFRoaXMuLi4KPiAKPj4gIAo+PiAgCXJl dHVybiBtZXNvbl9jaGlwLT5kYXRhX2J1ZiArIGxlbjsKPj4gIH0KPj4gQEAgLTM0OSw3ICszNTMs NyBAQCBzdGF0aWMgdTggKm1lc29uX25mY19kYXRhX3B0cihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5k LCBpbnQgaSkKPj4gIAlpbnQgbGVuLCB0ZW1wOwo+PiAgCj4+ICAJdGVtcCA9IG5hbmQtPmVjYy5z aXplICsgbmFuZC0+ZWNjLmJ5dGVzOwo+PiAtCWxlbiA9ICh0ZW1wICsgMikgKiBpOwo+PiArCWxl biA9ICh0ZW1wICsgTkZDX1VTRVJfQllURVMpICogaTsKPiAKPiAuLi4gYW5kIHRoaXMgKHNhbWUg YmVsb3cpCj4gCj4gYXJlIHB1cmVseSBjb3NtZXRpYywgc2hvdWxkIGJlIGluIGEgcGF0Y2ggYXNp ZGUuCj4gCgpBY2ssIGknbGwgbW92ZSBjb3NtZXRpYyB1cGRhdGVzIHRvIHNlcGFyYXRlIHBhdGNo LgoKPj4gIAo+PiAgCXJldHVybiBtZXNvbl9jaGlwLT5kYXRhX2J1ZiArIGxlbjsKPj4gIH0KPj4g QEAgLTM1NywyOSArMzYxLDQ3IEBAIHN0YXRpYyB1OCAqbWVzb25fbmZjX2RhdGFfcHRyKHN0cnVj dCBuYW5kX2NoaXAgKm5hbmQsIGludCBpKQo+PiAgc3RhdGljIHZvaWQgbWVzb25fbmZjX2dldF9k YXRhX29vYihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLAo+PiAgCQkJCSAgIHU4ICpidWYsIHU4ICpv b2JidWYpCj4+ICB7Cj4+ICsJc3RydWN0IG1lc29uX25mY19uYW5kX2NoaXAgKm1lc29uX2NoaXAg PSB0b19tZXNvbl9uYW5kKG5hbmQpOwo+PiArCXN0cnVjdCBtdGRfaW5mbyAqbXRkID0gbmFuZF90 b19tdGQobmFuZCk7Cj4+ICAJaW50IGksIG9vYl9sZW4gPSAwOwo+PiAgCXU4ICpkc3JjLCAqb3Ny YzsKPj4gKwl1OCAqb29idGFpbDsKPj4gIAo+PiAtCW9vYl9sZW4gPSBuYW5kLT5lY2MuYnl0ZXMg KyAyOwo+PiArCW9vYl9sZW4gPSBORkNfT09CX1BFUl9FQ0MobmFuZCk7Cj4+ICAJZm9yIChpID0g MDsgaSA8IG5hbmQtPmVjYy5zdGVwczsgaSsrKSB7Cj4+ICAJCWlmIChidWYpIHsKPj4gIAkJCWRz cmMgPSBtZXNvbl9uZmNfZGF0YV9wdHIobmFuZCwgaSk7Cj4+ICAJCQltZW1jcHkoYnVmLCBkc3Jj LCBuYW5kLT5lY2Muc2l6ZSk7Cj4+ICAJCQlidWYgKz0gbmFuZC0+ZWNjLnNpemU7Cj4+ICAJCX0K Pj4gLQkJb3NyYyA9IG1lc29uX25mY19vb2JfcHRyKG5hbmQsIGkpOwo+PiAtCQltZW1jcHkob29i YnVmLCBvc3JjLCBvb2JfbGVuKTsKPj4gLQkJb29iYnVmICs9IG9vYl9sZW47Cj4+ICsKPj4gKwkJ aWYgKG9vYmJ1Zikgewo+PiArCQkJb3NyYyA9IG1lc29uX25mY19vb2JfcHRyKG5hbmQsIGkpOwo+ PiArCQkJbWVtY3B5KG9vYmJ1Ziwgb3NyYywgb29iX2xlbik7Cj4+ICsJCQlvb2JidWYgKz0gb29i X2xlbjsKPj4gKwkJfQo+PiAgCX0KPj4gKwo+PiArCWlmICghb29iYnVmKQo+PiArCQlyZXR1cm47 Cj4gCj4gVGhlIHdob2xlICJpZiAob29iYnVmKSIgbG9naWMgaXMgbmljZSB0byBoYXZlLCBidXQg c2hvdWxkIGFzIHdlbGwgYmUgaW4KPiBhIGRlZGljYXRlZCBwYXRjaC4KClNvcnJ5LCBZb3UgbWVh biB0aGF0IHRoaXMgbG9naWMgaW1wbGVtZW50cyByZWFkIG9mIEVDQyBjb2Rlcz8gQW5kIG5vdApy ZWxhdGVkIHRvIE9PQiBsYXlvdXQgdXBkYXRlIGluIHRoaXMgcGF0Y2g/Cgo+IAo+PiArCj4+ICsJ b29idGFpbCA9IG1lc29uX2NoaXAtPmRhdGFfYnVmICsgbmFuZC0+ZWNjLnN0ZXBzICoKPj4gKwkJ ICAobmFuZC0+ZWNjLnNpemUgKyBvb2JfbGVuKTsKPj4gKwo+PiArCS8qICdvb2JidWYnIGlmIGFs cmVhZHkgc2hpZnRlZCB0byB0aGUgc3RhcnQgb2YgdW51c2VkIGFyZWEuICovCj4gCj4gCQkgICAg aXM/Cj4gcy91bnVzZWQvdXNlci8/IEknbSBub3Qgc3VyZSBJIGdldCB0aGUgY29tbWVudC4KClll cywgbm90IGNsZWFyIGNvbW1lbnQuCgo+IAo+PiArCW1lbWNweShvb2JidWYsIG9vYnRhaWwsIG10 ZC0+b29ic2l6ZSAtIG5hbmQtPmVjYy5zdGVwcyAqIG9vYl9sZW4pOwo+PiAgfQo+PiAgCj4+ICBz dGF0aWMgdm9pZCBtZXNvbl9uZmNfc2V0X2RhdGFfb29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQs Cj4+ICAJCQkJICAgY29uc3QgdTggKmJ1ZiwgdTggKm9vYmJ1ZikKPj4gIHsKPj4gKwlzdHJ1Y3Qg bWVzb25fbmZjX25hbmRfY2hpcCAqbWVzb25fY2hpcCA9IHRvX21lc29uX25hbmQobmFuZCk7Cj4+ ICsJc3RydWN0IG10ZF9pbmZvICptdGQgPSBuYW5kX3RvX210ZChuYW5kKTsKPj4gIAlpbnQgaSwg b29iX2xlbiA9IDA7Cj4+ICAJdTggKmRzcmMsICpvc3JjOwo+PiArCXU4ICpvb2J0YWlsOwo+PiAg Cj4+IC0Jb29iX2xlbiA9IG5hbmQtPmVjYy5ieXRlcyArIDI7Cj4+ICsJb29iX2xlbiA9IE5GQ19P T0JfUEVSX0VDQyhuYW5kKTsKPj4gIAlmb3IgKGkgPSAwOyBpIDwgbmFuZC0+ZWNjLnN0ZXBzOyBp KyspIHsKPj4gIAkJaWYgKGJ1Zikgewo+PiAgCQkJZHNyYyA9IG1lc29uX25mY19kYXRhX3B0cihu YW5kLCBpKTsKPj4gQEAgLTM5MCw2ICs0MTIsMTIgQEAgc3RhdGljIHZvaWQgbWVzb25fbmZjX3Nl dF9kYXRhX29vYihzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLAo+PiAgCQltZW1jcHkob3NyYywgb29i YnVmLCBvb2JfbGVuKTsKPj4gIAkJb29iYnVmICs9IG9vYl9sZW47Cj4+ICAJfQo+PiArCj4+ICsJ b29idGFpbCA9IG1lc29uX2NoaXAtPmRhdGFfYnVmICsgbmFuZC0+ZWNjLnN0ZXBzICoKPj4gKwkJ ICAobmFuZC0+ZWNjLnNpemUgKyBvb2JfbGVuKTsKPj4gKwo+PiArCS8qICdvb2JidWYnIGlmIGFs cmVhZHkgc2hpZnRlZCB0byB0aGUgc3RhcnQgb2YgdW51c2VkIGFyZWEuICovCj4+ICsJbWVtY3B5 KG9vYnRhaWwsIG9vYmJ1ZiwgbXRkLT5vb2JzaXplIC0gbmFuZC0+ZWNjLnN0ZXBzICogb29iX2xl bik7Cj4+ICB9Cj4+ICAKPj4gIHN0YXRpYyBpbnQgbWVzb25fbmZjX3F1ZXVlX3JiKHN0cnVjdCBt ZXNvbl9uZmMgKm5mYywgaW50IHRpbWVvdXRfbXMsIGludCBjbWRfcmVhZDApCj4+IEBAIC00MzYs MjUgKzQ2NCwxMiBAQCBzdGF0aWMgdm9pZCBtZXNvbl9uZmNfc2V0X3VzZXJfYnl0ZShzdHJ1Y3Qg bmFuZF9jaGlwICpuYW5kLCB1OCAqb29iX2J1ZikKPj4gIHsKPj4gIAlzdHJ1Y3QgbWVzb25fbmZj X25hbmRfY2hpcCAqbWVzb25fY2hpcCA9IHRvX21lc29uX25hbmQobmFuZCk7Cj4+ICAJX19sZTY0 ICppbmZvOwo+PiAtCWludCBpLCBjb3VudDsKPj4gLQo+PiAtCWZvciAoaSA9IDAsIGNvdW50ID0g MDsgaSA8IG5hbmQtPmVjYy5zdGVwczsgaSsrLCBjb3VudCArPSAyKSB7Cj4+IC0JCWluZm8gPSAm bWVzb25fY2hpcC0+aW5mb19idWZbaV07Cj4+IC0JCSppbmZvIHw9IG9vYl9idWZbY291bnRdOwo+ PiAtCQkqaW5mbyB8PSBvb2JfYnVmW2NvdW50ICsgMV0gPDwgODsKPj4gLQl9Cj4+IC19Cj4+IC0K Pj4gLXN0YXRpYyB2b2lkIG1lc29uX25mY19nZXRfdXNlcl9ieXRlKHN0cnVjdCBuYW5kX2NoaXAg Km5hbmQsIHU4ICpvb2JfYnVmKQo+PiAtewo+PiAtCXN0cnVjdCBtZXNvbl9uZmNfbmFuZF9jaGlw ICptZXNvbl9jaGlwID0gdG9fbWVzb25fbmFuZChuYW5kKTsKPj4gLQlfX2xlNjQgKmluZm87Cj4+ IC0JaW50IGksIGNvdW50Owo+PiArCWludCBpOwo+PiAgCj4+IC0JZm9yIChpID0gMCwgY291bnQg PSAwOyBpIDwgbmFuZC0+ZWNjLnN0ZXBzOyBpKyssIGNvdW50ICs9IDIpIHsKPj4gKwlmb3IgKGkg PSAwOyBpIDwgbmFuZC0+ZWNjLnN0ZXBzOyBpKyspIHsKPj4gIAkJaW5mbyA9ICZtZXNvbl9jaGlw LT5pbmZvX2J1ZltpXTsKPj4gLQkJb29iX2J1Zltjb3VudF0gPSAqaW5mbzsKPj4gLQkJb29iX2J1 Zltjb3VudCArIDFdID0gKmluZm8gPj4gODsKPj4gKwkJLyogQWx3YXlzIGlnbm9yZSB1c2VyIGJ5 dGVzIHByb2dyYW1taW5nLiAqLwo+IAo+IFdoeT8KCkkgdGhpbmsgY29tbWVudCBtZXNzYWdlIGlz IHdyb25nIGEgbGl0dGxlIGJpdC4gSGVyZSAidXNlciBieXRlcyIgYXJlCnVzZXIgYnl0ZXMgcHJv dGVjdGVkIGJ5IEVDQyAoZS5nLiBsb2NhdGlvbiBvZiB0aGVzZSBieXRlcyBkaWZmZXJzIGZyb20g bmV3Ck9PQiBsYXlvdXQgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoKS4gRHVyaW5nIHBhZ2Ugd3Jp dGUgdGhpcyBoYXJkd2FyZQphbHdheXMgd3JpdGVzIHRoZXNlIGJ5dGVzIGFsb25nIHdpdGggZGF0 YS4gQnV0LCBuZXcgT09CIGxheW91dCBhbHdheXMgaWdub3Jlcwp0aGVzZSA0IGJ5dGVzLCBzbyBz ZXQgdGhlbSB0byAweEZGIGFsd2F5cy4KCj4gCj4gQWxzbywgbWF5YmUgSSBzaG91bGQgbWVudGlv biB0aGUgaGVscGVyczoKPiBtdGRfb29ibGF5b3V0X2dldF9lY2NieXRlcyBhbmQgY28KPiBUaGV5 IGFyZSB2ZXJ5IHVzZWZ1bCB0byBkZWFsIHdpdGggT09CIGJ5dGVzLiBFdmVyeXRoaW5nIHNlZW1z IGV4dHJlbWVseQo+IGhhcmRjb2RlZCBpbiB0aGlzIGRyaXZlciwgd2hpbGUgdGhlIHVzZXIgY2Fu IHR1bmUgcmVhZC93cml0ZSBPT0IKPiBvcGVyYXRpb25zLgoKVGhhbmtzIGZvciBkZXRhaWxzLCBJ SVVDIHRoZXNlIGhlbHBlcnMgd2lsbCB3b3JrIGNvcnJlY3RseSB3aXRoIHRoaXMgZHJpdmVyLgpX aGF0IG1lYW5zICJ0dW5lIiBoZXJlPwoKPiAKPj4gKwkJKmluZm8gfD0gMHhmZmZmOwo+PiAgCX0K Pj4gIH0KPj4gIAo+PiBAQCAtNjk4LDE4ICs3MTMsOTIgQEAgc3RhdGljIGludCBtZXNvbl9uZmNf d3JpdGVfcGFnZV9yYXcoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgY29uc3QgdTggKmJ1ZiwKPj4g IAlyZXR1cm4gbWVzb25fbmZjX3dyaXRlX3BhZ2Vfc3ViKG5hbmQsIHBhZ2UsIDEpOwo+PiAgfQo+ PiAgCj4+ICtzdGF0aWMgdTMyIG1lc29uX25mY19nZXRfb29iX2J5dGVzKHN0cnVjdCBuYW5kX2No aXAgKm5hbmQpCj4+ICt7Cj4+ICsJc3RydWN0IG10ZF9pbmZvICptdGQgPSBuYW5kX3RvX210ZChu YW5kKTsKPj4gKwo+PiArCXJldHVybiBtdGQtPm9vYnNpemUgLSBuYW5kLT5lY2Muc3RlcHMgKiBO RkNfT09CX1BFUl9FQ0MobmFuZCk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgX19tZXNvbl9u ZmNfd3JpdGVfb29iKHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIGludCBwYWdlLCB1OCAqb29iX2J1 ZikKPj4gK3sKPj4gKwlzdHJ1Y3QgbWVzb25fbmZjX25hbmRfY2hpcCAqbWVzb25fY2hpcCA9IHRv X21lc29uX25hbmQobmFuZCk7Cj4+ICsJc3RydWN0IG10ZF9pbmZvICptdGQgPSBuYW5kX3RvX210 ZChuYW5kKTsKPj4gKwl1MzIgcGFnZV9zaXplID0gbXRkLT53cml0ZXNpemUgKyBtdGQtPm9vYnNp emU7Cj4+ICsJdTMyIG9vYl9ieXRlcyA9IG1lc29uX25mY19nZXRfb29iX2J5dGVzKG5hbmQpOwo+ PiArCWludCByZXQ7Cj4+ICsKPj4gKwlpZiAoIW9vYl9ieXRlcykKPj4gKwkJcmV0dXJuIDA7Cj4+ ICsKPj4gKwlyZXQgPSBuYW5kX3Byb2dfcGFnZV9iZWdpbl9vcChuYW5kLCBwYWdlLCAwLCBOVUxM LCAwKTsKPj4gKwlpZiAocmV0KQo+PiArCQlyZXR1cm4gcmV0Owo+PiArCj4+ICsJbWVtY3B5KG1l c29uX2NoaXAtPm9vYl9idWYsIG9vYl9idWYgKyAobXRkLT5vb2JzaXplIC0gb29iX2J5dGVzKSwK Pj4gKwkgICAgICAgb29iX2J5dGVzKTsKPj4gKwo+PiArCXJldCA9IG5hbmRfY2hhbmdlX3dyaXRl X2NvbHVtbl9vcChuYW5kLCBwYWdlX3NpemUgLSBvb2JfYnl0ZXMsCj4+ICsJCQkJCSAgbWVzb25f Y2hpcC0+b29iX2J1ZiwKPj4gKwkJCQkJICBvb2JfYnl0ZXMsIGZhbHNlKTsKPj4gKwlpZiAocmV0 KQo+PiArCQlyZXR1cm4gcmV0Owo+PiArCj4+ICsJcmV0dXJuIG5hbmRfcHJvZ19wYWdlX2VuZF9v cChuYW5kKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBfX21lc29uX25mY19yZWFkX29vYihz dHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCBpbnQgcGFnZSwKPj4gKwkJCQl1OCAqb29iX2J1ZikKPj4g K3sKPj4gKwlzdHJ1Y3QgbWVzb25fbmZjX25hbmRfY2hpcCAqbWVzb25fY2hpcCA9IHRvX21lc29u X25hbmQobmFuZCk7Cj4+ICsJc3RydWN0IG10ZF9pbmZvICptdGQgPSBuYW5kX3RvX210ZChuYW5k KTsKPj4gKwl1MzIgb29iX2J5dGVzOwo+PiArCXUzMiBwYWdlX3NpemU7Cj4+ICsJaW50IHJldDsK Pj4gKwo+PiArCW9vYl9ieXRlcyA9IG1lc29uX25mY19nZXRfb29iX2J5dGVzKG5hbmQpOwo+PiAr Cj4+ICsJaWYgKCFvb2JfYnl0ZXMpCj4+ICsJCXJldHVybiAwOwo+PiArCj4+ICsJcmV0ID0gbmFu ZF9yZWFkX3BhZ2Vfb3AobmFuZCwgcGFnZSwgMCwgTlVMTCwgMCk7Cj4+ICsJaWYgKHJldCkKPj4g KwkJcmV0dXJuIHJldDsKPj4gKwo+PiArCXBhZ2Vfc2l6ZSA9IG10ZC0+d3JpdGVzaXplICsgbXRk LT5vb2JzaXplOwo+PiArCj4+ICsJcmV0ID0gbmFuZF9jaGFuZ2VfcmVhZF9jb2x1bW5fb3AobmFu ZCwgcGFnZV9zaXplIC0gb29iX2J5dGVzLAo+PiArCQkJCQkgbWVzb25fY2hpcC0+b29iX2J1ZiwK Pj4gKwkJCQkJIG9vYl9ieXRlcywgZmFsc2UpOwo+PiArCj4+ICsJaWYgKCFyZXQpCj4+ICsJCW1l bWNweShvb2JfYnVmICsgKG10ZC0+b29ic2l6ZSAtIG9vYl9ieXRlcyksCj4+ICsJCSAgICAgICBt ZXNvbl9jaGlwLT5vb2JfYnVmLAo+PiArCQkgICAgICAgb29iX2J5dGVzKTsKPj4gKwo+PiArCXJl dHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gIHN0YXRpYyBpbnQgbWVzb25fbmZjX3dyaXRlX3BhZ2Vf aHdlY2Moc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwKPj4gIAkJCQkgICAgICBjb25zdCB1OCAqYnVm LCBpbnQgb29iX3JlcXVpcmVkLCBpbnQgcGFnZSkKPj4gIHsKPj4gIAlzdHJ1Y3QgbXRkX2luZm8g Km10ZCA9IG5hbmRfdG9fbXRkKG5hbmQpOwo+PiAgCXN0cnVjdCBtZXNvbl9uZmNfbmFuZF9jaGlw ICptZXNvbl9jaGlwID0gdG9fbWVzb25fbmFuZChuYW5kKTsKPj4gIAl1OCAqb29iX2J1ZiA9IG5h bmQtPm9vYl9wb2k7Cj4+ICsJaW50IHJldDsKPj4gIAo+PiAgCW1lbWNweShtZXNvbl9jaGlwLT5k YXRhX2J1ZiwgYnVmLCBtdGQtPndyaXRlc2l6ZSk7Cj4+ICAJbWVtc2V0KG1lc29uX2NoaXAtPmlu Zm9fYnVmLCAwLCBuYW5kLT5lY2Muc3RlcHMgKiBQRVJfSU5GT19CWVRFKTsKPj4gIAltZXNvbl9u ZmNfc2V0X3VzZXJfYnl0ZShuYW5kLCBvb2JfYnVmKTsKPj4gIAo+PiAtCXJldHVybiBtZXNvbl9u ZmNfd3JpdGVfcGFnZV9zdWIobmFuZCwgcGFnZSwgMCk7Cj4+ICsJcmV0ID0gbWVzb25fbmZjX3dy aXRlX3BhZ2Vfc3ViKG5hbmQsIHBhZ2UsIDApOwo+PiArCWlmIChyZXQpCj4+ICsJCXJldHVybiBy ZXQ7Cj4+ICsKPj4gKwlpZiAob29iX3JlcXVpcmVkKQo+PiArCQlyZXQgPSBfX21lc29uX25mY193 cml0ZV9vb2IobmFuZCwgcGFnZSwgb29iX2J1Zik7Cj4gCj4gWW91IHNob3VsZCBwcm92aWRlIGFs bCB0aGUgZGF0YSBpbmNsdWRpbmcgT09CIGJ5dGVzIGluIGEgc2luZ2xlIHdyaXRlCj4gY2FsbCwg b3RoZXJ3aXNlIHlvdSBwZXJmb3JtIHR3byB3cml0ZXMgb24gdGhlIHNhbWUgcGFnZSwgdGhhdCdz IG5vdAo+IHdoYXQgdGhpcyBoZWxwZXIgaXMgZXhwZWN0ZWQgdG8gZG8uCgpJIHNlZSwgc28gSSBu ZWVkIHRvIGNoZWNrICdvb2JfcmVxdWlyZWQnIGhlcmUgYmVmb3JlIHByb2dyYW1taW5nIHBhZ2Ug ZGF0YT8KSWYgaXQgaXMgc2V0IC0+IHBsYWNlIE9PQiBkYXRhIHRvIERNQSBidWZmZXIgYW5kIHRo ZW4gY2FsbCBQQUdFUFJPRyBvbmNlPwoKPiAKPj4gKwo+PiArCXJldHVybiByZXQ7Cj4+ICB9Cj4+ ICAKPj4gIHN0YXRpYyB2b2lkIG1lc29uX25mY19jaGVja19lY2NfcGFnZXNfdmFsaWQoc3RydWN0 IG1lc29uX25mYyAqbmZjLAo+PiBAQCAtNzgzLDcgKzg3Miw3IEBAIHN0YXRpYyBpbnQgbWVzb25f bmZjX3JlYWRfcGFnZV9yYXcoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgdTggKmJ1ZiwKPj4gIAlp ZiAocmV0KQo+PiAgCQlyZXR1cm4gcmV0Owo+PiAgCj4+IC0JbWVzb25fbmZjX2dldF9kYXRhX29v YihuYW5kLCBidWYsIG9vYl9idWYpOwo+PiArCW1lc29uX25mY19nZXRfZGF0YV9vb2IobmFuZCwg YnVmLCBvb2JfcmVxdWlyZWQgPyBvb2JfYnVmIDogTlVMTCk7Cj4+ICAKPj4gIAlyZXR1cm4gMDsK Pj4gIH0KPj4gQEAgLTgwMywxMiArODkyLDEyIEBAIHN0YXRpYyBpbnQgbWVzb25fbmZjX3JlYWRf cGFnZV9od2VjYyhzdHJ1Y3QgbmFuZF9jaGlwICpuYW5kLCB1OCAqYnVmLAo+PiAgCWlmIChyZXQp Cj4+ICAJCXJldHVybiByZXQ7Cj4+ICAKPj4gLQltZXNvbl9uZmNfZ2V0X3VzZXJfYnl0ZShuYW5k LCBvb2JfYnVmKTsKPj4gIAlyZXQgPSBtZXNvbl9uZmNfZWNjX2NvcnJlY3QobmFuZCwgJmJpdGZs aXBzLCAmY29ycmVjdF9iaXRtYXApOwo+PiAgCWlmIChyZXQgPT0gRUNDX0NIRUNLX1JFVFVSTl9G Rikgewo+PiAgCQlpZiAoYnVmKQo+PiAgCQkJbWVtc2V0KGJ1ZiwgMHhmZiwgbXRkLT53cml0ZXNp emUpOwo+PiAgCQltZW1zZXQob29iX2J1ZiwgMHhmZiwgbXRkLT5vb2JzaXplKTsKPj4gKwkJcmV0 dXJuIGJpdGZsaXBzOwo+IAo+IFRoYXQgaXMgc29tZXRoaW5nIGVsc2UgPT4gb3RoZXIgZml4ID0+ IG90aGVyIHBhdGNoPwoKSWRlYSBvZiB0aGlzICdyZXR1cm4nIGlzIHRoYXQgd2hlbiByZWFkIGZh aWxzLCB3ZSByZXR1cm4gZnJvbSB0aGlzIGZ1bmN0aW9uCndpdGhvdXQgcmVhZGluZyBPT0IgYmVs b3cuCgo+IAo+PiAgCX0gZWxzZSBpZiAocmV0IDwgMCkgewo+PiAgCQlpZiAoKG5hbmQtPm9wdGlv bnMgJiBOQU5EX05FRURfU0NSQU1CTElORykgfHwgIWJ1Zikgewo+PiAgCQkJbXRkLT5lY2Nfc3Rh dHMuZmFpbGVkKys7Cj4+IEBAIC04MjAsMTIgKzkwOSwxNCBAQCBzdGF0aWMgaW50IG1lc29uX25m Y19yZWFkX3BhZ2VfaHdlY2Moc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgdTggKmJ1ZiwKPj4gIAo+ PiAgCQlmb3IgKGkgPSAwOyBpIDwgbmFuZC0+ZWNjLnN0ZXBzIDsgaSsrKSB7Cj4+ICAJCQl1OCAq ZGF0YSA9IGJ1ZiArIGkgKiBlY2MtPnNpemU7Cj4+IC0JCQl1OCAqb29iID0gbmFuZC0+b29iX3Bv aSArIGkgKiAoZWNjLT5ieXRlcyArIDIpOwo+PiArCQkJdTggKm9vYiA9IG5hbmQtPm9vYl9wb2kg KyBpICogTkZDX09PQl9QRVJfRUNDKG5hbmQpOwo+PiAgCj4+ICAJCQlpZiAoY29ycmVjdF9iaXRt YXAgJiBCSVRfVUxMKGkpKQo+PiAgCQkJCWNvbnRpbnVlOwo+PiArCj4+ICAJCQlyZXQgPSBuYW5k X2NoZWNrX2VyYXNlZF9lY2NfY2h1bmsoZGF0YSwJZWNjLT5zaXplLAo+PiAtCQkJCQkJCSAgb29i LCBlY2MtPmJ5dGVzICsgMiwKPj4gKwkJCQkJCQkgIG9vYiwKPj4gKwkJCQkJCQkgIE5GQ19PT0Jf UEVSX0VDQyhuYW5kKSwKPj4gIAkJCQkJCQkgIE5VTEwsIDAsCj4+ICAJCQkJCQkJICBlY2MtPnN0 cmVuZ3RoKTsKPj4gIAkJCWlmIChyZXQgPCAwKSB7Cj4+IEBAIC04MzksMTcgKzkzMCwzMCBAQCBz dGF0aWMgaW50IG1lc29uX25mY19yZWFkX3BhZ2VfaHdlY2Moc3RydWN0IG5hbmRfY2hpcCAqbmFu ZCwgdTggKmJ1ZiwKPj4gIAkJbWVtY3B5KGJ1ZiwgbWVzb25fY2hpcC0+ZGF0YV9idWYsIG10ZC0+ d3JpdGVzaXplKTsKPj4gIAl9Cj4+ICAKPj4gKwlpZiAob29iX3JlcXVpcmVkKQo+PiArCQlfX21l c29uX25mY19yZWFkX29vYihuYW5kLCBwYWdlLCBvb2JfYnVmKTsKPiAKPiBJbiB0aGUgc3RhbmRh bG9uZSAicmVhZF9vb2IiIGhvb2ssIHlvdSBoYXZlIHRvIHNlbmQgYSBSRUFEMCBjb21tYW5kLAo+ IGJ1dCBub3Qgd2hlbiB5b3UgYXJlIGluIHRoZSByZWFkX3BhZ2UgaG9vay4gSXQgaXMgYSBiaWcg d2FzdGUgb2YgdGltZS4KCklJVUMgYXBwcm9hY2ggaGVyZSBtdXN0IGJlIGV4YWN0bHkgdGhlIHNh bWUgYXMgaW4gd3JpdGU/IEUuZy4gaSBuZWVkIHRvCnNlbmQgc2luZ2xlIFJFQUQwIGFuZCB0aGVu IGZpbGwgcHJvdmlkZWQgT09CIGJ1ZmZlciBpZiBuZWVkZWQ/Cgo+IAo+PiArCj4+ICAJcmV0dXJu IGJpdGZsaXBzOwo+PiAgfQo+PiAgCj4+ICBzdGF0aWMgaW50IG1lc29uX25mY19yZWFkX29vYl9y YXcoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCwgaW50IHBhZ2UpCj4+ICB7Cj4+IC0JcmV0dXJuIG1l c29uX25mY19yZWFkX3BhZ2VfcmF3KG5hbmQsIE5VTEwsIDEsIHBhZ2UpOwo+PiArCXJldHVybiBf X21lc29uX25mY19yZWFkX29vYihuYW5kLCBwYWdlLCBuYW5kLT5vb2JfcG9pKTsKPj4gIH0KPj4g IAo+PiAgc3RhdGljIGludCBtZXNvbl9uZmNfcmVhZF9vb2Ioc3RydWN0IG5hbmRfY2hpcCAqbmFu ZCwgaW50IHBhZ2UpCj4+ICB7Cj4+IC0JcmV0dXJuIG1lc29uX25mY19yZWFkX3BhZ2VfaHdlY2Mo bmFuZCwgTlVMTCwgMSwgcGFnZSk7Cj4+ICsJcmV0dXJuIF9fbWVzb25fbmZjX3JlYWRfb29iKG5h bmQsIHBhZ2UsIG5hbmQtPm9vYl9wb2kpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IG1lc29u X25mY193cml0ZV9vb2JfcmF3KHN0cnVjdCBuYW5kX2NoaXAgKm5hbmQsIGludCBwYWdlKQo+PiAr ewo+PiArCXJldHVybiBfX21lc29uX25mY193cml0ZV9vb2IobmFuZCwgcGFnZSwgbmFuZC0+b29i X3BvaSk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgbWVzb25fbmZjX3dyaXRlX29vYihzdHJ1 Y3QgbmFuZF9jaGlwICpuYW5kLCBpbnQgcGFnZSkKPj4gK3sKPj4gKwlyZXR1cm4gX19tZXNvbl9u ZmNfd3JpdGVfb29iKG5hbmQsIHBhZ2UsIG5hbmQtPm9vYl9wb2kpOwo+IAo+IERvIHdlIHJlYWxs eSBuZWVkIHRoZXNlIGluZGlyZWN0aW9ucz8KClJpZ2h0LCBJIHRoaW5rIEkgY2FuIHVzZSBvbmx5 IG9uZSBmdW5jdGlvbiBmb3IgT09CIHdyaXRlIGluIGJvdGggRUNDIGFuZCByYXcgbW9kZXMuCgo+ IAo+PiAgfQo+PiAgCj4+ICBzdGF0aWMgYm9vbCBtZXNvbl9uZmNfaXNfYnVmZmVyX2RtYV9zYWZl KGNvbnN0IHZvaWQgKmJ1ZmZlcikKPj4gQEAgLTk4Miw3ICsxMDg2LDcgQEAgc3RhdGljIGludCBt ZXNvbl9vb2JsYXlvdXRfZWNjKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgc2VjdGlvbiwKPj4g IAlpZiAoc2VjdGlvbiA+PSBuYW5kLT5lY2Muc3RlcHMpCj4+ICAJCXJldHVybiAtRVJBTkdFOwo+ PiAgCj4+IC0Jb29icmVnaW9uLT5vZmZzZXQgPSAgMiArIChzZWN0aW9uICogKDIgKyBuYW5kLT5l Y2MuYnl0ZXMpKTsKPj4gKwlvb2JyZWdpb24tPm9mZnNldCA9IE5GQ19VU0VSX0JZVEVTICsgc2Vj dGlvbiAqIE5GQ19PT0JfUEVSX0VDQyhuYW5kKTsKPiAKPiBUaGUgKCkgYXJlIHN0aWxsIG5lZWRl ZCBhcm91bmQgdGhlICcqJwo+IAo+PiAgCW9vYnJlZ2lvbi0+bGVuZ3RoID0gbmFuZC0+ZWNjLmJ5 dGVzOwo+PiAgCj4+ICAJcmV0dXJuIDA7Cj4+IEBAIC05OTIsMTIgKzEwOTYsMTYgQEAgc3RhdGlj IGludCBtZXNvbl9vb2JsYXlvdXRfZnJlZShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgaW50IHNlY3Rp b24sCj4+ICAJCQkJc3RydWN0IG10ZF9vb2JfcmVnaW9uICpvb2JyZWdpb24pCj4+ICB7Cj4+ICAJ c3RydWN0IG5hbmRfY2hpcCAqbmFuZCA9IG10ZF90b19uYW5kKG10ZCk7Cj4+ICsJdTMyIG9vYl9i eXRlcyA9IG1lc29uX25mY19nZXRfb29iX2J5dGVzKG5hbmQpOwo+PiAgCj4+ICAJaWYgKHNlY3Rp b24gPj0gbmFuZC0+ZWNjLnN0ZXBzKQo+PiAgCQlyZXR1cm4gLUVSQU5HRTsKPj4gIAo+PiAtCW9v YnJlZ2lvbi0+b2Zmc2V0ID0gc2VjdGlvbiAqICgyICsgbmFuZC0+ZWNjLmJ5dGVzKTsKPj4gLQlv b2JyZWdpb24tPmxlbmd0aCA9IDI7Cj4+ICsJLyogU3BsaXQgcmVzdCBvZiBPT0IgYXJlYSAobm90 IGNvdmVyZWQgYnkgRUNDIGVuZ2luZSkgcGVyIGVhY2gKPj4gKwkgKiBFQ0Mgc2VjdGlvbi4gVGhp cyB3aWxsIGJlIE9PQiBkYXRhIGF2YWlsYWJsZSB0byB1c2VyLgo+PiArCSAqLwo+PiArCW9vYnJl Z2lvbi0+b2Zmc2V0ID0gKHNlY3Rpb24gKyBuYW5kLT5lY2Muc3RlcHMpICogTkZDX09PQl9QRVJf RUNDKG5hbmQpOwo+PiArCW9vYnJlZ2lvbi0+bGVuZ3RoID0gb29iX2J5dGVzIC8gbmFuZC0+ZWNj LnN0ZXBzOwo+PiAgCj4+ICAJcmV0dXJuIDA7Cj4+ICB9Cj4+IEBAIC0xMTg0LDYgKzEyOTIsOSBA QCBzdGF0aWMgaW50IG1lc29uX25hbmRfYmNoX21vZGUoc3RydWN0IG5hbmRfY2hpcCAqbmFuZCkK Pj4gIAo+PiAgc3RhdGljIHZvaWQgbWVzb25fbmFuZF9kZXRhY2hfY2hpcChzdHJ1Y3QgbmFuZF9j aGlwICpuYW5kKQo+PiAgewo+PiArCXN0cnVjdCBtZXNvbl9uZmNfbmFuZF9jaGlwICptZXNvbl9j aGlwID0gdG9fbWVzb25fbmFuZChuYW5kKTsKPj4gKwo+PiArCWtmcmVlKG1lc29uX2NoaXAtPm9v Yl9idWYpOwo+PiAgCW1lc29uX25mY19mcmVlX2J1ZmZlcihuYW5kKTsKPj4gIH0KPj4gIAo+PiBA QCAtMTIyNSw5ICsxMzM2LDkgQEAgc3RhdGljIGludCBtZXNvbl9uYW5kX2F0dGFjaF9jaGlwKHN0 cnVjdCBuYW5kX2NoaXAgKm5hbmQpCj4+ICAJbmFuZC0+ZWNjLmVuZ2luZV90eXBlID0gTkFORF9F Q0NfRU5HSU5FX1RZUEVfT05fSE9TVDsKPj4gIAluYW5kLT5lY2Mud3JpdGVfcGFnZV9yYXcgPSBt ZXNvbl9uZmNfd3JpdGVfcGFnZV9yYXc7Cj4+ICAJbmFuZC0+ZWNjLndyaXRlX3BhZ2UgPSBtZXNv bl9uZmNfd3JpdGVfcGFnZV9od2VjYzsKPj4gLQluYW5kLT5lY2Mud3JpdGVfb29iX3JhdyA9IG5h bmRfd3JpdGVfb29iX3N0ZDsKPj4gLQluYW5kLT5lY2Mud3JpdGVfb29iID0gbmFuZF93cml0ZV9v b2Jfc3RkOwo+PiAgCj4+ICsJbmFuZC0+ZWNjLndyaXRlX29vYl9yYXcgPSBtZXNvbl9uZmNfd3Jp dGVfb29iX3JhdzsKPj4gKwluYW5kLT5lY2Mud3JpdGVfb29iID0gbWVzb25fbmZjX3dyaXRlX29v YjsKPiAKPiBBY3R1YWxseSBpZiB5b3UgZGVmaW5lIHRoZSByaWdodCBPT0IgbGF5b3V0cywgYXJl IHRoZXNlIHJlYWxseSBuZWVkZWQKPiA/PyBJIHdvdWxkIGV4cGVjdCB0aGUgcmlnaHQgYnl0ZXMg dG8gYmUgcGlja2VkIHVwIGJ5IHRoZSBkZWZhdWx0Cj4gaW1wbGVtZW50YXRpb24uIEkgc2VlIG5v dGhpbmcgc3BlY2lmaWMgaW4geW91ciBjdXJyZW50IGltcGxlbWVudGF0aW9uPwoKWW91IG1lYW4g dG8gdXNlICduYW5kX3dyaXRlX29vYl9zdGQoKSc/IElmIHNvLCBJIHRoaW5rIGl0IHdvbid0IHdv cmssCmJlY2F1c2UgaXQgdHJpZXMgdG8gd3JpdGUgT09CIGRhdGEgcmlnaHQgYWZ0ZXIgJ210ZC0+ d3JpdGVzaXplJywgYnV0CnBhZ2UgbGF5b3V0IGZvciB0aGlzIGNvbnRyb2xsZXIgaXMgbGlrZSB0 aGlzOgpbICAgICAgIDEwMjQgYnl0ZXMgb2YgZGF0YSAgICAgICAgXQpbIDE0IGJ5dGVzIEVDQyAr IDIgYnl0ZXMgZm9yIHVzZXIgXSA8LSB3aXRoIG5ldyBsYXlvdXQgd2UgZG9uJ3QgdG91Y2ggdGhl c2UgMiBieXRlcwpbICAgICAgIDEwMjQgYnl0ZXMgb2YgZGF0YSAgICAgICAgXQpbIDE0IGJ5dGVz IEVDQyArIDIgYnl0ZXMgZm9yIHVzZXIgXSA8LSB3aXRoIG5ldyBsYXlvdXQgd2UgZG9uJ3QgdG91 Y2ggdGhlc2UgMiBieXRlcwpbICAgICAgMzIgYnl0ZXMgb2YgdXNlciBieXRlcyAgICAgXSA8LSB3 ZSB1c2UgdGhlcmUgMzIgYnl0ZXMgYXMgZnJlZSh1c2VyKSBieXRlcyBpbiBPT0IKClNvIHdpdGgg J210ZC0+d3JpdGVzaXplJyBvZiAyMDQ4IHdlIHdvbid0IGdldCBpbnRvIGxhc3QgMzIgYnl0ZXMg aW4gdGhlIHBpY3R1cmUgYWJvdmUuCkknbSBub3QgZ29vdCBpbiBOQU5EL01URCBhcmVhLCBidXQg SSB0aGluayB0aGF0IHdoeSBpIG5lZWQgc3BlY2lhbCBPT0IgYWNjZXNzIGNhbGxiYWNrcy4KQWxz byBpbiBwcmV2aW91cyBwYXRjaGVzIEBMaWFuZyBzYWlkLCB0aGF0IGRlZmF1bHQgT09CIHJlYWQv d3JpdGUgZnVuY3Rpb25zIHdvbid0IHdvcmsKb24gdGhpcyBjb250cm9sbGVyIGFuZCBpdCBpcyB3 cm9uZyB0byB1c2UgdGhlbSBpbiBjdXJyZW50bHkgbWVyZ2VkIGRyaXZlci4KCj4gCj4+ICAJbmFu ZC0+ZWNjLnJlYWRfcGFnZV9yYXcgPSBtZXNvbl9uZmNfcmVhZF9wYWdlX3JhdzsKPj4gIAluYW5k LT5lY2MucmVhZF9wYWdlID0gbWVzb25fbmZjX3JlYWRfcGFnZV9od2VjYzsKPj4gIAluYW5kLT5l Y2MucmVhZF9vb2JfcmF3ID0gbWVzb25fbmZjX3JlYWRfb29iX3JhdzsKPj4gQEAgLTEyMzcsOSAr MTM0OCwxNiBAQCBzdGF0aWMgaW50IG1lc29uX25hbmRfYXR0YWNoX2NoaXAoc3RydWN0IG5hbmRf Y2hpcCAqbmFuZCkKPj4gIAkJZGV2X2VycihuZmMtPmRldiwgIjE2Yml0cyBidXMgd2lkdGggbm90 IHN1cHBvcnRlZCIpOwo+PiAgCQlyZXR1cm4gLUVJTlZBTDsKPj4gIAl9Cj4+ICsKPj4gKwltZXNv bl9jaGlwLT5vb2JfYnVmID0ga21hbGxvYyhuYW5kLT5lY2MuYnl0ZXMsIEdGUF9LRVJORUwpOwo+ IAo+IGRldm1fa21hbGxvYz8KCkFjawoKPiAKPj4gKwlpZiAoIW1lc29uX2NoaXAtPm9vYl9idWYp Cj4+ICsJCXJldHVybiAtRU5PTUVNOwo+PiArCj4+ICAJcmV0ID0gbWVzb25fY2hpcF9idWZmZXJf aW5pdChuYW5kKTsKPj4gLQlpZiAocmV0KQo+PiArCWlmIChyZXQpIHsKPj4gKwkJa2ZyZWUobWVz b25fY2hpcC0+b29iX2J1Zik7Cj4+ICAJCXJldHVybiAtRU5PTUVNOwo+PiArCX0KPj4gIAo+PiAg CXJldHVybiByZXQ7Cj4+ICB9Cj4gCj4gCj4gVGhhbmtzLAo+IE1pcXXDqGwKClRoYW5rcywgQXJz ZW5peQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlu dXgtYW1sb2dpYyBtYWlsaW5nIGxpc3QKbGludXgtYW1sb2dpY0BsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYW1sb2dp Ywo=