From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by sourceware.org (Postfix) with ESMTPS id 721EB3858292 for ; Tue, 5 Jul 2022 15:19:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 721EB3858292 Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 90C4E1FD78; Tue, 5 Jul 2022 15:19:50 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 55FA613A79; Tue, 5 Jul 2022 15:19:50 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id 1KXOEpZWxGLhFwAAMHmgww (envelope-from ); Tue, 05 Jul 2022 15:19:50 +0000 Content-Type: multipart/mixed; boundary="------------Pujl0gPHpzdsUqIlbfWCAlwX" Message-ID: <35591557-02e9-d87c-e07b-49919282666e@suse.de> Date: Tue, 5 Jul 2022 17:19:49 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.0 Subject: Re: [PATCH 5/5] [gdb/symtab] Fix data race on per_cu->lang Content-Language: en-US To: Tom Tromey Cc: gdb-patches@sourceware.org References: <20220629152914.13149-1-tdevries@suse.de> <20220629152914.13149-5-tdevries@suse.de> <877d4svih2.fsf@tromey.com> From: Tom de Vries In-Reply-To: <877d4svih2.fsf@tromey.com> X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_STOCKGEN, NICE_REPLY_A, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Jul 2022 15:19:56 -0000 This is a multi-part message in MIME format. --------------Pujl0gPHpzdsUqIlbfWCAlwX Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 7/4/22 20:30, Tom Tromey wrote: >>>>>> "Tom" == Tom de Vries writes: > Tom> Fix this by guarding the write with a lock. > > I would rather we avoid locks. Ideally the existing exclusion mechanism > should be made to work, but if that fails, perhaps we can use another > atomic. I gave a different approach a try: eliminating the field. That seems to work reasonably well, apart from one specific usage that I disabled (mentioned in commit message). I'm not sure this is a good idea though, but I thought I could at least post it. Currently testing. Thanks, - Tom --------------Pujl0gPHpzdsUqIlbfWCAlwX Content-Type: text/x-patch; charset=UTF-8; name="0002-gdb-symtab-Eliminate-per_cu-lang.patch" Content-Disposition: attachment; filename="0002-gdb-symtab-Eliminate-per_cu-lang.patch" Content-Transfer-Encoding: base64 W2dkYi9zeW10YWJdIEVsaW1pbmF0ZSBwZXJfY3UtPmxhbmcKClsgTm90ZTogd3JpdHRlbiBv biB0b3Agb2YgdGhpcyAoCmh0dHBzOi8vc291cmNld2FyZS5vcmcvcGlwZXJtYWlsL2dkYi1w YXRjaGVzLzIwMjItSnVseS8xOTA0NzYuaHRtbCApIHBhdGNoLiBdCgpFbGltaW5hdGUgdGhl IGZpZWxkIGR3YXJmMl9wZXJfY3VfZGF0YTo6bGFuZy4KCkZpeCBtb3N0IHVzZXMgYnkgcmVw bGFjaW5nIGN1LT5wZXJfY3UtPmxhbmcgKCkgd2l0aCBjdS0+bGFuZyAoKS4KClRoZSByZW1h aW5pbmcgdXNlcyBhcmUgaW4gdGhlIGNvb2tlZCBpbmRleCBjb2RlLiAgRml4IHRob3NlIGJ5 IHNvbWUgc29ydCBvZgpzaWRlLXRhYmxlIGFwcHJvYWNoLCB3aGVyZSB3ZSBkZWZpbmUgYSBu ZXcgc3RydWN0OgouLi4Kc3RydWN0IHBlcl9jdV9sYW5nCnsKICBkd2FyZjJfcGVyX2N1X2Rh dGEgKnBlcl9jdTsKICBlbnVtIGxhbmd1YWdlIGxhbmc7Cn07Ci4uLgphbmQgcmVwbGFjZSBk d2FyZjJfcGVyX2N1X2RhdGEgaGFuZGxpbmcgd2l0aCBwZXJfY3VfbGFuZyBoYW5kbGluZyBp biB0aGUgY29kZS4KCkluIG9yZGVyIG5vdCB0byBhbGxvY2F0ZSBpZGVudGljYWwgcGVyX2N1 X2xhbmcgb2JqZWN0cywgd2UgZW50ZXIgbmV3IGVudHJpZXMKaW4gYSBtYXAuICBNYWtpbmcg dGhlIG1hcCB0aHJlYWRfbG9jYWwgZml4ZXMgdGhlIGRhdGEgcmFjZXMgd2Ugc2V0IG91dCB0 byBmaXgKaW4gdGhlIGZpcnN0IHBsYWNlLgoKVGhlIG9ubHkgY2FzdWFsdHkgaXMgdGhpcyBj b2RlIGluIHByb2Nlc3NfaW1wb3J0ZWRfdW5pdF9kaWU6Ci4uLgogICAgICAvKiBXZSdyZSBp bXBvcnRpbmcgYSBDKysgY29tcGlsYXRpb24gdW5pdCB3aXRoIHRhZyBEV19UQUdfY29tcGls ZV91bml0CgkgaW50byBhbm90aGVyIGNvbXBpbGF0aW9uIHVuaXQsIGF0IHJvb3QgbGV2ZWwu ICBSZWdhcmQgdGhpcyBhcyBhIGhpbnQsCgkgYW5kIGlnbm9yZSBpdC4gICovCiAgICAgIGlm IChkaWUtPnBhcmVudCAmJiBkaWUtPnBhcmVudC0+cGFyZW50ID09IE5VTEwKCSAgJiYgcGVy X2N1LT51bml0X3R5cGUgKCkgPT0gRFdfVVRfY29tcGlsZQoJICAmJiBwZXJfY3UtPmxhbmcg KCkgPT0gbGFuZ3VhZ2VfY3BsdXMpCglyZXR1cm47Ci4uLgp3aGljaCBpcyBkaXNhYmxlZCBi ZWNhdXNlIGR3YXJmMl9maW5kX2NvbnRhaW5pbmdfY29tcF91bml0IHJldHVybnMgYQpkd2Fy ZjJfcGVyX2N1X2RhdGEgYW5kIGl0J3Mgbm90IGNsZWFyIGhvdyB0byBnZXQgYXQgdGhlIGxh bmd1YWdlIGZyb20KdGhlcmUuCgotLS0KIGdkYi9kd2FyZjIvY29va2VkLWluZGV4LmMgfCAg MjAgKysrLS0KIGdkYi9kd2FyZjIvY29va2VkLWluZGV4LmggfCAgMzkgKysrKysrLS0KIGdk Yi9kd2FyZjIvY3UuYyAgICAgICAgICAgfCAgIDIgKy0KIGdkYi9kd2FyZjIvY3UuaCAgICAg ICAgICAgfCAgIDcgKysKIGdkYi9kd2FyZjIvaW5kZXgtd3JpdGUuYyAgfCAgIDggKy0KIGdk Yi9kd2FyZjIvcmVhZC5jICAgICAgICAgfCAyMjMgKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZ2RiL2R3YXJmMi9yZWFkLmggICAgICAgICB8ICAy MSAtLS0tLQogNyBmaWxlcyBjaGFuZ2VkLCAxNjggaW5zZXJ0aW9ucygrKSwgMTUyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvY29va2VkLWluZGV4LmMgYi9nZGIv ZHdhcmYyL2Nvb2tlZC1pbmRleC5jCmluZGV4IGFkYjAwNDY2MDllLi43Zjk4YjMwMWM4ZiAx MDA2NDQKLS0tIGEvZ2RiL2R3YXJmMi9jb29rZWQtaW5kZXguYworKysgYi9nZGIvZHdhcmYy L2Nvb2tlZC1pbmRleC5jCkBAIC01NCw3ICs1NCw3IEBAIGNvb2tlZF9pbmRleF9lbnRyeTo6 ZnVsbF9uYW1lIChzdHJ1Y3Qgb2JzdGFjayAqc3RvcmFnZSkgY29uc3QKICAgICByZXR1cm4g Y2Fub25pY2FsOwogCiAgIGNvbnN0IGNoYXIgKnNlcCA9IG51bGxwdHI7Ci0gIHN3aXRjaCAo cGVyX2N1LT5sYW5nICgpKQorICBzd2l0Y2ggKG1fcGVyX2N1X2xhbmctPmxhbmcpCiAgICAg ewogICAgIGNhc2UgbGFuZ3VhZ2VfY3BsdXM6CiAgICAgY2FzZSBsYW5ndWFnZV9ydXN0OgpA QCAtOTQsMTcgKzk0LDE4IEBAIGNvbnN0IGNvb2tlZF9pbmRleF9lbnRyeSAqCiBjb29rZWRf aW5kZXg6OmFkZCAoc2VjdF9vZmZzZXQgZGllX29mZnNldCwgZW51bSBkd2FyZl90YWcgdGFn LAogCQkgICBjb29rZWRfaW5kZXhfZmxhZyBmbGFncywgY29uc3QgY2hhciAqbmFtZSwKIAkJ ICAgY29uc3QgY29va2VkX2luZGV4X2VudHJ5ICpwYXJlbnRfZW50cnksCi0JCSAgIGR3YXJm Ml9wZXJfY3VfZGF0YSAqcGVyX2N1KQorCQkgICBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9j dSwKKwkJICAgZW51bSBsYW5ndWFnZSBsYW5nKQogewogICBjb29rZWRfaW5kZXhfZW50cnkg KnJlc3VsdCA9IGNyZWF0ZSAoZGllX29mZnNldCwgdGFnLCBmbGFncywgbmFtZSwKLQkJCQkg ICAgICAgcGFyZW50X2VudHJ5LCBwZXJfY3UpOworCQkJCSAgICAgICBwYXJlbnRfZW50cnks IHBlcl9jdSwgbGFuZyk7CiAgIG1fZW50cmllcy5wdXNoX2JhY2sgKHJlc3VsdCk7CiAKICAg LyogQW4gZXhwbGljaXRseS10YWdnZWQgbWFpbiBwcm9ncmFtIHNob3VsZCBhbHdheXMgb3Zl cnJpZGUgdGhlCiAgICAgIGltcGxpY2l0ICJtYWluIiBkaXNjb3ZlcnkuICAqLwogICBpZiAo KGZsYWdzICYgSVNfTUFJTikgIT0gMCkKICAgICBtX21haW4gPSByZXN1bHQ7Ci0gIGVsc2Ug aWYgKHBlcl9jdS0+bGFuZyAoKSAhPSBsYW5ndWFnZV9hZGEKKyAgZWxzZSBpZiAobGFuZyAh PSBsYW5ndWFnZV9hZGEKIAkgICAmJiBtX21haW4gPT0gbnVsbHB0cgogCSAgICYmIHN0cmNt cCAobmFtZSwgIm1haW4iKSA9PSAwKQogICAgIG1fbWFpbiA9IHJlc3VsdDsKQEAgLTE0Niwx MyArMTQ3LDE0IEBAIGNvb2tlZF9pbmRleDo6aGFuZGxlX2duYXRfZW5jb2RlZF9lbnRyeSAo Y29va2VkX2luZGV4X2VudHJ5ICplbnRyeSwKICAgICAgIC8qIENVcyBhcmUgcHJvY2Vzc2Vk IGluIG9yZGVyLCBzbyB3ZSBvbmx5IG5lZWQgdG8gY2hlY2sgdGhlIG1vc3QKIAkgcmVjZW50 IGVudHJ5LiAgKi8KICAgICAgIGNvb2tlZF9pbmRleF9lbnRyeSAqbGFzdCA9IChjb29rZWRf aW5kZXhfZW50cnkgKikgKnNsb3Q7Ci0gICAgICBpZiAobGFzdCA9PSBudWxscHRyIHx8IGxh c3QtPnBlcl9jdSAhPSBlbnRyeS0+cGVyX2N1KQorICAgICAgaWYgKGxhc3QgPT0gbnVsbHB0 ciB8fCBsYXN0LT5tX3Blcl9jdV9sYW5nLT5wZXJfY3UgIT0gZW50cnktPm1fcGVyX2N1X2xh bmctPnBlcl9jdSkKIAl7CiAJICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPiBuZXdf bmFtZQogCSAgICA9IG1ha2VfdW5pcXVlX3hzdHJuZHVwIChuYW1lLmRhdGEgKCksIG5hbWUu bGVuZ3RoICgpKTsKIAkgIGxhc3QgPSBjcmVhdGUgKGVudHJ5LT5kaWVfb2Zmc2V0LCBEV19U QUdfbmFtZXNwYWNlLAogCQkJIDAsIG5ld19uYW1lLmdldCAoKSwgcGFyZW50LAotCQkJIGVu dHJ5LT5wZXJfY3UpOworCQkJIGVudHJ5LT5tX3Blcl9jdV9sYW5nLT5wZXJfY3UsCisJCQkg ZW50cnktPm1fcGVyX2N1X2xhbmctPmxhbmcpOwogCSAgbGFzdC0+Y2Fub25pY2FsID0gbGFz dC0+bmFtZTsKIAkgIG1fbmFtZXMucHVzaF9iYWNrIChzdGQ6Om1vdmUgKG5ld19uYW1lKSk7 CiAJICAqc2xvdCA9IGxhc3Q7CkBAIC0xOTYsMTMgKzE5OCwxMyBAQCBjb29rZWRfaW5kZXg6 OmRvX2ZpbmFsaXplICgpCiAgIGZvciAoY29va2VkX2luZGV4X2VudHJ5ICplbnRyeSA6IG1f ZW50cmllcykKICAgICB7CiAgICAgICBnZGJfYXNzZXJ0IChlbnRyeS0+Y2Fub25pY2FsID09 IG51bGxwdHIpOwotICAgICAgaWYgKChlbnRyeS0+cGVyX2N1LT5sYW5nICgpICE9IGxhbmd1 YWdlX2NwbHVzCi0JICAgJiYgZW50cnktPnBlcl9jdS0+bGFuZyAoKSAhPSBsYW5ndWFnZV9h ZGEpCisgICAgICBpZiAoKGVudHJ5LT5tX3Blcl9jdV9sYW5nLT5sYW5nICE9IGxhbmd1YWdl X2NwbHVzCisJICAgJiYgZW50cnktPm1fcGVyX2N1X2xhbmctPmxhbmcgIT0gbGFuZ3VhZ2Vf YWRhKQogCSAgfHwgKGVudHJ5LT5mbGFncyAmIElTX0xJTktBR0UpICE9IDApCiAJZW50cnkt PmNhbm9uaWNhbCA9IGVudHJ5LT5uYW1lOwogICAgICAgZWxzZQogCXsKLQkgIGlmIChlbnRy eS0+cGVyX2N1LT5sYW5nICgpID09IGxhbmd1YWdlX2FkYSkKKwkgIGlmIChlbnRyeS0+bV9w ZXJfY3VfbGFuZy0+bGFuZyA9PSBsYW5ndWFnZV9hZGEpCiAJICAgIHsKIAkgICAgICBnZGI6 OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPiBjYW5vbl9uYW1lCiAJCT0gaGFuZGxlX2duYXRf ZW5jb2RlZF9lbnRyeSAoZW50cnksIGduYXRfZW50cmllcy5nZXQgKCkpOwpkaWZmIC0tZ2l0 IGEvZ2RiL2R3YXJmMi9jb29rZWQtaW5kZXguaCBiL2dkYi9kd2FyZjIvY29va2VkLWluZGV4 LmgKaW5kZXggNDM5Y2JiMTlmYTcuLjc2MWI0ZDEyNjZhIDEwMDY0NAotLS0gYS9nZGIvZHdh cmYyL2Nvb2tlZC1pbmRleC5oCisrKyBiL2dkYi9kd2FyZjIvY29va2VkLWluZGV4LmgKQEAg LTM0LDkgKzM0LDIxIEBACiAjaW5jbHVkZSAiZHdhcmYyL21hcHBlZC1pbmRleC5oIgogI2lu Y2x1ZGUgImR3YXJmMi90YWcuaCIKICNpbmNsdWRlICJnZGJzdXBwb3J0L3JhbmdlLWNoYWlu LmgiCisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDxtYXA+CiAKIHN0cnVjdCBkd2Fy ZjJfcGVyX2N1X2RhdGE7CiAKK3N0cnVjdCBwZXJfY3VfbGFuZworeworICBwZXJfY3VfbGFu ZyAoZHdhcmYyX3Blcl9jdV9kYXRhICpfcGVyX2N1LCBlbnVtIGxhbmd1YWdlIF9sYW5nKQor ICAgIDogcGVyX2N1KF9wZXJfY3UpLCBsYW5nKF9sYW5nKQorICB7fQorCisgIGR3YXJmMl9w ZXJfY3VfZGF0YSAqcGVyX2N1OworICBlbnVtIGxhbmd1YWdlIGxhbmc7Cit9OworCiAvKiBG bGFncyB0aGF0IGRlc2NyaWJlIGFuIGVudHJ5IGluIHRoZSBpbmRleC4gICovCiBlbnVtIGNv b2tlZF9pbmRleF9mbGFnX2VudW0gOiB1bnNpZ25lZCBjaGFyCiB7CkBAIC02MywxNCArNzUs MjQgQEAgc3RydWN0IGNvb2tlZF9pbmRleF9lbnRyeSA6IHB1YmxpYyBhbGxvY2F0ZV9vbl9v YnN0YWNrCiAgIGNvb2tlZF9pbmRleF9lbnRyeSAoc2VjdF9vZmZzZXQgZGllX29mZnNldF8s IGVudW0gZHdhcmZfdGFnIHRhZ18sCiAJCSAgICAgIGNvb2tlZF9pbmRleF9mbGFnIGZsYWdz XywgY29uc3QgY2hhciAqbmFtZV8sCiAJCSAgICAgIGNvbnN0IGNvb2tlZF9pbmRleF9lbnRy eSAqcGFyZW50X2VudHJ5XywKLQkJICAgICAgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3Vf KQorCQkgICAgICBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdV8sCisJCSAgICAgIGVudW0g bGFuZ3VhZ2UgbGFuZ18pCiAgICAgOiBuYW1lIChuYW1lXyksCiAgICAgICB0YWcgKHRhZ18p LAogICAgICAgZmxhZ3MgKGZsYWdzXyksCiAgICAgICBkaWVfb2Zmc2V0IChkaWVfb2Zmc2V0 XyksCi0gICAgICBwYXJlbnRfZW50cnkgKHBhcmVudF9lbnRyeV8pLAotICAgICAgcGVyX2N1 IChwZXJfY3VfKQorICAgICAgcGFyZW50X2VudHJ5IChwYXJlbnRfZW50cnlfKQogICB7Cisg ICAgc3RhdGljIHRocmVhZF9sb2NhbCBzdGQ6Om1hcDxzdGQ6OnBhaXI8ZHdhcmYyX3Blcl9j dV9kYXRhICosIGVudW0gbGFuZ3VhZ2U+LCBwZXJfY3VfbGFuZyAqPiBtYXA7CisgICAgYXV0 byBpdCA9IG1hcC5maW5kIChzdGQ6Om1ha2VfcGFpciAocGVyX2N1XywgbGFuZ18pKTsKKyAg ICBpZiAoaXQgIT0gbWFwLmVuZCgpKQorICAgICAgeworCW1fcGVyX2N1X2xhbmcgPSBpdC0+ c2Vjb25kOworCXJldHVybjsKKyAgICAgIH0KKworICAgIG1fcGVyX2N1X2xhbmcgPSBuZXcg cGVyX2N1X2xhbmcgKHBlcl9jdV8sIGxhbmdfKTsKKyAgICBtYXBbc3RkOjptYWtlX3BhaXIg KHBlcl9jdV8sIGxhbmdfKV0gPSBtX3Blcl9jdV9sYW5nOwogICB9CiAKICAgLyogUmV0dXJu IHRydWUgaWYgdGhpcyBlbnRyeSBtYXRjaGVzIFNFQVJDSF9GTEFHUy4gICovCkBAIC0xNTQs NyArMTc2LDcgQEAgc3RydWN0IGNvb2tlZF9pbmRleF9lbnRyeSA6IHB1YmxpYyBhbGxvY2F0 ZV9vbl9vYnN0YWNrCiAgICAgIGNsYXNzLiAgKi8KICAgY29uc3QgY29va2VkX2luZGV4X2Vu dHJ5ICpwYXJlbnRfZW50cnk7CiAgIC8qIFRoZSBDVSBmcm9tIHdoaWNoIHRoaXMgZW50cnkg b3JpZ2luYXRlcy4gICovCi0gIGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1OworICBwZXJf Y3VfbGFuZyogbV9wZXJfY3VfbGFuZzsKIAogcHJpdmF0ZToKIApAQCAtMTgyLDcgKzIwNCw4 IEBAIGNsYXNzIGNvb2tlZF9pbmRleAogCQkJCSBjb29rZWRfaW5kZXhfZmxhZyBmbGFncywK IAkJCQkgY29uc3QgY2hhciAqbmFtZSwKIAkJCQkgY29uc3QgY29va2VkX2luZGV4X2VudHJ5 ICpwYXJlbnRfZW50cnksCi0JCQkJIGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KTsKKwkJ CQkgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UsCisJCQkJIGVudW0gbGFuZ3VhZ2UgbGFu Zyk7CiAKICAgLyogSW5zdGFsbCBhIG5ldyBmaXhlZCBhZGRybWFwIGZyb20gdGhlIGdpdmVu IG11dGFibGUgYWRkcm1hcC4gICovCiAgIHZvaWQgaW5zdGFsbF9hZGRybWFwIChhZGRybWFw X211dGFibGUgKm1hcCkKQEAgLTI0MywxMSArMjY2LDEzIEBAIGNsYXNzIGNvb2tlZF9pbmRl eAogCQkJICAgICAgY29va2VkX2luZGV4X2ZsYWcgZmxhZ3MsCiAJCQkgICAgICBjb25zdCBj aGFyICpuYW1lLAogCQkJICAgICAgY29uc3QgY29va2VkX2luZGV4X2VudHJ5ICpwYXJlbnRf ZW50cnksCi0JCQkgICAgICBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKKwkJCSAgICAg IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1LAorCQkJICAgICAgZW51bSBsYW5ndWFnZSBs YW5nKQogICB7CiAgICAgcmV0dXJuIG5ldyAoJm1fc3RvcmFnZSkgY29va2VkX2luZGV4X2Vu dHJ5IChkaWVfb2Zmc2V0LCB0YWcsIGZsYWdzLAogCQkJCQkJbmFtZSwgcGFyZW50X2VudHJ5 LAotCQkJCQkJcGVyX2N1KTsKKwkJCQkJCXBlcl9jdSwKKwkJCQkJCWxhbmcpOwogICB9CiAK ICAgLyogR05BVCBvbmx5IGVtaXRzIG1hbmdsZWQgKCJlbmNvZGVkIikgbmFtZXMgaW4gdGhl IERXQVJGLCBhbmQgZG9lcwpkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMi9jdS5jIGIvZ2RiL2R3 YXJmMi9jdS5jCmluZGV4IDhjYmQ5NzY2MWE1Li5kNDBkZDA5NGIwOSAxMDA2NDQKLS0tIGEv Z2RiL2R3YXJmMi9jdS5jCisrKyBiL2dkYi9kd2FyZjIvY3UuYwpAQCAtNjIsNyArNjIsNyBA QCBkd2FyZjJfY3U6OnN0YXJ0X2NvbXB1bml0X3N5bXRhYiAoY29uc3QgY2hhciAqbmFtZSwg Y29uc3QgY2hhciAqY29tcF9kaXIsCiAKICAgbV9idWlsZGVyLnJlc2V0IChuZXcgc3RydWN0 IGJ1aWxkc3ltX2NvbXB1bml0CiAJCSAgICh0aGlzLT5wZXJfb2JqZmlsZS0+b2JqZmlsZSwK LQkJICAgIG5hbWUsIGNvbXBfZGlyLCBwZXJfY3UtPmxhbmcgKCksIGxvd19wYykpOworCQkg ICAgbmFtZSwgY29tcF9kaXIsIGxhbmcgKCksIGxvd19wYykpOwogCiAgIGxpc3RfaW5fc2Nv cGUgPSBnZXRfYnVpbGRlciAoKS0+Z2V0X2ZpbGVfc3ltYm9scyAoKTsKIApkaWZmIC0tZ2l0 IGEvZ2RiL2R3YXJmMi9jdS5oIGIvZ2RiL2R3YXJmMi9jdS5oCmluZGV4IDZiNzJlYzIzNGJm Li4yM2NiM2QyMWIyZSAxMDA2NDQKLS0tIGEvZ2RiL2R3YXJmMi9jdS5oCisrKyBiL2dkYi9k d2FyZjIvY3UuaApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImJ1aWxkc3ltLmgiCiAj aW5jbHVkZSAiZHdhcmYyL2NvbXAtdW5pdC1oZWFkLmgiCiAjaW5jbHVkZSAiZ2Ric3VwcG9y dC9nZGJfb3B0aW9uYWwuaCIKKyNpbmNsdWRlICJsYW5ndWFnZS5oIgogCiAvKiBUeXBlIHVz ZWQgZm9yIGRlbGF5aW5nIGNvbXB1dGF0aW9uIG9mIG1ldGhvZCBwaHlzbmFtZXMuCiAgICBT ZWUgY29tbWVudHMgZm9yIGNvbXB1dGVfZGVsYXllZF9waHlzbmFtZXMuICAqLwpAQCAtMTA1 LDYgKzEwNiwxMiBAQCBzdHJ1Y3QgZHdhcmYyX2N1CiAgIC8qIFRoZSBsYW5ndWFnZSB3ZSBh cmUgZGVidWdnaW5nLiAgKi8KICAgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmd1 YWdlX2RlZm4gPSBudWxscHRyOwogCisgIGVudW0gbGFuZ3VhZ2UgbGFuZyAoKSBjb25zdAor ICB7CisgICAgZ2RiX2Fzc2VydCAobGFuZ3VhZ2VfZGVmbiAhPSBsYW5ndWFnZV9kZWYgKGxh bmd1YWdlX3Vua25vd24pKTsKKyAgICByZXR1cm4gbGFuZ3VhZ2VfZGVmbi0+bGFfbGFuZ3Vh Z2U7CisgIH0KKwogICBjb25zdCBjaGFyICpwcm9kdWNlciA9IG51bGxwdHI7CiAKIHByaXZh dGU6CmRpZmYgLS1naXQgYS9nZGIvZHdhcmYyL2luZGV4LXdyaXRlLmMgYi9nZGIvZHdhcmYy L2luZGV4LXdyaXRlLmMKaW5kZXggYzNhYWQ4ZGQ5OTkuLjdlZThmNzIxMTcxIDEwMDY0NAot LS0gYS9nZGIvZHdhcmYyL2luZGV4LXdyaXRlLmMKKysrIGIvZ2RiL2R3YXJmMi9pbmRleC13 cml0ZS5jCkBAIC01NjcsNyArNTY3LDcgQEAgY2xhc3MgZGVidWdfbmFtZXMKIAogICB2b2lk IGluc2VydCAoY29uc3QgY29va2VkX2luZGV4X2VudHJ5ICplbnRyeSkKICAgewotICAgIGNv bnN0IGF1dG8gaXQgPSBtX2N1X2luZGV4X2h0YWIuZmluZCAoZW50cnktPnBlcl9jdSk7Cisg ICAgY29uc3QgYXV0byBpdCA9IG1fY3VfaW5kZXhfaHRhYi5maW5kIChlbnRyeS0+bV9wZXJf Y3VfbGFuZy0+cGVyX2N1KTsKICAgICBnZGJfYXNzZXJ0IChpdCAhPSBtX2N1X2luZGV4X2h0 YWIuY2VuZCAoKSk7CiAgICAgY29uc3QgY2hhciAqbmFtZSA9IGVudHJ5LT5mdWxsX25hbWUg KCZtX3N0cmluZ19vYnN0YWNrKTsKIApAQCAtNTgyLDggKzU4Miw4IEBAIGNsYXNzIGRlYnVn X25hbWVzCiAgICAgICB0YWcgPSBEV19UQUdfdmFyaWFibGU7CiAKICAgICBpbnNlcnQgKHRh ZywgbmFtZSwgaXQtPnNlY29uZCwgKGVudHJ5LT5mbGFncyAmIElTX1NUQVRJQykgIT0gMCwK LQkgICAgZW50cnktPnBlcl9jdS0+aXNfZGVidWdfdHlwZXMgPyB1bml0X2tpbmQ6OnR1IDog dW5pdF9raW5kOjpjdSwKLQkgICAgZW50cnktPnBlcl9jdS0+bGFuZyAoKSk7CisJICAgIGVu dHJ5LT5tX3Blcl9jdV9sYW5nLT5wZXJfY3UtPmlzX2RlYnVnX3R5cGVzID8gdW5pdF9raW5k Ojp0dSA6IHVuaXRfa2luZDo6Y3UsCisJICAgIGVudHJ5LT5tX3Blcl9jdV9sYW5nLT5sYW5n KTsKICAgfQogCiAgIC8qIEJ1aWxkIGFsbCB0aGUgdGFibGVzLiAgQWxsIHN5bWJvbHMgbXVz dCBiZSBhbHJlYWR5IGluc2VydGVkLgpAQCAtMTEyMiw3ICsxMTIyLDcgQEAgd3JpdGVfY29v a2VkX2luZGV4IChjb29rZWRfaW5kZXhfdmVjdG9yICp0YWJsZSwKICAgICAgIGlmICgoZW50 cnktPmZsYWdzICYgSVNfTElOS0FHRSkgIT0gMCkKIAljb250aW51ZTsKIAotICAgICAgY29u c3QgYXV0byBpdCA9IGN1X2luZGV4X2h0YWIuZmluZCAoZW50cnktPnBlcl9jdSk7CisgICAg ICBjb25zdCBhdXRvIGl0ID0gY3VfaW5kZXhfaHRhYi5maW5kIChlbnRyeS0+bV9wZXJfY3Vf bGFuZy0+cGVyX2N1KTsKICAgICAgIGdkYl9hc3NlcnQgKGl0ICE9IGN1X2luZGV4X2h0YWIu Y2VuZCAoKSk7CiAKICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBlbnRyeS0+ZnVsbF9uYW1l ICgmc3ltdGFiLT5tX3N0cmluZ19vYnN0YWNrKTsKZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIv cmVhZC5jIGIvZ2RiL2R3YXJmMi9yZWFkLmMKaW5kZXggMjNmZTU2NzljYmQuLmJjMTlmMzZl N2IzIDEwMDY0NAotLS0gYS9nZGIvZHdhcmYyL3JlYWQuYworKysgYi9nZGIvZHdhcmYyL3Jl YWQuYwpAQCAtNjU5NCw5ICs2NTk0LDEwIEBAIGNsYXNzIGNvb2tlZF9pbmRleF9zdG9yYWdl CiAJCQkJIGNvb2tlZF9pbmRleF9mbGFnIGZsYWdzLAogCQkJCSBjb25zdCBjaGFyICpuYW1l LAogCQkJCSBjb25zdCBjb29rZWRfaW5kZXhfZW50cnkgKnBhcmVudF9lbnRyeSwKLQkJCQkg ZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCisJCQkJIGR3YXJmMl9wZXJfY3VfZGF0YSAq cGVyX2N1LAorCQkJCSBlbnVtIGxhbmd1YWdlIGxhbmcpCiAgIHsKLSAgICByZXR1cm4gbV9p bmRleC0+YWRkIChkaWVfb2Zmc2V0LCB0YWcsIGZsYWdzLCBuYW1lLCBwYXJlbnRfZW50cnks IHBlcl9jdSk7CisgICAgcmV0dXJuIG1faW5kZXgtPmFkZCAoZGllX29mZnNldCwgdGFnLCBm bGFncywgbmFtZSwgcGFyZW50X2VudHJ5LCBwZXJfY3UsIGxhbmcpOwogICB9CiAKICAgLyog SW5zdGFsbCB0aGUgY3VycmVudCBhZGRybWFwIGludG8gdGhlIGluZGV4IGJlaW5nIGNvbnN0 cnVjdGVkLApAQCAtNjgwOCw3ICs2ODA5LDcgQEAgcHJvY2Vzc19wc3ltdGFiX2NvbXBfdW5p dCAoZHdhcmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1LAogCSAgcHJlcGFyZV9vbmVfY29tcF91 bml0IChyZWFkZXIuY3UsIHJlYWRlci5jb21wX3VuaXRfZGllLAogCQkJCSBsYW5ndWFnZV9t aW5pbWFsKTsKIAkgIGdkYl9hc3NlcnQgKHN0b3JhZ2UgIT0gbnVsbHB0cik7Ci0JICBjb29r ZWRfaW5kZXhlciBpbmRleGVyIChzdG9yYWdlLCB0aGlzX2N1LCByZWFkZXIuY3UtPnBlcl9j dS0+bGFuZyAoKSk7CisJICBjb29rZWRfaW5kZXhlciBpbmRleGVyIChzdG9yYWdlLCB0aGlz X2N1LCByZWFkZXIuY3UtPmxhbmcgKCkpOwogCSAgaW5kZXhlci5tYWtlX2luZGV4ICgmcmVh ZGVyKTsKIAl9CiAgICAgfQpAQCAtNjgzMiw3ICs2ODMzLDcgQEAgYnVpbGRfdHlwZV9wc3lt dGFic19yZWFkZXIgKGN1dHVfcmVhZGVyICpyZWFkZXIsCiAgIHByZXBhcmVfb25lX2NvbXBf dW5pdCAoY3UsIHR5cGVfdW5pdF9kaWUsIGxhbmd1YWdlX21pbmltYWwpOwogCiAgIGdkYl9h c3NlcnQgKHN0b3JhZ2UgIT0gbnVsbHB0cik7Ci0gIGNvb2tlZF9pbmRleGVyIGluZGV4ZXIg KHN0b3JhZ2UsIHBlcl9jdSwgY3UtPnBlcl9jdS0+bGFuZyAoKSk7CisgIGNvb2tlZF9pbmRl eGVyIGluZGV4ZXIgKHN0b3JhZ2UsIHBlcl9jdSwgY3UtPmxhbmcgKCkpOwogICBpbmRleGVy Lm1ha2VfaW5kZXggKHJlYWRlcik7CiB9CiAKQEAgLTcxNDIsNyArNzE0Myw3IEBAIGR3YXJm Ml9idWlsZF9wc3ltdGFic19oYXJkIChkd2FyZjJfcGVyX29iamZpbGUgKnBlcl9vYmpmaWxl KQogICBjb25zdCBjb29rZWRfaW5kZXhfZW50cnkgKm1haW5fZW50cnkgPSB2ZWMtPmdldF9t YWluICgpOwogICBpZiAobWFpbl9lbnRyeSAhPSBudWxscHRyKQogICAgIHNldF9vYmpmaWxl X21haW5fbmFtZSAob2JqZmlsZSwgbWFpbl9lbnRyeS0+bmFtZSwKLQkJCSAgIG1haW5fZW50 cnktPnBlcl9jdS0+bGFuZyAoKSk7CisJCQkgICBtYWluX2VudHJ5LT5tX3Blcl9jdV9sYW5n LT5sYW5nKTsKIAogICBkd2FyZl9yZWFkX2RlYnVnX3ByaW50ZiAoIkRvbmUgYnVpbGRpbmcg cHN5bXRhYnMgb2YgJXMiLAogCQkJICAgb2JqZmlsZV9uYW1lIChvYmpmaWxlKSk7CkBAIC03 NzQ1LDcgKzc3NDYsNyBAQCBjb21wdXRlX2RlbGF5ZWRfcGh5c25hbWVzIChzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKICAgLyogT25seSBDKysgZGVsYXlzIGNvbXB1dGluZyBwaHlzbmFtZXMu ICAqLwogICBpZiAoY3UtPm1ldGhvZF9saXN0LmVtcHR5ICgpKQogICAgIHJldHVybjsKLSAg Z2RiX2Fzc2VydCAoY3UtPnBlcl9jdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9jcGx1cyk7Cisg IGdkYl9hc3NlcnQgKGN1LT5sYW5nICgpID09IGxhbmd1YWdlX2NwbHVzKTsKIAogICBmb3Ig KGNvbnN0IGRlbGF5ZWRfbWV0aG9kX2luZm8gJm1pIDogY3UtPm1ldGhvZF9saXN0KQogICAg IHsKQEAgLTgxNzQsNyArODE3NSw3IEBAIHF1aXJrX3J1c3RfZW51bSAoc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQogc3RhdGljIHZvaWQKIHJ1c3RfdW5p b25fcXVpcmtzIChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKIHsKLSAgZ2RiX2Fzc2VydCAoY3Ut PnBlcl9jdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9ydXN0KTsKKyAgZ2RiX2Fzc2VydCAoY3Ut PmxhbmcgKCkgPT0gbGFuZ3VhZ2VfcnVzdCk7CiAgIGZvciAodHlwZSAqdHlwZV8gOiBjdS0+ cnVzdF91bmlvbnMpCiAgICAgcXVpcmtfcnVzdF9lbnVtICh0eXBlXywgY3UtPnBlcl9vYmpm aWxlLT5vYmpmaWxlKTsKICAgLyogV2UgZG9uJ3QgbmVlZCB0aGlzIGFueSBtb3JlLiAgKi8K QEAgLTgzNjgsNyArODM2OSw3IEBAIHByb2Nlc3NfZnVsbF9jb21wX3VuaXQgKGR3YXJmMl9j dSAqY3UsIGVudW0gbGFuZ3VhZ2UgcHJldGVuZF9sYW5ndWFnZSkKICAgcHJvY2Vzc19kaWUg KGN1LT5kaWVzLCBjdSk7CiAKICAgLyogRm9yIG5vdyBmdWRnZSB0aGUgR28gcGFja2FnZS4g ICovCi0gIGlmIChjdS0+cGVyX2N1LT5sYW5nICgpID09IGxhbmd1YWdlX2dvKQorICBpZiAo Y3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfZ28pCiAgICAgZml4dXBfZ29fcGFja2FnaW5nIChj dSk7CiAKICAgLyogTm93IHRoYXQgd2UgaGF2ZSBwcm9jZXNzZWQgYWxsIHRoZSBESUVzIGlu IHRoZSBDVSwgYWxsIHRoZSB0eXBlcwpAQCAtODM3Niw3ICs4Mzc3LDcgQEAgcHJvY2Vzc19m dWxsX2NvbXBfdW5pdCAoZHdhcmYyX2N1ICpjdSwgZW51bSBsYW5ndWFnZSBwcmV0ZW5kX2xh bmd1YWdlKQogICAgICBwaHlzbmFtZXMuICAqLwogICBjb21wdXRlX2RlbGF5ZWRfcGh5c25h bWVzIChjdSk7CiAKLSAgaWYgKGN1LT5wZXJfY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfcnVz dCkKKyAgaWYgKGN1LT5sYW5nICgpID09IGxhbmd1YWdlX3J1c3QpCiAgICAgcnVzdF91bmlv bl9xdWlya3MgKGN1KTsKIAogICAvKiBTb21lIGNvbXBpbGVycyBkb24ndCBkZWZpbmUgYSBE V19BVF9oaWdoX3BjIGF0dHJpYnV0ZSBmb3IgdGhlCkBAIC04NDA1LDkgKzg0MDYsOSBAQCBw cm9jZXNzX2Z1bGxfY29tcF91bml0IChkd2FyZjJfY3UgKmN1LCBlbnVtIGxhbmd1YWdlIHBy ZXRlbmRfbGFuZ3VhZ2UpCiAgICAgICAvKiBTZXQgc3ltdGFiIGxhbmd1YWdlIHRvIGxhbmd1 YWdlIGZyb20gRFdfQVRfbGFuZ3VhZ2UuICBJZiB0aGUKIAkgY29tcGlsYXRpb24gaXMgZnJv bSBhIEMgZmlsZSBnZW5lcmF0ZWQgYnkgbGFuZ3VhZ2UgcHJlcHJvY2Vzc29ycywgZG8KIAkg bm90IHNldCB0aGUgbGFuZ3VhZ2UgaWYgaXQgd2FzIGFscmVhZHkgZGVkdWNlZCBieSBzdGFy dF9zdWJmaWxlLiAgKi8KLSAgICAgIGlmICghKGN1LT5wZXJfY3UtPmxhbmcgKCkgPT0gbGFu Z3VhZ2VfYworICAgICAgaWYgKCEoY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfYwogCSAgICAm JiBjdXN0LT5wcmltYXJ5X2ZpbGV0YWIgKCktPmxhbmd1YWdlICgpICE9IGxhbmd1YWdlX3Vu a25vd24pKQotCWN1c3QtPnByaW1hcnlfZmlsZXRhYiAoKS0+c2V0X2xhbmd1YWdlIChjdS0+ cGVyX2N1LT5sYW5nICgpKTsKKwljdXN0LT5wcmltYXJ5X2ZpbGV0YWIgKCktPnNldF9sYW5n dWFnZSAoY3UtPmxhbmcgKCkpOwogCiAgICAgICAvKiBHQ0MtNC4wIGhhcyBzdGFydGVkIHRv IHN1cHBvcnQgLWZ2YXItdHJhY2tpbmcuICBHQ0MtMy54IHN0aWxsIGNhbgogCSBwcm9kdWNl IERXX0FUX2xvY2F0aW9uIHdpdGggbG9jYXRpb24gbGlzdHMgYnV0IGl0IGNhbiBiZSBwb3Nz aWJseQpAQCAtODQ2MSw3ICs4NDYyLDcgQEAgcHJvY2Vzc19mdWxsX3R5cGVfdW5pdCAoZHdh cmYyX2N1ICpjdSwKICAgcHJvY2Vzc19kaWUgKGN1LT5kaWVzLCBjdSk7CiAKICAgLyogRm9y IG5vdyBmdWRnZSB0aGUgR28gcGFja2FnZS4gICovCi0gIGlmIChjdS0+cGVyX2N1LT5sYW5n ICgpID09IGxhbmd1YWdlX2dvKQorICBpZiAoY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfZ28p CiAgICAgZml4dXBfZ29fcGFja2FnaW5nIChjdSk7CiAKICAgLyogTm93IHRoYXQgd2UgaGF2 ZSBwcm9jZXNzZWQgYWxsIHRoZSBESUVzIGluIHRoZSBDVSwgYWxsIHRoZSB0eXBlcwpAQCAt ODQ2OSw3ICs4NDcwLDcgQEAgcHJvY2Vzc19mdWxsX3R5cGVfdW5pdCAoZHdhcmYyX2N1ICpj dSwKICAgICAgcGh5c25hbWVzLiAgKi8KICAgY29tcHV0ZV9kZWxheWVkX3BoeXNuYW1lcyAo Y3UpOwogCi0gIGlmIChjdS0+cGVyX2N1LT5sYW5nICgpID09IGxhbmd1YWdlX3J1c3QpCisg IGlmIChjdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9ydXN0KQogICAgIHJ1c3RfdW5pb25fcXVp cmtzIChjdSk7CiAKICAgLyogVFVzIHNoYXJlIHN5bWJvbCB0YWJsZXMuCkBAIC04NDkwLDkg Kzg0OTEsOSBAQCBwcm9jZXNzX2Z1bGxfdHlwZV91bml0IChkd2FyZjJfY3UgKmN1LAogCSAg ICAgY29tcGlsYXRpb24gaXMgZnJvbSBhIEMgZmlsZSBnZW5lcmF0ZWQgYnkgbGFuZ3VhZ2Ug cHJlcHJvY2Vzc29ycywKIAkgICAgIGRvIG5vdCBzZXQgdGhlIGxhbmd1YWdlIGlmIGl0IHdh cyBhbHJlYWR5IGRlZHVjZWQgYnkKIAkgICAgIHN0YXJ0X3N1YmZpbGUuICAqLwotCSAgaWYg KCEoY3UtPnBlcl9jdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9jCisJICBpZiAoIShjdS0+bGFu ZyAoKSA9PSBsYW5ndWFnZV9jCiAJCSYmIGN1c3QtPnByaW1hcnlfZmlsZXRhYiAoKS0+bGFu Z3VhZ2UgKCkgIT0gbGFuZ3VhZ2VfYykpCi0JICAgIGN1c3QtPnByaW1hcnlfZmlsZXRhYiAo KS0+c2V0X2xhbmd1YWdlIChjdS0+cGVyX2N1LT5sYW5nICgpKTsKKwkgICAgY3VzdC0+cHJp bWFyeV9maWxldGFiICgpLT5zZXRfbGFuZ3VhZ2UgKGN1LT5sYW5nICgpKTsKIAl9CiAgICAg fQogICBlbHNlCkBAIC04NTMyLDYgKzg1MzMsNyBAQCBwcm9jZXNzX2ltcG9ydGVkX3VuaXRf ZGllIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAJPSBk d2FyZjJfZmluZF9jb250YWluaW5nX2NvbXBfdW5pdCAoc2VjdF9vZmYsIGlzX2R3eiwKIAkJ CQkJICAgIHBlcl9vYmpmaWxlLT5wZXJfYmZkKTsKIAorI2lmIDAKICAgICAgIC8qIFdlJ3Jl IGltcG9ydGluZyBhIEMrKyBjb21waWxhdGlvbiB1bml0IHdpdGggdGFnIERXX1RBR19jb21w aWxlX3VuaXQKIAkgaW50byBhbm90aGVyIGNvbXBpbGF0aW9uIHVuaXQsIGF0IHJvb3QgbGV2 ZWwuICBSZWdhcmQgdGhpcyBhcyBhIGhpbnQsCiAJIGFuZCBpZ25vcmUgaXQuICAqLwpAQCAt ODUzOSwxMiArODU0MSwxMyBAQCBwcm9jZXNzX2ltcG9ydGVkX3VuaXRfZGllIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAJICAmJiBwZXJfY3UtPnVu aXRfdHlwZSAoKSA9PSBEV19VVF9jb21waWxlCiAJICAmJiBwZXJfY3UtPmxhbmcgKCkgPT0g bGFuZ3VhZ2VfY3BsdXMpCiAJcmV0dXJuOworI2VuZGlmCiAKICAgICAgIC8qIElmIG5lY2Vz c2FyeSwgYWRkIGl0IHRvIHRoZSBxdWV1ZSBhbmQgbG9hZCBpdHMgRElFcy4gICovCiAgICAg ICBpZiAobWF5YmVfcXVldWVfY29tcF91bml0IChjdSwgcGVyX2N1LCBwZXJfb2JqZmlsZSwK LQkJCQkgY3UtPnBlcl9jdS0+bGFuZyAoKSkpCisJCQkJIGN1LT5sYW5nICgpKSkKIAlsb2Fk X2Z1bGxfY29tcF91bml0IChwZXJfY3UsIHBlcl9vYmpmaWxlLCBwZXJfb2JqZmlsZS0+Z2V0 X2N1IChwZXJfY3UpLAotCQkJICAgICBmYWxzZSwgY3UtPnBlcl9jdS0+bGFuZyAoKSk7CisJ CQkgICAgIGZhbHNlLCBjdS0+bGFuZyAoKSk7CiAKICAgICAgIGN1LT5wZXJfY3UtPmltcG9y dGVkX3N5bXRhYnNfcHVzaCAocGVyX2N1KTsKICAgICB9CkBAIC04NjAyLDcgKzg2MDUsNyBA QCBwcm9jZXNzX2RpZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBEV19UQUdfc3VicHJvZ3JhbToKICAgICAg IC8qIE5lc3RlZCBzdWJwcm9ncmFtcyBpbiBGb3J0cmFuIGdldCBhIHByZWZpeC4gICovCi0g ICAgICBpZiAoY3UtPnBlcl9jdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9mb3J0cmFuCisgICAg ICBpZiAoY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfZm9ydHJhbgogCSAgJiYgZGllLT5wYXJl bnQgIT0gTlVMTAogCSAgJiYgZGllLT5wYXJlbnQtPnRhZyA9PSBEV19UQUdfc3VicHJvZ3Jh bSkKIAljdS0+cHJvY2Vzc2luZ19oYXNfbmFtZXNwYWNlX2luZm8gPSB0cnVlOwpAQCAtODY0 Niw3ICs4NjQ5LDcgQEAgcHJvY2Vzc19kaWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSkKICAgICAgIC8qIFdlIG9ubHkgbmVlZCB0byBoYW5kbGUgdGhp cyBjYXNlIGZvciBBZGEgLS0gaW4gb3RoZXIKIAkgbGFuZ3VhZ2VzLCBpdCdzIG5vcm1hbCBm b3IgdGhlIGNvbXBpbGVyIHRvIGVtaXQgYSB0eXBlZGVmCiAJIGluc3RlYWQuICAqLwotICAg ICAgaWYgKGN1LT5wZXJfY3UtPmxhbmcgKCkgIT0gbGFuZ3VhZ2VfYWRhKQorICAgICAgaWYg KGN1LT5sYW5nICgpICE9IGxhbmd1YWdlX2FkYSkKIAlicmVhazsKICAgICAgIC8qIEZBTExU SFJPVUdIICovCiAgICAgY2FzZSBEV19UQUdfYmFzZV90eXBlOgpAQCAtODY4MCw3ICs4Njgz LDcgQEAgcHJvY2Vzc19kaWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKICAgICBjYXNlIERXX1RBR19pbXBvcnRlZF9tb2R1bGU6CiAgICAgICBjdS0+ cHJvY2Vzc2luZ19oYXNfbmFtZXNwYWNlX2luZm8gPSB0cnVlOwogICAgICAgaWYgKGRpZS0+ Y2hpbGQgIT0gTlVMTCAmJiAoZGllLT50YWcgPT0gRFdfVEFHX2ltcG9ydGVkX2RlY2xhcmF0 aW9uCi0JCQkJIHx8IGN1LT5wZXJfY3UtPmxhbmcgKCkgIT0gbGFuZ3VhZ2VfZm9ydHJhbikp CisJCQkJIHx8IGN1LT5sYW5nICgpICE9IGxhbmd1YWdlX2ZvcnRyYW4pKQogCWNvbXBsYWlu dCAoXygiVGFnICclcycgaGFzIHVuZXhwZWN0ZWQgY2hpbGRyZW4iKSwKIAkJICAgZHdhcmZf dGFnX25hbWUgKGRpZS0+dGFnKSk7CiAgICAgICByZWFkX2ltcG9ydF9zdGF0ZW1lbnQgKGRp ZSwgY3UpOwpAQCAtODc5Miw3ICs4Nzk1LDcgQEAgZHcyX2xpbmthZ2VfbmFtZSAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogCiAgIC8qIHJ1c3RjIGVt aXRzIGludmFsaWQgdmFsdWVzIGZvciBEV19BVF9saW5rYWdlX25hbWUuICBJZ25vcmUgdGhl c2UuCiAgICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcnVzdC1sYW5nL3J1c3QvaXNzdWVz LzMyOTI1LiAgKi8KLSAgaWYgKGN1LT5wZXJfY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfcnVz dCAmJiBsaW5rYWdlX25hbWUgIT0gTlVMTAorICBpZiAoY3UtPmxhbmcgKCkgPT0gbGFuZ3Vh Z2VfcnVzdCAmJiBsaW5rYWdlX25hbWUgIT0gTlVMTAogICAgICAgJiYgc3RyY2hyIChsaW5r YWdlX25hbWUsICd7JykgIT0gTlVMTCkKICAgICBsaW5rYWdlX25hbWUgPSBOVUxMOwogCkBA IC04ODI0LDcgKzg4MjcsNyBAQCBkd2FyZjJfY29tcHV0ZV9uYW1lIChjb25zdCBjaGFyICpu YW1lLAogICBpZiAobmFtZSA9PSBOVUxMKQogICAgIG5hbWUgPSBkd2FyZjJfbmFtZSAoZGll LCBjdSk7CiAKLSAgZW51bSBsYW5ndWFnZSBsYW5nID0gY3UtPnBlcl9jdS0+bGFuZyAoKTsK KyAgZW51bSBsYW5ndWFnZSBsYW5nID0gY3UtPmxhbmcgKCk7CiAKICAgLyogRm9yIEZvcnRy YW4gR0RCIHByZWZlcnMgRFdfQVRfKmxpbmthZ2VfbmFtZSBmb3IgdGhlIHBoeXNuYW1lIGlm IHByZXNlbnQKICAgICAgYnV0IG90aGVyd2lzZSBjb21wdXRlIGl0IGJ5IHR5cGVuYW1lX2Nv bmNhdCBpbnNpZGUgR0RCLgpAQCAtOTA3Myw3ICs5MDc2LDcgQEAgZHdhcmYyX3BoeXNuYW1l IChjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCiAgIGlmICghZGllX25lZWRzX25hbWVzcGFjZSAoZGllLCBjdSkpCiAgICAg cmV0dXJuIGR3YXJmMl9jb21wdXRlX25hbWUgKG5hbWUsIGRpZSwgY3UsIDEpOwogCi0gIGlm IChjdS0+cGVyX2N1LT5sYW5nICgpICE9IGxhbmd1YWdlX3J1c3QpCisgIGlmIChjdS0+bGFu ZyAoKSAhPSBsYW5ndWFnZV9ydXN0KQogICAgIG1hbmdsZWQgPSBkdzJfbGlua2FnZV9uYW1l IChkaWUsIGN1KTsKIAogICAvKiBEV19BVF9saW5rYWdlX25hbWUgaXMgbWlzc2luZyBpbiBz b21lIGNhc2VzIC0gZGVwZW5kIG9uIHdoYXQgR0RCCkBAIC05MjMwLDcgKzkyMzMsNyBAQCBy ZWFkX2FsaWFzIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Up CiBzdGF0aWMgc3RydWN0IHVzaW5nX2RpcmVjdCAqKgogdXNpbmdfZGlyZWN0aXZlcyAoc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCiB7Ci0gIGlmIChjdS0+cGVyX2N1LT5sYW5nICgpID09IGxh bmd1YWdlX2FkYQorICBpZiAoY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfYWRhCiAgICAgICAm JiBjdS0+Z2V0X2J1aWxkZXIgKCktPm91dGVybW9zdF9jb250ZXh0X3AgKCkpCiAgICAgcmV0 dXJuIGN1LT5nZXRfYnVpbGRlciAoKS0+Z2V0X2dsb2JhbF91c2luZ19kaXJlY3RpdmVzICgp OwogICBlbHNlCkBAIC05MzIxLDcgKzkzMjQsNyBAQCByZWFkX2ltcG9ydF9zdGF0ZW1lbnQg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgZWxzZSBp ZiAoc3RybGVuIChpbXBvcnRlZF9uYW1lX3ByZWZpeCkgPiAwKQogICAgIGNhbm9uaWNhbF9u YW1lID0gb2Jjb25jYXQgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCiAJCQkgICAgICAg aW1wb3J0ZWRfbmFtZV9wcmVmaXgsCi0JCQkgICAgICAgKGN1LT5wZXJfY3UtPmxhbmcgKCkg PT0gbGFuZ3VhZ2VfZAorCQkJICAgICAgIChjdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9kCiAJ CQkJPyAiLiIKIAkJCQk6ICI6OiIpLAogCQkJICAgICAgIGltcG9ydGVkX25hbWUsIChjaGFy ICopIE5VTEwpOwpAQCAtOTMyOSw3ICs5MzMyLDcgQEAgcmVhZF9pbXBvcnRfc3RhdGVtZW50 IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgY2Fu b25pY2FsX25hbWUgPSBpbXBvcnRlZF9uYW1lOwogCiAgIGlmIChkaWUtPnRhZyA9PSBEV19U QUdfaW1wb3J0ZWRfbW9kdWxlCi0gICAgICAmJiBjdS0+cGVyX2N1LT5sYW5nICgpID09IGxh bmd1YWdlX2ZvcnRyYW4pCisgICAgICAmJiBjdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9mb3J0 cmFuKQogICAgIGZvciAoY2hpbGRfZGllID0gZGllLT5jaGlsZDsgY2hpbGRfZGllICYmIGNo aWxkX2RpZS0+dGFnOwogCSBjaGlsZF9kaWUgPSBjaGlsZF9kaWUtPnNpYmxpbmcpCiAgICAg ICB7CkBAIC05NTU1LDcgKzk1NTgsNyBAQCByZWFkX2ZpbGVfc2NvcGUgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgc3RydWN0IGRpZV9pbmZvICpj aGlsZF9kaWU7CiAgIENPUkVfQUREUiBiYXNlYWRkcjsKIAotICBwcmVwYXJlX29uZV9jb21w X3VuaXQgKGN1LCBkaWUsIGN1LT5wZXJfY3UtPmxhbmcgKCkpOworICBwcmVwYXJlX29uZV9j b21wX3VuaXQgKGN1LCBkaWUsIGN1LT5sYW5nICgpKTsKICAgYmFzZWFkZHIgPSBvYmpmaWxl LT50ZXh0X3NlY3Rpb25fb2Zmc2V0ICgpOwogCiAgIGdldF9zY29wZV9wY19ib3VuZHMgKGRp ZSwgJmxvd3BjLCAmaGlnaHBjLCBjdSk7CkBAIC0xMTcxNyw3ICsxMTcyMCw3IEBAIHF1ZXVl X2FuZF9sb2FkX2R3b190dSAodm9pZCAqKnNsb3QsIHZvaWQgKmluZm8pCiAJIGEgcmVhbCBk ZXBlbmRlbmN5IG9mIFBFUl9DVSBvbiBTSUdfVFlQRS4gIFRoYXQgaXMgZGV0ZWN0ZWQgbGF0 ZXIKIAkgd2hpbGUgcHJvY2Vzc2luZyBQRVJfQ1UuICAqLwogICAgICAgaWYgKG1heWJlX3F1 ZXVlX2NvbXBfdW5pdCAoTlVMTCwgc2lnX3R5cGUsIGN1LT5wZXJfb2JqZmlsZSwKLQkJCQkg Y3UtPnBlcl9jdS0+bGFuZyAoKSkpCisJCQkJIGN1LT5sYW5nICgpKSkKIAlsb2FkX2Z1bGxf dHlwZV91bml0IChzaWdfdHlwZSwgY3UtPnBlcl9vYmpmaWxlKTsKICAgICAgIGN1LT5wZXJf Y3UtPmltcG9ydGVkX3N5bXRhYnNfcHVzaCAoc2lnX3R5cGUpOwogICAgIH0KQEAgLTEyMDA3 LDcgKzEyMDEwLDcgQEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCiAKICAgaWYgKGR3YXJmMl9mbGFnX3RydWVfcCAoZGll LCBEV19BVF9tYWluX3N1YnByb2dyYW0sIGN1KSkKICAgICBzZXRfb2JqZmlsZV9tYWluX25h bWUgKG9iamZpbGUsIG5ld29iai0+bmFtZS0+bGlua2FnZV9uYW1lICgpLAotCQkJICAgY3Ut PnBlcl9jdS0+bGFuZyAoKSk7CisJCQkgICBjdS0+bGFuZyAoKSk7CiAKICAgLyogSWYgdGhl cmUgaXMgYSBsb2NhdGlvbiBleHByZXNzaW9uIGZvciBEV19BVF9mcmFtZV9iYXNlLCByZWNv cmQKICAgICAgaXQuICAqLwpAQCAtMTIwNTIsNyArMTIwNTUsNyBAQCByZWFkX2Z1bmNfc2Nv cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgLyog SWYgd2UgaGF2ZSBhIERXX0FUX3NwZWNpZmljYXRpb24sIHdlIG1pZ2h0IG5lZWQgdG8gaW1w b3J0IHVzaW5nCiAgICAgIGRpcmVjdGl2ZXMgZnJvbSB0aGUgY29udGV4dCBvZiB0aGUgc3Bl Y2lmaWNhdGlvbiBESUUuICBTZWUgdGhlCiAgICAgIGNvbW1lbnQgaW4gZGV0ZXJtaW5lX3By ZWZpeC4gICovCi0gIGlmIChjdS0+cGVyX2N1LT5sYW5nICgpID09IGxhbmd1YWdlX2NwbHVz CisgIGlmIChjdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9jcGx1cwogICAgICAgJiYgZHdhcmYy X2F0dHIgKGRpZSwgRFdfQVRfc3BlY2lmaWNhdGlvbiwgY3UpKQogICAgIHsKICAgICAgIHN0 cnVjdCBkd2FyZjJfY3UgKnNwZWNfY3UgPSBjdTsKQEAgLTEyMDgwLDEwICsxMjA4MywxMCBA QCByZWFkX2Z1bmNfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKIAkJCQkgICAgIGNzdGsuc3RhdGljX2xpbmssIGxvd3BjLCBoaWdocGMpOwog CiAgIC8qIEZvciBDKyssIHNldCB0aGUgYmxvY2sncyBzY29wZS4gICovCi0gIGlmICgoY3Ut PnBlcl9jdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9jcGx1cwotICAgICAgIHx8IGN1LT5wZXJf Y3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfZm9ydHJhbgotICAgICAgIHx8IGN1LT5wZXJfY3Ut PmxhbmcgKCkgPT0gbGFuZ3VhZ2VfZAotICAgICAgIHx8IGN1LT5wZXJfY3UtPmxhbmcgKCkg PT0gbGFuZ3VhZ2VfcnVzdCkKKyAgaWYgKChjdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9jcGx1 cworICAgICAgIHx8IGN1LT5sYW5nICgpID09IGxhbmd1YWdlX2ZvcnRyYW4KKyAgICAgICB8 fCBjdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9kCisgICAgICAgfHwgY3UtPmxhbmcgKCkgPT0g bGFuZ3VhZ2VfcnVzdCkKICAgICAgICYmIGN1LT5wcm9jZXNzaW5nX2hhc19uYW1lc3BhY2Vf aW5mbykKICAgICBibG9ja19zZXRfc2NvcGUgKGJsb2NrLCBkZXRlcm1pbmVfcHJlZml4IChk aWUsIGN1KSwKIAkJICAgICAmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrKTsKQEAgLTEyNTgz LDcgKzEyNTg2LDcgQEAgcmVhZF92YXJpYWJsZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KQogewogICBzdHJ1Y3QgcnVzdF92dGFibGVfc3ltYm9sICpz dG9yYWdlID0gTlVMTDsKIAotICBpZiAoY3UtPnBlcl9jdS0+bGFuZyAoKSA9PSBsYW5ndWFn ZV9ydXN0KQorICBpZiAoY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfcnVzdCkKICAgICB7CiAg ICAgICBzdHJ1Y3QgdHlwZSAqY29udGFpbmluZ190eXBlID0gcnVzdF9jb250YWluaW5nX3R5 cGUgKGRpZSwgY3UpOwogCkBAIC0xMzA5Nyw3ICsxMzEwMCw3IEBAIGR3YXJmMl9nZXRfc3Vi cHJvZ3JhbV9wY19ib3VuZHMgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAogCiAgIC8qIElmIHRo ZSBsYW5ndWFnZSBkb2VzIG5vdCBhbGxvdyBuZXN0ZWQgc3VicHJvZ3JhbXMgKGVpdGhlciBp bnNpZGUKICAgICAgc3VicHJvZ3JhbXMgb3IgbGV4aWNhbCBibG9ja3MpLCB3ZSdyZSBkb25l LiAgKi8KLSAgaWYgKGN1LT5wZXJfY3UtPmxhbmcgKCkgIT0gbGFuZ3VhZ2VfYWRhKQorICBp ZiAoY3UtPmxhbmcgKCkgIT0gbGFuZ3VhZ2VfYWRhKQogICAgIHJldHVybjsKIAogICAvKiBD aGVjayBhbGwgdGhlIGNoaWxkcmVuIG9mIHRoZSBnaXZlbiBESUUuICBJZiBpdCBjb250YWlu cyBuZXN0ZWQKQEAgLTEzOTAyLDcgKzEzOTA1LDcgQEAgZHdhcmYyX2F0dGFjaF9maWVsZHNf dG9fdHlwZSAoc3RydWN0IGZpZWxkX2luZm8gKmZpcCwgc3RydWN0IHR5cGUgKnR5cGUsCiAg IHR5cGUtPnNldF9maWVsZHMKICAgICAoKHN0cnVjdCBmaWVsZCAqKSBUWVBFX1pBTExPQyAo dHlwZSwgc2l6ZW9mIChzdHJ1Y3QgZmllbGQpICogbmZpZWxkcykpOwogCi0gIGlmIChmaXAt Pm5vbl9wdWJsaWNfZmllbGRzICYmIGN1LT5wZXJfY3UtPmxhbmcgKCkgIT0gbGFuZ3VhZ2Vf YWRhKQorICBpZiAoZmlwLT5ub25fcHVibGljX2ZpZWxkcyAmJiBjdS0+bGFuZyAoKSAhPSBs YW5ndWFnZV9hZGEpCiAgICAgewogICAgICAgQUxMT0NBVEVfQ1BMVVNfU1RSVUNUX1RZUEUg KHR5cGUpOwogCkBAIC0xMzkyMSw3ICsxMzkyNCw3IEBAIGR3YXJmMl9hdHRhY2hfZmllbGRz X3RvX3R5cGUgKHN0cnVjdCBmaWVsZF9pbmZvICpmaXAsIHN0cnVjdCB0eXBlICp0eXBlLAog CiAgIC8qIElmIHRoZSB0eXBlIGhhcyBiYXNlY2xhc3NlcywgYWxsb2NhdGUgYW5kIGNsZWFy IGEgYml0IHZlY3RvciBmb3IKICAgICAgVFlQRV9GSUVMRF9WSVJUVUFMX0JJVFMuICAqLwot ICBpZiAoIWZpcC0+YmFzZWNsYXNzZXMuZW1wdHkgKCkgJiYgY3UtPnBlcl9jdS0+bGFuZyAo KSAhPSBsYW5ndWFnZV9hZGEpCisgIGlmICghZmlwLT5iYXNlY2xhc3Nlcy5lbXB0eSAoKSAm JiBjdS0+bGFuZyAoKSAhPSBsYW5ndWFnZV9hZGEpCiAgICAgewogICAgICAgaW50IG51bV9i eXRlcyA9IEJfQllURVMgKGZpcC0+YmFzZWNsYXNzZXMuc2l6ZSAoKSk7CiAgICAgICB1bnNp Z25lZCBjaGFyICpwb2ludGVyOwpAQCAtMTM5NDcsMTIgKzEzOTUwLDEyIEBAIGR3YXJmMl9h dHRhY2hfZmllbGRzX3RvX3R5cGUgKHN0cnVjdCBmaWVsZF9pbmZvICpmaXAsIHN0cnVjdCB0 eXBlICp0eXBlLAogICAgICAgc3dpdGNoIChmaWVsZC5hY2Nlc3NpYmlsaXR5KQogCXsKIAlj YXNlIERXX0FDQ0VTU19wcml2YXRlOgotCSAgaWYgKGN1LT5wZXJfY3UtPmxhbmcgKCkgIT0g bGFuZ3VhZ2VfYWRhKQorCSAgaWYgKGN1LT5sYW5nICgpICE9IGxhbmd1YWdlX2FkYSkKIAkg ICAgU0VUX1RZUEVfRklFTERfUFJJVkFURSAodHlwZSwgaSk7CiAJICBicmVhazsKIAogCWNh c2UgRFdfQUNDRVNTX3Byb3RlY3RlZDoKLQkgIGlmIChjdS0+cGVyX2N1LT5sYW5nICgpICE9 IGxhbmd1YWdlX2FkYSkKKwkgIGlmIChjdS0+bGFuZyAoKSAhPSBsYW5ndWFnZV9hZGEpCiAJ ICAgIFNFVF9UWVBFX0ZJRUxEX1BST1RFQ1RFRCAodHlwZSwgaSk7CiAJICBicmVhazsKIApA QCAtMTM5NzMsNyArMTM5NzYsNyBAQCBkd2FyZjJfYXR0YWNoX2ZpZWxkc190b190eXBlIChz dHJ1Y3QgZmllbGRfaW5mbyAqZmlwLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKIAkgICAgewogCSAg ICBjYXNlIERXX1ZJUlRVQUxJVFlfdmlydHVhbDoKIAkgICAgY2FzZSBEV19WSVJUVUFMSVRZ X3B1cmVfdmlydHVhbDoKLQkgICAgICBpZiAoY3UtPnBlcl9jdS0+bGFuZyAoKSA9PSBsYW5n dWFnZV9hZGEpCisJICAgICAgaWYgKGN1LT5sYW5nICgpID09IGxhbmd1YWdlX2FkYSkKIAkJ ZXJyb3IgKF8oInVuZXhwZWN0ZWQgdmlydHVhbGl0eSBpbiBjb21wb25lbnQgb2YgQWRhIHR5 cGUiKSk7CiAJICAgICAgU0VUX1RZUEVfRklFTERfVklSVFVBTCAodHlwZSwgaSk7CiAJICAg ICAgYnJlYWs7CkBAIC0xNDAyNCw3ICsxNDAyNyw3IEBAIGR3YXJmMl9hZGRfbWVtYmVyX2Zu IChzdHJ1Y3QgZmllbGRfaW5mbyAqZmlwLCBzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAgY29u c3QgY2hhciAqZmllbGRuYW1lOwogICBzdHJ1Y3QgdHlwZSAqdGhpc190eXBlOwogCi0gIGlm IChjdS0+cGVyX2N1LT5sYW5nICgpID09IGxhbmd1YWdlX2FkYSkKKyAgaWYgKGN1LT5sYW5n ICgpID09IGxhbmd1YWdlX2FkYSkKICAgICBlcnJvciAoXygidW5leHBlY3RlZCBtZW1iZXIg ZnVuY3Rpb24gaW4gQWRhIHR5cGUiKSk7CiAKICAgLyogR2V0IG5hbWUgb2YgbWVtYmVyIGZ1 bmN0aW9uLiAgKi8KQEAgLTE0MDU3LDcgKzE0MDYwLDcgQEAgZHdhcmYyX2FkZF9tZW1iZXJf Zm4gKHN0cnVjdCBmaWVsZF9pbmZvICpmaXAsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAogICBm bnAgPSAmZmxwLT5mbmZpZWxkcy5iYWNrICgpOwogCiAgIC8qIERlbGF5IHByb2Nlc3Npbmcg b2YgdGhlIHBoeXNuYW1lIHVudGlsIGxhdGVyLiAgKi8KLSAgaWYgKGN1LT5wZXJfY3UtPmxh bmcgKCkgPT0gbGFuZ3VhZ2VfY3BsdXMpCisgIGlmIChjdS0+bGFuZyAoKSA9PSBsYW5ndWFn ZV9jcGx1cykKICAgICBhZGRfdG9fbWV0aG9kX2xpc3QgKHR5cGUsIGksIGZscC0+Zm5maWVs ZHMuc2l6ZSAoKSAtIDEsIGZpZWxkbmFtZSwKIAkJCWRpZSwgY3UpOwogICBlbHNlCkBAIC0x NDIxMiw3ICsxNDIxNSw3IEBAIHN0YXRpYyB2b2lkCiBkd2FyZjJfYXR0YWNoX2ZuX2ZpZWxk c190b190eXBlIChzdHJ1Y3QgZmllbGRfaW5mbyAqZmlwLCBzdHJ1Y3QgdHlwZSAqdHlwZSwK IAkJCQkgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiB7Ci0gIGlmIChjdS0+cGVyX2N1LT5sYW5n ICgpID09IGxhbmd1YWdlX2FkYSkKKyAgaWYgKGN1LT5sYW5nICgpID09IGxhbmd1YWdlX2Fk YSkKICAgICBlcnJvciAoXygidW5leHBlY3RlZCBtZW1iZXIgZnVuY3Rpb25zIGluIEFkYSB0 eXBlIikpOwogCiAgIEFMTE9DQVRFX0NQTFVTX1NUUlVDVF9UWVBFICh0eXBlKTsKQEAgLTE0 MzU1LDcgKzE0MzU4LDcgQEAgc3RhdGljIHZvaWQKIHF1aXJrX2FkYV90aGlja19wb2ludGVy X3N0cnVjdCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAog CQkJCXN0cnVjdCB0eXBlICp0eXBlKQogewotICBnZGJfYXNzZXJ0IChjdS0+cGVyX2N1LT5s YW5nICgpID09IGxhbmd1YWdlX2FkYSk7CisgIGdkYl9hc3NlcnQgKGN1LT5sYW5nICgpID09 IGxhbmd1YWdlX2FkYSk7CiAKICAgLyogQ2hlY2sgZm9yIGEgc3RydWN0dXJlIHdpdGggdHdv IGNoaWxkcmVuLiAgKi8KICAgaWYgKHR5cGUtPmNvZGUgKCkgIT0gVFlQRV9DT0RFX1NUUlVD VCB8fCB0eXBlLT5udW1fZmllbGRzICgpICE9IDIpCkBAIC0xNDUzNCw5ICsxNDUzNyw5IEBA IHJlYWRfc3RydWN0dXJlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKICAgbmFtZSA9IGR3YXJmMl9uYW1lIChkaWUsIGN1KTsKICAgaWYgKG5h bWUgIT0gTlVMTCkKICAgICB7Ci0gICAgICBpZiAoY3UtPnBlcl9jdS0+bGFuZyAgKCkgPT0g bGFuZ3VhZ2VfY3BsdXMKLQkgIHx8IGN1LT5wZXJfY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2Vf ZAotCSAgfHwgY3UtPnBlcl9jdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9ydXN0KQorICAgICAg aWYgKGN1LT5sYW5nICAoKSA9PSBsYW5ndWFnZV9jcGx1cworCSAgfHwgY3UtPmxhbmcgKCkg PT0gbGFuZ3VhZ2VfZAorCSAgfHwgY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfcnVzdCkKIAl7 CiAJICBjb25zdCBjaGFyICpmdWxsX25hbWUgPSBkd2FyZjJfZnVsbF9uYW1lIChuYW1lLCBk aWUsIGN1KTsKIApAQCAtMTQ1NzIsNyArMTQ1NzUsNyBAQCByZWFkX3N0cnVjdHVyZV90eXBl IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgICB0 eXBlLT5zZXRfY29kZSAoVFlQRV9DT0RFX1NUUlVDVCk7CiAgICAgfQogCi0gIGlmIChjdS0+ cGVyX2N1LT5sYW5nICgpID09IGxhbmd1YWdlX2NwbHVzICYmIGRpZS0+dGFnID09IERXX1RB R19jbGFzc190eXBlKQorICBpZiAoY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfY3BsdXMgJiYg ZGllLT50YWcgPT0gRFdfVEFHX2NsYXNzX3R5cGUpCiAgICAgdHlwZS0+c2V0X2lzX2RlY2xh cmVkX2NsYXNzICh0cnVlKTsKIAogICAvKiBTdG9yZSB0aGUgY2FsbGluZyBjb252ZW50aW9u IGluIHRoZSB0eXBlIGlmIGl0J3MgYXZhaWxhYmxlIGluCkBAIC0xNDc4NCw3ICsxNDc4Nyw3 IEBAIGhhbmRsZV9zdHJ1Y3RfbWVtYmVyX2RpZSAoc3RydWN0IGRpZV9pbmZvICpjaGlsZF9k aWUsIHN0cnVjdCB0eXBlICp0eXBlLAogICAgICAgLyogUnVzdCBkb2Vzbid0IGhhdmUgbWVt YmVyIGZ1bmN0aW9ucyBpbiB0aGUgQysrIHNlbnNlLgogCSBIb3dldmVyLCBpdCBkb2VzIGVt aXQgb3JkaW5hcnkgZnVuY3Rpb25zIGFzIGNoaWxkcmVuCiAJIG9mIGEgc3RydWN0IERJRS4g ICovCi0gICAgICBpZiAoY3UtPnBlcl9jdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9ydXN0KQor ICAgICAgaWYgKGN1LT5sYW5nICgpID09IGxhbmd1YWdlX3J1c3QpCiAJcmVhZF9mdW5jX3Nj b3BlIChjaGlsZF9kaWUsIGN1KTsKICAgICAgIGVsc2UKIAl7CkBAIC0xNDk0OCw3ICsxNDk1 MSw3IEBAIHByb2Nlc3Nfc3RydWN0dXJlX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgICAvKiBDb3B5IGZpLm5lc3RlZF90eXBlc19s aXN0IGxpbmtlZCBsaXN0IGVsZW1lbnRzIGNvbnRlbnQgaW50byB0aGUKIAkgYWxsb2NhdGVk IGFycmF5IFRZUEVfTkVTVEVEX1RZUEVTX0FSUkFZICh0eXBlKS4gICovCiAgICAgICBpZiAo IWZpLm5lc3RlZF90eXBlc19saXN0LmVtcHR5ICgpCi0JICAmJiBjdS0+cGVyX2N1LT5sYW5n ICgpICE9IGxhbmd1YWdlX2FkYSkKKwkgICYmIGN1LT5sYW5nICgpICE9IGxhbmd1YWdlX2Fk YSkKIAl7CiAJICBpbnQgY291bnQgPSBmaS5uZXN0ZWRfdHlwZXNfbGlzdC5zaXplICgpOwog CkBAIC0xNDk2NCw5ICsxNDk2Nyw5IEBAIHByb2Nlc3Nfc3RydWN0dXJlX3Njb3BlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgfQogCiAgIHF1 aXJrX2djY19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlciAodHlwZSwgb2JqZmlsZSk7Ci0gIGlm IChjdS0+cGVyX2N1LT5sYW5nICgpID09IGxhbmd1YWdlX3J1c3QgJiYgZGllLT50YWcgPT0g RFdfVEFHX3VuaW9uX3R5cGUpCisgIGlmIChjdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9ydXN0 ICYmIGRpZS0+dGFnID09IERXX1RBR191bmlvbl90eXBlKQogICAgIGN1LT5ydXN0X3VuaW9u cy5wdXNoX2JhY2sgKHR5cGUpOwotICBlbHNlIGlmIChjdS0+cGVyX2N1LT5sYW5nICgpID09 IGxhbmd1YWdlX2FkYSkKKyAgZWxzZSBpZiAoY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfYWRh KQogICAgIHF1aXJrX2FkYV90aGlja19wb2ludGVyX3N0cnVjdCAoZGllLCBjdSwgdHlwZSk7 CiAKICAgLyogTk9URTogY2FybHRvbi8yMDA0LTAzLTE2OiBHQ0MgMy40IChvciBhdCBsZWFz dCBvbmUgb2YgaXRzCkBAIC0xNTY3MCw3ICsxNTY3Myw3IEBAIHJlYWRfYXJyYXlfdHlwZSAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICBtYXliZV9z ZXRfYWxpZ25tZW50IChjdSwgZGllLCB0eXBlKTsKIAogICBzdHJ1Y3QgdHlwZSAqcmVwbGFj ZW1lbnRfdHlwZSA9IG51bGxwdHI7Ci0gIGlmIChjdS0+cGVyX2N1LT5sYW5nICgpID09IGxh bmd1YWdlX2FkYSkKKyAgaWYgKGN1LT5sYW5nICgpID09IGxhbmd1YWdlX2FkYSkKICAgICB7 CiAgICAgICByZXBsYWNlbWVudF90eXBlID0gcXVpcmtfYWRhX3RoaWNrX3BvaW50ZXIgKGRp ZSwgY3UsIHR5cGUpOwogICAgICAgaWYgKHJlcGxhY2VtZW50X3R5cGUgIT0gbnVsbHB0cikK QEAgLTE1NzA3LDcgKzE1NzEwLDcgQEAgcmVhZF9hcnJheV9vcmRlciAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgICBGSVhNRTogZHNsLzIwMDQt OC0yMDogSWYgRzc3IGlzIGV2ZXIgZml4ZWQsIHRoaXMgd2lsbCBhbHNvIG5lZWQKICAgICAg dmVyc2lvbiBjaGVja2luZy4gICovCiAKLSAgaWYgKGN1LT5wZXJfY3UtPmxhbmcgKCkgPT0g bGFuZ3VhZ2VfZm9ydHJhbgorICBpZiAoY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfZm9ydHJh bgogICAgICAgJiYgY3UtPnByb2R1Y2VyICYmIHN0cnN0ciAoY3UtPnByb2R1Y2VyLCAiR05V IEY3NyIpKQogICAgIHsKICAgICAgIHJldHVybiBEV19PUkRfcm93X21ham9yOwpAQCAtMTY0 NDYsOSArMTY0NDksOSBAQCBwcm90b3R5cGVkX2Z1bmN0aW9uX3AgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgICAgbGFuZ3VhZ2VzIHRoYXQgYWxs b3cgdW5wcm90b3R5cGVkIGZ1bmN0aW9ucyAoRWc6IE9iamVjdGl2ZSBDKS4KICAgICAgRm9y IGFsbCBvdGhlciBsYW5ndWFnZXMsIGFzc3VtZSB0aGF0IGZ1bmN0aW9ucyBhcmUgYWx3YXlz CiAgICAgIHByb3RvdHlwZWQuICAqLwotICBpZiAoY3UtPnBlcl9jdS0+bGFuZyAoKSAhPSBs YW5ndWFnZV9jCi0gICAgICAmJiBjdS0+cGVyX2N1LT5sYW5nICgpICE9IGxhbmd1YWdlX29i amMKLSAgICAgICYmIGN1LT5wZXJfY3UtPmxhbmcgKCkgIT0gbGFuZ3VhZ2Vfb3BlbmNsKQor ICBpZiAoY3UtPmxhbmcgKCkgIT0gbGFuZ3VhZ2VfYworICAgICAgJiYgY3UtPmxhbmcgKCkg IT0gbGFuZ3VhZ2Vfb2JqYworICAgICAgJiYgY3UtPmxhbmcgKCkgIT0gbGFuZ3VhZ2Vfb3Bl bmNsKQogICAgIHJldHVybiAxOwogCiAgIC8qIFJlYWxWaWV3IGRvZXMgbm90IGVtaXQgRFdf QVRfcHJvdG90eXBlZC4gIFdlIGNhbiBub3QgZGlzdGluZ3Vpc2gKQEAgLTE2NTczLDcgKzE2 NTc2LDcgQEAgcmVhZF9zdWJyb3V0aW5lX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKIAkgICAgICAvKiBSZWFsVmlldyBkb2VzIG5vdCBtYXJr IFRISVMgYXMgY29uc3QsIHdoaWNoIHRoZSB0ZXN0c3VpdGUKIAkJIGV4cGVjdHMuICBHQ0Mg bWFya3MgVEhJUyBhcyBjb25zdCBpbiBtZXRob2QgZGVmaW5pdGlvbnMsCiAJCSBidXQgbm90 IGluIHRoZSBjbGFzcyBzcGVjaWZpY2F0aW9ucyAoR0NDIFBSIDQzMDUzKS4gICovCi0JICAg ICAgaWYgKGN1LT5wZXJfY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfY3BsdXMKKwkgICAgICBp ZiAoY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfY3BsdXMKIAkJICAmJiAhVFlQRV9DT05TVCAo YXJnX3R5cGUpCiAJCSAgJiYgVFlQRV9GSUVMRF9BUlRJRklDSUFMIChmdHlwZSwgaXBhcmFt cykpCiAJCXsKQEAgLTE3MDA5LDcgKzE3MDEyLDcgQEAgZHdhcmYyX2luaXRfY29tcGxleF90 YXJnZXRfdHlwZSAoc3RydWN0IGR3YXJmMl9jdSAqY3UsCiAgIC8qIFRyeSB0byBmaW5kIGEg c3VpdGFibGUgZmxvYXRpbmcgcG9pbnQgYnVpbHRpbiB0eXBlIG9mIHNpemUgQklUUy4KICAg ICAgV2UncmUgZ29pbmcgdG8gdXNlIHRoZSBuYW1lIG9mIHRoaXMgdHlwZSBhcyB0aGUgbmFt ZSBmb3IgdGhlIGNvbXBsZXgKICAgICAgdGFyZ2V0IHR5cGUgdGhhdCB3ZSBhcmUgYWJvdXQg dG8gY3JlYXRlLiAgKi8KLSAgc3dpdGNoIChjdS0+cGVyX2N1LT5sYW5nICgpKQorICBzd2l0 Y2ggKGN1LT5sYW5nICgpKQogICAgIHsKICAgICBjYXNlIGxhbmd1YWdlX2ZvcnRyYW46CiAg ICAgICBzd2l0Y2ggKGJpdHMpCkBAIC0xNzA5OSw3ICsxNzEwMiw3IEBAIHJlYWRfYmFzZV90 eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAg fQogCiAgIGlmICgoZW5jb2RpbmcgPT0gRFdfQVRFX3NpZ25lZF9maXhlZCB8fCBlbmNvZGlu ZyA9PSBEV19BVEVfdW5zaWduZWRfZml4ZWQpCi0gICAgICAmJiBjdS0+cGVyX2N1LT5sYW5n ICgpID09IGxhbmd1YWdlX2FkYQorICAgICAgJiYgY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2Vf YWRhCiAgICAgICAmJiBoYXNfemVyb19vdmVyX3plcm9fc21hbGxfYXR0cmlidXRlIChkaWUs IGN1KSkKICAgICB7CiAgICAgICAvKiBicm9iZWNrZXIvMjAxOC0wMi0yNDogVGhpcyBpcyBh IGZpeGVkIHBvaW50IHR5cGUgZm9yIHdoaWNoCkBAIC0xNzEyMSw3ICsxNzEyNCw3IEBAIHJl YWRfYmFzZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCiAgICAgIHRoYW4gYW4gImVsc2UgaWYiLiAgKi8KICAgY29uc3QgY2hhciAqZ25hdF9l bmNvZGluZ19zdWZmaXggPSBudWxscHRyOwogICBpZiAoKGVuY29kaW5nID09IERXX0FURV9z aWduZWQgfHwgZW5jb2RpbmcgPT0gRFdfQVRFX3Vuc2lnbmVkKQotICAgICAgJiYgY3UtPnBl cl9jdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9hZGEKKyAgICAgICYmIGN1LT5sYW5nICgpID09 IGxhbmd1YWdlX2FkYQogICAgICAgJiYgbmFtZSAhPSBudWxscHRyKQogICAgIHsKICAgICAg IGduYXRfZW5jb2Rpbmdfc3VmZml4ID0gZ25hdF9lbmNvZGVkX2ZpeGVkX3BvaW50X3R5cGVf aW5mbyAobmFtZSk7CkBAIC0xNzE3OCw3ICsxNzE4MSw3IEBAIHJlYWRfYmFzZV90eXBlIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAJdHlwZSA9IGR3 YXJmMl9pbml0X2ludGVnZXJfdHlwZSAoY3UsIG9iamZpbGUsIGJpdHMsIDAsIG5hbWUpOwog CWJyZWFrOwogICAgICAgY2FzZSBEV19BVEVfdW5zaWduZWQ6Ci0JaWYgKGN1LT5wZXJfY3Ut PmxhbmcgKCkgPT0gbGFuZ3VhZ2VfZm9ydHJhbgorCWlmIChjdS0+bGFuZyAoKSA9PSBsYW5n dWFnZV9mb3J0cmFuCiAJICAgICYmIG5hbWUKIAkgICAgJiYgc3RhcnRzd2l0aCAobmFtZSwg ImNoYXJhY3RlcigiKSkKIAkgIHR5cGUgPSBpbml0X2NoYXJhY3Rlcl90eXBlIChvYmpmaWxl LCBiaXRzLCAxLCBuYW1lKTsKQEAgLTE3MTg2LDIwICsxNzE4OSwyMCBAQCByZWFkX2Jhc2Vf dHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogCSAg dHlwZSA9IGR3YXJmMl9pbml0X2ludGVnZXJfdHlwZSAoY3UsIG9iamZpbGUsIGJpdHMsIDEs IG5hbWUpOwogCWJyZWFrOwogICAgICAgY2FzZSBEV19BVEVfc2lnbmVkX2NoYXI6Ci0JaWYg KGN1LT5wZXJfY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfYWRhCi0JICAgIHx8IGN1LT5wZXJf Y3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfbTIKLQkgICAgfHwgY3UtPnBlcl9jdS0+bGFuZyAo KSA9PSBsYW5ndWFnZV9wYXNjYWwKLQkgICAgfHwgY3UtPnBlcl9jdS0+bGFuZyAoKSA9PSBs YW5ndWFnZV9mb3J0cmFuKQorCWlmIChjdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9hZGEKKwkg ICAgfHwgY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfbTIKKwkgICAgfHwgY3UtPmxhbmcgKCkg PT0gbGFuZ3VhZ2VfcGFzY2FsCisJICAgIHx8IGN1LT5sYW5nICgpID09IGxhbmd1YWdlX2Zv cnRyYW4pCiAJICB0eXBlID0gaW5pdF9jaGFyYWN0ZXJfdHlwZSAob2JqZmlsZSwgYml0cywg MCwgbmFtZSk7CiAJZWxzZQogCSAgdHlwZSA9IGR3YXJmMl9pbml0X2ludGVnZXJfdHlwZSAo Y3UsIG9iamZpbGUsIGJpdHMsIDAsIG5hbWUpOwogCWJyZWFrOwogICAgICAgY2FzZSBEV19B VEVfdW5zaWduZWRfY2hhcjoKLQlpZiAoY3UtPnBlcl9jdS0+bGFuZyAoKSA9PSBsYW5ndWFn ZV9hZGEKLQkgICAgfHwgY3UtPnBlcl9jdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9tMgotCSAg ICB8fCBjdS0+cGVyX2N1LT5sYW5nICgpID09IGxhbmd1YWdlX3Bhc2NhbAotCSAgICB8fCBj dS0+cGVyX2N1LT5sYW5nICgpID09IGxhbmd1YWdlX2ZvcnRyYW4KLQkgICAgfHwgY3UtPnBl cl9jdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9ydXN0KQorCWlmIChjdS0+bGFuZyAoKSA9PSBs YW5ndWFnZV9hZGEKKwkgICAgfHwgY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfbTIKKwkgICAg fHwgY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfcGFzY2FsCisJICAgIHx8IGN1LT5sYW5nICgp ID09IGxhbmd1YWdlX2ZvcnRyYW4KKwkgICAgfHwgY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2Vf cnVzdCkKIAkgIHR5cGUgPSBpbml0X2NoYXJhY3Rlcl90eXBlIChvYmpmaWxlLCBiaXRzLCAx LCBuYW1lKTsKIAllbHNlCiAJICB0eXBlID0gZHdhcmYyX2luaXRfaW50ZWdlcl90eXBlIChj dSwgb2JqZmlsZSwgYml0cywgMSwgbmFtZSk7CkBAIC0xNzQ5Nyw3ICsxNzUwMCw3IEBAIHJl YWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KQogCiAgIC8qIFNldCBMT1dfREVGQVVMVF9JU19WQUxJRCBpZiBjdXJyZW50IGxh bmd1YWdlIGFuZCBEV0FSRiB2ZXJzaW9uIGFsbG93CiAgICAgIG9taXR0aW5nIERXX0FUX2xv d2VyX2JvdW5kLiAgKi8KLSAgc3dpdGNoIChjdS0+cGVyX2N1LT5sYW5nICgpKQorICBzd2l0 Y2ggKGN1LT5sYW5nICgpKQogICAgIHsKICAgICBjYXNlIGxhbmd1YWdlX2M6CiAgICAgY2Fz ZSBsYW5ndWFnZV9jcGx1czoKQEAgLTE3NjMzLDcgKzE3NjM2LDcgQEAgcmVhZF9zdWJyYW5n ZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAg ICAgcmFuZ2VfdHlwZS0+Ym91bmRzICgpLT5mbGFnX3VwcGVyX2JvdW5kX2lzX2NvdW50ID0g MTsKIAogICAvKiBBZGEgZXhwZWN0cyBhbiBlbXB0eSBhcnJheSBvbiBubyBib3VuZGFyeSBh dHRyaWJ1dGVzLiAgKi8KLSAgaWYgKGF0dHIgPT0gTlVMTCAmJiBjdS0+cGVyX2N1LT5sYW5n ICgpICE9IGxhbmd1YWdlX2FkYSkKKyAgaWYgKGF0dHIgPT0gTlVMTCAmJiBjdS0+bGFuZyAo KSAhPSBsYW5ndWFnZV9hZGEpCiAgICAgcmFuZ2VfdHlwZS0+Ym91bmRzICgpLT5oaWdoLnNl dF91bmRlZmluZWQgKCk7CiAKICAgbmFtZSA9IGR3YXJmMl9uYW1lIChkaWUsIGN1KTsKQEAg LTE3NjY2LDcgKzE3NjY5LDcgQEAgcmVhZF91bnNwZWNpZmllZF90eXBlIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgIG9mIHRoZSB0eXBlIGlz IGRlZmVycmVkIHRvIGEgZGlmZmVyZW50IHVuaXQuICBXaGVuIGVuY291bnRlcmluZwogICAg ICBzdWNoIGEgdHlwZSwgd2UgdHJlYXQgaXQgYXMgYSBzdHViLCBhbmQgdHJ5IHRvIHJlc29s dmUgaXQgbGF0ZXIgb24sCiAgICAgIHdoZW4gbmVlZGVkLiAgKi8KLSAgaWYgKGN1LT5wZXJf Y3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfYWRhKQorICBpZiAoY3UtPmxhbmcgKCkgPT0gbGFu Z3VhZ2VfYWRhKQogICAgIHR5cGUtPnNldF9pc19zdHViICh0cnVlKTsKIAogICByZXR1cm4g c2V0X2RpZV90eXBlIChkaWUsIHR5cGUsIGN1KTsKQEAgLTE4MzQ3LDcgKzE4MzUwLDcgQEAg Y29va2VkX2luZGV4ZXI6OmluZGV4X2RpZXMgKGN1dHVfcmVhZGVyICpyZWFkZXIsCiAJICBl bHNlCiAJICAgIHRoaXNfZW50cnkgPSBtX2luZGV4X3N0b3JhZ2UtPmFkZCAodGhpc19kaWUs IGFiYnJldi0+dGFnLCBmbGFncywKIAkJCQkJICAgICAgIG5hbWUsIHRoaXNfcGFyZW50X2Vu dHJ5LAotCQkJCQkgICAgICAgbV9wZXJfY3UpOworCQkJCQkgICAgICAgbV9wZXJfY3UsIG1f bGFuZ3VhZ2UpOwogCX0KIAogICAgICAgaWYgKGxpbmthZ2VfbmFtZSAhPSBudWxscHRyKQpA QCAtMTgzNjQsNyArMTgzNjcsNyBAQCBjb29rZWRfaW5kZXhlcjo6aW5kZXhfZGllcyAoY3V0 dV9yZWFkZXIgKnJlYWRlciwKIAkgICAgICAgICAgJiYgYWJicmV2LT50YWcgIT0gRFdfVEFH X2VudHJ5X3BvaW50KSkKIAkgICAgZmxhZ3MgPSBmbGFncyB8IElTX0xJTktBR0U7CiAJICBt X2luZGV4X3N0b3JhZ2UtPmFkZCAodGhpc19kaWUsIGFiYnJldi0+dGFnLCBmbGFncywKLQkJ CQlsaW5rYWdlX25hbWUsIG51bGxwdHIsIG1fcGVyX2N1KTsKKwkJCQlsaW5rYWdlX25hbWUs IG51bGxwdHIsIG1fcGVyX2N1LCBtX2xhbmd1YWdlKTsKIAl9CiAKICAgICAgIGlmIChhYmJy ZXYtPmhhc19jaGlsZHJlbikKQEAgLTE4NDUyLDcgKzE4NDU1LDcgQEAgY29va2VkX2luZGV4 ZXI6Om1ha2VfaW5kZXggKGN1dHVfcmVhZGVyICpyZWFkZXIpCiAgICAgICBjb29rZWRfaW5k ZXhfZW50cnkgKnBhcmVudAogCT0gKGNvb2tlZF9pbmRleF9lbnRyeSAqKSBtX2RpZV9yYW5n ZV9tYXAuZmluZCAoa2V5KTsKICAgICAgIG1faW5kZXhfc3RvcmFnZS0+YWRkIChlbnRyeS5k aWVfb2Zmc2V0LCBlbnRyeS50YWcsIGVudHJ5LmZsYWdzLAotCQkJICAgIGVudHJ5Lm5hbWUs IHBhcmVudCwgbV9wZXJfY3UpOworCQkJICAgIGVudHJ5Lm5hbWUsIHBhcmVudCwgbV9wZXJf Y3UsIG1fbGFuZ3VhZ2UpOwogICAgIH0KIH0KIApAQCAtMTg1NjYsNyArMTg1NjksNyBAQCBj b29rZWRfaW5kZXhfZnVuY3Rpb25zOjpleHBhbmRfbWF0Y2hpbmdfc3ltYm9scwogCWNvbnRp bnVlOwogCiAgICAgICBpZiAobmFtZV9tYXRjaCAoZW50cnktPmNhbm9uaWNhbCwgbG9va3Vw X25hbWUsIG51bGxwdHIpKQotCWR3Ml9pbnN0YW50aWF0ZV9zeW10YWIgKGVudHJ5LT5wZXJf Y3UsIHBlcl9vYmpmaWxlLCBmYWxzZSk7CisJZHcyX2luc3RhbnRpYXRlX3N5bXRhYiAoZW50 cnktPm1fcGVyX2N1X2xhbmctPnBlcl9jdSwgcGVyX29iamZpbGUsIGZhbHNlKTsKICAgICB9 CiB9CiAKQEAgLTE4NjMyLDEyICsxODYzNSwxMiBAQCBjb29rZWRfaW5kZXhfZnVuY3Rpb25z OjpleHBhbmRfc3ltdGFic19tYXRjaGluZwogCQkJCQkJCSAgY29tcGxldGluZykpCiAJewog CSAgLyogTm8gbmVlZCB0byBjb25zaWRlciBzeW1ib2xzIGZyb20gZXhwYW5kZWQgQ1VzLiAg Ki8KLQkgIGlmIChwZXJfb2JqZmlsZS0+c3ltdGFiX3NldF9wIChlbnRyeS0+cGVyX2N1KSkK KwkgIGlmIChwZXJfb2JqZmlsZS0+c3ltdGFiX3NldF9wIChlbnRyeS0+bV9wZXJfY3VfbGFu Zy0+cGVyX2N1KSkKIAkgICAgY29udGludWU7CiAKIAkgIC8qIElmIGZpbGUtbWF0Y2hpbmcg d2FzIGRvbmUsIHdlIGRvbid0IG5lZWQgdG8gY29uc2lkZXIKIAkgICAgIHN5bWJvbHMgZnJv bSB1bm1hcmtlZCBDVXMuICAqLwotCSAgaWYgKGZpbGVfbWF0Y2hlciAhPSBudWxscHRyICYm ICFlbnRyeS0+cGVyX2N1LT5tYXJrKQorCSAgaWYgKGZpbGVfbWF0Y2hlciAhPSBudWxscHRy ICYmICFlbnRyeS0+bV9wZXJfY3VfbGFuZy0+cGVyX2N1LT5tYXJrKQogCSAgICBjb250aW51 ZTsKIAogCSAgLyogU2VlIGlmIHRoZSBzeW1ib2wgbWF0Y2hlcyB0aGUgdHlwZSBmaWx0ZXIu ICAqLwpAQCAtMTg2OTAsNyArMTg2OTMsOCBAQCBjb29rZWRfaW5kZXhfZnVuY3Rpb25zOjpl eHBhbmRfc3ltdGFic19tYXRjaGluZwogCQljb250aW51ZTsKIAkgICAgfQogCi0JICBpZiAo IWR3Ml9leHBhbmRfc3ltdGFic19tYXRjaGluZ19vbmUgKGVudHJ5LT5wZXJfY3UsIHBlcl9v YmpmaWxlLAorCSAgaWYgKCFkdzJfZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmdfb25lIChlbnRy eS0+bV9wZXJfY3VfbGFuZy0+cGVyX2N1LAorCQkJCQkJcGVyX29iamZpbGUsCiAJCQkJCQlm aWxlX21hdGNoZXIsCiAJCQkJCQlleHBhbnNpb25fbm90aWZ5KSkKIAkgICAgcmV0dXJuIGZh bHNlOwpAQCAtMjA2ODUsMTYgKzIwNjg5LDE2IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCiAg ICAgICBPQkpTVEFUIChvYmpmaWxlLCBuX3N5bXMrKyk7CiAKICAgICAgIC8qIENhY2hlIHRo aXMgc3ltYm9sJ3MgbmFtZSBhbmQgdGhlIG5hbWUncyBkZW1hbmdsZWQgZm9ybSAoaWYgYW55 KS4gICovCi0gICAgICBzeW0tPnNldF9sYW5ndWFnZSAoY3UtPnBlcl9jdS0+bGFuZyAoKSwg Jm9iamZpbGUtPm9iamZpbGVfb2JzdGFjayk7CisgICAgICBzeW0tPnNldF9sYW5ndWFnZSAo Y3UtPmxhbmcgKCksICZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2spOwogICAgICAgLyogRm9y dHJhbiBkb2VzIG5vdCBoYXZlIG1hbmdsaW5nIHN0YW5kYXJkIGFuZCB0aGUgbWFuZ2xpbmcg ZG9lcyBkaWZmZXIKIAkgYmV0d2VlbiBnZm9ydHJhbiwgaUZvcnQgZXRjLiAgKi8KICAgICAg IGNvbnN0IGNoYXIgKnBoeXNuYW1lCi0JPSAoY3UtPnBlcl9jdS0+bGFuZyAoKSA9PSBsYW5n dWFnZV9mb3J0cmFuCisJPSAoY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfZm9ydHJhbgogCSAg ID8gZHdhcmYyX2Z1bGxfbmFtZSAobmFtZSwgZGllLCBjdSkKIAkgICA6IGR3YXJmMl9waHlz bmFtZSAobmFtZSwgZGllLCBjdSkpOwogICAgICAgY29uc3QgY2hhciAqbGlua2FnZW5hbWUg PSBkdzJfbGlua2FnZV9uYW1lIChkaWUsIGN1KTsKIAotICAgICAgaWYgKGxpbmthZ2VuYW1l ID09IG51bGxwdHIgfHwgY3UtPnBlcl9jdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9hZGEpCisg ICAgICBpZiAobGlua2FnZW5hbWUgPT0gbnVsbHB0ciB8fCBjdS0+bGFuZyAoKSA9PSBsYW5n dWFnZV9hZGEpCiAJc3ltLT5zZXRfbGlua2FnZV9uYW1lIChwaHlzbmFtZSk7CiAgICAgICBl bHNlCiAJewpAQCAtMjA3NjYsOCArMjA3NzAsOCBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAog CSAgc3ltLT5zZXRfYWNsYXNzX2luZGV4IChMT0NfQkxPQ0spOwogCSAgYXR0cjIgPSBkd2Fy ZjJfYXR0ciAoZGllLCBEV19BVF9leHRlcm5hbCwgY3UpOwogCSAgaWYgKChhdHRyMiAhPSBu dWxscHRyICYmIGF0dHIyLT5hc19ib29sZWFuICgpKQotCSAgICAgIHx8IGN1LT5wZXJfY3Ut PmxhbmcgKCkgPT0gbGFuZ3VhZ2VfYWRhCi0JICAgICAgfHwgY3UtPnBlcl9jdS0+bGFuZyAo KSA9PSBsYW5ndWFnZV9mb3J0cmFuKQorCSAgICAgIHx8IGN1LT5sYW5nICgpID09IGxhbmd1 YWdlX2FkYQorCSAgICAgIHx8IGN1LT5sYW5nICgpID09IGxhbmd1YWdlX2ZvcnRyYW4pCiAJ ICAgIHsKIAkgICAgICAvKiBTdWJwcm9ncmFtcyBtYXJrZWQgZXh0ZXJuYWwgYXJlIHN0b3Jl ZCBhcyBhIGdsb2JhbCBzeW1ib2wuCiAJCSBBZGEgYW5kIEZvcnRyYW4gc3VicHJvZ3JhbXMs IHdoZXRoZXIgbWFya2VkIGV4dGVybmFsIG9yCkBAIC0yMDgzMiw3ICsyMDgzNiw3IEBAIG5l d19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UsCiAKIAkgICAgICAvKiBGb3J0cmFuIGV4cGxpY2l0bHkgaW1w b3J0cyBhbnkgZ2xvYmFsIHN5bWJvbHMgdG8gdGhlIGxvY2FsCiAJCSBzY29wZSBieSBEV19U QUdfY29tbW9uX2Jsb2NrLiAgKi8KLQkgICAgICBpZiAoY3UtPnBlcl9jdS0+bGFuZyAoKSA9 PSBsYW5ndWFnZV9mb3J0cmFuICYmIGRpZS0+cGFyZW50CisJICAgICAgaWYgKGN1LT5sYW5n ICgpID09IGxhbmd1YWdlX2ZvcnRyYW4gJiYgZGllLT5wYXJlbnQKIAkJICAmJiBkaWUtPnBh cmVudC0+dGFnID09IERXX1RBR19jb21tb25fYmxvY2spCiAJCWF0dHIyID0gTlVMTDsKIApA QCAtMjA4ODYsNyArMjA4OTAsNyBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAogCiAJICAgICAg LyogRm9ydHJhbiBleHBsaWNpdGx5IGltcG9ydHMgYW55IGdsb2JhbCBzeW1ib2xzIHRvIHRo ZSBsb2NhbAogCQkgc2NvcGUgYnkgRFdfVEFHX2NvbW1vbl9ibG9jay4gICovCi0JICAgICAg aWYgKGN1LT5wZXJfY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfZm9ydHJhbiAmJiBkaWUtPnBh cmVudAorCSAgICAgIGlmIChjdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9mb3J0cmFuICYmIGRp ZS0+cGFyZW50CiAJCSAgJiYgZGllLT5wYXJlbnQtPnRhZyA9PSBEV19UQUdfY29tbW9uX2Js b2NrKQogCQl7CiAJCSAgLyogU1lNQk9MX0NMQVNTIGRvZXNuJ3QgbWF0dGVyIGhlcmUgYmVj YXVzZQpAQCAtMjA5ODAsMTYgKzIwOTg0LDE2IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCiAJ CWJ1aWxkc3ltX2NvbXB1bml0ICpidWlsZGVyID0gY3UtPmdldF9idWlsZGVyICgpOwogCQls aXN0X3RvX2FkZAogCQkgID0gKGN1LT5saXN0X2luX3Njb3BlID09IGJ1aWxkZXItPmdldF9m aWxlX3N5bWJvbHMgKCkKLQkJICAgICAmJiBjdS0+cGVyX2N1LT5sYW5nICgpID09IGxhbmd1 YWdlX2NwbHVzCisJCSAgICAgJiYgY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfY3BsdXMKIAkJ ICAgICA/IGJ1aWxkZXItPmdldF9nbG9iYWxfc3ltYm9scyAoKQogCQkgICAgIDogY3UtPmxp c3RfaW5fc2NvcGUpOwogCiAJCS8qIFRoZSBzZW1hbnRpY3Mgb2YgQysrIHN0YXRlIHRoYXQg InN0cnVjdCBmb28gewogCQkgICAuLi4gfSIgYWxzbyBkZWZpbmVzIGEgdHlwZWRlZiBmb3Ig ImZvbyIuICAqLwotCQlpZiAoY3UtPnBlcl9jdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9jcGx1 cwotCQkgICAgfHwgY3UtPnBlcl9jdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9hZGEKLQkJICAg IHx8IGN1LT5wZXJfY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfZAotCQkgICAgfHwgY3UtPnBl cl9jdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9ydXN0KQorCQlpZiAoY3UtPmxhbmcgKCkgPT0g bGFuZ3VhZ2VfY3BsdXMKKwkJICAgIHx8IGN1LT5sYW5nICgpID09IGxhbmd1YWdlX2FkYQor CQkgICAgfHwgY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfZAorCQkgICAgfHwgY3UtPmxhbmcg KCkgPT0gbGFuZ3VhZ2VfcnVzdCkKIAkJICB7CiAJCSAgICAvKiBUaGUgc3ltYm9sJ3MgbmFt ZSBpcyBhbHJlYWR5IGFsbG9jYXRlZCBhbG9uZwogCQkgICAgICAgd2l0aCB0aGlzIG9iamZp bGUsIHNvIHdlIGRvbid0IG5lZWQgdG8KQEAgLTIxMDI1LDcgKzIxMDI5LDcgQEAgbmV3X3N5 bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSwKIAogCSAgICBsaXN0X3RvX2FkZAogCSAgICAgID0gKGN1LT5saXN0 X2luX3Njb3BlID09IGN1LT5nZXRfYnVpbGRlciAoKS0+Z2V0X2ZpbGVfc3ltYm9scyAoKQot CQkgJiYgY3UtPnBlcl9jdS0+bGFuZyAoKSA9PSBsYW5ndWFnZV9jcGx1cworCQkgJiYgY3Ut PmxhbmcgKCkgPT0gbGFuZ3VhZ2VfY3BsdXMKIAkJID8gY3UtPmdldF9idWlsZGVyICgpLT5n ZXRfZ2xvYmFsX3N5bWJvbHMgKCkKIAkJIDogY3UtPmxpc3RfaW5fc2NvcGUpOwogCSAgfQpA QCAtMjEwNjgsNyArMjEwNzIsNyBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAogICAgICAgLyog Rm9yIHRoZSBiZW5lZml0IG9mIG9sZCB2ZXJzaW9ucyBvZiBHQ0MsIGNoZWNrIGZvciBhbm9u eW1vdXMKIAkgbmFtZXNwYWNlcyBiYXNlZCBvbiB0aGUgZGVtYW5nbGVkIG5hbWUuICAqLwog ICAgICAgaWYgKCFjdS0+cHJvY2Vzc2luZ19oYXNfbmFtZXNwYWNlX2luZm8KLQkgICYmIGN1 LT5wZXJfY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfY3BsdXMpCisJICAmJiBjdS0+bGFuZyAo KSA9PSBsYW5ndWFnZV9jcGx1cykKIAljcF9zY2FuX2Zvcl9hbm9ueW1vdXNfbmFtZXNwYWNl cyAoY3UtPmdldF9idWlsZGVyICgpLCBzeW0sIG9iamZpbGUpOwogICAgIH0KICAgcmV0dXJu IChzeW0pOwpAQCAtMjEyODAsNyArMjEyODQsNyBAQCBuZWVkX2duYXRfaW5mbyAoc3RydWN0 IGR3YXJmMl9jdSAqY3UpCiB7CiAgIC8qIEFzc3VtZSB0aGF0IHRoZSBBZGEgY29tcGlsZXIg d2FzIEdOQVQsIHdoaWNoIGFsd2F5cyBwcm9kdWNlcwogICAgICB0aGUgYXV4aWxpYXJ5IGlu Zm9ybWF0aW9uLiAgKi8KLSAgcmV0dXJuIChjdS0+cGVyX2N1LT5sYW5nICgpID09IGxhbmd1 YWdlX2FkYSk7CisgIHJldHVybiAoY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfYWRhKTsKIH0K IAogLyogUmV0dXJuIHRoZSBhdXhpbGlhcnkgdHlwZSBvZiB0aGUgZGllIGluIHF1ZXN0aW9u IHVzaW5nIGl0cwpAQCAtMjE2NTcsMTAgKzIxNjYxLDEwIEBAIGRldGVybWluZV9wcmVmaXgg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgc3RydWN0 IHR5cGUgKnBhcmVudF90eXBlOwogICBjb25zdCBjaGFyICpyZXR2YWw7CiAKLSAgaWYgKGN1 LT5wZXJfY3UtPmxhbmcgKCkgIT0gbGFuZ3VhZ2VfY3BsdXMKLSAgICAgICYmIGN1LT5wZXJf Y3UtPmxhbmcgKCkgIT0gbGFuZ3VhZ2VfZm9ydHJhbgotICAgICAgJiYgY3UtPnBlcl9jdS0+ bGFuZyAoKSAhPSBsYW5ndWFnZV9kCi0gICAgICAmJiBjdS0+cGVyX2N1LT5sYW5nICgpICE9 IGxhbmd1YWdlX3J1c3QpCisgIGlmIChjdS0+bGFuZyAoKSAhPSBsYW5ndWFnZV9jcGx1cwor ICAgICAgJiYgY3UtPmxhbmcgKCkgIT0gbGFuZ3VhZ2VfZm9ydHJhbgorICAgICAgJiYgY3Ut PmxhbmcgKCkgIT0gbGFuZ3VhZ2VfZAorICAgICAgJiYgY3UtPmxhbmcgKCkgIT0gbGFuZ3Vh Z2VfcnVzdCkKICAgICByZXR1cm4gIiI7CiAKICAgcmV0dmFsID0gYW5vbnltb3VzX3N0cnVj dF9wcmVmaXggKGRpZSwgY3UpOwpAQCAtMjE3NDgsNyArMjE3NTIsNyBAQCBkZXRlcm1pbmVf cHJlZml4IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAJ LyogR0NDIDQuMCBhbmQgNC4xIGhhZCBhIGJ1ZyAoUFIgYysrLzI4NDYwKSB3aGVyZSB0aGV5 IGdlbmVyYXRlZCBib2d1cwogCSAgIERXX1RBR19uYW1lc3BhY2UgRElFcyB3aXRoIGEgbmFt ZSBvZiAiOjoiIGZvciB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KIAkgICBXb3JrIGFyb3VuZCB0 aGlzIHByb2JsZW0gaGVyZS4gICovCi0JaWYgKGN1LT5wZXJfY3UtPmxhbmcgKCkgPT0gbGFu Z3VhZ2VfY3BsdXMKKwlpZiAoY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfY3BsdXMKIAkgICAg JiYgc3RyY21wIChwYXJlbnRfdHlwZS0+bmFtZSAoKSwgIjo6IikgPT0gMCkKIAkgIHJldHVy biAiIjsKIAkvKiBXZSBnaXZlIGEgbmFtZSB0byBldmVuIGFub255bW91cyBuYW1lc3BhY2Vz LiAgKi8KQEAgLTIxNzY5LDcgKzIxNzczLDcgQEAgZGV0ZXJtaW5lX3ByZWZpeCAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgICAgY2FzZSBEV19U QUdfY29tcGlsZV91bml0OgogICAgICAgY2FzZSBEV19UQUdfcGFydGlhbF91bml0OgogCS8q IGdjYy00LjUgLWdkd2FyZi00IGNhbiBkcm9wIHRoZSBlbmNsb3NpbmcgbmFtZXNwYWNlLiAg Q29wZS4gICovCi0JaWYgKGN1LT5wZXJfY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfY3BsdXMK KwlpZiAoY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfY3BsdXMKIAkgICAgJiYgIXBlcl9vYmpm aWxlLT5wZXJfYmZkLT50eXBlcy5lbXB0eSAoKQogCSAgICAmJiBkaWUtPmNoaWxkICE9IE5V TEwKIAkgICAgJiYgKGRpZS0+dGFnID09IERXX1RBR19jbGFzc190eXBlCkBAIC0yMTc4NCw3 ICsyMTc4OCw3IEBAIGRldGVybWluZV9wcmVmaXggKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgICAgIGNhc2UgRFdfVEFHX3N1YnByb2dyYW06CiAJ LyogTmVzdGVkIHN1YnJvdXRpbmVzIGluIEZvcnRyYW4gZ2V0IGEgcHJlZml4IHdpdGggdGhl IG5hbWUKIAkgICBvZiB0aGUgcGFyZW50J3Mgc3Vicm91dGluZS4gICovCi0JaWYgKGN1LT5w ZXJfY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfZm9ydHJhbikKKwlpZiAoY3UtPmxhbmcgKCkg PT0gbGFuZ3VhZ2VfZm9ydHJhbikKIAkgIHsKIAkgICAgaWYgKChkaWUtPnRhZyA9PSAgRFdf VEFHX3N1YnByb2dyYW0pCiAJCSYmIChkd2FyZjJfbmFtZSAocGFyZW50LCBjdSkgIT0gTlVM TCkpCkBAIC0yMTgyMyw3ICsyMTgyNyw3IEBAIHR5cGVuYW1lX2NvbmNhdCAoc3RydWN0IG9i c3RhY2sgKm9icywgY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICpzdWZmaXgsCiAg IGlmIChzdWZmaXggPT0gTlVMTCB8fCBzdWZmaXhbMF0gPT0gJ1wwJwogICAgICAgfHwgcHJl Zml4ID09IE5VTEwgfHwgcHJlZml4WzBdID09ICdcMCcpCiAgICAgc2VwID0gIiI7Ci0gIGVs c2UgaWYgKGN1LT5wZXJfY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfZCkKKyAgZWxzZSBpZiAo Y3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfZCkKICAgICB7CiAgICAgICAvKiBGb3IgRCwgdGhl ICdtYWluJyBmdW5jdGlvbiBjb3VsZCBiZSBkZWZpbmVkIGluIGFueSBtb2R1bGUsIGJ1dCBp dAogCSBzaG91bGQgbmV2ZXIgYmUgcHJlZml4ZWQuICAqLwpAQCAtMjE4MzUsNyArMjE4Mzks NyBAQCB0eXBlbmFtZV9jb25jYXQgKHN0cnVjdCBvYnN0YWNrICpvYnMsIGNvbnN0IGNoYXIg KnByZWZpeCwgY29uc3QgY2hhciAqc3VmZml4LAogICAgICAgZWxzZQogCXNlcCA9ICIuIjsK ICAgICB9Ci0gIGVsc2UgaWYgKGN1LT5wZXJfY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfZm9y dHJhbiAmJiBwaHlzbmFtZSkKKyAgZWxzZSBpZiAoY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2Vf Zm9ydHJhbiAmJiBwaHlzbmFtZSkKICAgICB7CiAgICAgICAvKiBUaGlzIGlzIGdmb3J0cmFu IHNwZWNpZmljIG1hbmdsaW5nLiAgTm9ybWFsbHkgRFdfQVRfbGlua2FnZV9uYW1lIG9yCiAJ IERXX0FUX01JUFNfbGlua2FnZV9uYW1lIGlzIHByZWZlcnJlZCBhbmQgdXNlZCBpbnN0ZWFk LiAgKi8KQEAgLTIxODc2LDcgKzIxODgwLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKgogZHdh cmYyX2Nhbm9uaWNhbGl6ZV9uYW1lIChjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSwKIAkJCSAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCiB7Ci0gIGlmIChuYW1l ICYmIGN1LT5wZXJfY3UtPmxhbmcgKCkgPT0gbGFuZ3VhZ2VfY3BsdXMpCisgIGlmIChuYW1l ICYmIGN1LT5sYW5nICgpID09IGxhbmd1YWdlX2NwbHVzKQogICAgIHsKICAgICAgIGdkYjo6 dW5pcXVlX3htYWxsb2NfcHRyPGNoYXI+IGNhbm9uX25hbWUKIAk9IGNwX2Nhbm9uaWNhbGl6 ZV9zdHJpbmcgKG5hbWUpOwpAQCAtMjIyNTMsMTAgKzIyMjU3LDEwIEBAIGZvbGxvd19kaWVf b2Zmc2V0IChzZWN0X29mZnNldCBzZWN0X29mZiwgaW50IG9mZnNldF9pbl9kd3osCiAJIEV2 ZW4gaWYgbWF5YmVfcXVldWVfY29tcF91bml0IGRvZXNuJ3QgcmVxdWlyZSB1cyB0byBsb2Fk IHRoZSBDVSdzIERJRXMsCiAJIGl0IGRvZXNuJ3QgbWVhbiB0aGV5IGFyZSBjdXJyZW50bHkg bG9hZGVkLiAgU2luY2Ugd2UgcmVxdWlyZSB0aGVtCiAJIHRvIGJlIGxvYWRlZCwgd2UgbXVz dCBjaGVjayBmb3Igb3Vyc2VsdmVzLiAgKi8KLSAgICAgIGlmIChtYXliZV9xdWV1ZV9jb21w X3VuaXQgKGN1LCBwZXJfY3UsIHBlcl9vYmpmaWxlLCBjdS0+cGVyX2N1LT5sYW5nICgpKQor ICAgICAgaWYgKG1heWJlX3F1ZXVlX2NvbXBfdW5pdCAoY3UsIHBlcl9jdSwgcGVyX29iamZp bGUsIGN1LT5sYW5nICgpKQogCSAgfHwgcGVyX29iamZpbGUtPmdldF9jdSAocGVyX2N1KSA9 PSBudWxscHRyKQogCWxvYWRfZnVsbF9jb21wX3VuaXQgKHBlcl9jdSwgcGVyX29iamZpbGUs IHBlcl9vYmpmaWxlLT5nZXRfY3UgKHBlcl9jdSksCi0JCQkgICAgIGZhbHNlLCBjdS0+cGVy X2N1LT5sYW5nICgpKTsKKwkJCSAgICAgZmFsc2UsIGN1LT5sYW5nICgpKTsKIAogICAgICAg dGFyZ2V0X2N1ID0gcGVyX29iamZpbGUtPmdldF9jdSAocGVyX2N1KTsKICAgICAgIGdkYl9h c3NlcnQgKHRhcmdldF9jdSAhPSBudWxscHRyKTsKQEAgLTIzNTg1LDcgKzIzNTg5LDYgQEAg cHJlcGFyZV9vbmVfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwgc3RydWN0IGRp ZV9pbmZvICpjb21wX3VuaXRfZGllLAogICBlbHNlCiAgICAgbGFuZyA9IHByZXRlbmRfbGFu Z3VhZ2U7CiAKLSAgY3UtPnBlcl9jdS0+c2V0X2xhbmcgKGxhbmcpOwogICBjdS0+bGFuZ3Vh Z2VfZGVmbiA9IGxhbmd1YWdlX2RlZiAobGFuZyk7CiB9CiAKZGlmZiAtLWdpdCBhL2dkYi9k d2FyZjIvcmVhZC5oIGIvZ2RiL2R3YXJmMi9yZWFkLmgKaW5kZXggMjJiNGRjMmY4NjcuLmI3 M2FjMGY4NjYxIDEwMDY0NAotLS0gYS9nZGIvZHdhcmYyL3JlYWQuaAorKysgYi9nZGIvZHdh cmYyL3JlYWQuaApAQCAtMTA5LDcgKzEwOSw2IEBAIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2Rh dGEKICAgICAgIG1hcmsgKGZhbHNlKSwKICAgICAgIGZpbGVzX3JlYWQgKGZhbHNlKSwKICAg ICAgIG1fdW5pdF90eXBlIHt9LAotICAgICAgbV9sYW5nIChsYW5ndWFnZV91bmtub3duKSwK ICAgICAgIHNjYW5uZWQgKGZhbHNlKQogICB7CiAgIH0KQEAgLTE4MiwxMSArMTgxLDYgQEAg c3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YQogICAgIEVOVU1fQklURklFTEQgKGR3YXJmX3Vu aXRfdHlwZSkgbV91bml0X3R5cGUgOiA4OwogICB9OwogCi0gIHN0cnVjdCB7IAotICAgIC8q IFRoZSBsYW5ndWFnZSBvZiB0aGlzIENVLiAgKi8KLSAgICBFTlVNX0JJVEZJRUxEIChsYW5n dWFnZSkgbV9sYW5nIDogTEFOR1VBR0VfQklUUzsKLSAgfTsKLQogcHVibGljOgogICAvKiBU cnVlIGlmIHRoaXMgQ1UgaGFzIGJlZW4gc2Nhbm5lZCBieSB0aGUgaW5kZXhlcjsgZmFsc2Ug aWYKICAgICAgbm90LiAgKi8KQEAgLTMyOSwyMSArMzIzLDYgQEAgc3RydWN0IGR3YXJmMl9w ZXJfY3VfZGF0YQogICAgICAgZ2RiX2Fzc2VydCAobV91bml0X3R5cGUgPT0gdW5pdF90eXBl KTsKICAgfQogCi0gIGVudW0gbGFuZ3VhZ2UgbGFuZyAoKSBjb25zdAotICB7Ci0gICAgZ2Ri X2Fzc2VydCAobV9sYW5nICE9IGxhbmd1YWdlX3Vua25vd24pOwotICAgIHJldHVybiBtX2xh bmc7Ci0gIH0KLQotICB2b2lkIHNldF9sYW5nIChlbnVtIGxhbmd1YWdlIGxhbmcpCi0gIHsK LSAgICAvKiBXZSdkIGxpa2UgdG8gYmUgbW9yZSBzdHJpY3QgaGVyZSwgc2ltaWxhciB0byB3 aGF0IGlzIGRvbmUgaW4KLSAgICAgICBzZXRfdW5pdF90eXBlLCAgYnV0IGN1cnJlbnRseSBh IHBhcnRpYWwgdW5pdCBjYW4gZ28gZnJvbSB1bmtub3duIHRvCi0gICAgICAgbWluaW1hbCB0 byBhZGEgdG8gYy4gICovCi0gICAgaWYgKG1fbGFuZyAhPSBsYW5nKQotICAgICAgbV9sYW5n ID0gbGFuZzsKLSAgfQotCiAgIC8qIEZyZWUgYW55IGNhY2hlZCBmaWxlIG5hbWVzLiAgKi8K ICAgdm9pZCBmcmVlX2NhY2hlZF9maWxlX25hbWVzICgpOwogfTsK --------------Pujl0gPHpzdsUqIlbfWCAlwX--