From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ankur Arora Subject: [RFC PATCH 12/16] xen/xenbus: support xenbus frontend/backend with xenhost_t Date: Thu, 9 May 2019 10:25:36 -0700 Message-ID: <20190509172540.12398-13-ankur.a.arora__16996.6459668771$1557422812$gmane$org@oracle.com> References: <20190509172540.12398-1-ankur.a.arora@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hOmnn-0000im-PJ for xen-devel@lists.xenproject.org; Thu, 09 May 2019 17:25:51 +0000 In-Reply-To: <20190509172540.12398-1-ankur.a.arora@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org Cc: jgross@suse.com, sstabellini@kernel.org, konrad.wilk@oracle.com, ankur.a.arora@oracle.com, pbonzini@redhat.com, boris.ostrovsky@oracle.com, joao.m.martins@oracle.com List-Id: xen-devel@lists.xenproject.org QXMgcGFydCBvZiB4ZW5idXMgaW5pdCwgYm90aCBmcm9udGVuZCwgYmFja2VuZCBpbnRlcmZhY2Vz IG5lZWQgdG8gdGFsawpvbiB0aGUgY29ycmVjdCB4ZW5idXMuIFRoaXMgbWlnaHQgYmUgYSBsb2Nh bCB4ZW5zdG9yZSAoYmFja2VuZCkgb3IgbWlnaHQKYmUgYSBYU19QVi9YU19IVk0gaW50ZXJmYWNl IChmcm9udGVuZCkgd2hpY2ggbmVlZHMgdG8gdGFsayBvdmVyIHhlbmJ1cwp3aXRoIHRoZSByZW1v dGUgeGVuc3RvcmVkLiBXZSBib290c3RyYXAgYWxsIG9mIHRoZXNlIHdpdGggZXZ0Y2huL2dmbgpw YXJhbWV0ZXJzIGZyb20gKCpzZXR1cF94cykoKS4KCkdpdmVuIHRoaXMgd2UgY2FuIGRvIGFwcHJv cHJpYXRlIGRldmljZSBkaXNjb3ZlcnkgKGluIGNhc2Ugb2YgZnJvbnRlbmQpCmFuZCBkZXZpY2Ug Y29ubmVjdGl2aXR5IGZvciB0aGUgYmFja2VuZC4KT25jZSBkb25lLCB3ZSBzdGFzaCB0aGUgeGVu aG9zdF90ICogaW4geGVuX2J1c190eXBlLCB4ZW5idXNfZGV2aWNlIG9yCnhlbmJ1c193YXRjaCBh bmQgdGhlbiB0aGUgZnJvbnRlbmQgYW5kIGJhY2tlbmQgZGV2aWNlcyBpbXBsaWNpdGx5IHVzZQp0 aGUgY29ycmVjdCBpbnRlcmZhY2UuCgpUaGUgcmVzdCBvZiBwYXRjaCBpcyBqdXN0IGNoYW5naW5n IHRoZSBpbnRlcmZhY2VzIHdoZXJlIG5lZWRlZC4KClNpZ25lZC1vZmYtYnk6IEFua3VyIEFyb3Jh IDxhbmt1ci5hLmFyb3JhQG9yYWNsZS5jb20+Ci0tLQogZHJpdmVycy9ibG9jay94ZW4tYmxrYmFj ay9ibGtiYWNrLmMgICAgICAgIHwgIDEwICstCiBkcml2ZXJzL25ldC94ZW4tbmV0ZnJvbnQuYyAg ICAgICAgICAgICAgICAgfCAgMTQgKy0KIGRyaXZlcnMvcGNpL3hlbi1wY2lmcm9udC5jICAgICAg ICAgICAgICAgICB8ICAgNCArLQogZHJpdmVycy94ZW4vY3B1X2hvdHBsdWcuYyAgICAgICAgICAg ICAgICAgIHwgICA0ICstCiBkcml2ZXJzL3hlbi9tYW5hZ2UuYyAgICAgICAgICAgICAgICAgICAg ICAgfCAgMjggKy0tCiBkcml2ZXJzL3hlbi94ZW4tYmFsbG9vbi5jICAgICAgICAgICAgICAgICAg fCAgIDggKy0KIGRyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXMuaCAgICAgICAgICAgICAgICB8ICA0 NSArKy0tCiBkcml2ZXJzL3hlbi94ZW5idXMveGVuYnVzX2NsaWVudC5jICAgICAgICAgfCAgMzIg Ky0tCiBkcml2ZXJzL3hlbi94ZW5idXMveGVuYnVzX2NvbW1zLmMgICAgICAgICAgfCAxMjEgKysr KystLS0tLQogZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1c19kZXZfYmFja2VuZC5jICAgIHwgIDMw ICsrLQogZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1c19kZXZfZnJvbnRlbmQuYyAgIHwgIDIyICst CiBkcml2ZXJzL3hlbi94ZW5idXMveGVuYnVzX3Byb2JlLmMgICAgICAgICAgfCAyNDYgKysrKysr KysrKysrKy0tLS0tLS0tCiBkcml2ZXJzL3hlbi94ZW5idXMveGVuYnVzX3Byb2JlX2JhY2tlbmQu YyAgfCAgMTkgKy0KIGRyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfcHJvYmVfZnJvbnRlbmQuYyB8 ICA2NSArKystLS0KIGRyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfeHMuYyAgICAgICAgICAgICB8 IDE4OCArKysrKysrKystLS0tLS0tCiBpbmNsdWRlL3hlbi94ZW4tb3BzLmggICAgICAgICAgICAg ICAgICAgICAgfCAgIDMgKwogaW5jbHVkZS94ZW4veGVuYnVzLmggICAgICAgICAgICAgICAgICAg ICAgIHwgIDU0ICsrKy0tCiBpbmNsdWRlL3hlbi94ZW5ob3N0LmggICAgICAgICAgICAgICAgICAg ICAgfCAgMjAgKysKIDE4IGZpbGVzIGNoYW5nZWQsIDUzNiBpbnNlcnRpb25zKCspLCAzNzcgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay9ibGtiYWNr LmMgYi9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtiYWNrL2Jsa2JhY2suYwppbmRleCBmZDFlMTlmMWE0 OWYuLjdhZDQ0MjNjMjRiOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay9i bGtiYWNrLmMKKysrIGIvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay9ibGtiYWNrLmMKQEAgLTU0 MSwxMiArNTQxLDEyIEBAIHN0YXRpYyB2b2lkIHhlbl92YmRfcmVzaXplKHN0cnVjdCB4ZW5fYmxr aWYgKmJsa2lmKQogCXByX2luZm8oIlZCRCBSZXNpemU6IG5ldyBzaXplICVsbHVcbiIsIG5ld19z aXplKTsKIAl2YmQtPnNpemUgPSBuZXdfc2l6ZTsKIGFnYWluOgotCWVyciA9IHhlbmJ1c190cmFu c2FjdGlvbl9zdGFydCgmeGJ0KTsKKwllcnIgPSB4ZW5idXNfdHJhbnNhY3Rpb25fc3RhcnQoZGV2 LT54aCwgJnhidCk7CiAJaWYgKGVycikgewogCQlwcl93YXJuKCJFcnJvciBzdGFydGluZyB0cmFu c2FjdGlvblxuIik7CiAJCXJldHVybjsKIAl9Ci0JZXJyID0geGVuYnVzX3ByaW50Zih4YnQsIGRl di0+bm9kZW5hbWUsICJzZWN0b3JzIiwgIiVsbHUiLAorCWVyciA9IHhlbmJ1c19wcmludGYoZGV2 LT54aCwgeGJ0LCBkZXYtPm5vZGVuYW1lLCAic2VjdG9ycyIsICIlbGx1IiwKIAkJCSAgICAodW5z aWduZWQgbG9uZyBsb25nKXZiZF9zeih2YmQpKTsKIAlpZiAoZXJyKSB7CiAJCXByX3dhcm4oIkVy cm9yIHdyaXRpbmcgbmV3IHNpemVcbiIpOwpAQCAtNTU3LDIwICs1NTcsMjAgQEAgc3RhdGljIHZv aWQgeGVuX3ZiZF9yZXNpemUoc3RydWN0IHhlbl9ibGtpZiAqYmxraWYpCiAJICogdGhlIGZyb250 LWVuZC4gSWYgdGhlIGN1cnJlbnQgc3RhdGUgaXMgImNvbm5lY3RlZCIgdGhlCiAJICogZnJvbnQt ZW5kIHdpbGwgZ2V0IHRoZSBuZXcgc2l6ZSBpbmZvcm1hdGlvbiBvbmxpbmUuCiAJICovCi0JZXJy ID0geGVuYnVzX3ByaW50Zih4YnQsIGRldi0+bm9kZW5hbWUsICJzdGF0ZSIsICIlZCIsIGRldi0+ c3RhdGUpOworCWVyciA9IHhlbmJ1c19wcmludGYoZGV2LT54aCwgeGJ0LCBkZXYtPm5vZGVuYW1l LCAic3RhdGUiLCAiJWQiLCBkZXYtPnN0YXRlKTsKIAlpZiAoZXJyKSB7CiAJCXByX3dhcm4oIkVy cm9yIHdyaXRpbmcgdGhlIHN0YXRlXG4iKTsKIAkJZ290byBhYm9ydDsKIAl9CiAKLQllcnIgPSB4 ZW5idXNfdHJhbnNhY3Rpb25fZW5kKHhidCwgMCk7CisJZXJyID0geGVuYnVzX3RyYW5zYWN0aW9u X2VuZChkZXYtPnhoLCB4YnQsIDApOwogCWlmIChlcnIgPT0gLUVBR0FJTikKIAkJZ290byBhZ2Fp bjsKIAlpZiAoZXJyKQogCQlwcl93YXJuKCJFcnJvciBlbmRpbmcgdHJhbnNhY3Rpb25cbiIpOwog CXJldHVybjsKIGFib3J0OgotCXhlbmJ1c190cmFuc2FjdGlvbl9lbmQoeGJ0LCAxKTsKKwl4ZW5i dXNfdHJhbnNhY3Rpb25fZW5kKGRldi0+eGgsIHhidCwgMSk7CiB9CiAKIC8qCmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC94ZW4tbmV0ZnJvbnQuYyBiL2RyaXZlcnMvbmV0L3hlbi1uZXRmcm9udC5j CmluZGV4IDFjZDBhMmQyYmE1NC4uZWUyOGU4Yjg1NDA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25l dC94ZW4tbmV0ZnJvbnQuYworKysgYi9kcml2ZXJzL25ldC94ZW4tbmV0ZnJvbnQuYwpAQCAtMTMz Niw5ICsxMzM2LDkgQEAgc3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlICp4ZW5uZXRfY3JlYXRlX2Rl dihzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2KQogCiAJeGVuYnVzX3N3aXRjaF9zdGF0ZShkZXYs IFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nKTsKIAl3YWl0X2V2ZW50KG1vZHVsZV93cSwKLQkJICAg eGVuYnVzX3JlYWRfZHJpdmVyX3N0YXRlKGRldi0+b3RoZXJlbmQpICE9CisJCSAgIHhlbmJ1c19y ZWFkX2RyaXZlcl9zdGF0ZShkZXYsIGRldi0+b3RoZXJlbmQpICE9CiAJCSAgIFhlbmJ1c1N0YXRl Q2xvc2VkICYmCi0JCSAgIHhlbmJ1c19yZWFkX2RyaXZlcl9zdGF0ZShkZXYtPm90aGVyZW5kKSAh PQorCQkgICB4ZW5idXNfcmVhZF9kcml2ZXJfc3RhdGUoZGV2LCBkZXYtPm90aGVyZW5kKSAhPQog CQkgICBYZW5idXNTdGF0ZVVua25vd24pOwogCXJldHVybiBuZXRkZXY7CiAKQEAgLTIxNDUsMTkg KzIxNDUsMTkgQEAgc3RhdGljIGludCB4ZW5uZXRfcmVtb3ZlKHN0cnVjdCB4ZW5idXNfZGV2aWNl ICpkZXYpCiAKIAlkZXZfZGJnKCZkZXYtPmRldiwgIiVzXG4iLCBkZXYtPm5vZGVuYW1lKTsKIAot CWlmICh4ZW5idXNfcmVhZF9kcml2ZXJfc3RhdGUoZGV2LT5vdGhlcmVuZCkgIT0gWGVuYnVzU3Rh dGVDbG9zZWQpIHsKKwlpZiAoeGVuYnVzX3JlYWRfZHJpdmVyX3N0YXRlKGRldiwgZGV2LT5vdGhl cmVuZCkgIT0gWGVuYnVzU3RhdGVDbG9zZWQpIHsKIAkJeGVuYnVzX3N3aXRjaF9zdGF0ZShkZXYs IFhlbmJ1c1N0YXRlQ2xvc2luZyk7CiAJCXdhaXRfZXZlbnQobW9kdWxlX3dxLAotCQkJICAgeGVu YnVzX3JlYWRfZHJpdmVyX3N0YXRlKGRldi0+b3RoZXJlbmQpID09CisJCQkgICB4ZW5idXNfcmVh ZF9kcml2ZXJfc3RhdGUoZGV2LCBkZXYtPm90aGVyZW5kKSA9PQogCQkJICAgWGVuYnVzU3RhdGVD bG9zaW5nIHx8Ci0JCQkgICB4ZW5idXNfcmVhZF9kcml2ZXJfc3RhdGUoZGV2LT5vdGhlcmVuZCkg PT0KKwkJCSAgIHhlbmJ1c19yZWFkX2RyaXZlcl9zdGF0ZShkZXYsIGRldi0+b3RoZXJlbmQpID09 CiAJCQkgICBYZW5idXNTdGF0ZVVua25vd24pOwogCiAJCXhlbmJ1c19zd2l0Y2hfc3RhdGUoZGV2 LCBYZW5idXNTdGF0ZUNsb3NlZCk7CiAJCXdhaXRfZXZlbnQobW9kdWxlX3dxLAotCQkJICAgeGVu YnVzX3JlYWRfZHJpdmVyX3N0YXRlKGRldi0+b3RoZXJlbmQpID09CisJCQkgICB4ZW5idXNfcmVh ZF9kcml2ZXJfc3RhdGUoZGV2LCBkZXYtPm90aGVyZW5kKSA9PQogCQkJICAgWGVuYnVzU3RhdGVD bG9zZWQgfHwKLQkJCSAgIHhlbmJ1c19yZWFkX2RyaXZlcl9zdGF0ZShkZXYtPm90aGVyZW5kKSA9 PQorCQkJICAgeGVuYnVzX3JlYWRfZHJpdmVyX3N0YXRlKGRldiwgZGV2LT5vdGhlcmVuZCkgPT0K IAkJCSAgIFhlbmJ1c1N0YXRlVW5rbm93bik7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Bj aS94ZW4tcGNpZnJvbnQuYyBiL2RyaXZlcnMvcGNpL3hlbi1wY2lmcm9udC5jCmluZGV4IGY4OTQy OTBlOGIzYS4uNGM3ZWYxZTA5ZWQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS94ZW4tcGNpZnJv bnQuYworKysgYi9kcml2ZXJzL3BjaS94ZW4tcGNpZnJvbnQuYwpAQCAtODYwLDcgKzg2MCw3IEBA IHN0YXRpYyBpbnQgcGNpZnJvbnRfdHJ5X2Nvbm5lY3Qoc3RydWN0IHBjaWZyb250X2RldmljZSAq cGRldikKIAogCiAJLyogT25seSBjb25uZWN0IG9uY2UgKi8KLQlpZiAoeGVuYnVzX3JlYWRfZHJp dmVyX3N0YXRlKHBkZXYtPnhkZXYtPm5vZGVuYW1lKSAhPQorCWlmICh4ZW5idXNfcmVhZF9kcml2 ZXJfc3RhdGUocGRldi0+eGRldiwgcGRldi0+eGRldi0+bm9kZW5hbWUpICE9CiAJICAgIFhlbmJ1 c1N0YXRlSW5pdGlhbGlzZWQpCiAJCWdvdG8gb3V0OwogCkBAIC04NzEsNyArODcxLDcgQEAgc3Rh dGljIGludCBwY2lmcm9udF90cnlfY29ubmVjdChzdHJ1Y3QgcGNpZnJvbnRfZGV2aWNlICpwZGV2 KQogCQlnb3RvIG91dDsKIAl9CiAKLQllcnIgPSB4ZW5idXNfc2NhbmYoWEJUX05JTCwgcGRldi0+ eGRldi0+b3RoZXJlbmQsCisJZXJyID0geGVuYnVzX3NjYW5mKHBkZXYtPnhkZXYtPnhoLCBYQlRf TklMLCBwZGV2LT54ZGV2LT5vdGhlcmVuZCwKIAkJCSAgICJyb290X251bSIsICIlZCIsICZudW1f cm9vdHMpOwogCWlmIChlcnIgPT0gLUVOT0VOVCkgewogCQl4ZW5idXNfZGV2X2Vycm9yKHBkZXYt PnhkZXYsIGVyciwKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2NwdV9ob3RwbHVnLmMgYi9kcml2 ZXJzL3hlbi9jcHVfaG90cGx1Zy5jCmluZGV4IGIxMzU3YWE0YmM1NS4uYWZlYjk0NDQ2ZDM0IDEw MDY0NAotLS0gYS9kcml2ZXJzL3hlbi9jcHVfaG90cGx1Zy5jCisrKyBiL2RyaXZlcnMveGVuL2Nw dV9ob3RwbHVnLmMKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGludCB2Y3B1X29ubGluZSh1bnNp Z25lZCBpbnQgY3B1KQogCWNoYXIgZGlyWzE2XSwgc3RhdGVbMTZdOwogCiAJc3ByaW50ZihkaXIs ICJjcHUvJXUiLCBjcHUpOwotCWVyciA9IHhlbmJ1c19zY2FuZihYQlRfTklMLCBkaXIsICJhdmFp bGFiaWxpdHkiLCAiJTE1cyIsIHN0YXRlKTsKKwllcnIgPSB4ZW5idXNfc2NhbmYoeGhfZGVmYXVs dCwgWEJUX05JTCwgZGlyLCAiYXZhaWxhYmlsaXR5IiwgIiUxNXMiLCBzdGF0ZSk7CiAJaWYgKGVy ciAhPSAxKSB7CiAJCWlmICgheGVuX2luaXRpYWxfZG9tYWluKCkpCiAJCQlwcl9lcnIoIlVuYWJs ZSB0byByZWFkIGNwdSBzdGF0ZVxuIik7CkBAIC05MCw3ICs5MCw3IEBAIHN0YXRpYyBpbnQgc2V0 dXBfY3B1X3dhdGNoZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpub3RpZmllciwKIAkJLm5vZGUg PSAiY3B1IiwKIAkJLmNhbGxiYWNrID0gaGFuZGxlX3ZjcHVfaG90cGx1Z19ldmVudH07CiAKLQko dm9pZClyZWdpc3Rlcl94ZW5idXNfd2F0Y2goJmNwdV93YXRjaCk7CisJKHZvaWQpcmVnaXN0ZXJf eGVuYnVzX3dhdGNoKHhoX2RlZmF1bHQsICZjcHVfd2F0Y2gpOwogCiAJZm9yX2VhY2hfcG9zc2li bGVfY3B1KGNwdSkgewogCQlpZiAodmNwdV9vbmxpbmUoY3B1KSA9PSAwKSB7CmRpZmYgLS1naXQg YS9kcml2ZXJzL3hlbi9tYW5hZ2UuYyBiL2RyaXZlcnMveGVuL21hbmFnZS5jCmluZGV4IDViYjAx YTYyZjIxNC4uOWE2OWQ5NTVkZDVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9tYW5hZ2UuYwor KysgYi9kcml2ZXJzL3hlbi9tYW5hZ2UuYwpAQCAtMjI3LDE0ICsyMjcsMTQgQEAgc3RhdGljIHZv aWQgc2h1dGRvd25faGFuZGxlcihzdHJ1Y3QgeGVuYnVzX3dhdGNoICp3YXRjaCwKIAkJcmV0dXJu OwogCiAgYWdhaW46Ci0JZXJyID0geGVuYnVzX3RyYW5zYWN0aW9uX3N0YXJ0KCZ4YnQpOworCWVy ciA9IHhlbmJ1c190cmFuc2FjdGlvbl9zdGFydCh4aF9kZWZhdWx0LCAmeGJ0KTsKIAlpZiAoZXJy KQogCQlyZXR1cm47CiAKLQlzdHIgPSAoY2hhciAqKXhlbmJ1c19yZWFkKHhidCwgImNvbnRyb2wi LCAic2h1dGRvd24iLCBOVUxMKTsKKwlzdHIgPSAoY2hhciAqKXhlbmJ1c19yZWFkKHhoX2RlZmF1 bHQsIHhidCwgImNvbnRyb2wiLCAic2h1dGRvd24iLCBOVUxMKTsKIAkvKiBJZ25vcmUgcmVhZCBl cnJvcnMgYW5kIGVtcHR5IHJlYWRzLiAqLwogCWlmIChYRU5CVVNfSVNfRVJSX1JFQUQoc3RyKSkg ewotCQl4ZW5idXNfdHJhbnNhY3Rpb25fZW5kKHhidCwgMSk7CisJCXhlbmJ1c190cmFuc2FjdGlv bl9lbmQoeGhfZGVmYXVsdCwgeGJ0LCAxKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtMjQ1LDkgKzI0 NSw5IEBAIHN0YXRpYyB2b2lkIHNodXRkb3duX2hhbmRsZXIoc3RydWN0IHhlbmJ1c193YXRjaCAq d2F0Y2gsCiAKIAkvKiBPbmx5IGFja25vd2xlZGdlIGNvbW1hbmRzIHdoaWNoIHdlIGFyZSBwcmVw YXJlZCB0byBoYW5kbGUuICovCiAJaWYgKGlkeCA8IEFSUkFZX1NJWkUoc2h1dGRvd25faGFuZGxl cnMpKQotCQl4ZW5idXNfd3JpdGUoeGJ0LCAiY29udHJvbCIsICJzaHV0ZG93biIsICIiKTsKKwkJ eGVuYnVzX3dyaXRlKHhoX2RlZmF1bHQsIHhidCwgImNvbnRyb2wiLCAic2h1dGRvd24iLCAiIik7 CiAKLQllcnIgPSB4ZW5idXNfdHJhbnNhY3Rpb25fZW5kKHhidCwgMCk7CisJZXJyID0geGVuYnVz X3RyYW5zYWN0aW9uX2VuZCh4aF9kZWZhdWx0LCB4YnQsIDApOwogCWlmIChlcnIgPT0gLUVBR0FJ TikgewogCQlrZnJlZShzdHIpOwogCQlnb3RvIGFnYWluOwpAQCAtMjcyLDEwICsyNzIsMTAgQEAg c3RhdGljIHZvaWQgc3lzcnFfaGFuZGxlcihzdHJ1Y3QgeGVuYnVzX3dhdGNoICp3YXRjaCwgY29u c3QgY2hhciAqcGF0aCwKIAlpbnQgZXJyOwogCiAgYWdhaW46Ci0JZXJyID0geGVuYnVzX3RyYW5z YWN0aW9uX3N0YXJ0KCZ4YnQpOworCWVyciA9IHhlbmJ1c190cmFuc2FjdGlvbl9zdGFydCh4aF9k ZWZhdWx0LCAmeGJ0KTsKIAlpZiAoZXJyKQogCQlyZXR1cm47Ci0JZXJyID0geGVuYnVzX3NjYW5m KHhidCwgImNvbnRyb2wiLCAic3lzcnEiLCAiJWMiLCAmc3lzcnFfa2V5KTsKKwllcnIgPSB4ZW5i dXNfc2NhbmYoeGhfZGVmYXVsdCwgeGJ0LCAiY29udHJvbCIsICJzeXNycSIsICIlYyIsICZzeXNy cV9rZXkpOwogCWlmIChlcnIgPCAwKSB7CiAJCS8qCiAJCSAqIFRoZSBYZW5zdG9yZSB3YXRjaCBm aXJlcyBkaXJlY3RseSBhZnRlciByZWdpc3RlcmluZyBpdCBhbmQKQEAgLTI4NywyMSArMjg3LDIx IEBAIHN0YXRpYyB2b2lkIHN5c3JxX2hhbmRsZXIoc3RydWN0IHhlbmJ1c193YXRjaCAqd2F0Y2gs IGNvbnN0IGNoYXIgKnBhdGgsCiAJCWlmIChlcnIgIT0gLUVOT0VOVCAmJiBlcnIgIT0gLUVSQU5H RSkKIAkJCXByX2VycigiRXJyb3IgJWQgcmVhZGluZyBzeXNycSBjb2RlIGluIGNvbnRyb2wvc3lz cnFcbiIsCiAJCQkgICAgICAgZXJyKTsKLQkJeGVuYnVzX3RyYW5zYWN0aW9uX2VuZCh4YnQsIDEp OworCQl4ZW5idXNfdHJhbnNhY3Rpb25fZW5kKHhoX2RlZmF1bHQsIHhidCwgMSk7CiAJCXJldHVy bjsKIAl9CiAKIAlpZiAoc3lzcnFfa2V5ICE9ICdcMCcpIHsKLQkJZXJyID0geGVuYnVzX3ByaW50 Zih4YnQsICJjb250cm9sIiwgInN5c3JxIiwgIiVjIiwgJ1wwJyk7CisJCWVyciA9IHhlbmJ1c19w cmludGYoeGhfZGVmYXVsdCwgeGJ0LCAiY29udHJvbCIsICJzeXNycSIsICIlYyIsICdcMCcpOwog CQlpZiAoZXJyKSB7CiAJCQlwcl9lcnIoIiVzOiBFcnJvciAlZCB3cml0aW5nIHN5c3JxIGluIGNv bnRyb2wvc3lzcnFcbiIsCiAJCQkgICAgICAgX19mdW5jX18sIGVycik7Ci0JCQl4ZW5idXNfdHJh bnNhY3Rpb25fZW5kKHhidCwgMSk7CisJCQl4ZW5idXNfdHJhbnNhY3Rpb25fZW5kKHhoX2RlZmF1 bHQsIHhidCwgMSk7CiAJCQlyZXR1cm47CiAJCX0KIAl9CiAKLQllcnIgPSB4ZW5idXNfdHJhbnNh Y3Rpb25fZW5kKHhidCwgMCk7CisJZXJyID0geGVuYnVzX3RyYW5zYWN0aW9uX2VuZCh4aF9kZWZh dWx0LCB4YnQsIDApOwogCWlmIChlcnIgPT0gLUVBR0FJTikKIAkJZ290byBhZ2FpbjsKIApAQCAt MzMxLDcgKzMzMSw3IEBAIHN0YXRpYyBpbnQgc2V0dXBfc2h1dGRvd25fd2F0Y2hlcih2b2lkKQog I2RlZmluZSBGRUFUVVJFX1BBVEhfU0laRSAoU0hVVERPV05fQ01EX1NJWkUgKyBzaXplb2YoImZl YXR1cmUtIikpCiAJY2hhciBub2RlW0ZFQVRVUkVfUEFUSF9TSVpFXTsKIAotCWVyciA9IHJlZ2lz dGVyX3hlbmJ1c193YXRjaCgmc2h1dGRvd25fd2F0Y2gpOworCWVyciA9IHJlZ2lzdGVyX3hlbmJ1 c193YXRjaCh4aF9kZWZhdWx0LCAmc2h1dGRvd25fd2F0Y2gpOwogCWlmIChlcnIpIHsKIAkJcHJf ZXJyKCJGYWlsZWQgdG8gc2V0IHNodXRkb3duIHdhdGNoZXJcbiIpOwogCQlyZXR1cm4gZXJyOwpA QCAtMzM5LDcgKzMzOSw3IEBAIHN0YXRpYyBpbnQgc2V0dXBfc2h1dGRvd25fd2F0Y2hlcih2b2lk KQogCiAKICNpZmRlZiBDT05GSUdfTUFHSUNfU1lTUlEKLQllcnIgPSByZWdpc3Rlcl94ZW5idXNf d2F0Y2goJnN5c3JxX3dhdGNoKTsKKwllcnIgPSByZWdpc3Rlcl94ZW5idXNfd2F0Y2goeGhfZGVm YXVsdCwgJnN5c3JxX3dhdGNoKTsKIAlpZiAoZXJyKSB7CiAJCXByX2VycigiRmFpbGVkIHRvIHNl dCBzeXNycSB3YXRjaGVyXG4iKTsKIAkJcmV0dXJuIGVycjsKQEAgLTM1MSw3ICszNTEsNyBAQCBz dGF0aWMgaW50IHNldHVwX3NodXRkb3duX3dhdGNoZXIodm9pZCkKIAkJCWNvbnRpbnVlOwogCQlz bnByaW50Zihub2RlLCBGRUFUVVJFX1BBVEhfU0laRSwgImZlYXR1cmUtJXMiLAogCQkJIHNodXRk b3duX2hhbmRsZXJzW2lkeF0uY29tbWFuZCk7Ci0JCWVyciA9IHhlbmJ1c19wcmludGYoWEJUX05J TCwgImNvbnRyb2wiLCBub2RlLCAiJXUiLCAxKTsKKwkJZXJyID0geGVuYnVzX3ByaW50Zih4aF9k ZWZhdWx0LCBYQlRfTklMLCAiY29udHJvbCIsIG5vZGUsICIldSIsIDEpOwogCQlpZiAoZXJyKSB7 CiAJCQlwcl9lcnIoIiVzOiBFcnJvciAlZCB3cml0aW5nICVzXG4iLCBfX2Z1bmNfXywKIAkJCQll cnIsIG5vZGUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4veGVuLWJhbGxvb24uYyBiL2RyaXZl cnMveGVuL3hlbi1iYWxsb29uLmMKaW5kZXggMmFjYmZlMTA0ZTQ2Li5kMzRkOWIxYWY3YTggMTAw NjQ0Ci0tLSBhL2RyaXZlcnMveGVuL3hlbi1iYWxsb29uLmMKKysrIGIvZHJpdmVycy94ZW4veGVu LWJhbGxvb24uYwpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgdm9pZCB3YXRjaF90YXJnZXQoc3Ry dWN0IHhlbmJ1c193YXRjaCAqd2F0Y2gsCiAJc3RhdGljIGJvb2wgd2F0Y2hfZmlyZWQ7CiAJc3Rh dGljIGxvbmcgdGFyZ2V0X2RpZmY7CiAKLQllcnIgPSB4ZW5idXNfc2NhbmYoWEJUX05JTCwgIm1l bW9yeSIsICJ0YXJnZXQiLCAiJWxsdSIsICZuZXdfdGFyZ2V0KTsKKwllcnIgPSB4ZW5idXNfc2Nh bmYoeGhfZGVmYXVsdCwgWEJUX05JTCwgIm1lbW9yeSIsICJ0YXJnZXQiLCAiJWxsdSIsICZuZXdf dGFyZ2V0KTsKIAlpZiAoZXJyICE9IDEpIHsKIAkJLyogVGhpcyBpcyBvayAoZm9yIGRvbWFpbjAg YXQgbGVhc3QpIC0gc28ganVzdCByZXR1cm4gKi8KIAkJcmV0dXJuOwpAQCAtNzcsOSArNzcsOSBA QCBzdGF0aWMgdm9pZCB3YXRjaF90YXJnZXQoc3RydWN0IHhlbmJ1c193YXRjaCAqd2F0Y2gsCiAJ aWYgKCF3YXRjaF9maXJlZCkgewogCQl3YXRjaF9maXJlZCA9IHRydWU7CiAKLQkJaWYgKCh4ZW5i dXNfc2NhbmYoWEJUX05JTCwgIm1lbW9yeSIsICJzdGF0aWMtbWF4IiwKKwkJaWYgKCh4ZW5idXNf c2NhbmYoeGhfZGVmYXVsdCwgWEJUX05JTCwgIm1lbW9yeSIsICJzdGF0aWMtbWF4IiwKIAkJCQkg ICIlbGx1IiwgJnN0YXRpY19tYXgpID09IDEpIHx8Ci0JCSAgICAoeGVuYnVzX3NjYW5mKFhCVF9O SUwsICJtZW1vcnkiLCAibWVtb3J5X3N0YXRpY19tYXgiLAorCQkgICAgKHhlbmJ1c19zY2FuZih4 aF9kZWZhdWx0LCBYQlRfTklMLCAibWVtb3J5IiwgIm1lbW9yeV9zdGF0aWNfbWF4IiwKIAkJCQkg ICIlbGx1IiwgJnN0YXRpY19tYXgpID09IDEpKQogCQkJc3RhdGljX21heCA+Pj0gUEFHRV9TSElG VCAtIDEwOwogCQllbHNlCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIGludCBiYWxsb29uX2lu aXRfd2F0Y2hlcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5vdGlmaWVyLAogewogCWludCBlcnI7 CiAKLQllcnIgPSByZWdpc3Rlcl94ZW5idXNfd2F0Y2goJnRhcmdldF93YXRjaCk7CisJZXJyID0g cmVnaXN0ZXJfeGVuYnVzX3dhdGNoKHhoX2RlZmF1bHQsICZ0YXJnZXRfd2F0Y2gpOwogCWlmIChl cnIpCiAJCXByX2VycigiRmFpbGVkIHRvIHNldCBiYWxsb29uIHdhdGNoZXJcbiIpOwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL3hlbi94ZW5idXMveGVuYnVzLmggYi9kcml2ZXJzL3hlbi94ZW5idXMv eGVuYnVzLmgKaW5kZXggMDkyOTgxMTcxZGYxLi4xODNjNmU0MGJkYWEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMveGVuL3hlbmJ1cy94ZW5idXMuaAorKysgYi9kcml2ZXJzL3hlbi94ZW5idXMveGVuYnVz LmgKQEAgLTM5LDkgKzM5LDExIEBACiAjZGVmaW5lIFhFTl9CVVNfSURfU0laRQkJCTIwCiAKIHN0 cnVjdCB4ZW5fYnVzX3R5cGUgeworCXhlbmhvc3RfdCAqeGg7CiAJY2hhciAqcm9vdDsKIAl1bnNp Z25lZCBpbnQgbGV2ZWxzOwotCWludCAoKmdldF9idXNfaWQpKGNoYXIgYnVzX2lkW1hFTl9CVVNf SURfU0laRV0sIGNvbnN0IGNoYXIgKm5vZGVuYW1lKTsKKwlpbnQgKCpnZXRfYnVzX2lkKShzdHJ1 Y3QgeGVuX2J1c190eXBlICpidXMsIGNoYXIgYnVzX2lkW1hFTl9CVVNfSURfU0laRV0sCisJCQkg IGNvbnN0IGNoYXIgKm5vZGVuYW1lKTsKIAlpbnQgKCpwcm9iZSkoc3RydWN0IHhlbl9idXNfdHlw ZSAqYnVzLCBjb25zdCBjaGFyICp0eXBlLAogCQkgICAgIGNvbnN0IGNoYXIgKmRpcik7CiAJdm9p ZCAoKm90aGVyZW5kX2NoYW5nZWQpKHN0cnVjdCB4ZW5idXNfd2F0Y2ggKndhdGNoLCBjb25zdCBj aGFyICpwYXRoLApAQCAtNDksMTMgKzUxLDMwIEBAIHN0cnVjdCB4ZW5fYnVzX3R5cGUgewogCXN0 cnVjdCBidXNfdHlwZSBidXM7CiB9OwogCi1lbnVtIHhlbnN0b3JlX2luaXQgewotCVhTX1VOS05P V04sCi0JWFNfUFYsCi0JWFNfSFZNLAotCVhTX0xPQ0FMLAorc3RydWN0IHhlbnN0b3JlX3ByaXZh dGUgeworCS8qIHhlbmJ1c19jb21tcy5jICovCisJc3RydWN0IHdvcmtfc3RydWN0IHByb2JlX3dv cms7CisJc3RydWN0IHdhaXRfcXVldWVfaGVhZCB4Yl93YWl0cTsKKwlzdHJ1Y3QgbGlzdF9oZWFk IHhiX3dyaXRlX2xpc3Q7CisJc3RydWN0IHRhc2tfc3RydWN0ICp4ZW5idXNfdGFzazsKKwlzdHJ1 Y3QgbGlzdF9oZWFkIHJlcGx5X2xpc3Q7CisJaW50IHhlbmJ1c19pcnE7CisKKwkvKiB4ZW5idXNf cHJvYmUuYyAqLworCXN0cnVjdCB4ZW5zdG9yZV9kb21haW5faW50ZXJmYWNlICpzdG9yZV9pbnRl cmZhY2U7CisJc3RydWN0IGJsb2NraW5nX25vdGlmaWVyX2hlYWQgeGVuc3RvcmVfY2hhaW47CisK KwllbnVtIHhlbnN0b3JlX2luaXQgZG9tYWluX3R5cGU7CisJeGVuX3Bmbl90IHN0b3JlX2dmbjsK Kwl1aW50MzJfdCBzdG9yZV9ldnRjaG47CisJaW50IHhlbnN0b3JlZF9yZWFkeTsKKworCS8qICB4 ZW5idXNfeHMuYyAqLworCXN0cnVjdCBsaXN0X2hlYWQgd2F0Y2hlczsgLyogeGVuaG9zdCBsb2Nh bCBzbyB3ZSBkb24ndCBtaXggdGhlbSB1cC4gKi8KIH07CiAKKyNkZWZpbmUgeHNfcHJpdih4aCkg KChzdHJ1Y3QgeGVuc3RvcmVfcHJpdmF0ZSAqKSAoeGgpLT54ZW5zdG9yZV9wcml2YXRlKQorCiBz dHJ1Y3QgeHNfd2F0Y2hfZXZlbnQgewogCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKIAl1bnNpZ25l ZCBpbnQgbGVuOwpAQCAtODcsMTggKzEwNiwxNCBAQCBzdHJ1Y3QgeGJfcmVxX2RhdGEgewogCXZv aWQgKnBhcjsKIH07CiAKLWV4dGVybiBlbnVtIHhlbnN0b3JlX2luaXQgeGVuX3N0b3JlX2RvbWFp bl90eXBlOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKnhlbmJ1c19kZXZf Z3JvdXBzW107CiBleHRlcm4gc3RydWN0IG11dGV4IHhzX3Jlc3BvbnNlX211dGV4OwotZXh0ZXJu IHN0cnVjdCBsaXN0X2hlYWQgeHNfcmVwbHlfbGlzdDsKLWV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFk IHhiX3dyaXRlX2xpc3Q7Ci1leHRlcm4gd2FpdF9xdWV1ZV9oZWFkX3QgeGJfd2FpdHE7CiBleHRl cm4gc3RydWN0IG11dGV4IHhiX3dyaXRlX211dGV4OwogCi1pbnQgeHNfaW5pdCh2b2lkKTsKLWlu dCB4Yl9pbml0X2NvbW1zKHZvaWQpOwotdm9pZCB4Yl9kZWluaXRfY29tbXModm9pZCk7Ci1pbnQg eHNfd2F0Y2hfbXNnKHN0cnVjdCB4c193YXRjaF9ldmVudCAqZXZlbnQpOworaW50IHhzX2luaXQo eGVuaG9zdF90ICp4aCk7CitpbnQgeGJfaW5pdF9jb21tcyh4ZW5ob3N0X3QgKnhoKTsKK3ZvaWQg eGJfZGVpbml0X2NvbW1zKHhlbmhvc3RfdCAqeGgpOworaW50IHhzX3dhdGNoX21zZyh4ZW5ob3N0 X3QgKnhoLCBzdHJ1Y3QgeHNfd2F0Y2hfZXZlbnQgKmV2ZW50KTsKIHZvaWQgeHNfcmVxdWVzdF9l eGl0KHN0cnVjdCB4Yl9yZXFfZGF0YSAqcmVxKTsKIAogaW50IHhlbmJ1c19tYXRjaChzdHJ1Y3Qg ZGV2aWNlICpfZGV2LCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqX2Rydik7CkBAIC0xMzAsNyArMTQ1 LDcgQEAgaW50IHhlbmJ1c19yZWFkX290aGVyZW5kX2RldGFpbHMoc3RydWN0IHhlbmJ1c19kZXZp Y2UgKnhlbmRldiwKIAogdm9pZCB4ZW5idXNfcmluZ19vcHNfaW5pdCh2b2lkKTsKIAotaW50IHhl bmJ1c19kZXZfcmVxdWVzdF9hbmRfcmVwbHkoc3RydWN0IHhzZF9zb2NrbXNnICptc2csIHZvaWQg KnBhcik7CitpbnQgeGVuYnVzX2Rldl9yZXF1ZXN0X2FuZF9yZXBseSh4ZW5ob3N0X3QgKnhoLCBz dHJ1Y3QgeHNkX3NvY2ttc2cgKm1zZywgdm9pZCAqcGFyKTsKIHZvaWQgeGVuYnVzX2Rldl9xdWV1 ZV9yZXBseShzdHJ1Y3QgeGJfcmVxX2RhdGEgKnJlcSk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1c19jbGllbnQuYyBiL2RyaXZlcnMveGVuL3hlbmJ1cy94 ZW5idXNfY2xpZW50LmMKaW5kZXggNTc0OGZiYWYwMjM4Li5lNGY4ZWNiOTQ5MGEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfY2xpZW50LmMKKysrIGIvZHJpdmVycy94ZW4v eGVuYnVzL3hlbmJ1c19jbGllbnQuYwpAQCAtMTIyLDcgKzEyMiw3IEBAIGludCB4ZW5idXNfd2F0 Y2hfcGF0aChzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2LCBjb25zdCBjaGFyICpwYXRoLAogCXdh dGNoLT5ub2RlID0gcGF0aDsKIAl3YXRjaC0+Y2FsbGJhY2sgPSBjYWxsYmFjazsKIAotCWVyciA9 IHJlZ2lzdGVyX3hlbmJ1c193YXRjaCh3YXRjaCk7CisJZXJyID0gcmVnaXN0ZXJfeGVuYnVzX3dh dGNoKGRldi0+eGgsIHdhdGNoKTsKIAogCWlmIChlcnIpIHsKIAkJd2F0Y2gtPm5vZGUgPSBOVUxM OwpAQCAtMjA2LDE3ICsyMDYsMTcgQEAgX194ZW5idXNfc3dpdGNoX3N0YXRlKHN0cnVjdCB4ZW5i dXNfZGV2aWNlICpkZXYsCiBhZ2FpbjoKIAlhYm9ydCA9IDE7CiAKLQllcnIgPSB4ZW5idXNfdHJh bnNhY3Rpb25fc3RhcnQoJnhidCk7CisJZXJyID0geGVuYnVzX3RyYW5zYWN0aW9uX3N0YXJ0KGRl di0+eGgsICZ4YnQpOwogCWlmIChlcnIpIHsKIAkJeGVuYnVzX3N3aXRjaF9mYXRhbChkZXYsIGRl cHRoLCBlcnIsICJzdGFydGluZyB0cmFuc2FjdGlvbiIpOwogCQlyZXR1cm4gMDsKIAl9CiAKLQll cnIgPSB4ZW5idXNfc2NhbmYoeGJ0LCBkZXYtPm5vZGVuYW1lLCAic3RhdGUiLCAiJWQiLCAmY3Vy cmVudF9zdGF0ZSk7CisJZXJyID0geGVuYnVzX3NjYW5mKGRldi0+eGgsIHhidCwgZGV2LT5ub2Rl bmFtZSwgInN0YXRlIiwgIiVkIiwgJmN1cnJlbnRfc3RhdGUpOwogCWlmIChlcnIgIT0gMSkKIAkJ Z290byBhYm9ydDsKIAotCWVyciA9IHhlbmJ1c19wcmludGYoeGJ0LCBkZXYtPm5vZGVuYW1lLCAi c3RhdGUiLCAiJWQiLCBzdGF0ZSk7CisJZXJyID0geGVuYnVzX3ByaW50ZihkZXYtPnhoLCB4YnQs IGRldi0+bm9kZW5hbWUsICJzdGF0ZSIsICIlZCIsIHN0YXRlKTsKIAlpZiAoZXJyKSB7CiAJCXhl bmJ1c19zd2l0Y2hfZmF0YWwoZGV2LCBkZXB0aCwgZXJyLCAid3JpdGluZyBuZXcgc3RhdGUiKTsK IAkJZ290byBhYm9ydDsKQEAgLTIyNCw3ICsyMjQsNyBAQCBfX3hlbmJ1c19zd2l0Y2hfc3RhdGUo c3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldiwKIAogCWFib3J0ID0gMDsKIGFib3J0OgotCWVyciA9 IHhlbmJ1c190cmFuc2FjdGlvbl9lbmQoeGJ0LCBhYm9ydCk7CisJZXJyID0geGVuYnVzX3RyYW5z YWN0aW9uX2VuZChkZXYtPnhoLCB4YnQsIGFib3J0KTsKIAlpZiAoZXJyKSB7CiAJCWlmIChlcnIg PT0gLUVBR0FJTiAmJiAhYWJvcnQpCiAJCQlnb3RvIGFnYWluOwpAQCAtMjc5LDcgKzI3OSw3IEBA IHN0YXRpYyB2b2lkIHhlbmJ1c192YV9kZXZfZXJyb3Ioc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRl diwgaW50IGVyciwKIAogCXBhdGhfYnVmZmVyID0ga2FzcHJpbnRmKEdGUF9LRVJORUwsICJlcnJv ci8lcyIsIGRldi0+bm9kZW5hbWUpOwogCWlmIChwYXRoX2J1ZmZlcikKLQkJeGVuYnVzX3dyaXRl KFhCVF9OSUwsIHBhdGhfYnVmZmVyLCAiZXJyb3IiLCBwcmludGZfYnVmZmVyKTsKKwkJeGVuYnVz X3dyaXRlKGRldi0+eGgsIFhCVF9OSUwsIHBhdGhfYnVmZmVyLCAiZXJyb3IiLCBwcmludGZfYnVm ZmVyKTsKIAogCWtmcmVlKHByaW50Zl9idWZmZXIpOwogCWtmcmVlKHBhdGhfYnVmZmVyKTsKQEAg LTM2Myw3ICszNjMsNyBAQCBpbnQgeGVuYnVzX2dyYW50X3Jpbmcoc3RydWN0IHhlbmJ1c19kZXZp Y2UgKmRldiwgdm9pZCAqdmFkZHIsCiAJaW50IGksIGo7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnJf cGFnZXM7IGkrKykgewotCQllcnIgPSBnbnR0YWJfZ3JhbnRfZm9yZWlnbl9hY2Nlc3MoZGV2LT5v dGhlcmVuZF9pZCwKKwkJZXJyID0gZ250dGFiX2dyYW50X2ZvcmVpZ25fYWNjZXNzKGRldi0+eGgs IGRldi0+b3RoZXJlbmRfaWQsCiAJCQkJCQkgIHZpcnRfdG9fZ2ZuKHZhZGRyKSwgMCk7CiAJCWlm IChlcnIgPCAwKSB7CiAJCQl4ZW5idXNfZGV2X2ZhdGFsKGRldiwgZXJyLApAQCAtMzc5LDcgKzM3 OSw3IEBAIGludCB4ZW5idXNfZ3JhbnRfcmluZyhzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2LCB2 b2lkICp2YWRkciwKIAogZmFpbDoKIAlmb3IgKGogPSAwOyBqIDwgaTsgaisrKQotCQlnbnR0YWJf ZW5kX2ZvcmVpZ25fYWNjZXNzX3JlZihncmVmc1tqXSwgMCk7CisJCWdudHRhYl9lbmRfZm9yZWln bl9hY2Nlc3NfcmVmKGRldi0+eGgsIGdyZWZzW2pdLCAwKTsKIAlyZXR1cm4gZXJyOwogfQogRVhQ T1JUX1NZTUJPTF9HUEwoeGVuYnVzX2dyYW50X3JpbmcpOwpAQCAtMzk5LDcgKzM5OSw3IEBAIGlu dCB4ZW5idXNfYWxsb2NfZXZ0Y2huKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYsIGludCAqcG9y dCkKIAlhbGxvY191bmJvdW5kLmRvbSA9IERPTUlEX1NFTEY7CiAJYWxsb2NfdW5ib3VuZC5yZW1v dGVfZG9tID0gZGV2LT5vdGhlcmVuZF9pZDsKIAotCWVyciA9IEhZUEVSVklTT1JfZXZlbnRfY2hh bm5lbF9vcChFVlRDSE5PUF9hbGxvY191bmJvdW5kLAorCWVyciA9IGh5cGVydmlzb3JfZXZlbnRf Y2hhbm5lbF9vcChkZXYtPnhoLCBFVlRDSE5PUF9hbGxvY191bmJvdW5kLAogCQkJCQkgICZhbGxv Y191bmJvdW5kKTsKIAlpZiAoZXJyKQogCQl4ZW5idXNfZGV2X2ZhdGFsKGRldiwgZXJyLCAiYWxs b2NhdGluZyBldmVudCBjaGFubmVsIik7CkBAIC00MjEsNyArNDIxLDcgQEAgaW50IHhlbmJ1c19m cmVlX2V2dGNobihzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2LCBpbnQgcG9ydCkKIAogCWNsb3Nl LnBvcnQgPSBwb3J0OwogCi0JZXJyID0gSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wKEVWVENI Tk9QX2Nsb3NlLCAmY2xvc2UpOworCWVyciA9IGh5cGVydmlzb3JfZXZlbnRfY2hhbm5lbF9vcChk ZXYtPnhoLCBFVlRDSE5PUF9jbG9zZSwgJmNsb3NlKTsKIAlpZiAoZXJyKQogCQl4ZW5idXNfZGV2 X2Vycm9yKGRldiwgZXJyLCAiZnJlZWluZyBldmVudCBjaGFubmVsICVkIiwgcG9ydCk7CiAKQEAg LTQ3OCw3ICs0NzgsNyBAQCBzdGF0aWMgaW50IF9feGVuYnVzX21hcF9yaW5nKHN0cnVjdCB4ZW5i dXNfZGV2aWNlICpkZXYsCiAJCWhhbmRsZXNbaV0gPSBJTlZBTElEX0dSQU5UX0hBTkRMRTsKIAl9 CiAKLQlnbnR0YWJfYmF0Y2hfbWFwKG1hcCwgaSk7CisJZ250dGFiX2JhdGNoX21hcChkZXYtPnho LCBtYXAsIGkpOwogCiAJZm9yIChpID0gMDsgaSA8IG5yX2dyZWZzOyBpKyspIHsKIAkJaWYgKG1h cFtpXS5zdGF0dXMgIT0gR05UU1Rfb2theSkgewpAQCAtNTAzLDcgKzUwMyw3IEBAIHN0YXRpYyBp bnQgX194ZW5idXNfbWFwX3Jpbmcoc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldiwKIAkJfQogCX0K IAotCWlmIChIWVBFUlZJU09SX2dyYW50X3RhYmxlX29wKEdOVFRBQk9QX3VubWFwX2dyYW50X3Jl ZiwgdW5tYXAsIGopKQorCWlmIChoeXBlcnZpc29yX2dyYW50X3RhYmxlX29wKGRldi0+eGgsIEdO VFRBQk9QX3VubWFwX2dyYW50X3JlZiwgdW5tYXAsIGopKQogCQlCVUcoKTsKIAogCSpsZWFrZWQg PSBmYWxzZTsKQEAgLTc2MSw3ICs3NjEsNyBAQCBzdGF0aWMgaW50IHhlbmJ1c191bm1hcF9yaW5n X3ZmcmVlX3B2KHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYsIHZvaWQgKnZhZGRyKQogCQl1bm1h cFtpXS5oYW5kbGUgPSBub2RlLT5oYW5kbGVzW2ldOwogCX0KIAotCWlmIChIWVBFUlZJU09SX2dy YW50X3RhYmxlX29wKEdOVFRBQk9QX3VubWFwX2dyYW50X3JlZiwgdW5tYXAsIGkpKQorCWlmICho eXBlcnZpc29yX2dyYW50X3RhYmxlX29wKGRldi0+eGgsIEdOVFRBQk9QX3VubWFwX2dyYW50X3Jl ZiwgdW5tYXAsIGkpKQogCQlCVUcoKTsKIAogCWVyciA9IEdOVFNUX29rYXk7CkBAIC04ODQsNyAr ODg0LDcgQEAgaW50IHhlbmJ1c191bm1hcF9yaW5nKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYs CiAJCWdudHRhYl9zZXRfdW5tYXBfb3AoJnVubWFwW2ldLCB2YWRkcnNbaV0sCiAJCQkJICAgIEdO VE1BUF9ob3N0X21hcCwgaGFuZGxlc1tpXSk7CiAKLQlpZiAoSFlQRVJWSVNPUl9ncmFudF90YWJs ZV9vcChHTlRUQUJPUF91bm1hcF9ncmFudF9yZWYsIHVubWFwLCBpKSkKKwlpZiAoaHlwZXJ2aXNv cl9ncmFudF90YWJsZV9vcChkZXYtPnhoLCBHTlRUQUJPUF91bm1hcF9ncmFudF9yZWYsIHVubWFw LCBpKSkKIAkJQlVHKCk7CiAKIAllcnIgPSBHTlRTVF9va2F5OwpAQCAtOTEwLDEwICs5MTAsMTAg QEAgRVhQT1JUX1NZTUJPTF9HUEwoeGVuYnVzX3VubWFwX3JpbmcpOwogICogUmV0dXJuIHRoZSBz dGF0ZSBvZiB0aGUgZHJpdmVyIHJvb3RlZCBhdCB0aGUgZ2l2ZW4gc3RvcmUgcGF0aCwgb3IKICAq IFhlbmJ1c1N0YXRlVW5rbm93biBpZiBubyBzdGF0ZSBjYW4gYmUgcmVhZC4KICAqLwotZW51bSB4 ZW5idXNfc3RhdGUgeGVuYnVzX3JlYWRfZHJpdmVyX3N0YXRlKGNvbnN0IGNoYXIgKnBhdGgpCitl bnVtIHhlbmJ1c19zdGF0ZSB4ZW5idXNfcmVhZF9kcml2ZXJfc3RhdGUoc3RydWN0IHhlbmJ1c19k ZXZpY2UgKmRldiwgY29uc3QgY2hhciAqcGF0aCkKIHsKIAllbnVtIHhlbmJ1c19zdGF0ZSByZXN1 bHQ7Ci0JaW50IGVyciA9IHhlbmJ1c19nYXRoZXIoWEJUX05JTCwgcGF0aCwgInN0YXRlIiwgIiVk IiwgJnJlc3VsdCwgTlVMTCk7CisJaW50IGVyciA9IHhlbmJ1c19nYXRoZXIoZGV2LT54aCwgWEJU X05JTCwgcGF0aCwgInN0YXRlIiwgIiVkIiwgJnJlc3VsdCwgTlVMTCk7CiAJaWYgKGVycikKIAkJ cmVzdWx0ID0gWGVuYnVzU3RhdGVVbmtub3duOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi94 ZW5idXMveGVuYnVzX2NvbW1zLmMgYi9kcml2ZXJzL3hlbi94ZW5idXMveGVuYnVzX2NvbW1zLmMK aW5kZXggYWNiYzM2NmMxNzE3Li4yNDk0YWUxYTBhN2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVu L3hlbmJ1cy94ZW5idXNfY29tbXMuYworKysgYi9kcml2ZXJzL3hlbi94ZW5idXMveGVuYnVzX2Nv bW1zLmMKQEAgLTQzLDMxICs0MywyMSBAQAogI2luY2x1ZGUgPHhlbi9wYWdlLmg+CiAjaW5jbHVk ZSAieGVuYnVzLmgiCiAKLS8qIEEgbGlzdCBvZiByZXBsaWVzLiBDdXJyZW50bHkgb25seSBvbmUg d2lsbCBldmVyIGJlIG91dHN0YW5kaW5nLiAqLwotTElTVF9IRUFEKHhzX3JlcGx5X2xpc3QpOwot Ci0vKiBBIGxpc3Qgb2Ygd3JpdGUgcmVxdWVzdHMuICovCi1MSVNUX0hFQUQoeGJfd3JpdGVfbGlz dCk7Ci1ERUNMQVJFX1dBSVRfUVVFVUVfSEVBRCh4Yl93YWl0cSk7CiBERUZJTkVfTVVURVgoeGJf d3JpdGVfbXV0ZXgpOwogCiAvKiBQcm90ZWN0IHhlbmJ1cyByZWFkZXIgdGhyZWFkIGFnYWluc3Qg c2F2ZS9yZXN0b3JlLiAqLwogREVGSU5FX01VVEVYKHhzX3Jlc3BvbnNlX211dGV4KTsKIAotc3Rh dGljIGludCB4ZW5idXNfaXJxOwotc3RhdGljIHN0cnVjdCB0YXNrX3N0cnVjdCAqeGVuYnVzX3Rh c2s7Ci0KLXN0YXRpYyBERUNMQVJFX1dPUksocHJvYmVfd29yaywgeGVuYnVzX3Byb2JlKTsKLQot Ci1zdGF0aWMgaXJxcmV0dXJuX3Qgd2FrZV93YWl0aW5nKGludCBpcnEsIHZvaWQgKnVudXNlZCkK K3N0YXRpYyBpcnFyZXR1cm5fdCB3YWtlX3dhaXRpbmcoaW50IGlycSwgdm9pZCAqX3hzKQogewot CWlmICh1bmxpa2VseSh4ZW5zdG9yZWRfcmVhZHkgPT0gMCkpIHsKLQkJeGVuc3RvcmVkX3JlYWR5 ID0gMTsKLQkJc2NoZWR1bGVfd29yaygmcHJvYmVfd29yayk7CisJc3RydWN0IHhlbnN0b3JlX3By aXZhdGUgKnhzID0gKHN0cnVjdCB4ZW5zdG9yZV9wcml2YXRlICopIF94czsKKworCWlmICh1bmxp a2VseSh4cy0+eGVuc3RvcmVkX3JlYWR5ID09IDApKSB7CisJCQl4cy0+eGVuc3RvcmVkX3JlYWR5 ID0gMTsKKwkJCXNjaGVkdWxlX3dvcmsoJnhzLT5wcm9iZV93b3JrKTsKIAl9CiAKLQl3YWtlX3Vw KCZ4Yl93YWl0cSk7CisJd2FrZV91cCgmeHMtPnhiX3dhaXRxKTsKIAlyZXR1cm4gSVJRX0hBTkRM RUQ7CiB9CiAKQEAgLTk2LDI0ICs4NiwyNiBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqZ2V0X2lucHV0 X2NodW5rKFhFTlNUT1JFX1JJTkdfSURYIGNvbnMsCiAJcmV0dXJuIGJ1ZiArIE1BU0tfWEVOU1RP UkVfSURYKGNvbnMpOwogfQogCi1zdGF0aWMgaW50IHhiX2RhdGFfdG9fd3JpdGUodm9pZCkKK3N0 YXRpYyBpbnQgeGJfZGF0YV90b193cml0ZShzdHJ1Y3QgeGVuc3RvcmVfcHJpdmF0ZSAqeHMpCiB7 Ci0Jc3RydWN0IHhlbnN0b3JlX2RvbWFpbl9pbnRlcmZhY2UgKmludGYgPSB4ZW5fc3RvcmVfaW50 ZXJmYWNlOworCXN0cnVjdCB4ZW5zdG9yZV9kb21haW5faW50ZXJmYWNlICppbnRmID0geHMtPnN0 b3JlX2ludGVyZmFjZTsKIAogCXJldHVybiAoaW50Zi0+cmVxX3Byb2QgLSBpbnRmLT5yZXFfY29u cykgIT0gWEVOU1RPUkVfUklOR19TSVpFICYmCi0JCSFsaXN0X2VtcHR5KCZ4Yl93cml0ZV9saXN0 KTsKKwkJIWxpc3RfZW1wdHkoJnhzLT54Yl93cml0ZV9saXN0KTsKIH0KIAogLyoqCiAgKiB4Yl93 cml0ZSAtIGxvdyBsZXZlbCB3cml0ZQorICogQHhoOiB4ZW5ob3N0IHRvIHNlbmQgdG8KICAqIEBk YXRhOiBidWZmZXIgdG8gc2VuZAogICogQGxlbjogbGVuZ3RoIG9mIGJ1ZmZlcgogICoKICAqIFJl dHVybnMgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gb3IgLWVyci4KICAqLwotc3RhdGljIGludCB4 Yl93cml0ZShjb25zdCB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgbGVuKQorc3RhdGljIGludCB4 Yl93cml0ZSh4ZW5ob3N0X3QgKnhoLCBjb25zdCB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgbGVu KQogewotCXN0cnVjdCB4ZW5zdG9yZV9kb21haW5faW50ZXJmYWNlICppbnRmID0geGVuX3N0b3Jl X2ludGVyZmFjZTsKKwlzdHJ1Y3QgeGVuc3RvcmVfcHJpdmF0ZSAqeHMgPSB4c19wcml2KHhoKTsK KwlzdHJ1Y3QgeGVuc3RvcmVfZG9tYWluX2ludGVyZmFjZSAqaW50ZiA9IHhzLT5zdG9yZV9pbnRl cmZhY2U7CiAJWEVOU1RPUkVfUklOR19JRFggY29ucywgcHJvZDsKIAl1bnNpZ25lZCBpbnQgYnl0 ZXMgPSAwOwogCkBAIC0xMjgsNyArMTIwLDcgQEAgc3RhdGljIGludCB4Yl93cml0ZShjb25zdCB2 b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgbGVuKQogCQkJaW50Zi0+cmVxX2NvbnMgPSBpbnRmLT5y ZXFfcHJvZCA9IDA7CiAJCQlyZXR1cm4gLUVJTzsKIAkJfQotCQlpZiAoIXhiX2RhdGFfdG9fd3Jp dGUoKSkKKwkJaWYgKCF4Yl9kYXRhX3RvX3dyaXRlKHhzKSkKIAkJCXJldHVybiBieXRlczsKIAog CQkvKiBNdXN0IHdyaXRlIGRhdGEgL2FmdGVyLyByZWFkaW5nIHRoZSBjb25zdW1lciBpbmRleC4g Ki8KQEAgLTE1MSwyMSArMTQzLDIyIEBAIHN0YXRpYyBpbnQgeGJfd3JpdGUoY29uc3Qgdm9pZCAq ZGF0YSwgdW5zaWduZWQgaW50IGxlbikKIAogCQkvKiBJbXBsaWVzIG1iKCk6IG90aGVyIHNpZGUg d2lsbCBzZWUgdGhlIHVwZGF0ZWQgcHJvZHVjZXIuICovCiAJCWlmIChwcm9kIDw9IGludGYtPnJl cV9jb25zKQotCQkJbm90aWZ5X3JlbW90ZV92aWFfZXZ0Y2huKHhoX2RlZmF1bHQsIHhlbl9zdG9y ZV9ldnRjaG4pOworCQkJbm90aWZ5X3JlbW90ZV92aWFfZXZ0Y2huKHhoLCB4cy0+c3RvcmVfZXZ0 Y2huKTsKIAl9CiAKIAlyZXR1cm4gYnl0ZXM7CiB9CiAKLXN0YXRpYyBpbnQgeGJfZGF0YV90b19y ZWFkKHZvaWQpCitzdGF0aWMgaW50IHhiX2RhdGFfdG9fcmVhZChzdHJ1Y3QgeGVuc3RvcmVfcHJp dmF0ZSAqeHMpCiB7Ci0Jc3RydWN0IHhlbnN0b3JlX2RvbWFpbl9pbnRlcmZhY2UgKmludGYgPSB4 ZW5fc3RvcmVfaW50ZXJmYWNlOworCXN0cnVjdCB4ZW5zdG9yZV9kb21haW5faW50ZXJmYWNlICpp bnRmID0geHMtPnN0b3JlX2ludGVyZmFjZTsKIAlyZXR1cm4gKGludGYtPnJzcF9jb25zICE9IGlu dGYtPnJzcF9wcm9kKTsKIH0KIAotc3RhdGljIGludCB4Yl9yZWFkKHZvaWQgKmRhdGEsIHVuc2ln bmVkIGludCBsZW4pCitzdGF0aWMgaW50IHhiX3JlYWQoeGVuaG9zdF90ICp4aCwgdm9pZCAqZGF0 YSwgdW5zaWduZWQgaW50IGxlbikKIHsKLQlzdHJ1Y3QgeGVuc3RvcmVfZG9tYWluX2ludGVyZmFj ZSAqaW50ZiA9IHhlbl9zdG9yZV9pbnRlcmZhY2U7CisJc3RydWN0IHhlbnN0b3JlX3ByaXZhdGUg KnhzID0geHNfcHJpdih4aCk7CisJc3RydWN0IHhlbnN0b3JlX2RvbWFpbl9pbnRlcmZhY2UgKmlu dGYgPSB4cy0+c3RvcmVfaW50ZXJmYWNlOwogCVhFTlNUT1JFX1JJTkdfSURYIGNvbnMsIHByb2Q7 CiAJdW5zaWduZWQgaW50IGJ5dGVzID0gMDsKIApAQCAtMjA0LDE0ICsxOTcsMTUgQEAgc3RhdGlj IGludCB4Yl9yZWFkKHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBsZW4pCiAKIAkJLyogSW1wbGll cyBtYigpOiBvdGhlciBzaWRlIHdpbGwgc2VlIHRoZSB1cGRhdGVkIGNvbnN1bWVyLiAqLwogCQlp ZiAoaW50Zi0+cnNwX3Byb2QgLSBjb25zID49IFhFTlNUT1JFX1JJTkdfU0laRSkKLQkJCW5vdGlm eV9yZW1vdGVfdmlhX2V2dGNobih4aF9kZWZhdWx0LCB4ZW5fc3RvcmVfZXZ0Y2huKTsKKwkJCW5v dGlmeV9yZW1vdGVfdmlhX2V2dGNobih4aCwgeHMtPnN0b3JlX2V2dGNobik7CiAJfQogCiAJcmV0 dXJuIGJ5dGVzOwogfQogCi1zdGF0aWMgaW50IHByb2Nlc3NfbXNnKHZvaWQpCitzdGF0aWMgaW50 IHByb2Nlc3NfbXNnKHhlbmhvc3RfdCAqeGgpCiB7CisJc3RydWN0IHhlbnN0b3JlX3ByaXZhdGUg KnhzID0geHNfcHJpdih4aCk7CiAJc3RhdGljIHN0cnVjdCB7CiAJCXN0cnVjdCB4c2Rfc29ja21z ZyBtc2c7CiAJCWNoYXIgKmJvZHk7CkBAIC0yNDIsNyArMjM2LDcgQEAgc3RhdGljIGludCBwcm9j ZXNzX21zZyh2b2lkKQogCQkgKi8KIAkJbXV0ZXhfbG9jaygmeHNfcmVzcG9uc2VfbXV0ZXgpOwog Ci0JCWlmICgheGJfZGF0YV90b19yZWFkKCkpIHsKKwkJaWYgKCF4Yl9kYXRhX3RvX3JlYWQoeGgt PnhlbnN0b3JlX3ByaXZhdGUpKSB7CiAJCQkvKiBXZSByYWNlZCB3aXRoIHNhdmUvcmVzdG9yZTog cGVuZGluZyBkYXRhICdnb25lJy4gKi8KIAkJCW11dGV4X3VubG9jaygmeHNfcmVzcG9uc2VfbXV0 ZXgpOwogCQkJc3RhdGUuaW5fbXNnID0gZmFsc2U7CkBAIC0yNTIsNyArMjQ2LDcgQEAgc3RhdGlj IGludCBwcm9jZXNzX21zZyh2b2lkKQogCiAJaWYgKHN0YXRlLmluX2hkcikgewogCQlpZiAoc3Rh dGUucmVhZCAhPSBzaXplb2Yoc3RhdGUubXNnKSkgewotCQkJZXJyID0geGJfcmVhZCgodm9pZCAq KSZzdGF0ZS5tc2cgKyBzdGF0ZS5yZWFkLAorCQkJZXJyID0geGJfcmVhZCh4aCwgKHZvaWQgKikm c3RhdGUubXNnICsgc3RhdGUucmVhZCwKIAkJCQkgICAgICBzaXplb2Yoc3RhdGUubXNnKSAtIHN0 YXRlLnJlYWQpOwogCQkJaWYgKGVyciA8IDApCiAJCQkJZ290byBvdXQ7CkBAIC0yODEsNyArMjc1 LDcgQEAgc3RhdGljIGludCBwcm9jZXNzX21zZyh2b2lkKQogCQlzdGF0ZS5yZWFkID0gMDsKIAl9 CiAKLQllcnIgPSB4Yl9yZWFkKHN0YXRlLmJvZHkgKyBzdGF0ZS5yZWFkLCBzdGF0ZS5tc2cubGVu IC0gc3RhdGUucmVhZCk7CisJZXJyID0geGJfcmVhZCh4aCwgc3RhdGUuYm9keSArIHN0YXRlLnJl YWQsIHN0YXRlLm1zZy5sZW4gLSBzdGF0ZS5yZWFkKTsKIAlpZiAoZXJyIDwgMCkKIAkJZ290byBv dXQ7CiAKQEAgLTI5MywxMSArMjg3LDExIEBAIHN0YXRpYyBpbnQgcHJvY2Vzc19tc2codm9pZCkK IAogCWlmIChzdGF0ZS5tc2cudHlwZSA9PSBYU19XQVRDSF9FVkVOVCkgewogCQlzdGF0ZS53YXRj aC0+bGVuID0gc3RhdGUubXNnLmxlbjsKLQkJZXJyID0geHNfd2F0Y2hfbXNnKHN0YXRlLndhdGNo KTsKKwkJZXJyID0geHNfd2F0Y2hfbXNnKHhoLCBzdGF0ZS53YXRjaCk7CiAJfSBlbHNlIHsKIAkJ ZXJyID0gLUVOT0VOVDsKIAkJbXV0ZXhfbG9jaygmeGJfd3JpdGVfbXV0ZXgpOwotCQlsaXN0X2Zv cl9lYWNoX2VudHJ5KHJlcSwgJnhzX3JlcGx5X2xpc3QsIGxpc3QpIHsKKwkJbGlzdF9mb3JfZWFj aF9lbnRyeShyZXEsICZ4cy0+cmVwbHlfbGlzdCwgbGlzdCkgewogCQkJaWYgKHJlcS0+bXNnLnJl cV9pZCA9PSBzdGF0ZS5tc2cucmVxX2lkKSB7CiAJCQkJbGlzdF9kZWwoJnJlcS0+bGlzdCk7CiAJ CQkJZXJyID0gMDsKQEAgLTMzMyw4ICszMjcsOSBAQCBzdGF0aWMgaW50IHByb2Nlc3NfbXNnKHZv aWQpCiAJcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIGludCBwcm9jZXNzX3dyaXRlcyh2b2lkKQor c3RhdGljIGludCBwcm9jZXNzX3dyaXRlcyh4ZW5ob3N0X3QgKnhoKQogeworCXN0cnVjdCB4ZW5z dG9yZV9wcml2YXRlICp4cyA9IHhzX3ByaXYoeGgpOwogCXN0YXRpYyBzdHJ1Y3QgewogCQlzdHJ1 Y3QgeGJfcmVxX2RhdGEgKnJlcTsKIAkJaW50IGlkeDsKQEAgLTM0NCwxMyArMzM5LDEzIEBAIHN0 YXRpYyBpbnQgcHJvY2Vzc193cml0ZXModm9pZCkKIAl1bnNpZ25lZCBpbnQgbGVuOwogCWludCBl cnIgPSAwOwogCi0JaWYgKCF4Yl9kYXRhX3RvX3dyaXRlKCkpCisJaWYgKCF4Yl9kYXRhX3RvX3dy aXRlKHhzKSkKIAkJcmV0dXJuIDA7CiAKIAltdXRleF9sb2NrKCZ4Yl93cml0ZV9tdXRleCk7CiAK IAlpZiAoIXN0YXRlLnJlcSkgewotCQlzdGF0ZS5yZXEgPSBsaXN0X2ZpcnN0X2VudHJ5KCZ4Yl93 cml0ZV9saXN0LAorCQlzdGF0ZS5yZXEgPSBsaXN0X2ZpcnN0X2VudHJ5KCZ4cy0+eGJfd3JpdGVf bGlzdCwKIAkJCQkJICAgICBzdHJ1Y3QgeGJfcmVxX2RhdGEsIGxpc3QpOwogCQlzdGF0ZS5pZHgg PSAtMTsKIAkJc3RhdGUud3JpdHRlbiA9IDA7CkBAIC0zNjcsNyArMzYyLDcgQEAgc3RhdGljIGlu dCBwcm9jZXNzX3dyaXRlcyh2b2lkKQogCQkJYmFzZSA9IHN0YXRlLnJlcS0+dmVjW3N0YXRlLmlk eF0uaW92X2Jhc2U7CiAJCQlsZW4gPSBzdGF0ZS5yZXEtPnZlY1tzdGF0ZS5pZHhdLmlvdl9sZW47 CiAJCX0KLQkJZXJyID0geGJfd3JpdGUoYmFzZSArIHN0YXRlLndyaXR0ZW4sIGxlbiAtIHN0YXRl LndyaXR0ZW4pOworCQllcnIgPSB4Yl93cml0ZSh4aCwgYmFzZSArIHN0YXRlLndyaXR0ZW4sIGxl biAtIHN0YXRlLndyaXR0ZW4pOwogCQlpZiAoZXJyIDwgMCkKIAkJCWdvdG8gb3V0X2VycjsKIAkJ c3RhdGUud3JpdHRlbiArPSBlcnI7CkBAIC0zODAsNyArMzc1LDcgQEAgc3RhdGljIGludCBwcm9j ZXNzX3dyaXRlcyh2b2lkKQogCiAJbGlzdF9kZWwoJnN0YXRlLnJlcS0+bGlzdCk7CiAJc3RhdGUu cmVxLT5zdGF0ZSA9IHhiX3JlcV9zdGF0ZV93YWl0X3JlcGx5OwotCWxpc3RfYWRkX3RhaWwoJnN0 YXRlLnJlcS0+bGlzdCwgJnhzX3JlcGx5X2xpc3QpOworCWxpc3RfYWRkX3RhaWwoJnN0YXRlLnJl cS0+bGlzdCwgJnhzLT5yZXBseV9saXN0KTsKIAlzdGF0ZS5yZXEgPSBOVUxMOwogCiAgb3V0OgpA QCAtNDA2LDQyICs0MDEsNDUgQEAgc3RhdGljIGludCBwcm9jZXNzX3dyaXRlcyh2b2lkKQogCXJl dHVybiBlcnI7CiB9CiAKLXN0YXRpYyBpbnQgeGJfdGhyZWFkX3dvcmsodm9pZCkKK3N0YXRpYyBp bnQgeGJfdGhyZWFkX3dvcmsoc3RydWN0IHhlbnN0b3JlX3ByaXZhdGUgKnhzKQogewotCXJldHVy biB4Yl9kYXRhX3RvX3JlYWQoKSB8fCB4Yl9kYXRhX3RvX3dyaXRlKCk7CisJcmV0dXJuIHhiX2Rh dGFfdG9fcmVhZCh4cykgfHwgeGJfZGF0YV90b193cml0ZSh4cyk7CiB9CiAKLXN0YXRpYyBpbnQg eGVuYnVzX3RocmVhZCh2b2lkICp1bnVzZWQpCitzdGF0aWMgaW50IHhlbmJ1c190aHJlYWQodm9p ZCAqX3hoKQogeworCXhlbmhvc3RfdCAqeGggPSAoeGVuaG9zdF90ICopX3hoOworCXN0cnVjdCB4 ZW5zdG9yZV9wcml2YXRlICp4cyA9IHhzX3ByaXYoeGgpOwogCWludCBlcnI7CiAKIAl3aGlsZSAo IWt0aHJlYWRfc2hvdWxkX3N0b3AoKSkgewotCQlpZiAod2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxl KHhiX3dhaXRxLCB4Yl90aHJlYWRfd29yaygpKSkKKwkJaWYgKHdhaXRfZXZlbnRfaW50ZXJydXB0 aWJsZSh4cy0+eGJfd2FpdHEsIHhiX3RocmVhZF93b3JrKHhzKSkpCiAJCQljb250aW51ZTsKIAot CQllcnIgPSBwcm9jZXNzX21zZygpOworCQllcnIgPSBwcm9jZXNzX21zZyh4aCk7CiAJCWlmIChl cnIgPT0gLUVOT01FTSkKIAkJCXNjaGVkdWxlKCk7CiAJCWVsc2UgaWYgKGVycikKIAkJCXByX3dh cm5fcmF0ZWxpbWl0ZWQoImVycm9yICVkIHdoaWxlIHJlYWRpbmcgbWVzc2FnZVxuIiwKIAkJCQkJ ICAgIGVycik7CiAKLQkJZXJyID0gcHJvY2Vzc193cml0ZXMoKTsKKwkJZXJyID0gcHJvY2Vzc193 cml0ZXMoeGgpOwogCQlpZiAoZXJyKQogCQkJcHJfd2Fybl9yYXRlbGltaXRlZCgiZXJyb3IgJWQg d2hpbGUgd3JpdGluZyBtZXNzYWdlXG4iLAogCQkJCQkgICAgZXJyKTsKIAl9CiAKLQl4ZW5idXNf dGFzayA9IE5VTEw7CisJeHMtPnhlbmJ1c190YXNrID0gTlVMTDsKIAlyZXR1cm4gMDsKIH0KIAog LyoqCiAgKiB4Yl9pbml0X2NvbW1zIC0gU2V0IHVwIGludGVycnVwdCBoYW5kbGVyIG9mZiBzdG9y ZSBldmVudCBjaGFubmVsLgogICovCi1pbnQgeGJfaW5pdF9jb21tcyh2b2lkKQoraW50IHhiX2lu aXRfY29tbXMoeGVuaG9zdF90ICp4aCkKIHsKLQlzdHJ1Y3QgeGVuc3RvcmVfZG9tYWluX2ludGVy ZmFjZSAqaW50ZiA9IHhlbl9zdG9yZV9pbnRlcmZhY2U7CisJc3RydWN0IHhlbnN0b3JlX3ByaXZh dGUgKnhzID0geHNfcHJpdih4aCk7CisJc3RydWN0IHhlbnN0b3JlX2RvbWFpbl9pbnRlcmZhY2Ug KmludGYgPSB4cy0+c3RvcmVfaW50ZXJmYWNlOwogCiAJaWYgKGludGYtPnJlcV9wcm9kICE9IGlu dGYtPnJlcV9jb25zKQogCQlwcl9lcnIoInJlcXVlc3QgcmluZyBpcyBub3QgcXVpZXNjZW50ICgl MDh4OiUwOHgpIVxuIiwKQEAgLTQ1NSwzNCArNDUzLDM1IEBAIGludCB4Yl9pbml0X2NvbW1zKHZv aWQpCiAJCQlpbnRmLT5yc3BfY29ucyA9IGludGYtPnJzcF9wcm9kOwogCX0KIAotCWlmICh4ZW5i dXNfaXJxKSB7CisJaWYgKHhzLT54ZW5idXNfaXJxKSB7CiAJCS8qIEFscmVhZHkgaGF2ZSBhbiBp cnE7IGFzc3VtZSB3ZSdyZSByZXN1bWluZyAqLwotCQlyZWJpbmRfZXZ0Y2huX2lycSh4ZW5fc3Rv cmVfZXZ0Y2huLCB4ZW5idXNfaXJxKTsKKwkJcmViaW5kX2V2dGNobl9pcnEoeHMtPnN0b3JlX2V2 dGNobiwgeHMtPnhlbmJ1c19pcnEpOwogCX0gZWxzZSB7CiAJCWludCBlcnI7CiAKLQkJZXJyID0g YmluZF9ldnRjaG5fdG9faXJxaGFuZGxlcih4aF9kZWZhdWx0LCB4ZW5fc3RvcmVfZXZ0Y2huLCB3 YWtlX3dhaXRpbmcsCi0JCQkJCQkwLCAieGVuYnVzIiwgJnhiX3dhaXRxKTsKKwkJZXJyID0gYmlu ZF9ldnRjaG5fdG9faXJxaGFuZGxlcih4aCwgeHMtPnN0b3JlX2V2dGNobiwgd2FrZV93YWl0aW5n LAorCQkJCQkJMCwgInhlbmJ1cyIsIHhzKTsKIAkJaWYgKGVyciA8IDApIHsKIAkJCXByX2Vycigi cmVxdWVzdCBpcnEgZmFpbGVkICVpXG4iLCBlcnIpOwogCQkJcmV0dXJuIGVycjsKIAkJfQogCi0J CXhlbmJ1c19pcnEgPSBlcnI7CisJCXhzLT54ZW5idXNfaXJxID0gZXJyOwogCi0JCWlmICgheGVu YnVzX3Rhc2spIHsKLQkJCXhlbmJ1c190YXNrID0ga3RocmVhZF9ydW4oeGVuYnVzX3RocmVhZCwg TlVMTCwKKwkJaWYgKCF4cy0+eGVuYnVzX3Rhc2spIHsKKwkJCXhzLT54ZW5idXNfdGFzayA9IGt0 aHJlYWRfcnVuKHhlbmJ1c190aHJlYWQsIHhoLAogCQkJCQkJICAieGVuYnVzIik7Ci0JCQlpZiAo SVNfRVJSKHhlbmJ1c190YXNrKSkKLQkJCQlyZXR1cm4gUFRSX0VSUih4ZW5idXNfdGFzayk7CisJ CQlpZiAoSVNfRVJSKHhzLT54ZW5idXNfdGFzaykpCisJCQkJcmV0dXJuIFBUUl9FUlIoeHMtPnhl bmJ1c190YXNrKTsKIAkJfQogCX0KIAogCXJldHVybiAwOwogfQogCi12b2lkIHhiX2RlaW5pdF9j b21tcyh2b2lkKQordm9pZCB4Yl9kZWluaXRfY29tbXMoeGVuaG9zdF90ICp4aCkKIHsKLQl1bmJp bmRfZnJvbV9pcnFoYW5kbGVyKHhlbmJ1c19pcnEsICZ4Yl93YWl0cSk7Ci0JeGVuYnVzX2lycSA9 IDA7CisJc3RydWN0IHhlbnN0b3JlX3ByaXZhdGUgKnhzID0geHNfcHJpdih4aCk7CisJdW5iaW5k X2Zyb21faXJxaGFuZGxlcih4cy0+eGVuYnVzX2lycSwgeHMpOworCXhzLT54ZW5idXNfaXJxID0g MDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfZGV2X2JhY2tlbmQu YyBiL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfZGV2X2JhY2tlbmQuYwppbmRleCBlZGJhNWZl Y2RlNGQuLjIxMWYxY2U1M2QzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1 c19kZXZfYmFja2VuZC5jCisrKyBiL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfZGV2X2JhY2tl bmQuYwpAQCAtMTksNiArMTksOCBAQAogCiAjaW5jbHVkZSAieGVuYnVzLmgiCiAKK3N0YXRpYyB4 ZW5ob3N0X3QgKnhoOworCiBzdGF0aWMgaW50IHhlbmJ1c19iYWNrZW5kX29wZW4oc3RydWN0IGlu b2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbHApCiB7CiAJaWYgKCFjYXBhYmxlKENBUF9TWVNf QURNSU4pKQpAQCAtMzEsNiArMzMsNyBAQCBzdGF0aWMgbG9uZyB4ZW5idXNfYWxsb2MoZG9taWRf dCBkb21pZCkKIHsKIAlzdHJ1Y3QgZXZ0Y2huX2FsbG9jX3VuYm91bmQgYXJnOwogCWludCBlcnIg PSAtRUVYSVNUOworCXN0cnVjdCB4ZW5zdG9yZV9wcml2YXRlICp4cyA9IHhzX3ByaXYoeGgpOwog CiAJeHNfc3VzcGVuZCgpOwogCkBAIC00NCwyMyArNDcsMjMgQEAgc3RhdGljIGxvbmcgeGVuYnVz X2FsbG9jKGRvbWlkX3QgZG9taWQpCiAJICogdW5uZWNlc3NhcmlseSBjb21wbGV4IGZvciB0aGUg aW50ZW5kZWQgdXNlIHdoZXJlIHhlbnN0b3JlZCBpcyBvbmx5CiAJICogc3RhcnRlZCBvbmNlIC0g c28gcmV0dXJuIC1FRVhJU1QgaWYgaXQncyBhbHJlYWR5IHJ1bm5pbmcuCiAJICovCi0JaWYgKHhl bnN0b3JlZF9yZWFkeSkKKwlpZiAoeHMtPnhlbnN0b3JlZF9yZWFkeSkKIAkJZ290byBvdXRfZXJy OwogCi0JZ250dGFiX2dyYW50X2ZvcmVpZ25fYWNjZXNzX3JlZihHTlRUQUJfUkVTRVJWRURfWEVO U1RPUkUsIGRvbWlkLAotCQkJdmlydF90b19nZm4oeGVuX3N0b3JlX2ludGVyZmFjZSksIDAgLyog d3JpdGFibGUgKi8pOworCWdudHRhYl9ncmFudF9mb3JlaWduX2FjY2Vzc19yZWYoeGgsIEdOVFRB Ql9SRVNFUlZFRF9YRU5TVE9SRSwgZG9taWQsCisJCQl2aXJ0X3RvX2dmbih4cy0+c3RvcmVfaW50 ZXJmYWNlKSwgMCAvKiB3cml0YWJsZSAqLyk7CiAKIAlhcmcuZG9tID0gRE9NSURfU0VMRjsKIAlh cmcucmVtb3RlX2RvbSA9IGRvbWlkOwogCi0JZXJyID0gSFlQRVJWSVNPUl9ldmVudF9jaGFubmVs X29wKEVWVENITk9QX2FsbG9jX3VuYm91bmQsICZhcmcpOworCWVyciA9IGh5cGVydmlzb3JfZXZl bnRfY2hhbm5lbF9vcCh4aCwgRVZUQ0hOT1BfYWxsb2NfdW5ib3VuZCwgJmFyZyk7CiAJaWYgKGVy cikKIAkJZ290byBvdXRfZXJyOwogCi0JaWYgKHhlbl9zdG9yZV9ldnRjaG4gPiAwKQotCQl4Yl9k ZWluaXRfY29tbXMoKTsKKwlpZiAoeHMtPnN0b3JlX2V2dGNobiA+IDApCisJCXhiX2RlaW5pdF9j b21tcyh4aCk7CiAKLQl4ZW5fc3RvcmVfZXZ0Y2huID0gYXJnLnBvcnQ7CisJeHMtPnN0b3JlX2V2 dGNobiA9IGFyZy5wb3J0OwogCiAJeHNfcmVzdW1lKCk7CiAKQEAgLTc0LDEzICs3NywxNSBAQCBz dGF0aWMgbG9uZyB4ZW5idXNfYWxsb2MoZG9taWRfdCBkb21pZCkKIHN0YXRpYyBsb25nIHhlbmJ1 c19iYWNrZW5kX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLAogCQkJ CSB1bnNpZ25lZCBsb25nIGRhdGEpCiB7CisJc3RydWN0IHhlbnN0b3JlX3ByaXZhdGUgKnhzID0g eHNfcHJpdih4aCk7CisKIAlpZiAoIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCiAJCXJldHVybiAt RVBFUk07CiAKIAlzd2l0Y2ggKGNtZCkgewogCWNhc2UgSU9DVExfWEVOQlVTX0JBQ0tFTkRfRVZU Q0hOOgotCQlpZiAoeGVuX3N0b3JlX2V2dGNobiA+IDApCi0JCQlyZXR1cm4geGVuX3N0b3JlX2V2 dGNobjsKKwkJaWYgKHhzLT5zdG9yZV9ldnRjaG4gPiAwKQorCQkJcmV0dXJuIHhzLT5zdG9yZV9l dnRjaG47CiAJCXJldHVybiAtRU5PREVWOwogCWNhc2UgSU9DVExfWEVOQlVTX0JBQ0tFTkRfU0VU VVA6CiAJCXJldHVybiB4ZW5idXNfYWxsb2MoZGF0YSk7CkBAIC05Miw2ICs5Nyw3IEBAIHN0YXRp YyBsb25nIHhlbmJ1c19iYWNrZW5kX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBp bnQgY21kLAogc3RhdGljIGludCB4ZW5idXNfYmFja2VuZF9tbWFwKHN0cnVjdCBmaWxlICpmaWxl LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKIHsKIAlzaXplX3Qgc2l6ZSA9IHZtYS0+dm1f ZW5kIC0gdm1hLT52bV9zdGFydDsKKwlzdHJ1Y3QgeGVuc3RvcmVfcHJpdmF0ZSAqeHMgPSB4c19w cml2KHhoKTsKIAogCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKIAkJcmV0dXJuIC1FUEVS TTsKQEAgLTEwMCw3ICsxMDYsNyBAQCBzdGF0aWMgaW50IHhlbmJ1c19iYWNrZW5kX21tYXAoc3Ry dWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQogCQlyZXR1cm4gLUVJ TlZBTDsKIAogCWlmIChyZW1hcF9wZm5fcmFuZ2Uodm1hLCB2bWEtPnZtX3N0YXJ0LAotCQkJICAg IHZpcnRfdG9fcGZuKHhlbl9zdG9yZV9pbnRlcmZhY2UpLAorCQkJICAgIHZpcnRfdG9fcGZuKHhz LT5zdG9yZV9pbnRlcmZhY2UpLAogCQkJICAgIHNpemUsIHZtYS0+dm1fcGFnZV9wcm90KSkKIAkJ cmV0dXJuIC1FQUdBSU47CiAKQEAgLTEyNSw2ICsxMzEsMTAgQEAgc3RhdGljIGludCBfX2luaXQg eGVuYnVzX2JhY2tlbmRfaW5pdCh2b2lkKQogCiAJaWYgKCF4ZW5faW5pdGlhbF9kb21haW4oKSkK IAkJcmV0dXJuIC1FTk9ERVY7CisJLyoKKwkgKiBCYWNrZW5kcyBzaG91bGRuJ3QgaGF2ZSBhbnkg dHJ1Y2sgd2l0aCB0aGUgcmVtb3RlIHhlbmhvc3QuCisJICovCisJeGggPSB4aF9kZWZhdWx0Owog CiAJZXJyID0gbWlzY19yZWdpc3RlcigmeGVuYnVzX2JhY2tlbmRfZGV2KTsKIAlpZiAoZXJyKQpk aWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1c19kZXZfZnJvbnRlbmQuYyBiL2Ry aXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfZGV2X2Zyb250ZW5kLmMKaW5kZXggYzNlMjAxMDI1ZWYw Li5kNmUwYzM5N2M2YTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfZGV2 X2Zyb250ZW5kLmMKKysrIGIvZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1c19kZXZfZnJvbnRlbmQu YwpAQCAtNTgsMTAgKzU4LDE0IEBACiAKICNpbmNsdWRlIDx4ZW4veGVuYnVzLmg+CiAjaW5jbHVk ZSA8eGVuL3hlbi5oPgorI2luY2x1ZGUgPHhlbi9pbnRlcmZhY2UveGVuLmg+CisjaW5jbHVkZSA8 eGVuL3hlbmhvc3QuaD4KICNpbmNsdWRlIDxhc20veGVuL2h5cGVydmlzb3IuaD4KIAogI2luY2x1 ZGUgInhlbmJ1cy5oIgogCitzdGF0aWMgeGVuaG9zdF90ICp4aDsKKwogLyoKICAqIEFuIGVsZW1l bnQgb2YgYSBsaXN0IG9mIG91dHN0YW5kaW5nIHRyYW5zYWN0aW9ucywgZm9yIHdoaWNoIHdlJ3Jl CiAgKiBzdGlsbCB3YWl0aW5nIGEgcmVwbHkuCkBAIC0zMTIsMTMgKzMxNiwxMyBAQCBzdGF0aWMg dm9pZCB4ZW5idXNfZmlsZV9mcmVlKHN0cnVjdCBrcmVmICprcmVmKQogCSAqLwogCiAJbGlzdF9m b3JfZWFjaF9lbnRyeV9zYWZlKHRyYW5zLCB0bXAsICZ1LT50cmFuc2FjdGlvbnMsIGxpc3QpIHsK LQkJeGVuYnVzX3RyYW5zYWN0aW9uX2VuZCh0cmFucy0+aGFuZGxlLCAxKTsKKwkJeGVuYnVzX3Ry YW5zYWN0aW9uX2VuZCh4aCwgdHJhbnMtPmhhbmRsZSwgMSk7CiAJCWxpc3RfZGVsKCZ0cmFucy0+ bGlzdCk7CiAJCWtmcmVlKHRyYW5zKTsKIAl9CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUo d2F0Y2gsIHRtcF93YXRjaCwgJnUtPndhdGNoZXMsIGxpc3QpIHsKLQkJdW5yZWdpc3Rlcl94ZW5i dXNfd2F0Y2goJndhdGNoLT53YXRjaCk7CisJCXVucmVnaXN0ZXJfeGVuYnVzX3dhdGNoKHhoLCAm d2F0Y2gtPndhdGNoKTsKIAkJbGlzdF9kZWwoJndhdGNoLT5saXN0KTsKIAkJZnJlZV93YXRjaF9h ZGFwdGVyKHdhdGNoKTsKIAl9CkBAIC00NTAsNyArNDU0LDcgQEAgc3RhdGljIGludCB4ZW5idXNf d3JpdGVfdHJhbnNhY3Rpb24odW5zaWduZWQgbXNnX3R5cGUsCiAJCSAgICghc3RyY21wKG1zZy0+ Ym9keSwgIlQiKSB8fCAhc3RyY21wKG1zZy0+Ym9keSwgIkYiKSkpKQogCQlyZXR1cm4geGVuYnVz X2NvbW1hbmRfcmVwbHkodSwgWFNfRVJST1IsICJFSU5WQUwiKTsKIAotCXJjID0geGVuYnVzX2Rl dl9yZXF1ZXN0X2FuZF9yZXBseSgmbXNnLT5oZHIsIHUpOworCXJjID0geGVuYnVzX2Rldl9yZXF1 ZXN0X2FuZF9yZXBseSh4aCwgJm1zZy0+aGRyLCB1KTsKIAlpZiAocmMgJiYgdHJhbnMpIHsKIAkJ bGlzdF9kZWwoJnRyYW5zLT5saXN0KTsKIAkJa2ZyZWUodHJhbnMpOwpAQCAtNDg5LDcgKzQ5Myw3 IEBAIHN0YXRpYyBpbnQgeGVuYnVzX3dyaXRlX3dhdGNoKHVuc2lnbmVkIG1zZ190eXBlLCBzdHJ1 Y3QgeGVuYnVzX2ZpbGVfcHJpdiAqdSkKIAkJd2F0Y2gtPndhdGNoLmNhbGxiYWNrID0gd2F0Y2hf ZmlyZWQ7CiAJCXdhdGNoLT5kZXZfZGF0YSA9IHU7CiAKLQkJZXJyID0gcmVnaXN0ZXJfeGVuYnVz X3dhdGNoKCZ3YXRjaC0+d2F0Y2gpOworCQllcnIgPSByZWdpc3Rlcl94ZW5idXNfd2F0Y2goeGgs ICZ3YXRjaC0+d2F0Y2gpOwogCQlpZiAoZXJyKSB7CiAJCQlmcmVlX3dhdGNoX2FkYXB0ZXIod2F0 Y2gpOwogCQkJcmMgPSBlcnI7CkBAIC01MDAsNyArNTA0LDcgQEAgc3RhdGljIGludCB4ZW5idXNf d3JpdGVfd2F0Y2godW5zaWduZWQgbXNnX3R5cGUsIHN0cnVjdCB4ZW5idXNfZmlsZV9wcml2ICp1 KQogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHdhdGNoLCAmdS0+d2F0Y2hlcywgbGlzdCkgewogCQkJ aWYgKCFzdHJjbXAod2F0Y2gtPnRva2VuLCB0b2tlbikgJiYKIAkJCSAgICAhc3RyY21wKHdhdGNo LT53YXRjaC5ub2RlLCBwYXRoKSkgewotCQkJCXVucmVnaXN0ZXJfeGVuYnVzX3dhdGNoKCZ3YXRj aC0+d2F0Y2gpOworCQkJCXVucmVnaXN0ZXJfeGVuYnVzX3dhdGNoKHhoLCAmd2F0Y2gtPndhdGNo KTsKIAkJCQlsaXN0X2RlbCgmd2F0Y2gtPmxpc3QpOwogCQkJCWZyZWVfd2F0Y2hfYWRhcHRlcih3 YXRjaCk7CiAJCQkJYnJlYWs7CkBAIC02MTgsOCArNjIyLDkgQEAgc3RhdGljIHNzaXplX3QgeGVu YnVzX2ZpbGVfd3JpdGUoc3RydWN0IGZpbGUgKmZpbHAsCiBzdGF0aWMgaW50IHhlbmJ1c19maWxl X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbHApCiB7CiAJc3RydWN0 IHhlbmJ1c19maWxlX3ByaXYgKnU7CisJc3RydWN0IHhlbnN0b3JlX3ByaXZhdGUgKnhzID0geHNf cHJpdih4aCk7CiAKLQlpZiAoeGVuX3N0b3JlX2V2dGNobiA9PSAwKQorCWlmICh4cy0+c3RvcmVf ZXZ0Y2huID09IDApCiAJCXJldHVybiAtRU5PRU5UOwogCiAJbm9uc2Vla2FibGVfb3Blbihpbm9k ZSwgZmlscCk7CkBAIC02ODcsNiArNjkyLDExIEBAIHN0YXRpYyBpbnQgX19pbml0IHhlbmJ1c19p bml0KHZvaWQpCiAJaWYgKCF4ZW5fZG9tYWluKCkpCiAJCXJldHVybiAtRU5PREVWOwogCisJaWYg KHhlbl9kcml2ZXJfZG9tYWluKCkgJiYgeGVuX25lc3RlZCgpKQorCQl4aCA9IHhoX3JlbW90ZTsK KwllbHNlCisJCXhoID0geGhfZGVmYXVsdDsKKwogCWVyciA9IG1pc2NfcmVnaXN0ZXIoJnhlbmJ1 c19kZXYpOwogCWlmIChlcnIpCiAJCXByX2VycigiQ291bGQgbm90IHJlZ2lzdGVyIHhlbmJ1cyBm cm9udGVuZCBkZXZpY2VcbiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1 c19wcm9iZS5jIGIvZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1c19wcm9iZS5jCmluZGV4IDA0OWJk NTExZjM2ZS4uYmQ5MGJhMDBkNjRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi94ZW5idXMveGVu YnVzX3Byb2JlLmMKKysrIGIvZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1c19wcm9iZS5jCkBAIC02 NSwyMCArNjUsNiBAQAogCiAjaW5jbHVkZSAieGVuYnVzLmgiCiAKLQotaW50IHhlbl9zdG9yZV9l dnRjaG47Ci1FWFBPUlRfU1lNQk9MX0dQTCh4ZW5fc3RvcmVfZXZ0Y2huKTsKLQotc3RydWN0IHhl bnN0b3JlX2RvbWFpbl9pbnRlcmZhY2UgKnhlbl9zdG9yZV9pbnRlcmZhY2U7Ci1FWFBPUlRfU1lN Qk9MX0dQTCh4ZW5fc3RvcmVfaW50ZXJmYWNlKTsKLQotZW51bSB4ZW5zdG9yZV9pbml0IHhlbl9z dG9yZV9kb21haW5fdHlwZTsKLUVYUE9SVF9TWU1CT0xfR1BMKHhlbl9zdG9yZV9kb21haW5fdHlw ZSk7Ci0KLXN0YXRpYyB1bnNpZ25lZCBsb25nIHhlbl9zdG9yZV9nZm47Ci0KLXN0YXRpYyBCTE9D S0lOR19OT1RJRklFUl9IRUFEKHhlbnN0b3JlX2NoYWluKTsKLQogLyogSWYgc29tZXRoaW5nIGlu IGFycmF5IG9mIGlkcyBtYXRjaGVzIHRoaXMgZGV2aWNlLCByZXR1cm4gaXQuICovCiBzdGF0aWMg Y29uc3Qgc3RydWN0IHhlbmJ1c19kZXZpY2VfaWQgKgogbWF0Y2hfZGV2aWNlKGNvbnN0IHN0cnVj dCB4ZW5idXNfZGV2aWNlX2lkICphcnIsIHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYpCkBAIC0x MTIsNyArOTgsNyBAQCBzdGF0aWMgdm9pZCBmcmVlX290aGVyZW5kX2RldGFpbHMoc3RydWN0IHhl bmJ1c19kZXZpY2UgKmRldikKIHN0YXRpYyB2b2lkIGZyZWVfb3RoZXJlbmRfd2F0Y2goc3RydWN0 IHhlbmJ1c19kZXZpY2UgKmRldikKIHsKIAlpZiAoZGV2LT5vdGhlcmVuZF93YXRjaC5ub2RlKSB7 Ci0JCXVucmVnaXN0ZXJfeGVuYnVzX3dhdGNoKCZkZXYtPm90aGVyZW5kX3dhdGNoKTsKKwkJdW5y ZWdpc3Rlcl94ZW5idXNfd2F0Y2goZGV2LT54aCwgJmRldi0+b3RoZXJlbmRfd2F0Y2gpOwogCQlr ZnJlZShkZXYtPm90aGVyZW5kX3dhdGNoLm5vZGUpOwogCQlkZXYtPm90aGVyZW5kX3dhdGNoLm5v ZGUgPSBOVUxMOwogCX0KQEAgLTE0NSw3ICsxMzEsNyBAQCBzdGF0aWMgaW50IHdhdGNoX290aGVy ZW5kKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYpCiBpbnQgeGVuYnVzX3JlYWRfb3RoZXJlbmRf ZGV0YWlscyhzdHJ1Y3QgeGVuYnVzX2RldmljZSAqeGVuZGV2LAogCQkJCSBjaGFyICppZF9ub2Rl LCBjaGFyICpwYXRoX25vZGUpCiB7Ci0JaW50IGVyciA9IHhlbmJ1c19nYXRoZXIoWEJUX05JTCwg eGVuZGV2LT5ub2RlbmFtZSwKKwlpbnQgZXJyID0geGVuYnVzX2dhdGhlcih4ZW5kZXYtPnhoLCBY QlRfTklMLCB4ZW5kZXYtPm5vZGVuYW1lLAogCQkJCWlkX25vZGUsICIlaSIsICZ4ZW5kZXYtPm90 aGVyZW5kX2lkLAogCQkJCXBhdGhfbm9kZSwgTlVMTCwgJnhlbmRldi0+b3RoZXJlbmQsCiAJCQkJ TlVMTCk7CkBAIC0xNTYsNyArMTQyLDcgQEAgaW50IHhlbmJ1c19yZWFkX290aGVyZW5kX2RldGFp bHMoc3RydWN0IHhlbmJ1c19kZXZpY2UgKnhlbmRldiwKIAkJcmV0dXJuIGVycjsKIAl9CiAJaWYg KHN0cmxlbih4ZW5kZXYtPm90aGVyZW5kKSA9PSAwIHx8Ci0JICAgICF4ZW5idXNfZXhpc3RzKFhC VF9OSUwsIHhlbmRldi0+b3RoZXJlbmQsICIiKSkgeworCSAgICAheGVuYnVzX2V4aXN0cyh4ZW5k ZXYtPnhoLCBYQlRfTklMLCB4ZW5kZXYtPm90aGVyZW5kLCAiIikpIHsKIAkJeGVuYnVzX2Rldl9m YXRhbCh4ZW5kZXYsIC1FTk9FTlQsCiAJCQkJICJ1bmFibGUgdG8gcmVhZCBvdGhlciBlbmQgZnJv bSAlcy4gICIKIAkJCQkgIm1pc3Npbmcgb3IgaW5hY2Nlc3NpYmxlLiIsCkBAIC0xODYsNyArMTcy LDcgQEAgdm9pZCB4ZW5idXNfb3RoZXJlbmRfY2hhbmdlZChzdHJ1Y3QgeGVuYnVzX3dhdGNoICp3 YXRjaCwKIAkJcmV0dXJuOwogCX0KIAotCXN0YXRlID0geGVuYnVzX3JlYWRfZHJpdmVyX3N0YXRl KGRldi0+b3RoZXJlbmQpOworCXN0YXRlID0geGVuYnVzX3JlYWRfZHJpdmVyX3N0YXRlKGRldiwg ZGV2LT5vdGhlcmVuZCk7CiAKIAlkZXZfZGJnKCZkZXYtPmRldiwgInN0YXRlIGlzICVkLCAoJXMp LCAlcywgJXNcbiIsCiAJCXN0YXRlLCB4ZW5idXNfc3Ryc3RhdGUoc3RhdGUpLCBkZXYtPm90aGVy ZW5kX3dhdGNoLm5vZGUsIHBhdGgpOwpAQCAtNDM5LDcgKzQyNSwxMSBAQCBpbnQgeGVuYnVzX3By b2JlX25vZGUoc3RydWN0IHhlbl9idXNfdHlwZSAqYnVzLAogCXNpemVfdCBzdHJpbmdsZW47CiAJ Y2hhciAqdG1wc3RyaW5nOwogCi0JZW51bSB4ZW5idXNfc3RhdGUgc3RhdGUgPSB4ZW5idXNfcmVh ZF9kcml2ZXJfc3RhdGUobm9kZW5hbWUpOworCWVudW0geGVuYnVzX3N0YXRlIHN0YXRlOworCisJ ZXJyID0geGVuYnVzX2dhdGhlcihidXMtPnhoLCBYQlRfTklMLCBub2RlbmFtZSwgInN0YXRlIiwg IiVkIiwgJnN0YXRlLCBOVUxMKTsKKwlpZiAoZXJyKQorCQlzdGF0ZSA9IFhlbmJ1c1N0YXRlVW5r bm93bjsKIAogCWlmIChzdGF0ZSAhPSBYZW5idXNTdGF0ZUluaXRpYWxpc2luZykgewogCQkvKiBE ZXZpY2UgaXMgbm90IG5ldywgc28gaWdub3JlIGl0LiAgVGhpcyBjYW4gaGFwcGVuIGlmIGEKQEAg LTQ2NSwxMCArNDU1LDExIEBAIGludCB4ZW5idXNfcHJvYmVfbm9kZShzdHJ1Y3QgeGVuX2J1c190 eXBlICpidXMsCiAJeGVuZGV2LT5kZXZpY2V0eXBlID0gdG1wc3RyaW5nOwogCWluaXRfY29tcGxl dGlvbigmeGVuZGV2LT5kb3duKTsKIAorCXhlbmRldi0+eGggPSBidXMtPnhoOwogCXhlbmRldi0+ ZGV2LmJ1cyA9ICZidXMtPmJ1czsKIAl4ZW5kZXYtPmRldi5yZWxlYXNlID0geGVuYnVzX2Rldl9y ZWxlYXNlOwogCi0JZXJyID0gYnVzLT5nZXRfYnVzX2lkKGRldm5hbWUsIHhlbmRldi0+bm9kZW5h bWUpOworCWVyciA9IGJ1cy0+Z2V0X2J1c19pZChidXMsIGRldm5hbWUsIHhlbmRldi0+bm9kZW5h bWUpOwogCWlmIChlcnIpCiAJCWdvdG8gZmFpbDsKIApAQCAtNDk2LDcgKzQ4Nyw3IEBAIHN0YXRp YyBpbnQgeGVuYnVzX3Byb2JlX2RldmljZV90eXBlKHN0cnVjdCB4ZW5fYnVzX3R5cGUgKmJ1cywg Y29uc3QgY2hhciAqdHlwZSkKIAl1bnNpZ25lZCBpbnQgZGlyX24gPSAwOwogCWludCBpOwogCi0J ZGlyID0geGVuYnVzX2RpcmVjdG9yeShYQlRfTklMLCBidXMtPnJvb3QsIHR5cGUsICZkaXJfbik7 CisJZGlyID0geGVuYnVzX2RpcmVjdG9yeShidXMtPnhoLCBYQlRfTklMLCBidXMtPnJvb3QsIHR5 cGUsICZkaXJfbik7CiAJaWYgKElTX0VSUihkaXIpKQogCQlyZXR1cm4gUFRSX0VSUihkaXIpOwog CkBAIC01MTYsNyArNTA3LDcgQEAgaW50IHhlbmJ1c19wcm9iZV9kZXZpY2VzKHN0cnVjdCB4ZW5f YnVzX3R5cGUgKmJ1cykKIAljaGFyICoqZGlyOwogCXVuc2lnbmVkIGludCBpLCBkaXJfbjsKIAot CWRpciA9IHhlbmJ1c19kaXJlY3RvcnkoWEJUX05JTCwgYnVzLT5yb290LCAiIiwgJmRpcl9uKTsK KwlkaXIgPSB4ZW5idXNfZGlyZWN0b3J5KGJ1cy0+eGgsIFhCVF9OSUwsIGJ1cy0+cm9vdCwgIiIs ICZkaXJfbik7CiAJaWYgKElTX0VSUihkaXIpKQogCQlyZXR1cm4gUFRSX0VSUihkaXIpOwogCkBA IC01NjQsNyArNTU1LDcgQEAgdm9pZCB4ZW5idXNfZGV2X2NoYW5nZWQoY29uc3QgY2hhciAqbm9k ZSwgc3RydWN0IHhlbl9idXNfdHlwZSAqYnVzKQogCWlmIChjaGFyX2NvdW50KG5vZGUsICcvJykg PCAyKQogCQlyZXR1cm47CiAKLQlleGlzdHMgPSB4ZW5idXNfZXhpc3RzKFhCVF9OSUwsIG5vZGUs ICIiKTsKKwlleGlzdHMgPSB4ZW5idXNfZXhpc3RzKGJ1cy0+eGgsIFhCVF9OSUwsIG5vZGUsICIi KTsKIAlpZiAoIWV4aXN0cykgewogCQl4ZW5idXNfY2xlYW51cF9kZXZpY2VzKG5vZGUsICZidXMt PmJ1cyk7CiAJCXJldHVybjsKQEAgLTY2MCw0NyArNjUxLDYxIEBAIGludCB4ZW5idXNfZGV2X2Nh bmNlbChzdHJ1Y3QgZGV2aWNlICpkZXYpCiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh4ZW5idXNfZGV2 X2NhbmNlbCk7CiAKLS8qIEEgZmxhZyB0byBkZXRlcm1pbmUgaWYgeGVuc3RvcmVkIGlzICdyZWFk eScgKGkuZS4gaGFzIHN0YXJ0ZWQpICovCi1pbnQgeGVuc3RvcmVkX3JlYWR5OwotCi0KLWludCBy ZWdpc3Rlcl94ZW5zdG9yZV9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKQoraW50 IHJlZ2lzdGVyX3hlbnN0b3JlX25vdGlmaWVyKHhlbmhvc3RfdCAqeGgsIHN0cnVjdCBub3RpZmll cl9ibG9jayAqbmIpCiB7CiAJaW50IHJldCA9IDA7CisJc3RydWN0IHhlbnN0b3JlX3ByaXZhdGUg KnhzID0geHNfcHJpdih4aCk7CiAKLQlpZiAoeGVuc3RvcmVkX3JlYWR5ID4gMCkKKwlpZiAoeHMt PnhlbnN0b3JlZF9yZWFkeSA+IDApCiAJCXJldCA9IG5iLT5ub3RpZmllcl9jYWxsKG5iLCAwLCBO VUxMKTsKIAllbHNlCi0JCWJsb2NraW5nX25vdGlmaWVyX2NoYWluX3JlZ2lzdGVyKCZ4ZW5zdG9y ZV9jaGFpbiwgbmIpOworCQlibG9ja2luZ19ub3RpZmllcl9jaGFpbl9yZWdpc3RlcigmeHMtPnhl bnN0b3JlX2NoYWluLCBuYik7CiAKIAlyZXR1cm4gcmV0OwogfQogRVhQT1JUX1NZTUJPTF9HUEwo cmVnaXN0ZXJfeGVuc3RvcmVfbm90aWZpZXIpOwogCi12b2lkIHVucmVnaXN0ZXJfeGVuc3RvcmVf bm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYikKK3ZvaWQgdW5yZWdpc3Rlcl94ZW5z dG9yZV9ub3RpZmllcih4ZW5ob3N0X3QgKnhoLCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKQog ewotCWJsb2NraW5nX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoJnhlbnN0b3JlX2NoYWluLCBu Yik7CisJc3RydWN0IHhlbnN0b3JlX3ByaXZhdGUgKnhzID0geHNfcHJpdih4aCk7CisKKwlibG9j a2luZ19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKCZ4cy0+eGVuc3RvcmVfY2hhaW4sIG5iKTsK IH0KIEVYUE9SVF9TWU1CT0xfR1BMKHVucmVnaXN0ZXJfeGVuc3RvcmVfbm90aWZpZXIpOwogCi12 b2lkIHhlbmJ1c19wcm9iZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKnVudXNlZCkKKy8qIE5lZWRlZCBi eSBwbGF0Zm9ybS1wY2kgKi8KK3ZvaWQgX194ZW5idXNfcHJvYmUodm9pZCAqX3hzKQogewotCXhl bnN0b3JlZF9yZWFkeSA9IDE7CisJc3RydWN0IHhlbnN0b3JlX3ByaXZhdGUgKnhzID0gKHN0cnVj dCB4ZW5zdG9yZV9wcml2YXRlICopIF94czsKKwl4cy0+eGVuc3RvcmVkX3JlYWR5ID0gMTsKIAog CS8qIE5vdGlmeSBvdGhlcnMgdGhhdCB4ZW5zdG9yZSBpcyB1cCAqLwotCWJsb2NraW5nX25vdGlm aWVyX2NhbGxfY2hhaW4oJnhlbnN0b3JlX2NoYWluLCAwLCBOVUxMKTsKKwlibG9ja2luZ19ub3Rp Zmllcl9jYWxsX2NoYWluKCZ4cy0+eGVuc3RvcmVfY2hhaW4sIDAsIE5VTEwpOworfQorRVhQT1JU X1NZTUJPTF9HUEwoX194ZW5idXNfcHJvYmUpOworCit2b2lkIHhlbmJ1c19wcm9iZShzdHJ1Y3Qg d29ya19zdHJ1Y3QgKncpCit7CisJc3RydWN0IHhlbnN0b3JlX3ByaXZhdGUgKnhzID0gY29udGFp bmVyX29mKHcsCisJCQlzdHJ1Y3QgeGVuc3RvcmVfcHJpdmF0ZSwgcHJvYmVfd29yayk7CisKKwlf X3hlbmJ1c19wcm9iZSh4cyk7CiB9Ci1FWFBPUlRfU1lNQk9MX0dQTCh4ZW5idXNfcHJvYmUpOwog CiBzdGF0aWMgaW50IF9faW5pdCB4ZW5idXNfcHJvYmVfaW5pdGNhbGwodm9pZCkKIHsKKwl4ZW5o b3N0X3QgKip4aDsKKwogCWlmICgheGVuX2RvbWFpbigpKQogCQlyZXR1cm4gLUVOT0RFVjsKIAog CWlmICh4ZW5faW5pdGlhbF9kb21haW4oKSB8fCB4ZW5faHZtX2RvbWFpbigpKQogCQlyZXR1cm4g MDsKIAotCXhlbmJ1c19wcm9iZShOVUxMKTsKKwlmb3JfZWFjaF94ZW5ob3N0KHhoKSB7CisJCXN0 cnVjdCB4ZW5zdG9yZV9wcml2YXRlICp4cyA9IHhzX3ByaXYoKnhoKTsKKwkJeGVuYnVzX3Byb2Jl KCZ4cy0+cHJvYmVfd29yayk7CisJfQogCXJldHVybiAwOwogfQogCkBAIC03MDksMzAgKzcxNCwz MSBAQCBkZXZpY2VfaW5pdGNhbGwoeGVuYnVzX3Byb2JlX2luaXRjYWxsKTsKIC8qIFNldCB1cCBl dmVudCBjaGFubmVsIGZvciB4ZW5zdG9yZWQgd2hpY2ggaXMgcnVuIGFzIGEgbG9jYWwgcHJvY2Vz cwogICogKHRoaXMgaXMgbm9ybWFsbHkgdXNlZCBvbmx5IGluIGRvbTApCiAgKi8KLXN0YXRpYyBp bnQgX19pbml0IHhlbnN0b3JlZF9sb2NhbF9pbml0KHZvaWQpCitzdGF0aWMgaW50IF9faW5pdCB4 ZW5zdG9yZWRfbG9jYWxfaW5pdCh4ZW5ob3N0X3QgKnhoKQogewogCWludCBlcnIgPSAtRU5PTUVN OwogCXVuc2lnbmVkIGxvbmcgcGFnZSA9IDA7CiAJc3RydWN0IGV2dGNobl9hbGxvY191bmJvdW5k IGFsbG9jX3VuYm91bmQ7CisJc3RydWN0IHhlbnN0b3JlX3ByaXZhdGUgKnhzID0geHNfcHJpdih4 aCk7CiAKIAkvKiBBbGxvY2F0ZSBYZW5zdG9yZSBwYWdlICovCiAJcGFnZSA9IGdldF96ZXJvZWRf cGFnZShHRlBfS0VSTkVMKTsKIAlpZiAoIXBhZ2UpCiAJCWdvdG8gb3V0X2VycjsKIAotCXhlbl9z dG9yZV9nZm4gPSB2aXJ0X3RvX2dmbigodm9pZCAqKXBhZ2UpOworCXhzLT5zdG9yZV9nZm4gPSB2 aXJ0X3RvX2dmbigodm9pZCAqKXBhZ2UpOwogCiAJLyogTmV4dCBhbGxvY2F0ZSBhIGxvY2FsIHBv cnQgd2hpY2ggeGVuc3RvcmVkIGNhbiBiaW5kIHRvICovCiAJYWxsb2NfdW5ib3VuZC5kb20gICAg ICAgID0gRE9NSURfU0VMRjsKIAlhbGxvY191bmJvdW5kLnJlbW90ZV9kb20gPSBET01JRF9TRUxG OwogCi0JZXJyID0gSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wKEVWVENITk9QX2FsbG9jX3Vu Ym91bmQsCisJZXJyID0gaHlwZXJ2aXNvcl9ldmVudF9jaGFubmVsX29wKHhoLCBFVlRDSE5PUF9h bGxvY191bmJvdW5kLAogCQkJCQkgICZhbGxvY191bmJvdW5kKTsKIAlpZiAoZXJyID09IC1FTk9T WVMpCiAJCWdvdG8gb3V0X2VycjsKIAogCUJVR19PTihlcnIpOwotCXhlbl9zdG9yZV9ldnRjaG4g PSBhbGxvY191bmJvdW5kLnBvcnQ7CisJeHMtPnN0b3JlX2V2dGNobiA9IGFsbG9jX3VuYm91bmQu cG9ydDsKIAogCXJldHVybiAwOwogCkBAIC03NDYsMTggKzc1MiwyNCBAQCBzdGF0aWMgaW50IHhl bmJ1c19yZXN1bWVfY2Ioc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwKIAkJCSAgICB1bnNpZ25l ZCBsb25nIGFjdGlvbiwgdm9pZCAqZGF0YSkKIHsKIAlpbnQgZXJyID0gMDsKKwl4ZW5ob3N0X3Qg Kip4aDsKIAotCWlmICh4ZW5faHZtX2RvbWFpbigpKSB7Ci0JCXVpbnQ2NF90IHYgPSAwOworCWZv cl9lYWNoX3hlbmhvc3QoeGgpIHsKKwkJc3RydWN0IHhlbnN0b3JlX3ByaXZhdGUgKnhzID0geHNf cHJpdigqeGgpOwogCi0JCWVyciA9IGh2bV9nZXRfcGFyYW1ldGVyKEhWTV9QQVJBTV9TVE9SRV9F VlRDSE4sICZ2KTsKLQkJaWYgKCFlcnIgJiYgdikKLQkJCXhlbl9zdG9yZV9ldnRjaG4gPSB2Owot CQllbHNlCi0JCQlwcl93YXJuKCJDYW5ub3QgdXBkYXRlIHhlbnN0b3JlIGV2ZW50IGNoYW5uZWw6 ICVkXG4iLAotCQkJCWVycik7Ci0JfSBlbHNlCi0JCXhlbl9zdG9yZV9ldnRjaG4gPSB4ZW5fc3Rh cnRfaW5mby0+c3RvcmVfZXZ0Y2huOworCQkvKiBGSVhNRSB4aC0+cmVzdW1lX3hzKCk/ICovCisJ CWlmICh4ZW5faHZtX2RvbWFpbigpKSB7CisJCQl1aW50NjRfdCB2ID0gMDsKKworCQkJZXJyID0g aHZtX2dldF9wYXJhbWV0ZXIoSFZNX1BBUkFNX1NUT1JFX0VWVENITiwgJnYpOworCQkJaWYgKCFl cnIgJiYgdikKKwkJCQl4cy0+c3RvcmVfZXZ0Y2huID0gdjsKKwkJCWVsc2UKKwkJCQlwcl93YXJu KCJDYW5ub3QgdXBkYXRlIHhlbnN0b3JlIGV2ZW50IGNoYW5uZWw6ICVkXG4iLAorCQkJCQllcnIp OworCQl9IGVsc2UKKwkJCXhzLT5zdG9yZV9ldnRjaG4gPSB4ZW5fc3RhcnRfaW5mby0+c3RvcmVf ZXZ0Y2huOworCX0KIAogCXJldHVybiBlcnI7CiB9CkBAIC03NjYsNjcgKzc3OCwxMTUgQEAgc3Rh dGljIHN0cnVjdCBub3RpZmllcl9ibG9jayB4ZW5idXNfcmVzdW1lX25iID0gewogCS5ub3RpZmll cl9jYWxsID0geGVuYnVzX3Jlc3VtZV9jYiwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHhlbmJ1 c19pbml0KHZvaWQpCitpbnQgeGVuYnVzX3NldHVwKHhlbmhvc3RfdCAqeGgpCiB7CisJc3RydWN0 IHhlbnN0b3JlX3ByaXZhdGUgKnhzID0geHNfcHJpdih4aCk7CiAJaW50IGVyciA9IDA7Ci0JdWlu dDY0X3QgdiA9IDA7Ci0JeGVuX3N0b3JlX2RvbWFpbl90eXBlID0gWFNfVU5LTk9XTjsKIAotCWlm ICgheGVuX2RvbWFpbigpKQotCQlyZXR1cm4gLUVOT0RFVjsKKwlCVUdfT04oeHMtPmRvbWFpbl90 eXBlID09IFhTX1VOS05PV04pOwogCi0JeGVuYnVzX3Jpbmdfb3BzX2luaXQoKTsKLQotCWlmICh4 ZW5fcHZfZG9tYWluKCkpCi0JCXhlbl9zdG9yZV9kb21haW5fdHlwZSA9IFhTX1BWOwotCWlmICh4 ZW5faHZtX2RvbWFpbigpKQotCQl4ZW5fc3RvcmVfZG9tYWluX3R5cGUgPSBYU19IVk07Ci0JaWYg KHhlbl9odm1fZG9tYWluKCkgJiYgeGVuX2luaXRpYWxfZG9tYWluKCkpCi0JCXhlbl9zdG9yZV9k b21haW5fdHlwZSA9IFhTX0xPQ0FMOwotCWlmICh4ZW5fcHZfZG9tYWluKCkgJiYgIXhlbl9zdGFy dF9pbmZvLT5zdG9yZV9ldnRjaG4pCi0JCXhlbl9zdG9yZV9kb21haW5fdHlwZSA9IFhTX0xPQ0FM OwotCWlmICh4ZW5fcHZfZG9tYWluKCkgJiYgeGVuX3N0YXJ0X2luZm8tPnN0b3JlX2V2dGNobikK LQkJeGVuc3RvcmVkX3JlYWR5ID0gMTsKLQotCXN3aXRjaCAoeGVuX3N0b3JlX2RvbWFpbl90eXBl KSB7CisJc3dpdGNoICh4cy0+ZG9tYWluX3R5cGUpIHsKIAljYXNlIFhTX0xPQ0FMOgotCQllcnIg PSB4ZW5zdG9yZWRfbG9jYWxfaW5pdCgpOworCQllcnIgPSB4ZW5zdG9yZWRfbG9jYWxfaW5pdCh4 aCk7CiAJCWlmIChlcnIpCi0JCQlnb3RvIG91dF9lcnJvcjsKLQkJeGVuX3N0b3JlX2ludGVyZmFj ZSA9IGdmbl90b192aXJ0KHhlbl9zdG9yZV9nZm4pOworCQkJZ290byBvdXQ7CisJCXhzLT5zdG9y ZV9pbnRlcmZhY2UgPSBnZm5fdG9fdmlydCh4cy0+c3RvcmVfZ2ZuKTsKIAkJYnJlYWs7CiAJY2Fz ZSBYU19QVjoKLQkJeGVuX3N0b3JlX2V2dGNobiA9IHhlbl9zdGFydF9pbmZvLT5zdG9yZV9ldnRj aG47Ci0JCXhlbl9zdG9yZV9nZm4gPSB4ZW5fc3RhcnRfaW5mby0+c3RvcmVfbWZuOwotCQl4ZW5f c3RvcmVfaW50ZXJmYWNlID0gZ2ZuX3RvX3ZpcnQoeGVuX3N0b3JlX2dmbik7CisJCXhzLT5zdG9y ZV9pbnRlcmZhY2UgPSBnZm5fdG9fdmlydCh4cy0+c3RvcmVfZ2ZuKTsKKwkJeHMtPnhlbnN0b3Jl ZF9yZWFkeSA9IDE7CiAJCWJyZWFrOwogCWNhc2UgWFNfSFZNOgotCQllcnIgPSBodm1fZ2V0X3Bh cmFtZXRlcihIVk1fUEFSQU1fU1RPUkVfRVZUQ0hOLCAmdik7Ci0JCWlmIChlcnIpCi0JCQlnb3Rv IG91dF9lcnJvcjsKLQkJeGVuX3N0b3JlX2V2dGNobiA9IChpbnQpdjsKLQkJZXJyID0gaHZtX2dl dF9wYXJhbWV0ZXIoSFZNX1BBUkFNX1NUT1JFX1BGTiwgJnYpOwotCQlpZiAoZXJyKQotCQkJZ290 byBvdXRfZXJyb3I7Ci0JCXhlbl9zdG9yZV9nZm4gPSAodW5zaWduZWQgbG9uZyl2OwotCQl4ZW5f c3RvcmVfaW50ZXJmYWNlID0KLQkJCXhlbl9yZW1hcCh4ZW5fc3RvcmVfZ2ZuIDw8IFhFTl9QQUdF X1NISUZULAorCQl4cy0+c3RvcmVfaW50ZXJmYWNlID0KKwkJCXhlbl9yZW1hcCh4cy0+c3RvcmVf Z2ZuIDw8IFhFTl9QQUdFX1NISUZULAogCQkJCSAgWEVOX1BBR0VfU0laRSk7CiAJCWJyZWFrOwog CWRlZmF1bHQ6CiAJCXByX3dhcm4oIlhlbnN0b3JlIHN0YXRlIHVua25vd25cbiIpOwogCQlicmVh azsKIAl9CitvdXQ6CisJcmV0dXJuIGVycjsKK30KIAotCS8qIEluaXRpYWxpemUgdGhlIGludGVy ZmFjZSB0byB4ZW5zdG9yZS4gKi8KLQllcnIgPSB4c19pbml0KCk7Ci0JaWYgKGVycikgewotCQlw cl93YXJuKCJFcnJvciBpbml0aWFsaXppbmcgeGVuc3RvcmUgY29tbXM6ICVpXG4iLCBlcnIpOwot CQlnb3RvIG91dF9lcnJvcjsKK2ludCB4ZW5faHZtX3NldHVwX3hzKHhlbmhvc3RfdCAqeGgpCit7 CisJdWludDY0X3QgdiA9IDA7CisJaW50IGVyciA9IDA7CisJc3RydWN0IHhlbnN0b3JlX3ByaXZh dGUgKnhzID0geHNfcHJpdih4aCk7CisKKwlpZiAoeGVuX2luaXRpYWxfZG9tYWluKCkpIHsKKwkJ eHMtPmRvbWFpbl90eXBlID0gWFNfTE9DQUw7CisJCXhzLT5zdG9yZV9ldnRjaG4gPSAwOworCQl4 cy0+c3RvcmVfZ2ZuID0gMDsKKwl9IGVsc2UgeyAvKiBGcm9udGVuZCAqLworCQl4cy0+ZG9tYWlu X3R5cGUgPSBYU19IVk07CisJCWVyciA9IGh2bV9nZXRfcGFyYW1ldGVyKEhWTV9QQVJBTV9TVE9S RV9FVlRDSE4sICZ2KTsKKwkJaWYgKGVycikKKwkJCWdvdG8gb3V0OworCQl4cy0+c3RvcmVfZXZ0 Y2huID0gKGludCkgdjsKKworCQllcnIgPSBodm1fZ2V0X3BhcmFtZXRlcihIVk1fUEFSQU1fU1RP UkVfUEZOLCAmdik7CisJCWlmIChlcnIpCisJCQlnb3RvIG91dDsKKwkJeHMtPnN0b3JlX2dmbiA9 IChpbnQpIHY7CisJfQorCitvdXQ6CisJcmV0dXJuIGVycjsKK30KKworaW50IHhlbl9wdl9zZXR1 cF94cyh4ZW5ob3N0X3QgKnhoKQoreworCXN0cnVjdCB4ZW5zdG9yZV9wcml2YXRlICp4cyA9IHhz X3ByaXYoeGgpOworCisJaWYgKHhlbl9pbml0aWFsX2RvbWFpbigpKSB7CisJCXhzLT5kb21haW5f dHlwZSA9IFhTX0xPQ0FMOworCQl4cy0+c3RvcmVfZXZ0Y2huID0gMDsKKwkJeHMtPnN0b3JlX2dm biA9IDA7CisJfSBlbHNlIHsgLyogRnJvbnRlbmQgKi8KKwkJeHMtPmRvbWFpbl90eXBlID0gWFNf UFY7CisJCXhzLT5zdG9yZV9ldnRjaG4gPSB4ZW5fc3RhcnRfaW5mby0+c3RvcmVfZXZ0Y2huOwor CQl4cy0+c3RvcmVfZ2ZuID0geGVuX3N0YXJ0X2luZm8tPnN0b3JlX21mbjsKKwl9CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBfX2luaXQgeGVuYnVzX2luaXQodm9pZCkKK3sKKwlpbnQg ZXJyID0gMDsKKwlzdHJ1Y3QgeGVuc3RvcmVfcHJpdmF0ZSAqeHM7CisJeGVuaG9zdF90ICoqeGg7 CisJaW50IG5vdGlmaWVyID0gMDsKKworCWlmICgheGVuX2RvbWFpbigpKQorCQlyZXR1cm4gLUVO T0RFVjsKKworCXhlbmJ1c19yaW5nX29wc19pbml0KCk7CisKKwlmb3JfZWFjaF94ZW5ob3N0KHho KSB7CisJCSgqeGgpLT54ZW5zdG9yZV9wcml2YXRlID0ga3phbGxvYyhzaXplb2YoKnhzKSwgR0ZQ X0tFUk5FTCk7CisJCXhlbmhvc3Rfc2V0dXBfeHMoKnhoKTsKKwkJZXJyID0geGVuYnVzX3NldHVw KCp4aCk7CisJCWlmIChlcnIpCisJCQlnb3RvIG91dF9lcnJvcjsKKworCQkvKiBJbml0aWFsaXpl IHRoZSBpbnRlcmZhY2UgdG8geGVuc3RvcmUuICovCisJCWVyciA9IHhzX2luaXQoKnhoKTsKKwkJ aWYgKGVycikgeworCQkJcHJfd2FybigiRXJyb3IgaW5pdGlhbGl6aW5nIHhlbnN0b3JlIGNvbW1z OiAlaVxuIiwgZXJyKTsKKwkJCWdvdG8gb3V0X2Vycm9yOworCQl9CisKKwkJeHMgPSB4c19wcml2 KCp4aCk7CisKKwkJaWYgKCh4cy0+ZG9tYWluX3R5cGUgIT0gWFNfTE9DQUwpICYmCisJCSAgICAo eHMtPmRvbWFpbl90eXBlICE9IFhTX1VOS05PV04pKQorCQkgICAgbm90aWZpZXIrKzsKIAl9CiAK LQlpZiAoKHhlbl9zdG9yZV9kb21haW5fdHlwZSAhPSBYU19MT0NBTCkgJiYKLQkgICAgKHhlbl9z dG9yZV9kb21haW5fdHlwZSAhPSBYU19VTktOT1dOKSkKKwlpZiAobm90aWZpZXIpCiAJCXhlbl9y ZXN1bWVfbm90aWZpZXJfcmVnaXN0ZXIoJnhlbmJ1c19yZXN1bWVfbmIpOwogCiAjaWZkZWYgQ09O RklHX1hFTl9DT01QQVRfWEVORlMKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5i dXNfcHJvYmVfYmFja2VuZC5jIGIvZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1c19wcm9iZV9iYWNr ZW5kLmMKaW5kZXggZDNjNTNhOWRiNWUzLi5mMDMwZDZhYjNjMzEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMveGVuL3hlbmJ1cy94ZW5idXNfcHJvYmVfYmFja2VuZC5jCisrKyBiL2RyaXZlcnMveGVuL3hl bmJ1cy94ZW5idXNfcHJvYmVfYmFja2VuZC5jCkBAIC01Nyw3ICs1Nyw4IEBACiAjaW5jbHVkZSAi eGVuYnVzLmgiCiAKIC8qIGJhY2tlbmQvPHR5cGU+LzxmZS11dWlkPi88aWQ+ID0+IDx0eXBlPi08 ZmUtZG9taWQ+LTxpZD4gKi8KLXN0YXRpYyBpbnQgYmFja2VuZF9idXNfaWQoY2hhciBidXNfaWRb WEVOX0JVU19JRF9TSVpFXSwgY29uc3QgY2hhciAqbm9kZW5hbWUpCitzdGF0aWMgaW50IGJhY2tl bmRfYnVzX2lkKHN0cnVjdCB4ZW5fYnVzX3R5cGUgKmJ1cywgY2hhciBidXNfaWRbWEVOX0JVU19J RF9TSVpFXSwKKwkJCSAgY29uc3QgY2hhciAqbm9kZW5hbWUpCiB7CiAJaW50IGRvbWlkLCBlcnI7 CiAJY29uc3QgY2hhciAqZGV2aWQsICp0eXBlLCAqZnJvbnRlbmQ7CkBAIC03MywxNCArNzQsMTQg QEAgc3RhdGljIGludCBiYWNrZW5kX2J1c19pZChjaGFyIGJ1c19pZFtYRU5fQlVTX0lEX1NJWkVd LCBjb25zdCBjaGFyICpub2RlbmFtZSkKIAogCWRldmlkID0gc3RycmNocihub2RlbmFtZSwgJy8n KSArIDE7CiAKLQllcnIgPSB4ZW5idXNfZ2F0aGVyKFhCVF9OSUwsIG5vZGVuYW1lLCAiZnJvbnRl bmQtaWQiLCAiJWkiLCAmZG9taWQsCisJZXJyID0geGVuYnVzX2dhdGhlcihidXMtPnhoLCBYQlRf TklMLCBub2RlbmFtZSwgImZyb250ZW5kLWlkIiwgIiVpIiwgJmRvbWlkLAogCQkJICAgICJmcm9u dGVuZCIsIE5VTEwsICZmcm9udGVuZCwKIAkJCSAgICBOVUxMKTsKIAlpZiAoZXJyKQogCQlyZXR1 cm4gZXJyOwogCWlmIChzdHJsZW4oZnJvbnRlbmQpID09IDApCiAJCWVyciA9IC1FUkFOR0U7Ci0J aWYgKCFlcnIgJiYgIXhlbmJ1c19leGlzdHMoWEJUX05JTCwgZnJvbnRlbmQsICIiKSkKKwlpZiAo IWVyciAmJiAheGVuYnVzX2V4aXN0cyhidXMtPnhoLCBYQlRfTklMLCBmcm9udGVuZCwgIiIpKQog CQllcnIgPSAtRU5PRU5UOwogCWtmcmVlKGZyb250ZW5kKTsKIApAQCAtMTY1LDcgKzE2Niw3IEBA IHN0YXRpYyBpbnQgeGVuYnVzX3Byb2JlX2JhY2tlbmQoc3RydWN0IHhlbl9idXNfdHlwZSAqYnVz LCBjb25zdCBjaGFyICp0eXBlLAogCWlmICghbm9kZW5hbWUpCiAJCXJldHVybiAtRU5PTUVNOwog Ci0JZGlyID0geGVuYnVzX2RpcmVjdG9yeShYQlRfTklMLCBub2RlbmFtZSwgIiIsICZkaXJfbik7 CisJZGlyID0geGVuYnVzX2RpcmVjdG9yeShidXMtPnhoLCBYQlRfTklMLCBub2RlbmFtZSwgIiIs ICZkaXJfbik7CiAJaWYgKElTX0VSUihkaXIpKSB7CiAJCWtmcmVlKG5vZGVuYW1lKTsKIAkJcmV0 dXJuIFBUUl9FUlIoZGlyKTsKQEAgLTE4OSw2ICsxOTAsNyBAQCBzdGF0aWMgdm9pZCBmcm9udGVu ZF9jaGFuZ2VkKHN0cnVjdCB4ZW5idXNfd2F0Y2ggKndhdGNoLAogCiBzdGF0aWMgc3RydWN0IHhl bl9idXNfdHlwZSB4ZW5idXNfYmFja2VuZCA9IHsKIAkucm9vdCA9ICJiYWNrZW5kIiwKKwkueGgg PSBOVUxMLAkJLyogRmlsbGVkIGF0IHhlbmJ1c19wcm9iZV9iYWNrZW5kX2luaXQoKSAqLwogCS5s ZXZlbHMgPSAzLAkJLyogYmFja2VuZC90eXBlLzxmcm9udGVuZD4vPGlkPiAqLwogCS5nZXRfYnVz X2lkID0gYmFja2VuZF9idXNfaWQsCiAJLnByb2JlID0geGVuYnVzX3Byb2JlX2JhY2tlbmQsCkBA IC0yMjQsNyArMjI2LDcgQEAgc3RhdGljIGludCByZWFkX2Zyb250ZW5kX2RldGFpbHMoc3RydWN0 IHhlbmJ1c19kZXZpY2UgKnhlbmRldikKIAogaW50IHhlbmJ1c19kZXZfaXNfb25saW5lKHN0cnVj dCB4ZW5idXNfZGV2aWNlICpkZXYpCiB7Ci0JcmV0dXJuICEheGVuYnVzX3JlYWRfdW5zaWduZWQo ZGV2LT5ub2RlbmFtZSwgIm9ubGluZSIsIDApOworCXJldHVybiAhIXhlbmJ1c19yZWFkX3Vuc2ln bmVkKGRldi0+eGgsIGRldi0+bm9kZW5hbWUsICJvbmxpbmUiLCAwKTsKIH0KIEVYUE9SVF9TWU1C T0xfR1BMKHhlbmJ1c19kZXZfaXNfb25saW5lKTsKIApAQCAtMjQ0LDcgKzI0Niw3IEBAIHN0YXRp YyBpbnQgYmFja2VuZF9wcm9iZV9hbmRfd2F0Y2goc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpub3Rp ZmllciwKIHsKIAkvKiBFbnVtZXJhdGUgZGV2aWNlcyBpbiB4ZW5zdG9yZSBhbmQgd2F0Y2ggZm9y IGNoYW5nZXMuICovCiAJeGVuYnVzX3Byb2JlX2RldmljZXMoJnhlbmJ1c19iYWNrZW5kKTsKLQly ZWdpc3Rlcl94ZW5idXNfd2F0Y2goJmJlX3dhdGNoKTsKKwlyZWdpc3Rlcl94ZW5idXNfd2F0Y2go eGVuYnVzX2JhY2tlbmQueGgsJmJlX3dhdGNoKTsKIAogCXJldHVybiBOT1RJRllfRE9ORTsKIH0K QEAgLTI1OCwxMiArMjYwLDE1IEBAIHN0YXRpYyBpbnQgX19pbml0IHhlbmJ1c19wcm9iZV9iYWNr ZW5kX2luaXQodm9pZCkKIAogCURQUklOVEsoIiIpOwogCisJLyogQmFja2VuZHMgYWx3YXlzIHRh bGsgdG8gZGVmYXVsdCB4ZW5ob3N0ICovCisJeGVuYnVzX2JhY2tlbmQueGggPSB4aF9kZWZhdWx0 OworCiAJLyogUmVnaXN0ZXIgb3Vyc2VsdmVzIHdpdGggdGhlIGtlcm5lbCBidXMgc3Vic3lzdGVt ICovCiAJZXJyID0gYnVzX3JlZ2lzdGVyKCZ4ZW5idXNfYmFja2VuZC5idXMpOwogCWlmIChlcnIp CiAJCXJldHVybiBlcnI7CiAKLQlyZWdpc3Rlcl94ZW5zdG9yZV9ub3RpZmllcigmeGVuc3RvcmVf bm90aWZpZXIpOworCXJlZ2lzdGVyX3hlbnN0b3JlX25vdGlmaWVyKHhlbmJ1c19iYWNrZW5kLnho LCAmeGVuc3RvcmVfbm90aWZpZXIpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2 ZXJzL3hlbi94ZW5idXMveGVuYnVzX3Byb2JlX2Zyb250ZW5kLmMgYi9kcml2ZXJzL3hlbi94ZW5i dXMveGVuYnVzX3Byb2JlX2Zyb250ZW5kLmMKaW5kZXggM2VkYWI3Y2MwM2MzLi5mYTJmNzMzZDFm MWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfcHJvYmVfZnJvbnRlbmQu YworKysgYi9kcml2ZXJzL3hlbi94ZW5idXMveGVuYnVzX3Byb2JlX2Zyb250ZW5kLmMKQEAgLTIw LDYgKzIwLDcgQEAKICNpbmNsdWRlIDxhc20vcGFnZS5oPgogI2luY2x1ZGUgPGFzbS9wZ3RhYmxl Lmg+CiAjaW5jbHVkZSA8eGVuL2ludGVyZmFjZS94ZW4uaD4KKyNpbmNsdWRlIDx4ZW4veGVuaG9z dC5oPgogI2luY2x1ZGUgPGFzbS94ZW4vaHlwZXJ2aXNvci5oPgogI2luY2x1ZGUgPHhlbi94ZW5i dXMuaD4KICNpbmNsdWRlIDx4ZW4vZXZlbnRzLmg+CkBAIC0zMyw3ICszNCw4IEBACiAKIAogLyog ZGV2aWNlLzx0eXBlPi88aWQ+ID0+IDx0eXBlPi08aWQ+ICovCi1zdGF0aWMgaW50IGZyb250ZW5k X2J1c19pZChjaGFyIGJ1c19pZFtYRU5fQlVTX0lEX1NJWkVdLCBjb25zdCBjaGFyICpub2RlbmFt ZSkKK3N0YXRpYyBpbnQgZnJvbnRlbmRfYnVzX2lkKHN0cnVjdCB4ZW5fYnVzX3R5cGUgKmJ1cywg Y2hhciBidXNfaWRbWEVOX0JVU19JRF9TSVpFXSwKKwkJCQljb25zdCBjaGFyICpub2RlbmFtZSkK IHsKIAlub2RlbmFtZSA9IHN0cmNocihub2RlbmFtZSwgJy8nKTsKIAlpZiAoIW5vZGVuYW1lIHx8 IHN0cmxlbihub2RlbmFtZSArIDEpID49IFhFTl9CVVNfSURfU0laRSkgewpAQCAtMTAxLDEzICsx MDMsMTMgQEAgc3RhdGljIHZvaWQgeGVuYnVzX2Zyb250ZW5kX2RlbGF5ZWRfcmVzdW1lKHN0cnVj dCB3b3JrX3N0cnVjdCAqdykKIAogc3RhdGljIGludCB4ZW5idXNfZnJvbnRlbmRfZGV2X3Jlc3Vt ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CisJc3RydWN0IHhlbmJ1c19kZXZpY2UgKnhkZXYgPSB0 b194ZW5idXNfZGV2aWNlKGRldik7CisJc3RydWN0IHhlbnN0b3JlX3ByaXZhdGUgKnhzID0geHNf cHJpdih4ZGV2LT54aCk7CiAJLyoKIAkgKiBJZiB4ZW5zdG9yZWQgaXMgcnVubmluZyBpbiB0aGlz IGRvbWFpbiwgd2UgY2Fubm90IGFjY2VzcyB0aGUgYmFja2VuZAogCSAqIHN0YXRlIGF0IHRoZSBt b21lbnQsIHNvIHdlIG5lZWQgdG8gZGVmZXIgeGVuYnVzX2Rldl9yZXN1bWUKIAkgKi8KLQlpZiAo eGVuX3N0b3JlX2RvbWFpbl90eXBlID09IFhTX0xPQ0FMKSB7Ci0JCXN0cnVjdCB4ZW5idXNfZGV2 aWNlICp4ZGV2ID0gdG9feGVuYnVzX2RldmljZShkZXYpOwotCisJaWYgKHhzLT5kb21haW5fdHlw ZSA9PSBYU19MT0NBTCkgewogCQlzY2hlZHVsZV93b3JrKCZ4ZGV2LT53b3JrKTsKIAogCQlyZXR1 cm4gMDsKQEAgLTExOCw4ICsxMjAsMTAgQEAgc3RhdGljIGludCB4ZW5idXNfZnJvbnRlbmRfZGV2 X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAKIHN0YXRpYyBpbnQgeGVuYnVzX2Zyb250ZW5k X2Rldl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7Ci0JaWYgKHhlbl9zdG9yZV9kb21haW5f dHlwZSA9PSBYU19MT0NBTCkgewotCQlzdHJ1Y3QgeGVuYnVzX2RldmljZSAqeGRldiA9IHRvX3hl bmJ1c19kZXZpY2UoZGV2KTsKKwlzdHJ1Y3QgeGVuYnVzX2RldmljZSAqeGRldiA9IHRvX3hlbmJ1 c19kZXZpY2UoZGV2KTsKKwlzdHJ1Y3QgeGVuc3RvcmVfcHJpdmF0ZSAqeHMgPSB4c19wcml2KHhk ZXYtPnhoKTsKKworCWlmICh4cy0+ZG9tYWluX3R5cGUgPT0gWFNfTE9DQUwpIHsKIAkJSU5JVF9X T1JLKCZ4ZGV2LT53b3JrLCB4ZW5idXNfZnJvbnRlbmRfZGVsYXllZF9yZXN1bWUpOwogCX0KIApA QCAtMTM2LDYgKzE0MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyB4ZW5idXNf cG1fb3BzID0gewogCiBzdGF0aWMgc3RydWN0IHhlbl9idXNfdHlwZSB4ZW5idXNfZnJvbnRlbmQg PSB7CiAJLnJvb3QgPSAiZGV2aWNlIiwKKwkueGggPSBOVUxMLCAJLyogaW5pdGlhbGl6ZCBpbiB4 ZW5idXNfcHJvYmVfZnJvbnRlbmRfaW5pdCgpICovCiAJLmxldmVscyA9IDIsCQkvKiBkZXZpY2Uv dHlwZS88aWQ+ICovCiAJLmdldF9idXNfaWQgPSBmcm9udGVuZF9idXNfaWQsCiAJLnByb2JlID0g eGVuYnVzX3Byb2JlX2Zyb250ZW5kLApAQCAtMjQyLDcgKzI0Nyw3IEBAIHN0YXRpYyBpbnQgcHJp bnRfZGV2aWNlX3N0YXR1cyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpCiAJfSBlbHNl IGlmICh4ZW5kZXYtPnN0YXRlIDwgWGVuYnVzU3RhdGVDb25uZWN0ZWQpIHsKIAkJZW51bSB4ZW5i dXNfc3RhdGUgcnN0YXRlID0gWGVuYnVzU3RhdGVVbmtub3duOwogCQlpZiAoeGVuZGV2LT5vdGhl cmVuZCkKLQkJCXJzdGF0ZSA9IHhlbmJ1c19yZWFkX2RyaXZlcl9zdGF0ZSh4ZW5kZXYtPm90aGVy ZW5kKTsKKwkJCXJzdGF0ZSA9IHhlbmJ1c19yZWFkX2RyaXZlcl9zdGF0ZSh4ZW5kZXYsIHhlbmRl di0+b3RoZXJlbmQpOwogCQlwcl93YXJuKCJUaW1lb3V0IGNvbm5lY3RpbmcgdG8gZGV2aWNlOiAl cyAobG9jYWwgc3RhdGUgJWQsIHJlbW90ZSBzdGF0ZSAlZClcbiIsCiAJCQl4ZW5kZXYtPm5vZGVu YW1lLCB4ZW5kZXYtPnN0YXRlLCByc3RhdGUpOwogCX0KQEAgLTMzNSw3ICszNDAsNyBAQCBzdGF0 aWMgaW50IGJhY2tlbmRfc3RhdGU7CiBzdGF0aWMgdm9pZCB4ZW5idXNfcmVzZXRfYmFja2VuZF9z dGF0ZV9jaGFuZ2VkKHN0cnVjdCB4ZW5idXNfd2F0Y2ggKncsCiAJCQkJCWNvbnN0IGNoYXIgKnBh dGgsIGNvbnN0IGNoYXIgKnRva2VuKQogewotCWlmICh4ZW5idXNfc2NhbmYoWEJUX05JTCwgcGF0 aCwgIiIsICIlaSIsCisJaWYgKHhlbmJ1c19zY2FuZih4ZW5idXNfZnJvbnRlbmQueGgsIFhCVF9O SUwsIHBhdGgsICIiLCAiJWkiLAogCQkJICZiYWNrZW5kX3N0YXRlKSAhPSAxKQogCQliYWNrZW5k X3N0YXRlID0gWGVuYnVzU3RhdGVVbmtub3duOwogCXByaW50ayhLRVJOX0RFQlVHICJYRU5CVVM6 IGJhY2tlbmQgJXMgJXNcbiIsCkBAIC0zNzMsMjYgKzM3OCwyNyBAQCBzdGF0aWMgdm9pZCB4ZW5i dXNfcmVzZXRfZnJvbnRlbmQoY2hhciAqZmUsIGNoYXIgKmJlLCBpbnQgYmVfc3RhdGUpCiAJYmFj a2VuZF9zdGF0ZSA9IFhlbmJ1c1N0YXRlVW5rbm93bjsKIAogCXByX2luZm8oInRyaWdnZXJpbmcg cmVjb25uZWN0IG9uICVzXG4iLCBiZSk7Ci0JcmVnaXN0ZXJfeGVuYnVzX3dhdGNoKCZiZV93YXRj aCk7CisJcmVnaXN0ZXJfeGVuYnVzX3dhdGNoKHhlbmJ1c19mcm9udGVuZC54aCwgJmJlX3dhdGNo KTsKIAogCS8qIGZhbGwgdGhyb3VnaCB0byBmb3J3YXJkIGJhY2tlbmQgdG8gc3RhdGUgWGVuYnVz U3RhdGVJbml0aWFsaXNpbmcgKi8KIAlzd2l0Y2ggKGJlX3N0YXRlKSB7CiAJY2FzZSBYZW5idXNT dGF0ZUNvbm5lY3RlZDoKLQkJeGVuYnVzX3ByaW50ZihYQlRfTklMLCBmZSwgInN0YXRlIiwgIiVk IiwgWGVuYnVzU3RhdGVDbG9zaW5nKTsKKwkJeGVuYnVzX3ByaW50Zih4ZW5idXNfZnJvbnRlbmQu eGgsIFhCVF9OSUwsIGZlLAorCQkJCSJzdGF0ZSIsICIlZCIsIFhlbmJ1c1N0YXRlQ2xvc2luZyk7 CiAJCXhlbmJ1c19yZXNldF93YWl0X2Zvcl9iYWNrZW5kKGJlLCBYZW5idXNTdGF0ZUNsb3Npbmcp OwogCQkvKiBmYWxsIHRocm91Z2ggKi8KIAogCWNhc2UgWGVuYnVzU3RhdGVDbG9zaW5nOgotCQl4 ZW5idXNfcHJpbnRmKFhCVF9OSUwsIGZlLCAic3RhdGUiLCAiJWQiLCBYZW5idXNTdGF0ZUNsb3Nl ZCk7CisJCXhlbmJ1c19wcmludGYoeGVuYnVzX2Zyb250ZW5kLnhoLCBYQlRfTklMLCBmZSwgInN0 YXRlIiwgIiVkIiwgWGVuYnVzU3RhdGVDbG9zZWQpOwogCQl4ZW5idXNfcmVzZXRfd2FpdF9mb3Jf YmFja2VuZChiZSwgWGVuYnVzU3RhdGVDbG9zZWQpOwogCQkvKiBmYWxsIHRocm91Z2ggKi8KIAog CWNhc2UgWGVuYnVzU3RhdGVDbG9zZWQ6Ci0JCXhlbmJ1c19wcmludGYoWEJUX05JTCwgZmUsICJz dGF0ZSIsICIlZCIsIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nKTsKKwkJeGVuYnVzX3ByaW50Zih4 ZW5idXNfZnJvbnRlbmQueGgsIFhCVF9OSUwsIGZlLCAic3RhdGUiLCAiJWQiLCBYZW5idXNTdGF0 ZUluaXRpYWxpc2luZyk7CiAJCXhlbmJ1c19yZXNldF93YWl0X2Zvcl9iYWNrZW5kKGJlLCBYZW5i dXNTdGF0ZUluaXRXYWl0KTsKIAl9CiAKLQl1bnJlZ2lzdGVyX3hlbmJ1c193YXRjaCgmYmVfd2F0 Y2gpOworCXVucmVnaXN0ZXJfeGVuYnVzX3dhdGNoKHhlbmJ1c19mcm9udGVuZC54aCwgJmJlX3dh dGNoKTsKIAlwcl9pbmZvKCJyZWNvbm5lY3QgZG9uZSBvbiAlc1xuIiwgYmUpOwogCWtmcmVlKGJl X3dhdGNoLm5vZGUpOwogfQpAQCAtNDA2LDcgKzQxMiw3IEBAIHN0YXRpYyB2b2lkIHhlbmJ1c19j aGVja19mcm9udGVuZChjaGFyICpjbGFzcywgY2hhciAqZGV2KQogCWlmICghZnJvbnRlbmQpCiAJ CXJldHVybjsKIAotCWVyciA9IHhlbmJ1c19zY2FuZihYQlRfTklMLCBmcm9udGVuZCwgInN0YXRl IiwgIiVpIiwgJmZlX3N0YXRlKTsKKwllcnIgPSB4ZW5idXNfc2NhbmYoeGVuYnVzX2Zyb250ZW5k LnhoLCBYQlRfTklMLCBmcm9udGVuZCwgInN0YXRlIiwgIiVpIiwgJmZlX3N0YXRlKTsKIAlpZiAo ZXJyICE9IDEpCiAJCWdvdG8gb3V0OwogCkBAIC00MTUsMTAgKzQyMSwxMCBAQCBzdGF0aWMgdm9p ZCB4ZW5idXNfY2hlY2tfZnJvbnRlbmQoY2hhciAqY2xhc3MsIGNoYXIgKmRldikKIAljYXNlIFhl bmJ1c1N0YXRlQ2xvc2VkOgogCQlwcmludGsoS0VSTl9ERUJVRyAiWEVOQlVTOiBmcm9udGVuZCAl cyAlc1xuIiwKIAkJCQlmcm9udGVuZCwgeGVuYnVzX3N0cnN0YXRlKGZlX3N0YXRlKSk7Ci0JCWJh Y2tlbmQgPSB4ZW5idXNfcmVhZChYQlRfTklMLCBmcm9udGVuZCwgImJhY2tlbmQiLCBOVUxMKTsK KwkJYmFja2VuZCA9IHhlbmJ1c19yZWFkKHhlbmJ1c19mcm9udGVuZC54aCwgWEJUX05JTCwgZnJv bnRlbmQsICJiYWNrZW5kIiwgTlVMTCk7CiAJCWlmICghYmFja2VuZCB8fCBJU19FUlIoYmFja2Vu ZCkpCiAJCQlnb3RvIG91dDsKLQkJZXJyID0geGVuYnVzX3NjYW5mKFhCVF9OSUwsIGJhY2tlbmQs ICJzdGF0ZSIsICIlaSIsICZiZV9zdGF0ZSk7CisJCWVyciA9IHhlbmJ1c19zY2FuZih4ZW5idXNf ZnJvbnRlbmQueGgsIFhCVF9OSUwsIGJhY2tlbmQsICJzdGF0ZSIsICIlaSIsICZiZV9zdGF0ZSk7 CiAJCWlmIChlcnIgPT0gMSkKIAkJCXhlbmJ1c19yZXNldF9mcm9udGVuZChmcm9udGVuZCwgYmFj a2VuZCwgYmVfc3RhdGUpOwogCQlrZnJlZShiYWNrZW5kKTsKQEAgLTQzMCwxOCArNDM2LDE4IEBA IHN0YXRpYyB2b2lkIHhlbmJ1c19jaGVja19mcm9udGVuZChjaGFyICpjbGFzcywgY2hhciAqZGV2 KQogCWtmcmVlKGZyb250ZW5kKTsKIH0KIAotc3RhdGljIHZvaWQgeGVuYnVzX3Jlc2V0X3N0YXRl KHZvaWQpCitzdGF0aWMgdm9pZCB4ZW5idXNfcmVzZXRfc3RhdGUoeGVuaG9zdF90ICp4aCkKIHsK IAljaGFyICoqZGV2Y2xhc3MsICoqZGV2OwogCWludCBkZXZjbGFzc19uLCBkZXZfbjsKIAlpbnQg aSwgajsKIAotCWRldmNsYXNzID0geGVuYnVzX2RpcmVjdG9yeShYQlRfTklMLCAiZGV2aWNlIiwg IiIsICZkZXZjbGFzc19uKTsKKwlkZXZjbGFzcyA9IHhlbmJ1c19kaXJlY3RvcnkoeGgsIFhCVF9O SUwsICJkZXZpY2UiLCAiIiwgJmRldmNsYXNzX24pOwogCWlmIChJU19FUlIoZGV2Y2xhc3MpKQog CQlyZXR1cm47CiAKIAlmb3IgKGkgPSAwOyBpIDwgZGV2Y2xhc3NfbjsgaSsrKSB7Ci0JCWRldiA9 IHhlbmJ1c19kaXJlY3RvcnkoWEJUX05JTCwgImRldmljZSIsIGRldmNsYXNzW2ldLCAmZGV2X24p OworCQlkZXYgPSB4ZW5idXNfZGlyZWN0b3J5KHhoLCBYQlRfTklMLCAiZGV2aWNlIiwgZGV2Y2xh c3NbaV0sICZkZXZfbik7CiAJCWlmIChJU19FUlIoZGV2KSkKIAkJCWNvbnRpbnVlOwogCQlmb3Ig KGogPSAwOyBqIDwgZGV2X247IGorKykKQEAgLTQ1MywxNCArNDU5LDE0IEBAIHN0YXRpYyB2b2lk IHhlbmJ1c19yZXNldF9zdGF0ZSh2b2lkKQogCiBzdGF0aWMgaW50IGZyb250ZW5kX3Byb2JlX2Fu ZF93YXRjaChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5vdGlmaWVyLAogCQkJCSAgIHVuc2lnbmVk IGxvbmcgZXZlbnQsCi0JCQkJICAgdm9pZCAqZGF0YSkKKwkJCQkgICB2b2lkICp4aCkKIHsKIAkv KiByZXNldCBkZXZpY2VzIGluIENvbm5lY3RlZCBvciBDbG9zZWQgc3RhdGUgKi8KIAlpZiAoeGVu X2h2bV9kb21haW4oKSkKLQkJeGVuYnVzX3Jlc2V0X3N0YXRlKCk7CisJCXhlbmJ1c19yZXNldF9z dGF0ZSgoeGVuaG9zdF90ICopeGgpOwogCS8qIEVudW1lcmF0ZSBkZXZpY2VzIGluIHhlbnN0b3Jl IGFuZCB3YXRjaCBmb3IgY2hhbmdlcy4gKi8KIAl4ZW5idXNfcHJvYmVfZGV2aWNlcygmeGVuYnVz X2Zyb250ZW5kKTsKLQlyZWdpc3Rlcl94ZW5idXNfd2F0Y2goJmZlX3dhdGNoKTsKKwlyZWdpc3Rl cl94ZW5idXNfd2F0Y2goeGgsICZmZV93YXRjaCk7CiAKIAlyZXR1cm4gTk9USUZZX0RPTkU7CiB9 CkBAIC00NzUsMTIgKzQ4MSwxOSBAQCBzdGF0aWMgaW50IF9faW5pdCB4ZW5idXNfcHJvYmVfZnJv bnRlbmRfaW5pdCh2b2lkKQogCiAJRFBSSU5USygiIik7CiAKKwlpZiAoeGVuX2RyaXZlcl9kb21h aW4oKSAmJiB4ZW5fbmVzdGVkKCkpCisJCXhlbmJ1c19mcm9udGVuZC54aCA9IHhoX3JlbW90ZTsK KwllbHNlCisJCXhlbmJ1c19mcm9udGVuZC54aCA9IHhoX2RlZmF1bHQ7CisKIAkvKiBSZWdpc3Rl ciBvdXJzZWx2ZXMgd2l0aCB0aGUga2VybmVsIGJ1cyBzdWJzeXN0ZW0gKi8KLQllcnIgPSBidXNf cmVnaXN0ZXIoJnhlbmJ1c19mcm9udGVuZC5idXMpOwotCWlmIChlcnIpCi0JCXJldHVybiBlcnI7 CisJaWYgKHhlbmJ1c19mcm9udGVuZC54aCkgeworCQllcnIgPSBidXNfcmVnaXN0ZXIoJnhlbmJ1 c19mcm9udGVuZC5idXMpOworCQlpZiAoZXJyKQorCQkJcmV0dXJuIGVycjsKIAotCXJlZ2lzdGVy X3hlbnN0b3JlX25vdGlmaWVyKCZ4ZW5zdG9yZV9ub3RpZmllcik7CisJCXJlZ2lzdGVyX3hlbnN0 b3JlX25vdGlmaWVyKHhlbmJ1c19mcm9udGVuZC54aCwgJnhlbnN0b3JlX25vdGlmaWVyKTsKKwl9 CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNf eHMuYyBiL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfeHMuYwppbmRleCA3NGMyYjk0MTZiODgu LjM1Yzc3MWJlYTliNiAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1c194cy5j CisrKyBiL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfeHMuYwpAQCAtNzYsOCArNzYsNiBAQCBz dGF0aWMgREVDTEFSRV9XQUlUX1FVRVVFX0hFQUQoeHNfc3RhdGVfZW50ZXJfd3EpOwogLyogV2Fp dCBxdWV1ZSBmb3Igc3VzcGVuZCBoYW5kbGluZyB3YWl0aW5nIGZvciBjcml0aWNhbCByZWdpb24g YmVpbmcgZW1wdHkuICovCiBzdGF0aWMgREVDTEFSRV9XQUlUX1FVRVVFX0hFQUQoeHNfc3RhdGVf ZXhpdF93cSk7CiAKLS8qIExpc3Qgb2YgcmVnaXN0ZXJlZCB3YXRjaGVzLCBhbmQgYSBsb2NrIHRv IHByb3RlY3QgaXQuICovCi1zdGF0aWMgTElTVF9IRUFEKHdhdGNoZXMpOwogc3RhdGljIERFRklO RV9TUElOTE9DSyh3YXRjaGVzX2xvY2spOwogCiAvKiBMaXN0IG9mIHBlbmRpbmcgd2F0Y2ggY2Fs bGJhY2sgZXZlbnRzLCBhbmQgYSBsb2NrIHRvIHByb3RlY3QgaXQuICovCkBAIC0xNjYsOSArMTY0 LDkgQEAgc3RhdGljIGludCBnZXRfZXJyb3IoY29uc3QgY2hhciAqZXJyb3JzdHJpbmcpCiAJcmV0 dXJuIHhzZF9lcnJvcnNbaV0uZXJybnVtOwogfQogCi1zdGF0aWMgYm9vbCB4ZW5idXNfb2sodm9p ZCkKK3N0YXRpYyBib29sIHhlbmJ1c19vayhzdHJ1Y3QgeGVuc3RvcmVfcHJpdmF0ZSAqeHMpCiB7 Ci0Jc3dpdGNoICh4ZW5fc3RvcmVfZG9tYWluX3R5cGUpIHsKKwlzd2l0Y2ggKHhzLT5kb21haW5f dHlwZSkgewogCWNhc2UgWFNfTE9DQUw6CiAJCXN3aXRjaCAoc3lzdGVtX3N0YXRlKSB7CiAJCWNh c2UgU1lTVEVNX1BPV0VSX09GRjoKQEAgLTE5MCw5ICsxODgsOSBAQCBzdGF0aWMgYm9vbCB4ZW5i dXNfb2sodm9pZCkKIAlyZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIHRlc3RfcmVwbHko c3RydWN0IHhiX3JlcV9kYXRhICpyZXEpCitzdGF0aWMgYm9vbCB0ZXN0X3JlcGx5KHN0cnVjdCB4 ZW5zdG9yZV9wcml2YXRlICp4cywgc3RydWN0IHhiX3JlcV9kYXRhICpyZXEpCiB7Ci0JaWYgKHJl cS0+c3RhdGUgPT0geGJfcmVxX3N0YXRlX2dvdF9yZXBseSB8fCAheGVuYnVzX29rKCkpCisJaWYg KHJlcS0+c3RhdGUgPT0geGJfcmVxX3N0YXRlX2dvdF9yZXBseSB8fCAheGVuYnVzX29rKHhzKSkK IAkJcmV0dXJuIHRydWU7CiAKIAkvKiBNYWtlIHN1cmUgdG8gcmVyZWFkIHJlcS0+c3RhdGUgZWFj aCB0aW1lLiAqLwpAQCAtMjAxLDEyICsxOTksMTIgQEAgc3RhdGljIGJvb2wgdGVzdF9yZXBseShz dHJ1Y3QgeGJfcmVxX2RhdGEgKnJlcSkKIAlyZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyB2b2lk ICpyZWFkX3JlcGx5KHN0cnVjdCB4Yl9yZXFfZGF0YSAqcmVxKQorc3RhdGljIHZvaWQgKnJlYWRf cmVwbHkoc3RydWN0IHhlbnN0b3JlX3ByaXZhdGUgKnhzLCBzdHJ1Y3QgeGJfcmVxX2RhdGEgKnJl cSkKIHsKIAl3aGlsZSAocmVxLT5zdGF0ZSAhPSB4Yl9yZXFfc3RhdGVfZ290X3JlcGx5KSB7Ci0J CXdhaXRfZXZlbnQocmVxLT53cSwgdGVzdF9yZXBseShyZXEpKTsKKwkJd2FpdF9ldmVudChyZXEt PndxLCB0ZXN0X3JlcGx5KHhzLCByZXEpKTsKIAotCQlpZiAoIXhlbmJ1c19vaygpKQorCQlpZiAo IXhlbmJ1c19vayh4cykpCiAJCQkvKgogCQkJICogSWYgd2UgYXJlIGluIHRoZSBwcm9jZXNzIG9m IGJlaW5nIHNodXQtZG93biB0aGVyZSBpcwogCQkJICogbm8gcG9pbnQgb2YgdHJ5aW5nIHRvIGNv bnRhY3QgWGVuQnVzIC0gaXQgaXMgZWl0aGVyCkBAIC0yMjIsOSArMjIwLDEwIEBAIHN0YXRpYyB2 b2lkICpyZWFkX3JlcGx5KHN0cnVjdCB4Yl9yZXFfZGF0YSAqcmVxKQogCXJldHVybiByZXEtPmJv ZHk7CiB9CiAKLXN0YXRpYyB2b2lkIHhzX3NlbmQoc3RydWN0IHhiX3JlcV9kYXRhICpyZXEsIHN0 cnVjdCB4c2Rfc29ja21zZyAqbXNnKQorc3RhdGljIHZvaWQgeHNfc2VuZCh4ZW5ob3N0X3QgKnho LCBzdHJ1Y3QgeGJfcmVxX2RhdGEgKnJlcSwgc3RydWN0IHhzZF9zb2NrbXNnICptc2cpCiB7CiAJ Ym9vbCBub3RpZnk7CisJc3RydWN0IHhlbnN0b3JlX3ByaXZhdGUgKnhzID0geHNfcHJpdih4aCk7 CiAKIAlyZXEtPm1zZyA9ICptc2c7CiAJcmVxLT5lcnIgPSAwOwpAQCAtMjM2LDE5ICsyMzUsMTkg QEAgc3RhdGljIHZvaWQgeHNfc2VuZChzdHJ1Y3QgeGJfcmVxX2RhdGEgKnJlcSwgc3RydWN0IHhz ZF9zb2NrbXNnICptc2cpCiAJcmVxLT5tc2cucmVxX2lkID0geHNfcmVxdWVzdF9lbnRlcihyZXEp OwogCiAJbXV0ZXhfbG9jaygmeGJfd3JpdGVfbXV0ZXgpOwotCWxpc3RfYWRkX3RhaWwoJnJlcS0+ bGlzdCwgJnhiX3dyaXRlX2xpc3QpOwotCW5vdGlmeSA9IGxpc3RfaXNfc2luZ3VsYXIoJnhiX3dy aXRlX2xpc3QpOworCWxpc3RfYWRkX3RhaWwoJnJlcS0+bGlzdCwgJnhzLT54Yl93cml0ZV9saXN0 KTsKKwlub3RpZnkgPSBsaXN0X2lzX3Npbmd1bGFyKCZ4cy0+eGJfd3JpdGVfbGlzdCk7CiAJbXV0 ZXhfdW5sb2NrKCZ4Yl93cml0ZV9tdXRleCk7CiAKIAlpZiAobm90aWZ5KQotCQl3YWtlX3VwKCZ4 Yl93YWl0cSk7CisJCXdha2VfdXAoJnhzLT54Yl93YWl0cSk7CiB9CiAKLXN0YXRpYyB2b2lkICp4 c193YWl0X2Zvcl9yZXBseShzdHJ1Y3QgeGJfcmVxX2RhdGEgKnJlcSwgc3RydWN0IHhzZF9zb2Nr bXNnICptc2cpCitzdGF0aWMgdm9pZCAqeHNfd2FpdF9mb3JfcmVwbHkoc3RydWN0IHhlbnN0b3Jl X3ByaXZhdGUgKnhzLCBzdHJ1Y3QgeGJfcmVxX2RhdGEgKnJlcSwgc3RydWN0IHhzZF9zb2NrbXNn ICptc2cpCiB7CiAJdm9pZCAqcmV0OwogCi0JcmV0ID0gcmVhZF9yZXBseShyZXEpOworCXJldCA9 IHJlYWRfcmVwbHkoeHMsIHJlcSk7CiAKIAl4c19yZXF1ZXN0X2V4aXQocmVxKTsKIApAQCAtMjcx LDcgKzI3MCw3IEBAIHN0YXRpYyB2b2lkIHhzX3dha2VfdXAoc3RydWN0IHhiX3JlcV9kYXRhICpy ZXEpCiAJd2FrZV91cCgmcmVxLT53cSk7CiB9CiAKLWludCB4ZW5idXNfZGV2X3JlcXVlc3RfYW5k X3JlcGx5KHN0cnVjdCB4c2Rfc29ja21zZyAqbXNnLCB2b2lkICpwYXIpCitpbnQgeGVuYnVzX2Rl dl9yZXF1ZXN0X2FuZF9yZXBseSh4ZW5ob3N0X3QgKnhoLCBzdHJ1Y3QgeHNkX3NvY2ttc2cgKm1z Zywgdm9pZCAqcGFyKQogewogCXN0cnVjdCB4Yl9yZXFfZGF0YSAqcmVxOwogCXN0cnVjdCBrdmVj ICp2ZWM7CkBAIC0yODksMTQgKzI4OCwxNSBAQCBpbnQgeGVuYnVzX2Rldl9yZXF1ZXN0X2FuZF9y ZXBseShzdHJ1Y3QgeHNkX3NvY2ttc2cgKm1zZywgdm9pZCAqcGFyKQogCXJlcS0+Y2IgPSB4ZW5i dXNfZGV2X3F1ZXVlX3JlcGx5OwogCXJlcS0+cGFyID0gcGFyOwogCi0JeHNfc2VuZChyZXEsIG1z Zyk7CisJeHNfc2VuZCh4aCwgcmVxLCBtc2cpOwogCiAJcmV0dXJuIDA7CiB9CiBFWFBPUlRfU1lN Qk9MKHhlbmJ1c19kZXZfcmVxdWVzdF9hbmRfcmVwbHkpOwogCiAvKiBTZW5kIG1lc3NhZ2UgdG8g eHMsIGdldCBrbWFsbG9jJ2VkIHJlcGx5LiAgRVJSX1BUUigpIG9uIGVycm9yLiAqLwotc3RhdGlj IHZvaWQgKnhzX3RhbGt2KHN0cnVjdCB4ZW5idXNfdHJhbnNhY3Rpb24gdCwKK3N0YXRpYyB2b2lk ICp4c190YWxrdih4ZW5ob3N0X3QgKnhoLAorCQkgICAgICBzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0 aW9uIHQsCiAJCSAgICAgIGVudW0geHNkX3NvY2ttc2dfdHlwZSB0eXBlLAogCQkgICAgICBjb25z dCBzdHJ1Y3Qga3ZlYyAqaW92ZWMsCiAJCSAgICAgIHVuc2lnbmVkIGludCBudW1fdmVjcywKQEAg LTMwNyw2ICszMDcsNyBAQCBzdGF0aWMgdm9pZCAqeHNfdGFsa3Yoc3RydWN0IHhlbmJ1c190cmFu c2FjdGlvbiB0LAogCXZvaWQgKnJldCA9IE5VTEw7CiAJdW5zaWduZWQgaW50IGk7CiAJaW50IGVy cjsKKwlzdHJ1Y3QgeGVuc3RvcmVfcHJpdmF0ZSAqeHMgPSB4c19wcml2KHhoKTsKIAogCXJlcSA9 IGttYWxsb2Moc2l6ZW9mKCpyZXEpLCBHRlBfTk9JTyB8IF9fR0ZQX0hJR0gpOwogCWlmICghcmVx KQpAQCAtMzIzLDkgKzMyNCw5IEBAIHN0YXRpYyB2b2lkICp4c190YWxrdihzdHJ1Y3QgeGVuYnVz X3RyYW5zYWN0aW9uIHQsCiAJZm9yIChpID0gMDsgaSA8IG51bV92ZWNzOyBpKyspCiAJCW1zZy5s ZW4gKz0gaW92ZWNbaV0uaW92X2xlbjsKIAotCXhzX3NlbmQocmVxLCAmbXNnKTsKKwl4c19zZW5k KHhoLCByZXEsICZtc2cpOwogCi0JcmV0ID0geHNfd2FpdF9mb3JfcmVwbHkocmVxLCAmbXNnKTsK KwlyZXQgPSB4c193YWl0X2Zvcl9yZXBseSh4cywgcmVxLCAmbXNnKTsKIAlpZiAobGVuKQogCQkq bGVuID0gbXNnLmxlbjsKIApAQCAtMzQ4LDcgKzM0OSw3IEBAIHN0YXRpYyB2b2lkICp4c190YWxr dihzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0aW9uIHQsCiB9CiAKIC8qIFNpbXBsaWZpZWQgdmVyc2lv biBvZiB4c190YWxrdjogc2luZ2xlIG1lc3NhZ2UuICovCi1zdGF0aWMgdm9pZCAqeHNfc2luZ2xl KHN0cnVjdCB4ZW5idXNfdHJhbnNhY3Rpb24gdCwKK3N0YXRpYyB2b2lkICp4c19zaW5nbGUoeGVu aG9zdF90ICp4aCwgc3RydWN0IHhlbmJ1c190cmFuc2FjdGlvbiB0LAogCQkgICAgICAgZW51bSB4 c2Rfc29ja21zZ190eXBlIHR5cGUsCiAJCSAgICAgICBjb25zdCBjaGFyICpzdHJpbmcsCiAJCSAg ICAgICB1bnNpZ25lZCBpbnQgKmxlbikKQEAgLTM1Nyw3ICszNTgsNyBAQCBzdGF0aWMgdm9pZCAq eHNfc2luZ2xlKHN0cnVjdCB4ZW5idXNfdHJhbnNhY3Rpb24gdCwKIAogCWlvdmVjLmlvdl9iYXNl ID0gKHZvaWQgKilzdHJpbmc7CiAJaW92ZWMuaW92X2xlbiA9IHN0cmxlbihzdHJpbmcpICsgMTsK LQlyZXR1cm4geHNfdGFsa3YodCwgdHlwZSwgJmlvdmVjLCAxLCBsZW4pOworCXJldHVybiB4c190 YWxrdih4aCwgdCwgdHlwZSwgJmlvdmVjLCAxLCBsZW4pOwogfQogCiAvKiBNYW55IGNvbW1hbmRz IG9ubHkgbmVlZCBhbiBhY2ssIGRvbid0IGNhcmUgd2hhdCBpdCBzYXlzLiAqLwpAQCAtNDE1LDcg KzQxNiw3IEBAIHN0YXRpYyBjaGFyICoqc3BsaXQoY2hhciAqc3RyaW5ncywgdW5zaWduZWQgaW50 IGxlbiwgdW5zaWduZWQgaW50ICpudW0pCiAJcmV0dXJuIHJldDsKIH0KIAotY2hhciAqKnhlbmJ1 c19kaXJlY3Rvcnkoc3RydWN0IHhlbmJ1c190cmFuc2FjdGlvbiB0LAorY2hhciAqKnhlbmJ1c19k aXJlY3RvcnkoeGVuaG9zdF90ICp4aCwgc3RydWN0IHhlbmJ1c190cmFuc2FjdGlvbiB0LAogCQkJ Y29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpub2RlLCB1bnNpZ25lZCBpbnQgKm51bSkKIHsK IAljaGFyICpzdHJpbmdzLCAqcGF0aDsKQEAgLTQyNSw3ICs0MjYsNyBAQCBjaGFyICoqeGVuYnVz X2RpcmVjdG9yeShzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0aW9uIHQsCiAJaWYgKElTX0VSUihwYXRo KSkKIAkJcmV0dXJuIChjaGFyICoqKXBhdGg7CiAKLQlzdHJpbmdzID0geHNfc2luZ2xlKHQsIFhT X0RJUkVDVE9SWSwgcGF0aCwgJmxlbik7CisJc3RyaW5ncyA9IHhzX3NpbmdsZSh4aCwgdCwgWFNf RElSRUNUT1JZLCBwYXRoLCAmbGVuKTsKIAlrZnJlZShwYXRoKTsKIAlpZiAoSVNfRVJSKHN0cmlu Z3MpKQogCQlyZXR1cm4gKGNoYXIgKiopc3RyaW5nczsKQEAgLTQzNSwxMyArNDM2LDEzIEBAIGNo YXIgKip4ZW5idXNfZGlyZWN0b3J5KHN0cnVjdCB4ZW5idXNfdHJhbnNhY3Rpb24gdCwKIEVYUE9S VF9TWU1CT0xfR1BMKHhlbmJ1c19kaXJlY3RvcnkpOwogCiAvKiBDaGVjayBpZiBhIHBhdGggZXhp c3RzLiBSZXR1cm4gMSBpZiBpdCBkb2VzLiAqLwotaW50IHhlbmJ1c19leGlzdHMoc3RydWN0IHhl bmJ1c190cmFuc2FjdGlvbiB0LAoraW50IHhlbmJ1c19leGlzdHMoeGVuaG9zdF90ICp4aCwgc3Ry dWN0IHhlbmJ1c190cmFuc2FjdGlvbiB0LAogCQkgIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hh ciAqbm9kZSkKIHsKIAljaGFyICoqZDsKIAlpbnQgZGlyX247CiAKLQlkID0geGVuYnVzX2RpcmVj dG9yeSh0LCBkaXIsIG5vZGUsICZkaXJfbik7CisJZCA9IHhlbmJ1c19kaXJlY3RvcnkoeGgsIHQs IGRpciwgbm9kZSwgJmRpcl9uKTsKIAlpZiAoSVNfRVJSKGQpKQogCQlyZXR1cm4gMDsKIAlrZnJl ZShkKTsKQEAgLTQ1Myw3ICs0NTQsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTCh4ZW5idXNfZXhpc3Rz KTsKICAqIFJldHVybnMgYSBrbWFsbG9jZWQgdmFsdWU6IGNhbGwgZnJlZSgpIG9uIGl0IGFmdGVy IHVzZS4KICAqIGxlbiBpbmRpY2F0ZXMgbGVuZ3RoIGluIGJ5dGVzLgogICovCi12b2lkICp4ZW5i dXNfcmVhZChzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0aW9uIHQsCit2b2lkICp4ZW5idXNfcmVhZCh4 ZW5ob3N0X3QgKnhoLCBzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0aW9uIHQsCiAJCSAgY29uc3QgY2hh ciAqZGlyLCBjb25zdCBjaGFyICpub2RlLCB1bnNpZ25lZCBpbnQgKmxlbikKIHsKIAljaGFyICpw YXRoOwpAQCAtNDYzLDcgKzQ2NCw3IEBAIHZvaWQgKnhlbmJ1c19yZWFkKHN0cnVjdCB4ZW5idXNf dHJhbnNhY3Rpb24gdCwKIAlpZiAoSVNfRVJSKHBhdGgpKQogCQlyZXR1cm4gKHZvaWQgKilwYXRo OwogCi0JcmV0ID0geHNfc2luZ2xlKHQsIFhTX1JFQUQsIHBhdGgsIGxlbik7CisJcmV0ID0geHNf c2luZ2xlKHhoLCB0LCBYU19SRUFELCBwYXRoLCBsZW4pOwogCWtmcmVlKHBhdGgpOwogCXJldHVy biByZXQ7CiB9CkBAIC00NzIsNyArNDczLDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwoeGVuYnVzX3Jl YWQpOwogLyogV3JpdGUgdGhlIHZhbHVlIG9mIGEgc2luZ2xlIGZpbGUuCiAgKiBSZXR1cm5zIC1l cnIgb24gZmFpbHVyZS4KICAqLwotaW50IHhlbmJ1c193cml0ZShzdHJ1Y3QgeGVuYnVzX3RyYW5z YWN0aW9uIHQsCitpbnQgeGVuYnVzX3dyaXRlKHhlbmhvc3RfdCAqeGgsIHN0cnVjdCB4ZW5idXNf dHJhbnNhY3Rpb24gdCwKIAkJIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqbm9kZSwgY29u c3QgY2hhciAqc3RyaW5nKQogewogCWNvbnN0IGNoYXIgKnBhdGg7CkBAIC00ODgsMTQgKzQ4OSwx NCBAQCBpbnQgeGVuYnVzX3dyaXRlKHN0cnVjdCB4ZW5idXNfdHJhbnNhY3Rpb24gdCwKIAlpb3Zl Y1sxXS5pb3ZfYmFzZSA9ICh2b2lkICopc3RyaW5nOwogCWlvdmVjWzFdLmlvdl9sZW4gPSBzdHJs ZW4oc3RyaW5nKTsKIAotCXJldCA9IHhzX2Vycm9yKHhzX3RhbGt2KHQsIFhTX1dSSVRFLCBpb3Zl YywgQVJSQVlfU0laRShpb3ZlYyksIE5VTEwpKTsKKwlyZXQgPSB4c19lcnJvcih4c190YWxrdih4 aCwgdCwgWFNfV1JJVEUsIGlvdmVjLCBBUlJBWV9TSVpFKGlvdmVjKSwgTlVMTCkpOwogCWtmcmVl KHBhdGgpOwogCXJldHVybiByZXQ7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh4ZW5idXNfd3JpdGUp OwogCiAvKiBDcmVhdGUgYSBuZXcgZGlyZWN0b3J5LiAqLwotaW50IHhlbmJ1c19ta2RpcihzdHJ1 Y3QgeGVuYnVzX3RyYW5zYWN0aW9uIHQsCitpbnQgeGVuYnVzX21rZGlyKHhlbmhvc3RfdCAqeGgs IHN0cnVjdCB4ZW5idXNfdHJhbnNhY3Rpb24gdCwKIAkJIGNvbnN0IGNoYXIgKmRpciwgY29uc3Qg Y2hhciAqbm9kZSkKIHsKIAljaGFyICpwYXRoOwpAQCAtNTA1LDE0ICs1MDYsMTQgQEAgaW50IHhl bmJ1c19ta2RpcihzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0aW9uIHQsCiAJaWYgKElTX0VSUihwYXRo KSkKIAkJcmV0dXJuIFBUUl9FUlIocGF0aCk7CiAKLQlyZXQgPSB4c19lcnJvcih4c19zaW5nbGUo dCwgWFNfTUtESVIsIHBhdGgsIE5VTEwpKTsKKwlyZXQgPSB4c19lcnJvcih4c19zaW5nbGUoeGgs IHQsIFhTX01LRElSLCBwYXRoLCBOVUxMKSk7CiAJa2ZyZWUocGF0aCk7CiAJcmV0dXJuIHJldDsK IH0KIEVYUE9SVF9TWU1CT0xfR1BMKHhlbmJ1c19ta2Rpcik7CiAKIC8qIERlc3Ryb3kgYSBmaWxl IG9yIGRpcmVjdG9yeSAoZGlyZWN0b3JpZXMgbXVzdCBiZSBlbXB0eSkuICovCi1pbnQgeGVuYnVz X3JtKHN0cnVjdCB4ZW5idXNfdHJhbnNhY3Rpb24gdCwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBj aGFyICpub2RlKQoraW50IHhlbmJ1c19ybSh4ZW5ob3N0X3QgKnhoLHN0cnVjdCB4ZW5idXNfdHJh bnNhY3Rpb24gdCwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpub2RlKQogewogCWNoYXIg KnBhdGg7CiAJaW50IHJldDsKQEAgLTUyMSw3ICs1MjIsNyBAQCBpbnQgeGVuYnVzX3JtKHN0cnVj dCB4ZW5idXNfdHJhbnNhY3Rpb24gdCwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpub2Rl KQogCWlmIChJU19FUlIocGF0aCkpCiAJCXJldHVybiBQVFJfRVJSKHBhdGgpOwogCi0JcmV0ID0g eHNfZXJyb3IoeHNfc2luZ2xlKHQsIFhTX1JNLCBwYXRoLCBOVUxMKSk7CisJcmV0ID0geHNfZXJy b3IoeHNfc2luZ2xlKHhoLCB0LCBYU19STSwgcGF0aCwgTlVMTCkpOwogCWtmcmVlKHBhdGgpOwog CXJldHVybiByZXQ7CiB9CkBAIC01MzAsMTEgKzUzMSwxMSBAQCBFWFBPUlRfU1lNQk9MX0dQTCh4 ZW5idXNfcm0pOwogLyogU3RhcnQgYSB0cmFuc2FjdGlvbjogY2hhbmdlcyBieSBvdGhlcnMgd2ls bCBub3QgYmUgc2VlbiBkdXJpbmcgdGhpcwogICogdHJhbnNhY3Rpb24sIGFuZCBjaGFuZ2VzIHdp bGwgbm90IGJlIHZpc2libGUgdG8gb3RoZXJzIHVudGlsIGVuZC4KICAqLwotaW50IHhlbmJ1c190 cmFuc2FjdGlvbl9zdGFydChzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0aW9uICp0KQoraW50IHhlbmJ1 c190cmFuc2FjdGlvbl9zdGFydCh4ZW5ob3N0X3QgKnhoLCBzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0 aW9uICp0KQogewogCWNoYXIgKmlkX3N0cjsKIAotCWlkX3N0ciA9IHhzX3NpbmdsZShYQlRfTklM LCBYU19UUkFOU0FDVElPTl9TVEFSVCwgIiIsIE5VTEwpOworCWlkX3N0ciA9IHhzX3NpbmdsZSh4 aCwgWEJUX05JTCwgWFNfVFJBTlNBQ1RJT05fU1RBUlQsICIiLCBOVUxMKTsKIAlpZiAoSVNfRVJS KGlkX3N0cikpCiAJCXJldHVybiBQVFJfRVJSKGlkX3N0cik7CiAKQEAgLTU0Nyw3ICs1NDgsNyBA QCBFWFBPUlRfU1lNQk9MX0dQTCh4ZW5idXNfdHJhbnNhY3Rpb25fc3RhcnQpOwogLyogRW5kIGEg dHJhbnNhY3Rpb24uCiAgKiBJZiBhYmFuZG9uIGlzIHRydWUsIHRyYW5zYWN0aW9uIGlzIGRpc2Nh cmRlZCBpbnN0ZWFkIG9mIGNvbW1pdHRlZC4KICAqLwotaW50IHhlbmJ1c190cmFuc2FjdGlvbl9l bmQoc3RydWN0IHhlbmJ1c190cmFuc2FjdGlvbiB0LCBpbnQgYWJvcnQpCitpbnQgeGVuYnVzX3Ry YW5zYWN0aW9uX2VuZCh4ZW5ob3N0X3QgKnhoLCBzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0aW9uIHQs IGludCBhYm9ydCkKIHsKIAljaGFyIGFib3J0c3RyWzJdOwogCkBAIC01NTYsMTkgKzU1NywxOSBA QCBpbnQgeGVuYnVzX3RyYW5zYWN0aW9uX2VuZChzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0aW9uIHQs IGludCBhYm9ydCkKIAllbHNlCiAJCXN0cmNweShhYm9ydHN0ciwgIlQiKTsKIAotCXJldHVybiB4 c19lcnJvcih4c19zaW5nbGUodCwgWFNfVFJBTlNBQ1RJT05fRU5ELCBhYm9ydHN0ciwgTlVMTCkp OworCXJldHVybiB4c19lcnJvcih4c19zaW5nbGUoeGgsIHQsIFhTX1RSQU5TQUNUSU9OX0VORCwg YWJvcnRzdHIsIE5VTEwpKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHhlbmJ1c190cmFuc2FjdGlv bl9lbmQpOwogCiAvKiBTaW5nbGUgcmVhZCBhbmQgc2NhbmY6IHJldHVybnMgLWVycm5vIG9yIG51 bSBzY2FubmVkLiAqLwotaW50IHhlbmJ1c19zY2FuZihzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0aW9u IHQsCitpbnQgeGVuYnVzX3NjYW5mKHhlbmhvc3RfdCAqeGgsIHN0cnVjdCB4ZW5idXNfdHJhbnNh Y3Rpb24gdCwKIAkJIGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqbm9kZSwgY29uc3QgY2hh ciAqZm10LCAuLi4pCiB7CiAJdmFfbGlzdCBhcDsKIAlpbnQgcmV0OwogCWNoYXIgKnZhbDsKIAot CXZhbCA9IHhlbmJ1c19yZWFkKHQsIGRpciwgbm9kZSwgTlVMTCk7CisJdmFsID0geGVuYnVzX3Jl YWQoeGgsIHQsIGRpciwgbm9kZSwgTlVMTCk7CiAJaWYgKElTX0VSUih2YWwpKQogCQlyZXR1cm4g UFRSX0VSUih2YWwpOwogCkBAIC01ODQsMTMgKzU4NSwxMyBAQCBpbnQgeGVuYnVzX3NjYW5mKHN0 cnVjdCB4ZW5idXNfdHJhbnNhY3Rpb24gdCwKIEVYUE9SVF9TWU1CT0xfR1BMKHhlbmJ1c19zY2Fu Zik7CiAKIC8qIFJlYWQgYW4gKG9wdGlvbmFsKSB1bnNpZ25lZCB2YWx1ZS4gKi8KLXVuc2lnbmVk IGludCB4ZW5idXNfcmVhZF91bnNpZ25lZChjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKm5v ZGUsCit1bnNpZ25lZCBpbnQgeGVuYnVzX3JlYWRfdW5zaWduZWQoeGVuaG9zdF90ICp4aCwgY29u c3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpub2RlLAogCQkJCSAgdW5zaWduZWQgaW50IGRlZmF1 bHRfdmFsKQogewogCXVuc2lnbmVkIGludCB2YWw7CiAJaW50IHJldDsKIAotCXJldCA9IHhlbmJ1 c19zY2FuZihYQlRfTklMLCBkaXIsIG5vZGUsICIldSIsICZ2YWwpOworCXJldCA9IHhlbmJ1c19z Y2FuZih4aCwgWEJUX05JTCwgZGlyLCBub2RlLCAiJXUiLCAmdmFsKTsKIAlpZiAocmV0IDw9IDAp CiAJCXZhbCA9IGRlZmF1bHRfdmFsOwogCkBAIC01OTksNyArNjAwLDcgQEAgdW5zaWduZWQgaW50 IHhlbmJ1c19yZWFkX3Vuc2lnbmVkKGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqbm9kZSwK IEVYUE9SVF9TWU1CT0xfR1BMKHhlbmJ1c19yZWFkX3Vuc2lnbmVkKTsKIAogLyogU2luZ2xlIHBy aW50ZiBhbmQgd3JpdGU6IHJldHVybnMgLWVycm5vIG9yIDAuICovCi1pbnQgeGVuYnVzX3ByaW50 ZihzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0aW9uIHQsCitpbnQgeGVuYnVzX3ByaW50Zih4ZW5ob3N0 X3QgKnhoLCBzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0aW9uIHQsCiAJCSAgY29uc3QgY2hhciAqZGly LCBjb25zdCBjaGFyICpub2RlLCBjb25zdCBjaGFyICpmbXQsIC4uLikKIHsKIAl2YV9saXN0IGFw OwpAQCAtNjEzLDcgKzYxNCw3IEBAIGludCB4ZW5idXNfcHJpbnRmKHN0cnVjdCB4ZW5idXNfdHJh bnNhY3Rpb24gdCwKIAlpZiAoIWJ1ZikKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQlyZXQgPSB4ZW5i dXNfd3JpdGUodCwgZGlyLCBub2RlLCBidWYpOworCXJldCA9IHhlbmJ1c193cml0ZSh4aCwgdCwg ZGlyLCBub2RlLCBidWYpOwogCiAJa2ZyZWUoYnVmKTsKIApAQCAtNjIyLDcgKzYyMyw3IEBAIGlu dCB4ZW5idXNfcHJpbnRmKHN0cnVjdCB4ZW5idXNfdHJhbnNhY3Rpb24gdCwKIEVYUE9SVF9TWU1C T0xfR1BMKHhlbmJ1c19wcmludGYpOwogCiAvKiBUYWtlcyB0dXBsZXMgb2YgbmFtZXMsIHNjYW5m LXN0eWxlIGFyZ3MsIGFuZCB2b2lkICoqLCBOVUxMIHRlcm1pbmF0ZWQuICovCi1pbnQgeGVuYnVz X2dhdGhlcihzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0aW9uIHQsIGNvbnN0IGNoYXIgKmRpciwgLi4u KQoraW50IHhlbmJ1c19nYXRoZXIoeGVuaG9zdF90ICp4aCwgc3RydWN0IHhlbmJ1c190cmFuc2Fj dGlvbiB0LCBjb25zdCBjaGFyICpkaXIsIC4uLikKIHsKIAl2YV9saXN0IGFwOwogCWNvbnN0IGNo YXIgKm5hbWU7CkBAIC02MzQsNyArNjM1LDcgQEAgaW50IHhlbmJ1c19nYXRoZXIoc3RydWN0IHhl bmJ1c190cmFuc2FjdGlvbiB0LCBjb25zdCBjaGFyICpkaXIsIC4uLikKIAkJdm9pZCAqcmVzdWx0 ID0gdmFfYXJnKGFwLCB2b2lkICopOwogCQljaGFyICpwOwogCi0JCXAgPSB4ZW5idXNfcmVhZCh0 LCBkaXIsIG5hbWUsIE5VTEwpOworCQlwID0geGVuYnVzX3JlYWQoeGgsIHQsIGRpciwgbmFtZSwg TlVMTCk7CiAJCWlmIChJU19FUlIocCkpIHsKIAkJCXJldCA9IFBUUl9FUlIocCk7CiAJCQlicmVh azsKQEAgLTY1MSw3ICs2NTIsNyBAQCBpbnQgeGVuYnVzX2dhdGhlcihzdHJ1Y3QgeGVuYnVzX3Ry YW5zYWN0aW9uIHQsIGNvbnN0IGNoYXIgKmRpciwgLi4uKQogfQogRVhQT1JUX1NZTUJPTF9HUEwo eGVuYnVzX2dhdGhlcik7CiAKLXN0YXRpYyBpbnQgeHNfd2F0Y2goY29uc3QgY2hhciAqcGF0aCwg Y29uc3QgY2hhciAqdG9rZW4pCitzdGF0aWMgaW50IHhzX3dhdGNoKHhlbmhvc3RfdCAqeGgsIGNv bnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKnRva2VuKQogewogCXN0cnVjdCBrdmVjIGlvdlsy XTsKIApAQCAtNjYwLDExICs2NjEsMTEgQEAgc3RhdGljIGludCB4c193YXRjaChjb25zdCBjaGFy ICpwYXRoLCBjb25zdCBjaGFyICp0b2tlbikKIAlpb3ZbMV0uaW92X2Jhc2UgPSAodm9pZCAqKXRv a2VuOwogCWlvdlsxXS5pb3ZfbGVuID0gc3RybGVuKHRva2VuKSArIDE7CiAKLQlyZXR1cm4geHNf ZXJyb3IoeHNfdGFsa3YoWEJUX05JTCwgWFNfV0FUQ0gsIGlvdiwKKwlyZXR1cm4geHNfZXJyb3Io eHNfdGFsa3YoeGgsIFhCVF9OSUwsIFhTX1dBVENILCBpb3YsCiAJCQkJIEFSUkFZX1NJWkUoaW92 KSwgTlVMTCkpOwogfQogCi1zdGF0aWMgaW50IHhzX3Vud2F0Y2goY29uc3QgY2hhciAqcGF0aCwg Y29uc3QgY2hhciAqdG9rZW4pCitzdGF0aWMgaW50IHhzX3Vud2F0Y2goeGVuaG9zdF90ICp4aCwg Y29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqdG9rZW4pCiB7CiAJc3RydWN0IGt2ZWMgaW92 WzJdOwogCkBAIC02NzMsMjQgKzY3NCwyNSBAQCBzdGF0aWMgaW50IHhzX3Vud2F0Y2goY29uc3Qg Y2hhciAqcGF0aCwgY29uc3QgY2hhciAqdG9rZW4pCiAJaW92WzFdLmlvdl9iYXNlID0gKGNoYXIg Kil0b2tlbjsKIAlpb3ZbMV0uaW92X2xlbiA9IHN0cmxlbih0b2tlbikgKyAxOwogCi0JcmV0dXJu IHhzX2Vycm9yKHhzX3RhbGt2KFhCVF9OSUwsIFhTX1VOV0FUQ0gsIGlvdiwKKwlyZXR1cm4geHNf ZXJyb3IoeHNfdGFsa3YoeGgsIFhCVF9OSUwsIFhTX1VOV0FUQ0gsIGlvdiwKIAkJCQkgQVJSQVlf U0laRShpb3YpLCBOVUxMKSk7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgeGVuYnVzX3dhdGNoICpmaW5k X3dhdGNoKGNvbnN0IGNoYXIgKnRva2VuKQorc3RhdGljIHN0cnVjdCB4ZW5idXNfd2F0Y2ggKmZp bmRfd2F0Y2goeGVuaG9zdF90ICp4aCwgY29uc3QgY2hhciAqdG9rZW4pCiB7CiAJc3RydWN0IHhl bmJ1c193YXRjaCAqaSwgKmNtcDsKKwlzdHJ1Y3QgeGVuc3RvcmVfcHJpdmF0ZSAqeHMgPSB4c19w cml2KHhoKTsKIAogCWNtcCA9ICh2b2lkICopc2ltcGxlX3N0cnRvdWwodG9rZW4sIE5VTEwsIDE2 KTsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnkoaSwgJndhdGNoZXMsIGxpc3QpCisJbGlzdF9mb3Jf ZWFjaF9lbnRyeShpLCAmeHMtPndhdGNoZXMsIGxpc3QpCiAJCWlmIChpID09IGNtcCkKIAkJCXJl dHVybiBpOwogCiAJcmV0dXJuIE5VTEw7CiB9CiAKLWludCB4c193YXRjaF9tc2coc3RydWN0IHhz X3dhdGNoX2V2ZW50ICpldmVudCkKK2ludCB4c193YXRjaF9tc2coeGVuaG9zdF90ICp4aCwgc3Ry dWN0IHhzX3dhdGNoX2V2ZW50ICpldmVudCkKIHsKIAlpZiAoY291bnRfc3RyaW5ncyhldmVudC0+ Ym9keSwgZXZlbnQtPmxlbikgIT0gMikgewogCQlrZnJlZShldmVudCk7CkBAIC03MDAsNyArNzAy LDcgQEAgaW50IHhzX3dhdGNoX21zZyhzdHJ1Y3QgeHNfd2F0Y2hfZXZlbnQgKmV2ZW50KQogCWV2 ZW50LT50b2tlbiA9IChjb25zdCBjaGFyICopc3RyY2hyKGV2ZW50LT5ib2R5LCAnXDAnKSArIDE7 CiAKIAlzcGluX2xvY2soJndhdGNoZXNfbG9jayk7Ci0JZXZlbnQtPmhhbmRsZSA9IGZpbmRfd2F0 Y2goZXZlbnQtPnRva2VuKTsKKwlldmVudC0+aGFuZGxlID0gZmluZF93YXRjaCh4aCwgZXZlbnQt PnRva2VuKTsKIAlpZiAoZXZlbnQtPmhhbmRsZSAhPSBOVUxMKSB7CiAJCXNwaW5fbG9jaygmd2F0 Y2hfZXZlbnRzX2xvY2spOwogCQlsaXN0X2FkZF90YWlsKCZldmVudC0+bGlzdCwgJndhdGNoX2V2 ZW50cyk7CkBAIC03MTksNyArNzIxLDcgQEAgaW50IHhzX3dhdGNoX21zZyhzdHJ1Y3QgeHNfd2F0 Y2hfZXZlbnQgKmV2ZW50KQogICogc28gaWYgd2UgYXJlIHJ1bm5pbmcgb24gYW55dGhpbmcgb2xk ZXIgdGhhbiA0IGRvIG5vdCBhdHRlbXB0IHRvIHJlYWQKICAqIGNvbnRyb2wvcGxhdGZvcm0tZmVh dHVyZS14c19yZXNldF93YXRjaGVzLgogICovCi1zdGF0aWMgYm9vbCB4ZW5fc3RyaWN0X3hlbmJ1 c19xdWlyayh2b2lkKQorc3RhdGljIGJvb2wgeGVuX3N0cmljdF94ZW5idXNfcXVpcmsoeGVuaG9z dF90ICp4aCkKIHsKICNpZmRlZiBDT05GSUdfWDg2CiAJdWludDMyX3QgZWF4LCBlYngsIGVjeCwg ZWR4LCBiYXNlOwpAQCAtNzMzLDQyICs3MzUsNDQgQEAgc3RhdGljIGJvb2wgeGVuX3N0cmljdF94 ZW5idXNfcXVpcmsodm9pZCkKIAlyZXR1cm4gZmFsc2U7CiAKIH0KLXN0YXRpYyB2b2lkIHhzX3Jl c2V0X3dhdGNoZXModm9pZCkKK3N0YXRpYyB2b2lkIHhzX3Jlc2V0X3dhdGNoZXMoeGVuaG9zdF90 ICp4aCkKIHsKIAlpbnQgZXJyOwogCiAJaWYgKCF4ZW5faHZtX2RvbWFpbigpIHx8IHhlbl9pbml0 aWFsX2RvbWFpbigpKQogCQlyZXR1cm47CiAKLQlpZiAoeGVuX3N0cmljdF94ZW5idXNfcXVpcmso KSkKKwlpZiAoeGVuX3N0cmljdF94ZW5idXNfcXVpcmsoeGgpKQogCQlyZXR1cm47CiAKLQlpZiAo IXhlbmJ1c19yZWFkX3Vuc2lnbmVkKCJjb250cm9sIiwKKwlpZiAoIXhlbmJ1c19yZWFkX3Vuc2ln bmVkKHhoLCAiY29udHJvbCIsCiAJCQkJICAicGxhdGZvcm0tZmVhdHVyZS14c19yZXNldF93YXRj aGVzIiwgMCkpCiAJCXJldHVybjsKIAotCWVyciA9IHhzX2Vycm9yKHhzX3NpbmdsZShYQlRfTklM LCBYU19SRVNFVF9XQVRDSEVTLCAiIiwgTlVMTCkpOworCWVyciA9IHhzX2Vycm9yKHhzX3Npbmds ZSh4aCwgWEJUX05JTCwgWFNfUkVTRVRfV0FUQ0hFUywgIiIsIE5VTEwpKTsKIAlpZiAoZXJyICYm IGVyciAhPSAtRUVYSVNUKQogCQlwcl93YXJuKCJ4c19yZXNldF93YXRjaGVzIGZhaWxlZDogJWRc biIsIGVycik7CiB9CiAKIC8qIFJlZ2lzdGVyIGNhbGxiYWNrIHRvIHdhdGNoIHRoaXMgbm9kZS4g Ki8KLWludCByZWdpc3Rlcl94ZW5idXNfd2F0Y2goc3RydWN0IHhlbmJ1c193YXRjaCAqd2F0Y2gp CitpbnQgcmVnaXN0ZXJfeGVuYnVzX3dhdGNoKHhlbmhvc3RfdCAqeGgsIHN0cnVjdCB4ZW5idXNf d2F0Y2ggKndhdGNoKQogewogCS8qIFBvaW50ZXIgaW4gYXNjaWkgaXMgdGhlIHRva2VuLiAqLwog CWNoYXIgdG9rZW5bc2l6ZW9mKHdhdGNoKSAqIDIgKyAxXTsKKwlzdHJ1Y3QgeGVuc3RvcmVfcHJp dmF0ZSAqeHMgPSB4c19wcml2KHhoKTsKIAlpbnQgZXJyOwogCiAJc3ByaW50Zih0b2tlbiwgIiVs WCIsIChsb25nKXdhdGNoKTsKKwl3YXRjaC0+eGggPSB4aDsKIAogCWRvd25fcmVhZCgmeHNfd2F0 Y2hfcndzZW0pOwogCiAJc3Bpbl9sb2NrKCZ3YXRjaGVzX2xvY2spOwotCUJVR19PTihmaW5kX3dh dGNoKHRva2VuKSk7Ci0JbGlzdF9hZGQoJndhdGNoLT5saXN0LCAmd2F0Y2hlcyk7CisJQlVHX09O KGZpbmRfd2F0Y2goeGgsIHRva2VuKSk7CisJbGlzdF9hZGQoJndhdGNoLT5saXN0LCAmeHMtPndh dGNoZXMpOwogCXNwaW5fdW5sb2NrKCZ3YXRjaGVzX2xvY2spOwogCi0JZXJyID0geHNfd2F0Y2go d2F0Y2gtPm5vZGUsIHRva2VuKTsKKwllcnIgPSB4c193YXRjaCh4aCwgd2F0Y2gtPm5vZGUsIHRv a2VuKTsKIAogCWlmIChlcnIpIHsKIAkJc3Bpbl9sb2NrKCZ3YXRjaGVzX2xvY2spOwpAQCAtNzgy LDcgKzc4Niw3IEBAIGludCByZWdpc3Rlcl94ZW5idXNfd2F0Y2goc3RydWN0IHhlbmJ1c193YXRj aCAqd2F0Y2gpCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChyZWdpc3Rlcl94ZW5idXNfd2F0Y2gpOwog Ci12b2lkIHVucmVnaXN0ZXJfeGVuYnVzX3dhdGNoKHN0cnVjdCB4ZW5idXNfd2F0Y2ggKndhdGNo KQordm9pZCB1bnJlZ2lzdGVyX3hlbmJ1c193YXRjaCh4ZW5ob3N0X3QgKnhoLCBzdHJ1Y3QgeGVu YnVzX3dhdGNoICp3YXRjaCkKIHsKIAlzdHJ1Y3QgeHNfd2F0Y2hfZXZlbnQgKmV2ZW50LCAqdG1w OwogCWNoYXIgdG9rZW5bc2l6ZW9mKHdhdGNoKSAqIDIgKyAxXTsKQEAgLTc5MywxMSArNzk3LDEx IEBAIHZvaWQgdW5yZWdpc3Rlcl94ZW5idXNfd2F0Y2goc3RydWN0IHhlbmJ1c193YXRjaCAqd2F0 Y2gpCiAJZG93bl9yZWFkKCZ4c193YXRjaF9yd3NlbSk7CiAKIAlzcGluX2xvY2soJndhdGNoZXNf bG9jayk7Ci0JQlVHX09OKCFmaW5kX3dhdGNoKHRva2VuKSk7CisJQlVHX09OKCFmaW5kX3dhdGNo KHhoLCB0b2tlbikpOwogCWxpc3RfZGVsKCZ3YXRjaC0+bGlzdCk7CiAJc3Bpbl91bmxvY2soJndh dGNoZXNfbG9jayk7CiAKLQllcnIgPSB4c191bndhdGNoKHdhdGNoLT5ub2RlLCB0b2tlbik7CisJ ZXJyID0geHNfdW53YXRjaCh4aCwgd2F0Y2gtPm5vZGUsIHRva2VuKTsKIAlpZiAoZXJyKQogCQlw cl93YXJuKCJGYWlsZWQgdG8gcmVsZWFzZSB3YXRjaCAlczogJWlcbiIsIHdhdGNoLT5ub2RlLCBl cnIpOwogCkBAIC04MzEsMjQgKzgzNSwyOSBAQCB2b2lkIHhzX3N1c3BlbmQodm9pZCkKIAltdXRl eF9sb2NrKCZ4c19yZXNwb25zZV9tdXRleCk7CiB9CiAKLXZvaWQgeHNfcmVzdW1lKHZvaWQpCit2 b2lkIHhzX3Jlc3VtZSgpCiB7CiAJc3RydWN0IHhlbmJ1c193YXRjaCAqd2F0Y2g7CiAJY2hhciB0 b2tlbltzaXplb2Yod2F0Y2gpICogMiArIDFdOworCXhlbmhvc3RfdCAqKnhoOwogCi0JeGJfaW5p dF9jb21tcygpOworCWZvcl9lYWNoX3hlbmhvc3QoeGgpIHsKKwkJc3RydWN0IHhlbnN0b3JlX3By aXZhdGUgKnhzID0geHNfcHJpdigqeGgpOwogCi0JbXV0ZXhfdW5sb2NrKCZ4c19yZXNwb25zZV9t dXRleCk7CisJCXhiX2luaXRfY29tbXMoKnhoKTsKIAotCXhzX3N1c3BlbmRfZXhpdCgpOworCQlt dXRleF91bmxvY2soJnhzX3Jlc3BvbnNlX211dGV4KTsKIAotCS8qIE5vIG5lZWQgZm9yIHdhdGNo ZXNfbG9jazogdGhlIHhzX3dhdGNoX3J3c2VtIGlzIHN1ZmZpY2llbnQuICovCi0JbGlzdF9mb3Jf ZWFjaF9lbnRyeSh3YXRjaCwgJndhdGNoZXMsIGxpc3QpIHsKLQkJc3ByaW50Zih0b2tlbiwgIiVs WCIsIChsb25nKXdhdGNoKTsKLQkJeHNfd2F0Y2god2F0Y2gtPm5vZGUsIHRva2VuKTsKKwkJeHNf c3VzcGVuZF9leGl0KCk7CisKKwkJLyogTm8gbmVlZCBmb3Igd2F0Y2hlc19sb2NrOiB0aGUgeHNf d2F0Y2hfcndzZW0gaXMgc3VmZmljaWVudC4gKi8KKwkJbGlzdF9mb3JfZWFjaF9lbnRyeSh3YXRj aCwgJnhzLT53YXRjaGVzLCBsaXN0KSB7CisJCQlzcHJpbnRmKHRva2VuLCAiJWxYIiwgKGxvbmcp d2F0Y2gpOworCQkJeHNfd2F0Y2goKnhoLCB3YXRjaC0+bm9kZSwgdG9rZW4pOworCQl9CisKKwkJ dXBfd3JpdGUoJnhzX3dhdGNoX3J3c2VtKTsKIAl9Ci0KLQl1cF93cml0ZSgmeHNfd2F0Y2hfcndz ZW0pOwogfQogCiB2b2lkIHhzX3N1c3BlbmRfY2FuY2VsKHZvaWQpCkBAIC05MDUsMTMgKzkxNCwx OCBAQCBzdGF0aWMgaW50IHhzX3JlYm9vdF9ub3RpZnkoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpu YiwKIAkJCSAgICB1bnNpZ25lZCBsb25nIGNvZGUsIHZvaWQgKnVudXNlZCkKIHsKIAlzdHJ1Y3Qg eGJfcmVxX2RhdGEgKnJlcTsKKwl4ZW5ob3N0X3QgKip4aDsKIAotCW11dGV4X2xvY2soJnhiX3dy aXRlX211dGV4KTsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcSwgJnhzX3JlcGx5X2xpc3QsIGxp c3QpCi0JCXdha2VfdXAoJnJlcS0+d3EpOwotCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxLCAmeGJf d3JpdGVfbGlzdCwgbGlzdCkKLQkJd2FrZV91cCgmcmVxLT53cSk7Ci0JbXV0ZXhfdW5sb2NrKCZ4 Yl93cml0ZV9tdXRleCk7CisJZm9yX2VhY2hfeGVuaG9zdCh4aCkgeworCQlzdHJ1Y3QgeGVuc3Rv cmVfcHJpdmF0ZSAqeHMgPSB4c19wcml2KCp4aCk7CisKKwkJbXV0ZXhfbG9jaygmeGJfd3JpdGVf bXV0ZXgpOworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcSwgJnhzLT5yZXBseV9saXN0LCBsaXN0 KQorCQkJd2FrZV91cCgmcmVxLT53cSk7CisJCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxLCAmeHMt PnhiX3dyaXRlX2xpc3QsIGxpc3QpCisJCQl3YWtlX3VwKCZyZXEtPndxKTsKKwkJbXV0ZXhfdW5s b2NrKCZ4Yl93cml0ZV9tdXRleCk7CisJfQogCXJldHVybiBOT1RJRllfRE9ORTsKIH0KIApAQCAt OTE5LDE1ICs5MzMsMTcgQEAgc3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayB4c19yZWJvb3Rf bmIgPSB7CiAJLm5vdGlmaWVyX2NhbGwgPSB4c19yZWJvb3Rfbm90aWZ5LAogfTsKIAotaW50IHhz X2luaXQodm9pZCkKK2ludCB4c19pbml0KHhlbmhvc3RfdCAqeGgpCiB7CiAJaW50IGVycjsKIAlz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7CiAKLQlyZWdpc3Rlcl9yZWJvb3Rfbm90aWZpZXIoJnhz X3JlYm9vdF9uYik7CisJaWYgKHhoLT50eXBlICE9IHhlbmhvc3RfcjIpCisJCS8qIE5lZWRzIHRv IGJlIG1vdmVkIG91dCAqLworCQlyZWdpc3Rlcl9yZWJvb3Rfbm90aWZpZXIoJnhzX3JlYm9vdF9u Yik7CiAKIAkvKiBJbml0aWFsaXplIHRoZSBzaGFyZWQgbWVtb3J5IHJpbmdzIHRvIHRhbGsgdG8g eGVuc3RvcmVkICovCi0JZXJyID0geGJfaW5pdF9jb21tcygpOworCWVyciA9IHhiX2luaXRfY29t bXMoeGgpOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKQEAgLTkzNiw3ICs5NTIsNyBAQCBp bnQgeHNfaW5pdCh2b2lkKQogCQlyZXR1cm4gUFRSX0VSUih0YXNrKTsKIAogCS8qIHNodXRkb3du IHdhdGNoZXMgZm9yIGtleGVjIGJvb3QgKi8KLQl4c19yZXNldF93YXRjaGVzKCk7CisJeHNfcmVz ZXRfd2F0Y2hlcyh4aCk7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVu L3hlbi1vcHMuaCBiL2luY2x1ZGUveGVuL3hlbi1vcHMuaAppbmRleCA3NWJlOTA1OTg5M2YuLjNi YTJmNmIxZTE5NiAxMDA2NDQKLS0tIGEvaW5jbHVkZS94ZW4veGVuLW9wcy5oCisrKyBiL2luY2x1 ZGUveGVuL3hlbi1vcHMuaApAQCAtMjA0LDYgKzIwNCw5IEBAIGludCB4ZW5fdW5tYXBfZG9tYWlu X2dmbl9yYW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIGludCB4ZW5feGxhdGVfbWFw X2JhbGxvb25lZF9wYWdlcyh4ZW5fcGZuX3QgKipwZm5zLCB2b2lkICoqdmFkZHIsCiAJCQkJICB1 bnNpZ25lZCBsb25nIG5yX2dyYW50X2ZyYW1lcyk7CiAKK2ludCB4ZW5faHZtX3NldHVwX3hzKHhl bmhvc3RfdCAqeGgpOworaW50IHhlbl9wdl9zZXR1cF94cyh4ZW5ob3N0X3QgKnhoKTsKKwogYm9v bCB4ZW5fcnVubmluZ19vbl92ZXJzaW9uX29yX2xhdGVyKHVuc2lnbmVkIGludCBtYWpvciwgdW5z aWduZWQgaW50IG1pbm9yKTsKIAogZWZpX3N0YXR1c190IHhlbl9lZmlfZ2V0X3RpbWUoZWZpX3Rp bWVfdCAqdG0sIGVmaV90aW1lX2NhcF90ICp0Yyk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi94 ZW5idXMuaCBiL2luY2x1ZGUveGVuL3hlbmJ1cy5oCmluZGV4IDg2OWM4MTZkNWY4Yy4uOGY4YzM5 MDA4ZTE1IDEwMDY0NAotLS0gYS9pbmNsdWRlL3hlbi94ZW5idXMuaAorKysgYi9pbmNsdWRlL3hl bi94ZW5idXMuaApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNp bmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8eGVuL2ludGVyZmFjZS94ZW4uaD4KKyNp bmNsdWRlIDx4ZW4veGVuaG9zdC5oPgogI2luY2x1ZGUgPHhlbi9pbnRlcmZhY2UvZ3JhbnRfdGFi bGUuaD4KICNpbmNsdWRlIDx4ZW4vaW50ZXJmYWNlL2lvL3hlbmJ1cy5oPgogI2luY2x1ZGUgPHhl bi9pbnRlcmZhY2UvaW8veHNfd2lyZS5oPgpAQCAtNTgsNiArNTksOCBAQCBzdHJ1Y3QgeGVuYnVz X3dhdGNoCiAKIAkvKiBQYXRoIGJlaW5nIHdhdGNoZWQuICovCiAJY29uc3QgY2hhciAqbm9kZTsK KwkvKiBPbiB4ZW5ob3N0LiAqLworCXhlbmhvc3RfdCAqeGg7CiAKIAkvKiBDYWxsYmFjayAoZXhl Y3V0ZWQgaW4gYSBwcm9jZXNzIGNvbnRleHQgd2l0aCBubyBsb2NrcyBoZWxkKS4gKi8KIAl2b2lk ICgqY2FsbGJhY2spKHN0cnVjdCB4ZW5idXNfd2F0Y2ggKiwKQEAgLTcwLDYgKzczLDcgQEAgc3Ry dWN0IHhlbmJ1c19kZXZpY2UgewogCWNvbnN0IGNoYXIgKmRldmljZXR5cGU7CiAJY29uc3QgY2hh ciAqbm9kZW5hbWU7CiAJY29uc3QgY2hhciAqb3RoZXJlbmQ7CisJeGVuaG9zdF90ICp4aDsKIAlp bnQgb3RoZXJlbmRfaWQ7CiAJc3RydWN0IHhlbmJ1c193YXRjaCBvdGhlcmVuZF93YXRjaDsKIAlz dHJ1Y3QgZGV2aWNlIGRldjsKQEAgLTc4LDYgKzgyLDEzIEBAIHN0cnVjdCB4ZW5idXNfZGV2aWNl IHsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKIH07CiAKK2VudW0geGVuc3RvcmVfaW5pdCB7 CisJWFNfVU5LTk9XTiwKKwlYU19QViwKKwlYU19IVk0sCisJWFNfTE9DQUwsCit9OworCiBzdGF0 aWMgaW5saW5lIHN0cnVjdCB4ZW5idXNfZGV2aWNlICp0b194ZW5idXNfZGV2aWNlKHN0cnVjdCBk ZXZpY2UgKmRldikKIHsKIAlyZXR1cm4gY29udGFpbmVyX29mKGRldiwgc3RydWN0IHhlbmJ1c19k ZXZpY2UsIGRldik7CkBAIC0xMzMsNTIgKzE0NCw1MSBAQCBzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0 aW9uCiAvKiBOaWwgdHJhbnNhY3Rpb24gSUQuICovCiAjZGVmaW5lIFhCVF9OSUwgKChzdHJ1Y3Qg eGVuYnVzX3RyYW5zYWN0aW9uKSB7IDAgfSkKIAotY2hhciAqKnhlbmJ1c19kaXJlY3Rvcnkoc3Ry dWN0IHhlbmJ1c190cmFuc2FjdGlvbiB0LAorY2hhciAqKnhlbmJ1c19kaXJlY3RvcnkoeGVuaG9z dF90ICp4aCwgc3RydWN0IHhlbmJ1c190cmFuc2FjdGlvbiB0LAogCQkJY29uc3QgY2hhciAqZGly LCBjb25zdCBjaGFyICpub2RlLCB1bnNpZ25lZCBpbnQgKm51bSk7Ci12b2lkICp4ZW5idXNfcmVh ZChzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0aW9uIHQsCit2b2lkICp4ZW5idXNfcmVhZCh4ZW5ob3N0 X3QgKnhoLCBzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0aW9uIHQsCiAJCSAgY29uc3QgY2hhciAqZGly LCBjb25zdCBjaGFyICpub2RlLCB1bnNpZ25lZCBpbnQgKmxlbik7Ci1pbnQgeGVuYnVzX3dyaXRl KHN0cnVjdCB4ZW5idXNfdHJhbnNhY3Rpb24gdCwKK2ludCB4ZW5idXNfd3JpdGUoeGVuaG9zdF90 ICp4aCwgc3RydWN0IHhlbmJ1c190cmFuc2FjdGlvbiB0LAogCQkgY29uc3QgY2hhciAqZGlyLCBj b25zdCBjaGFyICpub2RlLCBjb25zdCBjaGFyICpzdHJpbmcpOwotaW50IHhlbmJ1c19ta2Rpcihz dHJ1Y3QgeGVuYnVzX3RyYW5zYWN0aW9uIHQsCitpbnQgeGVuYnVzX21rZGlyKHhlbmhvc3RfdCAq eGgsIHN0cnVjdCB4ZW5idXNfdHJhbnNhY3Rpb24gdCwKIAkJIGNvbnN0IGNoYXIgKmRpciwgY29u c3QgY2hhciAqbm9kZSk7Ci1pbnQgeGVuYnVzX2V4aXN0cyhzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0 aW9uIHQsCitpbnQgeGVuYnVzX2V4aXN0cyh4ZW5ob3N0X3QgKnhoLCBzdHJ1Y3QgeGVuYnVzX3Ry YW5zYWN0aW9uIHQsCiAJCSAgY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpub2RlKTsKLWlu dCB4ZW5idXNfcm0oc3RydWN0IHhlbmJ1c190cmFuc2FjdGlvbiB0LCBjb25zdCBjaGFyICpkaXIs IGNvbnN0IGNoYXIgKm5vZGUpOwotaW50IHhlbmJ1c190cmFuc2FjdGlvbl9zdGFydChzdHJ1Y3Qg eGVuYnVzX3RyYW5zYWN0aW9uICp0KTsKLWludCB4ZW5idXNfdHJhbnNhY3Rpb25fZW5kKHN0cnVj dCB4ZW5idXNfdHJhbnNhY3Rpb24gdCwgaW50IGFib3J0KTsKK2ludCB4ZW5idXNfcm0oeGVuaG9z dF90ICp4aCwgc3RydWN0IHhlbmJ1c190cmFuc2FjdGlvbiB0LCBjb25zdCBjaGFyICpkaXIsIGNv bnN0IGNoYXIgKm5vZGUpOworaW50IHhlbmJ1c190cmFuc2FjdGlvbl9zdGFydCh4ZW5ob3N0X3Qg KnhoLCBzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0aW9uICp0KTsKK2ludCB4ZW5idXNfdHJhbnNhY3Rp b25fZW5kKHhlbmhvc3RfdCAqeGgsIHN0cnVjdCB4ZW5idXNfdHJhbnNhY3Rpb24gdCwgaW50IGFi b3J0KTsKIAogLyogU2luZ2xlIHJlYWQgYW5kIHNjYW5mOiByZXR1cm5zIC1lcnJubyBvciBudW0g c2Nhbm5lZCBpZiA+IDAuICovCi1fX3NjYW5mKDQsIDUpCi1pbnQgeGVuYnVzX3NjYW5mKHN0cnVj dCB4ZW5idXNfdHJhbnNhY3Rpb24gdCwKK19fc2NhbmYoNSwgNikKK2ludCB4ZW5idXNfc2NhbmYo eGVuaG9zdF90ICp4aCwgc3RydWN0IHhlbmJ1c190cmFuc2FjdGlvbiB0LAogCQkgY29uc3QgY2hh ciAqZGlyLCBjb25zdCBjaGFyICpub2RlLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CiAKIC8qIFJl YWQgYW4gKG9wdGlvbmFsKSB1bnNpZ25lZCB2YWx1ZS4gKi8KLXVuc2lnbmVkIGludCB4ZW5idXNf cmVhZF91bnNpZ25lZChjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKm5vZGUsCit1bnNpZ25l ZCBpbnQgeGVuYnVzX3JlYWRfdW5zaWduZWQoeGVuaG9zdF90ICp4aCwgY29uc3QgY2hhciAqZGly LCBjb25zdCBjaGFyICpub2RlLAogCQkJCSAgdW5zaWduZWQgaW50IGRlZmF1bHRfdmFsKTsKIAog LyogU2luZ2xlIHByaW50ZiBhbmQgd3JpdGU6IHJldHVybnMgLWVycm5vIG9yIDAuICovCi1fX3By aW50Zig0LCA1KQotaW50IHhlbmJ1c19wcmludGYoc3RydWN0IHhlbmJ1c190cmFuc2FjdGlvbiB0 LAorX19wcmludGYoNSwgNikKK2ludCB4ZW5idXNfcHJpbnRmKHhlbmhvc3RfdCAqeGgsIHN0cnVj dCB4ZW5idXNfdHJhbnNhY3Rpb24gdCwKIAkJICBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIg Km5vZGUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKIAogLyogR2VuZXJpYyByZWFkIGZ1bmN0aW9u OiBOVUxMLXRlcm1pbmF0ZWQgdHJpcGxlcyBvZiBuYW1lLAogICogc3ByaW50Zi1zdHlsZSB0eXBl IHN0cmluZywgYW5kIHBvaW50ZXIuIFJldHVybnMgMCBvciBlcnJuby4qLwotaW50IHhlbmJ1c19n YXRoZXIoc3RydWN0IHhlbmJ1c190cmFuc2FjdGlvbiB0LCBjb25zdCBjaGFyICpkaXIsIC4uLik7 CitpbnQgeGVuYnVzX2dhdGhlcih4ZW5ob3N0X3QgKnhoLCBzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0 aW9uIHQsIGNvbnN0IGNoYXIgKmRpciwgLi4uKTsKIAogLyogbm90aWZlciByb3V0aW5lcyBmb3Ig d2hlbiB0aGUgeGVuc3RvcmUgY29tZXMgdXAgKi8KLWV4dGVybiBpbnQgeGVuc3RvcmVkX3JlYWR5 OwotaW50IHJlZ2lzdGVyX3hlbnN0b3JlX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAq bmIpOwotdm9pZCB1bnJlZ2lzdGVyX3hlbnN0b3JlX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9i bG9jayAqbmIpOworaW50IHJlZ2lzdGVyX3hlbnN0b3JlX25vdGlmaWVyKHhlbmhvc3RfdCAqeGgs IHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpOwordm9pZCB1bnJlZ2lzdGVyX3hlbnN0b3JlX25v dGlmaWVyKHhlbmhvc3RfdCAqeGgsIHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpOwogCi1pbnQg cmVnaXN0ZXJfeGVuYnVzX3dhdGNoKHN0cnVjdCB4ZW5idXNfd2F0Y2ggKndhdGNoKTsKLXZvaWQg dW5yZWdpc3Rlcl94ZW5idXNfd2F0Y2goc3RydWN0IHhlbmJ1c193YXRjaCAqd2F0Y2gpOworaW50 IHJlZ2lzdGVyX3hlbmJ1c193YXRjaCh4ZW5ob3N0X3QgKnhoLCBzdHJ1Y3QgeGVuYnVzX3dhdGNo ICp3YXRjaCk7Cit2b2lkIHVucmVnaXN0ZXJfeGVuYnVzX3dhdGNoKHhlbmhvc3RfdCAqeGgsIHN0 cnVjdCB4ZW5idXNfd2F0Y2ggKndhdGNoKTsKIHZvaWQgeHNfc3VzcGVuZCh2b2lkKTsKIHZvaWQg eHNfcmVzdW1lKHZvaWQpOwogdm9pZCB4c19zdXNwZW5kX2NhbmNlbCh2b2lkKTsKIAogc3RydWN0 IHdvcmtfc3RydWN0OwogCi12b2lkIHhlbmJ1c19wcm9iZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKik7 Cit2b2lkIF9feGVuYnVzX3Byb2JlKHZvaWQgKnhzKTsKIAogI2RlZmluZSBYRU5CVVNfSVNfRVJS X1JFQUQoc3RyKSAoewkJCVwKIAlpZiAoIUlTX0VSUihzdHIpICYmIHN0cmxlbihzdHIpID09IDAp IHsJCVwKQEAgLTIxOCw3ICsyMjgsNyBAQCBpbnQgeGVuYnVzX3VubWFwX3Jpbmcoc3RydWN0IHhl bmJ1c19kZXZpY2UgKmRldiwKIGludCB4ZW5idXNfYWxsb2NfZXZ0Y2huKHN0cnVjdCB4ZW5idXNf ZGV2aWNlICpkZXYsIGludCAqcG9ydCk7CiBpbnQgeGVuYnVzX2ZyZWVfZXZ0Y2huKHN0cnVjdCB4 ZW5idXNfZGV2aWNlICpkZXYsIGludCBwb3J0KTsKIAotZW51bSB4ZW5idXNfc3RhdGUgeGVuYnVz X3JlYWRfZHJpdmVyX3N0YXRlKGNvbnN0IGNoYXIgKnBhdGgpOworZW51bSB4ZW5idXNfc3RhdGUg eGVuYnVzX3JlYWRfZHJpdmVyX3N0YXRlKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYsIGNvbnN0 IGNoYXIgKnBhdGgpOwogCiBfX3ByaW50ZigzLCA0KQogdm9pZCB4ZW5idXNfZGV2X2Vycm9yKHN0 cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYsIGludCBlcnIsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsK QEAgLTIzMCw3ICsyNDAsNSBAQCBpbnQgeGVuYnVzX2Rldl9pc19vbmxpbmUoc3RydWN0IHhlbmJ1 c19kZXZpY2UgKmRldik7CiBpbnQgeGVuYnVzX2Zyb250ZW5kX2Nsb3NlZChzdHJ1Y3QgeGVuYnVz X2RldmljZSAqZGV2KTsKIAogZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgeGVu X3hlbmJ1c19mb3BzOwotZXh0ZXJuIHN0cnVjdCB4ZW5zdG9yZV9kb21haW5faW50ZXJmYWNlICp4 ZW5fc3RvcmVfaW50ZXJmYWNlOwotZXh0ZXJuIGludCB4ZW5fc3RvcmVfZXZ0Y2huOwogCiAjZW5k aWYgLyogX1hFTl9YRU5CVVNfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4veGVuaG9zdC5o IGIvaW5jbHVkZS94ZW4veGVuaG9zdC5oCmluZGV4IGFjZWUwYzc4NzJiNi4uOTE1NzRlY2FhZDZj IDEwMDY0NAotLS0gYS9pbmNsdWRlL3hlbi94ZW5ob3N0LmgKKysrIGIvaW5jbHVkZS94ZW4veGVu aG9zdC5oCkBAIC0xNDAsNiArMTQwLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgewogCQl2b2lkICpnbnR0 YWJfc3RhdHVzX3ZtX2FyZWE7CiAJCXZvaWQgKmF1dG9feGxhdF9ncmFudF9mcmFtZXM7CiAJfTsK KworCS8qIHhlbnN0b3JlIHByaXZhdGUgc3RhdGUgKi8KKwl2b2lkICp4ZW5zdG9yZV9wcml2YXRl OwogfSB4ZW5ob3N0X3Q7CiAKIHR5cGVkZWYgc3RydWN0IHhlbmhvc3Rfb3BzIHsKQEAgLTIyOCw2 ICsyMzEsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGVuaG9zdF9vcHMgewogCWludCAoKmFsbG9jX2Jh bGxvb25lZF9wYWdlcykoeGVuaG9zdF90ICp4aCwgaW50IG5yX3BhZ2VzLCBzdHJ1Y3QgcGFnZSAq KnBhZ2VzKTsKIAl2b2lkICgqZnJlZV9iYWxsb29uZWRfcGFnZXMpKHhlbmhvc3RfdCAqeGgsIGlu dCBucl9wYWdlcywgc3RydWN0IHBhZ2UgKipwYWdlcyk7CiAKKwkvKgorCSAqIHhlbmJ1czogYXMg cGFydCBvZiB4ZW5idXMtaW5pdCwgZnJvbnRlbmQvYmFja2VuZCBuZWVkIHRvIHRhbGsgdG8gdGhl CisJICogY29ycmVjdCB4ZW5idXMuICBUaGlzIG1pZ2h0IGJlIGEgbG9jYWwgeGVuc3RvcmUgKGJh Y2tlbmQpIG9yIG1pZ2h0CisJICogYmUgYSBYU19QVi9YU19IVk0gaW50ZXJmYWNlIChmcm9udGVu ZCkuIFdlIGJvb3RzdHJhcCB0aGVzZSB3aXRoCisJICogZXZ0Y2huL2dmbiBwYXJhbWV0ZXJzIGZy b20gKCpzZXR1cF94cykoKS4KKwkgKgorCSAqIE9uY2UgZG9uZSwgc3Rhc2ggdGhlIHhlbmhvc3Rf dCAqIGluIHhlbl9idXNfdHlwZSwgeGVuYnVzX2RldmljZSBvcgorCSAqIHhlbmJ1c193YXRjaCBh bmQgdGhlbiB0aGUgZnJvbnRlbmQgYW5kIGJhY2tlbmQgZGV2aWNlcyBpbXBsaWNpdGx5CisJICog dXNlIHRoZSBjb3JyZWN0IGludGVyZmFjZS4KKwkgKi8KKwlpbnQgKCpzZXR1cF94cykoeGVuaG9z dF90ICp4aCk7CiB9IHhlbmhvc3Rfb3BzX3Q7CiAKIGV4dGVybiB4ZW5ob3N0X3QgKnhoX2RlZmF1 bHQsICp4aF9yZW1vdGU7CkBAIC0yNzksNCArMjkzLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB4 ZW5ob3N0X3Byb2JlX3ZjcHVfaWQoeGVuaG9zdF90ICp4aCwgaW50IGNwdSkKIAkoeGgtPm9wcy0+ cHJvYmVfdmNwdV9pZCkoeGgsIGNwdSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCB4ZW5ob3N0 X3NldHVwX3hzKHhlbmhvc3RfdCAqeGgpCit7CisJaWYgKHhoKQorCQkoeGgtPm9wcy0+c2V0dXBf eHMpKHhoKTsKK30KKwogI2VuZGlmIC8qIF9fWEVOSE9TVF9IICovCi0tIAoyLjIwLjEKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs