From mboxrd@z Thu Jan 1 00:00:00 1970 From: Baoquan He Subject: [PATCH v6 2/4] resource: Use list_head to link sibling resource Date: Wed, 4 Jul 2018 12:10:36 +0800 Message-ID: <20180704041038.8190-3-bhe@redhat.com> References: <20180704041038.8190-1-bhe@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180704041038.8190-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: 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, 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, linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org, davem@davem 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 Lm9yZwpDYzogbGludXgtcGNpQHZnZXIua2VybmVsLm9yZwotLS0KIGFyY2gvYXJtL3BsYXQtc2Ft c3VuZy9wbS1jaGVjay5jICAgICAgICAgICAgfCAgIDYgKy0KIGFyY2gvbWljcm9ibGF6ZS9wY2kv cGNpLWNvbW1vbi5jICAgICAgICAgICAgfCAgIDQgKy0KIGFyY2gvcG93ZXJwYy9rZXJuZWwvcGNp LWNvbW1vbi5jICAgICAgICAgICAgfCAgIDQgKy0KIGFyY2gvc3BhcmMva2VybmVsL2lvcG9ydC5j ICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGFyY2gveHRlbnNhL2luY2x1ZGUvYXNtL3BjaS1i cmlkZ2UuaCAgICAgICAgfCAgIDQgKy0KIGRyaXZlcnMvZWlzYS9laXNhLWJ1cy5jICAgICAgICAg ICAgICAgICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2RybV9tZW1vcnkuYyAgICAgICAg ICAgICAgICB8ICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2dtYTUwMC9ndHQuYyAgICAgICAgICAg ICAgICB8ICAgNSArLQogZHJpdmVycy9odi92bWJ1c19kcnYuYyAgICAgICAgICAgICAgICAgICAg ICB8ICA1MiArKystLS0tCiBkcml2ZXJzL2lucHV0L2pveXN0aWNrL2lmb3JjZS9pZm9yY2UtbWFp bi5jIHwgICA0ICstCiBkcml2ZXJzL252ZGltbS9uYW1lc3BhY2VfZGV2cy5jICAgICAgICAgICAg IHwgICA2ICstCiBkcml2ZXJzL252ZGltbS9uZC5oICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICA1ICstCiBkcml2ZXJzL29mL2FkZHJlc3MuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0 ICstCiBkcml2ZXJzL3BhcmlzYy9sYmFfcGNpLmMgICAgICAgICAgICAgICAgICAgIHwgICA0ICst CiBkcml2ZXJzL3BjaS9jb250cm9sbGVyL3ZtZC5jICAgICAgICAgICAgICAgIHwgICA4ICstCiBk cml2ZXJzL3BjaS9wcm9iZS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIGRyaXZl cnMvcGNpL3NldHVwLWJ1cy5jICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGluY2x1ZGUv bGludXgvaW9wb3J0LmggICAgICAgICAgICAgICAgICAgICAgfCAgMTcgKystCiBrZXJuZWwvcmVz b3VyY2UuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjA4ICsrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0KIDE5IGZpbGVzIGNoYW5nZWQsIDE3NSBpbnNlcnRpb25zKCspLCAxNjcgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL3BtLWNoZWNrLmMg Yi9hcmNoL2FybS9wbGF0LXNhbXN1bmcvcG0tY2hlY2suYwppbmRleCBjZDJjMDJjNjhiYzMuLjU0 OTQzNTViMWM0OSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL3BtLWNoZWNrLmMK KysrIGIvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL3BtLWNoZWNrLmMKQEAgLTQ2LDggKzQ2LDggQEAg dHlwZWRlZiB1MzIgKihydW5fZm5fdCkoc3RydWN0IHJlc291cmNlICpwdHIsIHUzMiAqYXJnKTsK IHN0YXRpYyB2b2lkIHMzY19wbV9ydW5fcmVzKHN0cnVjdCByZXNvdXJjZSAqcHRyLCBydW5fZm5f dCBmbiwgdTMyICphcmcpCiB7CiAJd2hpbGUgKHB0ciAhPSBOVUxMKSB7Ci0JCWlmIChwdHItPmNo aWxkICE9IE5VTEwpCi0JCQlzM2NfcG1fcnVuX3JlcyhwdHItPmNoaWxkLCBmbiwgYXJnKTsKKwkJ aWYgKCFsaXN0X2VtcHR5KCZwdHItPmNoaWxkKSkKKwkJCXMzY19wbV9ydW5fcmVzKHJlc291cmNl X2ZpcnN0X2NoaWxkKCZwdHItPmNoaWxkKSwgZm4sIGFyZyk7CiAKIAkJaWYgKChwdHItPmZsYWdz ICYgSU9SRVNPVVJDRV9TWVNURU1fUkFNKQogCQkJCT09IElPUkVTT1VSQ0VfU1lTVEVNX1JBTSkg ewpAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgdm9pZCBzM2NfcG1fcnVuX3JlcyhzdHJ1Y3QgcmVz b3VyY2UgKnB0ciwgcnVuX2ZuX3QgZm4sIHUzMiAqYXJnKQogCQkJYXJnID0gKGZuKShwdHIsIGFy Zyk7CiAJCX0KIAotCQlwdHIgPSBwdHItPnNpYmxpbmc7CisJCXB0ciA9IHJlc291cmNlX3NpYmxp bmcocHRyKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gvbWljcm9ibGF6ZS9wY2kvcGNpLWNv bW1vbi5jIGIvYXJjaC9taWNyb2JsYXplL3BjaS9wY2ktY29tbW9uLmMKaW5kZXggNzg5OWJhZmFi MDY0Li4yYmY3M2UyN2UyMzEgMTAwNjQ0Ci0tLSBhL2FyY2gvbWljcm9ibGF6ZS9wY2kvcGNpLWNv bW1vbi5jCisrKyBiL2FyY2gvbWljcm9ibGF6ZS9wY2kvcGNpLWNvbW1vbi5jCkBAIC01MzMsNyAr NTMzLDkgQEAgdm9pZCBwY2lfcHJvY2Vzc19icmlkZ2VfT0ZfcmFuZ2VzKHN0cnVjdCBwY2lfY29u dHJvbGxlciAqaG9zZSwKIAkJCXJlcy0+ZmxhZ3MgPSByYW5nZS5mbGFnczsKIAkJCXJlcy0+c3Rh cnQgPSByYW5nZS5jcHVfYWRkcjsKIAkJCXJlcy0+ZW5kID0gcmFuZ2UuY3B1X2FkZHIgKyByYW5n ZS5zaXplIC0gMTsKLQkJCXJlcy0+cGFyZW50ID0gcmVzLT5jaGlsZCA9IHJlcy0+c2libGluZyA9 IE5VTEw7CisJCQlyZXMtPnBhcmVudCA9IE5VTEw7CisJCQlJTklUX0xJU1RfSEVBRCgmcmVzLT5j aGlsZCk7CisJCQlJTklUX0xJU1RfSEVBRCgmcmVzLT5zaWJsaW5nKTsKIAkJfQogCX0KIApkaWZm IC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2ktY29tbW9uLmMgYi9hcmNoL3Bvd2VycGMv a2VybmVsL3BjaS1jb21tb24uYwppbmRleCA5MjYwMzViYjM3OGQuLjI4ZmJlODNjOWRhZiAxMDA2 NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2ktY29tbW9uLmMKKysrIGIvYXJjaC9wb3dl cnBjL2tlcm5lbC9wY2ktY29tbW9uLmMKQEAgLTc2MSw3ICs3NjEsOSBAQCB2b2lkIHBjaV9wcm9j ZXNzX2JyaWRnZV9PRl9yYW5nZXMoc3RydWN0IHBjaV9jb250cm9sbGVyICpob3NlLAogCQkJcmVz LT5mbGFncyA9IHJhbmdlLmZsYWdzOwogCQkJcmVzLT5zdGFydCA9IHJhbmdlLmNwdV9hZGRyOwog CQkJcmVzLT5lbmQgPSByYW5nZS5jcHVfYWRkciArIHJhbmdlLnNpemUgLSAxOwotCQkJcmVzLT5w YXJlbnQgPSByZXMtPmNoaWxkID0gcmVzLT5zaWJsaW5nID0gTlVMTDsKKwkJCXJlcy0+cGFyZW50 ID0gTlVMTDsKKwkJCUlOSVRfTElTVF9IRUFEKCZyZXMtPmNoaWxkKTsKKwkJCUlOSVRfTElTVF9I RUFEKCZyZXMtPnNpYmxpbmcpOwogCQl9CiAJfQogfQpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9r ZXJuZWwvaW9wb3J0LmMgYi9hcmNoL3NwYXJjL2tlcm5lbC9pb3BvcnQuYwppbmRleCBjY2E5MTM0 Y2ZhN2QuLjk5ZWZlNGU5OGIxNiAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9rZXJuZWwvaW9wb3J0 LmMKKysrIGIvYXJjaC9zcGFyYy9rZXJuZWwvaW9wb3J0LmMKQEAgLTY2OSw3ICs2NjksNyBAQCBz dGF0aWMgaW50IHNwYXJjX2lvX3Byb2Nfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYp CiAJc3RydWN0IHJlc291cmNlICpyb290ID0gbS0+cHJpdmF0ZSwgKnI7CiAJY29uc3QgY2hhciAq bm07CiAKLQlmb3IgKHIgPSByb290LT5jaGlsZDsgciAhPSBOVUxMOyByID0gci0+c2libGluZykg eworCWxpc3RfZm9yX2VhY2hfZW50cnkociwgJnJvb3QtPmNoaWxkLCBzaWJsaW5nKSB7CiAJCWlm ICgobm0gPSByLT5uYW1lKSA9PSBOVUxMKSBubSA9ICI/Pz8iOwogCQlzZXFfcHJpbnRmKG0sICIl MDE2bGx4LSUwMTZsbHg6ICVzXG4iLAogCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpci0+c3RhcnQs CmRpZmYgLS1naXQgYS9hcmNoL3h0ZW5zYS9pbmNsdWRlL2FzbS9wY2ktYnJpZGdlLmggYi9hcmNo L3h0ZW5zYS9pbmNsdWRlL2FzbS9wY2ktYnJpZGdlLmgKaW5kZXggMGI2OGM3NmVjMWU2Li5mNDg3 YjA2ODE3ZGYgMTAwNjQ0Ci0tLSBhL2FyY2gveHRlbnNhL2luY2x1ZGUvYXNtL3BjaS1icmlkZ2Uu aAorKysgYi9hcmNoL3h0ZW5zYS9pbmNsdWRlL2FzbS9wY2ktYnJpZGdlLmgKQEAgLTcxLDggKzcx LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHBjaWJpb3NfaW5pdF9yZXNvdXJjZShzdHJ1Y3QgcmVz b3VyY2UgKnJlcywKIAlyZXMtPmZsYWdzID0gZmxhZ3M7CiAJcmVzLT5uYW1lID0gbmFtZTsKIAly ZXMtPnBhcmVudCA9IE5VTEw7Ci0JcmVzLT5zaWJsaW5nID0gTlVMTDsKLQlyZXMtPmNoaWxkID0g TlVMTDsKKwlJTklUX0xJU1RfSEVBRCgmcmVzLT5jaGlsZCk7CisJSU5JVF9MSVNUX0hFQUQoJnJl cy0+c2libGluZyk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9laXNhL2Vpc2EtYnVzLmMg Yi9kcml2ZXJzL2Vpc2EvZWlzYS1idXMuYwppbmRleCAxZTgwNjJmNmRiZmMuLmRiYTc4Zjc1ZmQw NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9laXNhL2Vpc2EtYnVzLmMKKysrIGIvZHJpdmVycy9laXNh L2Vpc2EtYnVzLmMKQEAgLTQwOCw2ICs0MDgsOCBAQCBzdGF0aWMgc3RydWN0IHJlc291cmNlIGVp c2Ffcm9vdF9yZXMgPSB7CiAJLnN0YXJ0ID0gMCwKIAkuZW5kICAgPSAweGZmZmZmZmZmLAogCS5m bGFncyA9IElPUkVTT1VSQ0VfSU8sCisJLnNpYmxpbmcgPSBMSVNUX0hFQURfSU5JVChlaXNhX3Jv b3RfcmVzLnNpYmxpbmcpLAorCS5jaGlsZCAgPSBMSVNUX0hFQURfSU5JVChlaXNhX3Jvb3RfcmVz LmNoaWxkKSwKIH07CiAKIHN0YXRpYyBpbnQgZWlzYV9idXNfY291bnQ7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vZHJtX21lbW9yeS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9tZW1vcnku YwppbmRleCBkNjllNGZjMWVlNzcuLjMzYmFhN2ZhNWU0MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9tZW1vcnkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21lbW9yeS5jCkBA IC0xNTUsOSArMTU1LDggQEAgdTY0IGRybV9nZXRfbWF4X2lvbWVtKHZvaWQpCiAJc3RydWN0IHJl c291cmNlICp0bXA7CiAJcmVzb3VyY2Vfc2l6ZV90IG1heF9pb21lbSA9IDA7CiAKLQlmb3IgKHRt cCA9IGlvbWVtX3Jlc291cmNlLmNoaWxkOyB0bXA7IHRtcCA9IHRtcC0+c2libGluZykgeworCWxp c3RfZm9yX2VhY2hfZW50cnkodG1wLCAmaW9tZW1fcmVzb3VyY2UuY2hpbGQsIHNpYmxpbmcpCiAJ CW1heF9pb21lbSA9IG1heChtYXhfaW9tZW0sICB0bXAtPmVuZCk7Ci0JfQogCiAJcmV0dXJuIG1h eF9pb21lbTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9nbWE1MDAvZ3R0LmMgYi9k cml2ZXJzL2dwdS9kcm0vZ21hNTAwL2d0dC5jCmluZGV4IDM5NDliMDk5MDkxNi4uYWRkZDNiYzAw OWFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZ21hNTAwL2d0dC5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9nbWE1MDAvZ3R0LmMKQEAgLTU2NSw3ICs1NjUsNyBAQCBpbnQgcHNiX2d0dF9p bml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCByZXN1bWUpCiBpbnQgcHNiX2d0dF9yZXN0 b3JlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9wc2JfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCXN0cnVjdCByZXNvdXJjZSAqciA9IGRldl9w cml2LT5ndHRfbWVtLT5jaGlsZDsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnI7CiAJc3RydWN0IGd0dF9y YW5nZSAqcmFuZ2U7CiAJdW5zaWduZWQgaW50IHJlc3RvcmVkID0gMCwgdG90YWwgPSAwLCBzaXpl ID0gMDsKIApAQCAtNTczLDE0ICs1NzMsMTMgQEAgaW50IHBzYl9ndHRfcmVzdG9yZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQogCW11dGV4X2xvY2soJmRldl9wcml2LT5ndHRfbXV0ZXgpOwogCXBz Yl9ndHRfaW5pdChkZXYsIDEpOwogCi0Jd2hpbGUgKHIgIT0gTlVMTCkgeworCWxpc3RfZm9yX2Vh Y2hfZW50cnkociwgJmRldl9wcml2LT5ndHRfbWVtLT5jaGlsZCwgc2libGluZykgewogCQlyYW5n ZSA9IGNvbnRhaW5lcl9vZihyLCBzdHJ1Y3QgZ3R0X3JhbmdlLCByZXNvdXJjZSk7CiAJCWlmIChy YW5nZS0+cGFnZXMpIHsKIAkJCXBzYl9ndHRfaW5zZXJ0KGRldiwgcmFuZ2UsIDEpOwogCQkJc2l6 ZSArPSByYW5nZS0+cmVzb3VyY2UuZW5kIC0gcmFuZ2UtPnJlc291cmNlLnN0YXJ0OwogCQkJcmVz dG9yZWQrKzsKIAkJfQotCQlyID0gci0+c2libGluZzsKIAkJdG90YWwrKzsKIAl9CiAJbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+Z3R0X211dGV4KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHYvdm1i dXNfZHJ2LmMgYi9kcml2ZXJzL2h2L3ZtYnVzX2Rydi5jCmluZGV4IGIxMGZlMjZjNDg5MS4uZDg3 ZWM1YTFiYzRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h2L3ZtYnVzX2Rydi5jCisrKyBiL2RyaXZl cnMvaHYvdm1idXNfZHJ2LmMKQEAgLTE0MTIsOSArMTQxMiw4IEBAIHN0YXRpYyBhY3BpX3N0YXR1 cyB2bWJ1c193YWxrX3Jlc291cmNlcyhzdHJ1Y3QgYWNwaV9yZXNvdXJjZSAqcmVzLCB2b2lkICpj dHgpCiB7CiAJcmVzb3VyY2Vfc2l6ZV90IHN0YXJ0ID0gMDsKIAlyZXNvdXJjZV9zaXplX3QgZW5k ID0gMDsKLQlzdHJ1Y3QgcmVzb3VyY2UgKm5ld19yZXM7CisJc3RydWN0IHJlc291cmNlICpuZXdf cmVzLCAqdG1wOwogCXN0cnVjdCByZXNvdXJjZSAqKm9sZF9yZXMgPSAmaHlwZXJ2X21taW87Ci0J c3RydWN0IHJlc291cmNlICoqcHJldl9yZXMgPSBOVUxMOwogCiAJc3dpdGNoIChyZXMtPnR5cGUp IHsKIApAQCAtMTQ2MSw0NCArMTQ2MCwzNiBAQCBzdGF0aWMgYWNwaV9zdGF0dXMgdm1idXNfd2Fs a19yZXNvdXJjZXMoc3RydWN0IGFjcGlfcmVzb3VyY2UgKnJlcywgdm9pZCAqY3R4KQogCS8qCiAJ ICogSWYgdHdvIHJhbmdlcyBhcmUgYWRqYWNlbnQsIG1lcmdlIHRoZW0uCiAJICovCi0JZG8gewot CQlpZiAoISpvbGRfcmVzKSB7Ci0JCQkqb2xkX3JlcyA9IG5ld19yZXM7Ci0JCQlicmVhazsKLQkJ fQotCi0JCWlmICgoKCpvbGRfcmVzKS0+ZW5kICsgMSkgPT0gbmV3X3Jlcy0+c3RhcnQpIHsKLQkJ CSgqb2xkX3JlcyktPmVuZCA9IG5ld19yZXMtPmVuZDsKKwlpZiAoISpvbGRfcmVzKSB7CisJCSpv bGRfcmVzID0gbmV3X3JlczsKKwkJcmV0dXJuIEFFX09LOworCX0KKwl0bXAgPSAqb2xkX3JlczsK KwlsaXN0X2Zvcl9lYWNoX2VudHJ5X2Zyb20odG1wLCAmdG1wLT5wYXJlbnQtPmNoaWxkLCBzaWJs aW5nKSB7CisJCWlmICgodG1wLT5lbmQgKyAxKSA9PSBuZXdfcmVzLT5zdGFydCkgeworCQkJdG1w LT5lbmQgPSBuZXdfcmVzLT5lbmQ7CiAJCQlrZnJlZShuZXdfcmVzKTsKIAkJCWJyZWFrOwogCQl9 CiAKLQkJaWYgKCgqb2xkX3JlcyktPnN0YXJ0ID09IG5ld19yZXMtPmVuZCArIDEpIHsKLQkJCSgq b2xkX3JlcyktPnN0YXJ0ID0gbmV3X3Jlcy0+c3RhcnQ7CisJCWlmICh0bXAtPnN0YXJ0ID09IG5l d19yZXMtPmVuZCArIDEpIHsKKwkJCXRtcC0+c3RhcnQgPSBuZXdfcmVzLT5zdGFydDsKIAkJCWtm cmVlKG5ld19yZXMpOwogCQkJYnJlYWs7CiAJCX0KIAotCQlpZiAoKCpvbGRfcmVzKS0+c3RhcnQg PiBuZXdfcmVzLT5lbmQpIHsKLQkJCW5ld19yZXMtPnNpYmxpbmcgPSAqb2xkX3JlczsKLQkJCWlm IChwcmV2X3JlcykKLQkJCQkoKnByZXZfcmVzKS0+c2libGluZyA9IG5ld19yZXM7Ci0JCQkqb2xk X3JlcyA9IG5ld19yZXM7CisJCWlmICh0bXAtPnN0YXJ0ID4gbmV3X3Jlcy0+ZW5kKSB7CisJCQls aXN0X2FkZCgmbmV3X3Jlcy0+c2libGluZywgdG1wLT5zaWJsaW5nLnByZXYpOwogCQkJYnJlYWs7 CiAJCX0KLQotCQlwcmV2X3JlcyA9IG9sZF9yZXM7Ci0JCW9sZF9yZXMgPSAmKCpvbGRfcmVzKS0+ c2libGluZzsKLQotCX0gd2hpbGUgKDEpOworCX0KIAogCXJldHVybiBBRV9PSzsKIH0KIAogc3Rh dGljIGludCB2bWJ1c19hY3BpX3JlbW92ZShzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldmljZSkKIHsK LQlzdHJ1Y3QgcmVzb3VyY2UgKmN1cl9yZXM7Ci0Jc3RydWN0IHJlc291cmNlICpuZXh0X3JlczsK KwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKIAogCWlmIChoeXBlcnZfbW1pbykgewogCQlpZiAoZmJf bW1pbykgewpAQCAtMTUwNywxMCArMTQ5OCw5IEBAIHN0YXRpYyBpbnQgdm1idXNfYWNwaV9yZW1v dmUoc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UpCiAJCQlmYl9tbWlvID0gTlVMTDsKIAkJfQog Ci0JCWZvciAoY3VyX3JlcyA9IGh5cGVydl9tbWlvOyBjdXJfcmVzOyBjdXJfcmVzID0gbmV4dF9y ZXMpIHsKLQkJCW5leHRfcmVzID0gY3VyX3Jlcy0+c2libGluZzsKLQkJCWtmcmVlKGN1cl9yZXMp OwotCQl9CisJCXJlcyA9IGh5cGVydl9tbWlvOworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X2Zyb20o cmVzLCAmcmVzLT5wYXJlbnQtPmNoaWxkLCBzaWJsaW5nKQorCQkJa2ZyZWUocmVzKTsKIAl9CiAK IAlyZXR1cm4gMDsKQEAgLTE1OTYsNyArMTU4Niw4IEBAIGludCB2bWJ1c19hbGxvY2F0ZV9tbWlv KHN0cnVjdCByZXNvdXJjZSAqKm5ldywgc3RydWN0IGh2X2RldmljZSAqZGV2aWNlX29iaiwKIAkJ fQogCX0KIAotCWZvciAoaXRlciA9IGh5cGVydl9tbWlvOyBpdGVyOyBpdGVyID0gaXRlci0+c2li bGluZykgeworCWl0ZXIgPSBoeXBlcnZfbW1pbzsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X2Zyb20o aXRlciwgJml0ZXItPnBhcmVudC0+Y2hpbGQsIHNpYmxpbmcpIHsKIAkJaWYgKChpdGVyLT5zdGFy dCA+PSBtYXgpIHx8IChpdGVyLT5lbmQgPD0gbWluKSkKIAkJCWNvbnRpbnVlOwogCkBAIC0xNjM5 LDcgKzE2MzAsOCBAQCB2b2lkIHZtYnVzX2ZyZWVfbW1pbyhyZXNvdXJjZV9zaXplX3Qgc3RhcnQs IHJlc291cmNlX3NpemVfdCBzaXplKQogCXN0cnVjdCByZXNvdXJjZSAqaXRlcjsKIAogCWRvd24o Jmh5cGVydl9tbWlvX2xvY2spOwotCWZvciAoaXRlciA9IGh5cGVydl9tbWlvOyBpdGVyOyBpdGVy ID0gaXRlci0+c2libGluZykgeworCWl0ZXIgPSBoeXBlcnZfbW1pbzsKKwlsaXN0X2Zvcl9lYWNo X2VudHJ5X2Zyb20oaXRlciwgJml0ZXItPnBhcmVudC0+Y2hpbGQsIHNpYmxpbmcpIHsKIAkJaWYg KChpdGVyLT5zdGFydCA+PSBzdGFydCArIHNpemUpIHx8IChpdGVyLT5lbmQgPD0gc3RhcnQpKQog CQkJY29udGludWU7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvam95c3RpY2svaWZvcmNl L2lmb3JjZS1tYWluLmMgYi9kcml2ZXJzL2lucHV0L2pveXN0aWNrL2lmb3JjZS9pZm9yY2UtbWFp bi5jCmluZGV4IGRhZWViNGM3ZTNiMC4uNWMwYmUyN2IzM2ZmIDEwMDY0NAotLS0gYS9kcml2ZXJz L2lucHV0L2pveXN0aWNrL2lmb3JjZS9pZm9yY2UtbWFpbi5jCisrKyBiL2RyaXZlcnMvaW5wdXQv am95c3RpY2svaWZvcmNlL2lmb3JjZS1tYWluLmMKQEAgLTMwNSw4ICszMDUsOCBAQCBpbnQgaWZv cmNlX2luaXRfZGV2aWNlKHN0cnVjdCBpZm9yY2UgKmlmb3JjZSkKIAlpZm9yY2UtPmRldmljZV9t ZW1vcnkuZW5kID0gMjAwOwogCWlmb3JjZS0+ZGV2aWNlX21lbW9yeS5mbGFncyA9IElPUkVTT1VS Q0VfTUVNOwogCWlmb3JjZS0+ZGV2aWNlX21lbW9yeS5wYXJlbnQgPSBOVUxMOwotCWlmb3JjZS0+ ZGV2aWNlX21lbW9yeS5jaGlsZCA9IE5VTEw7Ci0JaWZvcmNlLT5kZXZpY2VfbWVtb3J5LnNpYmxp bmcgPSBOVUxMOworCUlOSVRfTElTVF9IRUFEKCZpZm9yY2UtPmRldmljZV9tZW1vcnkuY2hpbGQp OworCUlOSVRfTElTVF9IRUFEKCZpZm9yY2UtPmRldmljZV9tZW1vcnkuc2libGluZyk7CiAKIC8q CiAgKiBXYWl0IHVudGlsIGRldmljZSByZWFkeSAtIHVudGlsIGl0IHNlbmRzIGl0cyBmaXJzdCBy ZXNwb25zZS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZkaW1tL25hbWVzcGFjZV9kZXZzLmMgYi9k cml2ZXJzL252ZGltbS9uYW1lc3BhY2VfZGV2cy5jCmluZGV4IDI4YWZkZDY2ODkwNS4uZjUzZDQx MGQ5OTgxIDEwMDY0NAotLS0gYS9kcml2ZXJzL252ZGltbS9uYW1lc3BhY2VfZGV2cy5jCisrKyBi L2RyaXZlcnMvbnZkaW1tL25hbWVzcGFjZV9kZXZzLmMKQEAgLTYzNyw3ICs2MzcsNyBAQCBzdGF0 aWMgcmVzb3VyY2Vfc2l6ZV90IHNjYW5fYWxsb2NhdGUoc3RydWN0IG5kX3JlZ2lvbiAqbmRfcmVn aW9uLAogIHJldHJ5OgogCWZpcnN0ID0gMDsKIAlmb3JfZWFjaF9kcGFfcmVzb3VyY2UobmRkLCBy ZXMpIHsKLQkJc3RydWN0IHJlc291cmNlICpuZXh0ID0gcmVzLT5zaWJsaW5nLCAqbmV3X3JlcyA9 IE5VTEw7CisJCXN0cnVjdCByZXNvdXJjZSAqbmV4dCA9IHJlc291cmNlX3NpYmxpbmcocmVzKSwg Km5ld19yZXMgPSBOVUxMOwogCQlyZXNvdXJjZV9zaXplX3QgYWxsb2NhdGUsIGF2YWlsYWJsZSA9 IDA7CiAJCWVudW0gYWxsb2NfbG9jIGxvYyA9IEFMTE9DX0VSUjsKIAkJY29uc3QgY2hhciAqYWN0 aW9uOwpAQCAtNzYzLDcgKzc2Myw3IEBAIHN0YXRpYyByZXNvdXJjZV9zaXplX3Qgc2Nhbl9hbGxv Y2F0ZShzdHJ1Y3QgbmRfcmVnaW9uICpuZF9yZWdpb24sCiAJICogYW4gaW5pdGlhbCAicG1lbS1y ZXNlcnZlIHBhc3MiLiAgT25seSBkbyBhbiBpbml0aWFsIEJMSyBhbGxvY2F0aW9uCiAJICogd2hl biBub25lIG9mIHRoZSBEUEEgc3BhY2UgaXMgcmVzZXJ2ZWQuCiAJICovCi0JaWYgKChpc19wbWVt IHx8ICFuZGQtPmRwYS5jaGlsZCkgJiYgbiA9PSB0b19hbGxvY2F0ZSkKKwlpZiAoKGlzX3BtZW0g fHwgbGlzdF9lbXB0eSgmbmRkLT5kcGEuY2hpbGQpKSAmJiBuID09IHRvX2FsbG9jYXRlKQogCQly ZXR1cm4gaW5pdF9kcGFfYWxsb2NhdGlvbihsYWJlbF9pZCwgbmRfcmVnaW9uLCBuZF9tYXBwaW5n LCBuKTsKIAlyZXR1cm4gbjsKIH0KQEAgLTc3OSw3ICs3NzksNyBAQCBzdGF0aWMgaW50IG1lcmdl X2RwYShzdHJ1Y3QgbmRfcmVnaW9uICpuZF9yZWdpb24sCiAgcmV0cnk6CiAJZm9yX2VhY2hfZHBh X3Jlc291cmNlKG5kZCwgcmVzKSB7CiAJCWludCByYzsKLQkJc3RydWN0IHJlc291cmNlICpuZXh0 ID0gcmVzLT5zaWJsaW5nOworCQlzdHJ1Y3QgcmVzb3VyY2UgKm5leHQgPSByZXNvdXJjZV9zaWJs aW5nKHJlcyk7CiAJCXJlc291cmNlX3NpemVfdCBlbmQgPSByZXMtPnN0YXJ0ICsgcmVzb3VyY2Vf c2l6ZShyZXMpOwogCiAJCWlmICghbmV4dCB8fCBzdHJjbXAocmVzLT5uYW1lLCBsYWJlbF9pZC0+ aWQpICE9IDAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZkaW1tL25kLmggYi9kcml2ZXJzL252ZGlt bS9uZC5oCmluZGV4IDMyZTAzNjRiNDhiOS4uZGE3ZGExNWUwM2U3IDEwMDY0NAotLS0gYS9kcml2 ZXJzL252ZGltbS9uZC5oCisrKyBiL2RyaXZlcnMvbnZkaW1tL25kLmgKQEAgLTEwMiwxMSArMTAy LDEwIEBAIHVuc2lnbmVkIHNpemVvZl9uYW1lc3BhY2VfbGFiZWwoc3RydWN0IG52ZGltbV9kcnZk YXRhICpuZGQpOwogCQkodW5zaWduZWQgbG9uZyBsb25nKSAocmVzID8gcmVzLT5zdGFydCA6IDAp LCAjI2FyZykKIAogI2RlZmluZSBmb3JfZWFjaF9kcGFfcmVzb3VyY2UobmRkLCByZXMpIFwKLQlm b3IgKHJlcyA9IChuZGQpLT5kcGEuY2hpbGQ7IHJlczsgcmVzID0gcmVzLT5zaWJsaW5nKQorCWxp c3RfZm9yX2VhY2hfZW50cnkocmVzLCAmKG5kZCktPmRwYS5jaGlsZCwgc2libGluZykKIAogI2Rl ZmluZSBmb3JfZWFjaF9kcGFfcmVzb3VyY2Vfc2FmZShuZGQsIHJlcywgbmV4dCkgXAotCWZvciAo cmVzID0gKG5kZCktPmRwYS5jaGlsZCwgbmV4dCA9IHJlcyA/IHJlcy0+c2libGluZyA6IE5VTEw7 IFwKLQkJCXJlczsgcmVzID0gbmV4dCwgbmV4dCA9IG5leHQgPyBuZXh0LT5zaWJsaW5nIDogTlVM TCkKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmVzLCBuZXh0LCAmKG5kZCktPmRwYS5jaGls ZCwgc2libGluZykKIAogc3RydWN0IG5kX3BlcmNwdV9sYW5lIHsKIAlpbnQgY291bnQ7CmRpZmYg LS1naXQgYS9kcml2ZXJzL29mL2FkZHJlc3MuYyBiL2RyaXZlcnMvb2YvYWRkcmVzcy5jCmluZGV4 IDUzMzQ5OTEyYWM3NS4uZTJlMjU3MTlhYjUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL29mL2FkZHJl c3MuYworKysgYi9kcml2ZXJzL29mL2FkZHJlc3MuYwpAQCAtMzMwLDcgKzMzMCw5IEBAIGludCBv Zl9wY2lfcmFuZ2VfdG9fcmVzb3VyY2Uoc3RydWN0IG9mX3BjaV9yYW5nZSAqcmFuZ2UsCiB7CiAJ aW50IGVycjsKIAlyZXMtPmZsYWdzID0gcmFuZ2UtPmZsYWdzOwotCXJlcy0+cGFyZW50ID0gcmVz LT5jaGlsZCA9IHJlcy0+c2libGluZyA9IE5VTEw7CisJcmVzLT5wYXJlbnQgPSBOVUxMOworCUlO SVRfTElTVF9IRUFEKCZyZXMtPmNoaWxkKTsKKwlJTklUX0xJU1RfSEVBRCgmcmVzLT5zaWJsaW5n KTsKIAlyZXMtPm5hbWUgPSBucC0+ZnVsbF9uYW1lOwogCiAJaWYgKHJlcy0+ZmxhZ3MgJiBJT1JF U09VUkNFX0lPKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BhcmlzYy9sYmFfcGNpLmMgYi9kcml2 ZXJzL3BhcmlzYy9sYmFfcGNpLmMKaW5kZXggNjliZDk4NDIxZWIxLi43NDgyYmRmZDE5NTkgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvcGFyaXNjL2xiYV9wY2kuYworKysgYi9kcml2ZXJzL3BhcmlzYy9s YmFfcGNpLmMKQEAgLTE3MCw4ICsxNzAsOCBAQCBsYmFfZHVtcF9yZXMoc3RydWN0IHJlc291cmNl ICpyLCBpbnQgZCkKIAlmb3IgKGkgPSBkOyBpIDsgLS1pKSBwcmludGsoIiAiKTsKIAlwcmludGso S0VSTl9ERUJVRyAiJXAgWyVseCwlbHhdLyVseFxuIiwgciwKIAkJKGxvbmcpci0+c3RhcnQsIChs b25nKXItPmVuZCwgci0+ZmxhZ3MpOwotCWxiYV9kdW1wX3JlcyhyLT5jaGlsZCwgZCsyKTsKLQls YmFfZHVtcF9yZXMoci0+c2libGluZywgZCk7CisJbGJhX2R1bXBfcmVzKHJlc291cmNlX2ZpcnN0 X2NoaWxkKCZyLT5jaGlsZCksIGQrMik7CisJbGJhX2R1bXBfcmVzKHJlc291cmNlX3NpYmxpbmco ciksIGQpOwogfQogCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvdm1kLmMg Yi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3ZtZC5jCmluZGV4IDk0MmI2NGZjN2YxZi4uZTNhY2Uy MDM0NWM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3ZtZC5jCisrKyBiL2Ry aXZlcnMvcGNpL2NvbnRyb2xsZXIvdm1kLmMKQEAgLTU0MiwxNCArNTQyLDE0IEBAIHN0YXRpYyBz dHJ1Y3QgcGNpX29wcyB2bWRfb3BzID0gewogCiBzdGF0aWMgdm9pZCB2bWRfYXR0YWNoX3Jlc291 cmNlcyhzdHJ1Y3Qgdm1kX2RldiAqdm1kKQogewotCXZtZC0+ZGV2LT5yZXNvdXJjZVtWTURfTUVN QkFSMV0uY2hpbGQgPSAmdm1kLT5yZXNvdXJjZXNbMV07Ci0Jdm1kLT5kZXYtPnJlc291cmNlW1ZN RF9NRU1CQVIyXS5jaGlsZCA9ICZ2bWQtPnJlc291cmNlc1syXTsKKwlsaXN0X2FkZCgmdm1kLT5y ZXNvdXJjZXNbMV0uc2libGluZywgJnZtZC0+ZGV2LT5yZXNvdXJjZVtWTURfTUVNQkFSMV0uY2hp bGQpOworCWxpc3RfYWRkKCZ2bWQtPnJlc291cmNlc1syXS5zaWJsaW5nLCAmdm1kLT5kZXYtPnJl c291cmNlW1ZNRF9NRU1CQVIyXS5jaGlsZCk7CiB9CiAKIHN0YXRpYyB2b2lkIHZtZF9kZXRhY2hf cmVzb3VyY2VzKHN0cnVjdCB2bWRfZGV2ICp2bWQpCiB7Ci0Jdm1kLT5kZXYtPnJlc291cmNlW1ZN RF9NRU1CQVIxXS5jaGlsZCA9IE5VTEw7Ci0Jdm1kLT5kZXYtPnJlc291cmNlW1ZNRF9NRU1CQVIy XS5jaGlsZCA9IE5VTEw7CisJSU5JVF9MSVNUX0hFQUQoJnZtZC0+ZGV2LT5yZXNvdXJjZVtWTURf TUVNQkFSMV0uY2hpbGQpOworCUlOSVRfTElTVF9IRUFEKCZ2bWQtPmRldi0+cmVzb3VyY2VbVk1E X01FTUJBUjJdLmNoaWxkKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3Byb2Jl LmMgYi9kcml2ZXJzL3BjaS9wcm9iZS5jCmluZGV4IGFjODc2ZTMyZGU0Yi4uOTYyNGRkMWRmZDQ5 IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9wcm9iZS5jCisrKyBiL2RyaXZlcnMvcGNpL3Byb2Jl LmMKQEAgLTU5LDYgKzU5LDggQEAgc3RhdGljIHN0cnVjdCByZXNvdXJjZSAqZ2V0X3BjaV9kb21h aW5fYnVzbl9yZXMoaW50IGRvbWFpbl9ucikKIAlyLT5yZXMuc3RhcnQgPSAwOwogCXItPnJlcy5l bmQgPSAweGZmOwogCXItPnJlcy5mbGFncyA9IElPUkVTT1VSQ0VfQlVTIHwgSU9SRVNPVVJDRV9Q Q0lfRklYRUQ7CisJSU5JVF9MSVNUX0hFQUQoJnItPnJlcy5jaGlsZCk7CisJSU5JVF9MSVNUX0hF QUQoJnItPnJlcy5zaWJsaW5nKTsKIAogCWxpc3RfYWRkX3RhaWwoJnItPmxpc3QsICZwY2lfZG9t YWluX2J1c25fcmVzX2xpc3QpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9zZXR1cC1idXMu YyBiL2RyaXZlcnMvcGNpL3NldHVwLWJ1cy5jCmluZGV4IDc5YjE4MjRlODNiNC4uOGU2ODVhZjg5 MzhkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9zZXR1cC1idXMuYworKysgYi9kcml2ZXJzL3Bj aS9zZXR1cC1idXMuYwpAQCAtMjEwNyw3ICsyMTA3LDcgQEAgaW50IHBjaV9yZWFzc2lnbl9icmlk Z2VfcmVzb3VyY2VzKHN0cnVjdCBwY2lfZGV2ICpicmlkZ2UsIHVuc2lnbmVkIGxvbmcgdHlwZSkK IAkJCQljb250aW51ZTsKIAogCQkJLyogSWdub3JlIEJBUnMgd2hpY2ggYXJlIHN0aWxsIGluIHVz ZSAqLwotCQkJaWYgKHJlcy0+Y2hpbGQpCisJCQlpZiAoIWxpc3RfZW1wdHkoJnJlcy0+Y2hpbGQp KQogCQkJCWNvbnRpbnVlOwogCiAJCQlyZXQgPSBhZGRfdG9fbGlzdCgmc2F2ZWQsIGJyaWRnZSwg cmVzLCAwLCAwKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaW9wb3J0LmggYi9pbmNsdWRl L2xpbnV4L2lvcG9ydC5oCmluZGV4IGRmZGNkMGJmZTU0ZS4uYjc0NTZhZTg4OWRkIDEwMDY0NAot LS0gYS9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oCisrKyBiL2luY2x1ZGUvbGludXgvaW9wb3J0LmgK QEAgLTEyLDYgKzEyLDcgQEAKICNpZm5kZWYgX19BU1NFTUJMWV9fCiAjaW5jbHVkZSA8bGludXgv Y29tcGlsZXIuaD4KICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L2xp c3QuaD4KIC8qCiAgKiBSZXNvdXJjZXMgYXJlIHRyZWUtbGlrZSwgYWxsb3dpbmcKICAqIG5lc3Rp bmcgZXRjLi4KQEAgLTIyLDcgKzIzLDggQEAgc3RydWN0IHJlc291cmNlIHsKIAljb25zdCBjaGFy ICpuYW1lOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJdW5zaWduZWQgbG9uZyBkZXNjOwotCXN0 cnVjdCByZXNvdXJjZSAqcGFyZW50LCAqc2libGluZywgKmNoaWxkOworCXN0cnVjdCBsaXN0X2hl YWQgY2hpbGQsIHNpYmxpbmc7CisJc3RydWN0IHJlc291cmNlICpwYXJlbnQ7CiB9OwogCiAvKgpA QCAtMjE2LDcgKzIxOCw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCByZXNvdXJjZV9jb250YWlucyhz dHJ1Y3QgcmVzb3VyY2UgKnIxLCBzdHJ1Y3QgcmVzb3VyY2UgKnIyKQogCXJldHVybiByMS0+c3Rh cnQgPD0gcjItPnN0YXJ0ICYmIHIxLT5lbmQgPj0gcjItPmVuZDsKIH0KIAotCiAvKiBDb252ZW5p ZW5jZSBzaG9ydGhhbmQgd2l0aCBhbGxvY2F0aW9uICovCiAjZGVmaW5lIHJlcXVlc3RfcmVnaW9u KHN0YXJ0LG4sbmFtZSkJCV9fcmVxdWVzdF9yZWdpb24oJmlvcG9ydF9yZXNvdXJjZSwgKHN0YXJ0 KSwgKG4pLCAobmFtZSksIDApCiAjZGVmaW5lIHJlcXVlc3RfbXV4ZWRfcmVnaW9uKHN0YXJ0LG4s bmFtZSkJX19yZXF1ZXN0X3JlZ2lvbigmaW9wb3J0X3Jlc291cmNlLCAoc3RhcnQpLCAobiksIChu YW1lKSwgSU9SRVNPVVJDRV9NVVhFRCkKQEAgLTI4Nyw2ICsyODgsMTggQEAgc3RhdGljIGlubGlu ZSBib29sIHJlc291cmNlX292ZXJsYXBzKHN0cnVjdCByZXNvdXJjZSAqcjEsIHN0cnVjdCByZXNv dXJjZSAqcjIpCiAgICAgICAgcmV0dXJuIChyMS0+c3RhcnQgPD0gcjItPmVuZCAmJiByMS0+ZW5k ID49IHIyLT5zdGFydCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgc3RydWN0IHJlc291cmNlICpyZXNv dXJjZV9zaWJsaW5nKHN0cnVjdCByZXNvdXJjZSAqcmVzKQoreworCWlmIChyZXMtPnBhcmVudCAm JiAhbGlzdF9pc19sYXN0KCZyZXMtPnNpYmxpbmcsICZyZXMtPnBhcmVudC0+Y2hpbGQpKQorCQly ZXR1cm4gbGlzdF9uZXh0X2VudHJ5KHJlcywgc2libGluZyk7CisJcmV0dXJuIE5VTEw7Cit9CisK K3N0YXRpYyBpbmxpbmUgc3RydWN0IHJlc291cmNlICpyZXNvdXJjZV9maXJzdF9jaGlsZChzdHJ1 Y3QgbGlzdF9oZWFkICpoZWFkKQoreworCXJldHVybiBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwo aGVhZCwgc3RydWN0IHJlc291cmNlLCBzaWJsaW5nKTsKK30KKwogCiAjZW5kaWYgLyogX19BU1NF TUJMWV9fICovCiAjZW5kaWYJLyogX0xJTlVYX0lPUE9SVF9IICovCmRpZmYgLS1naXQgYS9rZXJu ZWwvcmVzb3VyY2UuYyBiL2tlcm5lbC9yZXNvdXJjZS5jCmluZGV4IGQxY2JmNGI1MGUxNy4uNmQ2 NDdhMzgyNGIxIDEwMDY0NAotLS0gYS9rZXJuZWwvcmVzb3VyY2UuYworKysgYi9rZXJuZWwvcmVz b3VyY2UuYwpAQCAtMzEsNiArMzEsOCBAQCBzdHJ1Y3QgcmVzb3VyY2UgaW9wb3J0X3Jlc291cmNl ID0gewogCS5zdGFydAk9IDAsCiAJLmVuZAk9IElPX1NQQUNFX0xJTUlULAogCS5mbGFncwk9IElP UkVTT1VSQ0VfSU8sCisJLnNpYmxpbmcgPSBMSVNUX0hFQURfSU5JVChpb3BvcnRfcmVzb3VyY2Uu c2libGluZyksCisJLmNoaWxkICA9IExJU1RfSEVBRF9JTklUKGlvcG9ydF9yZXNvdXJjZS5jaGls ZCksCiB9OwogRVhQT1JUX1NZTUJPTChpb3BvcnRfcmVzb3VyY2UpOwogCkBAIC0zOSw2ICs0MSw4 IEBAIHN0cnVjdCByZXNvdXJjZSBpb21lbV9yZXNvdXJjZSA9IHsKIAkuc3RhcnQJPSAwLAogCS5l bmQJPSAtMSwKIAkuZmxhZ3MJPSBJT1JFU09VUkNFX01FTSwKKwkuc2libGluZyA9IExJU1RfSEVB RF9JTklUKGlvbWVtX3Jlc291cmNlLnNpYmxpbmcpLAorCS5jaGlsZCAgPSBMSVNUX0hFQURfSU5J VChpb21lbV9yZXNvdXJjZS5jaGlsZCksCiB9OwogRVhQT1JUX1NZTUJPTChpb21lbV9yZXNvdXJj ZSk7CiAKQEAgLTU3LDIwICs2MSwyMCBAQCBzdGF0aWMgREVGSU5FX1JXTE9DSyhyZXNvdXJjZV9s b2NrKTsKICAqIGJ5IGJvb3QgbWVtIGFmdGVyIHRoZSBzeXN0ZW0gaXMgdXAuIFNvIGZvciByZXVz aW5nIHRoZSByZXNvdXJjZSBlbnRyeQogICogd2UgbmVlZCB0byByZW1lbWJlciB0aGUgcmVzb3Vy Y2UuCiAgKi8KLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgKmJvb3RtZW1fcmVzb3VyY2VfZnJlZTsK K3N0YXRpYyBzdHJ1Y3QgbGlzdF9oZWFkIGJvb3RtZW1fcmVzb3VyY2VfZnJlZSA9IExJU1RfSEVB RF9JTklUKGJvb3RtZW1fcmVzb3VyY2VfZnJlZSk7CiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGJv b3RtZW1fcmVzb3VyY2VfbG9jayk7CiAKIHN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgKm5leHRfcmVz b3VyY2Uoc3RydWN0IHJlc291cmNlICpwLCBib29sIHNpYmxpbmdfb25seSkKIHsKIAkvKiBDYWxs ZXIgd2FudHMgdG8gdHJhdmVyc2UgdGhyb3VnaCBzaWJsaW5ncyBvbmx5ICovCiAJaWYgKHNpYmxp bmdfb25seSkKLQkJcmV0dXJuIHAtPnNpYmxpbmc7CisJCXJldHVybiByZXNvdXJjZV9zaWJsaW5n KHApOwogCi0JaWYgKHAtPmNoaWxkKQotCQlyZXR1cm4gcC0+Y2hpbGQ7Ci0Jd2hpbGUgKCFwLT5z aWJsaW5nICYmIHAtPnBhcmVudCkKKwlpZiAoIWxpc3RfZW1wdHkoJnAtPmNoaWxkKSkKKwkJcmV0 dXJuIHJlc291cmNlX2ZpcnN0X2NoaWxkKCZwLT5jaGlsZCk7CisJd2hpbGUgKCFyZXNvdXJjZV9z aWJsaW5nKHApICYmIHAtPnBhcmVudCkKIAkJcCA9IHAtPnBhcmVudDsKLQlyZXR1cm4gcC0+c2li bGluZzsKKwlyZXR1cm4gcmVzb3VyY2Vfc2libGluZyhwKTsKIH0KIAogc3RhdGljIHZvaWQgKnJf bmV4dChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYsIGxvZmZfdCAqcG9zKQpAQCAtOTAsNyAr OTQsNyBAQCBzdGF0aWMgdm9pZCAqcl9zdGFydChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGxvZmZfdCAq cG9zKQogCXN0cnVjdCByZXNvdXJjZSAqcCA9IFBERV9EQVRBKGZpbGVfaW5vZGUobS0+ZmlsZSkp OwogCWxvZmZfdCBsID0gMDsKIAlyZWFkX2xvY2soJnJlc291cmNlX2xvY2spOwotCWZvciAocCA9 IHAtPmNoaWxkOyBwICYmIGwgPCAqcG9zOyBwID0gcl9uZXh0KG0sIHAsICZsKSkKKwlmb3IgKHAg PSByZXNvdXJjZV9maXJzdF9jaGlsZCgmcC0+Y2hpbGQpOyBwICYmIGwgPCAqcG9zOyBwID0gcl9u ZXh0KG0sIHAsICZsKSkKIAkJOwogCXJldHVybiBwOwogfQpAQCAtMTUzLDggKzE1Nyw3IEBAIHN0 YXRpYyB2b2lkIGZyZWVfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyZXMpCiAKIAlpZiAoIVBh Z2VTbGFiKHZpcnRfdG9faGVhZF9wYWdlKHJlcykpKSB7CiAJCXNwaW5fbG9jaygmYm9vdG1lbV9y ZXNvdXJjZV9sb2NrKTsKLQkJcmVzLT5zaWJsaW5nID0gYm9vdG1lbV9yZXNvdXJjZV9mcmVlOwot CQlib290bWVtX3Jlc291cmNlX2ZyZWUgPSByZXM7CisJCWxpc3RfYWRkKCZyZXMtPnNpYmxpbmcs ICZib290bWVtX3Jlc291cmNlX2ZyZWUpOwogCQlzcGluX3VubG9jaygmYm9vdG1lbV9yZXNvdXJj ZV9sb2NrKTsKIAl9IGVsc2UgewogCQlrZnJlZShyZXMpOwpAQCAtMTY2LDEwICsxNjksOSBAQCBz dGF0aWMgc3RydWN0IHJlc291cmNlICphbGxvY19yZXNvdXJjZShnZnBfdCBmbGFncykKIAlzdHJ1 Y3QgcmVzb3VyY2UgKnJlcyA9IE5VTEw7CiAKIAlzcGluX2xvY2soJmJvb3RtZW1fcmVzb3VyY2Vf bG9jayk7Ci0JaWYgKGJvb3RtZW1fcmVzb3VyY2VfZnJlZSkgewotCQlyZXMgPSBib290bWVtX3Jl c291cmNlX2ZyZWU7Ci0JCWJvb3RtZW1fcmVzb3VyY2VfZnJlZSA9IHJlcy0+c2libGluZzsKLQl9 CisJcmVzID0gcmVzb3VyY2VfZmlyc3RfY2hpbGQoJmJvb3RtZW1fcmVzb3VyY2VfZnJlZSk7CisJ aWYgKHJlcykKKwkJbGlzdF9kZWwoJnJlcy0+c2libGluZyk7CiAJc3Bpbl91bmxvY2soJmJvb3Rt ZW1fcmVzb3VyY2VfbG9jayk7CiAKIAlpZiAocmVzKQpAQCAtMTc3LDYgKzE3OSw4IEBAIHN0YXRp YyBzdHJ1Y3QgcmVzb3VyY2UgKmFsbG9jX3Jlc291cmNlKGdmcF90IGZsYWdzKQogCWVsc2UKIAkJ cmVzID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHJlc291cmNlKSwgZmxhZ3MpOwogCisJSU5JVF9M SVNUX0hFQUQoJnJlcy0+Y2hpbGQpOworCUlOSVRfTElTVF9IRUFEKCZyZXMtPnNpYmxpbmcpOwog CXJldHVybiByZXM7CiB9CiAKQEAgLTE4NSw3ICsxODksNyBAQCBzdGF0aWMgc3RydWN0IHJlc291 cmNlICogX19yZXF1ZXN0X3Jlc291cmNlKHN0cnVjdCByZXNvdXJjZSAqcm9vdCwgc3RydWN0IHJl c291cgogewogCXJlc291cmNlX3NpemVfdCBzdGFydCA9IG5ldy0+c3RhcnQ7CiAJcmVzb3VyY2Vf c2l6ZV90IGVuZCA9IG5ldy0+ZW5kOwotCXN0cnVjdCByZXNvdXJjZSAqdG1wLCAqKnA7CisJc3Ry dWN0IHJlc291cmNlICp0bXA7CiAKIAlpZiAoZW5kIDwgc3RhcnQpCiAJCXJldHVybiByb290OwpA QCAtMTkzLDY0ICsxOTcsNjIgQEAgc3RhdGljIHN0cnVjdCByZXNvdXJjZSAqIF9fcmVxdWVzdF9y ZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnJvb3QsIHN0cnVjdCByZXNvdXIKIAkJcmV0dXJuIHJv b3Q7CiAJaWYgKGVuZCA+IHJvb3QtPmVuZCkKIAkJcmV0dXJuIHJvb3Q7Ci0JcCA9ICZyb290LT5j aGlsZDsKLQlmb3IgKDs7KSB7Ci0JCXRtcCA9ICpwOwotCQlpZiAoIXRtcCB8fCB0bXAtPnN0YXJ0 ID4gZW5kKSB7Ci0JCQluZXctPnNpYmxpbmcgPSB0bXA7Ci0JCQkqcCA9IG5ldzsKKworCWlmIChs aXN0X2VtcHR5KCZyb290LT5jaGlsZCkpIHsKKwkJbGlzdF9hZGQoJm5ldy0+c2libGluZywgJnJv b3QtPmNoaWxkKTsKKwkJbmV3LT5wYXJlbnQgPSByb290OworCQlJTklUX0xJU1RfSEVBRCgmbmV3 LT5jaGlsZCk7CisJCXJldHVybiBOVUxMOworCX0KKworCWxpc3RfZm9yX2VhY2hfZW50cnkodG1w LCAmcm9vdC0+Y2hpbGQsIHNpYmxpbmcpIHsKKwkJaWYgKHRtcC0+c3RhcnQgPiBlbmQpIHsKKwkJ CWxpc3RfYWRkKCZuZXctPnNpYmxpbmcsIHRtcC0+c2libGluZy5wcmV2KTsKIAkJCW5ldy0+cGFy ZW50ID0gcm9vdDsKKwkJCUlOSVRfTElTVF9IRUFEKCZuZXctPmNoaWxkKTsKIAkJCXJldHVybiBO VUxMOwogCQl9Ci0JCXAgPSAmdG1wLT5zaWJsaW5nOwogCQlpZiAodG1wLT5lbmQgPCBzdGFydCkK IAkJCWNvbnRpbnVlOwogCQlyZXR1cm4gdG1wOwogCX0KKworCWxpc3RfYWRkX3RhaWwoJm5ldy0+ c2libGluZywgJnJvb3QtPmNoaWxkKTsKKwluZXctPnBhcmVudCA9IHJvb3Q7CisJSU5JVF9MSVNU X0hFQUQoJm5ldy0+Y2hpbGQpOworCXJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgaW50IF9fcmVs ZWFzZV9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKm9sZCwgYm9vbCByZWxlYXNlX2NoaWxkKQog ewotCXN0cnVjdCByZXNvdXJjZSAqdG1wLCAqKnAsICpjaGQ7CisJc3RydWN0IHJlc291cmNlICp0 bXAsICpuZXh0LCAqY2hkOwogCi0JcCA9ICZvbGQtPnBhcmVudC0+Y2hpbGQ7Ci0JZm9yICg7Oykg ewotCQl0bXAgPSAqcDsKLQkJaWYgKCF0bXApCi0JCQlicmVhazsKKwlsaXN0X2Zvcl9lYWNoX2Vu dHJ5X3NhZmUodG1wLCBuZXh0LCAmb2xkLT5wYXJlbnQtPmNoaWxkLCBzaWJsaW5nKSB7CiAJCWlm ICh0bXAgPT0gb2xkKSB7Ci0JCQlpZiAocmVsZWFzZV9jaGlsZCB8fCAhKHRtcC0+Y2hpbGQpKSB7 Ci0JCQkJKnAgPSB0bXAtPnNpYmxpbmc7CisJCQlpZiAocmVsZWFzZV9jaGlsZCB8fCBsaXN0X2Vt cHR5KCZ0bXAtPmNoaWxkKSkgeworCQkJCWxpc3RfZGVsKCZ0bXAtPnNpYmxpbmcpOwogCQkJfSBl bHNlIHsKLQkJCQlmb3IgKGNoZCA9IHRtcC0+Y2hpbGQ7OyBjaGQgPSBjaGQtPnNpYmxpbmcpIHsK KwkJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNoZCwgJnRtcC0+Y2hpbGQsIHNpYmxpbmcpCiAJCQkJ CWNoZC0+cGFyZW50ID0gdG1wLT5wYXJlbnQ7Ci0JCQkJCWlmICghKGNoZC0+c2libGluZykpCi0J CQkJCQlicmVhazsKLQkJCQl9Ci0JCQkJKnAgPSB0bXAtPmNoaWxkOwotCQkJCWNoZC0+c2libGlu ZyA9IHRtcC0+c2libGluZzsKKwkJCQlsaXN0X3NwbGljZSgmdG1wLT5jaGlsZCwgdG1wLT5zaWJs aW5nLnByZXYpOworCQkJCWxpc3RfZGVsKCZ0bXAtPnNpYmxpbmcpOwogCQkJfQorCiAJCQlvbGQt PnBhcmVudCA9IE5VTEw7CiAJCQlyZXR1cm4gMDsKIAkJfQotCQlwID0gJnRtcC0+c2libGluZzsK IAl9CiAJcmV0dXJuIC1FSU5WQUw7CiB9CiAKIHN0YXRpYyB2b2lkIF9fcmVsZWFzZV9jaGlsZF9y ZXNvdXJjZXMoc3RydWN0IHJlc291cmNlICpyKQogewotCXN0cnVjdCByZXNvdXJjZSAqdG1wLCAq cDsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnRtcCwgKm5leHQ7CiAJcmVzb3VyY2Vfc2l6ZV90IHNpemU7 CiAKLQlwID0gci0+Y2hpbGQ7Ci0Jci0+Y2hpbGQgPSBOVUxMOwotCXdoaWxlIChwKSB7Ci0JCXRt cCA9IHA7Ci0JCXAgPSBwLT5zaWJsaW5nOwotCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHRt cCwgbmV4dCwgJnItPmNoaWxkLCBzaWJsaW5nKSB7CiAJCXRtcC0+cGFyZW50ID0gTlVMTDsKLQkJ dG1wLT5zaWJsaW5nID0gTlVMTDsKKwkJbGlzdF9kZWxfaW5pdCgmdG1wLT5zaWJsaW5nKTsKIAkJ X19yZWxlYXNlX2NoaWxkX3Jlc291cmNlcyh0bXApOwogCiAJCXByaW50ayhLRVJOX0RFQlVHICJy ZWxlYXNlIGNoaWxkIHJlc291cmNlICVwUlxuIiwgdG1wKTsKQEAgLTI1OSw2ICsyNjEsOCBAQCBz dGF0aWMgdm9pZCBfX3JlbGVhc2VfY2hpbGRfcmVzb3VyY2VzKHN0cnVjdCByZXNvdXJjZSAqcikK IAkJdG1wLT5zdGFydCA9IDA7CiAJCXRtcC0+ZW5kID0gc2l6ZSAtIDE7CiAJfQorCisJSU5JVF9M SVNUX0hFQUQoJnRtcC0+Y2hpbGQpOwogfQogCiB2b2lkIHJlbGVhc2VfY2hpbGRfcmVzb3VyY2Vz KHN0cnVjdCByZXNvdXJjZSAqcikKQEAgLTM0Myw3ICszNDcsOCBAQCBzdGF0aWMgaW50IGZpbmRf bmV4dF9pb21lbV9yZXMoc3RydWN0IHJlc291cmNlICpyZXMsIHVuc2lnbmVkIGxvbmcgZGVzYywK IAogCXJlYWRfbG9jaygmcmVzb3VyY2VfbG9jayk7CiAKLQlmb3IgKHAgPSBpb21lbV9yZXNvdXJj ZS5jaGlsZDsgcDsgcCA9IG5leHRfcmVzb3VyY2UocCwgc2libGluZ19vbmx5KSkgeworCWZvciAo cCA9IHJlc291cmNlX2ZpcnN0X2NoaWxkKCZpb21lbV9yZXNvdXJjZS5jaGlsZCk7IHA7CisJCQlw ID0gbmV4dF9yZXNvdXJjZShwLCBzaWJsaW5nX29ubHkpKSB7CiAJCWlmICgocC0+ZmxhZ3MgJiBy ZXMtPmZsYWdzKSAhPSByZXMtPmZsYWdzKQogCQkJY29udGludWU7CiAJCWlmICgoZGVzYyAhPSBJ T1JFU19ERVNDX05PTkUpICYmIChkZXNjICE9IHAtPmRlc2MpKQpAQCAtNTMyLDcgKzUzNyw3IEBA IGludCByZWdpb25faW50ZXJzZWN0cyhyZXNvdXJjZV9zaXplX3Qgc3RhcnQsIHNpemVfdCBzaXpl LCB1bnNpZ25lZCBsb25nIGZsYWdzLAogCXN0cnVjdCByZXNvdXJjZSAqcDsKIAogCXJlYWRfbG9j aygmcmVzb3VyY2VfbG9jayk7Ci0JZm9yIChwID0gaW9tZW1fcmVzb3VyY2UuY2hpbGQ7IHAgOyBw ID0gcC0+c2libGluZykgeworCWxpc3RfZm9yX2VhY2hfZW50cnkocCwgJmlvbWVtX3Jlc291cmNl LmNoaWxkLCBzaWJsaW5nKSB7CiAJCWJvb2wgaXNfdHlwZSA9ICgoKHAtPmZsYWdzICYgZmxhZ3Mp ID09IGZsYWdzKSAmJgogCQkJCSgoZGVzYyA9PSBJT1JFU19ERVNDX05PTkUpIHx8CiAJCQkJIChk ZXNjID09IHAtPmRlc2MpKSk7CkBAIC01ODYsNyArNTkxLDcgQEAgc3RhdGljIGludCBfX2ZpbmRf cmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyb290LCBzdHJ1Y3QgcmVzb3VyY2UgKm9sZCwKIAkJ CSByZXNvdXJjZV9zaXplX3QgIHNpemUsCiAJCQkgc3RydWN0IHJlc291cmNlX2NvbnN0cmFpbnQg KmNvbnN0cmFpbnQpCiB7Ci0Jc3RydWN0IHJlc291cmNlICp0aGlzID0gcm9vdC0+Y2hpbGQ7CisJ c3RydWN0IHJlc291cmNlICp0aGlzID0gcmVzb3VyY2VfZmlyc3RfY2hpbGQoJnJvb3QtPmNoaWxk KTsKIAlzdHJ1Y3QgcmVzb3VyY2UgdG1wID0gKm5ldywgYXZhaWwsIGFsbG9jOwogCiAJdG1wLnN0 YXJ0ID0gcm9vdC0+c3RhcnQ7CkBAIC01OTYsNyArNjAxLDcgQEAgc3RhdGljIGludCBfX2ZpbmRf cmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyb290LCBzdHJ1Y3QgcmVzb3VyY2UgKm9sZCwKIAkg Ki8KIAlpZiAodGhpcyAmJiB0aGlzLT5zdGFydCA9PSByb290LT5zdGFydCkgewogCQl0bXAuc3Rh cnQgPSAodGhpcyA9PSBvbGQpID8gb2xkLT5zdGFydCA6IHRoaXMtPmVuZCArIDE7Ci0JCXRoaXMg PSB0aGlzLT5zaWJsaW5nOworCQl0aGlzID0gcmVzb3VyY2Vfc2libGluZyh0aGlzKTsKIAl9CiAJ Zm9yKDs7KSB7CiAJCWlmICh0aGlzKQpAQCAtNjMyLDcgKzYzNyw3IEBAIG5leHQ6CQlpZiAoIXRo aXMgfHwgdGhpcy0+ZW5kID09IHJvb3QtPmVuZCkKIAogCQlpZiAodGhpcyAhPSBvbGQpCiAJCQl0 bXAuc3RhcnQgPSB0aGlzLT5lbmQgKyAxOwotCQl0aGlzID0gdGhpcy0+c2libGluZzsKKwkJdGhp cyA9IHJlc291cmNlX3NpYmxpbmcodGhpcyk7CiAJfQogCXJldHVybiAtRUJVU1k7CiB9CkBAIC02 NzYsNyArNjgxLDcgQEAgc3RhdGljIGludCByZWFsbG9jYXRlX3Jlc291cmNlKHN0cnVjdCByZXNv dXJjZSAqcm9vdCwgc3RydWN0IHJlc291cmNlICpvbGQsCiAJCWdvdG8gb3V0OwogCX0KIAotCWlm IChvbGQtPmNoaWxkKSB7CisJaWYgKCFsaXN0X2VtcHR5KCZvbGQtPmNoaWxkKSkgewogCQllcnIg PSAtRUJVU1k7CiAJCWdvdG8gb3V0OwogCX0KQEAgLTc1Nyw3ICs3NjIsNyBAQCBzdHJ1Y3QgcmVz b3VyY2UgKmxvb2t1cF9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnJvb3QsIHJlc291cmNlX3Np emVfdCBzdGFydCkKIAlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKIAogCXJlYWRfbG9jaygmcmVzb3Vy Y2VfbG9jayk7Ci0JZm9yIChyZXMgPSByb290LT5jaGlsZDsgcmVzOyByZXMgPSByZXMtPnNpYmxp bmcpIHsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcywgJnJvb3QtPmNoaWxkLCBzaWJsaW5nKSB7 CiAJCWlmIChyZXMtPnN0YXJ0ID09IHN0YXJ0KQogCQkJYnJlYWs7CiAJfQpAQCAtNzkwLDMyICs3 OTUsMjcgQEAgc3RhdGljIHN0cnVjdCByZXNvdXJjZSAqIF9faW5zZXJ0X3Jlc291cmNlKHN0cnVj dCByZXNvdXJjZSAqcGFyZW50LCBzdHJ1Y3QgcmVzb3UKIAkJCWJyZWFrOwogCX0KIAotCWZvciAo bmV4dCA9IGZpcnN0OyA7IG5leHQgPSBuZXh0LT5zaWJsaW5nKSB7CisJZm9yIChuZXh0ID0gZmly c3Q7IDsgbmV4dCA9IHJlc291cmNlX3NpYmxpbmcobmV4dCkpIHsKIAkJLyogUGFydGlhbCBvdmVy bGFwPyBCYWQsIGFuZCB1bmZpeGFibGUgKi8KIAkJaWYgKG5leHQtPnN0YXJ0IDwgbmV3LT5zdGFy dCB8fCBuZXh0LT5lbmQgPiBuZXctPmVuZCkKIAkJCXJldHVybiBuZXh0OwotCQlpZiAoIW5leHQt PnNpYmxpbmcpCisJCWlmICghcmVzb3VyY2Vfc2libGluZyhuZXh0KSkKIAkJCWJyZWFrOwotCQlp ZiAobmV4dC0+c2libGluZy0+c3RhcnQgPiBuZXctPmVuZCkKKwkJaWYgKHJlc291cmNlX3NpYmxp bmcobmV4dCktPnN0YXJ0ID4gbmV3LT5lbmQpCiAJCQlicmVhazsKIAl9Ci0KIAluZXctPnBhcmVu dCA9IHBhcmVudDsKLQluZXctPnNpYmxpbmcgPSBuZXh0LT5zaWJsaW5nOwotCW5ldy0+Y2hpbGQg PSBmaXJzdDsKKwlsaXN0X2FkZCgmbmV3LT5zaWJsaW5nLCAmbmV4dC0+c2libGluZyk7CisJSU5J VF9MSVNUX0hFQUQoJm5ldy0+Y2hpbGQpOwogCi0JbmV4dC0+c2libGluZyA9IE5VTEw7Ci0JZm9y IChuZXh0ID0gZmlyc3Q7IG5leHQ7IG5leHQgPSBuZXh0LT5zaWJsaW5nKQorCS8qCisJICogRnJv bSBmaXJzdCB0byBuZXh0LCB0aGV5IGFsbCBmYWxsIGludG8gbmV3J3MgcmVnaW9uLCBzbyBjaGFu Z2UgdGhlbQorCSAqIGFzIG5ldydzIGNoaWxkcmVuLgorCSAqLworCWxpc3RfY3V0X3Bvc2l0aW9u KCZuZXctPmNoaWxkLCBmaXJzdC0+c2libGluZy5wcmV2LCAmbmV4dC0+c2libGluZyk7CisJbGlz dF9mb3JfZWFjaF9lbnRyeShuZXh0LCAmbmV3LT5jaGlsZCwgc2libGluZykKIAkJbmV4dC0+cGFy ZW50ID0gbmV3OwogCi0JaWYgKHBhcmVudC0+Y2hpbGQgPT0gZmlyc3QpIHsKLQkJcGFyZW50LT5j aGlsZCA9IG5ldzsKLQl9IGVsc2UgewotCQluZXh0ID0gcGFyZW50LT5jaGlsZDsKLQkJd2hpbGUg KG5leHQtPnNpYmxpbmcgIT0gZmlyc3QpCi0JCQluZXh0ID0gbmV4dC0+c2libGluZzsKLQkJbmV4 dC0+c2libGluZyA9IG5ldzsKLQl9CiAJcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTkzNywxOSArOTM3 LDE3IEBAIHN0YXRpYyBpbnQgX19hZGp1c3RfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyZXMs IHJlc291cmNlX3NpemVfdCBzdGFydCwKIAlpZiAoKHN0YXJ0IDwgcGFyZW50LT5zdGFydCkgfHwg KGVuZCA+IHBhcmVudC0+ZW5kKSkKIAkJZ290byBvdXQ7CiAKLQlpZiAocmVzLT5zaWJsaW5nICYm IChyZXMtPnNpYmxpbmctPnN0YXJ0IDw9IGVuZCkpCisJaWYgKHJlc291cmNlX3NpYmxpbmcocmVz KSAmJiAocmVzb3VyY2Vfc2libGluZyhyZXMpLT5zdGFydCA8PSBlbmQpKQogCQlnb3RvIG91dDsK IAotCXRtcCA9IHBhcmVudC0+Y2hpbGQ7Ci0JaWYgKHRtcCAhPSByZXMpIHsKLQkJd2hpbGUgKHRt cC0+c2libGluZyAhPSByZXMpCi0JCQl0bXAgPSB0bXAtPnNpYmxpbmc7CisJaWYgKHJlcy0+c2li bGluZy5wcmV2ICE9ICZwYXJlbnQtPmNoaWxkKSB7CisJCXRtcCA9IGxpc3RfcHJldl9lbnRyeShy ZXMsIHNpYmxpbmcpOwogCQlpZiAoc3RhcnQgPD0gdG1wLT5lbmQpCiAJCQlnb3RvIG91dDsKIAl9 CiAKIHNraXA6Ci0JZm9yICh0bXAgPSByZXMtPmNoaWxkOyB0bXA7IHRtcCA9IHRtcC0+c2libGlu ZykKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgJnJlcy0+Y2hpbGQsIHNpYmxpbmcpCiAJCWlm ICgodG1wLT5zdGFydCA8IHN0YXJ0KSB8fCAodG1wLT5lbmQgPiBlbmQpKQogCQkJZ290byBvdXQ7 CiAKQEAgLTk5MywyOCArOTkxLDMxIEBAIEVYUE9SVF9TWU1CT0woYWRqdXN0X3Jlc291cmNlKTsK ICAqLwogaW50IHJlcGFyZW50X3Jlc291cmNlcyhzdHJ1Y3QgcmVzb3VyY2UgKnBhcmVudCwgc3Ry dWN0IHJlc291cmNlICpyZXMpCiB7Ci0Jc3RydWN0IHJlc291cmNlICpwLCAqKnBwOwotCXN0cnVj dCByZXNvdXJjZSAqKmZpcnN0cHAgPSBOVUxMOworCXN0cnVjdCByZXNvdXJjZSAqcCwgKmZpcnN0 ID0gTlVMTDsKIAotCWZvciAocHAgPSAmcGFyZW50LT5jaGlsZDsgKHAgPSAqcHApICE9IE5VTEw7 IHBwID0gJnAtPnNpYmxpbmcpIHsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHAsICZwYXJlbnQtPmNo aWxkLCBzaWJsaW5nKSB7CiAJCWlmIChwLT5lbmQgPCByZXMtPnN0YXJ0KQogCQkJY29udGludWU7 CiAJCWlmIChyZXMtPmVuZCA8IHAtPnN0YXJ0KQogCQkJYnJlYWs7CiAJCWlmIChwLT5zdGFydCA8 IHJlcy0+c3RhcnQgfHwgcC0+ZW5kID4gcmVzLT5lbmQpCiAJCQlyZXR1cm4gLUVOT1RTVVBQOwkv KiBub3QgY29tcGxldGVseSBjb250YWluZWQgKi8KLQkJaWYgKGZpcnN0cHAgPT0gTlVMTCkKLQkJ CWZpcnN0cHAgPSBwcDsKKwkJaWYgKGZpcnN0ID09IE5VTEwpCisJCQlmaXJzdCA9IHA7CiAJfQot CWlmIChmaXJzdHBwID09IE5VTEwpCisJaWYgKGZpcnN0ID09IE5VTEwpCiAJCXJldHVybiAtRUNB TkNFTEVEOyAvKiBkaWRuJ3QgZmluZCBhbnkgY29uZmxpY3RpbmcgZW50cmllcz8gKi8KIAlyZXMt PnBhcmVudCA9IHBhcmVudDsKLQlyZXMtPmNoaWxkID0gKmZpcnN0cHA7Ci0JcmVzLT5zaWJsaW5n ID0gKnBwOwotCSpmaXJzdHBwID0gcmVzOwotCSpwcCA9IE5VTEw7Ci0JZm9yIChwID0gcmVzLT5j aGlsZDsgcCAhPSBOVUxMOyBwID0gcC0+c2libGluZykgewotCQlwLT5wYXJlbnQgPSByZXM7CisJ bGlzdF9hZGQoJnJlcy0+c2libGluZywgcC0+c2libGluZy5wcmV2KTsKKwlJTklUX0xJU1RfSEVB RCgmcmVzLT5jaGlsZCk7CisKKwkvKgorCSAqIEZyb20gZmlyc3QgdG8gcCdzIHByZXZpb3VzIHNp YmxpbmcsIHRoZXkgYWxsIGZhbGwgaW50bworCSAqIHJlcydzIHJlZ2lvbiwgY2hhbmdlIHRoZW0g YXMgcmVzJ3MgY2hpbGRyZW4uCisJICovCisJbGlzdF9jdXRfcG9zaXRpb24oJnJlcy0+Y2hpbGQs IGZpcnN0LT5zaWJsaW5nLnByZXYsIHJlcy0+c2libGluZy5wcmV2KTsKKwlsaXN0X2Zvcl9lYWNo X2VudHJ5KHAsICZyZXMtPmNoaWxkLCBzaWJsaW5nKSB7CisgICAgICAgICAgICAgICAgcC0+cGFy ZW50ID0gcmVzOwogCQlwcl9kZWJ1ZygiUENJOiBSZXBhcmVudGVkICVzICVwUiB1bmRlciAlc1xu IiwKIAkJCSBwLT5uYW1lLCBwLCByZXMtPm5hbWUpOwogCX0KQEAgLTEyMTMsMzQgKzEyMTQsMzIg QEAgRVhQT1JUX1NZTUJPTChfX3JlcXVlc3RfcmVnaW9uKTsKIHZvaWQgX19yZWxlYXNlX3JlZ2lv bihzdHJ1Y3QgcmVzb3VyY2UgKnBhcmVudCwgcmVzb3VyY2Vfc2l6ZV90IHN0YXJ0LAogCQkJcmVz b3VyY2Vfc2l6ZV90IG4pCiB7Ci0Jc3RydWN0IHJlc291cmNlICoqcDsKKwlzdHJ1Y3QgcmVzb3Vy Y2UgKnJlczsKIAlyZXNvdXJjZV9zaXplX3QgZW5kOwogCi0JcCA9ICZwYXJlbnQtPmNoaWxkOwor CXJlcyA9IHJlc291cmNlX2ZpcnN0X2NoaWxkKCZwYXJlbnQtPmNoaWxkKTsKIAllbmQgPSBzdGFy dCArIG4gLSAxOwogCiAJd3JpdGVfbG9jaygmcmVzb3VyY2VfbG9jayk7CiAKIAlmb3IgKDs7KSB7 Ci0JCXN0cnVjdCByZXNvdXJjZSAqcmVzID0gKnA7Ci0KIAkJaWYgKCFyZXMpCiAJCQlicmVhazsK IAkJaWYgKHJlcy0+c3RhcnQgPD0gc3RhcnQgJiYgcmVzLT5lbmQgPj0gZW5kKSB7CiAJCQlpZiAo IShyZXMtPmZsYWdzICYgSU9SRVNPVVJDRV9CVVNZKSkgewotCQkJCXAgPSAmcmVzLT5jaGlsZDsK KwkJCQlyZXMgPSByZXNvdXJjZV9maXJzdF9jaGlsZCgmcmVzLT5jaGlsZCk7CiAJCQkJY29udGlu dWU7CiAJCQl9CiAJCQlpZiAocmVzLT5zdGFydCAhPSBzdGFydCB8fCByZXMtPmVuZCAhPSBlbmQp CiAJCQkJYnJlYWs7Ci0JCQkqcCA9IHJlcy0+c2libGluZzsKKwkJCWxpc3RfZGVsKCZyZXMtPnNp YmxpbmcpOwogCQkJd3JpdGVfdW5sb2NrKCZyZXNvdXJjZV9sb2NrKTsKIAkJCWlmIChyZXMtPmZs YWdzICYgSU9SRVNPVVJDRV9NVVhFRCkKIAkJCQl3YWtlX3VwKCZtdXhlZF9yZXNvdXJjZV93YWl0 KTsKIAkJCWZyZWVfcmVzb3VyY2UocmVzKTsKIAkJCXJldHVybjsKIAkJfQotCQlwID0gJnJlcy0+ c2libGluZzsKKwkJcmVzID0gcmVzb3VyY2Vfc2libGluZyhyZXMpOwogCX0KIAogCXdyaXRlX3Vu bG9jaygmcmVzb3VyY2VfbG9jayk7CkBAIC0xMjc1LDkgKzEyNzQsNyBAQCBFWFBPUlRfU1lNQk9M KF9fcmVsZWFzZV9yZWdpb24pOwogaW50IHJlbGVhc2VfbWVtX3JlZ2lvbl9hZGp1c3RhYmxlKHN0 cnVjdCByZXNvdXJjZSAqcGFyZW50LAogCQkJcmVzb3VyY2Vfc2l6ZV90IHN0YXJ0LCByZXNvdXJj ZV9zaXplX3Qgc2l6ZSkKIHsKLQlzdHJ1Y3QgcmVzb3VyY2UgKipwOwotCXN0cnVjdCByZXNvdXJj ZSAqcmVzOwotCXN0cnVjdCByZXNvdXJjZSAqbmV3X3JlczsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJl cywgKm5ld19yZXM7CiAJcmVzb3VyY2Vfc2l6ZV90IGVuZDsKIAlpbnQgcmV0ID0gLUVJTlZBTDsK IApAQCAtMTI4OCwxNiArMTI4NSwxNiBAQCBpbnQgcmVsZWFzZV9tZW1fcmVnaW9uX2FkanVzdGFi bGUoc3RydWN0IHJlc291cmNlICpwYXJlbnQsCiAJLyogVGhlIGFsbG9jX3Jlc291cmNlKCkgcmVz dWx0IGdldHMgY2hlY2tlZCBsYXRlciAqLwogCW5ld19yZXMgPSBhbGxvY19yZXNvdXJjZShHRlBf S0VSTkVMKTsKIAotCXAgPSAmcGFyZW50LT5jaGlsZDsKKwlyZXMgPSByZXNvdXJjZV9maXJzdF9j aGlsZCgmcGFyZW50LT5jaGlsZCk7CiAJd3JpdGVfbG9jaygmcmVzb3VyY2VfbG9jayk7CiAKLQl3 aGlsZSAoKHJlcyA9ICpwKSkgeworCXdoaWxlICgocmVzKSkgewogCQlpZiAocmVzLT5zdGFydCA+ PSBlbmQpCiAJCQlicmVhazsKIAogCQkvKiBsb29rIGZvciB0aGUgbmV4dCByZXNvdXJjZSBpZiBp dCBkb2VzIG5vdCBmaXQgaW50byAqLwogCQlpZiAocmVzLT5zdGFydCA+IHN0YXJ0IHx8IHJlcy0+ ZW5kIDwgZW5kKSB7Ci0JCQlwID0gJnJlcy0+c2libGluZzsKKwkJCXJlcyA9IHJlc291cmNlX3Np YmxpbmcocmVzKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKQEAgLTEzMDUsMTQgKzEzMDIsMTQgQEAg aW50IHJlbGVhc2VfbWVtX3JlZ2lvbl9hZGp1c3RhYmxlKHN0cnVjdCByZXNvdXJjZSAqcGFyZW50 LAogCQkJYnJlYWs7CiAKIAkJaWYgKCEocmVzLT5mbGFncyAmIElPUkVTT1VSQ0VfQlVTWSkpIHsK LQkJCXAgPSAmcmVzLT5jaGlsZDsKKwkJCXJlcyA9IHJlc291cmNlX2ZpcnN0X2NoaWxkKCZyZXMt PmNoaWxkKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKIAkJLyogZm91bmQgdGhlIHRhcmdldCByZXNv dXJjZTsgbGV0J3MgYWRqdXN0IGFjY29yZGluZ2x5ICovCiAJCWlmIChyZXMtPnN0YXJ0ID09IHN0 YXJ0ICYmIHJlcy0+ZW5kID09IGVuZCkgewogCQkJLyogZnJlZSB0aGUgd2hvbGUgZW50cnkgKi8K LQkJCSpwID0gcmVzLT5zaWJsaW5nOworCQkJbGlzdF9kZWwoJnJlcy0+c2libGluZyk7CiAJCQlm cmVlX3Jlc291cmNlKHJlcyk7CiAJCQlyZXQgPSAwOwogCQl9IGVsc2UgaWYgKHJlcy0+c3RhcnQg PT0gc3RhcnQgJiYgcmVzLT5lbmQgIT0gZW5kKSB7CkBAIC0xMzM1LDE0ICsxMzMyLDEzIEBAIGlu dCByZWxlYXNlX21lbV9yZWdpb25fYWRqdXN0YWJsZShzdHJ1Y3QgcmVzb3VyY2UgKnBhcmVudCwK IAkJCW5ld19yZXMtPmZsYWdzID0gcmVzLT5mbGFnczsKIAkJCW5ld19yZXMtPmRlc2MgPSByZXMt PmRlc2M7CiAJCQluZXdfcmVzLT5wYXJlbnQgPSByZXMtPnBhcmVudDsKLQkJCW5ld19yZXMtPnNp YmxpbmcgPSByZXMtPnNpYmxpbmc7Ci0JCQluZXdfcmVzLT5jaGlsZCA9IE5VTEw7CisJCQlJTklU X0xJU1RfSEVBRCgmbmV3X3Jlcy0+Y2hpbGQpOwogCiAJCQlyZXQgPSBfX2FkanVzdF9yZXNvdXJj ZShyZXMsIHJlcy0+c3RhcnQsCiAJCQkJCQlzdGFydCAtIHJlcy0+c3RhcnQpOwogCQkJaWYgKHJl dCkKIAkJCQlicmVhazsKLQkJCXJlcy0+c2libGluZyA9IG5ld19yZXM7CisJCQlsaXN0X2FkZCgm bmV3X3Jlcy0+c2libGluZywgJnJlcy0+c2libGluZyk7CiAJCQluZXdfcmVzID0gTlVMTDsKIAkJ fQogCkBAIC0xNTIzLDcgKzE1MTksNyBAQCBzdGF0aWMgaW50IF9faW5pdCByZXNlcnZlX3NldHVw KGNoYXIgKnN0cikKIAkJCXJlcy0+ZW5kID0gaW9fc3RhcnQgKyBpb19udW0gLSAxOwogCQkJcmVz LT5mbGFncyB8PSBJT1JFU09VUkNFX0JVU1k7CiAJCQlyZXMtPmRlc2MgPSBJT1JFU19ERVNDX05P TkU7Ci0JCQlyZXMtPmNoaWxkID0gTlVMTDsKKwkJCUlOSVRfTElTVF9IRUFEKCZyZXMtPmNoaWxk KTsKIAkJCWlmIChyZXF1ZXN0X3Jlc291cmNlKHBhcmVudCwgcmVzKSA9PSAwKQogCQkJCXJlc2Vy dmVkID0geCsxOwogCQl9CkBAIC0xNTQzLDcgKzE1MzksNyBAQCBpbnQgaW9tZW1fbWFwX3Nhbml0 eV9jaGVjayhyZXNvdXJjZV9zaXplX3QgYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKQogCWxvZmZf dCBsOwogCiAJcmVhZF9sb2NrKCZyZXNvdXJjZV9sb2NrKTsKLQlmb3IgKHAgPSBwLT5jaGlsZDsg cCA7IHAgPSByX25leHQoTlVMTCwgcCwgJmwpKSB7CisJZm9yIChwID0gcmVzb3VyY2VfZmlyc3Rf Y2hpbGQoJnAtPmNoaWxkKTsgcDsgcCA9IHJfbmV4dChOVUxMLCBwLCAmbCkpIHsKIAkJLyoKIAkJ ICogV2UgY2FuIHByb2JhYmx5IHNraXAgdGhlIHJlc291cmNlcyB3aXRob3V0CiAJCSAqIElPUkVT T1VSQ0VfSU8gYXR0cmlidXRlPwpAQCAtMTU5OSw3ICsxNTk1LDcgQEAgYm9vbCBpb21lbV9pc19l eGNsdXNpdmUodTY0IGFkZHIpCiAJYWRkciA9IGFkZHIgJiBQQUdFX01BU0s7CiAKIAlyZWFkX2xv Y2soJnJlc291cmNlX2xvY2spOwotCWZvciAocCA9IHAtPmNoaWxkOyBwIDsgcCA9IHJfbmV4dChO VUxMLCBwLCAmbCkpIHsKKwlmb3IgKHAgPSByZXNvdXJjZV9maXJzdF9jaGlsZCgmcC0+Y2hpbGQp OyBwOyBwID0gcl9uZXh0KE5VTEwsIHAsICZsKSkgewogCQkvKgogCQkgKiBXZSBjYW4gcHJvYmFi bHkgc2tpcCB0aGUgcmVzb3VyY2VzIHdpdGhvdXQKIAkJICogSU9SRVNPVVJDRV9JTyBhdHRyaWJ1 dGU/Ci0tIAoyLjEzLjYKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkxpbnV4LW52ZGltbSBtYWlsaW5nIGxpc3QKTGludXgtbnZkaW1tQGxpc3RzLjAxLm9y ZwpodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW52ZGltbQo=