From mboxrd@z Thu Jan 1 00:00:00 1970 From: Baoquan He Subject: [PATCH v7 2/4] resource: Use list_head to link sibling resource Date: Wed, 18 Jul 2018 10:49:42 +0800 Message-ID: <20180718024944.577-3-bhe@redhat.com> References: <20180718024944.577-1-bhe@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180718024944.577-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, andy.shevchenko-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org Cc: linux-mips-6z/3iImG2C8G8FEW9MqTrA@public.gmane.org, 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, jcmvbkbc-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, Paul Mackerras , 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, Michael Ellerman , 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, Benjamin 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 Lm9yZwpDYzogbGludXgtcGNpQHZnZXIua2VybmVsLm9yZwpDYzogTWljaGFsIFNpbWVrIDxtb25z dHJAbW9uc3RyLmV1PgpDYzogQmVuamFtaW4gSGVycmVuc2NobWlkdCA8YmVuaEBrZXJuZWwuY3Jh c2hpbmcub3JnPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApDYzogUGF1bCBN YWNrZXJyYXMgPHBhdWx1c0BzYW1iYS5vcmc+CkNjOiBNaWNoYWVsIEVsbGVybWFuIDxtcGVAZWxs ZXJtYW4uaWQuYXU+CkNjOiBsaW51eC1taXBzQGxpbnV4LW1pcHMub3JnCi0tLQogYXJjaC9hcm0v cGxhdC1zYW1zdW5nL3BtLWNoZWNrLmMgICAgICAgICAgICB8ICAgNiArLQogYXJjaC9pYTY0L3Nu L2tlcm5lbC9pb19pbml0LmMgICAgICAgICAgICAgICB8ICAgMiArLQogYXJjaC9taWNyb2JsYXpl L3BjaS9wY2ktY29tbW9uLmMgICAgICAgICAgICB8ICAgNCArLQogYXJjaC9taXBzL3BjaS9wY2kt cmMzMjQzNC5jICAgICAgICAgICAgICAgICB8ICAxMiArLQogYXJjaC9wb3dlcnBjL2tlcm5lbC9w Y2ktY29tbW9uLmMgICAgICAgICAgICB8ICAgNCArLQogYXJjaC9zcGFyYy9rZXJuZWwvaW9wb3J0 LmMgICAgICAgICAgICAgICAgICB8ICAgMiArLQogYXJjaC94dGVuc2EvaW5jbHVkZS9hc20vcGNp LWJyaWRnZS5oICAgICAgICB8ICAgNCArLQogZHJpdmVycy9laXNhL2Vpc2EtYnVzLmMgICAgICAg ICAgICAgICAgICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vZHJtX21lbW9yeS5jICAgICAg ICAgICAgICAgIHwgICAzICstCiBkcml2ZXJzL2dwdS9kcm0vZ21hNTAwL2d0dC5jICAgICAgICAg ICAgICAgIHwgICA1ICstCiBkcml2ZXJzL2h2L3ZtYnVzX2Rydi5jICAgICAgICAgICAgICAgICAg ICAgIHwgIDUyICsrKy0tLS0KIGRyaXZlcnMvaW5wdXQvam95c3RpY2svaWZvcmNlL2lmb3JjZS1t YWluLmMgfCAgIDQgKy0KIGRyaXZlcnMvbnZkaW1tL25hbWVzcGFjZV9kZXZzLmMgICAgICAgICAg ICAgfCAgIDYgKy0KIGRyaXZlcnMvbnZkaW1tL25kLmggICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDUgKy0KIGRyaXZlcnMvb2YvYWRkcmVzcy5jICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDQgKy0KIGRyaXZlcnMvcGFyaXNjL2xiYV9wY2kuYyAgICAgICAgICAgICAgICAgICAgfCAgIDQg Ky0KIGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvdm1kLmMgICAgICAgICAgICAgICAgfCAgIDggKy0K IGRyaXZlcnMvcGNpL3Byb2JlLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogZHJp dmVycy9wY2kvc2V0dXAtYnVzLmMgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogaW5jbHVk ZS9saW51eC9pb3BvcnQuaCAgICAgICAgICAgICAgICAgICAgICB8ICAxNyArKy0KIGtlcm5lbC9y ZXNvdXJjZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMDYgKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLQogMjEgZmlsZXMgY2hhbmdlZCwgMTgzIGluc2VydGlvbnMoKyksIDE3MSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LXNhbXN1bmcvcG0tY2hlY2su YyBiL2FyY2gvYXJtL3BsYXQtc2Ftc3VuZy9wbS1jaGVjay5jCmluZGV4IGNkMmMwMmM2OGJjMy4u NTQ5NDM1NWIxYzQ5IDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LXNhbXN1bmcvcG0tY2hlY2su YworKysgYi9hcmNoL2FybS9wbGF0LXNhbXN1bmcvcG0tY2hlY2suYwpAQCAtNDYsOCArNDYsOCBA QCB0eXBlZGVmIHUzMiAqKHJ1bl9mbl90KShzdHJ1Y3QgcmVzb3VyY2UgKnB0ciwgdTMyICphcmcp Owogc3RhdGljIHZvaWQgczNjX3BtX3J1bl9yZXMoc3RydWN0IHJlc291cmNlICpwdHIsIHJ1bl9m bl90IGZuLCB1MzIgKmFyZykKIHsKIAl3aGlsZSAocHRyICE9IE5VTEwpIHsKLQkJaWYgKHB0ci0+ Y2hpbGQgIT0gTlVMTCkKLQkJCXMzY19wbV9ydW5fcmVzKHB0ci0+Y2hpbGQsIGZuLCBhcmcpOwor CQlpZiAoIWxpc3RfZW1wdHkoJnB0ci0+Y2hpbGQpKQorCQkJczNjX3BtX3J1bl9yZXMocmVzb3Vy Y2VfZmlyc3RfY2hpbGQoJnB0ci0+Y2hpbGQpLCBmbiwgYXJnKTsKIAogCQlpZiAoKHB0ci0+Zmxh Z3MgJiBJT1JFU09VUkNFX1NZU1RFTV9SQU0pCiAJCQkJPT0gSU9SRVNPVVJDRV9TWVNURU1fUkFN KSB7CkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIHMzY19wbV9ydW5fcmVzKHN0cnVjdCBy ZXNvdXJjZSAqcHRyLCBydW5fZm5fdCBmbiwgdTMyICphcmcpCiAJCQlhcmcgPSAoZm4pKHB0ciwg YXJnKTsKIAkJfQogCi0JCXB0ciA9IHB0ci0+c2libGluZzsKKwkJcHRyID0gcmVzb3VyY2Vfc2li bGluZyhwdHIpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L3NuL2tlcm5lbC9pb19p bml0LmMgYi9hcmNoL2lhNjQvc24va2VybmVsL2lvX2luaXQuYwppbmRleCBkNjM4MDlhNmFkZmEu LjMzOGE3YjdmMTk0ZCAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L3NuL2tlcm5lbC9pb19pbml0LmMK KysrIGIvYXJjaC9pYTY0L3NuL2tlcm5lbC9pb19pbml0LmMKQEAgLTE5Miw3ICsxOTIsNyBAQCBz bl9pb19zbG90X2ZpeHVwKHN0cnVjdCBwY2lfZGV2ICpkZXYpCiAJCSAqIGlmIGl0J3MgYWxyZWFk eSBpbiB0aGUgZGV2aWNlIHN0cnVjdHVyZSwgcmVtb3ZlIGl0IGJlZm9yZQogCQkgKiBpbnNlcnRp bmcKIAkJICovCi0JCWlmIChyZXMtPnBhcmVudCAmJiByZXMtPnBhcmVudC0+Y2hpbGQpCisJCWlm IChyZXMtPnBhcmVudCAmJiAhbGlzdF9lbXB0eSgmcmVzLT5wYXJlbnQtPmNoaWxkKSkKIAkJCXJl bGVhc2VfcmVzb3VyY2UocmVzKTsKIAogCQlpZiAocmVzLT5mbGFncyAmIElPUkVTT1VSQ0VfSU8p CmRpZmYgLS1naXQgYS9hcmNoL21pY3JvYmxhemUvcGNpL3BjaS1jb21tb24uYyBiL2FyY2gvbWlj cm9ibGF6ZS9wY2kvcGNpLWNvbW1vbi5jCmluZGV4IDc4OTliYWZhYjA2NC4uMmJmNzNlMjdlMjMx IDEwMDY0NAotLS0gYS9hcmNoL21pY3JvYmxhemUvcGNpL3BjaS1jb21tb24uYworKysgYi9hcmNo L21pY3JvYmxhemUvcGNpL3BjaS1jb21tb24uYwpAQCAtNTMzLDcgKzUzMyw5IEBAIHZvaWQgcGNp X3Byb2Nlc3NfYnJpZGdlX09GX3JhbmdlcyhzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKmhvc2UsCiAJ CQlyZXMtPmZsYWdzID0gcmFuZ2UuZmxhZ3M7CiAJCQlyZXMtPnN0YXJ0ID0gcmFuZ2UuY3B1X2Fk ZHI7CiAJCQlyZXMtPmVuZCA9IHJhbmdlLmNwdV9hZGRyICsgcmFuZ2Uuc2l6ZSAtIDE7Ci0JCQly ZXMtPnBhcmVudCA9IHJlcy0+Y2hpbGQgPSByZXMtPnNpYmxpbmcgPSBOVUxMOworCQkJcmVzLT5w YXJlbnQgPSBOVUxMOworCQkJSU5JVF9MSVNUX0hFQUQoJnJlcy0+Y2hpbGQpOworCQkJSU5JVF9M SVNUX0hFQUQoJnJlcy0+c2libGluZyk7CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL2FyY2gvbWlw cy9wY2kvcGNpLXJjMzI0MzQuYyBiL2FyY2gvbWlwcy9wY2kvcGNpLXJjMzI0MzQuYwppbmRleCA3 ZjZjZTZkNzM0YzAuLmU4MDI4M2RmNzkyNSAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL3BjaS9wY2kt cmMzMjQzNC5jCisrKyBiL2FyY2gvbWlwcy9wY2kvcGNpLXJjMzI0MzQuYwpAQCAtNTMsOCArNTMs OCBAQCBzdGF0aWMgc3RydWN0IHJlc291cmNlIHJjMzI0MzRfcmVzX3BjaV9tZW0xID0gewogCS5z dGFydCA9IDB4NTAwMDAwMDAsCiAJLmVuZCA9IDB4NUZGRkZGRkYsCiAJLmZsYWdzID0gSU9SRVNP VVJDRV9NRU0sCi0JLnNpYmxpbmcgPSBOVUxMLAotCS5jaGlsZCA9ICZyYzMyNDM0X3Jlc19wY2lf bWVtMgorCS5zaWJsaW5nID0gTElTVF9IRUFEX0lOSVQocmMzMjQzNF9yZXNfcGNpX21lbTEuc2li bGluZyksCisJLmNoaWxkID0gTElTVF9IRUFEX0lOSVQocmMzMjQzNF9yZXNfcGNpX21lbTEuY2hp bGQpLAogfTsKIAogc3RhdGljIHN0cnVjdCByZXNvdXJjZSByYzMyNDM0X3Jlc19wY2lfbWVtMiA9 IHsKQEAgLTYzLDggKzYzLDggQEAgc3RhdGljIHN0cnVjdCByZXNvdXJjZSByYzMyNDM0X3Jlc19w Y2lfbWVtMiA9IHsKIAkuZW5kID0gMHg2RkZGRkZGRiwKIAkuZmxhZ3MgPSBJT1JFU09VUkNFX01F TSwKIAkucGFyZW50ID0gJnJjMzI0MzRfcmVzX3BjaV9tZW0xLAotCS5zaWJsaW5nID0gTlVMTCwK LQkuY2hpbGQgPSBOVUxMCisJLnNpYmxpbmcgPSBMSVNUX0hFQURfSU5JVChyYzMyNDM0X3Jlc19w Y2lfbWVtMi5zaWJsaW5nKSwKKwkuY2hpbGQgPSBMSVNUX0hFQURfSU5JVChyYzMyNDM0X3Jlc19w Y2lfbWVtMi5jaGlsZCksCiB9OwogCiBzdGF0aWMgc3RydWN0IHJlc291cmNlIHJjMzI0MzRfcmVz X3BjaV9pbzEgPSB7CkBAIC03Miw2ICs3Miw4IEBAIHN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgcmMz MjQzNF9yZXNfcGNpX2lvMSA9IHsKIAkuc3RhcnQgPSAweDE4ODAwMDAwLAogCS5lbmQgPSAweDE4 OEZGRkZGLAogCS5mbGFncyA9IElPUkVTT1VSQ0VfSU8sCisJLnNpYmxpbmcgPSBMSVNUX0hFQURf SU5JVChyYzMyNDM0X3Jlc19wY2lfaW8xLnNpYmxpbmcpLAorCS5jaGlsZCA9IExJU1RfSEVBRF9J TklUKHJjMzI0MzRfcmVzX3BjaV9pbzEuY2hpbGQpLAogfTsKIAogZXh0ZXJuIHN0cnVjdCBwY2lf b3BzIHJjMzI0MzRfcGNpX29wczsKQEAgLTIwOCw2ICsyMTAsOCBAQCBzdGF0aWMgaW50IF9faW5p dCByYzMyNDM0X3BjaV9pbml0KHZvaWQpCiAKIAlwcl9pbmZvKCJQQ0k6IEluaXRpYWxpemluZyBQ Q0lcbiIpOwogCisJbGlzdF9hZGQoJnJjMzI0MzRfcmVzX3BjaV9tZW0yLnNpYmxpbmcsICZyYzMy NDM0X3Jlc19wY2lfbWVtMS5jaGlsZCk7CisKIAlpb3BvcnRfcmVzb3VyY2Uuc3RhcnQgPSByYzMy NDM0X3Jlc19wY2lfaW8xLnN0YXJ0OwogCWlvcG9ydF9yZXNvdXJjZS5lbmQgPSByYzMyNDM0X3Jl c19wY2lfaW8xLmVuZDsKIApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2ktY29t bW9uLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3BjaS1jb21tb24uYwppbmRleCA5MjYwMzViYjM3 OGQuLjI4ZmJlODNjOWRhZiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2ktY29t bW9uLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2ktY29tbW9uLmMKQEAgLTc2MSw3ICs3 NjEsOSBAQCB2b2lkIHBjaV9wcm9jZXNzX2JyaWRnZV9PRl9yYW5nZXMoc3RydWN0IHBjaV9jb250 cm9sbGVyICpob3NlLAogCQkJcmVzLT5mbGFncyA9IHJhbmdlLmZsYWdzOwogCQkJcmVzLT5zdGFy dCA9IHJhbmdlLmNwdV9hZGRyOwogCQkJcmVzLT5lbmQgPSByYW5nZS5jcHVfYWRkciArIHJhbmdl LnNpemUgLSAxOwotCQkJcmVzLT5wYXJlbnQgPSByZXMtPmNoaWxkID0gcmVzLT5zaWJsaW5nID0g TlVMTDsKKwkJCXJlcy0+cGFyZW50ID0gTlVMTDsKKwkJCUlOSVRfTElTVF9IRUFEKCZyZXMtPmNo aWxkKTsKKwkJCUlOSVRfTElTVF9IRUFEKCZyZXMtPnNpYmxpbmcpOwogCQl9CiAJfQogfQpkaWZm IC0tZ2l0IGEvYXJjaC9zcGFyYy9rZXJuZWwvaW9wb3J0LmMgYi9hcmNoL3NwYXJjL2tlcm5lbC9p b3BvcnQuYwppbmRleCBjY2E5MTM0Y2ZhN2QuLjk5ZWZlNGU5OGIxNiAxMDA2NDQKLS0tIGEvYXJj aC9zcGFyYy9rZXJuZWwvaW9wb3J0LmMKKysrIGIvYXJjaC9zcGFyYy9rZXJuZWwvaW9wb3J0LmMK QEAgLTY2OSw3ICs2NjksNyBAQCBzdGF0aWMgaW50IHNwYXJjX2lvX3Byb2Nfc2hvdyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHZvaWQgKnYpCiAJc3RydWN0IHJlc291cmNlICpyb290ID0gbS0+cHJpdmF0 ZSwgKnI7CiAJY29uc3QgY2hhciAqbm07CiAKLQlmb3IgKHIgPSByb290LT5jaGlsZDsgciAhPSBO VUxMOyByID0gci0+c2libGluZykgeworCWxpc3RfZm9yX2VhY2hfZW50cnkociwgJnJvb3QtPmNo aWxkLCBzaWJsaW5nKSB7CiAJCWlmICgobm0gPSByLT5uYW1lKSA9PSBOVUxMKSBubSA9ICI/Pz8i OwogCQlzZXFfcHJpbnRmKG0sICIlMDE2bGx4LSUwMTZsbHg6ICVzXG4iLAogCQkJCSh1bnNpZ25l ZCBsb25nIGxvbmcpci0+c3RhcnQsCmRpZmYgLS1naXQgYS9hcmNoL3h0ZW5zYS9pbmNsdWRlL2Fz bS9wY2ktYnJpZGdlLmggYi9hcmNoL3h0ZW5zYS9pbmNsdWRlL2FzbS9wY2ktYnJpZGdlLmgKaW5k ZXggMGI2OGM3NmVjMWU2Li5mNDg3YjA2ODE3ZGYgMTAwNjQ0Ci0tLSBhL2FyY2gveHRlbnNhL2lu Y2x1ZGUvYXNtL3BjaS1icmlkZ2UuaAorKysgYi9hcmNoL3h0ZW5zYS9pbmNsdWRlL2FzbS9wY2kt YnJpZGdlLmgKQEAgLTcxLDggKzcxLDggQEAgc3RhdGljIGlubGluZSB2b2lkIHBjaWJpb3NfaW5p dF9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnJlcywKIAlyZXMtPmZsYWdzID0gZmxhZ3M7CiAJ cmVzLT5uYW1lID0gbmFtZTsKIAlyZXMtPnBhcmVudCA9IE5VTEw7Ci0JcmVzLT5zaWJsaW5nID0g TlVMTDsKLQlyZXMtPmNoaWxkID0gTlVMTDsKKwlJTklUX0xJU1RfSEVBRCgmcmVzLT5jaGlsZCk7 CisJSU5JVF9MSVNUX0hFQUQoJnJlcy0+c2libGluZyk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvZHJp dmVycy9laXNhL2Vpc2EtYnVzLmMgYi9kcml2ZXJzL2Vpc2EvZWlzYS1idXMuYwppbmRleCAxZTgw NjJmNmRiZmMuLmRiYTc4Zjc1ZmQwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9laXNhL2Vpc2EtYnVz LmMKKysrIGIvZHJpdmVycy9laXNhL2Vpc2EtYnVzLmMKQEAgLTQwOCw2ICs0MDgsOCBAQCBzdGF0 aWMgc3RydWN0IHJlc291cmNlIGVpc2Ffcm9vdF9yZXMgPSB7CiAJLnN0YXJ0ID0gMCwKIAkuZW5k ICAgPSAweGZmZmZmZmZmLAogCS5mbGFncyA9IElPUkVTT1VSQ0VfSU8sCisJLnNpYmxpbmcgPSBM SVNUX0hFQURfSU5JVChlaXNhX3Jvb3RfcmVzLnNpYmxpbmcpLAorCS5jaGlsZCAgPSBMSVNUX0hF QURfSU5JVChlaXNhX3Jvb3RfcmVzLmNoaWxkKSwKIH07CiAKIHN0YXRpYyBpbnQgZWlzYV9idXNf Y291bnQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX21lbW9yeS5jIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9tZW1vcnkuYwppbmRleCBkNjllNGZjMWVlNzcuLjMzYmFhN2ZhNWU0MSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9tZW1vcnkuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX21lbW9yeS5jCkBAIC0xNTUsOSArMTU1LDggQEAgdTY0IGRybV9nZXRfbWF4X2lv bWVtKHZvaWQpCiAJc3RydWN0IHJlc291cmNlICp0bXA7CiAJcmVzb3VyY2Vfc2l6ZV90IG1heF9p b21lbSA9IDA7CiAKLQlmb3IgKHRtcCA9IGlvbWVtX3Jlc291cmNlLmNoaWxkOyB0bXA7IHRtcCA9 IHRtcC0+c2libGluZykgeworCWxpc3RfZm9yX2VhY2hfZW50cnkodG1wLCAmaW9tZW1fcmVzb3Vy Y2UuY2hpbGQsIHNpYmxpbmcpCiAJCW1heF9pb21lbSA9IG1heChtYXhfaW9tZW0sICB0bXAtPmVu ZCk7Ci0JfQogCiAJcmV0dXJuIG1heF9pb21lbTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9nbWE1MDAvZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vZ21hNTAwL2d0dC5jCmluZGV4IDM5 NDliMDk5MDkxNi4uYWRkZDNiYzAwOWFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZ21h NTAwL2d0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9nbWE1MDAvZ3R0LmMKQEAgLTU2NSw3ICs1 NjUsNyBAQCBpbnQgcHNiX2d0dF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCByZXN1 bWUpCiBpbnQgcHNiX2d0dF9yZXN0b3JlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3Ry dWN0IGRybV9wc2JfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCXN0cnVj dCByZXNvdXJjZSAqciA9IGRldl9wcml2LT5ndHRfbWVtLT5jaGlsZDsKKwlzdHJ1Y3QgcmVzb3Vy Y2UgKnI7CiAJc3RydWN0IGd0dF9yYW5nZSAqcmFuZ2U7CiAJdW5zaWduZWQgaW50IHJlc3RvcmVk ID0gMCwgdG90YWwgPSAwLCBzaXplID0gMDsKIApAQCAtNTczLDE0ICs1NzMsMTMgQEAgaW50IHBz Yl9ndHRfcmVzdG9yZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCW11dGV4X2xvY2soJmRldl9w cml2LT5ndHRfbXV0ZXgpOwogCXBzYl9ndHRfaW5pdChkZXYsIDEpOwogCi0Jd2hpbGUgKHIgIT0g TlVMTCkgeworCWxpc3RfZm9yX2VhY2hfZW50cnkociwgJmRldl9wcml2LT5ndHRfbWVtLT5jaGls ZCwgc2libGluZykgewogCQlyYW5nZSA9IGNvbnRhaW5lcl9vZihyLCBzdHJ1Y3QgZ3R0X3Jhbmdl LCByZXNvdXJjZSk7CiAJCWlmIChyYW5nZS0+cGFnZXMpIHsKIAkJCXBzYl9ndHRfaW5zZXJ0KGRl diwgcmFuZ2UsIDEpOwogCQkJc2l6ZSArPSByYW5nZS0+cmVzb3VyY2UuZW5kIC0gcmFuZ2UtPnJl c291cmNlLnN0YXJ0OwogCQkJcmVzdG9yZWQrKzsKIAkJfQotCQlyID0gci0+c2libGluZzsKIAkJ dG90YWwrKzsKIAl9CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+Z3R0X211dGV4KTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvaHYvdm1idXNfZHJ2LmMgYi9kcml2ZXJzL2h2L3ZtYnVzX2Rydi5jCmlu ZGV4IGIxMGZlMjZjNDg5MS4uZDg3ZWM1YTFiYzRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h2L3Zt YnVzX2Rydi5jCisrKyBiL2RyaXZlcnMvaHYvdm1idXNfZHJ2LmMKQEAgLTE0MTIsOSArMTQxMiw4 IEBAIHN0YXRpYyBhY3BpX3N0YXR1cyB2bWJ1c193YWxrX3Jlc291cmNlcyhzdHJ1Y3QgYWNwaV9y ZXNvdXJjZSAqcmVzLCB2b2lkICpjdHgpCiB7CiAJcmVzb3VyY2Vfc2l6ZV90IHN0YXJ0ID0gMDsK IAlyZXNvdXJjZV9zaXplX3QgZW5kID0gMDsKLQlzdHJ1Y3QgcmVzb3VyY2UgKm5ld19yZXM7CisJ c3RydWN0IHJlc291cmNlICpuZXdfcmVzLCAqdG1wOwogCXN0cnVjdCByZXNvdXJjZSAqKm9sZF9y ZXMgPSAmaHlwZXJ2X21taW87Ci0Jc3RydWN0IHJlc291cmNlICoqcHJldl9yZXMgPSBOVUxMOwog CiAJc3dpdGNoIChyZXMtPnR5cGUpIHsKIApAQCAtMTQ2MSw0NCArMTQ2MCwzNiBAQCBzdGF0aWMg YWNwaV9zdGF0dXMgdm1idXNfd2Fsa19yZXNvdXJjZXMoc3RydWN0IGFjcGlfcmVzb3VyY2UgKnJl cywgdm9pZCAqY3R4KQogCS8qCiAJICogSWYgdHdvIHJhbmdlcyBhcmUgYWRqYWNlbnQsIG1lcmdl IHRoZW0uCiAJICovCi0JZG8gewotCQlpZiAoISpvbGRfcmVzKSB7Ci0JCQkqb2xkX3JlcyA9IG5l d19yZXM7Ci0JCQlicmVhazsKLQkJfQotCi0JCWlmICgoKCpvbGRfcmVzKS0+ZW5kICsgMSkgPT0g bmV3X3Jlcy0+c3RhcnQpIHsKLQkJCSgqb2xkX3JlcyktPmVuZCA9IG5ld19yZXMtPmVuZDsKKwlp ZiAoISpvbGRfcmVzKSB7CisJCSpvbGRfcmVzID0gbmV3X3JlczsKKwkJcmV0dXJuIEFFX09LOwor CX0KKwl0bXAgPSAqb2xkX3JlczsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X2Zyb20odG1wLCAmdG1w LT5wYXJlbnQtPmNoaWxkLCBzaWJsaW5nKSB7CisJCWlmICgodG1wLT5lbmQgKyAxKSA9PSBuZXdf cmVzLT5zdGFydCkgeworCQkJdG1wLT5lbmQgPSBuZXdfcmVzLT5lbmQ7CiAJCQlrZnJlZShuZXdf cmVzKTsKIAkJCWJyZWFrOwogCQl9CiAKLQkJaWYgKCgqb2xkX3JlcyktPnN0YXJ0ID09IG5ld19y ZXMtPmVuZCArIDEpIHsKLQkJCSgqb2xkX3JlcyktPnN0YXJ0ID0gbmV3X3Jlcy0+c3RhcnQ7CisJ CWlmICh0bXAtPnN0YXJ0ID09IG5ld19yZXMtPmVuZCArIDEpIHsKKwkJCXRtcC0+c3RhcnQgPSBu ZXdfcmVzLT5zdGFydDsKIAkJCWtmcmVlKG5ld19yZXMpOwogCQkJYnJlYWs7CiAJCX0KIAotCQlp ZiAoKCpvbGRfcmVzKS0+c3RhcnQgPiBuZXdfcmVzLT5lbmQpIHsKLQkJCW5ld19yZXMtPnNpYmxp bmcgPSAqb2xkX3JlczsKLQkJCWlmIChwcmV2X3JlcykKLQkJCQkoKnByZXZfcmVzKS0+c2libGlu ZyA9IG5ld19yZXM7Ci0JCQkqb2xkX3JlcyA9IG5ld19yZXM7CisJCWlmICh0bXAtPnN0YXJ0ID4g bmV3X3Jlcy0+ZW5kKSB7CisJCQlsaXN0X2FkZCgmbmV3X3Jlcy0+c2libGluZywgdG1wLT5zaWJs aW5nLnByZXYpOwogCQkJYnJlYWs7CiAJCX0KLQotCQlwcmV2X3JlcyA9IG9sZF9yZXM7Ci0JCW9s ZF9yZXMgPSAmKCpvbGRfcmVzKS0+c2libGluZzsKLQotCX0gd2hpbGUgKDEpOworCX0KIAogCXJl dHVybiBBRV9PSzsKIH0KIAogc3RhdGljIGludCB2bWJ1c19hY3BpX3JlbW92ZShzdHJ1Y3QgYWNw aV9kZXZpY2UgKmRldmljZSkKIHsKLQlzdHJ1Y3QgcmVzb3VyY2UgKmN1cl9yZXM7Ci0Jc3RydWN0 IHJlc291cmNlICpuZXh0X3JlczsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKIAogCWlmIChoeXBl cnZfbW1pbykgewogCQlpZiAoZmJfbW1pbykgewpAQCAtMTUwNywxMCArMTQ5OCw5IEBAIHN0YXRp YyBpbnQgdm1idXNfYWNwaV9yZW1vdmUoc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UpCiAJCQlm Yl9tbWlvID0gTlVMTDsKIAkJfQogCi0JCWZvciAoY3VyX3JlcyA9IGh5cGVydl9tbWlvOyBjdXJf cmVzOyBjdXJfcmVzID0gbmV4dF9yZXMpIHsKLQkJCW5leHRfcmVzID0gY3VyX3Jlcy0+c2libGlu ZzsKLQkJCWtmcmVlKGN1cl9yZXMpOwotCQl9CisJCXJlcyA9IGh5cGVydl9tbWlvOworCQlsaXN0 X2Zvcl9lYWNoX2VudHJ5X2Zyb20ocmVzLCAmcmVzLT5wYXJlbnQtPmNoaWxkLCBzaWJsaW5nKQor CQkJa2ZyZWUocmVzKTsKIAl9CiAKIAlyZXR1cm4gMDsKQEAgLTE1OTYsNyArMTU4Niw4IEBAIGlu dCB2bWJ1c19hbGxvY2F0ZV9tbWlvKHN0cnVjdCByZXNvdXJjZSAqKm5ldywgc3RydWN0IGh2X2Rl dmljZSAqZGV2aWNlX29iaiwKIAkJfQogCX0KIAotCWZvciAoaXRlciA9IGh5cGVydl9tbWlvOyBp dGVyOyBpdGVyID0gaXRlci0+c2libGluZykgeworCWl0ZXIgPSBoeXBlcnZfbW1pbzsKKwlsaXN0 X2Zvcl9lYWNoX2VudHJ5X2Zyb20oaXRlciwgJml0ZXItPnBhcmVudC0+Y2hpbGQsIHNpYmxpbmcp IHsKIAkJaWYgKChpdGVyLT5zdGFydCA+PSBtYXgpIHx8IChpdGVyLT5lbmQgPD0gbWluKSkKIAkJ CWNvbnRpbnVlOwogCkBAIC0xNjM5LDcgKzE2MzAsOCBAQCB2b2lkIHZtYnVzX2ZyZWVfbW1pbyhy ZXNvdXJjZV9zaXplX3Qgc3RhcnQsIHJlc291cmNlX3NpemVfdCBzaXplKQogCXN0cnVjdCByZXNv dXJjZSAqaXRlcjsKIAogCWRvd24oJmh5cGVydl9tbWlvX2xvY2spOwotCWZvciAoaXRlciA9IGh5 cGVydl9tbWlvOyBpdGVyOyBpdGVyID0gaXRlci0+c2libGluZykgeworCWl0ZXIgPSBoeXBlcnZf bW1pbzsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X2Zyb20oaXRlciwgJml0ZXItPnBhcmVudC0+Y2hp bGQsIHNpYmxpbmcpIHsKIAkJaWYgKChpdGVyLT5zdGFydCA+PSBzdGFydCArIHNpemUpIHx8IChp dGVyLT5lbmQgPD0gc3RhcnQpKQogCQkJY29udGludWU7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv aW5wdXQvam95c3RpY2svaWZvcmNlL2lmb3JjZS1tYWluLmMgYi9kcml2ZXJzL2lucHV0L2pveXN0 aWNrL2lmb3JjZS9pZm9yY2UtbWFpbi5jCmluZGV4IGRhZWViNGM3ZTNiMC4uNWMwYmUyN2IzM2Zm IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L2pveXN0aWNrL2lmb3JjZS9pZm9yY2UtbWFpbi5j CisrKyBiL2RyaXZlcnMvaW5wdXQvam95c3RpY2svaWZvcmNlL2lmb3JjZS1tYWluLmMKQEAgLTMw NSw4ICszMDUsOCBAQCBpbnQgaWZvcmNlX2luaXRfZGV2aWNlKHN0cnVjdCBpZm9yY2UgKmlmb3Jj ZSkKIAlpZm9yY2UtPmRldmljZV9tZW1vcnkuZW5kID0gMjAwOwogCWlmb3JjZS0+ZGV2aWNlX21l bW9yeS5mbGFncyA9IElPUkVTT1VSQ0VfTUVNOwogCWlmb3JjZS0+ZGV2aWNlX21lbW9yeS5wYXJl bnQgPSBOVUxMOwotCWlmb3JjZS0+ZGV2aWNlX21lbW9yeS5jaGlsZCA9IE5VTEw7Ci0JaWZvcmNl LT5kZXZpY2VfbWVtb3J5LnNpYmxpbmcgPSBOVUxMOworCUlOSVRfTElTVF9IRUFEKCZpZm9yY2Ut PmRldmljZV9tZW1vcnkuY2hpbGQpOworCUlOSVRfTElTVF9IRUFEKCZpZm9yY2UtPmRldmljZV9t ZW1vcnkuc2libGluZyk7CiAKIC8qCiAgKiBXYWl0IHVudGlsIGRldmljZSByZWFkeSAtIHVudGls IGl0IHNlbmRzIGl0cyBmaXJzdCByZXNwb25zZS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZkaW1t L25hbWVzcGFjZV9kZXZzLmMgYi9kcml2ZXJzL252ZGltbS9uYW1lc3BhY2VfZGV2cy5jCmluZGV4 IDI4YWZkZDY2ODkwNS4uZjUzZDQxMGQ5OTgxIDEwMDY0NAotLS0gYS9kcml2ZXJzL252ZGltbS9u YW1lc3BhY2VfZGV2cy5jCisrKyBiL2RyaXZlcnMvbnZkaW1tL25hbWVzcGFjZV9kZXZzLmMKQEAg LTYzNyw3ICs2MzcsNyBAQCBzdGF0aWMgcmVzb3VyY2Vfc2l6ZV90IHNjYW5fYWxsb2NhdGUoc3Ry dWN0IG5kX3JlZ2lvbiAqbmRfcmVnaW9uLAogIHJldHJ5OgogCWZpcnN0ID0gMDsKIAlmb3JfZWFj aF9kcGFfcmVzb3VyY2UobmRkLCByZXMpIHsKLQkJc3RydWN0IHJlc291cmNlICpuZXh0ID0gcmVz LT5zaWJsaW5nLCAqbmV3X3JlcyA9IE5VTEw7CisJCXN0cnVjdCByZXNvdXJjZSAqbmV4dCA9IHJl c291cmNlX3NpYmxpbmcocmVzKSwgKm5ld19yZXMgPSBOVUxMOwogCQlyZXNvdXJjZV9zaXplX3Qg YWxsb2NhdGUsIGF2YWlsYWJsZSA9IDA7CiAJCWVudW0gYWxsb2NfbG9jIGxvYyA9IEFMTE9DX0VS UjsKIAkJY29uc3QgY2hhciAqYWN0aW9uOwpAQCAtNzYzLDcgKzc2Myw3IEBAIHN0YXRpYyByZXNv dXJjZV9zaXplX3Qgc2Nhbl9hbGxvY2F0ZShzdHJ1Y3QgbmRfcmVnaW9uICpuZF9yZWdpb24sCiAJ ICogYW4gaW5pdGlhbCAicG1lbS1yZXNlcnZlIHBhc3MiLiAgT25seSBkbyBhbiBpbml0aWFsIEJM SyBhbGxvY2F0aW9uCiAJICogd2hlbiBub25lIG9mIHRoZSBEUEEgc3BhY2UgaXMgcmVzZXJ2ZWQu CiAJICovCi0JaWYgKChpc19wbWVtIHx8ICFuZGQtPmRwYS5jaGlsZCkgJiYgbiA9PSB0b19hbGxv Y2F0ZSkKKwlpZiAoKGlzX3BtZW0gfHwgbGlzdF9lbXB0eSgmbmRkLT5kcGEuY2hpbGQpKSAmJiBu ID09IHRvX2FsbG9jYXRlKQogCQlyZXR1cm4gaW5pdF9kcGFfYWxsb2NhdGlvbihsYWJlbF9pZCwg bmRfcmVnaW9uLCBuZF9tYXBwaW5nLCBuKTsKIAlyZXR1cm4gbjsKIH0KQEAgLTc3OSw3ICs3Nzks NyBAQCBzdGF0aWMgaW50IG1lcmdlX2RwYShzdHJ1Y3QgbmRfcmVnaW9uICpuZF9yZWdpb24sCiAg cmV0cnk6CiAJZm9yX2VhY2hfZHBhX3Jlc291cmNlKG5kZCwgcmVzKSB7CiAJCWludCByYzsKLQkJ c3RydWN0IHJlc291cmNlICpuZXh0ID0gcmVzLT5zaWJsaW5nOworCQlzdHJ1Y3QgcmVzb3VyY2Ug Km5leHQgPSByZXNvdXJjZV9zaWJsaW5nKHJlcyk7CiAJCXJlc291cmNlX3NpemVfdCBlbmQgPSBy ZXMtPnN0YXJ0ICsgcmVzb3VyY2Vfc2l6ZShyZXMpOwogCiAJCWlmICghbmV4dCB8fCBzdHJjbXAo cmVzLT5uYW1lLCBsYWJlbF9pZC0+aWQpICE9IDAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZkaW1t L25kLmggYi9kcml2ZXJzL252ZGltbS9uZC5oCmluZGV4IDMyZTAzNjRiNDhiOS4uZGE3ZGExNWUw M2U3IDEwMDY0NAotLS0gYS9kcml2ZXJzL252ZGltbS9uZC5oCisrKyBiL2RyaXZlcnMvbnZkaW1t L25kLmgKQEAgLTEwMiwxMSArMTAyLDEwIEBAIHVuc2lnbmVkIHNpemVvZl9uYW1lc3BhY2VfbGFi ZWwoc3RydWN0IG52ZGltbV9kcnZkYXRhICpuZGQpOwogCQkodW5zaWduZWQgbG9uZyBsb25nKSAo cmVzID8gcmVzLT5zdGFydCA6IDApLCAjI2FyZykKIAogI2RlZmluZSBmb3JfZWFjaF9kcGFfcmVz b3VyY2UobmRkLCByZXMpIFwKLQlmb3IgKHJlcyA9IChuZGQpLT5kcGEuY2hpbGQ7IHJlczsgcmVz ID0gcmVzLT5zaWJsaW5nKQorCWxpc3RfZm9yX2VhY2hfZW50cnkocmVzLCAmKG5kZCktPmRwYS5j aGlsZCwgc2libGluZykKIAogI2RlZmluZSBmb3JfZWFjaF9kcGFfcmVzb3VyY2Vfc2FmZShuZGQs IHJlcywgbmV4dCkgXAotCWZvciAocmVzID0gKG5kZCktPmRwYS5jaGlsZCwgbmV4dCA9IHJlcyA/ IHJlcy0+c2libGluZyA6IE5VTEw7IFwKLQkJCXJlczsgcmVzID0gbmV4dCwgbmV4dCA9IG5leHQg PyBuZXh0LT5zaWJsaW5nIDogTlVMTCkKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmVzLCBu ZXh0LCAmKG5kZCktPmRwYS5jaGlsZCwgc2libGluZykKIAogc3RydWN0IG5kX3BlcmNwdV9sYW5l IHsKIAlpbnQgY291bnQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL29mL2FkZHJlc3MuYyBiL2RyaXZl cnMvb2YvYWRkcmVzcy5jCmluZGV4IDUzMzQ5OTEyYWM3NS4uZTJlMjU3MTlhYjUyIDEwMDY0NAot LS0gYS9kcml2ZXJzL29mL2FkZHJlc3MuYworKysgYi9kcml2ZXJzL29mL2FkZHJlc3MuYwpAQCAt MzMwLDcgKzMzMCw5IEBAIGludCBvZl9wY2lfcmFuZ2VfdG9fcmVzb3VyY2Uoc3RydWN0IG9mX3Bj aV9yYW5nZSAqcmFuZ2UsCiB7CiAJaW50IGVycjsKIAlyZXMtPmZsYWdzID0gcmFuZ2UtPmZsYWdz OwotCXJlcy0+cGFyZW50ID0gcmVzLT5jaGlsZCA9IHJlcy0+c2libGluZyA9IE5VTEw7CisJcmVz LT5wYXJlbnQgPSBOVUxMOworCUlOSVRfTElTVF9IRUFEKCZyZXMtPmNoaWxkKTsKKwlJTklUX0xJ U1RfSEVBRCgmcmVzLT5zaWJsaW5nKTsKIAlyZXMtPm5hbWUgPSBucC0+ZnVsbF9uYW1lOwogCiAJ aWYgKHJlcy0+ZmxhZ3MgJiBJT1JFU09VUkNFX0lPKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Bh cmlzYy9sYmFfcGNpLmMgYi9kcml2ZXJzL3BhcmlzYy9sYmFfcGNpLmMKaW5kZXggNjliZDk4NDIx ZWIxLi43NDgyYmRmZDE5NTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGFyaXNjL2xiYV9wY2kuYwor KysgYi9kcml2ZXJzL3BhcmlzYy9sYmFfcGNpLmMKQEAgLTE3MCw4ICsxNzAsOCBAQCBsYmFfZHVt cF9yZXMoc3RydWN0IHJlc291cmNlICpyLCBpbnQgZCkKIAlmb3IgKGkgPSBkOyBpIDsgLS1pKSBw cmludGsoIiAiKTsKIAlwcmludGsoS0VSTl9ERUJVRyAiJXAgWyVseCwlbHhdLyVseFxuIiwgciwK IAkJKGxvbmcpci0+c3RhcnQsIChsb25nKXItPmVuZCwgci0+ZmxhZ3MpOwotCWxiYV9kdW1wX3Jl cyhyLT5jaGlsZCwgZCsyKTsKLQlsYmFfZHVtcF9yZXMoci0+c2libGluZywgZCk7CisJbGJhX2R1 bXBfcmVzKHJlc291cmNlX2ZpcnN0X2NoaWxkKCZyLT5jaGlsZCksIGQrMik7CisJbGJhX2R1bXBf cmVzKHJlc291cmNlX3NpYmxpbmcociksIGQpOwogfQogCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv cGNpL2NvbnRyb2xsZXIvdm1kLmMgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3ZtZC5jCmluZGV4 IDk0MmI2NGZjN2YxZi4uZTNhY2UyMDM0NWM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9jb250 cm9sbGVyL3ZtZC5jCisrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvdm1kLmMKQEAgLTU0Miwx NCArNTQyLDE0IEBAIHN0YXRpYyBzdHJ1Y3QgcGNpX29wcyB2bWRfb3BzID0gewogCiBzdGF0aWMg dm9pZCB2bWRfYXR0YWNoX3Jlc291cmNlcyhzdHJ1Y3Qgdm1kX2RldiAqdm1kKQogewotCXZtZC0+ ZGV2LT5yZXNvdXJjZVtWTURfTUVNQkFSMV0uY2hpbGQgPSAmdm1kLT5yZXNvdXJjZXNbMV07Ci0J dm1kLT5kZXYtPnJlc291cmNlW1ZNRF9NRU1CQVIyXS5jaGlsZCA9ICZ2bWQtPnJlc291cmNlc1sy XTsKKwlsaXN0X2FkZCgmdm1kLT5yZXNvdXJjZXNbMV0uc2libGluZywgJnZtZC0+ZGV2LT5yZXNv dXJjZVtWTURfTUVNQkFSMV0uY2hpbGQpOworCWxpc3RfYWRkKCZ2bWQtPnJlc291cmNlc1syXS5z aWJsaW5nLCAmdm1kLT5kZXYtPnJlc291cmNlW1ZNRF9NRU1CQVIyXS5jaGlsZCk7CiB9CiAKIHN0 YXRpYyB2b2lkIHZtZF9kZXRhY2hfcmVzb3VyY2VzKHN0cnVjdCB2bWRfZGV2ICp2bWQpCiB7Ci0J dm1kLT5kZXYtPnJlc291cmNlW1ZNRF9NRU1CQVIxXS5jaGlsZCA9IE5VTEw7Ci0Jdm1kLT5kZXYt PnJlc291cmNlW1ZNRF9NRU1CQVIyXS5jaGlsZCA9IE5VTEw7CisJSU5JVF9MSVNUX0hFQUQoJnZt ZC0+ZGV2LT5yZXNvdXJjZVtWTURfTUVNQkFSMV0uY2hpbGQpOworCUlOSVRfTElTVF9IRUFEKCZ2 bWQtPmRldi0+cmVzb3VyY2VbVk1EX01FTUJBUjJdLmNoaWxkKTsKIH0KIAogLyoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvcGNpL3Byb2JlLmMgYi9kcml2ZXJzL3BjaS9wcm9iZS5jCmluZGV4IGFjODc2 ZTMyZGU0Yi4uOTYyNGRkMWRmZDQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9wcm9iZS5jCisr KyBiL2RyaXZlcnMvcGNpL3Byb2JlLmMKQEAgLTU5LDYgKzU5LDggQEAgc3RhdGljIHN0cnVjdCBy ZXNvdXJjZSAqZ2V0X3BjaV9kb21haW5fYnVzbl9yZXMoaW50IGRvbWFpbl9ucikKIAlyLT5yZXMu c3RhcnQgPSAwOwogCXItPnJlcy5lbmQgPSAweGZmOwogCXItPnJlcy5mbGFncyA9IElPUkVTT1VS Q0VfQlVTIHwgSU9SRVNPVVJDRV9QQ0lfRklYRUQ7CisJSU5JVF9MSVNUX0hFQUQoJnItPnJlcy5j aGlsZCk7CisJSU5JVF9MSVNUX0hFQUQoJnItPnJlcy5zaWJsaW5nKTsKIAogCWxpc3RfYWRkX3Rh aWwoJnItPmxpc3QsICZwY2lfZG9tYWluX2J1c25fcmVzX2xpc3QpOwogCmRpZmYgLS1naXQgYS9k cml2ZXJzL3BjaS9zZXR1cC1idXMuYyBiL2RyaXZlcnMvcGNpL3NldHVwLWJ1cy5jCmluZGV4IDc5 YjE4MjRlODNiNC4uOGU2ODVhZjg5MzhkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9zZXR1cC1i dXMuYworKysgYi9kcml2ZXJzL3BjaS9zZXR1cC1idXMuYwpAQCAtMjEwNyw3ICsyMTA3LDcgQEAg aW50IHBjaV9yZWFzc2lnbl9icmlkZ2VfcmVzb3VyY2VzKHN0cnVjdCBwY2lfZGV2ICpicmlkZ2Us IHVuc2lnbmVkIGxvbmcgdHlwZSkKIAkJCQljb250aW51ZTsKIAogCQkJLyogSWdub3JlIEJBUnMg d2hpY2ggYXJlIHN0aWxsIGluIHVzZSAqLwotCQkJaWYgKHJlcy0+Y2hpbGQpCisJCQlpZiAoIWxp c3RfZW1wdHkoJnJlcy0+Y2hpbGQpKQogCQkJCWNvbnRpbnVlOwogCiAJCQlyZXQgPSBhZGRfdG9f bGlzdCgmc2F2ZWQsIGJyaWRnZSwgcmVzLCAwLCAwKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGlu dXgvaW9wb3J0LmggYi9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oCmluZGV4IGRmZGNkMGJmZTU0ZS4u Yjc0NTZhZTg4OWRkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oCisrKyBiL2lu Y2x1ZGUvbGludXgvaW9wb3J0LmgKQEAgLTEyLDYgKzEyLDcgQEAKICNpZm5kZWYgX19BU1NFTUJM WV9fCiAjaW5jbHVkZSA8bGludXgvY29tcGlsZXIuaD4KICNpbmNsdWRlIDxsaW51eC90eXBlcy5o PgorI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KIC8qCiAgKiBSZXNvdXJjZXMgYXJlIHRyZWUtbGlr ZSwgYWxsb3dpbmcKICAqIG5lc3RpbmcgZXRjLi4KQEAgLTIyLDcgKzIzLDggQEAgc3RydWN0IHJl c291cmNlIHsKIAljb25zdCBjaGFyICpuYW1lOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJdW5z aWduZWQgbG9uZyBkZXNjOwotCXN0cnVjdCByZXNvdXJjZSAqcGFyZW50LCAqc2libGluZywgKmNo aWxkOworCXN0cnVjdCBsaXN0X2hlYWQgY2hpbGQsIHNpYmxpbmc7CisJc3RydWN0IHJlc291cmNl ICpwYXJlbnQ7CiB9OwogCiAvKgpAQCAtMjE2LDcgKzIxOCw2IEBAIHN0YXRpYyBpbmxpbmUgYm9v bCByZXNvdXJjZV9jb250YWlucyhzdHJ1Y3QgcmVzb3VyY2UgKnIxLCBzdHJ1Y3QgcmVzb3VyY2Ug KnIyKQogCXJldHVybiByMS0+c3RhcnQgPD0gcjItPnN0YXJ0ICYmIHIxLT5lbmQgPj0gcjItPmVu ZDsKIH0KIAotCiAvKiBDb252ZW5pZW5jZSBzaG9ydGhhbmQgd2l0aCBhbGxvY2F0aW9uICovCiAj ZGVmaW5lIHJlcXVlc3RfcmVnaW9uKHN0YXJ0LG4sbmFtZSkJCV9fcmVxdWVzdF9yZWdpb24oJmlv cG9ydF9yZXNvdXJjZSwgKHN0YXJ0KSwgKG4pLCAobmFtZSksIDApCiAjZGVmaW5lIHJlcXVlc3Rf bXV4ZWRfcmVnaW9uKHN0YXJ0LG4sbmFtZSkJX19yZXF1ZXN0X3JlZ2lvbigmaW9wb3J0X3Jlc291 cmNlLCAoc3RhcnQpLCAobiksIChuYW1lKSwgSU9SRVNPVVJDRV9NVVhFRCkKQEAgLTI4Nyw2ICsy ODgsMTggQEAgc3RhdGljIGlubGluZSBib29sIHJlc291cmNlX292ZXJsYXBzKHN0cnVjdCByZXNv dXJjZSAqcjEsIHN0cnVjdCByZXNvdXJjZSAqcjIpCiAgICAgICAgcmV0dXJuIChyMS0+c3RhcnQg PD0gcjItPmVuZCAmJiByMS0+ZW5kID49IHIyLT5zdGFydCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUg c3RydWN0IHJlc291cmNlICpyZXNvdXJjZV9zaWJsaW5nKHN0cnVjdCByZXNvdXJjZSAqcmVzKQor eworCWlmIChyZXMtPnBhcmVudCAmJiAhbGlzdF9pc19sYXN0KCZyZXMtPnNpYmxpbmcsICZyZXMt PnBhcmVudC0+Y2hpbGQpKQorCQlyZXR1cm4gbGlzdF9uZXh0X2VudHJ5KHJlcywgc2libGluZyk7 CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IHJlc291cmNlICpyZXNv dXJjZV9maXJzdF9jaGlsZChzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQoreworCXJldHVybiBsaXN0 X2ZpcnN0X2VudHJ5X29yX251bGwoaGVhZCwgc3RydWN0IHJlc291cmNlLCBzaWJsaW5nKTsKK30K KwogCiAjZW5kaWYgLyogX19BU1NFTUJMWV9fICovCiAjZW5kaWYJLyogX0xJTlVYX0lPUE9SVF9I ICovCmRpZmYgLS1naXQgYS9rZXJuZWwvcmVzb3VyY2UuYyBiL2tlcm5lbC9yZXNvdXJjZS5jCmlu ZGV4IDgxY2NkMTljMWQ5Zi4uYzk2ZTU4ZDNkMmY4IDEwMDY0NAotLS0gYS9rZXJuZWwvcmVzb3Vy Y2UuYworKysgYi9rZXJuZWwvcmVzb3VyY2UuYwpAQCAtMzEsNiArMzEsOCBAQCBzdHJ1Y3QgcmVz b3VyY2UgaW9wb3J0X3Jlc291cmNlID0gewogCS5zdGFydAk9IDAsCiAJLmVuZAk9IElPX1NQQUNF X0xJTUlULAogCS5mbGFncwk9IElPUkVTT1VSQ0VfSU8sCisJLnNpYmxpbmcgPSBMSVNUX0hFQURf SU5JVChpb3BvcnRfcmVzb3VyY2Uuc2libGluZyksCisJLmNoaWxkICA9IExJU1RfSEVBRF9JTklU KGlvcG9ydF9yZXNvdXJjZS5jaGlsZCksCiB9OwogRVhQT1JUX1NZTUJPTChpb3BvcnRfcmVzb3Vy Y2UpOwogCkBAIC0zOSw2ICs0MSw4IEBAIHN0cnVjdCByZXNvdXJjZSBpb21lbV9yZXNvdXJjZSA9 IHsKIAkuc3RhcnQJPSAwLAogCS5lbmQJPSAtMSwKIAkuZmxhZ3MJPSBJT1JFU09VUkNFX01FTSwK Kwkuc2libGluZyA9IExJU1RfSEVBRF9JTklUKGlvbWVtX3Jlc291cmNlLnNpYmxpbmcpLAorCS5j aGlsZCAgPSBMSVNUX0hFQURfSU5JVChpb21lbV9yZXNvdXJjZS5jaGlsZCksCiB9OwogRVhQT1JU X1NZTUJPTChpb21lbV9yZXNvdXJjZSk7CiAKQEAgLTU3LDIwICs2MSwyMCBAQCBzdGF0aWMgREVG SU5FX1JXTE9DSyhyZXNvdXJjZV9sb2NrKTsKICAqIGJ5IGJvb3QgbWVtIGFmdGVyIHRoZSBzeXN0 ZW0gaXMgdXAuIFNvIGZvciByZXVzaW5nIHRoZSByZXNvdXJjZSBlbnRyeQogICogd2UgbmVlZCB0 byByZW1lbWJlciB0aGUgcmVzb3VyY2UuCiAgKi8KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgKmJv b3RtZW1fcmVzb3VyY2VfZnJlZTsKK3N0YXRpYyBzdHJ1Y3QgbGlzdF9oZWFkIGJvb3RtZW1fcmVz b3VyY2VfZnJlZSA9IExJU1RfSEVBRF9JTklUKGJvb3RtZW1fcmVzb3VyY2VfZnJlZSk7CiBzdGF0 aWMgREVGSU5FX1NQSU5MT0NLKGJvb3RtZW1fcmVzb3VyY2VfbG9jayk7CiAKIHN0YXRpYyBzdHJ1 Y3QgcmVzb3VyY2UgKm5leHRfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpwLCBib29sIHNpYmxp bmdfb25seSkKIHsKIAkvKiBDYWxsZXIgd2FudHMgdG8gdHJhdmVyc2UgdGhyb3VnaCBzaWJsaW5n cyBvbmx5ICovCiAJaWYgKHNpYmxpbmdfb25seSkKLQkJcmV0dXJuIHAtPnNpYmxpbmc7CisJCXJl dHVybiByZXNvdXJjZV9zaWJsaW5nKHApOwogCi0JaWYgKHAtPmNoaWxkKQotCQlyZXR1cm4gcC0+ Y2hpbGQ7Ci0Jd2hpbGUgKCFwLT5zaWJsaW5nICYmIHAtPnBhcmVudCkKKwlpZiAoIWxpc3RfZW1w dHkoJnAtPmNoaWxkKSkKKwkJcmV0dXJuIHJlc291cmNlX2ZpcnN0X2NoaWxkKCZwLT5jaGlsZCk7 CisJd2hpbGUgKCFyZXNvdXJjZV9zaWJsaW5nKHApICYmIHAtPnBhcmVudCkKIAkJcCA9IHAtPnBh cmVudDsKLQlyZXR1cm4gcC0+c2libGluZzsKKwlyZXR1cm4gcmVzb3VyY2Vfc2libGluZyhwKTsK IH0KIAogc3RhdGljIHZvaWQgKnJfbmV4dChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYsIGxv ZmZfdCAqcG9zKQpAQCAtOTAsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCAqcl9zdGFydChzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIGxvZmZfdCAqcG9zKQogCXN0cnVjdCByZXNvdXJjZSAqcCA9IFBERV9EQVRB KGZpbGVfaW5vZGUobS0+ZmlsZSkpOwogCWxvZmZfdCBsID0gMDsKIAlyZWFkX2xvY2soJnJlc291 cmNlX2xvY2spOwotCWZvciAocCA9IHAtPmNoaWxkOyBwICYmIGwgPCAqcG9zOyBwID0gcl9uZXh0 KG0sIHAsICZsKSkKKwlmb3IgKHAgPSByZXNvdXJjZV9maXJzdF9jaGlsZCgmcC0+Y2hpbGQpOyBw ICYmIGwgPCAqcG9zOyBwID0gcl9uZXh0KG0sIHAsICZsKSkKIAkJOwogCXJldHVybiBwOwogfQpA QCAtMTUzLDggKzE1Nyw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfcmVzb3VyY2Uoc3RydWN0IHJlc291 cmNlICpyZXMpCiAKIAlpZiAoIVBhZ2VTbGFiKHZpcnRfdG9faGVhZF9wYWdlKHJlcykpKSB7CiAJ CXNwaW5fbG9jaygmYm9vdG1lbV9yZXNvdXJjZV9sb2NrKTsKLQkJcmVzLT5zaWJsaW5nID0gYm9v dG1lbV9yZXNvdXJjZV9mcmVlOwotCQlib290bWVtX3Jlc291cmNlX2ZyZWUgPSByZXM7CisJCWxp c3RfYWRkKCZyZXMtPnNpYmxpbmcsICZib290bWVtX3Jlc291cmNlX2ZyZWUpOwogCQlzcGluX3Vu bG9jaygmYm9vdG1lbV9yZXNvdXJjZV9sb2NrKTsKIAl9IGVsc2UgewogCQlrZnJlZShyZXMpOwpA QCAtMTY2LDEwICsxNjksOSBAQCBzdGF0aWMgc3RydWN0IHJlc291cmNlICphbGxvY19yZXNvdXJj ZShnZnBfdCBmbGFncykKIAlzdHJ1Y3QgcmVzb3VyY2UgKnJlcyA9IE5VTEw7CiAKIAlzcGluX2xv Y2soJmJvb3RtZW1fcmVzb3VyY2VfbG9jayk7Ci0JaWYgKGJvb3RtZW1fcmVzb3VyY2VfZnJlZSkg ewotCQlyZXMgPSBib290bWVtX3Jlc291cmNlX2ZyZWU7Ci0JCWJvb3RtZW1fcmVzb3VyY2VfZnJl ZSA9IHJlcy0+c2libGluZzsKLQl9CisJcmVzID0gcmVzb3VyY2VfZmlyc3RfY2hpbGQoJmJvb3Rt ZW1fcmVzb3VyY2VfZnJlZSk7CisJaWYgKHJlcykKKwkJbGlzdF9kZWwoJnJlcy0+c2libGluZyk7 CiAJc3Bpbl91bmxvY2soJmJvb3RtZW1fcmVzb3VyY2VfbG9jayk7CiAKIAlpZiAocmVzKQpAQCAt MTc3LDYgKzE3OSw4IEBAIHN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgKmFsbG9jX3Jlc291cmNlKGdm cF90IGZsYWdzKQogCWVsc2UKIAkJcmVzID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHJlc291cmNl KSwgZmxhZ3MpOwogCisJSU5JVF9MSVNUX0hFQUQoJnJlcy0+Y2hpbGQpOworCUlOSVRfTElTVF9I RUFEKCZyZXMtPnNpYmxpbmcpOwogCXJldHVybiByZXM7CiB9CiAKQEAgLTE4NSw3ICsxODksNyBA QCBzdGF0aWMgc3RydWN0IHJlc291cmNlICogX19yZXF1ZXN0X3Jlc291cmNlKHN0cnVjdCByZXNv dXJjZSAqcm9vdCwgc3RydWN0IHJlc291cgogewogCXJlc291cmNlX3NpemVfdCBzdGFydCA9IG5l dy0+c3RhcnQ7CiAJcmVzb3VyY2Vfc2l6ZV90IGVuZCA9IG5ldy0+ZW5kOwotCXN0cnVjdCByZXNv dXJjZSAqdG1wLCAqKnA7CisJc3RydWN0IHJlc291cmNlICp0bXA7CiAKIAlpZiAoZW5kIDwgc3Rh cnQpCiAJCXJldHVybiByb290OwpAQCAtMTkzLDY0ICsxOTcsNjIgQEAgc3RhdGljIHN0cnVjdCBy ZXNvdXJjZSAqIF9fcmVxdWVzdF9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnJvb3QsIHN0cnVj dCByZXNvdXIKIAkJcmV0dXJuIHJvb3Q7CiAJaWYgKGVuZCA+IHJvb3QtPmVuZCkKIAkJcmV0dXJu IHJvb3Q7Ci0JcCA9ICZyb290LT5jaGlsZDsKLQlmb3IgKDs7KSB7Ci0JCXRtcCA9ICpwOwotCQlp ZiAoIXRtcCB8fCB0bXAtPnN0YXJ0ID4gZW5kKSB7Ci0JCQluZXctPnNpYmxpbmcgPSB0bXA7Ci0J CQkqcCA9IG5ldzsKKworCWlmIChsaXN0X2VtcHR5KCZyb290LT5jaGlsZCkpIHsKKwkJbGlzdF9h ZGQoJm5ldy0+c2libGluZywgJnJvb3QtPmNoaWxkKTsKKwkJbmV3LT5wYXJlbnQgPSByb290Owor CQlJTklUX0xJU1RfSEVBRCgmbmV3LT5jaGlsZCk7CisJCXJldHVybiBOVUxMOworCX0KKworCWxp c3RfZm9yX2VhY2hfZW50cnkodG1wLCAmcm9vdC0+Y2hpbGQsIHNpYmxpbmcpIHsKKwkJaWYgKHRt cC0+c3RhcnQgPiBlbmQpIHsKKwkJCWxpc3RfYWRkKCZuZXctPnNpYmxpbmcsIHRtcC0+c2libGlu Zy5wcmV2KTsKIAkJCW5ldy0+cGFyZW50ID0gcm9vdDsKKwkJCUlOSVRfTElTVF9IRUFEKCZuZXct PmNoaWxkKTsKIAkJCXJldHVybiBOVUxMOwogCQl9Ci0JCXAgPSAmdG1wLT5zaWJsaW5nOwogCQlp ZiAodG1wLT5lbmQgPCBzdGFydCkKIAkJCWNvbnRpbnVlOwogCQlyZXR1cm4gdG1wOwogCX0KKwor CWxpc3RfYWRkX3RhaWwoJm5ldy0+c2libGluZywgJnJvb3QtPmNoaWxkKTsKKwluZXctPnBhcmVu dCA9IHJvb3Q7CisJSU5JVF9MSVNUX0hFQUQoJm5ldy0+Y2hpbGQpOworCXJldHVybiBOVUxMOwog fQogCiBzdGF0aWMgaW50IF9fcmVsZWFzZV9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKm9sZCwg Ym9vbCByZWxlYXNlX2NoaWxkKQogewotCXN0cnVjdCByZXNvdXJjZSAqdG1wLCAqKnAsICpjaGQ7 CisJc3RydWN0IHJlc291cmNlICp0bXAsICpuZXh0LCAqY2hkOwogCi0JcCA9ICZvbGQtPnBhcmVu dC0+Y2hpbGQ7Ci0JZm9yICg7OykgewotCQl0bXAgPSAqcDsKLQkJaWYgKCF0bXApCi0JCQlicmVh azsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodG1wLCBuZXh0LCAmb2xkLT5wYXJlbnQtPmNo aWxkLCBzaWJsaW5nKSB7CiAJCWlmICh0bXAgPT0gb2xkKSB7Ci0JCQlpZiAocmVsZWFzZV9jaGls ZCB8fCAhKHRtcC0+Y2hpbGQpKSB7Ci0JCQkJKnAgPSB0bXAtPnNpYmxpbmc7CisJCQlpZiAocmVs ZWFzZV9jaGlsZCB8fCBsaXN0X2VtcHR5KCZ0bXAtPmNoaWxkKSkgeworCQkJCWxpc3RfZGVsKCZ0 bXAtPnNpYmxpbmcpOwogCQkJfSBlbHNlIHsKLQkJCQlmb3IgKGNoZCA9IHRtcC0+Y2hpbGQ7OyBj aGQgPSBjaGQtPnNpYmxpbmcpIHsKKwkJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNoZCwgJnRtcC0+ Y2hpbGQsIHNpYmxpbmcpCiAJCQkJCWNoZC0+cGFyZW50ID0gdG1wLT5wYXJlbnQ7Ci0JCQkJCWlm ICghKGNoZC0+c2libGluZykpCi0JCQkJCQlicmVhazsKLQkJCQl9Ci0JCQkJKnAgPSB0bXAtPmNo aWxkOwotCQkJCWNoZC0+c2libGluZyA9IHRtcC0+c2libGluZzsKKwkJCQlsaXN0X3NwbGljZSgm dG1wLT5jaGlsZCwgdG1wLT5zaWJsaW5nLnByZXYpOworCQkJCWxpc3RfZGVsKCZ0bXAtPnNpYmxp bmcpOwogCQkJfQorCiAJCQlvbGQtPnBhcmVudCA9IE5VTEw7CiAJCQlyZXR1cm4gMDsKIAkJfQot CQlwID0gJnRtcC0+c2libGluZzsKIAl9CiAJcmV0dXJuIC1FSU5WQUw7CiB9CiAKIHN0YXRpYyB2 b2lkIF9fcmVsZWFzZV9jaGlsZF9yZXNvdXJjZXMoc3RydWN0IHJlc291cmNlICpyKQogewotCXN0 cnVjdCByZXNvdXJjZSAqdG1wLCAqcDsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnRtcCwgKm5leHQ7CiAJ cmVzb3VyY2Vfc2l6ZV90IHNpemU7CiAKLQlwID0gci0+Y2hpbGQ7Ci0Jci0+Y2hpbGQgPSBOVUxM OwotCXdoaWxlIChwKSB7Ci0JCXRtcCA9IHA7Ci0JCXAgPSBwLT5zaWJsaW5nOwotCisJbGlzdF9m b3JfZWFjaF9lbnRyeV9zYWZlKHRtcCwgbmV4dCwgJnItPmNoaWxkLCBzaWJsaW5nKSB7CiAJCXRt cC0+cGFyZW50ID0gTlVMTDsKLQkJdG1wLT5zaWJsaW5nID0gTlVMTDsKKwkJbGlzdF9kZWxfaW5p dCgmdG1wLT5zaWJsaW5nKTsKIAkJX19yZWxlYXNlX2NoaWxkX3Jlc291cmNlcyh0bXApOwogCiAJ CXByaW50ayhLRVJOX0RFQlVHICJyZWxlYXNlIGNoaWxkIHJlc291cmNlICVwUlxuIiwgdG1wKTsK QEAgLTI1OSw2ICsyNjEsOCBAQCBzdGF0aWMgdm9pZCBfX3JlbGVhc2VfY2hpbGRfcmVzb3VyY2Vz KHN0cnVjdCByZXNvdXJjZSAqcikKIAkJdG1wLT5zdGFydCA9IDA7CiAJCXRtcC0+ZW5kID0gc2l6 ZSAtIDE7CiAJfQorCisJSU5JVF9MSVNUX0hFQUQoJnRtcC0+Y2hpbGQpOwogfQogCiB2b2lkIHJl bGVhc2VfY2hpbGRfcmVzb3VyY2VzKHN0cnVjdCByZXNvdXJjZSAqcikKQEAgLTM0Myw3ICszNDcs OCBAQCBzdGF0aWMgaW50IGZpbmRfbmV4dF9pb21lbV9yZXMoc3RydWN0IHJlc291cmNlICpyZXMs IHVuc2lnbmVkIGxvbmcgZGVzYywKIAogCXJlYWRfbG9jaygmcmVzb3VyY2VfbG9jayk7CiAKLQlm b3IgKHAgPSBpb21lbV9yZXNvdXJjZS5jaGlsZDsgcDsgcCA9IG5leHRfcmVzb3VyY2UocCwgc2li bGluZ19vbmx5KSkgeworCWZvciAocCA9IHJlc291cmNlX2ZpcnN0X2NoaWxkKCZpb21lbV9yZXNv dXJjZS5jaGlsZCk7IHA7CisJCQlwID0gbmV4dF9yZXNvdXJjZShwLCBzaWJsaW5nX29ubHkpKSB7 CiAJCWlmICgocC0+ZmxhZ3MgJiByZXMtPmZsYWdzKSAhPSByZXMtPmZsYWdzKQogCQkJY29udGlu dWU7CiAJCWlmICgoZGVzYyAhPSBJT1JFU19ERVNDX05PTkUpICYmIChkZXNjICE9IHAtPmRlc2Mp KQpAQCAtNTMyLDcgKzUzNyw3IEBAIGludCByZWdpb25faW50ZXJzZWN0cyhyZXNvdXJjZV9zaXpl X3Qgc3RhcnQsIHNpemVfdCBzaXplLCB1bnNpZ25lZCBsb25nIGZsYWdzLAogCXN0cnVjdCByZXNv dXJjZSAqcDsKIAogCXJlYWRfbG9jaygmcmVzb3VyY2VfbG9jayk7Ci0JZm9yIChwID0gaW9tZW1f cmVzb3VyY2UuY2hpbGQ7IHAgOyBwID0gcC0+c2libGluZykgeworCWxpc3RfZm9yX2VhY2hfZW50 cnkocCwgJmlvbWVtX3Jlc291cmNlLmNoaWxkLCBzaWJsaW5nKSB7CiAJCWJvb2wgaXNfdHlwZSA9 ICgoKHAtPmZsYWdzICYgZmxhZ3MpID09IGZsYWdzKSAmJgogCQkJCSgoZGVzYyA9PSBJT1JFU19E RVNDX05PTkUpIHx8CiAJCQkJIChkZXNjID09IHAtPmRlc2MpKSk7CkBAIC01ODYsNyArNTkxLDcg QEAgc3RhdGljIGludCBfX2ZpbmRfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyb290LCBzdHJ1 Y3QgcmVzb3VyY2UgKm9sZCwKIAkJCSByZXNvdXJjZV9zaXplX3QgIHNpemUsCiAJCQkgc3RydWN0 IHJlc291cmNlX2NvbnN0cmFpbnQgKmNvbnN0cmFpbnQpCiB7Ci0Jc3RydWN0IHJlc291cmNlICp0 aGlzID0gcm9vdC0+Y2hpbGQ7CisJc3RydWN0IHJlc291cmNlICp0aGlzID0gcmVzb3VyY2VfZmly c3RfY2hpbGQoJnJvb3QtPmNoaWxkKTsKIAlzdHJ1Y3QgcmVzb3VyY2UgdG1wID0gKm5ldywgYXZh aWwsIGFsbG9jOwogCiAJdG1wLnN0YXJ0ID0gcm9vdC0+c3RhcnQ7CkBAIC01OTYsNyArNjAxLDcg QEAgc3RhdGljIGludCBfX2ZpbmRfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyb290LCBzdHJ1 Y3QgcmVzb3VyY2UgKm9sZCwKIAkgKi8KIAlpZiAodGhpcyAmJiB0aGlzLT5zdGFydCA9PSByb290 LT5zdGFydCkgewogCQl0bXAuc3RhcnQgPSAodGhpcyA9PSBvbGQpID8gb2xkLT5zdGFydCA6IHRo aXMtPmVuZCArIDE7Ci0JCXRoaXMgPSB0aGlzLT5zaWJsaW5nOworCQl0aGlzID0gcmVzb3VyY2Vf c2libGluZyh0aGlzKTsKIAl9CiAJZm9yKDs7KSB7CiAJCWlmICh0aGlzKQpAQCAtNjMyLDcgKzYz Nyw3IEBAIG5leHQ6CQlpZiAoIXRoaXMgfHwgdGhpcy0+ZW5kID09IHJvb3QtPmVuZCkKIAogCQlp ZiAodGhpcyAhPSBvbGQpCiAJCQl0bXAuc3RhcnQgPSB0aGlzLT5lbmQgKyAxOwotCQl0aGlzID0g dGhpcy0+c2libGluZzsKKwkJdGhpcyA9IHJlc291cmNlX3NpYmxpbmcodGhpcyk7CiAJfQogCXJl dHVybiAtRUJVU1k7CiB9CkBAIC02NzYsNyArNjgxLDcgQEAgc3RhdGljIGludCByZWFsbG9jYXRl X3Jlc291cmNlKHN0cnVjdCByZXNvdXJjZSAqcm9vdCwgc3RydWN0IHJlc291cmNlICpvbGQsCiAJ CWdvdG8gb3V0OwogCX0KIAotCWlmIChvbGQtPmNoaWxkKSB7CisJaWYgKCFsaXN0X2VtcHR5KCZv bGQtPmNoaWxkKSkgewogCQllcnIgPSAtRUJVU1k7CiAJCWdvdG8gb3V0OwogCX0KQEAgLTc1Nyw3 ICs3NjIsNyBAQCBzdHJ1Y3QgcmVzb3VyY2UgKmxvb2t1cF9yZXNvdXJjZShzdHJ1Y3QgcmVzb3Vy Y2UgKnJvb3QsIHJlc291cmNlX3NpemVfdCBzdGFydCkKIAlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsK IAogCXJlYWRfbG9jaygmcmVzb3VyY2VfbG9jayk7Ci0JZm9yIChyZXMgPSByb290LT5jaGlsZDsg cmVzOyByZXMgPSByZXMtPnNpYmxpbmcpIHsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcywgJnJv b3QtPmNoaWxkLCBzaWJsaW5nKSB7CiAJCWlmIChyZXMtPnN0YXJ0ID09IHN0YXJ0KQogCQkJYnJl YWs7CiAJfQpAQCAtNzkwLDMyICs3OTUsMjcgQEAgc3RhdGljIHN0cnVjdCByZXNvdXJjZSAqIF9f aW5zZXJ0X3Jlc291cmNlKHN0cnVjdCByZXNvdXJjZSAqcGFyZW50LCBzdHJ1Y3QgcmVzb3UKIAkJ CWJyZWFrOwogCX0KIAotCWZvciAobmV4dCA9IGZpcnN0OyA7IG5leHQgPSBuZXh0LT5zaWJsaW5n KSB7CisJZm9yIChuZXh0ID0gZmlyc3Q7IDsgbmV4dCA9IHJlc291cmNlX3NpYmxpbmcobmV4dCkp IHsKIAkJLyogUGFydGlhbCBvdmVybGFwPyBCYWQsIGFuZCB1bmZpeGFibGUgKi8KIAkJaWYgKG5l eHQtPnN0YXJ0IDwgbmV3LT5zdGFydCB8fCBuZXh0LT5lbmQgPiBuZXctPmVuZCkKIAkJCXJldHVy biBuZXh0OwotCQlpZiAoIW5leHQtPnNpYmxpbmcpCisJCWlmICghcmVzb3VyY2Vfc2libGluZyhu ZXh0KSkKIAkJCWJyZWFrOwotCQlpZiAobmV4dC0+c2libGluZy0+c3RhcnQgPiBuZXctPmVuZCkK KwkJaWYgKHJlc291cmNlX3NpYmxpbmcobmV4dCktPnN0YXJ0ID4gbmV3LT5lbmQpCiAJCQlicmVh azsKIAl9Ci0KIAluZXctPnBhcmVudCA9IHBhcmVudDsKLQluZXctPnNpYmxpbmcgPSBuZXh0LT5z aWJsaW5nOwotCW5ldy0+Y2hpbGQgPSBmaXJzdDsKKwlsaXN0X2FkZCgmbmV3LT5zaWJsaW5nLCAm bmV4dC0+c2libGluZyk7CisJSU5JVF9MSVNUX0hFQUQoJm5ldy0+Y2hpbGQpOwogCi0JbmV4dC0+ c2libGluZyA9IE5VTEw7Ci0JZm9yIChuZXh0ID0gZmlyc3Q7IG5leHQ7IG5leHQgPSBuZXh0LT5z aWJsaW5nKQorCS8qCisJICogRnJvbSBmaXJzdCB0byBuZXh0LCB0aGV5IGFsbCBmYWxsIGludG8g bmV3J3MgcmVnaW9uLCBzbyBjaGFuZ2UgdGhlbQorCSAqIGFzIG5ldydzIGNoaWxkcmVuLgorCSAq LworCWxpc3RfY3V0X3Bvc2l0aW9uKCZuZXctPmNoaWxkLCBmaXJzdC0+c2libGluZy5wcmV2LCAm bmV4dC0+c2libGluZyk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShuZXh0LCAmbmV3LT5jaGlsZCwg c2libGluZykKIAkJbmV4dC0+cGFyZW50ID0gbmV3OwogCi0JaWYgKHBhcmVudC0+Y2hpbGQgPT0g Zmlyc3QpIHsKLQkJcGFyZW50LT5jaGlsZCA9IG5ldzsKLQl9IGVsc2UgewotCQluZXh0ID0gcGFy ZW50LT5jaGlsZDsKLQkJd2hpbGUgKG5leHQtPnNpYmxpbmcgIT0gZmlyc3QpCi0JCQluZXh0ID0g bmV4dC0+c2libGluZzsKLQkJbmV4dC0+c2libGluZyA9IG5ldzsKLQl9CiAJcmV0dXJuIE5VTEw7 CiB9CiAKQEAgLTkzNywxOSArOTM3LDE3IEBAIHN0YXRpYyBpbnQgX19hZGp1c3RfcmVzb3VyY2Uo c3RydWN0IHJlc291cmNlICpyZXMsIHJlc291cmNlX3NpemVfdCBzdGFydCwKIAlpZiAoKHN0YXJ0 IDwgcGFyZW50LT5zdGFydCkgfHwgKGVuZCA+IHBhcmVudC0+ZW5kKSkKIAkJZ290byBvdXQ7CiAK LQlpZiAocmVzLT5zaWJsaW5nICYmIChyZXMtPnNpYmxpbmctPnN0YXJ0IDw9IGVuZCkpCisJaWYg KHJlc291cmNlX3NpYmxpbmcocmVzKSAmJiAocmVzb3VyY2Vfc2libGluZyhyZXMpLT5zdGFydCA8 PSBlbmQpKQogCQlnb3RvIG91dDsKIAotCXRtcCA9IHBhcmVudC0+Y2hpbGQ7Ci0JaWYgKHRtcCAh PSByZXMpIHsKLQkJd2hpbGUgKHRtcC0+c2libGluZyAhPSByZXMpCi0JCQl0bXAgPSB0bXAtPnNp Ymxpbmc7CisJaWYgKHJlcy0+c2libGluZy5wcmV2ICE9ICZwYXJlbnQtPmNoaWxkKSB7CisJCXRt cCA9IGxpc3RfcHJldl9lbnRyeShyZXMsIHNpYmxpbmcpOwogCQlpZiAoc3RhcnQgPD0gdG1wLT5l bmQpCiAJCQlnb3RvIG91dDsKIAl9CiAKIHNraXA6Ci0JZm9yICh0bXAgPSByZXMtPmNoaWxkOyB0 bXA7IHRtcCA9IHRtcC0+c2libGluZykKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgJnJlcy0+ Y2hpbGQsIHNpYmxpbmcpCiAJCWlmICgodG1wLT5zdGFydCA8IHN0YXJ0KSB8fCAodG1wLT5lbmQg PiBlbmQpKQogCQkJZ290byBvdXQ7CiAKQEAgLTk5NiwyNyArOTk0LDMwIEBAIEVYUE9SVF9TWU1C T0woYWRqdXN0X3Jlc291cmNlKTsKICAqLwogaW50IHJlcGFyZW50X3Jlc291cmNlcyhzdHJ1Y3Qg cmVzb3VyY2UgKnBhcmVudCwgc3RydWN0IHJlc291cmNlICpyZXMpCiB7Ci0Jc3RydWN0IHJlc291 cmNlICpwLCAqKnBwOwotCXN0cnVjdCByZXNvdXJjZSAqKmZpcnN0cHAgPSBOVUxMOworCXN0cnVj dCByZXNvdXJjZSAqcCwgKmZpcnN0ID0gTlVMTDsKIAotCWZvciAocHAgPSAmcGFyZW50LT5jaGls ZDsgKHAgPSAqcHApICE9IE5VTEw7IHBwID0gJnAtPnNpYmxpbmcpIHsKKwlsaXN0X2Zvcl9lYWNo X2VudHJ5KHAsICZwYXJlbnQtPmNoaWxkLCBzaWJsaW5nKSB7CiAJCWlmIChwLT5lbmQgPCByZXMt PnN0YXJ0KQogCQkJY29udGludWU7CiAJCWlmIChyZXMtPmVuZCA8IHAtPnN0YXJ0KQogCQkJYnJl YWs7CiAJCWlmIChwLT5zdGFydCA8IHJlcy0+c3RhcnQgfHwgcC0+ZW5kID4gcmVzLT5lbmQpCiAJ CQlyZXR1cm4gLUVOT1RTVVBQOwkvKiBub3QgY29tcGxldGVseSBjb250YWluZWQgKi8KLQkJaWYg KGZpcnN0cHAgPT0gTlVMTCkKLQkJCWZpcnN0cHAgPSBwcDsKKwkJaWYgKGZpcnN0ID09IE5VTEwp CisJCQlmaXJzdCA9IHA7CiAJfQotCWlmIChmaXJzdHBwID09IE5VTEwpCisJaWYgKGZpcnN0ID09 IE5VTEwpCiAJCXJldHVybiAtRUNBTkNFTEVEOyAvKiBkaWRuJ3QgZmluZCBhbnkgY29uZmxpY3Rp bmcgZW50cmllcz8gKi8KIAlyZXMtPnBhcmVudCA9IHBhcmVudDsKLQlyZXMtPmNoaWxkID0gKmZp cnN0cHA7Ci0JcmVzLT5zaWJsaW5nID0gKnBwOwotCSpmaXJzdHBwID0gcmVzOwotCSpwcCA9IE5V TEw7Ci0JZm9yIChwID0gcmVzLT5jaGlsZDsgcCAhPSBOVUxMOyBwID0gcC0+c2libGluZykgewor CWxpc3RfYWRkKCZyZXMtPnNpYmxpbmcsIHAtPnNpYmxpbmcucHJldik7CisJSU5JVF9MSVNUX0hF QUQoJnJlcy0+Y2hpbGQpOworCisJLyoKKwkgKiBGcm9tIGZpcnN0IHRvIHAncyBwcmV2aW91cyBz aWJsaW5nLCB0aGV5IGFsbCBmYWxsIGludG8KKwkgKiByZXMncyByZWdpb24sIGNoYW5nZSB0aGVt IGFzIHJlcydzIGNoaWxkcmVuLgorCSAqLworCWxpc3RfY3V0X3Bvc2l0aW9uKCZyZXMtPmNoaWxk LCBmaXJzdC0+c2libGluZy5wcmV2LCByZXMtPnNpYmxpbmcucHJldik7CisJbGlzdF9mb3JfZWFj aF9lbnRyeShwLCAmcmVzLT5jaGlsZCwgc2libGluZykgewogCQlwLT5wYXJlbnQgPSByZXM7CiAJ CXByX2RlYnVnKCJQQ0k6IFJlcGFyZW50ZWQgJXMgJXBSIHVuZGVyICVzXG4iLAogCQkJIHAtPm5h bWUsIHAsIHJlcy0+bmFtZSk7CkBAIC0xMjE2LDM0ICsxMjE3LDMyIEBAIEVYUE9SVF9TWU1CT0wo X19yZXF1ZXN0X3JlZ2lvbik7CiB2b2lkIF9fcmVsZWFzZV9yZWdpb24oc3RydWN0IHJlc291cmNl ICpwYXJlbnQsIHJlc291cmNlX3NpemVfdCBzdGFydCwKIAkJCXJlc291cmNlX3NpemVfdCBuKQog ewotCXN0cnVjdCByZXNvdXJjZSAqKnA7CisJc3RydWN0IHJlc291cmNlICpyZXM7CiAJcmVzb3Vy Y2Vfc2l6ZV90IGVuZDsKIAotCXAgPSAmcGFyZW50LT5jaGlsZDsKKwlyZXMgPSByZXNvdXJjZV9m aXJzdF9jaGlsZCgmcGFyZW50LT5jaGlsZCk7CiAJZW5kID0gc3RhcnQgKyBuIC0gMTsKIAogCXdy aXRlX2xvY2soJnJlc291cmNlX2xvY2spOwogCiAJZm9yICg7OykgewotCQlzdHJ1Y3QgcmVzb3Vy Y2UgKnJlcyA9ICpwOwotCiAJCWlmICghcmVzKQogCQkJYnJlYWs7CiAJCWlmIChyZXMtPnN0YXJ0 IDw9IHN0YXJ0ICYmIHJlcy0+ZW5kID49IGVuZCkgewogCQkJaWYgKCEocmVzLT5mbGFncyAmIElP UkVTT1VSQ0VfQlVTWSkpIHsKLQkJCQlwID0gJnJlcy0+Y2hpbGQ7CisJCQkJcmVzID0gcmVzb3Vy Y2VfZmlyc3RfY2hpbGQoJnJlcy0+Y2hpbGQpOwogCQkJCWNvbnRpbnVlOwogCQkJfQogCQkJaWYg KHJlcy0+c3RhcnQgIT0gc3RhcnQgfHwgcmVzLT5lbmQgIT0gZW5kKQogCQkJCWJyZWFrOwotCQkJ KnAgPSByZXMtPnNpYmxpbmc7CisJCQlsaXN0X2RlbCgmcmVzLT5zaWJsaW5nKTsKIAkJCXdyaXRl X3VubG9jaygmcmVzb3VyY2VfbG9jayk7CiAJCQlpZiAocmVzLT5mbGFncyAmIElPUkVTT1VSQ0Vf TVVYRUQpCiAJCQkJd2FrZV91cCgmbXV4ZWRfcmVzb3VyY2Vfd2FpdCk7CiAJCQlmcmVlX3Jlc291 cmNlKHJlcyk7CiAJCQlyZXR1cm47CiAJCX0KLQkJcCA9ICZyZXMtPnNpYmxpbmc7CisJCXJlcyA9 IHJlc291cmNlX3NpYmxpbmcocmVzKTsKIAl9CiAKIAl3cml0ZV91bmxvY2soJnJlc291cmNlX2xv Y2spOwpAQCAtMTI3OCw5ICsxMjc3LDcgQEAgRVhQT1JUX1NZTUJPTChfX3JlbGVhc2VfcmVnaW9u KTsKIGludCByZWxlYXNlX21lbV9yZWdpb25fYWRqdXN0YWJsZShzdHJ1Y3QgcmVzb3VyY2UgKnBh cmVudCwKIAkJCXJlc291cmNlX3NpemVfdCBzdGFydCwgcmVzb3VyY2Vfc2l6ZV90IHNpemUpCiB7 Ci0Jc3RydWN0IHJlc291cmNlICoqcDsKLQlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKLQlzdHJ1Y3Qg cmVzb3VyY2UgKm5ld19yZXM7CisJc3RydWN0IHJlc291cmNlICpyZXMsICpuZXdfcmVzOwogCXJl c291cmNlX3NpemVfdCBlbmQ7CiAJaW50IHJldCA9IC1FSU5WQUw7CiAKQEAgLTEyOTEsMTYgKzEy ODgsMTYgQEAgaW50IHJlbGVhc2VfbWVtX3JlZ2lvbl9hZGp1c3RhYmxlKHN0cnVjdCByZXNvdXJj ZSAqcGFyZW50LAogCS8qIFRoZSBhbGxvY19yZXNvdXJjZSgpIHJlc3VsdCBnZXRzIGNoZWNrZWQg bGF0ZXIgKi8KIAluZXdfcmVzID0gYWxsb2NfcmVzb3VyY2UoR0ZQX0tFUk5FTCk7CiAKLQlwID0g JnBhcmVudC0+Y2hpbGQ7CisJcmVzID0gcmVzb3VyY2VfZmlyc3RfY2hpbGQoJnBhcmVudC0+Y2hp bGQpOwogCXdyaXRlX2xvY2soJnJlc291cmNlX2xvY2spOwogCi0Jd2hpbGUgKChyZXMgPSAqcCkp IHsKKwl3aGlsZSAoKHJlcykpIHsKIAkJaWYgKHJlcy0+c3RhcnQgPj0gZW5kKQogCQkJYnJlYWs7 CiAKIAkJLyogbG9vayBmb3IgdGhlIG5leHQgcmVzb3VyY2UgaWYgaXQgZG9lcyBub3QgZml0IGlu dG8gKi8KIAkJaWYgKHJlcy0+c3RhcnQgPiBzdGFydCB8fCByZXMtPmVuZCA8IGVuZCkgewotCQkJ cCA9ICZyZXMtPnNpYmxpbmc7CisJCQlyZXMgPSByZXNvdXJjZV9zaWJsaW5nKHJlcyk7CiAJCQlj b250aW51ZTsKIAkJfQogCkBAIC0xMzA4LDE0ICsxMzA1LDE0IEBAIGludCByZWxlYXNlX21lbV9y ZWdpb25fYWRqdXN0YWJsZShzdHJ1Y3QgcmVzb3VyY2UgKnBhcmVudCwKIAkJCWJyZWFrOwogCiAJ CWlmICghKHJlcy0+ZmxhZ3MgJiBJT1JFU09VUkNFX0JVU1kpKSB7Ci0JCQlwID0gJnJlcy0+Y2hp bGQ7CisJCQlyZXMgPSByZXNvdXJjZV9maXJzdF9jaGlsZCgmcmVzLT5jaGlsZCk7CiAJCQljb250 aW51ZTsKIAkJfQogCiAJCS8qIGZvdW5kIHRoZSB0YXJnZXQgcmVzb3VyY2U7IGxldCdzIGFkanVz dCBhY2NvcmRpbmdseSAqLwogCQlpZiAocmVzLT5zdGFydCA9PSBzdGFydCAmJiByZXMtPmVuZCA9 PSBlbmQpIHsKIAkJCS8qIGZyZWUgdGhlIHdob2xlIGVudHJ5ICovCi0JCQkqcCA9IHJlcy0+c2li bGluZzsKKwkJCWxpc3RfZGVsKCZyZXMtPnNpYmxpbmcpOwogCQkJZnJlZV9yZXNvdXJjZShyZXMp OwogCQkJcmV0ID0gMDsKIAkJfSBlbHNlIGlmIChyZXMtPnN0YXJ0ID09IHN0YXJ0ICYmIHJlcy0+ ZW5kICE9IGVuZCkgewpAQCAtMTMzOCwxNCArMTMzNSwxMyBAQCBpbnQgcmVsZWFzZV9tZW1fcmVn aW9uX2FkanVzdGFibGUoc3RydWN0IHJlc291cmNlICpwYXJlbnQsCiAJCQluZXdfcmVzLT5mbGFn cyA9IHJlcy0+ZmxhZ3M7CiAJCQluZXdfcmVzLT5kZXNjID0gcmVzLT5kZXNjOwogCQkJbmV3X3Jl cy0+cGFyZW50ID0gcmVzLT5wYXJlbnQ7Ci0JCQluZXdfcmVzLT5zaWJsaW5nID0gcmVzLT5zaWJs aW5nOwotCQkJbmV3X3Jlcy0+Y2hpbGQgPSBOVUxMOworCQkJSU5JVF9MSVNUX0hFQUQoJm5ld19y ZXMtPmNoaWxkKTsKIAogCQkJcmV0ID0gX19hZGp1c3RfcmVzb3VyY2UocmVzLCByZXMtPnN0YXJ0 LAogCQkJCQkJc3RhcnQgLSByZXMtPnN0YXJ0KTsKIAkJCWlmIChyZXQpCiAJCQkJYnJlYWs7Ci0J CQlyZXMtPnNpYmxpbmcgPSBuZXdfcmVzOworCQkJbGlzdF9hZGQoJm5ld19yZXMtPnNpYmxpbmcs ICZyZXMtPnNpYmxpbmcpOwogCQkJbmV3X3JlcyA9IE5VTEw7CiAJCX0KIApAQCAtMTUyNiw3ICsx NTIyLDcgQEAgc3RhdGljIGludCBfX2luaXQgcmVzZXJ2ZV9zZXR1cChjaGFyICpzdHIpCiAJCQly ZXMtPmVuZCA9IGlvX3N0YXJ0ICsgaW9fbnVtIC0gMTsKIAkJCXJlcy0+ZmxhZ3MgfD0gSU9SRVNP VVJDRV9CVVNZOwogCQkJcmVzLT5kZXNjID0gSU9SRVNfREVTQ19OT05FOwotCQkJcmVzLT5jaGls ZCA9IE5VTEw7CisJCQlJTklUX0xJU1RfSEVBRCgmcmVzLT5jaGlsZCk7CiAJCQlpZiAocmVxdWVz dF9yZXNvdXJjZShwYXJlbnQsIHJlcykgPT0gMCkKIAkJCQlyZXNlcnZlZCA9IHgrMTsKIAkJfQpA QCAtMTU0Niw3ICsxNTQyLDcgQEAgaW50IGlvbWVtX21hcF9zYW5pdHlfY2hlY2socmVzb3VyY2Vf c2l6ZV90IGFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIAlsb2ZmX3QgbDsKIAogCXJlYWRfbG9j aygmcmVzb3VyY2VfbG9jayk7Ci0JZm9yIChwID0gcC0+Y2hpbGQ7IHAgOyBwID0gcl9uZXh0KE5V TEwsIHAsICZsKSkgeworCWZvciAocCA9IHJlc291cmNlX2ZpcnN0X2NoaWxkKCZwLT5jaGlsZCk7 IHA7IHAgPSByX25leHQoTlVMTCwgcCwgJmwpKSB7CiAJCS8qCiAJCSAqIFdlIGNhbiBwcm9iYWJs eSBza2lwIHRoZSByZXNvdXJjZXMgd2l0aG91dAogCQkgKiBJT1JFU09VUkNFX0lPIGF0dHJpYnV0 ZT8KQEAgLTE2MDIsNyArMTU5OCw3IEBAIGJvb2wgaW9tZW1faXNfZXhjbHVzaXZlKHU2NCBhZGRy KQogCWFkZHIgPSBhZGRyICYgUEFHRV9NQVNLOwogCiAJcmVhZF9sb2NrKCZyZXNvdXJjZV9sb2Nr KTsKLQlmb3IgKHAgPSBwLT5jaGlsZDsgcCA7IHAgPSByX25leHQoTlVMTCwgcCwgJmwpKSB7CisJ Zm9yIChwID0gcmVzb3VyY2VfZmlyc3RfY2hpbGQoJnAtPmNoaWxkKTsgcDsgcCA9IHJfbmV4dChO VUxMLCBwLCAmbCkpIHsKIAkJLyoKIAkJICogV2UgY2FuIHByb2JhYmx5IHNraXAgdGhlIHJlc291 cmNlcyB3aXRob3V0CiAJCSAqIElPUkVTT1VSQ0VfSU8gYXR0cmlidXRlPwotLSAKMi4xMy42Cgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1udmRp bW0gbWFpbGluZyBsaXN0CkxpbnV4LW52ZGltbUBsaXN0cy4wMS5vcmcKaHR0cHM6Ly9saXN0cy4w MS5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1udmRpbW0K