From mboxrd@z Thu Jan 1 00:00:00 1970 From: Baoquan He Subject: [PATCH v4 1/3] resource: Use list_head to link sibling resource Date: Mon, 7 May 2018 14:32:22 +0800 Message-ID: <20180507063224.24229-2-bhe@redhat.com> References: <20180507063224.24229-1-bhe@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180507063224.24229-1-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linux-nvdimm-bounces-hn68Rpc1hR1g9hUCZPvPmw@public.gmane.org Sender: "Linux-nvdimm" To: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org, robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, dan.j.williams-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, nicolas.pitre-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org, fengguang.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, bp-l3A5Bk7waGM@public.gmane.org Cc: brijesh.singh-5C7GfCeVMHo@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, airlied-cv59FeDIM0c@public.gmane.org, linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, richard.weiyang-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, keith.busch-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, jcmvbkbc-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, baiyaowei-0p4V/sDNsUmm0O/7XYngnFaTQe2KTcn/@public.gmane.org, kys-0li6OtcxBFHby3iVrkZq2A@public.gmane.org, frowand.list-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, lorenzo.pieralisi-5wv7dgnIgG8@public.gmane.org, sthemmin-0li6OtcxBFHby3iVrkZq2A@public.gmane.org, Baoquan He , linux-nvdimm-hn68Rpc1hR1g9hUCZPvPmw@public.gmane.org, patrik.r.jakobsson-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, linux-input-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, gustavo-THi1TnShQwVAfugRpC6u6w@public.gmane.org, dyoung-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, thomas.lendacky-5C7GfCeVMHo@public.gmane.org, haiyangz-0li6OtcxBFHby3iVrkZq2A@public.gmane.org, maarten.lankhorst-VuQAYsv1563Yd54FQh9/CA@public.gmane.org, jglisse-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, bhelgaas-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org, yinghai-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, jonathan.derrick-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, chris-YvXeqwSYzG2sTnJN9+BGXg@public.gmane.org, monstr-pSz03upnqPeHXe+LvDLADg@public.gmane.org, linux-parisc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org, dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, kexec-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org, devel-tBiZLqfeLfOHmIFyCCdPziST3g8Odh+X@public.gmane.org, davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org List-Id: devicetree@vger.kernel.org VGhlIHN0cnVjdCByZXNvdXJjZSB1c2VzIHNpbmdseSBsaW5rZWQgbGlzdCB0byBsaW5rIHNpYmxp bmdzLCBpbXBsZW1lbnRlZApieSBwb2ludGVyIG9wZXJhdGlvbi4gUmVwbGFjZSBpdCB3aXRoIGxp c3RfaGVhZCBmb3IgYmV0dGVyIGNvZGUgcmVhZGFiaWxpdHkuCgpCYXNlZCBvbiB0aGlzIGxpc3Rf aGVhZCByZXBsYWNlbWVudCwgaXQgd2lsbCBiZSB2ZXJ5IGVhc3kgdG8gZG8gcmV2ZXJzZQppdGVy YXRpb24gb24gaW9tZW1fcmVzb3VyY2UncyBzaWJsaW5nIGxpc3QgaW4gbGF0ZXIgcGF0Y2guCgpC ZXNpZGVzLCB0eXBlIG9mIG1lbWJlciB2YXJpYWJsZXMgb2Ygc3RydWN0IHJlc291cmNlLCBzaWJs aW5nIGFuZCBjaGlsZCwgYXJlCmNoYW5nZWQgZnJvbSAnc3RydWN0IHJlc291cmNlIConIHRvICdz dHJ1Y3QgbGlzdF9oZWFkJy4gVGhpcyBicmluZ3MgdHdvCnBvaW50ZXJzIG9mIHNpemUgaW5jcmVh c2UuCgpTdWdnZXN0ZWQtYnk6IEFuZHJldyBNb3J0b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5v cmc+ClNpZ25lZC1vZmYtYnk6IEJhb3F1YW4gSGUgPGJoZUByZWRoYXQuY29tPgpDYzogUGF0cmlr IEpha29ic3NvbiA8cGF0cmlrLnIuamFrb2Jzc29uQGdtYWlsLmNvbT4KQ2M6IERhdmlkIEFpcmxp ZSA8YWlybGllZEBsaW51eC5pZT4KQ2M6ICJLLiBZLiBTcmluaXZhc2FuIiA8a3lzQG1pY3Jvc29m dC5jb20+CkNjOiBIYWl5YW5nIFpoYW5nIDxoYWl5YW5nekBtaWNyb3NvZnQuY29tPgpDYzogU3Rl cGhlbiBIZW1taW5nZXIgPHN0aGVtbWluQG1pY3Jvc29mdC5jb20+CkNjOiBEbWl0cnkgVG9yb2to b3YgPGRtaXRyeS50b3Jva2hvdkBnbWFpbC5jb20+CkNjOiBEYW4gV2lsbGlhbXMgPGRhbi5qLndp bGxpYW1zQGludGVsLmNvbT4KQ2M6IFJvYiBIZXJyaW5nIDxyb2JoK2R0QGtlcm5lbC5vcmc+CkNj OiBGcmFuayBSb3dhbmQgPGZyb3dhbmQubGlzdEBnbWFpbC5jb20+CkNjOiBLZWl0aCBCdXNjaCA8 a2VpdGguYnVzY2hAaW50ZWwuY29tPgpDYzogSm9uYXRoYW4gRGVycmljayA8am9uYXRoYW4uZGVy cmlja0BpbnRlbC5jb20+CkNjOiBMb3JlbnpvIFBpZXJhbGlzaSA8bG9yZW56by5waWVyYWxpc2lA YXJtLmNvbT4KQ2M6IEJqb3JuIEhlbGdhYXMgPGJoZWxnYWFzQGdvb2dsZS5jb20+CkNjOiBUaG9t YXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4KQ2M6IEJyaWplc2ggU2luZ2ggPGJyaWpl c2guc2luZ2hAYW1kLmNvbT4KQ2M6ICJKw6lyw7RtZSBHbGlzc2UiIDxqZ2xpc3NlQHJlZGhhdC5j b20+CkNjOiBCb3Jpc2xhdiBQZXRrb3YgPGJwQHN1c2UuZGU+CkNjOiBUb20gTGVuZGFja3kgPHRo b21hcy5sZW5kYWNreUBhbWQuY29tPgpDYzogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGlu dXhmb3VuZGF0aW9uLm9yZz4KQ2M6IFlhb3dlaSBCYWkgPGJhaXlhb3dlaUBjbXNzLmNoaW5hbW9i aWxlLmNvbT4KQ2M6IFdlaSBZYW5nIDxyaWNoYXJkLndlaXlhbmdAZ21haWwuY29tPgpDYzogZGV2 ZWxAbGludXhkcml2ZXJwcm9qZWN0Lm9yZwpDYzogbGludXgtaW5wdXRAdmdlci5rZXJuZWwub3Jn CkNjOiBsaW51eC1udmRpbW1AbGlzdHMuMDEub3JnCkNjOiBkZXZpY2V0cmVlQHZnZXIua2VybmVs Lm9yZwpDYzogbGludXgtcGNpQHZnZXIua2VybmVsLm9yZwotLS0KdjMtPnY0OgogIEZpeCBzZXZl cmFsIGJ1Z3MgdGVzdCByb2JvdCByZXBvcnRlZC4gQW5kIGNoYW5nZSBwYXRjaCBsb2cuCgp2Mi0+ djM6CiAgUmVuYW1lIHJlc291cmNlIGZ1bmN0aW9ucyBmaXJzdF9jaGlsZCgpIGFuZCBzaWJsaW5n KCkgdG8KICByZXNvdXJjZV9maXJzdF9jaGlscygpIGFuZCByZXNvdXJjZV9zaWJsaW5nKCkuIERh biBzdWdnZXN0ZWQgdGhpcy4KCiAgTW92ZSByZXNvdXJjZV9maXJzdF9jaGlscygpIGFuZCByZXNv dXJjZV9zaWJsaW5nKCkgdG8gbGludXgvaW9wb3J0LmgKICBhbmQgbWFrZSB0aGVtIGFzIGlubGlu ZSBmdW5jdGlvbi4gUm9iIHN1Z2dlc3RlZCB0aGlzLiBBY2NvcmRpbmdseSBhZGQKICBsaW51eC9s aXN0LmggaW5jbHVkaW5nIGluIGxpbnV4L2lvcG9ydC5oLCBwbGVhc2UgaGVscCByZXZpZXcgaWYg dGhpcwogIGJyaW5nIGVmZmljaWVuY3kgZGVncmFkYXRpb24gb3IgY29kZSByZWR1bmRhbmN5LgoK ICBUaGUgY2hhbmdlIG9uIHN0cnVjdCByZXNvdXJjZSB7fSBicmluZyB0d28gcG9pbnRlcnMgb2Yg c2l6ZSBpbmNyZWFzZSwKICBtZW50aW9uIHRoaXMgaW4gZ2l0IGxvZyB0byBtYWtlIGl0IG1vcmUg c3BlY2lmaWNhbGx5LCBSb2Igc3VnZ2VzdGVkCiAgdGhpcy4KCiBhcmNoL21pY3JvYmxhemUvcGNp L3BjaS1jb21tb24uYyAgICAgICAgICAgIHwgIDMxICsrKy0tCiBhcmNoL3NwYXJjL2tlcm5lbC9p b3BvcnQuYyAgICAgICAgICAgICAgICAgIHwgICAyICstCiBhcmNoL3h0ZW5zYS9pbmNsdWRlL2Fz bS9wY2ktYnJpZGdlLmggICAgICAgIHwgICA0ICstCiBkcml2ZXJzL2Vpc2EvZWlzYS1idXMuYyAg ICAgICAgICAgICAgICAgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9kcm1fbWVtb3J5LmMg ICAgICAgICAgICAgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9nbWE1MDAvZ3R0LmMgICAg ICAgICAgICAgICAgfCAgIDUgKy0KIGRyaXZlcnMvaHYvdm1idXNfZHJ2LmMgICAgICAgICAgICAg ICAgICAgICAgfCAgNTIgKysrKy0tLS0KIGRyaXZlcnMvaW5wdXQvam95c3RpY2svaWZvcmNlL2lm b3JjZS1tYWluLmMgfCAgIDQgKy0KIGRyaXZlcnMvbnZkaW1tL2U4MjAuYyAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvbnZkaW1tL25hbWVzcGFjZV9kZXZzLmMgICAgICAg ICAgICAgfCAgIDYgKy0KIGRyaXZlcnMvbnZkaW1tL25kLmggICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDUgKy0KIGRyaXZlcnMvb2YvYWRkcmVzcy5jICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDQgKy0KIGRyaXZlcnMvcGFyaXNjL2xiYV9wY2kuYyAgICAgICAgICAgICAgICAgICAgfCAg IDQgKy0KIGRyaXZlcnMvcGNpL2hvc3Qvdm1kLmMgICAgICAgICAgICAgICAgICAgICAgfCAgIDgg Ky0KIGRyaXZlcnMvcGNpL3Byb2JlLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwog ZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogaW5j bHVkZS9saW51eC9pb3BvcnQuaCAgICAgICAgICAgICAgICAgICAgICB8ICAxNyArKy0KIGtlcm5l bC9yZXNvdXJjZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxODEgKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLQogMTggZmlsZXMgY2hhbmdlZCwgMTcwIGluc2VydGlvbnMoKyksIDE2 NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL21pY3JvYmxhemUvcGNpL3BjaS1jb21t b24uYyBiL2FyY2gvbWljcm9ibGF6ZS9wY2kvcGNpLWNvbW1vbi5jCmluZGV4IDE2MWY5NzU4YzYz MS4uNTZkMTg5Y2I0YmU0IDEwMDY0NAotLS0gYS9hcmNoL21pY3JvYmxhemUvcGNpL3BjaS1jb21t b24uYworKysgYi9hcmNoL21pY3JvYmxhemUvcGNpL3BjaS1jb21tb24uYwpAQCAtNTMzLDcgKzUz Myw5IEBAIHZvaWQgcGNpX3Byb2Nlc3NfYnJpZGdlX09GX3JhbmdlcyhzdHJ1Y3QgcGNpX2NvbnRy b2xsZXIgKmhvc2UsCiAJCQlyZXMtPmZsYWdzID0gcmFuZ2UuZmxhZ3M7CiAJCQlyZXMtPnN0YXJ0 ID0gcmFuZ2UuY3B1X2FkZHI7CiAJCQlyZXMtPmVuZCA9IHJhbmdlLmNwdV9hZGRyICsgcmFuZ2Uu c2l6ZSAtIDE7Ci0JCQlyZXMtPnBhcmVudCA9IHJlcy0+Y2hpbGQgPSByZXMtPnNpYmxpbmcgPSBO VUxMOworCQkJcmVzLT5wYXJlbnQgPSBOVUxMOworCQkJSU5JVF9MSVNUX0hFQUQoJnJlcy0+Y2hp bGQpOworCQkJSU5JVF9MSVNUX0hFQUQoJnJlcy0+c2libGluZyk7CiAJCX0KIAl9CiAKQEAgLTYy NSwyOCArNjI3LDMxIEBAIEVYUE9SVF9TWU1CT0wocGNpYmlvc19hZGRfZGV2aWNlKTsKIHN0YXRp YyBpbnQgX19pbml0IHJlcGFyZW50X3Jlc291cmNlcyhzdHJ1Y3QgcmVzb3VyY2UgKnBhcmVudCwK IAkJCQkgICAgIHN0cnVjdCByZXNvdXJjZSAqcmVzKQogewotCXN0cnVjdCByZXNvdXJjZSAqcCwg KipwcDsKLQlzdHJ1Y3QgcmVzb3VyY2UgKipmaXJzdHBwID0gTlVMTDsKKwlzdHJ1Y3QgcmVzb3Vy Y2UgKnAsICpmaXJzdCA9IE5VTEw7CiAKLQlmb3IgKHBwID0gJnBhcmVudC0+Y2hpbGQ7IChwID0g KnBwKSAhPSBOVUxMOyBwcCA9ICZwLT5zaWJsaW5nKSB7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShw LCAmcGFyZW50LT5jaGlsZCwgc2libGluZykgewogCQlpZiAocC0+ZW5kIDwgcmVzLT5zdGFydCkK IAkJCWNvbnRpbnVlOwogCQlpZiAocmVzLT5lbmQgPCBwLT5zdGFydCkKIAkJCWJyZWFrOwogCQlp ZiAocC0+c3RhcnQgPCByZXMtPnN0YXJ0IHx8IHAtPmVuZCA+IHJlcy0+ZW5kKQogCQkJcmV0dXJu IC0xOwkvKiBub3QgY29tcGxldGVseSBjb250YWluZWQgKi8KLQkJaWYgKGZpcnN0cHAgPT0gTlVM TCkKLQkJCWZpcnN0cHAgPSBwcDsKKwkJaWYgKGZpcnN0ID09IE5VTEwpCisJCQlmaXJzdCA9IHA7 CiAJfQotCWlmIChmaXJzdHBwID09IE5VTEwpCisJaWYgKGZpcnN0ID09IE5VTEwpCiAJCXJldHVy biAtMTsJLyogZGlkbid0IGZpbmQgYW55IGNvbmZsaWN0aW5nIGVudHJpZXM/ICovCiAJcmVzLT5w YXJlbnQgPSBwYXJlbnQ7Ci0JcmVzLT5jaGlsZCA9ICpmaXJzdHBwOwotCXJlcy0+c2libGluZyA9 ICpwcDsKLQkqZmlyc3RwcCA9IHJlczsKLQkqcHAgPSBOVUxMOwotCWZvciAocCA9IHJlcy0+Y2hp bGQ7IHAgIT0gTlVMTDsgcCA9IHAtPnNpYmxpbmcpIHsKLQkJcC0+cGFyZW50ID0gcmVzOworCWxp c3RfYWRkKCZyZXMtPnNpYmxpbmcsICZwLT5zaWJsaW5nLnByZXYpOworCUlOSVRfTElTVF9IRUFE KCZyZXMtPmNoaWxkKTsKKworCS8qCisJICogRnJvbSBmaXJzdCB0byBwJ3MgcHJldmlvdXMgc2li bGluZywgdGhleSBhbGwgZmFsbCBpbnRvCisJICogcmVzJ3MgcmVnaW9uLCBjaGFuZ2UgdGhlbSBh cyByZXMncyBjaGlsZHJlbi4KKwkgKi8KKwlsaXN0X2N1dF9wb3NpdGlvbigmcmVzLT5jaGlsZCwg Zmlyc3QtPnNpYmxpbmcucHJldiwgcmVzLT5zaWJsaW5nLnByZXYpOworCWxpc3RfZm9yX2VhY2hf ZW50cnkocCwgJm5ldy0+Y2hpbGQsIHNpYmxpbmcpIHsKKyAgICAgICAgICAgICAgICBwLT5wYXJl bnQgPSBuZXc7CiAJCXByX2RlYnVnKCJQQ0k6IFJlcGFyZW50ZWQgJXMgWyVsbHguLiVsbHhdIHVu ZGVyICVzXG4iLAogCQkJIHAtPm5hbWUsCiAJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZylwLT5zdGFy dCwKZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMva2VybmVsL2lvcG9ydC5jIGIvYXJjaC9zcGFyYy9r ZXJuZWwvaW9wb3J0LmMKaW5kZXggM2JjZWY5Y2U3NGRmLi40ZTkxZmJiYmVkY2MgMTAwNjQ0Ci0t LSBhL2FyY2gvc3BhcmMva2VybmVsL2lvcG9ydC5jCisrKyBiL2FyY2gvc3BhcmMva2VybmVsL2lv cG9ydC5jCkBAIC02NjksNyArNjY5LDcgQEAgc3RhdGljIGludCBzcGFyY19pb19wcm9jX3Nob3co c3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KQogCXN0cnVjdCByZXNvdXJjZSAqcm9vdCA9IG0t PnByaXZhdGUsICpyOwogCWNvbnN0IGNoYXIgKm5tOwogCi0JZm9yIChyID0gcm9vdC0+Y2hpbGQ7 IHIgIT0gTlVMTDsgciA9IHItPnNpYmxpbmcpIHsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHIsICZy b290LT5jaGlsZCwgc2libGluZykgewogCQlpZiAoKG5tID0gci0+bmFtZSkgPT0gTlVMTCkgbm0g PSAiPz8/IjsKIAkJc2VxX3ByaW50ZihtLCAiJTAxNmxseC0lMDE2bGx4OiAlc1xuIiwKIAkJCQko dW5zaWduZWQgbG9uZyBsb25nKXItPnN0YXJ0LApkaWZmIC0tZ2l0IGEvYXJjaC94dGVuc2EvaW5j bHVkZS9hc20vcGNpLWJyaWRnZS5oIGIvYXJjaC94dGVuc2EvaW5jbHVkZS9hc20vcGNpLWJyaWRn ZS5oCmluZGV4IDBiNjhjNzZlYzFlNi4uZjQ4N2IwNjgxN2RmIDEwMDY0NAotLS0gYS9hcmNoL3h0 ZW5zYS9pbmNsdWRlL2FzbS9wY2ktYnJpZGdlLmgKKysrIGIvYXJjaC94dGVuc2EvaW5jbHVkZS9h c20vcGNpLWJyaWRnZS5oCkBAIC03MSw4ICs3MSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwY2li aW9zX2luaXRfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyZXMsCiAJcmVzLT5mbGFncyA9IGZs YWdzOwogCXJlcy0+bmFtZSA9IG5hbWU7CiAJcmVzLT5wYXJlbnQgPSBOVUxMOwotCXJlcy0+c2li bGluZyA9IE5VTEw7Ci0JcmVzLT5jaGlsZCA9IE5VTEw7CisJSU5JVF9MSVNUX0hFQUQoJnJlcy0+ Y2hpbGQpOworCUlOSVRfTElTVF9IRUFEKCZyZXMtPnNpYmxpbmcpOwogfQogCiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZWlzYS9laXNhLWJ1cy5jIGIvZHJpdmVycy9laXNhL2Vpc2EtYnVzLmMKaW5k ZXggMWU4MDYyZjZkYmZjLi5kYmE3OGY3NWZkMDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZWlzYS9l aXNhLWJ1cy5jCisrKyBiL2RyaXZlcnMvZWlzYS9laXNhLWJ1cy5jCkBAIC00MDgsNiArNDA4LDgg QEAgc3RhdGljIHN0cnVjdCByZXNvdXJjZSBlaXNhX3Jvb3RfcmVzID0gewogCS5zdGFydCA9IDAs CiAJLmVuZCAgID0gMHhmZmZmZmZmZiwKIAkuZmxhZ3MgPSBJT1JFU09VUkNFX0lPLAorCS5zaWJs aW5nID0gTElTVF9IRUFEX0lOSVQoZWlzYV9yb290X3Jlcy5zaWJsaW5nKSwKKwkuY2hpbGQgID0g TElTVF9IRUFEX0lOSVQoZWlzYV9yb290X3Jlcy5jaGlsZCksCiB9OwogCiBzdGF0aWMgaW50IGVp c2FfYnVzX2NvdW50OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9tZW1vcnkuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fbWVtb3J5LmMKaW5kZXggM2M1NDA0NDIxNGRiLi41M2UzMDBh OTkzZGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fbWVtb3J5LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2RybV9tZW1vcnkuYwpAQCAtMTU1LDkgKzE1NSw4IEBAIHU2NCBkcm1fZ2V0 X21heF9pb21lbSh2b2lkKQogCXN0cnVjdCByZXNvdXJjZSAqdG1wOwogCXJlc291cmNlX3NpemVf dCBtYXhfaW9tZW0gPSAwOwogCi0JZm9yICh0bXAgPSBpb21lbV9yZXNvdXJjZS5jaGlsZDsgdG1w OyB0bXAgPSB0bXAtPnNpYmxpbmcpIHsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgJmlvbWVt X3Jlc291cmNlLmNoaWxkLCBzaWJsaW5nKQogCQltYXhfaW9tZW0gPSBtYXgobWF4X2lvbWVtLCAg dG1wLT5lbmQpOwotCX0KIAogCXJldHVybiBtYXhfaW9tZW07CiB9CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZ21hNTAwL2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2dtYTUwMC9ndHQuYwpp bmRleCAzOTQ5YjA5OTA5MTYuLmFkZGQzYmMwMDlhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2dtYTUwMC9ndHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZ21hNTAwL2d0dC5jCkBAIC01 NjUsNyArNTY1LDcgQEAgaW50IHBzYl9ndHRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBp bnQgcmVzdW1lKQogaW50IHBzYl9ndHRfcmVzdG9yZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQog ewogCXN0cnVjdCBkcm1fcHNiX3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK LQlzdHJ1Y3QgcmVzb3VyY2UgKnIgPSBkZXZfcHJpdi0+Z3R0X21lbS0+Y2hpbGQ7CisJc3RydWN0 IHJlc291cmNlICpyOwogCXN0cnVjdCBndHRfcmFuZ2UgKnJhbmdlOwogCXVuc2lnbmVkIGludCBy ZXN0b3JlZCA9IDAsIHRvdGFsID0gMCwgc2l6ZSA9IDA7CiAKQEAgLTU3MywxNCArNTczLDEzIEBA IGludCBwc2JfZ3R0X3Jlc3RvcmUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAltdXRleF9sb2Nr KCZkZXZfcHJpdi0+Z3R0X211dGV4KTsKIAlwc2JfZ3R0X2luaXQoZGV2LCAxKTsKIAotCXdoaWxl IChyICE9IE5VTEwpIHsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHIsICZkZXZfcHJpdi0+Z3R0X21l bS0+Y2hpbGQsIHNpYmxpbmcpIHsKIAkJcmFuZ2UgPSBjb250YWluZXJfb2Yociwgc3RydWN0IGd0 dF9yYW5nZSwgcmVzb3VyY2UpOwogCQlpZiAocmFuZ2UtPnBhZ2VzKSB7CiAJCQlwc2JfZ3R0X2lu c2VydChkZXYsIHJhbmdlLCAxKTsKIAkJCXNpemUgKz0gcmFuZ2UtPnJlc291cmNlLmVuZCAtIHJh bmdlLT5yZXNvdXJjZS5zdGFydDsKIAkJCXJlc3RvcmVkKys7CiAJCX0KLQkJciA9IHItPnNpYmxp bmc7CiAJCXRvdGFsKys7CiAJfQogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmd0dF9tdXRleCk7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h2L3ZtYnVzX2Rydi5jIGIvZHJpdmVycy9odi92bWJ1c19k cnYuYwppbmRleCBiMTBmZTI2YzQ4OTEuLmQ4N2VjNWExYmM0YyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9odi92bWJ1c19kcnYuYworKysgYi9kcml2ZXJzL2h2L3ZtYnVzX2Rydi5jCkBAIC0xNDEyLDkg KzE0MTIsOCBAQCBzdGF0aWMgYWNwaV9zdGF0dXMgdm1idXNfd2Fsa19yZXNvdXJjZXMoc3RydWN0 IGFjcGlfcmVzb3VyY2UgKnJlcywgdm9pZCAqY3R4KQogewogCXJlc291cmNlX3NpemVfdCBzdGFy dCA9IDA7CiAJcmVzb3VyY2Vfc2l6ZV90IGVuZCA9IDA7Ci0Jc3RydWN0IHJlc291cmNlICpuZXdf cmVzOworCXN0cnVjdCByZXNvdXJjZSAqbmV3X3JlcywgKnRtcDsKIAlzdHJ1Y3QgcmVzb3VyY2Ug KipvbGRfcmVzID0gJmh5cGVydl9tbWlvOwotCXN0cnVjdCByZXNvdXJjZSAqKnByZXZfcmVzID0g TlVMTDsKIAogCXN3aXRjaCAocmVzLT50eXBlKSB7CiAKQEAgLTE0NjEsNDQgKzE0NjAsMzYgQEAg c3RhdGljIGFjcGlfc3RhdHVzIHZtYnVzX3dhbGtfcmVzb3VyY2VzKHN0cnVjdCBhY3BpX3Jlc291 cmNlICpyZXMsIHZvaWQgKmN0eCkKIAkvKgogCSAqIElmIHR3byByYW5nZXMgYXJlIGFkamFjZW50 LCBtZXJnZSB0aGVtLgogCSAqLwotCWRvIHsKLQkJaWYgKCEqb2xkX3JlcykgewotCQkJKm9sZF9y ZXMgPSBuZXdfcmVzOwotCQkJYnJlYWs7Ci0JCX0KLQotCQlpZiAoKCgqb2xkX3JlcyktPmVuZCAr IDEpID09IG5ld19yZXMtPnN0YXJ0KSB7Ci0JCQkoKm9sZF9yZXMpLT5lbmQgPSBuZXdfcmVzLT5l bmQ7CisJaWYgKCEqb2xkX3JlcykgeworCQkqb2xkX3JlcyA9IG5ld19yZXM7CisJCXJldHVybiBB RV9PSzsKKwl9CisJdG1wID0gKm9sZF9yZXM7CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9mcm9tKHRt cCwgJnRtcC0+cGFyZW50LT5jaGlsZCwgc2libGluZykgeworCQlpZiAoKHRtcC0+ZW5kICsgMSkg PT0gbmV3X3Jlcy0+c3RhcnQpIHsKKwkJCXRtcC0+ZW5kID0gbmV3X3Jlcy0+ZW5kOwogCQkJa2Zy ZWUobmV3X3Jlcyk7CiAJCQlicmVhazsKIAkJfQogCi0JCWlmICgoKm9sZF9yZXMpLT5zdGFydCA9 PSBuZXdfcmVzLT5lbmQgKyAxKSB7Ci0JCQkoKm9sZF9yZXMpLT5zdGFydCA9IG5ld19yZXMtPnN0 YXJ0OworCQlpZiAodG1wLT5zdGFydCA9PSBuZXdfcmVzLT5lbmQgKyAxKSB7CisJCQl0bXAtPnN0 YXJ0ID0gbmV3X3Jlcy0+c3RhcnQ7CiAJCQlrZnJlZShuZXdfcmVzKTsKIAkJCWJyZWFrOwogCQl9 CiAKLQkJaWYgKCgqb2xkX3JlcyktPnN0YXJ0ID4gbmV3X3Jlcy0+ZW5kKSB7Ci0JCQluZXdfcmVz LT5zaWJsaW5nID0gKm9sZF9yZXM7Ci0JCQlpZiAocHJldl9yZXMpCi0JCQkJKCpwcmV2X3Jlcykt PnNpYmxpbmcgPSBuZXdfcmVzOwotCQkJKm9sZF9yZXMgPSBuZXdfcmVzOworCQlpZiAodG1wLT5z dGFydCA+IG5ld19yZXMtPmVuZCkgeworCQkJbGlzdF9hZGQoJm5ld19yZXMtPnNpYmxpbmcsIHRt cC0+c2libGluZy5wcmV2KTsKIAkJCWJyZWFrOwogCQl9Ci0KLQkJcHJldl9yZXMgPSBvbGRfcmVz OwotCQlvbGRfcmVzID0gJigqb2xkX3JlcyktPnNpYmxpbmc7Ci0KLQl9IHdoaWxlICgxKTsKKwl9 CiAKIAlyZXR1cm4gQUVfT0s7CiB9CiAKIHN0YXRpYyBpbnQgdm1idXNfYWNwaV9yZW1vdmUoc3Ry dWN0IGFjcGlfZGV2aWNlICpkZXZpY2UpCiB7Ci0Jc3RydWN0IHJlc291cmNlICpjdXJfcmVzOwot CXN0cnVjdCByZXNvdXJjZSAqbmV4dF9yZXM7CisJc3RydWN0IHJlc291cmNlICpyZXM7CiAKIAlp ZiAoaHlwZXJ2X21taW8pIHsKIAkJaWYgKGZiX21taW8pIHsKQEAgLTE1MDcsMTAgKzE0OTgsOSBA QCBzdGF0aWMgaW50IHZtYnVzX2FjcGlfcmVtb3ZlKHN0cnVjdCBhY3BpX2RldmljZSAqZGV2aWNl KQogCQkJZmJfbW1pbyA9IE5VTEw7CiAJCX0KIAotCQlmb3IgKGN1cl9yZXMgPSBoeXBlcnZfbW1p bzsgY3VyX3JlczsgY3VyX3JlcyA9IG5leHRfcmVzKSB7Ci0JCQluZXh0X3JlcyA9IGN1cl9yZXMt PnNpYmxpbmc7Ci0JCQlrZnJlZShjdXJfcmVzKTsKLQkJfQorCQlyZXMgPSBoeXBlcnZfbW1pbzsK KwkJbGlzdF9mb3JfZWFjaF9lbnRyeV9mcm9tKHJlcywgJnJlcy0+cGFyZW50LT5jaGlsZCwgc2li bGluZykKKwkJCWtmcmVlKHJlcyk7CiAJfQogCiAJcmV0dXJuIDA7CkBAIC0xNTk2LDcgKzE1ODYs OCBAQCBpbnQgdm1idXNfYWxsb2NhdGVfbW1pbyhzdHJ1Y3QgcmVzb3VyY2UgKipuZXcsIHN0cnVj dCBodl9kZXZpY2UgKmRldmljZV9vYmosCiAJCX0KIAl9CiAKLQlmb3IgKGl0ZXIgPSBoeXBlcnZf bW1pbzsgaXRlcjsgaXRlciA9IGl0ZXItPnNpYmxpbmcpIHsKKwlpdGVyID0gaHlwZXJ2X21taW87 CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9mcm9tKGl0ZXIsICZpdGVyLT5wYXJlbnQtPmNoaWxkLCBz aWJsaW5nKSB7CiAJCWlmICgoaXRlci0+c3RhcnQgPj0gbWF4KSB8fCAoaXRlci0+ZW5kIDw9IG1p bikpCiAJCQljb250aW51ZTsKIApAQCAtMTYzOSw3ICsxNjMwLDggQEAgdm9pZCB2bWJ1c19mcmVl X21taW8ocmVzb3VyY2Vfc2l6ZV90IHN0YXJ0LCByZXNvdXJjZV9zaXplX3Qgc2l6ZSkKIAlzdHJ1 Y3QgcmVzb3VyY2UgKml0ZXI7CiAKIAlkb3duKCZoeXBlcnZfbW1pb19sb2NrKTsKLQlmb3IgKGl0 ZXIgPSBoeXBlcnZfbW1pbzsgaXRlcjsgaXRlciA9IGl0ZXItPnNpYmxpbmcpIHsKKwlpdGVyID0g aHlwZXJ2X21taW87CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9mcm9tKGl0ZXIsICZpdGVyLT5wYXJl bnQtPmNoaWxkLCBzaWJsaW5nKSB7CiAJCWlmICgoaXRlci0+c3RhcnQgPj0gc3RhcnQgKyBzaXpl KSB8fCAoaXRlci0+ZW5kIDw9IHN0YXJ0KSkKIAkJCWNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9k cml2ZXJzL2lucHV0L2pveXN0aWNrL2lmb3JjZS9pZm9yY2UtbWFpbi5jIGIvZHJpdmVycy9pbnB1 dC9qb3lzdGljay9pZm9yY2UvaWZvcmNlLW1haW4uYwppbmRleCBkYWVlYjRjN2UzYjAuLjVjMGJl MjdiMzNmZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9qb3lzdGljay9pZm9yY2UvaWZvcmNl LW1haW4uYworKysgYi9kcml2ZXJzL2lucHV0L2pveXN0aWNrL2lmb3JjZS9pZm9yY2UtbWFpbi5j CkBAIC0zMDUsOCArMzA1LDggQEAgaW50IGlmb3JjZV9pbml0X2RldmljZShzdHJ1Y3QgaWZvcmNl ICppZm9yY2UpCiAJaWZvcmNlLT5kZXZpY2VfbWVtb3J5LmVuZCA9IDIwMDsKIAlpZm9yY2UtPmRl dmljZV9tZW1vcnkuZmxhZ3MgPSBJT1JFU09VUkNFX01FTTsKIAlpZm9yY2UtPmRldmljZV9tZW1v cnkucGFyZW50ID0gTlVMTDsKLQlpZm9yY2UtPmRldmljZV9tZW1vcnkuY2hpbGQgPSBOVUxMOwot CWlmb3JjZS0+ZGV2aWNlX21lbW9yeS5zaWJsaW5nID0gTlVMTDsKKwlJTklUX0xJU1RfSEVBRCgm aWZvcmNlLT5kZXZpY2VfbWVtb3J5LmNoaWxkKTsKKwlJTklUX0xJU1RfSEVBRCgmaWZvcmNlLT5k ZXZpY2VfbWVtb3J5LnNpYmxpbmcpOwogCiAvKgogICogV2FpdCB1bnRpbCBkZXZpY2UgcmVhZHkg LSB1bnRpbCBpdCBzZW5kcyBpdHMgZmlyc3QgcmVzcG9uc2UuCmRpZmYgLS1naXQgYS9kcml2ZXJz L252ZGltbS9lODIwLmMgYi9kcml2ZXJzL252ZGltbS9lODIwLmMKaW5kZXggNmY5YTZmZmQ3Y2Rl Li41MTNlNjYxYmIwZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbnZkaW1tL2U4MjAuYworKysgYi9k cml2ZXJzL252ZGltbS9lODIwLmMKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIGludCBlODIwX3Bt ZW1fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJZ290byBlcnI7CiAJcGxh dGZvcm1fc2V0X2RydmRhdGEocGRldiwgbnZkaW1tX2J1cyk7CiAKLQlmb3IgKHAgPSBpb21lbV9y ZXNvdXJjZS5jaGlsZDsgcCA7IHAgPSBwLT5zaWJsaW5nKSB7CisJbGlzdF9mb3JfZWFjaF9lbnRy eShwLCAmaW9tZW1fcmVzb3VyY2UuY2hpbGQsIHNpYmxpbmcpIHsKIAkJc3RydWN0IG5kX3JlZ2lv bl9kZXNjIG5kcl9kZXNjOwogCiAJCWlmIChwLT5kZXNjICE9IElPUkVTX0RFU0NfUEVSU0lTVEVO VF9NRU1PUllfTEVHQUNZKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9udmRpbW0vbmFtZXNwYWNlX2Rl dnMuYyBiL2RyaXZlcnMvbnZkaW1tL25hbWVzcGFjZV9kZXZzLmMKaW5kZXggMjhhZmRkNjY4OTA1 Li5mNTNkNDEwZDk5ODEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbnZkaW1tL25hbWVzcGFjZV9kZXZz LmMKKysrIGIvZHJpdmVycy9udmRpbW0vbmFtZXNwYWNlX2RldnMuYwpAQCAtNjM3LDcgKzYzNyw3 IEBAIHN0YXRpYyByZXNvdXJjZV9zaXplX3Qgc2Nhbl9hbGxvY2F0ZShzdHJ1Y3QgbmRfcmVnaW9u ICpuZF9yZWdpb24sCiAgcmV0cnk6CiAJZmlyc3QgPSAwOwogCWZvcl9lYWNoX2RwYV9yZXNvdXJj ZShuZGQsIHJlcykgewotCQlzdHJ1Y3QgcmVzb3VyY2UgKm5leHQgPSByZXMtPnNpYmxpbmcsICpu ZXdfcmVzID0gTlVMTDsKKwkJc3RydWN0IHJlc291cmNlICpuZXh0ID0gcmVzb3VyY2Vfc2libGlu ZyhyZXMpLCAqbmV3X3JlcyA9IE5VTEw7CiAJCXJlc291cmNlX3NpemVfdCBhbGxvY2F0ZSwgYXZh aWxhYmxlID0gMDsKIAkJZW51bSBhbGxvY19sb2MgbG9jID0gQUxMT0NfRVJSOwogCQljb25zdCBj aGFyICphY3Rpb247CkBAIC03NjMsNyArNzYzLDcgQEAgc3RhdGljIHJlc291cmNlX3NpemVfdCBz Y2FuX2FsbG9jYXRlKHN0cnVjdCBuZF9yZWdpb24gKm5kX3JlZ2lvbiwKIAkgKiBhbiBpbml0aWFs ICJwbWVtLXJlc2VydmUgcGFzcyIuICBPbmx5IGRvIGFuIGluaXRpYWwgQkxLIGFsbG9jYXRpb24K IAkgKiB3aGVuIG5vbmUgb2YgdGhlIERQQSBzcGFjZSBpcyByZXNlcnZlZC4KIAkgKi8KLQlpZiAo KGlzX3BtZW0gfHwgIW5kZC0+ZHBhLmNoaWxkKSAmJiBuID09IHRvX2FsbG9jYXRlKQorCWlmICgo aXNfcG1lbSB8fCBsaXN0X2VtcHR5KCZuZGQtPmRwYS5jaGlsZCkpICYmIG4gPT0gdG9fYWxsb2Nh dGUpCiAJCXJldHVybiBpbml0X2RwYV9hbGxvY2F0aW9uKGxhYmVsX2lkLCBuZF9yZWdpb24sIG5k X21hcHBpbmcsIG4pOwogCXJldHVybiBuOwogfQpAQCAtNzc5LDcgKzc3OSw3IEBAIHN0YXRpYyBp bnQgbWVyZ2VfZHBhKHN0cnVjdCBuZF9yZWdpb24gKm5kX3JlZ2lvbiwKICByZXRyeToKIAlmb3Jf ZWFjaF9kcGFfcmVzb3VyY2UobmRkLCByZXMpIHsKIAkJaW50IHJjOwotCQlzdHJ1Y3QgcmVzb3Vy Y2UgKm5leHQgPSByZXMtPnNpYmxpbmc7CisJCXN0cnVjdCByZXNvdXJjZSAqbmV4dCA9IHJlc291 cmNlX3NpYmxpbmcocmVzKTsKIAkJcmVzb3VyY2Vfc2l6ZV90IGVuZCA9IHJlcy0+c3RhcnQgKyBy ZXNvdXJjZV9zaXplKHJlcyk7CiAKIAkJaWYgKCFuZXh0IHx8IHN0cmNtcChyZXMtPm5hbWUsIGxh YmVsX2lkLT5pZCkgIT0gMApkaWZmIC0tZ2l0IGEvZHJpdmVycy9udmRpbW0vbmQuaCBiL2RyaXZl cnMvbnZkaW1tL25kLmgKaW5kZXggMzJlMDM2NGI0OGI5Li5kYTdkYTE1ZTAzZTcgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvbnZkaW1tL25kLmgKKysrIGIvZHJpdmVycy9udmRpbW0vbmQuaApAQCAtMTAy LDExICsxMDIsMTAgQEAgdW5zaWduZWQgc2l6ZW9mX25hbWVzcGFjZV9sYWJlbChzdHJ1Y3QgbnZk aW1tX2RydmRhdGEgKm5kZCk7CiAJCSh1bnNpZ25lZCBsb25nIGxvbmcpIChyZXMgPyByZXMtPnN0 YXJ0IDogMCksICMjYXJnKQogCiAjZGVmaW5lIGZvcl9lYWNoX2RwYV9yZXNvdXJjZShuZGQsIHJl cykgXAotCWZvciAocmVzID0gKG5kZCktPmRwYS5jaGlsZDsgcmVzOyByZXMgPSByZXMtPnNpYmxp bmcpCisJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXMsICYobmRkKS0+ZHBhLmNoaWxkLCBzaWJsaW5n KQogCiAjZGVmaW5lIGZvcl9lYWNoX2RwYV9yZXNvdXJjZV9zYWZlKG5kZCwgcmVzLCBuZXh0KSBc Ci0JZm9yIChyZXMgPSAobmRkKS0+ZHBhLmNoaWxkLCBuZXh0ID0gcmVzID8gcmVzLT5zaWJsaW5n IDogTlVMTDsgXAotCQkJcmVzOyByZXMgPSBuZXh0LCBuZXh0ID0gbmV4dCA/IG5leHQtPnNpYmxp bmcgOiBOVUxMKQorCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShyZXMsIG5leHQsICYobmRkKS0+ ZHBhLmNoaWxkLCBzaWJsaW5nKQogCiBzdHJ1Y3QgbmRfcGVyY3B1X2xhbmUgewogCWludCBjb3Vu dDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvb2YvYWRkcmVzcy5jIGIvZHJpdmVycy9vZi9hZGRyZXNz LmMKaW5kZXggNTMzNDk5MTJhYzc1Li5lMmUyNTcxOWFiNTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv b2YvYWRkcmVzcy5jCisrKyBiL2RyaXZlcnMvb2YvYWRkcmVzcy5jCkBAIC0zMzAsNyArMzMwLDkg QEAgaW50IG9mX3BjaV9yYW5nZV90b19yZXNvdXJjZShzdHJ1Y3Qgb2ZfcGNpX3JhbmdlICpyYW5n ZSwKIHsKIAlpbnQgZXJyOwogCXJlcy0+ZmxhZ3MgPSByYW5nZS0+ZmxhZ3M7Ci0JcmVzLT5wYXJl bnQgPSByZXMtPmNoaWxkID0gcmVzLT5zaWJsaW5nID0gTlVMTDsKKwlyZXMtPnBhcmVudCA9IE5V TEw7CisJSU5JVF9MSVNUX0hFQUQoJnJlcy0+Y2hpbGQpOworCUlOSVRfTElTVF9IRUFEKCZyZXMt PnNpYmxpbmcpOwogCXJlcy0+bmFtZSA9IG5wLT5mdWxsX25hbWU7CiAKIAlpZiAocmVzLT5mbGFn cyAmIElPUkVTT1VSQ0VfSU8pIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGFyaXNjL2xiYV9wY2ku YyBiL2RyaXZlcnMvcGFyaXNjL2xiYV9wY2kuYwppbmRleCA2OWJkOTg0MjFlYjEuLjc0ODJiZGZk MTk1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wYXJpc2MvbGJhX3BjaS5jCisrKyBiL2RyaXZlcnMv cGFyaXNjL2xiYV9wY2kuYwpAQCAtMTcwLDggKzE3MCw4IEBAIGxiYV9kdW1wX3JlcyhzdHJ1Y3Qg cmVzb3VyY2UgKnIsIGludCBkKQogCWZvciAoaSA9IGQ7IGkgOyAtLWkpIHByaW50aygiICIpOwog CXByaW50ayhLRVJOX0RFQlVHICIlcCBbJWx4LCVseF0vJWx4XG4iLCByLAogCQkobG9uZylyLT5z dGFydCwgKGxvbmcpci0+ZW5kLCByLT5mbGFncyk7Ci0JbGJhX2R1bXBfcmVzKHItPmNoaWxkLCBk KzIpOwotCWxiYV9kdW1wX3JlcyhyLT5zaWJsaW5nLCBkKTsKKwlsYmFfZHVtcF9yZXMocmVzb3Vy Y2VfZmlyc3RfY2hpbGQoJnItPmNoaWxkKSwgZCsyKTsKKwlsYmFfZHVtcF9yZXMocmVzb3VyY2Vf c2libGluZyhyKSwgZCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvaG9zdC92bWQu YyBiL2RyaXZlcnMvcGNpL2hvc3Qvdm1kLmMKaW5kZXggOTMwYThmYTA4YmQ2Li5jMzAwMGFmOTAz ZWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2hvc3Qvdm1kLmMKKysrIGIvZHJpdmVycy9wY2kv aG9zdC92bWQuYwpAQCAtNTIwLDE0ICs1MjAsMTQgQEAgc3RhdGljIHN0cnVjdCBwY2lfb3BzIHZt ZF9vcHMgPSB7CiAKIHN0YXRpYyB2b2lkIHZtZF9hdHRhY2hfcmVzb3VyY2VzKHN0cnVjdCB2bWRf ZGV2ICp2bWQpCiB7Ci0Jdm1kLT5kZXYtPnJlc291cmNlW1ZNRF9NRU1CQVIxXS5jaGlsZCA9ICZ2 bWQtPnJlc291cmNlc1sxXTsKLQl2bWQtPmRldi0+cmVzb3VyY2VbVk1EX01FTUJBUjJdLmNoaWxk ID0gJnZtZC0+cmVzb3VyY2VzWzJdOworCWxpc3RfYWRkKCZ2bWQtPnJlc291cmNlc1sxXS5zaWJs aW5nLCAmdm1kLT5kZXYtPnJlc291cmNlW1ZNRF9NRU1CQVIxXS5jaGlsZCk7CisJbGlzdF9hZGQo JnZtZC0+cmVzb3VyY2VzWzJdLnNpYmxpbmcsICZ2bWQtPmRldi0+cmVzb3VyY2VbVk1EX01FTUJB UjJdLmNoaWxkKTsKIH0KIAogc3RhdGljIHZvaWQgdm1kX2RldGFjaF9yZXNvdXJjZXMoc3RydWN0 IHZtZF9kZXYgKnZtZCkKIHsKLQl2bWQtPmRldi0+cmVzb3VyY2VbVk1EX01FTUJBUjFdLmNoaWxk ID0gTlVMTDsKLQl2bWQtPmRldi0+cmVzb3VyY2VbVk1EX01FTUJBUjJdLmNoaWxkID0gTlVMTDsK KwlJTklUX0xJU1RfSEVBRCgmdm1kLT5kZXYtPnJlc291cmNlW1ZNRF9NRU1CQVIxXS5jaGlsZCk7 CisJSU5JVF9MSVNUX0hFQUQoJnZtZC0+ZGV2LT5yZXNvdXJjZVtWTURfTUVNQkFSMl0uY2hpbGQp OwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcHJvYmUuYyBiL2RyaXZlcnMvcGNp L3Byb2JlLmMKaW5kZXggYWM5MWI2ZmQwYmNkLi5kMTYyYzc3YmVjMjkgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvcGNpL3Byb2JlLmMKKysrIGIvZHJpdmVycy9wY2kvcHJvYmUuYwpAQCAtNTksNiArNTks OCBAQCBzdGF0aWMgc3RydWN0IHJlc291cmNlICpnZXRfcGNpX2RvbWFpbl9idXNuX3JlcyhpbnQg ZG9tYWluX25yKQogCXItPnJlcy5zdGFydCA9IDA7CiAJci0+cmVzLmVuZCA9IDB4ZmY7CiAJci0+ cmVzLmZsYWdzID0gSU9SRVNPVVJDRV9CVVMgfCBJT1JFU09VUkNFX1BDSV9GSVhFRDsKKwlJTklU X0xJU1RfSEVBRCgmci0+cmVzLmNoaWxkKTsKKwlJTklUX0xJU1RfSEVBRCgmci0+cmVzLnNpYmxp bmcpOwogCiAJbGlzdF9hZGRfdGFpbCgmci0+bGlzdCwgJnBjaV9kb21haW5fYnVzbl9yZXNfbGlz dCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3NldHVwLWJ1cy5jIGIvZHJpdmVycy9wY2kv c2V0dXAtYnVzLmMKaW5kZXggMDcyNzg0ZjU1ZWE1Li4wZDVlMzAwMDRjYTYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvcGNpL3NldHVwLWJ1cy5jCisrKyBiL2RyaXZlcnMvcGNpL3NldHVwLWJ1cy5jCkBA IC0yMTA3LDcgKzIxMDcsNyBAQCBpbnQgcGNpX3JlYXNzaWduX2JyaWRnZV9yZXNvdXJjZXMoc3Ry dWN0IHBjaV9kZXYgKmJyaWRnZSwgdW5zaWduZWQgbG9uZyB0eXBlKQogCQkJCWNvbnRpbnVlOwog CiAJCQkvKiBJZ25vcmUgQkFScyB3aGljaCBhcmUgc3RpbGwgaW4gdXNlICovCi0JCQlpZiAocmVz LT5jaGlsZCkKKwkJCWlmICghbGlzdF9lbXB0eSgmcmVzLT5jaGlsZCkpCiAJCQkJY29udGludWU7 CiAKIAkJCXJldCA9IGFkZF90b19saXN0KCZzYXZlZCwgYnJpZGdlLCByZXMsIDAsIDApOwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pb3BvcnQuaCBiL2luY2x1ZGUvbGludXgvaW9wb3J0LmgK aW5kZXggZGEwZWJhZWMyNWYwLi4yMjVkMTNkMzUwMGEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGlu dXgvaW9wb3J0LmgKKysrIGIvaW5jbHVkZS9saW51eC9pb3BvcnQuaApAQCAtMTIsNiArMTIsNyBA QAogI2lmbmRlZiBfX0FTU0VNQkxZX18KICNpbmNsdWRlIDxsaW51eC9jb21waWxlci5oPgogI2lu Y2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvbGlzdC5oPgogLyoKICAqIFJl c291cmNlcyBhcmUgdHJlZS1saWtlLCBhbGxvd2luZwogICogbmVzdGluZyBldGMuLgpAQCAtMjIs NyArMjMsOCBAQCBzdHJ1Y3QgcmVzb3VyY2UgewogCWNvbnN0IGNoYXIgKm5hbWU7CiAJdW5zaWdu ZWQgbG9uZyBmbGFnczsKIAl1bnNpZ25lZCBsb25nIGRlc2M7Ci0Jc3RydWN0IHJlc291cmNlICpw YXJlbnQsICpzaWJsaW5nLCAqY2hpbGQ7CisJc3RydWN0IGxpc3RfaGVhZCBjaGlsZCwgc2libGlu ZzsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnBhcmVudDsKIH07CiAKIC8qCkBAIC0yMTUsNyArMjE3LDYg QEAgc3RhdGljIGlubGluZSBib29sIHJlc291cmNlX2NvbnRhaW5zKHN0cnVjdCByZXNvdXJjZSAq cjEsIHN0cnVjdCByZXNvdXJjZSAqcjIpCiAJcmV0dXJuIHIxLT5zdGFydCA8PSByMi0+c3RhcnQg JiYgcjEtPmVuZCA+PSByMi0+ZW5kOwogfQogCi0KIC8qIENvbnZlbmllbmNlIHNob3J0aGFuZCB3 aXRoIGFsbG9jYXRpb24gKi8KICNkZWZpbmUgcmVxdWVzdF9yZWdpb24oc3RhcnQsbixuYW1lKQkJ X19yZXF1ZXN0X3JlZ2lvbigmaW9wb3J0X3Jlc291cmNlLCAoc3RhcnQpLCAobiksIChuYW1lKSwg MCkKICNkZWZpbmUgcmVxdWVzdF9tdXhlZF9yZWdpb24oc3RhcnQsbixuYW1lKQlfX3JlcXVlc3Rf cmVnaW9uKCZpb3BvcnRfcmVzb3VyY2UsIChzdGFydCksIChuKSwgKG5hbWUpLCBJT1JFU09VUkNF X01VWEVEKQpAQCAtMjg2LDYgKzI4NywxOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcmVzb3VyY2Vf b3ZlcmxhcHMoc3RydWN0IHJlc291cmNlICpyMSwgc3RydWN0IHJlc291cmNlICpyMikKICAgICAg ICByZXR1cm4gKHIxLT5zdGFydCA8PSByMi0+ZW5kICYmIHIxLT5lbmQgPj0gcjItPnN0YXJ0KTsK IH0KIAorc3RhdGljIGlubGluZSBzdHJ1Y3QgcmVzb3VyY2UgKnJlc291cmNlX3NpYmxpbmcoc3Ry dWN0IHJlc291cmNlICpyZXMpCit7CisJaWYgKHJlcy0+cGFyZW50ICYmICFsaXN0X2lzX2xhc3Qo JnJlcy0+c2libGluZywgJnJlcy0+cGFyZW50LT5jaGlsZCkpCisJCXJldHVybiBsaXN0X25leHRf ZW50cnkocmVzLCBzaWJsaW5nKTsKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGlubGluZSBz dHJ1Y3QgcmVzb3VyY2UgKnJlc291cmNlX2ZpcnN0X2NoaWxkKHN0cnVjdCBsaXN0X2hlYWQgKmhl YWQpCit7CisJcmV0dXJuIGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChoZWFkLCBzdHJ1Y3QgcmVz b3VyY2UsIHNpYmxpbmcpOworfQorCiAKICNlbmRpZiAvKiBfX0FTU0VNQkxZX18gKi8KICNlbmRp ZgkvKiBfTElOVVhfSU9QT1JUX0ggKi8KZGlmZiAtLWdpdCBhL2tlcm5lbC9yZXNvdXJjZS5jIGIv a2VybmVsL3Jlc291cmNlLmMKaW5kZXggMmFmNmMwMzg1OGI5Li40ZjU2MDk5MWMxMzAgMTAwNjQ0 Ci0tLSBhL2tlcm5lbC9yZXNvdXJjZS5jCisrKyBiL2tlcm5lbC9yZXNvdXJjZS5jCkBAIC0zMSw2 ICszMSw4IEBAIHN0cnVjdCByZXNvdXJjZSBpb3BvcnRfcmVzb3VyY2UgPSB7CiAJLnN0YXJ0CT0g MCwKIAkuZW5kCT0gSU9fU1BBQ0VfTElNSVQsCiAJLmZsYWdzCT0gSU9SRVNPVVJDRV9JTywKKwku c2libGluZyA9IExJU1RfSEVBRF9JTklUKGlvcG9ydF9yZXNvdXJjZS5zaWJsaW5nKSwKKwkuY2hp bGQgID0gTElTVF9IRUFEX0lOSVQoaW9wb3J0X3Jlc291cmNlLmNoaWxkKSwKIH07CiBFWFBPUlRf U1lNQk9MKGlvcG9ydF9yZXNvdXJjZSk7CiAKQEAgLTM5LDYgKzQxLDggQEAgc3RydWN0IHJlc291 cmNlIGlvbWVtX3Jlc291cmNlID0gewogCS5zdGFydAk9IDAsCiAJLmVuZAk9IC0xLAogCS5mbGFn cwk9IElPUkVTT1VSQ0VfTUVNLAorCS5zaWJsaW5nID0gTElTVF9IRUFEX0lOSVQoaW9tZW1fcmVz b3VyY2Uuc2libGluZyksCisJLmNoaWxkICA9IExJU1RfSEVBRF9JTklUKGlvbWVtX3Jlc291cmNl LmNoaWxkKSwKIH07CiBFWFBPUlRfU1lNQk9MKGlvbWVtX3Jlc291cmNlKTsKIApAQCAtNTcsMjAg KzYxLDIwIEBAIHN0YXRpYyBERUZJTkVfUldMT0NLKHJlc291cmNlX2xvY2spOwogICogYnkgYm9v dCBtZW0gYWZ0ZXIgdGhlIHN5c3RlbSBpcyB1cC4gU28gZm9yIHJldXNpbmcgdGhlIHJlc291cmNl IGVudHJ5CiAgKiB3ZSBuZWVkIHRvIHJlbWVtYmVyIHRoZSByZXNvdXJjZS4KICAqLwotc3RhdGlj IHN0cnVjdCByZXNvdXJjZSAqYm9vdG1lbV9yZXNvdXJjZV9mcmVlOworc3RhdGljIHN0cnVjdCBs aXN0X2hlYWQgYm9vdG1lbV9yZXNvdXJjZV9mcmVlID0gTElTVF9IRUFEX0lOSVQoYm9vdG1lbV9y ZXNvdXJjZV9mcmVlKTsKIHN0YXRpYyBERUZJTkVfU1BJTkxPQ0soYm9vdG1lbV9yZXNvdXJjZV9s b2NrKTsKIAogc3RhdGljIHN0cnVjdCByZXNvdXJjZSAqbmV4dF9yZXNvdXJjZShzdHJ1Y3QgcmVz b3VyY2UgKnAsIGJvb2wgc2libGluZ19vbmx5KQogewogCS8qIENhbGxlciB3YW50cyB0byB0cmF2 ZXJzZSB0aHJvdWdoIHNpYmxpbmdzIG9ubHkgKi8KIAlpZiAoc2libGluZ19vbmx5KQotCQlyZXR1 cm4gcC0+c2libGluZzsKKwkJcmV0dXJuIHJlc291cmNlX3NpYmxpbmcocCk7CiAKLQlpZiAocC0+ Y2hpbGQpCi0JCXJldHVybiBwLT5jaGlsZDsKLQl3aGlsZSAoIXAtPnNpYmxpbmcgJiYgcC0+cGFy ZW50KQorCWlmICghbGlzdF9lbXB0eSgmcC0+Y2hpbGQpKQorCQlyZXR1cm4gcmVzb3VyY2VfZmly c3RfY2hpbGQoJnAtPmNoaWxkKTsKKwl3aGlsZSAoIXJlc291cmNlX3NpYmxpbmcocCkgJiYgcC0+ cGFyZW50KQogCQlwID0gcC0+cGFyZW50OwotCXJldHVybiBwLT5zaWJsaW5nOworCXJldHVybiBy ZXNvdXJjZV9zaWJsaW5nKHApOwogfQogCiBzdGF0aWMgdm9pZCAqcl9uZXh0KHN0cnVjdCBzZXFf ZmlsZSAqbSwgdm9pZCAqdiwgbG9mZl90ICpwb3MpCkBAIC05MCw3ICs5NCw3IEBAIHN0YXRpYyB2 b2lkICpyX3N0YXJ0KHN0cnVjdCBzZXFfZmlsZSAqbSwgbG9mZl90ICpwb3MpCiAJc3RydWN0IHJl c291cmNlICpwID0gbS0+cHJpdmF0ZTsKIAlsb2ZmX3QgbCA9IDA7CiAJcmVhZF9sb2NrKCZyZXNv dXJjZV9sb2NrKTsKLQlmb3IgKHAgPSBwLT5jaGlsZDsgcCAmJiBsIDwgKnBvczsgcCA9IHJfbmV4 dChtLCBwLCAmbCkpCisJZm9yIChwID0gcmVzb3VyY2VfZmlyc3RfY2hpbGQoJnAtPmNoaWxkKTsg cCAmJiBsIDwgKnBvczsgcCA9IHJfbmV4dChtLCBwLCAmbCkpCiAJCTsKIAlyZXR1cm4gcDsKIH0K QEAgLTE4Niw4ICsxOTAsNyBAQCBzdGF0aWMgdm9pZCBmcmVlX3Jlc291cmNlKHN0cnVjdCByZXNv dXJjZSAqcmVzKQogCiAJaWYgKCFQYWdlU2xhYih2aXJ0X3RvX2hlYWRfcGFnZShyZXMpKSkgewog CQlzcGluX2xvY2soJmJvb3RtZW1fcmVzb3VyY2VfbG9jayk7Ci0JCXJlcy0+c2libGluZyA9IGJv b3RtZW1fcmVzb3VyY2VfZnJlZTsKLQkJYm9vdG1lbV9yZXNvdXJjZV9mcmVlID0gcmVzOworCQls aXN0X2FkZCgmcmVzLT5zaWJsaW5nLCAmYm9vdG1lbV9yZXNvdXJjZV9mcmVlKTsKIAkJc3Bpbl91 bmxvY2soJmJvb3RtZW1fcmVzb3VyY2VfbG9jayk7CiAJfSBlbHNlIHsKIAkJa2ZyZWUocmVzKTsK QEAgLTE5OSwxMCArMjAyLDkgQEAgc3RhdGljIHN0cnVjdCByZXNvdXJjZSAqYWxsb2NfcmVzb3Vy Y2UoZ2ZwX3QgZmxhZ3MpCiAJc3RydWN0IHJlc291cmNlICpyZXMgPSBOVUxMOwogCiAJc3Bpbl9s b2NrKCZib290bWVtX3Jlc291cmNlX2xvY2spOwotCWlmIChib290bWVtX3Jlc291cmNlX2ZyZWUp IHsKLQkJcmVzID0gYm9vdG1lbV9yZXNvdXJjZV9mcmVlOwotCQlib290bWVtX3Jlc291cmNlX2Zy ZWUgPSByZXMtPnNpYmxpbmc7Ci0JfQorCXJlcyA9IHJlc291cmNlX2ZpcnN0X2NoaWxkKCZib290 bWVtX3Jlc291cmNlX2ZyZWUpOworCWlmIChyZXMpCisJCWxpc3RfZGVsKCZyZXMtPnNpYmxpbmcp OwogCXNwaW5fdW5sb2NrKCZib290bWVtX3Jlc291cmNlX2xvY2spOwogCiAJaWYgKHJlcykKQEAg LTIxMCw2ICsyMTIsOCBAQCBzdGF0aWMgc3RydWN0IHJlc291cmNlICphbGxvY19yZXNvdXJjZShn ZnBfdCBmbGFncykKIAllbHNlCiAJCXJlcyA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCByZXNvdXJj ZSksIGZsYWdzKTsKIAorCUlOSVRfTElTVF9IRUFEKCZyZXMtPmNoaWxkKTsKKwlJTklUX0xJU1Rf SEVBRCgmcmVzLT5zaWJsaW5nKTsKIAlyZXR1cm4gcmVzOwogfQogCkBAIC0yMTgsNyArMjIyLDcg QEAgc3RhdGljIHN0cnVjdCByZXNvdXJjZSAqIF9fcmVxdWVzdF9yZXNvdXJjZShzdHJ1Y3QgcmVz b3VyY2UgKnJvb3QsIHN0cnVjdCByZXNvdXIKIHsKIAlyZXNvdXJjZV9zaXplX3Qgc3RhcnQgPSBu ZXctPnN0YXJ0OwogCXJlc291cmNlX3NpemVfdCBlbmQgPSBuZXctPmVuZDsKLQlzdHJ1Y3QgcmVz b3VyY2UgKnRtcCwgKipwOworCXN0cnVjdCByZXNvdXJjZSAqdG1wOwogCiAJaWYgKGVuZCA8IHN0 YXJ0KQogCQlyZXR1cm4gcm9vdDsKQEAgLTIyNiw2NCArMjMwLDYyIEBAIHN0YXRpYyBzdHJ1Y3Qg cmVzb3VyY2UgKiBfX3JlcXVlc3RfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyb290LCBzdHJ1 Y3QgcmVzb3VyCiAJCXJldHVybiByb290OwogCWlmIChlbmQgPiByb290LT5lbmQpCiAJCXJldHVy biByb290OwotCXAgPSAmcm9vdC0+Y2hpbGQ7Ci0JZm9yICg7OykgewotCQl0bXAgPSAqcDsKLQkJ aWYgKCF0bXAgfHwgdG1wLT5zdGFydCA+IGVuZCkgewotCQkJbmV3LT5zaWJsaW5nID0gdG1wOwot CQkJKnAgPSBuZXc7CisKKwlpZiAobGlzdF9lbXB0eSgmcm9vdC0+Y2hpbGQpKSB7CisJCWxpc3Rf YWRkKCZuZXctPnNpYmxpbmcsICZyb290LT5jaGlsZCk7CisJCW5ldy0+cGFyZW50ID0gcm9vdDsK KwkJSU5JVF9MSVNUX0hFQUQoJm5ldy0+Y2hpbGQpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwls aXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgJnJvb3QtPmNoaWxkLCBzaWJsaW5nKSB7CisJCWlmICh0 bXAtPnN0YXJ0ID4gZW5kKSB7CisJCQlsaXN0X2FkZCgmbmV3LT5zaWJsaW5nLCB0bXAtPnNpYmxp bmcucHJldik7CiAJCQluZXctPnBhcmVudCA9IHJvb3Q7CisJCQlJTklUX0xJU1RfSEVBRCgmbmV3 LT5jaGlsZCk7CiAJCQlyZXR1cm4gTlVMTDsKIAkJfQotCQlwID0gJnRtcC0+c2libGluZzsKIAkJ aWYgKHRtcC0+ZW5kIDwgc3RhcnQpCiAJCQljb250aW51ZTsKIAkJcmV0dXJuIHRtcDsKIAl9CisK KwlsaXN0X2FkZF90YWlsKCZuZXctPnNpYmxpbmcsICZyb290LT5jaGlsZCk7CisJbmV3LT5wYXJl bnQgPSByb290OworCUlOSVRfTElTVF9IRUFEKCZuZXctPmNoaWxkKTsKKwlyZXR1cm4gTlVMTDsK IH0KIAogc3RhdGljIGludCBfX3JlbGVhc2VfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpvbGQs IGJvb2wgcmVsZWFzZV9jaGlsZCkKIHsKLQlzdHJ1Y3QgcmVzb3VyY2UgKnRtcCwgKipwLCAqY2hk OworCXN0cnVjdCByZXNvdXJjZSAqdG1wLCAqbmV4dCwgKmNoZDsKIAotCXAgPSAmb2xkLT5wYXJl bnQtPmNoaWxkOwotCWZvciAoOzspIHsKLQkJdG1wID0gKnA7Ci0JCWlmICghdG1wKQotCQkJYnJl YWs7CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHRtcCwgbmV4dCwgJm9sZC0+cGFyZW50LT5j aGlsZCwgc2libGluZykgewogCQlpZiAodG1wID09IG9sZCkgewotCQkJaWYgKHJlbGVhc2VfY2hp bGQgfHwgISh0bXAtPmNoaWxkKSkgewotCQkJCSpwID0gdG1wLT5zaWJsaW5nOworCQkJaWYgKHJl bGVhc2VfY2hpbGQgfHwgbGlzdF9lbXB0eSgmdG1wLT5jaGlsZCkpIHsKKwkJCQlsaXN0X2RlbCgm dG1wLT5zaWJsaW5nKTsKIAkJCX0gZWxzZSB7Ci0JCQkJZm9yIChjaGQgPSB0bXAtPmNoaWxkOzsg Y2hkID0gY2hkLT5zaWJsaW5nKSB7CisJCQkJbGlzdF9mb3JfZWFjaF9lbnRyeShjaGQsICZ0bXAt PmNoaWxkLCBzaWJsaW5nKQogCQkJCQljaGQtPnBhcmVudCA9IHRtcC0+cGFyZW50OwotCQkJCQlp ZiAoIShjaGQtPnNpYmxpbmcpKQotCQkJCQkJYnJlYWs7Ci0JCQkJfQotCQkJCSpwID0gdG1wLT5j aGlsZDsKLQkJCQljaGQtPnNpYmxpbmcgPSB0bXAtPnNpYmxpbmc7CisJCQkJbGlzdF9zcGxpY2Uo JnRtcC0+Y2hpbGQsIHRtcC0+c2libGluZy5wcmV2KTsKKwkJCQlsaXN0X2RlbCgmdG1wLT5zaWJs aW5nKTsKIAkJCX0KKwogCQkJb2xkLT5wYXJlbnQgPSBOVUxMOwogCQkJcmV0dXJuIDA7CiAJCX0K LQkJcCA9ICZ0bXAtPnNpYmxpbmc7CiAJfQogCXJldHVybiAtRUlOVkFMOwogfQogCiBzdGF0aWMg dm9pZCBfX3JlbGVhc2VfY2hpbGRfcmVzb3VyY2VzKHN0cnVjdCByZXNvdXJjZSAqcikKIHsKLQlz dHJ1Y3QgcmVzb3VyY2UgKnRtcCwgKnA7CisJc3RydWN0IHJlc291cmNlICp0bXAsICpuZXh0Owog CXJlc291cmNlX3NpemVfdCBzaXplOwogCi0JcCA9IHItPmNoaWxkOwotCXItPmNoaWxkID0gTlVM TDsKLQl3aGlsZSAocCkgewotCQl0bXAgPSBwOwotCQlwID0gcC0+c2libGluZzsKLQorCWxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZSh0bXAsIG5leHQsICZyLT5jaGlsZCwgc2libGluZykgewogCQl0 bXAtPnBhcmVudCA9IE5VTEw7Ci0JCXRtcC0+c2libGluZyA9IE5VTEw7CisJCUlOSVRfTElTVF9I RUFEKCZ0bXAtPnNpYmxpbmcpOwogCQlfX3JlbGVhc2VfY2hpbGRfcmVzb3VyY2VzKHRtcCk7CiAK IAkJcHJpbnRrKEtFUk5fREVCVUcgInJlbGVhc2UgY2hpbGQgcmVzb3VyY2UgJXBSXG4iLCB0bXAp OwpAQCAtMjkyLDYgKzI5NCw4IEBAIHN0YXRpYyB2b2lkIF9fcmVsZWFzZV9jaGlsZF9yZXNvdXJj ZXMoc3RydWN0IHJlc291cmNlICpyKQogCQl0bXAtPnN0YXJ0ID0gMDsKIAkJdG1wLT5lbmQgPSBz aXplIC0gMTsKIAl9CisKKwlJTklUX0xJU1RfSEVBRCgmdG1wLT5jaGlsZCk7CiB9CiAKIHZvaWQg cmVsZWFzZV9jaGlsZF9yZXNvdXJjZXMoc3RydWN0IHJlc291cmNlICpyKQpAQCAtMzc2LDcgKzM4 MCw4IEBAIHN0YXRpYyBpbnQgZmluZF9uZXh0X2lvbWVtX3JlcyhzdHJ1Y3QgcmVzb3VyY2UgKnJl cywgdW5zaWduZWQgbG9uZyBkZXNjLAogCiAJcmVhZF9sb2NrKCZyZXNvdXJjZV9sb2NrKTsKIAot CWZvciAocCA9IGlvbWVtX3Jlc291cmNlLmNoaWxkOyBwOyBwID0gbmV4dF9yZXNvdXJjZShwLCBz aWJsaW5nX29ubHkpKSB7CisJZm9yIChwID0gcmVzb3VyY2VfZmlyc3RfY2hpbGQoJmlvbWVtX3Jl c291cmNlLmNoaWxkKTsgcDsKKwkJCXAgPSBuZXh0X3Jlc291cmNlKHAsIHNpYmxpbmdfb25seSkp IHsKIAkJaWYgKChwLT5mbGFncyAmIHJlcy0+ZmxhZ3MpICE9IHJlcy0+ZmxhZ3MpCiAJCQljb250 aW51ZTsKIAkJaWYgKChkZXNjICE9IElPUkVTX0RFU0NfTk9ORSkgJiYgKGRlc2MgIT0gcC0+ZGVz YykpCkBAIC01NjQsNyArNTY5LDcgQEAgaW50IHJlZ2lvbl9pbnRlcnNlY3RzKHJlc291cmNlX3Np emVfdCBzdGFydCwgc2l6ZV90IHNpemUsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsCiAJc3RydWN0IHJl c291cmNlICpwOwogCiAJcmVhZF9sb2NrKCZyZXNvdXJjZV9sb2NrKTsKLQlmb3IgKHAgPSBpb21l bV9yZXNvdXJjZS5jaGlsZDsgcCA7IHAgPSBwLT5zaWJsaW5nKSB7CisJbGlzdF9mb3JfZWFjaF9l bnRyeShwLCAmaW9tZW1fcmVzb3VyY2UuY2hpbGQsIHNpYmxpbmcpIHsKIAkJYm9vbCBpc190eXBl ID0gKCgocC0+ZmxhZ3MgJiBmbGFncykgPT0gZmxhZ3MpICYmCiAJCQkJKChkZXNjID09IElPUkVT X0RFU0NfTk9ORSkgfHwKIAkJCQkgKGRlc2MgPT0gcC0+ZGVzYykpKTsKQEAgLTYxOCw3ICs2MjMs NyBAQCBzdGF0aWMgaW50IF9fZmluZF9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnJvb3QsIHN0 cnVjdCByZXNvdXJjZSAqb2xkLAogCQkJIHJlc291cmNlX3NpemVfdCAgc2l6ZSwKIAkJCSBzdHJ1 Y3QgcmVzb3VyY2VfY29uc3RyYWludCAqY29uc3RyYWludCkKIHsKLQlzdHJ1Y3QgcmVzb3VyY2Ug KnRoaXMgPSByb290LT5jaGlsZDsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnRoaXMgPSByZXNvdXJjZV9m aXJzdF9jaGlsZCgmcm9vdC0+Y2hpbGQpOwogCXN0cnVjdCByZXNvdXJjZSB0bXAgPSAqbmV3LCBh dmFpbCwgYWxsb2M7CiAKIAl0bXAuc3RhcnQgPSByb290LT5zdGFydDsKQEAgLTYyOCw3ICs2MzMs NyBAQCBzdGF0aWMgaW50IF9fZmluZF9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnJvb3QsIHN0 cnVjdCByZXNvdXJjZSAqb2xkLAogCSAqLwogCWlmICh0aGlzICYmIHRoaXMtPnN0YXJ0ID09IHJv b3QtPnN0YXJ0KSB7CiAJCXRtcC5zdGFydCA9ICh0aGlzID09IG9sZCkgPyBvbGQtPnN0YXJ0IDog dGhpcy0+ZW5kICsgMTsKLQkJdGhpcyA9IHRoaXMtPnNpYmxpbmc7CisJCXRoaXMgPSByZXNvdXJj ZV9zaWJsaW5nKHRoaXMpOwogCX0KIAlmb3IoOzspIHsKIAkJaWYgKHRoaXMpCkBAIC02NjQsNyAr NjY5LDcgQEAgbmV4dDoJCWlmICghdGhpcyB8fCB0aGlzLT5lbmQgPT0gcm9vdC0+ZW5kKQogCiAJ CWlmICh0aGlzICE9IG9sZCkKIAkJCXRtcC5zdGFydCA9IHRoaXMtPmVuZCArIDE7Ci0JCXRoaXMg PSB0aGlzLT5zaWJsaW5nOworCQl0aGlzID0gcmVzb3VyY2Vfc2libGluZyh0aGlzKTsKIAl9CiAJ cmV0dXJuIC1FQlVTWTsKIH0KQEAgLTcwOCw3ICs3MTMsNyBAQCBzdGF0aWMgaW50IHJlYWxsb2Nh dGVfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyb290LCBzdHJ1Y3QgcmVzb3VyY2UgKm9sZCwK IAkJZ290byBvdXQ7CiAJfQogCi0JaWYgKG9sZC0+Y2hpbGQpIHsKKwlpZiAoIWxpc3RfZW1wdHko Jm9sZC0+Y2hpbGQpKSB7CiAJCWVyciA9IC1FQlVTWTsKIAkJZ290byBvdXQ7CiAJfQpAQCAtNzg5 LDcgKzc5NCw3IEBAIHN0cnVjdCByZXNvdXJjZSAqbG9va3VwX3Jlc291cmNlKHN0cnVjdCByZXNv dXJjZSAqcm9vdCwgcmVzb3VyY2Vfc2l6ZV90IHN0YXJ0KQogCXN0cnVjdCByZXNvdXJjZSAqcmVz OwogCiAJcmVhZF9sb2NrKCZyZXNvdXJjZV9sb2NrKTsKLQlmb3IgKHJlcyA9IHJvb3QtPmNoaWxk OyByZXM7IHJlcyA9IHJlcy0+c2libGluZykgeworCWxpc3RfZm9yX2VhY2hfZW50cnkocmVzLCAm cm9vdC0+Y2hpbGQsIHNpYmxpbmcpIHsKIAkJaWYgKHJlcy0+c3RhcnQgPT0gc3RhcnQpCiAJCQli cmVhazsKIAl9CkBAIC04MjIsMzIgKzgyNywyNyBAQCBzdGF0aWMgc3RydWN0IHJlc291cmNlICog X19pbnNlcnRfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpwYXJlbnQsIHN0cnVjdCByZXNvdQog CQkJYnJlYWs7CiAJfQogCi0JZm9yIChuZXh0ID0gZmlyc3Q7IDsgbmV4dCA9IG5leHQtPnNpYmxp bmcpIHsKKwlmb3IgKG5leHQgPSBmaXJzdDsgOyBuZXh0ID0gcmVzb3VyY2Vfc2libGluZyhuZXh0 KSkgewogCQkvKiBQYXJ0aWFsIG92ZXJsYXA/IEJhZCwgYW5kIHVuZml4YWJsZSAqLwogCQlpZiAo bmV4dC0+c3RhcnQgPCBuZXctPnN0YXJ0IHx8IG5leHQtPmVuZCA+IG5ldy0+ZW5kKQogCQkJcmV0 dXJuIG5leHQ7Ci0JCWlmICghbmV4dC0+c2libGluZykKKwkJaWYgKCFyZXNvdXJjZV9zaWJsaW5n KG5leHQpKQogCQkJYnJlYWs7Ci0JCWlmIChuZXh0LT5zaWJsaW5nLT5zdGFydCA+IG5ldy0+ZW5k KQorCQlpZiAocmVzb3VyY2Vfc2libGluZyhuZXh0KS0+c3RhcnQgPiBuZXctPmVuZCkKIAkJCWJy ZWFrOwogCX0KLQogCW5ldy0+cGFyZW50ID0gcGFyZW50OwotCW5ldy0+c2libGluZyA9IG5leHQt PnNpYmxpbmc7Ci0JbmV3LT5jaGlsZCA9IGZpcnN0OworCWxpc3RfYWRkKCZuZXctPnNpYmxpbmcs ICZuZXh0LT5zaWJsaW5nKTsKKwlJTklUX0xJU1RfSEVBRCgmbmV3LT5jaGlsZCk7CiAKLQluZXh0 LT5zaWJsaW5nID0gTlVMTDsKLQlmb3IgKG5leHQgPSBmaXJzdDsgbmV4dDsgbmV4dCA9IG5leHQt PnNpYmxpbmcpCisJLyoKKwkgKiBGcm9tIGZpcnN0IHRvIG5leHQsIHRoZXkgYWxsIGZhbGwgaW50 byBuZXcncyByZWdpb24sIHNvIGNoYW5nZSB0aGVtCisJICogYXMgbmV3J3MgY2hpbGRyZW4uCisJ ICovCisJbGlzdF9jdXRfcG9zaXRpb24oJm5ldy0+Y2hpbGQsIGZpcnN0LT5zaWJsaW5nLnByZXYs ICZuZXh0LT5zaWJsaW5nKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KG5leHQsICZuZXctPmNoaWxk LCBzaWJsaW5nKQogCQluZXh0LT5wYXJlbnQgPSBuZXc7CiAKLQlpZiAocGFyZW50LT5jaGlsZCA9 PSBmaXJzdCkgewotCQlwYXJlbnQtPmNoaWxkID0gbmV3OwotCX0gZWxzZSB7Ci0JCW5leHQgPSBw YXJlbnQtPmNoaWxkOwotCQl3aGlsZSAobmV4dC0+c2libGluZyAhPSBmaXJzdCkKLQkJCW5leHQg PSBuZXh0LT5zaWJsaW5nOwotCQluZXh0LT5zaWJsaW5nID0gbmV3OwotCX0KIAlyZXR1cm4gTlVM TDsKIH0KIApAQCAtOTY5LDE5ICs5NjksMTcgQEAgc3RhdGljIGludCBfX2FkanVzdF9yZXNvdXJj ZShzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgcmVzb3VyY2Vfc2l6ZV90IHN0YXJ0LAogCWlmICgoc3Rh cnQgPCBwYXJlbnQtPnN0YXJ0KSB8fCAoZW5kID4gcGFyZW50LT5lbmQpKQogCQlnb3RvIG91dDsK IAotCWlmIChyZXMtPnNpYmxpbmcgJiYgKHJlcy0+c2libGluZy0+c3RhcnQgPD0gZW5kKSkKKwlp ZiAocmVzb3VyY2Vfc2libGluZyhyZXMpICYmIChyZXNvdXJjZV9zaWJsaW5nKHJlcyktPnN0YXJ0 IDw9IGVuZCkpCiAJCWdvdG8gb3V0OwogCi0JdG1wID0gcGFyZW50LT5jaGlsZDsKLQlpZiAodG1w ICE9IHJlcykgewotCQl3aGlsZSAodG1wLT5zaWJsaW5nICE9IHJlcykKLQkJCXRtcCA9IHRtcC0+ c2libGluZzsKKwlpZiAocmVzLT5zaWJsaW5nLnByZXYgIT0gJnBhcmVudC0+Y2hpbGQpIHsKKwkJ dG1wID0gbGlzdF9wcmV2X2VudHJ5KHJlcywgc2libGluZyk7CiAJCWlmIChzdGFydCA8PSB0bXAt PmVuZCkKIAkJCWdvdG8gb3V0OwogCX0KIAogc2tpcDoKLQlmb3IgKHRtcCA9IHJlcy0+Y2hpbGQ7 IHRtcDsgdG1wID0gdG1wLT5zaWJsaW5nKQorCWxpc3RfZm9yX2VhY2hfZW50cnkodG1wLCAmcmVz LT5jaGlsZCwgc2libGluZykKIAkJaWYgKCh0bXAtPnN0YXJ0IDwgc3RhcnQpIHx8ICh0bXAtPmVu ZCA+IGVuZCkpCiAJCQlnb3RvIG91dDsKIApAQCAtMTIwNiwzNCArMTIwNCwzMiBAQCBFWFBPUlRf U1lNQk9MKF9fcmVxdWVzdF9yZWdpb24pOwogdm9pZCBfX3JlbGVhc2VfcmVnaW9uKHN0cnVjdCBy ZXNvdXJjZSAqcGFyZW50LCByZXNvdXJjZV9zaXplX3Qgc3RhcnQsCiAJCQlyZXNvdXJjZV9zaXpl X3QgbikKIHsKLQlzdHJ1Y3QgcmVzb3VyY2UgKipwOworCXN0cnVjdCByZXNvdXJjZSAqcmVzOwog CXJlc291cmNlX3NpemVfdCBlbmQ7CiAKLQlwID0gJnBhcmVudC0+Y2hpbGQ7CisJcmVzID0gcmVz b3VyY2VfZmlyc3RfY2hpbGQoJnBhcmVudC0+Y2hpbGQpOwogCWVuZCA9IHN0YXJ0ICsgbiAtIDE7 CiAKIAl3cml0ZV9sb2NrKCZyZXNvdXJjZV9sb2NrKTsKIAogCWZvciAoOzspIHsKLQkJc3RydWN0 IHJlc291cmNlICpyZXMgPSAqcDsKLQogCQlpZiAoIXJlcykKIAkJCWJyZWFrOwogCQlpZiAocmVz LT5zdGFydCA8PSBzdGFydCAmJiByZXMtPmVuZCA+PSBlbmQpIHsKIAkJCWlmICghKHJlcy0+Zmxh Z3MgJiBJT1JFU09VUkNFX0JVU1kpKSB7Ci0JCQkJcCA9ICZyZXMtPmNoaWxkOworCQkJCXJlcyA9 IHJlc291cmNlX2ZpcnN0X2NoaWxkKCZyZXMtPmNoaWxkKTsKIAkJCQljb250aW51ZTsKIAkJCX0K IAkJCWlmIChyZXMtPnN0YXJ0ICE9IHN0YXJ0IHx8IHJlcy0+ZW5kICE9IGVuZCkKIAkJCQlicmVh azsKLQkJCSpwID0gcmVzLT5zaWJsaW5nOworCQkJbGlzdF9kZWwoJnJlcy0+c2libGluZyk7CiAJ CQl3cml0ZV91bmxvY2soJnJlc291cmNlX2xvY2spOwogCQkJaWYgKHJlcy0+ZmxhZ3MgJiBJT1JF U09VUkNFX01VWEVEKQogCQkJCXdha2VfdXAoJm11eGVkX3Jlc291cmNlX3dhaXQpOwogCQkJZnJl ZV9yZXNvdXJjZShyZXMpOwogCQkJcmV0dXJuOwogCQl9Ci0JCXAgPSAmcmVzLT5zaWJsaW5nOwor CQlyZXMgPSByZXNvdXJjZV9zaWJsaW5nKHJlcyk7CiAJfQogCiAJd3JpdGVfdW5sb2NrKCZyZXNv dXJjZV9sb2NrKTsKQEAgLTEyNjgsOSArMTI2NCw3IEBAIEVYUE9SVF9TWU1CT0woX19yZWxlYXNl X3JlZ2lvbik7CiBpbnQgcmVsZWFzZV9tZW1fcmVnaW9uX2FkanVzdGFibGUoc3RydWN0IHJlc291 cmNlICpwYXJlbnQsCiAJCQlyZXNvdXJjZV9zaXplX3Qgc3RhcnQsIHJlc291cmNlX3NpemVfdCBz aXplKQogewotCXN0cnVjdCByZXNvdXJjZSAqKnA7Ci0Jc3RydWN0IHJlc291cmNlICpyZXM7Ci0J c3RydWN0IHJlc291cmNlICpuZXdfcmVzOworCXN0cnVjdCByZXNvdXJjZSAqcmVzLCAqbmV3X3Jl czsKIAlyZXNvdXJjZV9zaXplX3QgZW5kOwogCWludCByZXQgPSAtRUlOVkFMOwogCkBAIC0xMjgx LDE2ICsxMjc1LDE2IEBAIGludCByZWxlYXNlX21lbV9yZWdpb25fYWRqdXN0YWJsZShzdHJ1Y3Qg cmVzb3VyY2UgKnBhcmVudCwKIAkvKiBUaGUgYWxsb2NfcmVzb3VyY2UoKSByZXN1bHQgZ2V0cyBj aGVja2VkIGxhdGVyICovCiAJbmV3X3JlcyA9IGFsbG9jX3Jlc291cmNlKEdGUF9LRVJORUwpOwog Ci0JcCA9ICZwYXJlbnQtPmNoaWxkOworCXJlcyA9IHJlc291cmNlX2ZpcnN0X2NoaWxkKCZwYXJl bnQtPmNoaWxkKTsKIAl3cml0ZV9sb2NrKCZyZXNvdXJjZV9sb2NrKTsKIAotCXdoaWxlICgocmVz ID0gKnApKSB7CisJd2hpbGUgKChyZXMpKSB7CiAJCWlmIChyZXMtPnN0YXJ0ID49IGVuZCkKIAkJ CWJyZWFrOwogCiAJCS8qIGxvb2sgZm9yIHRoZSBuZXh0IHJlc291cmNlIGlmIGl0IGRvZXMgbm90 IGZpdCBpbnRvICovCiAJCWlmIChyZXMtPnN0YXJ0ID4gc3RhcnQgfHwgcmVzLT5lbmQgPCBlbmQp IHsKLQkJCXAgPSAmcmVzLT5zaWJsaW5nOworCQkJcmVzID0gcmVzb3VyY2Vfc2libGluZyhyZXMp OwogCQkJY29udGludWU7CiAJCX0KIApAQCAtMTI5OCwxNCArMTI5MiwxNCBAQCBpbnQgcmVsZWFz ZV9tZW1fcmVnaW9uX2FkanVzdGFibGUoc3RydWN0IHJlc291cmNlICpwYXJlbnQsCiAJCQlicmVh azsKIAogCQlpZiAoIShyZXMtPmZsYWdzICYgSU9SRVNPVVJDRV9CVVNZKSkgewotCQkJcCA9ICZy ZXMtPmNoaWxkOworCQkJcmVzID0gcmVzb3VyY2VfZmlyc3RfY2hpbGQoJnJlcy0+Y2hpbGQpOwog CQkJY29udGludWU7CiAJCX0KIAogCQkvKiBmb3VuZCB0aGUgdGFyZ2V0IHJlc291cmNlOyBsZXQn cyBhZGp1c3QgYWNjb3JkaW5nbHkgKi8KIAkJaWYgKHJlcy0+c3RhcnQgPT0gc3RhcnQgJiYgcmVz LT5lbmQgPT0gZW5kKSB7CiAJCQkvKiBmcmVlIHRoZSB3aG9sZSBlbnRyeSAqLwotCQkJKnAgPSBy ZXMtPnNpYmxpbmc7CisJCQlsaXN0X2RlbCgmcmVzLT5zaWJsaW5nKTsKIAkJCWZyZWVfcmVzb3Vy Y2UocmVzKTsKIAkJCXJldCA9IDA7CiAJCX0gZWxzZSBpZiAocmVzLT5zdGFydCA9PSBzdGFydCAm JiByZXMtPmVuZCAhPSBlbmQpIHsKQEAgLTEzMjgsMTQgKzEzMjIsMTMgQEAgaW50IHJlbGVhc2Vf bWVtX3JlZ2lvbl9hZGp1c3RhYmxlKHN0cnVjdCByZXNvdXJjZSAqcGFyZW50LAogCQkJbmV3X3Jl cy0+ZmxhZ3MgPSByZXMtPmZsYWdzOwogCQkJbmV3X3Jlcy0+ZGVzYyA9IHJlcy0+ZGVzYzsKIAkJ CW5ld19yZXMtPnBhcmVudCA9IHJlcy0+cGFyZW50OwotCQkJbmV3X3Jlcy0+c2libGluZyA9IHJl cy0+c2libGluZzsKLQkJCW5ld19yZXMtPmNoaWxkID0gTlVMTDsKKwkJCUlOSVRfTElTVF9IRUFE KCZuZXdfcmVzLT5jaGlsZCk7CiAKIAkJCXJldCA9IF9fYWRqdXN0X3Jlc291cmNlKHJlcywgcmVz LT5zdGFydCwKIAkJCQkJCXN0YXJ0IC0gcmVzLT5zdGFydCk7CiAJCQlpZiAocmV0KQogCQkJCWJy ZWFrOwotCQkJcmVzLT5zaWJsaW5nID0gbmV3X3JlczsKKwkJCWxpc3RfYWRkKCZuZXdfcmVzLT5z aWJsaW5nLCAmcmVzLT5zaWJsaW5nKTsKIAkJCW5ld19yZXMgPSBOVUxMOwogCQl9CiAKQEAgLTE1 MTYsNyArMTUwOSw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHJlc2VydmVfc2V0dXAoY2hhciAqc3Ry KQogCQkJcmVzLT5lbmQgPSBpb19zdGFydCArIGlvX251bSAtIDE7CiAJCQlyZXMtPmZsYWdzIHw9 IElPUkVTT1VSQ0VfQlVTWTsKIAkJCXJlcy0+ZGVzYyA9IElPUkVTX0RFU0NfTk9ORTsKLQkJCXJl cy0+Y2hpbGQgPSBOVUxMOworCQkJSU5JVF9MSVNUX0hFQUQoJnJlcy0+Y2hpbGQpOwogCQkJaWYg KHJlcXVlc3RfcmVzb3VyY2UocGFyZW50LCByZXMpID09IDApCiAJCQkJcmVzZXJ2ZWQgPSB4KzE7 CiAJCX0KQEAgLTE1MzYsNyArMTUyOSw3IEBAIGludCBpb21lbV9tYXBfc2FuaXR5X2NoZWNrKHJl c291cmNlX3NpemVfdCBhZGRyLCB1bnNpZ25lZCBsb25nIHNpemUpCiAJbG9mZl90IGw7CiAKIAly ZWFkX2xvY2soJnJlc291cmNlX2xvY2spOwotCWZvciAocCA9IHAtPmNoaWxkOyBwIDsgcCA9IHJf bmV4dChOVUxMLCBwLCAmbCkpIHsKKwlmb3IgKHAgPSByZXNvdXJjZV9maXJzdF9jaGlsZCgmcC0+ Y2hpbGQpOyBwOyBwID0gcl9uZXh0KE5VTEwsIHAsICZsKSkgewogCQkvKgogCQkgKiBXZSBjYW4g cHJvYmFibHkgc2tpcCB0aGUgcmVzb3VyY2VzIHdpdGhvdXQKIAkJICogSU9SRVNPVVJDRV9JTyBh dHRyaWJ1dGU/CkBAIC0xNTkyLDcgKzE1ODUsNyBAQCBib29sIGlvbWVtX2lzX2V4Y2x1c2l2ZSh1 NjQgYWRkcikKIAlhZGRyID0gYWRkciAmIFBBR0VfTUFTSzsKIAogCXJlYWRfbG9jaygmcmVzb3Vy Y2VfbG9jayk7Ci0JZm9yIChwID0gcC0+Y2hpbGQ7IHAgOyBwID0gcl9uZXh0KE5VTEwsIHAsICZs KSkgeworCWZvciAocCA9IHJlc291cmNlX2ZpcnN0X2NoaWxkKCZwLT5jaGlsZCk7IHA7IHAgPSBy X25leHQoTlVMTCwgcCwgJmwpKSB7CiAJCS8qCiAJCSAqIFdlIGNhbiBwcm9iYWJseSBza2lwIHRo ZSByZXNvdXJjZXMgd2l0aG91dAogCQkgKiBJT1JFU09VUkNFX0lPIGF0dHJpYnV0ZT8KLS0gCjIu MTMuNgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGlu dXgtbnZkaW1tIG1haWxpbmcgbGlzdApMaW51eC1udmRpbW1AbGlzdHMuMDEub3JnCmh0dHBzOi8v bGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbnZkaW1tCg==