From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 2/5] drm/i915: Rename intel_engine_cs function parameters Date: Wed, 16 Mar 2016 11:00:37 +0000 Message-ID: <1458126040-33105-2-git-send-email-tvrtko.ursulin@linux.intel.com> References: <1458126040-33105-1-git-send-email-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id ACE4B6E8CB for ; Wed, 16 Mar 2016 11:00:45 +0000 (UTC) In-Reply-To: <1458126040-33105-1-git-send-email-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkZyb20gcmlu ZyB0byBlbmdpbmUuIERvbmUgdmlhIENvY2NpbmVsbGUgc2NyaXB0czoKCkBACmlkZW50aWZpZXIg ZnVuYzsKQEAKZnVuYyguLi4sIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKgotIHJpbmcKKyBlbmdp bmUKLCAuLi4pCnsKPC4uLgotIHJpbmcKKyBlbmdpbmUKLi4uPgp9CkBACmlkZW50aWZpZXIgZnVu YzsKdHlwZSBUOwpAQApUIGZ1bmMoLi4uLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoKLSByaW5n CisgZW5naW5lCiwgLi4uKTsKClNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28u dXJzdWxpbkBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFy c2VyLmMgICAgICAgfCAxMjIgKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYyAgICAgICAgICB8ICAxNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAg ICAgICAgICAgICAgfCAgMTggKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAg ICAgICAgICAgIHwgIDg2ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRl eHQuYyAgICAgIHwgIDIyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVm ZmVyLmMgICB8ICAzNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0 YXRlLmMgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0 ZS5oIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jICAgICAg ICB8ICA5NyArKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgICAg ICAgfCAxMTEgKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICAg ICAgIHwgICA4ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAg ICB8IDU2NiArKysrKysrKysrKystLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2xyYy5oICAgICAgICAgICAgIHwgIDE2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmMgICAgICB8IDYxOCArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgICAgIHwgIDU0ICstLQogMTUg ZmlsZXMgY2hhbmdlZCwgOTA5IGluc2VydGlvbnMoKyksIDg2NyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNlci5jCmluZGV4IDgxNGQ4OTRlZDkyNS4uMmM1MDE0 MmJlNTU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYwpAQCAtNTU1LDcg KzU1NSw3IEBAIHN0YXRpYyB1MzIgZ2VuN19ibHRfZ2V0X2NtZF9sZW5ndGhfbWFzayh1MzIgY21k X2hlYWRlcikKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGJvb2wgdmFsaWRhdGVfY21kc19zb3J0 ZWQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKK3N0YXRpYyBib29sIHZhbGlkYXRlX2Nt ZHNfc29ydGVkKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCQkgY29uc3Qgc3Ry dWN0IGRybV9pOTE1X2NtZF90YWJsZSAqY21kX3RhYmxlcywKIAkJCQkgaW50IGNtZF90YWJsZV9j b3VudCkKIHsKQEAgLTU3Nyw3ICs1NzcsNyBAQCBzdGF0aWMgYm9vbCB2YWxpZGF0ZV9jbWRzX3Nv cnRlZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogCiAJCQlpZiAoY3VyciA8IHByZXZp b3VzKSB7CiAJCQkJRFJNX0VSUk9SKCJDTUQ6IHRhYmxlIG5vdCBzb3J0ZWQgcmluZz0lZCB0YWJs ZT0lZCBlbnRyeT0lZCBjbWQ9MHglMDhYIHByZXY9MHglMDhYXG4iLAotCQkJCQkgIHJpbmctPmlk LCBpLCBqLCBjdXJyLCBwcmV2aW91cyk7CisJCQkJCSAgZW5naW5lLT5pZCwgaSwgaiwgY3Vyciwg cHJldmlvdXMpOwogCQkJCXJldCA9IGZhbHNlOwogCQkJfQogCkBAIC02MTEsMTEgKzYxMSwxMSBA QCBzdGF0aWMgYm9vbCBjaGVja19zb3J0ZWQoaW50IHJpbmdfaWQsCiAJcmV0dXJuIHJldDsKIH0K IAotc3RhdGljIGJvb2wgdmFsaWRhdGVfcmVnc19zb3J0ZWQoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZykKK3N0YXRpYyBib29sIHZhbGlkYXRlX3JlZ3Nfc29ydGVkKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlyZXR1cm4gY2hlY2tfc29ydGVkKHJpbmctPmlkLCByaW5n LT5yZWdfdGFibGUsIHJpbmctPnJlZ19jb3VudCkgJiYKLQkJY2hlY2tfc29ydGVkKHJpbmctPmlk LCByaW5nLT5tYXN0ZXJfcmVnX3RhYmxlLAotCQkJICAgICByaW5nLT5tYXN0ZXJfcmVnX2NvdW50 KTsKKwlyZXR1cm4gY2hlY2tfc29ydGVkKGVuZ2luZS0+aWQsIGVuZ2luZS0+cmVnX3RhYmxlLCBl bmdpbmUtPnJlZ19jb3VudCkgJiYKKwkJY2hlY2tfc29ydGVkKGVuZ2luZS0+aWQsIGVuZ2luZS0+ bWFzdGVyX3JlZ190YWJsZSwKKwkJCSAgICAgZW5naW5lLT5tYXN0ZXJfcmVnX2NvdW50KTsKIH0K IAogc3RydWN0IGNtZF9ub2RlIHsKQEAgLTYzOSwxMyArNjM5LDEzIEBAIHN0cnVjdCBjbWRfbm9k ZSB7CiAgKi8KICNkZWZpbmUgQ01EX0hBU0hfTUFTSyBTVERfTUlfT1BDT0RFX01BU0sKIAotc3Rh dGljIGludCBpbml0X2hhc2hfdGFibGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKK3N0 YXRpYyBpbnQgaW5pdF9oYXNoX3RhYmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwK IAkJCSAgIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9jbWRfdGFibGUgKmNtZF90YWJsZXMsCiAJCQkg ICBpbnQgY21kX3RhYmxlX2NvdW50KQogewogCWludCBpLCBqOwogCi0JaGFzaF9pbml0KHJpbmct PmNtZF9oYXNoKTsKKwloYXNoX2luaXQoZW5naW5lLT5jbWRfaGFzaCk7CiAKIAlmb3IgKGkgPSAw OyBpIDwgY21kX3RhYmxlX2NvdW50OyBpKyspIHsKIAkJY29uc3Qgc3RydWN0IGRybV9pOTE1X2Nt ZF90YWJsZSAqdGFibGUgPSAmY21kX3RhYmxlc1tpXTsKQEAgLTY2MCw3ICs2NjAsNyBAQCBzdGF0 aWMgaW50IGluaXRfaGFzaF90YWJsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogCQkJ CXJldHVybiAtRU5PTUVNOwogCiAJCQlkZXNjX25vZGUtPmRlc2MgPSBkZXNjOwotCQkJaGFzaF9h ZGQocmluZy0+Y21kX2hhc2gsICZkZXNjX25vZGUtPm5vZGUsCisJCQloYXNoX2FkZChlbmdpbmUt PmNtZF9oYXNoLCAmZGVzY19ub2RlLT5ub2RlLAogCQkJCSBkZXNjLT5jbWQudmFsdWUgJiBDTURf SEFTSF9NQVNLKTsKIAkJfQogCX0KQEAgLTY2OCwxMyArNjY4LDEzIEBAIHN0YXRpYyBpbnQgaW5p dF9oYXNoX3RhYmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCiAJcmV0dXJuIDA7CiB9 CiAKLXN0YXRpYyB2b2lkIGZpbmlfaGFzaF90YWJsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpy aW5nKQorc3RhdGljIHZvaWQgZmluaV9oYXNoX3RhYmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKIHsKIAlzdHJ1Y3QgaGxpc3Rfbm9kZSAqdG1wOwogCXN0cnVjdCBjbWRfbm9kZSAq ZGVzY19ub2RlOwogCWludCBpOwogCi0JaGFzaF9mb3JfZWFjaF9zYWZlKHJpbmctPmNtZF9oYXNo LCBpLCB0bXAsIGRlc2Nfbm9kZSwgbm9kZSkgeworCWhhc2hfZm9yX2VhY2hfc2FmZShlbmdpbmUt PmNtZF9oYXNoLCBpLCB0bXAsIGRlc2Nfbm9kZSwgbm9kZSkgewogCQloYXNoX2RlbCgmZGVzY19u b2RlLT5ub2RlKTsKIAkJa2ZyZWUoZGVzY19ub2RlKTsKIAl9CkBAIC02OTAsMTggKzY5MCwxOCBA QCBzdGF0aWMgdm9pZCBmaW5pX2hhc2hfdGFibGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZykKICAqCiAgKiBSZXR1cm46IG5vbi16ZXJvIGlmIGluaXRpYWxpemF0aW9uIGZhaWxzCiAgKi8K LWludCBpOTE1X2NtZF9wYXJzZXJfaW5pdF9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcpCitpbnQgaTkxNV9jbWRfcGFyc2VyX2luaXRfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCiB7CiAJY29uc3Qgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSAqY21kX3RhYmxl czsKIAlpbnQgY21kX3RhYmxlX2NvdW50OwogCWludCByZXQ7CiAKLQlpZiAoIUlTX0dFTjcocmlu Zy0+ZGV2KSkKKwlpZiAoIUlTX0dFTjcoZW5naW5lLT5kZXYpKQogCQlyZXR1cm4gMDsKIAotCXN3 aXRjaCAocmluZy0+aWQpIHsKKwlzd2l0Y2ggKGVuZ2luZS0+aWQpIHsKIAljYXNlIFJDUzoKLQkJ aWYgKElTX0hBU1dFTEwocmluZy0+ZGV2KSkgeworCQlpZiAoSVNfSEFTV0VMTChlbmdpbmUtPmRl dikpIHsKIAkJCWNtZF90YWJsZXMgPSBoc3dfcmVuZGVyX3JpbmdfY21kczsKIAkJCWNtZF90YWJs ZV9jb3VudCA9CiAJCQkJQVJSQVlfU0laRShoc3dfcmVuZGVyX3JpbmdfY21kcyk7CkBAIC03MTAs MjYgKzcxMCwyNiBAQCBpbnQgaTkxNV9jbWRfcGFyc2VyX2luaXRfcmluZyhzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nKQogCQkJY21kX3RhYmxlX2NvdW50ID0gQVJSQVlfU0laRShnZW43X3Jl bmRlcl9jbWRzKTsKIAkJfQogCi0JCXJpbmctPnJlZ190YWJsZSA9IGdlbjdfcmVuZGVyX3JlZ3M7 Ci0JCXJpbmctPnJlZ19jb3VudCA9IEFSUkFZX1NJWkUoZ2VuN19yZW5kZXJfcmVncyk7CisJCWVu Z2luZS0+cmVnX3RhYmxlID0gZ2VuN19yZW5kZXJfcmVnczsKKwkJZW5naW5lLT5yZWdfY291bnQg PSBBUlJBWV9TSVpFKGdlbjdfcmVuZGVyX3JlZ3MpOwogCi0JCWlmIChJU19IQVNXRUxMKHJpbmct PmRldikpIHsKLQkJCXJpbmctPm1hc3Rlcl9yZWdfdGFibGUgPSBoc3dfbWFzdGVyX3JlZ3M7Ci0J CQlyaW5nLT5tYXN0ZXJfcmVnX2NvdW50ID0gQVJSQVlfU0laRShoc3dfbWFzdGVyX3JlZ3MpOwor CQlpZiAoSVNfSEFTV0VMTChlbmdpbmUtPmRldikpIHsKKwkJCWVuZ2luZS0+bWFzdGVyX3JlZ190 YWJsZSA9IGhzd19tYXN0ZXJfcmVnczsKKwkJCWVuZ2luZS0+bWFzdGVyX3JlZ19jb3VudCA9IEFS UkFZX1NJWkUoaHN3X21hc3Rlcl9yZWdzKTsKIAkJfSBlbHNlIHsKLQkJCXJpbmctPm1hc3Rlcl9y ZWdfdGFibGUgPSBpdmJfbWFzdGVyX3JlZ3M7Ci0JCQlyaW5nLT5tYXN0ZXJfcmVnX2NvdW50ID0g QVJSQVlfU0laRShpdmJfbWFzdGVyX3JlZ3MpOworCQkJZW5naW5lLT5tYXN0ZXJfcmVnX3RhYmxl ID0gaXZiX21hc3Rlcl9yZWdzOworCQkJZW5naW5lLT5tYXN0ZXJfcmVnX2NvdW50ID0gQVJSQVlf U0laRShpdmJfbWFzdGVyX3JlZ3MpOwogCQl9CiAKLQkJcmluZy0+Z2V0X2NtZF9sZW5ndGhfbWFz ayA9IGdlbjdfcmVuZGVyX2dldF9jbWRfbGVuZ3RoX21hc2s7CisJCWVuZ2luZS0+Z2V0X2NtZF9s ZW5ndGhfbWFzayA9IGdlbjdfcmVuZGVyX2dldF9jbWRfbGVuZ3RoX21hc2s7CiAJCWJyZWFrOwog CWNhc2UgVkNTOgogCQljbWRfdGFibGVzID0gZ2VuN192aWRlb19jbWRzOwogCQljbWRfdGFibGVf Y291bnQgPSBBUlJBWV9TSVpFKGdlbjdfdmlkZW9fY21kcyk7Ci0JCXJpbmctPmdldF9jbWRfbGVu Z3RoX21hc2sgPSBnZW43X2JzZF9nZXRfY21kX2xlbmd0aF9tYXNrOworCQllbmdpbmUtPmdldF9j bWRfbGVuZ3RoX21hc2sgPSBnZW43X2JzZF9nZXRfY21kX2xlbmd0aF9tYXNrOwogCQlicmVhazsK IAljYXNlIEJDUzoKLQkJaWYgKElTX0hBU1dFTEwocmluZy0+ZGV2KSkgeworCQlpZiAoSVNfSEFT V0VMTChlbmdpbmUtPmRldikpIHsKIAkJCWNtZF90YWJsZXMgPSBoc3dfYmx0X3JpbmdfY21kczsK IAkJCWNtZF90YWJsZV9jb3VudCA9IEFSUkFZX1NJWkUoaHN3X2JsdF9yaW5nX2NtZHMpOwogCQl9 IGVsc2UgewpAQCAtNzM3LDQ0ICs3MzcsNDQgQEAgaW50IGk5MTVfY21kX3BhcnNlcl9pbml0X3Jp bmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKIAkJCWNtZF90YWJsZV9jb3VudCA9IEFS UkFZX1NJWkUoZ2VuN19ibHRfY21kcyk7CiAJCX0KIAotCQlyaW5nLT5yZWdfdGFibGUgPSBnZW43 X2JsdF9yZWdzOwotCQlyaW5nLT5yZWdfY291bnQgPSBBUlJBWV9TSVpFKGdlbjdfYmx0X3JlZ3Mp OworCQllbmdpbmUtPnJlZ190YWJsZSA9IGdlbjdfYmx0X3JlZ3M7CisJCWVuZ2luZS0+cmVnX2Nv dW50ID0gQVJSQVlfU0laRShnZW43X2JsdF9yZWdzKTsKIAotCQlpZiAoSVNfSEFTV0VMTChyaW5n LT5kZXYpKSB7Ci0JCQlyaW5nLT5tYXN0ZXJfcmVnX3RhYmxlID0gaHN3X21hc3Rlcl9yZWdzOwot CQkJcmluZy0+bWFzdGVyX3JlZ19jb3VudCA9IEFSUkFZX1NJWkUoaHN3X21hc3Rlcl9yZWdzKTsK KwkJaWYgKElTX0hBU1dFTEwoZW5naW5lLT5kZXYpKSB7CisJCQllbmdpbmUtPm1hc3Rlcl9yZWdf dGFibGUgPSBoc3dfbWFzdGVyX3JlZ3M7CisJCQllbmdpbmUtPm1hc3Rlcl9yZWdfY291bnQgPSBB UlJBWV9TSVpFKGhzd19tYXN0ZXJfcmVncyk7CiAJCX0gZWxzZSB7Ci0JCQlyaW5nLT5tYXN0ZXJf cmVnX3RhYmxlID0gaXZiX21hc3Rlcl9yZWdzOwotCQkJcmluZy0+bWFzdGVyX3JlZ19jb3VudCA9 IEFSUkFZX1NJWkUoaXZiX21hc3Rlcl9yZWdzKTsKKwkJCWVuZ2luZS0+bWFzdGVyX3JlZ190YWJs ZSA9IGl2Yl9tYXN0ZXJfcmVnczsKKwkJCWVuZ2luZS0+bWFzdGVyX3JlZ19jb3VudCA9IEFSUkFZ X1NJWkUoaXZiX21hc3Rlcl9yZWdzKTsKIAkJfQogCi0JCXJpbmctPmdldF9jbWRfbGVuZ3RoX21h c2sgPSBnZW43X2JsdF9nZXRfY21kX2xlbmd0aF9tYXNrOworCQllbmdpbmUtPmdldF9jbWRfbGVu Z3RoX21hc2sgPSBnZW43X2JsdF9nZXRfY21kX2xlbmd0aF9tYXNrOwogCQlicmVhazsKIAljYXNl IFZFQ1M6CiAJCWNtZF90YWJsZXMgPSBoc3dfdmVib3hfY21kczsKIAkJY21kX3RhYmxlX2NvdW50 ID0gQVJSQVlfU0laRShoc3dfdmVib3hfY21kcyk7CiAJCS8qIFZFQ1MgY2FuIHVzZSB0aGUgc2Ft ZSBsZW5ndGhfbWFzayBmdW5jdGlvbiBhcyBWQ1MgKi8KLQkJcmluZy0+Z2V0X2NtZF9sZW5ndGhf bWFzayA9IGdlbjdfYnNkX2dldF9jbWRfbGVuZ3RoX21hc2s7CisJCWVuZ2luZS0+Z2V0X2NtZF9s ZW5ndGhfbWFzayA9IGdlbjdfYnNkX2dldF9jbWRfbGVuZ3RoX21hc2s7CiAJCWJyZWFrOwogCWRl ZmF1bHQ6CiAJCURSTV9FUlJPUigiQ01EOiBjbWRfcGFyc2VyX2luaXQgd2l0aCB1bmtub3duIHJp bmc6ICVkXG4iLAotCQkJICByaW5nLT5pZCk7CisJCQkgIGVuZ2luZS0+aWQpOwogCQlCVUcoKTsK IAl9CiAKLQlCVUdfT04oIXZhbGlkYXRlX2NtZHNfc29ydGVkKHJpbmcsIGNtZF90YWJsZXMsIGNt ZF90YWJsZV9jb3VudCkpOwotCUJVR19PTighdmFsaWRhdGVfcmVnc19zb3J0ZWQocmluZykpOwor CUJVR19PTighdmFsaWRhdGVfY21kc19zb3J0ZWQoZW5naW5lLCBjbWRfdGFibGVzLCBjbWRfdGFi bGVfY291bnQpKTsKKwlCVUdfT04oIXZhbGlkYXRlX3JlZ3Nfc29ydGVkKGVuZ2luZSkpOwogCi0J V0FSTl9PTighaGFzaF9lbXB0eShyaW5nLT5jbWRfaGFzaCkpOworCVdBUk5fT04oIWhhc2hfZW1w dHkoZW5naW5lLT5jbWRfaGFzaCkpOwogCi0JcmV0ID0gaW5pdF9oYXNoX3RhYmxlKHJpbmcsIGNt ZF90YWJsZXMsIGNtZF90YWJsZV9jb3VudCk7CisJcmV0ID0gaW5pdF9oYXNoX3RhYmxlKGVuZ2lu ZSwgY21kX3RhYmxlcywgY21kX3RhYmxlX2NvdW50KTsKIAlpZiAocmV0KSB7CiAJCURSTV9FUlJP UigiQ01EOiBjbWRfcGFyc2VyX2luaXQgZmFpbGVkIVxuIik7Ci0JCWZpbmlfaGFzaF90YWJsZShy aW5nKTsKKwkJZmluaV9oYXNoX3RhYmxlKGVuZ2luZSk7CiAJCXJldHVybiByZXQ7CiAJfQogCi0J cmluZy0+bmVlZHNfY21kX3BhcnNlciA9IHRydWU7CisJZW5naW5lLT5uZWVkc19jbWRfcGFyc2Vy ID0gdHJ1ZTsKIAogCXJldHVybiAwOwogfQpAQCAtNzg2LDIxICs3ODYsMjEgQEAgaW50IGk5MTVf Y21kX3BhcnNlcl9pbml0X3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKICAqIFJl bGVhc2VzIGFueSByZXNvdXJjZXMgcmVsYXRlZCB0byBjb21tYW5kIHBhcnNpbmcgdGhhdCBtYXkg aGF2ZSBiZWVuCiAgKiBpbml0aWFsaXplZCBmb3IgdGhlIHNwZWNpZmllZCByaW5nLgogICovCi12 b2lkIGk5MTVfY21kX3BhcnNlcl9maW5pX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZykKK3ZvaWQgaTkxNV9jbWRfcGFyc2VyX2ZpbmlfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCiB7Ci0JaWYgKCFyaW5nLT5uZWVkc19jbWRfcGFyc2VyKQorCWlmICghZW5naW5l LT5uZWVkc19jbWRfcGFyc2VyKQogCQlyZXR1cm47CiAKLQlmaW5pX2hhc2hfdGFibGUocmluZyk7 CisJZmluaV9oYXNoX3RhYmxlKGVuZ2luZSk7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X2k5MTVfY21kX2Rlc2NyaXB0b3IqCi1maW5kX2NtZF9pbl90YWJsZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nLAorZmluZF9jbWRfaW5fdGFibGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLAogCQkgIHUzMiBjbWRfaGVhZGVyKQogewogCXN0cnVjdCBjbWRfbm9kZSAqZGVzY19u b2RlOwogCi0JaGFzaF9mb3JfZWFjaF9wb3NzaWJsZShyaW5nLT5jbWRfaGFzaCwgZGVzY19ub2Rl LCBub2RlLAorCWhhc2hfZm9yX2VhY2hfcG9zc2libGUoZW5naW5lLT5jbWRfaGFzaCwgZGVzY19u b2RlLCBub2RlLAogCQkJICAgICAgIGNtZF9oZWFkZXIgJiBDTURfSEFTSF9NQVNLKSB7CiAJCWNv bnN0IHN0cnVjdCBkcm1faTkxNV9jbWRfZGVzY3JpcHRvciAqZGVzYyA9IGRlc2Nfbm9kZS0+ZGVz YzsKIAkJdTMyIG1hc2tlZF9jbWQgPSBkZXNjLT5jbWQubWFzayAmIGNtZF9oZWFkZXI7CkBAIC04 MjIsMTggKzgyMiwxOCBAQCBmaW5kX2NtZF9pbl90YWJsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nLAogICogcmluZydzIGRlZmF1bHQgbGVuZ3RoIGVuY29kaW5nIGFuZCByZXR1cm5zIGRl ZmF1bHRfZGVzYy4KICAqLwogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9jbWRfZGVzY3Jp cHRvcioKLWZpbmRfY21kKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCitmaW5kX2NtZChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJIHUzMiBjbWRfaGVhZGVyLAogCSBzdHJ1 Y3QgZHJtX2k5MTVfY21kX2Rlc2NyaXB0b3IgKmRlZmF1bHRfZGVzYykKIHsKIAljb25zdCBzdHJ1 Y3QgZHJtX2k5MTVfY21kX2Rlc2NyaXB0b3IgKmRlc2M7CiAJdTMyIG1hc2s7CiAKLQlkZXNjID0g ZmluZF9jbWRfaW5fdGFibGUocmluZywgY21kX2hlYWRlcik7CisJZGVzYyA9IGZpbmRfY21kX2lu X3RhYmxlKGVuZ2luZSwgY21kX2hlYWRlcik7CiAJaWYgKGRlc2MpCiAJCXJldHVybiBkZXNjOwog Ci0JbWFzayA9IHJpbmctPmdldF9jbWRfbGVuZ3RoX21hc2soY21kX2hlYWRlcik7CisJbWFzayA9 IGVuZ2luZS0+Z2V0X2NtZF9sZW5ndGhfbWFzayhjbWRfaGVhZGVyKTsKIAlpZiAoIW1hc2spCiAJ CXJldHVybiBOVUxMOwogCkBAIC05NjMsMTggKzk2MywxOCBAQCB1bnBpbl9zcmM6CiAgKgogICog UmV0dXJuOiB0cnVlIGlmIHRoZSByaW5nIHJlcXVpcmVzIHNvZnR3YXJlIGNvbW1hbmQgcGFyc2lu ZwogICovCi1ib29sIGk5MTVfbmVlZHNfY21kX3BhcnNlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nKQorYm9vbCBpOTE1X25lZWRzX2NtZF9wYXJzZXIoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQogewotCWlmICghcmluZy0+bmVlZHNfY21kX3BhcnNlcikKKwlpZiAoIWVuZ2lu ZS0+bmVlZHNfY21kX3BhcnNlcikKIAkJcmV0dXJuIGZhbHNlOwogCi0JaWYgKCFVU0VTX1BQR1RU KHJpbmctPmRldikpCisJaWYgKCFVU0VTX1BQR1RUKGVuZ2luZS0+ZGV2KSkKIAkJcmV0dXJuIGZh bHNlOwogCiAJcmV0dXJuIChpOTE1LmVuYWJsZV9jbWRfcGFyc2VyID09IDEpOwogfQogCi1zdGF0 aWMgYm9vbCBjaGVja19jbWQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKK3N0 YXRpYyBib29sIGNoZWNrX2NtZChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs CiAJCSAgICAgIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9jbWRfZGVzY3JpcHRvciAqZGVzYywKIAkJ ICAgICAgY29uc3QgdTMyICpjbWQsIHUzMiBsZW5ndGgsCiAJCSAgICAgIGNvbnN0IGJvb2wgaXNf bWFzdGVyLApAQCAtMTAwNCwxNyArMTAwNCwxNyBAQCBzdGF0aWMgYm9vbCBjaGVja19jbWQoY29u c3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKIAkJICAgICBvZmZzZXQgKz0gc3RlcCkg ewogCQkJY29uc3QgdTMyIHJlZ19hZGRyID0gY21kW29mZnNldF0gJiBkZXNjLT5yZWcubWFzazsK IAkJCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9yZWdfZGVzY3JpcHRvciAqcmVnID0KLQkJCQlmaW5k X3JlZyhyaW5nLT5yZWdfdGFibGUsIHJpbmctPnJlZ19jb3VudCwKKwkJCQlmaW5kX3JlZyhlbmdp bmUtPnJlZ190YWJsZSwgZW5naW5lLT5yZWdfY291bnQsCiAJCQkJCSByZWdfYWRkcik7CiAKIAkJ CWlmICghcmVnICYmIGlzX21hc3RlcikKLQkJCQlyZWcgPSBmaW5kX3JlZyhyaW5nLT5tYXN0ZXJf cmVnX3RhYmxlLAotCQkJCQkgICAgICAgcmluZy0+bWFzdGVyX3JlZ19jb3VudCwKKwkJCQlyZWcg PSBmaW5kX3JlZyhlbmdpbmUtPm1hc3Rlcl9yZWdfdGFibGUsCisJCQkJCSAgICAgICBlbmdpbmUt Pm1hc3Rlcl9yZWdfY291bnQsCiAJCQkJCSAgICAgICByZWdfYWRkcik7CiAKIAkJCWlmICghcmVn KSB7CiAJCQkJRFJNX0RFQlVHX0RSSVZFUigiQ01EOiBSZWplY3RlZCByZWdpc3RlciAweCUwOFgg aW4gY29tbWFuZDogMHglMDhYIChyaW5nPSVkKVxuIiwKLQkJCQkJCSByZWdfYWRkciwgKmNtZCwg cmluZy0+aWQpOworCQkJCQkJIHJlZ19hZGRyLCAqY21kLCBlbmdpbmUtPmlkKTsKIAkJCQlyZXR1 cm4gZmFsc2U7CiAJCQl9CiAKQEAgLTEwODcsNyArMTA4Nyw3IEBAIHN0YXRpYyBib29sIGNoZWNr X2NtZChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogCQkJCQkJICpjbWQsCiAJ CQkJCQkgZGVzYy0+Yml0c1tpXS5tYXNrLAogCQkJCQkJIGRlc2MtPmJpdHNbaV0uZXhwZWN0ZWQs Ci0JCQkJCQkgZHdvcmQsIHJpbmctPmlkKTsKKwkJCQkJCSBkd29yZCwgZW5naW5lLT5pZCk7CiAJ CQkJcmV0dXJuIGZhbHNlOwogCQkJfQogCQl9CkBAIC0xMTEzLDcgKzExMTMsNyBAQCBzdGF0aWMg Ym9vbCBjaGVja19jbWQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKICAqIFJl dHVybjogbm9uLXplcm8gaWYgdGhlIHBhcnNlciBmaW5kcyB2aW9sYXRpb25zIG9yIG90aGVyd2lz ZSBmYWlsczsgLUVBQ0NFUwogICogaWYgdGhlIGJhdGNoIGFwcGVhcnMgbGVnYWwgYnV0IHNob3Vs ZCB1c2UgaGFyZHdhcmUgcGFyc2luZwogICovCi1pbnQgaTkxNV9wYXJzZV9jbWRzKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbmcsCitpbnQgaTkxNV9wYXJzZV9jbWRzKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwKIAkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpiYXRj aF9vYmosCiAJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqc2hhZG93X2JhdGNoX29i aiwKIAkJICAgIHUzMiBiYXRjaF9zdGFydF9vZmZzZXQsCkBAIC0xMTQ3LDcgKzExNDcsNyBAQCBp bnQgaTkxNV9wYXJzZV9jbWRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCiAJCWlmICgq Y21kID09IE1JX0JBVENIX0JVRkZFUl9FTkQpCiAJCQlicmVhazsKIAotCQlkZXNjID0gZmluZF9j bWQocmluZywgKmNtZCwgJmRlZmF1bHRfZGVzYyk7CisJCWRlc2MgPSBmaW5kX2NtZChlbmdpbmUs ICpjbWQsICZkZWZhdWx0X2Rlc2MpOwogCQlpZiAoIWRlc2MpIHsKIAkJCURSTV9ERUJVR19EUklW RVIoIkNNRDogVW5yZWNvZ25pemVkIGNvbW1hbmQ6IDB4JTA4WFxuIiwKIAkJCQkJICpjbWQpOwpA QCAtMTE3OSw3ICsxMTc5LDcgQEAgaW50IGk5MTVfcGFyc2VfY21kcyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nLAogCQkJYnJlYWs7CiAJCX0KIAotCQlpZiAoIWNoZWNrX2NtZChyaW5nLCBk ZXNjLCBjbWQsIGxlbmd0aCwgaXNfbWFzdGVyLAorCQlpZiAoIWNoZWNrX2NtZChlbmdpbmUsIGRl c2MsIGNtZCwgbGVuZ3RoLCBpc19tYXN0ZXIsCiAJCQkgICAgICAgJm9hY29udHJvbF9zZXQpKSB7 CiAJCQlyZXQgPSAtRUlOVkFMOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jCmluZGV4IDUwMzdjY2IxOGU3Ny4uMTY0ZTE0MzJkNDFmIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYwpAQCAtNzI1LDExICs3MjUsMTEgQEAgc3RhdGljIGludCBpOTE1X2dlbV9y ZXF1ZXN0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogfQogCiBzdGF0aWMg dm9pZCBpOTE1X3Jpbmdfc2Vxbm9faW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCi0JCQkJIHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCisJCQkJIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIHsKLQlpZiAocmluZy0+Z2V0X3NlcW5vKSB7CisJaWYgKGVuZ2luZS0+Z2V0X3NlcW5v KSB7CiAJCXNlcV9wcmludGYobSwgIkN1cnJlbnQgc2VxdWVuY2UgKCVzKTogJXhcbiIsCi0JCQkg ICByaW5nLT5uYW1lLCByaW5nLT5nZXRfc2Vxbm8ocmluZywgZmFsc2UpKTsKKwkJCSAgIGVuZ2lu ZS0+bmFtZSwgZW5naW5lLT5nZXRfc2Vxbm8oZW5naW5lLCBmYWxzZSkpOwogCX0KIH0KIApAQCAt MTk5MiwyMiArMTk5MiwyMiBAQCBzdGF0aWMgaW50IGk5MTVfY29udGV4dF9zdGF0dXMoc3RydWN0 IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAKIHN0YXRpYyB2b2lkIGk5MTVfZHVtcF9scmNf b2JqKHN0cnVjdCBzZXFfZmlsZSAqbSwKIAkJCSAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj dHgsCi0JCQkgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQorCQkJICAgICAgc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBwYWdlICpwYWdlOwogCXVp bnQzMl90ICpyZWdfc3RhdGU7CiAJaW50IGo7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg KmN0eF9vYmogPSBjdHgtPmVuZ2luZVtyaW5nLT5pZF0uc3RhdGU7CisJc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKmN0eF9vYmogPSBjdHgtPmVuZ2luZVtlbmdpbmUtPmlkXS5zdGF0ZTsKIAl1 bnNpZ25lZCBsb25nIGdndHRfb2Zmc2V0ID0gMDsKIAogCWlmIChjdHhfb2JqID09IE5VTEwpIHsK IAkJc2VxX3ByaW50ZihtLCAiQ29udGV4dCBvbiAlcyB3aXRoIG5vIGdlbSBvYmplY3RcbiIsCi0J CQkgICByaW5nLT5uYW1lKTsKKwkJCSAgIGVuZ2luZS0+bmFtZSk7CiAJCXJldHVybjsKIAl9CiAK LQlzZXFfcHJpbnRmKG0sICJDT05URVhUOiAlcyAldVxuIiwgcmluZy0+bmFtZSwKLQkJICAgaW50 ZWxfZXhlY2xpc3RzX2N0eF9pZChjdHgsIHJpbmcpKTsKKwlzZXFfcHJpbnRmKG0sICJDT05URVhU OiAlcyAldVxuIiwgZW5naW5lLT5uYW1lLAorCQkgICBpbnRlbF9leGVjbGlzdHNfY3R4X2lkKGN0 eCwgZW5naW5lKSk7CiAKIAlpZiAoIWk5MTVfZ2VtX29ial9nZ3R0X2JvdW5kKGN0eF9vYmopKQog CQlzZXFfcHV0cyhtLCAiXHROb3QgYm91bmQgaW4gR0dUVFxuIik7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAppbmRleCA4MGIxNGYxYmEzMDIuLjhkODcyNDJjZTYwMSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCkBAIC0yOTY0LDEwICsyOTY0LDEwIEBAIGludCBfX211c3RfY2hlY2sgaTkxNV9nZW1f Z2V0X3NlcW5vKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiAqc2Vxbm8pOwogaW50IF9fbXVz dF9jaGVjayBpOTE1X2dlbV9zZXRfc2Vxbm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHNl cW5vKTsKIAogc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoKLWk5MTVfZ2VtX2ZpbmRfYWN0 aXZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyk7CitpOTE1X2dlbV9maW5k X2FjdGl2ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiAKIGJvb2wg aTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwotdm9pZCBp OTE1X2dlbV9yZXRpcmVfcmVxdWVzdHNfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n KTsKK3ZvaWQgaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzX3Jpbmcoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKTsKIGludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fY2hlY2tfd2VkZ2Uoc3Ry dWN0IGk5MTVfZ3B1X2Vycm9yICplcnJvciwKIAkJCQkgICAgICBib29sIGludGVycnVwdGlibGUp OwogCkBAIC0zMjk3LDEwICszMjk3LDEwIEBAIGNvbnN0IGNoYXIgKmk5MTVfY2FjaGVfbGV2ZWxf c3RyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBpbnQgdHlwZSk7CiAKIC8qIGk5MTVf Y21kX3BhcnNlci5jICovCiBpbnQgaTkxNV9jbWRfcGFyc2VyX2dldF92ZXJzaW9uKHZvaWQpOwot aW50IGk5MTVfY21kX3BhcnNlcl9pbml0X3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu Zyk7Ci12b2lkIGk5MTVfY21kX3BhcnNlcl9maW5pX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZyk7Ci1ib29sIGk5MTVfbmVlZHNfY21kX3BhcnNlcihzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpyaW5nKTsKLWludCBpOTE1X3BhcnNlX2NtZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq cmluZywKK2ludCBpOTE1X2NtZF9wYXJzZXJfaW5pdF9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSk7Cit2b2lkIGk5MTVfY21kX3BhcnNlcl9maW5pX3Jpbmcoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKTsKK2Jvb2wgaTkxNV9uZWVkc19jbWRfcGFyc2VyKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CitpbnQgaTkxNV9wYXJzZV9jbWRzKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpi YXRjaF9vYmosCiAJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqc2hhZG93X2JhdGNo X29iaiwKIAkJICAgIHUzMiBiYXRjaF9zdGFydF9vZmZzZXQsCkBAIC0zNTcxLDExICszNTcxLDEx IEBAIHdhaXRfcmVtYWluaW5nX21zX2Zyb21famlmZmllcyh1bnNpZ25lZCBsb25nIHRpbWVzdGFt cF9qaWZmaWVzLCBpbnQgdG9fd2FpdF9tcykKIAl9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBp OTE1X3RyYWNlX2lycV9nZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKK3N0YXRpYyBp bmxpbmUgdm9pZCBpOTE1X3RyYWNlX2lycV9nZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLAogCQkJCSAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewotCWlm IChyaW5nLT50cmFjZV9pcnFfcmVxID09IE5VTEwgJiYgcmluZy0+aXJxX2dldChyaW5nKSkKLQkJ aTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJnJpbmctPnRyYWNlX2lycV9yZXEsIHJlcSk7CisJaWYg KGVuZ2luZS0+dHJhY2VfaXJxX3JlcSA9PSBOVUxMICYmIGVuZ2luZS0+aXJxX2dldChlbmdpbmUp KQorCQlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmZW5naW5lLT50cmFjZV9pcnFfcmVxLCByZXEp OwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IDVhN2Y2MDMyZjA2Ni4u MTExOWI4ZjQ2ZjA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTExNDEsOSArMTE0MSw5 IEBAIHN0YXRpYyB2b2lkIGZha2VfaXJxKHVuc2lnbmVkIGxvbmcgZGF0YSkKIH0KIAogc3RhdGlj IGJvb2wgbWlzc2VkX2lycShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCSAg ICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQorCQkgICAgICAgc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogewotCXJldHVybiB0ZXN0X2JpdChyaW5nLT5pZCwgJmRldl9w cml2LT5ncHVfZXJyb3IubWlzc2VkX2lycV9yaW5ncyk7CisJcmV0dXJuIHRlc3RfYml0KGVuZ2lu ZS0+aWQsICZkZXZfcHJpdi0+Z3B1X2Vycm9yLm1pc3NlZF9pcnFfcmluZ3MpOwogfQogCiBzdGF0 aWMgdW5zaWduZWQgbG9uZyBsb2NhbF9jbG9ja191cyh1bnNpZ25lZCAqY3B1KQpAQCAtMjY4OSwx MSArMjY4OSwxMSBAQCB2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfZnJlZShzdHJ1Y3Qga3JlZiAqcmVx X3JlZikKIH0KIAogc3RhdGljIGlubGluZSBpbnQKLV9faTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAorX19pOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCSBzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y3R4LAogCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqKnJlcV9vdXQpCiB7Ci0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShyaW5nLT5kZXYpOworCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5naW5lLT5kZXYpOwog CXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwogCWludCByZXQ7CiAKQEAgLTI3MDYs MTMgKzI3MDYsMTMgQEAgX19pOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnJpbmcsCiAJaWYgKHJlcSA9PSBOVUxMKQogCQlyZXR1cm4gLUVOT01FTTsKIAotCXJl dCA9IGk5MTVfZ2VtX2dldF9zZXFubyhyaW5nLT5kZXYsICZyZXEtPnNlcW5vKTsKKwlyZXQgPSBp OTE1X2dlbV9nZXRfc2Vxbm8oZW5naW5lLT5kZXYsICZyZXEtPnNlcW5vKTsKIAlpZiAocmV0KQog CQlnb3RvIGVycjsKIAogCWtyZWZfaW5pdCgmcmVxLT5yZWYpOwogCXJlcS0+aTkxNSA9IGRldl9w cml2OwotCXJlcS0+cmluZyA9IHJpbmc7CisJcmVxLT5yaW5nID0gZW5naW5lOwogCXJlcS0+Y3R4 ICA9IGN0eDsKIAlpOTE1X2dlbV9jb250ZXh0X3JlZmVyZW5jZShyZXEtPmN0eCk7CiAKQEAgLTI3 ODcsMTEgKzI3ODcsMTEgQEAgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2NhbmNlbChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIH0KIAogc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICoKLWk5MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq cmluZykKK2k5MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKIAot CWxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVzdCwgJnJpbmctPnJlcXVlc3RfbGlzdCwgbGlzdCkg eworCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVzdCwgJmVuZ2luZS0+cmVxdWVzdF9saXN0LCBs aXN0KSB7CiAJCWlmIChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXF1ZXN0LCBmYWxzZSkp CiAJCQljb250aW51ZTsKIApAQCAtMjgwMiwzNyArMjgwMiwzNyBAQCBpOTE1X2dlbV9maW5kX2Fj dGl2ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiB9CiAKIHN0YXRpYyB2 b2lkIGk5MTVfZ2VtX3Jlc2V0X3Jpbmdfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKLQkJCQkgICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKKwkJCQkg ICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKIAlib29sIHJpbmdfaHVuZzsKIAotCXJlcXVlc3QgPSBp OTE1X2dlbV9maW5kX2FjdGl2ZV9yZXF1ZXN0KHJpbmcpOworCXJlcXVlc3QgPSBpOTE1X2dlbV9m aW5kX2FjdGl2ZV9yZXF1ZXN0KGVuZ2luZSk7CiAKIAlpZiAocmVxdWVzdCA9PSBOVUxMKQogCQly ZXR1cm47CiAKLQlyaW5nX2h1bmcgPSByaW5nLT5oYW5nY2hlY2suc2NvcmUgPj0gSEFOR0NIRUNL X1NDT1JFX1JJTkdfSFVORzsKKwlyaW5nX2h1bmcgPSBlbmdpbmUtPmhhbmdjaGVjay5zY29yZSA+ PSBIQU5HQ0hFQ0tfU0NPUkVfUklOR19IVU5HOwogCiAJaTkxNV9zZXRfcmVzZXRfc3RhdHVzKGRl dl9wcml2LCByZXF1ZXN0LT5jdHgsIHJpbmdfaHVuZyk7CiAKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5 X2NvbnRpbnVlKHJlcXVlc3QsICZyaW5nLT5yZXF1ZXN0X2xpc3QsIGxpc3QpCisJbGlzdF9mb3Jf ZWFjaF9lbnRyeV9jb250aW51ZShyZXF1ZXN0LCAmZW5naW5lLT5yZXF1ZXN0X2xpc3QsIGxpc3Qp CiAJCWk5MTVfc2V0X3Jlc2V0X3N0YXR1cyhkZXZfcHJpdiwgcmVxdWVzdC0+Y3R4LCBmYWxzZSk7 CiB9CiAKIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3Jlc2V0X3JpbmdfY2xlYW51cChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcpCisJCQkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlzdHJ1Y3QgaW50 ZWxfcmluZ2J1ZmZlciAqYnVmZmVyOwogCi0Jd2hpbGUgKCFsaXN0X2VtcHR5KCZyaW5nLT5hY3Rp dmVfbGlzdCkpIHsKKwl3aGlsZSAoIWxpc3RfZW1wdHkoJmVuZ2luZS0+YWN0aXZlX2xpc3QpKSB7 CiAJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CiAKLQkJb2JqID0gbGlzdF9maXJz dF9lbnRyeSgmcmluZy0+YWN0aXZlX2xpc3QsCisJCW9iaiA9IGxpc3RfZmlyc3RfZW50cnkoJmVu Z2luZS0+YWN0aXZlX2xpc3QsCiAJCQkJICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 LAotCQkJCSAgICAgICByaW5nX2xpc3RbcmluZy0+aWRdKTsKKwkJCQkgICAgICAgcmluZ19saXN0 W2VuZ2luZS0+aWRdKTsKIAotCQlpOTE1X2dlbV9vYmplY3RfcmV0aXJlX19yZWFkKG9iaiwgcmlu Zy0+aWQpOworCQlpOTE1X2dlbV9vYmplY3RfcmV0aXJlX19yZWFkKG9iaiwgZW5naW5lLT5pZCk7 CiAJfQogCiAJLyoKQEAgLTI4NDIsMTQgKzI4NDIsMTQgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1f cmVzZXRfcmluZ19jbGVhbnVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkg Ki8KIAogCWlmIChpOTE1LmVuYWJsZV9leGVjbGlzdHMpIHsKLQkJc3Bpbl9sb2NrX2lycSgmcmlu Zy0+ZXhlY2xpc3RfbG9jayk7CisJCXNwaW5fbG9ja19pcnEoJmVuZ2luZS0+ZXhlY2xpc3RfbG9j ayk7CiAKIAkJLyogbGlzdF9zcGxpY2VfdGFpbF9pbml0IGNoZWNrcyBmb3IgZW1wdHkgbGlzdHMg Ki8KLQkJbGlzdF9zcGxpY2VfdGFpbF9pbml0KCZyaW5nLT5leGVjbGlzdF9xdWV1ZSwKLQkJCQkg ICAgICAmcmluZy0+ZXhlY2xpc3RfcmV0aXJlZF9yZXFfbGlzdCk7CisJCWxpc3Rfc3BsaWNlX3Rh aWxfaW5pdCgmZW5naW5lLT5leGVjbGlzdF9xdWV1ZSwKKwkJCQkgICAgICAmZW5naW5lLT5leGVj bGlzdF9yZXRpcmVkX3JlcV9saXN0KTsKIAotCQlzcGluX3VubG9ja19pcnEoJnJpbmctPmV4ZWNs aXN0X2xvY2spOwotCQlpbnRlbF9leGVjbGlzdHNfcmV0aXJlX3JlcXVlc3RzKHJpbmcpOworCQlz cGluX3VubG9ja19pcnEoJmVuZ2luZS0+ZXhlY2xpc3RfbG9jayk7CisJCWludGVsX2V4ZWNsaXN0 c19yZXRpcmVfcmVxdWVzdHMoZW5naW5lKTsKIAl9CiAKIAkvKgpAQCAtMjg1OSwxMCArMjg1OSwx MCBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZXNldF9yaW5nX2NsZWFudXAoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCSAqIGltcGxpY2l0IHJlZmVyZW5jZXMgb24gdGhpbmdz IGxpa2UgZS5nLiBwcGd0dCBhZGRyZXNzIHNwYWNlcyB0aHJvdWdoCiAJICogdGhlIHJlcXVlc3Qu CiAJICovCi0Jd2hpbGUgKCFsaXN0X2VtcHR5KCZyaW5nLT5yZXF1ZXN0X2xpc3QpKSB7CisJd2hp bGUgKCFsaXN0X2VtcHR5KCZlbmdpbmUtPnJlcXVlc3RfbGlzdCkpIHsKIAkJc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0OwogCi0JCXJlcXVlc3QgPSBsaXN0X2ZpcnN0X2VudHJ5 KCZyaW5nLT5yZXF1ZXN0X2xpc3QsCisJCXJlcXVlc3QgPSBsaXN0X2ZpcnN0X2VudHJ5KCZlbmdp bmUtPnJlcXVlc3RfbGlzdCwKIAkJCQkJICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0LAog CQkJCQkgICBsaXN0KTsKIApAQCAtMjg3Niw3ICsyODc2LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9n ZW1fcmVzZXRfcmluZ19jbGVhbnVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAkgKiB1cG9uIHJlc2V0IGlzIGxlc3MgdGhhbiB3aGVuIHdlIHN0YXJ0LiBEbyBvbmUgbW9yZSBw YXNzIG92ZXIKIAkgKiBhbGwgdGhlIHJpbmdidWZmZXJzIHRvIHJlc2V0IGxhc3RfcmV0aXJlZF9o ZWFkLgogCSAqLwotCWxpc3RfZm9yX2VhY2hfZW50cnkoYnVmZmVyLCAmcmluZy0+YnVmZmVycywg bGluaykgeworCWxpc3RfZm9yX2VhY2hfZW50cnkoYnVmZmVyLCAmZW5naW5lLT5idWZmZXJzLCBs aW5rKSB7CiAJCWJ1ZmZlci0+bGFzdF9yZXRpcmVkX2hlYWQgPSBidWZmZXItPnRhaWw7CiAJCWlu dGVsX3JpbmdfdXBkYXRlX3NwYWNlKGJ1ZmZlcik7CiAJfQpAQCAtMjkxMCwxOSArMjkxMCwxOSBA QCB2b2lkIGk5MTVfZ2VtX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAgKiBUaGlzIGZ1 bmN0aW9uIGNsZWFycyB0aGUgcmVxdWVzdCBsaXN0IGFzIHNlcXVlbmNlIG51bWJlcnMgYXJlIHBh c3NlZC4KICAqLwogdm9pZAotaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzX3Jpbmcoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZykKK2k5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0c19yaW5nKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlXQVJOX09OKGk5MTVfdmVyaWZ5X2xpc3Rz KHJpbmctPmRldikpOworCVdBUk5fT04oaTkxNV92ZXJpZnlfbGlzdHMoZW5naW5lLT5kZXYpKTsK IAogCS8qIFJldGlyZSByZXF1ZXN0cyBmaXJzdCBhcyB3ZSB1c2UgaXQgYWJvdmUgZm9yIHRoZSBl YXJseSByZXR1cm4uCiAJICogSWYgd2UgcmV0aXJlIHJlcXVlc3RzIGxhc3QsIHdlIG1heSB1c2Ug YSBsYXRlciBzZXFubyBhbmQgc28gY2xlYXIKIAkgKiB0aGUgcmVxdWVzdHMgbGlzdHMgd2l0aG91 dCBjbGVhcmluZyB0aGUgYWN0aXZlIGxpc3QsIGxlYWRpbmcgdG8KIAkgKiBjb25mdXNpb24uCiAJ ICovCi0Jd2hpbGUgKCFsaXN0X2VtcHR5KCZyaW5nLT5yZXF1ZXN0X2xpc3QpKSB7CisJd2hpbGUg KCFsaXN0X2VtcHR5KCZlbmdpbmUtPnJlcXVlc3RfbGlzdCkpIHsKIAkJc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0OwogCi0JCXJlcXVlc3QgPSBsaXN0X2ZpcnN0X2VudHJ5KCZy aW5nLT5yZXF1ZXN0X2xpc3QsCisJCXJlcXVlc3QgPSBsaXN0X2ZpcnN0X2VudHJ5KCZlbmdpbmUt PnJlcXVlc3RfbGlzdCwKIAkJCQkJICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0LAogCQkJ CQkgICBsaXN0KTsKIApAQCAtMjkzNiwyNiArMjkzNiwyNiBAQCBpOTE1X2dlbV9yZXRpcmVfcmVx dWVzdHNfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogCSAqIGJ5IHRoZSByaW5n YnVmZmVyIHRvIHRoZSBmbHVzaGluZy9pbmFjdGl2ZSBsaXN0cyBhcyBhcHByb3ByaWF0ZSwKIAkg KiBiZWZvcmUgd2UgZnJlZSB0aGUgY29udGV4dCBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVlc3Rz LgogCSAqLwotCXdoaWxlICghbGlzdF9lbXB0eSgmcmluZy0+YWN0aXZlX2xpc3QpKSB7CisJd2hp bGUgKCFsaXN0X2VtcHR5KCZlbmdpbmUtPmFjdGl2ZV9saXN0KSkgewogCQlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqOwogCi0JCW9iaiA9IGxpc3RfZmlyc3RfZW50cnkoJnJpbmctPmFj dGl2ZV9saXN0LAotCQkJCSAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0LAotCQkJCSAg ICAgIHJpbmdfbGlzdFtyaW5nLT5pZF0pOworCQlvYmogPSBsaXN0X2ZpcnN0X2VudHJ5KCZlbmdp bmUtPmFjdGl2ZV9saXN0LAorCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCwK KwkJCQkgICAgICAgcmluZ19saXN0W2VuZ2luZS0+aWRdKTsKIAotCQlpZiAoIWxpc3RfZW1wdHko Jm9iai0+bGFzdF9yZWFkX3JlcVtyaW5nLT5pZF0tPmxpc3QpKQorCQlpZiAoIWxpc3RfZW1wdHko Jm9iai0+bGFzdF9yZWFkX3JlcVtlbmdpbmUtPmlkXS0+bGlzdCkpCiAJCQlicmVhazsKIAotCQlp OTE1X2dlbV9vYmplY3RfcmV0aXJlX19yZWFkKG9iaiwgcmluZy0+aWQpOworCQlpOTE1X2dlbV9v YmplY3RfcmV0aXJlX19yZWFkKG9iaiwgZW5naW5lLT5pZCk7CiAJfQogCi0JaWYgKHVubGlrZWx5 KHJpbmctPnRyYWNlX2lycV9yZXEgJiYKLQkJICAgICBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRl ZChyaW5nLT50cmFjZV9pcnFfcmVxLCB0cnVlKSkpIHsKLQkJcmluZy0+aXJxX3B1dChyaW5nKTsK LQkJaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJnJpbmctPnRyYWNlX2lycV9yZXEsIE5VTEwpOwor CWlmICh1bmxpa2VseShlbmdpbmUtPnRyYWNlX2lycV9yZXEgJiYKKwkJICAgICBpOTE1X2dlbV9y ZXF1ZXN0X2NvbXBsZXRlZChlbmdpbmUtPnRyYWNlX2lycV9yZXEsIHRydWUpKSkgeworCQllbmdp bmUtPmlycV9wdXQoZW5naW5lKTsKKwkJaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJmVuZ2luZS0+ dHJhY2VfaXJxX3JlcSwgTlVMTCk7CiAJfQogCi0JV0FSTl9PTihpOTE1X3ZlcmlmeV9saXN0cyhy aW5nLT5kZXYpKTsKKwlXQVJOX09OKGk5MTVfdmVyaWZ5X2xpc3RzKGVuZ2luZS0+ZGV2KSk7CiB9 CiAKIGJvb2wKQEAgLTUwMjIsMTAgKzUwMjIsMTAgQEAgaTkxNV9nZW1fY2xlYW51cF9yaW5nYnVm ZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB9CiAKIHN0YXRpYyB2b2lkCi1pbml0X3Jpbmdf bGlzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKK2luaXRfcmluZ19saXN0cyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0JSU5JVF9MSVNUX0hFQUQoJnJpbmctPmFj dGl2ZV9saXN0KTsKLQlJTklUX0xJU1RfSEVBRCgmcmluZy0+cmVxdWVzdF9saXN0KTsKKwlJTklU X0xJU1RfSEVBRCgmZW5naW5lLT5hY3RpdmVfbGlzdCk7CisJSU5JVF9MSVNUX0hFQUQoJmVuZ2lu ZS0+cmVxdWVzdF9saXN0KTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5jCmluZGV4IGNjMDc2NjZjMmQ5MS4uNDRmNTgyOTg4MDk0IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCkBAIC02MDAsNyArNjAwLDcgQEAgbWlfc2V0X2Nv bnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBod19mbGFncykKIAly ZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkX3NraXBfc3dpdGNoKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCitzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkX3Nr aXBfc3dpdGNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCQkgICAgICBzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqZnJvbSwKIAkJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAq dG8pCiB7CkBAIC02MDgsNDIgKzYwOCw0MiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkX3Nr aXBfc3dpdGNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCiAJCXJldHVybiBmYWxzZTsK IAogCWlmICh0by0+cHBndHQgJiYgZnJvbSA9PSB0byAmJgotCSAgICAhKGludGVsX3JpbmdfZmxh ZyhyaW5nKSAmIHRvLT5wcGd0dC0+cGRfZGlydHlfcmluZ3MpKQorCSAgICAhKGludGVsX3Jpbmdf ZmxhZyhlbmdpbmUpICYgdG8tPnBwZ3R0LT5wZF9kaXJ0eV9yaW5ncykpCiAJCXJldHVybiB0cnVl OwogCiAJcmV0dXJuIGZhbHNlOwogfQogCiBzdGF0aWMgYm9vbAotbmVlZHNfcGRfbG9hZF9wcmUo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgc3RydWN0IGludGVsX2NvbnRleHQgKnRvKQor bmVlZHNfcGRfbG9hZF9wcmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqdG8pCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gcmluZy0+ZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBlbmdpbmUtPmRldi0+ZGV2X3ByaXZhdGU7CiAKIAlpZiAoIXRvLT5wcGd0dCkKIAkJ cmV0dXJuIGZhbHNlOwogCi0JaWYgKElOVEVMX0lORk8ocmluZy0+ZGV2KS0+Z2VuIDwgOCkKKwlp ZiAoSU5URUxfSU5GTyhlbmdpbmUtPmRldiktPmdlbiA8IDgpCiAJCXJldHVybiB0cnVlOwogCi0J aWYgKHJpbmcgIT0gJmRldl9wcml2LT5yaW5nW1JDU10pCisJaWYgKGVuZ2luZSAhPSAmZGV2X3By aXYtPnJpbmdbUkNTXSkKIAkJcmV0dXJuIHRydWU7CiAKIAlyZXR1cm4gZmFsc2U7CiB9CiAKIHN0 YXRpYyBib29sCi1uZWVkc19wZF9sb2FkX3Bvc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu Zywgc3RydWN0IGludGVsX2NvbnRleHQgKnRvLAotCQl1MzIgaHdfZmxhZ3MpCituZWVkc19wZF9s b2FkX3Bvc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqdG8sCisJCSAgIHUzMiBod19mbGFncykKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSByaW5nLT5kZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKIAogCWlmICghdG8t PnBwZ3R0KQogCQlyZXR1cm4gZmFsc2U7CiAKLQlpZiAoIUlTX0dFTjgocmluZy0+ZGV2KSkKKwlp ZiAoIUlTX0dFTjgoZW5naW5lLT5kZXYpKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlpZiAocmluZyAh PSAmZGV2X3ByaXYtPnJpbmdbUkNTXSkKKwlpZiAoZW5naW5lICE9ICZkZXZfcHJpdi0+cmluZ1tS Q1NdKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAoaHdfZmxhZ3MgJiBNSV9SRVNUT1JFX0lOSElC SVQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVy LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKaW5kZXggYjcz NDk2ZWE1NTgzLi5mOTRkNzU2ODI4ZTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9leGVjYnVmZmVyLmMKQEAgLTU5OSw3ICs1OTksNyBAQCBzdGF0aWMgYm9vbCBvbmx5X21hcHBh YmxlX2Zvcl9yZWxvYyh1bnNpZ25lZCBpbnQgZmxhZ3MpCiAKIHN0YXRpYyBpbnQKIGk5MTVfZ2Vt X2V4ZWNidWZmZXJfcmVzZXJ2ZV92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCi0JCQkJc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZywKKwkJCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsCiAJCQkJYm9vbCAqbmVlZF9yZWxvYykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqID0gdm1hLT5vYmo7CkBAIC03MTMsNyArNzEzLDcgQEAgZWJfdm1hX21pc3BsYWNlZChz dHJ1Y3QgaTkxNV92bWEgKnZtYSkKIH0KIAogc3RhdGljIGludAotaTkxNV9nZW1fZXhlY2J1ZmZl cl9yZXNlcnZlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCitpOTE1X2dlbV9leGVjYnVm ZmVyX3Jlc2VydmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQkJICAgIHN0cnVj dCBsaXN0X2hlYWQgKnZtYXMsCiAJCQkgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKIAkJ CSAgICBib29sICpuZWVkX3JlbG9jcykKQEAgLTcyMywxMCArNzIzLDEwIEBAIGk5MTVfZ2VtX2V4 ZWNidWZmZXJfcmVzZXJ2ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogCXN0cnVjdCBp OTE1X2FkZHJlc3Nfc3BhY2UgKnZtOwogCXN0cnVjdCBsaXN0X2hlYWQgb3JkZXJlZF92bWFzOwog CXN0cnVjdCBsaXN0X2hlYWQgcGlubmVkX3ZtYXM7Ci0JYm9vbCBoYXNfZmVuY2VkX2dwdV9hY2Nl c3MgPSBJTlRFTF9JTkZPKHJpbmctPmRldiktPmdlbiA8IDQ7CisJYm9vbCBoYXNfZmVuY2VkX2dw dV9hY2Nlc3MgPSBJTlRFTF9JTkZPKGVuZ2luZS0+ZGV2KS0+Z2VuIDwgNDsKIAlpbnQgcmV0cnk7 CiAKLQlpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHNfcmluZyhyaW5nKTsKKwlpOTE1X2dlbV9yZXRp cmVfcmVxdWVzdHNfcmluZyhlbmdpbmUpOwogCiAJdm0gPSBsaXN0X2ZpcnN0X2VudHJ5KHZtYXMs IHN0cnVjdCBpOTE1X3ZtYSwgZXhlY19saXN0KS0+dm07CiAKQEAgLTc4OCw3ICs3ODgsOSBAQCBp OTE1X2dlbV9leGVjYnVmZmVyX3Jlc2VydmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywK IAkJCWlmIChlYl92bWFfbWlzcGxhY2VkKHZtYSkpCiAJCQkJcmV0ID0gaTkxNV92bWFfdW5iaW5k KHZtYSk7CiAJCQllbHNlCi0JCQkJcmV0ID0gaTkxNV9nZW1fZXhlY2J1ZmZlcl9yZXNlcnZlX3Zt YSh2bWEsIHJpbmcsIG5lZWRfcmVsb2NzKTsKKwkJCQlyZXQgPSBpOTE1X2dlbV9leGVjYnVmZmVy X3Jlc2VydmVfdm1hKHZtYSwKKwkJCQkJCQkJICAgICAgZW5naW5lLAorCQkJCQkJCQkgICAgICBu ZWVkX3JlbG9jcyk7CiAJCQlpZiAocmV0KQogCQkJCWdvdG8gZXJyOwogCQl9CkBAIC03OTgsNyAr ODAwLDggQEAgaTkxNV9nZW1fZXhlY2J1ZmZlcl9yZXNlcnZlKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKnJpbmcsCiAJCQlpZiAoZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUpKQogCQkJ CWNvbnRpbnVlOwogCi0JCQlyZXQgPSBpOTE1X2dlbV9leGVjYnVmZmVyX3Jlc2VydmVfdm1hKHZt YSwgcmluZywgbmVlZF9yZWxvY3MpOworCQkJcmV0ID0gaTkxNV9nZW1fZXhlY2J1ZmZlcl9yZXNl cnZlX3ZtYSh2bWEsIGVuZ2luZSwKKwkJCQkJCQkgICAgICBuZWVkX3JlbG9jcyk7CiAJCQlpZiAo cmV0KQogCQkJCWdvdG8gZXJyOwogCQl9CkBAIC04MjEsNyArODI0LDcgQEAgc3RhdGljIGludAog aTkxNV9nZW1fZXhlY2J1ZmZlcl9yZWxvY2F0ZV9zbG93KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CiAJCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyICphcmdzLAogCQkJCSAgc3Ry dWN0IGRybV9maWxlICpmaWxlLAotCQkJCSAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywK KwkJCQkgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCQkgIHN0cnVjdCBlYl92 bWFzICplYiwKIAkJCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpleGVjLAog CQkJCSAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCkKQEAgLTkxMCw3ICs5MTMsOCBAQCBpOTE1 X2dlbV9leGVjYnVmZmVyX3JlbG9jYXRlX3Nsb3coc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJ Z290byBlcnI7CiAKIAluZWVkX3JlbG9jcyA9IChhcmdzLT5mbGFncyAmIEk5MTVfRVhFQ19OT19S RUxPQykgPT0gMDsKLQlyZXQgPSBpOTE1X2dlbV9leGVjYnVmZmVyX3Jlc2VydmUocmluZywgJmVi LT52bWFzLCBjdHgsICZuZWVkX3JlbG9jcyk7CisJcmV0ID0gaTkxNV9nZW1fZXhlY2J1ZmZlcl9y ZXNlcnZlKGVuZ2luZSwgJmViLT52bWFzLCBjdHgsCisJCQkJCSAgJm5lZWRfcmVsb2NzKTsKIAlp ZiAocmV0KQogCQlnb3RvIGVycjsKIApAQCAtMTA2MiwxMiArMTA2NiwxMiBAQCB2YWxpZGF0ZV9l eGVjX2xpc3Qoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAogc3RhdGljIHN0cnVjdCBpbnRlbF9j b250ZXh0ICoKIGk5MTVfZ2VtX3ZhbGlkYXRlX2NvbnRleHQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgc3RydWN0IGRybV9maWxlICpmaWxlLAotCQkJICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpy aW5nLCBjb25zdCB1MzIgY3R4X2lkKQorCQkJICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsIGNvbnN0IHUzMiBjdHhfaWQpCiB7CiAJc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCA9IE5V TEw7CiAJc3RydWN0IGk5MTVfY3R4X2hhbmdfc3RhdHMgKmhzOwogCi0JaWYgKHJpbmctPmlkICE9 IFJDUyAmJiBjdHhfaWQgIT0gREVGQVVMVF9DT05URVhUX0hBTkRMRSkKKwlpZiAoZW5naW5lLT5p ZCAhPSBSQ1MgJiYgY3R4X2lkICE9IERFRkFVTFRfQ09OVEVYVF9IQU5ETEUpCiAJCXJldHVybiBF UlJfUFRSKC1FSU5WQUwpOwogCiAJY3R4ID0gaTkxNV9nZW1fY29udGV4dF9nZXQoZmlsZS0+ZHJp dmVyX3ByaXYsIGN0eF9pZCk7CkBAIC0xMDgwLDggKzEwODQsOCBAQCBpOTE1X2dlbV92YWxpZGF0 ZV9jb250ZXh0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwK IAkJcmV0dXJuIEVSUl9QVFIoLUVJTyk7CiAJfQogCi0JaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0 cyAmJiAhY3R4LT5lbmdpbmVbcmluZy0+aWRdLnN0YXRlKSB7Ci0JCWludCByZXQgPSBpbnRlbF9s cl9jb250ZXh0X2RlZmVycmVkX2FsbG9jKGN0eCwgcmluZyk7CisJaWYgKGk5MTUuZW5hYmxlX2V4 ZWNsaXN0cyAmJiAhY3R4LT5lbmdpbmVbZW5naW5lLT5pZF0uc3RhdGUpIHsKKwkJaW50IHJldCA9 IGludGVsX2xyX2NvbnRleHRfZGVmZXJyZWRfYWxsb2MoY3R4LCBlbmdpbmUpOwogCQlpZiAocmV0 KSB7CiAJCQlEUk1fREVCVUcoIkNvdWxkIG5vdCBjcmVhdGUgTFJDICV1OiAlZFxuIiwgY3R4X2lk LCByZXQpOwogCQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKQEAgLTExNzEsNyArMTE3NSw3IEBAIGk5 MTVfcmVzZXRfZ2VuN19zb2xfb2Zmc2V0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogfQogCiBz dGF0aWMgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QqCi1pOTE1X2dlbV9leGVjYnVmZmVyX3Bh cnNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCitpOTE1X2dlbV9leGVjYnVmZmVyX3Bh cnNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCSAgc3RydWN0IGRybV9pOTE1 X2dlbV9leGVjX29iamVjdDIgKnNoYWRvd19leGVjX2VudHJ5LAogCQkJICBzdHJ1Y3QgZWJfdm1h cyAqZWIsCiAJCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpiYXRjaF9vYmosCkBAIC0x MTgzLDEyICsxMTg3LDEyIEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXJfcGFyc2Uoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqcmluZywKIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAlpbnQgcmV0OwogCi0J c2hhZG93X2JhdGNoX29iaiA9IGk5MTVfZ2VtX2JhdGNoX3Bvb2xfZ2V0KCZyaW5nLT5iYXRjaF9w b29sLAorCXNoYWRvd19iYXRjaF9vYmogPSBpOTE1X2dlbV9iYXRjaF9wb29sX2dldCgmZW5naW5l LT5iYXRjaF9wb29sLAogCQkJCQkJICAgUEFHRV9BTElHTihiYXRjaF9sZW4pKTsKIAlpZiAoSVNf RVJSKHNoYWRvd19iYXRjaF9vYmopKQogCQlyZXR1cm4gc2hhZG93X2JhdGNoX29iajsKIAotCXJl dCA9IGk5MTVfcGFyc2VfY21kcyhyaW5nLAorCXJldCA9IGk5MTVfcGFyc2VfY21kcyhlbmdpbmUs CiAJCQkgICAgICBiYXRjaF9vYmosCiAJCQkgICAgICBzaGFkb3dfYmF0Y2hfb2JqLAogCQkJICAg ICAgYmF0Y2hfc3RhcnRfb2Zmc2V0LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9y ZW5kZXJfc3RhdGUuYwppbmRleCBmYzdlNmQ1YzYyNTEuLmIyMWY3MmVjODk1YyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMKQEAgLTE2OSwxNSArMTY5 LDE1IEBAIHZvaWQgaTkxNV9nZW1fcmVuZGVyX3N0YXRlX2Zpbmkoc3RydWN0IHJlbmRlcl9zdGF0 ZSAqc28pCiAJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJnNvLT5vYmotPmJhc2UpOwogfQog Ci1pbnQgaTkxNV9nZW1fcmVuZGVyX3N0YXRlX3ByZXBhcmUoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZywKK2ludCBpOTE1X2dlbV9yZW5kZXJfc3RhdGVfcHJlcGFyZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsCiAJCQkJICBzdHJ1Y3QgcmVuZGVyX3N0YXRlICpzbykKIHsKIAlp bnQgcmV0OwogCi0JaWYgKFdBUk5fT04ocmluZy0+aWQgIT0gUkNTKSkKKwlpZiAoV0FSTl9PTihl bmdpbmUtPmlkICE9IFJDUykpCiAJCXJldHVybiAtRU5PRU5UOwogCi0JcmV0ID0gcmVuZGVyX3N0 YXRlX2luaXQoc28sIHJpbmctPmRldik7CisJcmV0ID0gcmVuZGVyX3N0YXRlX2luaXQoc28sIGVu Z2luZS0+ZGV2KTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5oCmluZGV4IGU2NDFiYjA5M2E5MC4uNmFhYTNh MTBhNjMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJf c3RhdGUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUu aApAQCAtNDMsNyArNDMsNyBAQCBzdHJ1Y3QgcmVuZGVyX3N0YXRlIHsKIAogaW50IGk5MTVfZ2Vt X3JlbmRlcl9zdGF0ZV9pbml0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKTsKIHZv aWQgaTkxNV9nZW1fcmVuZGVyX3N0YXRlX2Zpbmkoc3RydWN0IHJlbmRlcl9zdGF0ZSAqc28pOwot aW50IGk5MTVfZ2VtX3JlbmRlcl9zdGF0ZV9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcsCitpbnQgaTkxNV9nZW1fcmVuZGVyX3N0YXRlX3ByZXBhcmUoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAogCQkJCSAgc3RydWN0IHJlbmRlcl9zdGF0ZSAqc28pOwogCiAjZW5k aWYgLyogX0k5MTVfR0VNX1JFTkRFUl9TVEFURV9IXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3B1X2Vycm9yLmMKaW5kZXggZDk3Y2FkY2ZjY2IxLi4wMjllZDQwMzFlZGYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwpAQCAtODQyLDcgKzg0Miw3IEBAIHN0YXRpYyB2b2lk IGk5MTVfZ2VtX3JlY29yZF9mZW5jZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAogc3RhdGlj IHZvaWQgZ2VuOF9yZWNvcmRfc2VtYXBob3JlX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAkJCQkJc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlICplcnJvciwKLQkJ CQkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKKwkJCQkJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLAogCQkJCQlzdHJ1Y3QgZHJtX2k5MTVfZXJyb3JfcmluZyAqZXJpbmcpCiB7 CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqdG87CkBAIC04NjEsNjMgKzg2MSw2NCBAQCBzdGF0 aWMgdm9pZCBnZW44X3JlY29yZF9zZW1hcGhvcmVfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAogCQl1MTYgc2lnbmFsX29mZnNldDsKIAkJdTMyICp0bXA7CiAKLQkJaWYg KHJpbmcgPT0gdG8pCisJCWlmIChlbmdpbmUgPT0gdG8pCiAJCQljb250aW51ZTsKIAotCQlzaWdu YWxfb2Zmc2V0ID0gKEdFTjhfU0lHTkFMX09GRlNFVChyaW5nLCBpKSAmIChQQUdFX1NJWkUgLSAx KSkKKwkJc2lnbmFsX29mZnNldCA9IChHRU44X1NJR05BTF9PRkZTRVQoZW5naW5lLCBpKSAmIChQ QUdFX1NJWkUgLSAxKSkKIAkJCQkvIDQ7CiAJCXRtcCA9IGVycm9yLT5zZW1hcGhvcmVfb2JqLT5w YWdlc1swXTsKLQkJaWR4ID0gaW50ZWxfcmluZ19zeW5jX2luZGV4KHJpbmcsIHRvKTsKKwkJaWR4 ID0gaW50ZWxfcmluZ19zeW5jX2luZGV4KGVuZ2luZSwgdG8pOwogCiAJCWVyaW5nLT5zZW1hcGhv cmVfbWJveGVzW2lkeF0gPSB0bXBbc2lnbmFsX29mZnNldF07Ci0JCWVyaW5nLT5zZW1hcGhvcmVf c2Vxbm9baWR4XSA9IHJpbmctPnNlbWFwaG9yZS5zeW5jX3NlcW5vW2lkeF07CisJCWVyaW5nLT5z ZW1hcGhvcmVfc2Vxbm9baWR4XSA9IGVuZ2luZS0+c2VtYXBob3JlLnN5bmNfc2Vxbm9baWR4XTsK IAl9CiB9CiAKIHN0YXRpYyB2b2lkIGdlbjZfcmVjb3JkX3NlbWFwaG9yZV9zdGF0ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcsCisJCQkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCQkJc3RydWN0 IGRybV9pOTE1X2Vycm9yX3JpbmcgKmVyaW5nKQogewotCWVyaW5nLT5zZW1hcGhvcmVfbWJveGVz WzBdID0gSTkxNV9SRUFEKFJJTkdfU1lOQ18wKHJpbmctPm1taW9fYmFzZSkpOwotCWVyaW5nLT5z ZW1hcGhvcmVfbWJveGVzWzFdID0gSTkxNV9SRUFEKFJJTkdfU1lOQ18xKHJpbmctPm1taW9fYmFz ZSkpOwotCWVyaW5nLT5zZW1hcGhvcmVfc2Vxbm9bMF0gPSByaW5nLT5zZW1hcGhvcmUuc3luY19z ZXFub1swXTsKLQllcmluZy0+c2VtYXBob3JlX3NlcW5vWzFdID0gcmluZy0+c2VtYXBob3JlLnN5 bmNfc2Vxbm9bMV07CisJZXJpbmctPnNlbWFwaG9yZV9tYm94ZXNbMF0gPSBJOTE1X1JFQUQoUklO R19TWU5DXzAoZW5naW5lLT5tbWlvX2Jhc2UpKTsKKwllcmluZy0+c2VtYXBob3JlX21ib3hlc1sx XSA9IEk5MTVfUkVBRChSSU5HX1NZTkNfMShlbmdpbmUtPm1taW9fYmFzZSkpOworCWVyaW5nLT5z ZW1hcGhvcmVfc2Vxbm9bMF0gPSBlbmdpbmUtPnNlbWFwaG9yZS5zeW5jX3NlcW5vWzBdOworCWVy aW5nLT5zZW1hcGhvcmVfc2Vxbm9bMV0gPSBlbmdpbmUtPnNlbWFwaG9yZS5zeW5jX3NlcW5vWzFd OwogCiAJaWYgKEhBU19WRUJPWChkZXZfcHJpdi0+ZGV2KSkgewogCQllcmluZy0+c2VtYXBob3Jl X21ib3hlc1syXSA9Ci0JCQlJOTE1X1JFQUQoUklOR19TWU5DXzIocmluZy0+bW1pb19iYXNlKSk7 Ci0JCWVyaW5nLT5zZW1hcGhvcmVfc2Vxbm9bMl0gPSByaW5nLT5zZW1hcGhvcmUuc3luY19zZXFu b1syXTsKKwkJCUk5MTVfUkVBRChSSU5HX1NZTkNfMihlbmdpbmUtPm1taW9fYmFzZSkpOworCQll cmluZy0+c2VtYXBob3JlX3NlcW5vWzJdID0gZW5naW5lLT5zZW1hcGhvcmUuc3luY19zZXFub1sy XTsKIAl9CiB9CiAKIHN0YXRpYyB2b2lkIGk5MTVfcmVjb3JkX3Jpbmdfc3RhdGUoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIAkJCQkgICBzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGUgKmVycm9y LAotCQkJCSAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCisJCQkJICAgc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQkJCSAgIHN0cnVjdCBkcm1faTkxNV9lcnJvcl9yaW5n ICplcmluZykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwogCiAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpIHsKLQkJZXJpbmct PnJjX3BzbWkgPSBJOTE1X1JFQUQoUklOR19QU01JX0NUTChyaW5nLT5tbWlvX2Jhc2UpKTsKLQkJ ZXJpbmctPmZhdWx0X3JlZyA9IEk5MTVfUkVBRChSSU5HX0ZBVUxUX1JFRyhyaW5nKSk7CisJCWVy aW5nLT5yY19wc21pID0gSTkxNV9SRUFEKFJJTkdfUFNNSV9DVEwoZW5naW5lLT5tbWlvX2Jhc2Up KTsKKwkJZXJpbmctPmZhdWx0X3JlZyA9IEk5MTVfUkVBRChSSU5HX0ZBVUxUX1JFRyhlbmdpbmUp KTsKIAkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDgpCi0JCQlnZW44X3JlY29yZF9zZW1h cGhvcmVfc3RhdGUoZGV2X3ByaXYsIGVycm9yLCByaW5nLCBlcmluZyk7CisJCQlnZW44X3JlY29y ZF9zZW1hcGhvcmVfc3RhdGUoZGV2X3ByaXYsIGVycm9yLCBlbmdpbmUsCisJCQkJCQkgICAgZXJp bmcpOwogCQllbHNlCi0JCQlnZW42X3JlY29yZF9zZW1hcGhvcmVfc3RhdGUoZGV2X3ByaXYsIHJp bmcsIGVyaW5nKTsKKwkJCWdlbjZfcmVjb3JkX3NlbWFwaG9yZV9zdGF0ZShkZXZfcHJpdiwgZW5n aW5lLCBlcmluZyk7CiAJfQogCiAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsKLQkJ ZXJpbmctPmZhZGRyID0gSTkxNV9SRUFEKFJJTkdfRE1BX0ZBREQocmluZy0+bW1pb19iYXNlKSk7 Ci0JCWVyaW5nLT5pcGVpciA9IEk5MTVfUkVBRChSSU5HX0lQRUlSKHJpbmctPm1taW9fYmFzZSkp OwotCQllcmluZy0+aXBlaHIgPSBJOTE1X1JFQUQoUklOR19JUEVIUihyaW5nLT5tbWlvX2Jhc2Up KTsKLQkJZXJpbmctPmluc3Rkb25lID0gSTkxNV9SRUFEKFJJTkdfSU5TVERPTkUocmluZy0+bW1p b19iYXNlKSk7Ci0JCWVyaW5nLT5pbnN0cHMgPSBJOTE1X1JFQUQoUklOR19JTlNUUFMocmluZy0+ bW1pb19iYXNlKSk7Ci0JCWVyaW5nLT5iYmFkZHIgPSBJOTE1X1JFQUQoUklOR19CQkFERFIocmlu Zy0+bW1pb19iYXNlKSk7CisJCWVyaW5nLT5mYWRkciA9IEk5MTVfUkVBRChSSU5HX0RNQV9GQURE KGVuZ2luZS0+bW1pb19iYXNlKSk7CisJCWVyaW5nLT5pcGVpciA9IEk5MTVfUkVBRChSSU5HX0lQ RUlSKGVuZ2luZS0+bW1pb19iYXNlKSk7CisJCWVyaW5nLT5pcGVociA9IEk5MTVfUkVBRChSSU5H X0lQRUhSKGVuZ2luZS0+bW1pb19iYXNlKSk7CisJCWVyaW5nLT5pbnN0ZG9uZSA9IEk5MTVfUkVB RChSSU5HX0lOU1RET05FKGVuZ2luZS0+bW1pb19iYXNlKSk7CisJCWVyaW5nLT5pbnN0cHMgPSBJ OTE1X1JFQUQoUklOR19JTlNUUFMoZW5naW5lLT5tbWlvX2Jhc2UpKTsKKwkJZXJpbmctPmJiYWRk ciA9IEk5MTVfUkVBRChSSU5HX0JCQUREUihlbmdpbmUtPm1taW9fYmFzZSkpOwogCQlpZiAoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkgewotCQkJZXJpbmctPmZhZGRyIHw9ICh1NjQpIEk5MTVf UkVBRChSSU5HX0RNQV9GQUREX1VEVyhyaW5nLT5tbWlvX2Jhc2UpKSA8PCAzMjsKLQkJCWVyaW5n LT5iYmFkZHIgfD0gKHU2NCkgSTkxNV9SRUFEKFJJTkdfQkJBRERSX1VEVyhyaW5nLT5tbWlvX2Jh c2UpKSA8PCAzMjsKKwkJCWVyaW5nLT5mYWRkciB8PSAodTY0KSBJOTE1X1JFQUQoUklOR19ETUFf RkFERF9VRFcoZW5naW5lLT5tbWlvX2Jhc2UpKSA8PCAzMjsKKwkJCWVyaW5nLT5iYmFkZHIgfD0g KHU2NCkgSTkxNV9SRUFEKFJJTkdfQkJBRERSX1VEVyhlbmdpbmUtPm1taW9fYmFzZSkpIDw8IDMy OwogCQl9Ci0JCWVyaW5nLT5iYnN0YXRlID0gSTkxNV9SRUFEKFJJTkdfQkJTVEFURShyaW5nLT5t bWlvX2Jhc2UpKTsKKwkJZXJpbmctPmJic3RhdGUgPSBJOTE1X1JFQUQoUklOR19CQlNUQVRFKGVu Z2luZS0+bW1pb19iYXNlKSk7CiAJfSBlbHNlIHsKIAkJZXJpbmctPmZhZGRyID0gSTkxNV9SRUFE KERNQV9GQUREX0k4WFgpOwogCQllcmluZy0+aXBlaXIgPSBJOTE1X1JFQUQoSVBFSVIpOwpAQCAt OTI1LDIwICs5MjYsMjAgQEAgc3RhdGljIHZvaWQgaTkxNV9yZWNvcmRfcmluZ19zdGF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCQllcmluZy0+aW5zdGRvbmUgPSBJOTE1X1JFQUQoR0VOMl9J TlNURE9ORSk7CiAJfQogCi0JZXJpbmctPndhaXRpbmcgPSB3YWl0cXVldWVfYWN0aXZlKCZyaW5n LT5pcnFfcXVldWUpOwotCWVyaW5nLT5pbnN0cG0gPSBJOTE1X1JFQUQoUklOR19JTlNUUE0ocmlu Zy0+bW1pb19iYXNlKSk7Ci0JZXJpbmctPnNlcW5vID0gcmluZy0+Z2V0X3NlcW5vKHJpbmcsIGZh bHNlKTsKLQllcmluZy0+YWN0aGQgPSBpbnRlbF9yaW5nX2dldF9hY3RpdmVfaGVhZChyaW5nKTsK LQllcmluZy0+c3RhcnQgPSBJOTE1X1JFQURfU1RBUlQocmluZyk7Ci0JZXJpbmctPmhlYWQgPSBJ OTE1X1JFQURfSEVBRChyaW5nKTsKLQllcmluZy0+dGFpbCA9IEk5MTVfUkVBRF9UQUlMKHJpbmcp OwotCWVyaW5nLT5jdGwgPSBJOTE1X1JFQURfQ1RMKHJpbmcpOworCWVyaW5nLT53YWl0aW5nID0g d2FpdHF1ZXVlX2FjdGl2ZSgmZW5naW5lLT5pcnFfcXVldWUpOworCWVyaW5nLT5pbnN0cG0gPSBJ OTE1X1JFQUQoUklOR19JTlNUUE0oZW5naW5lLT5tbWlvX2Jhc2UpKTsKKwllcmluZy0+c2Vxbm8g PSBlbmdpbmUtPmdldF9zZXFubyhlbmdpbmUsIGZhbHNlKTsKKwllcmluZy0+YWN0aGQgPSBpbnRl bF9yaW5nX2dldF9hY3RpdmVfaGVhZChlbmdpbmUpOworCWVyaW5nLT5zdGFydCA9IEk5MTVfUkVB RF9TVEFSVChlbmdpbmUpOworCWVyaW5nLT5oZWFkID0gSTkxNV9SRUFEX0hFQUQoZW5naW5lKTsK KwllcmluZy0+dGFpbCA9IEk5MTVfUkVBRF9UQUlMKGVuZ2luZSk7CisJZXJpbmctPmN0bCA9IEk5 MTVfUkVBRF9DVEwoZW5naW5lKTsKIAogCWlmIChJOTE1X05FRURfR0ZYX0hXUyhkZXYpKSB7CiAJ CWk5MTVfcmVnX3QgbW1pbzsKIAogCQlpZiAoSVNfR0VONyhkZXYpKSB7Ci0JCQlzd2l0Y2ggKHJp bmctPmlkKSB7CisJCQlzd2l0Y2ggKGVuZ2luZS0+aWQpIHsKIAkJCWRlZmF1bHQ6CiAJCQljYXNl IFJDUzoKIAkJCQltbWlvID0gUkVOREVSX0hXU19QR0FfR0VONzsKQEAgLTk1Myw1MSArOTU0LDUx IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVjb3JkX3Jpbmdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKIAkJCQltbWlvID0gVkVCT1hfSFdTX1BHQV9HRU43OwogCQkJCWJyZWFrOwogCQkJfQot CQl9IGVsc2UgaWYgKElTX0dFTjYocmluZy0+ZGV2KSkgewotCQkJbW1pbyA9IFJJTkdfSFdTX1BH QV9HRU42KHJpbmctPm1taW9fYmFzZSk7CisJCX0gZWxzZSBpZiAoSVNfR0VONihlbmdpbmUtPmRl dikpIHsKKwkJCW1taW8gPSBSSU5HX0hXU19QR0FfR0VONihlbmdpbmUtPm1taW9fYmFzZSk7CiAJ CX0gZWxzZSB7CiAJCQkvKiBYWFg6IGdlbjggcmV0dXJucyB0byBzYW5pdHkgKi8KLQkJCW1taW8g PSBSSU5HX0hXU19QR0EocmluZy0+bW1pb19iYXNlKTsKKwkJCW1taW8gPSBSSU5HX0hXU19QR0Eo ZW5naW5lLT5tbWlvX2Jhc2UpOwogCQl9CiAKIAkJZXJpbmctPmh3cyA9IEk5MTVfUkVBRChtbWlv KTsKIAl9CiAKLQllcmluZy0+aGFuZ2NoZWNrX3Njb3JlID0gcmluZy0+aGFuZ2NoZWNrLnNjb3Jl OwotCWVyaW5nLT5oYW5nY2hlY2tfYWN0aW9uID0gcmluZy0+aGFuZ2NoZWNrLmFjdGlvbjsKKwll cmluZy0+aGFuZ2NoZWNrX3Njb3JlID0gZW5naW5lLT5oYW5nY2hlY2suc2NvcmU7CisJZXJpbmct PmhhbmdjaGVja19hY3Rpb24gPSBlbmdpbmUtPmhhbmdjaGVjay5hY3Rpb247CiAKIAlpZiAoVVNF U19QUEdUVChkZXYpKSB7CiAJCWludCBpOwogCi0JCWVyaW5nLT52bV9pbmZvLmdmeF9tb2RlID0g STkxNV9SRUFEKFJJTkdfTU9ERV9HRU43KHJpbmcpKTsKKwkJZXJpbmctPnZtX2luZm8uZ2Z4X21v ZGUgPSBJOTE1X1JFQUQoUklOR19NT0RFX0dFTjcoZW5naW5lKSk7CiAKIAkJaWYgKElTX0dFTjYo ZGV2KSkKIAkJCWVyaW5nLT52bV9pbmZvLnBwX2Rpcl9iYXNlID0KLQkJCQlJOTE1X1JFQUQoUklO R19QUF9ESVJfQkFTRV9SRUFEKHJpbmcpKTsKKwkJCQlJOTE1X1JFQUQoUklOR19QUF9ESVJfQkFT RV9SRUFEKGVuZ2luZSkpOwogCQllbHNlIGlmIChJU19HRU43KGRldikpCiAJCQllcmluZy0+dm1f aW5mby5wcF9kaXJfYmFzZSA9Ci0JCQkJSTkxNV9SRUFEKFJJTkdfUFBfRElSX0JBU0UocmluZykp OworCQkJCUk5MTVfUkVBRChSSU5HX1BQX0RJUl9CQVNFKGVuZ2luZSkpOwogCQllbHNlIGlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KQogCQkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewog CQkJCWVyaW5nLT52bV9pbmZvLnBkcFtpXSA9Ci0JCQkJCUk5MTVfUkVBRChHRU44X1JJTkdfUERQ X1VEVyhyaW5nLCBpKSk7CisJCQkJCUk5MTVfUkVBRChHRU44X1JJTkdfUERQX1VEVyhlbmdpbmUs IGkpKTsKIAkJCQllcmluZy0+dm1faW5mby5wZHBbaV0gPDw9IDMyOwogCQkJCWVyaW5nLT52bV9p bmZvLnBkcFtpXSB8PQotCQkJCQlJOTE1X1JFQUQoR0VOOF9SSU5HX1BEUF9MRFcocmluZywgaSkp OworCQkJCQlJOTE1X1JFQUQoR0VOOF9SSU5HX1BEUF9MRFcoZW5naW5lLCBpKSk7CiAJCQl9CiAJ fQogfQogCiAKLXN0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlY29yZF9hY3RpdmVfY29udGV4dChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAorc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVjb3JkX2Fj dGl2ZV9jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCQkJICAgc3Ry dWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlICplcnJvciwKIAkJCQkJICAgc3RydWN0IGRybV9pOTE1 X2Vycm9yX3JpbmcgKmVyaW5nKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZW5naW5lLT5kZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmo7CiAKIAkvKiBDdXJyZW50bHkgcmVuZGVyIHJpbmcgaXMgdGhlIG9ubHkgSFcg Y29udGV4dCB1c2VyICovCi0JaWYgKHJpbmctPmlkICE9IFJDUyB8fCAhZXJyb3ItPmNjaWQpCisJ aWYgKGVuZ2luZS0+aWQgIT0gUkNTIHx8ICFlcnJvci0+Y2NpZCkKIAkJcmV0dXJuOwogCiAJbGlz dF9mb3JfZWFjaF9lbnRyeShvYmosICZkZXZfcHJpdi0+bW0uYm91bmRfbGlzdCwgZ2xvYmFsX2xp c3QpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCmluZGV4IGYxNzJkZTBhNjFiZi4uNjQ2NTg5NjFh N2U1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKQEAgLTk5NCwxNCArOTk0LDE0IEBAIHN0YXRp YyB2b2lkIGlyb25sYWtlX3Jwc19jaGFuZ2VfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKIAlyZXR1cm47CiB9CiAKLXN0YXRpYyB2b2lkIG5vdGlmeV9yaW5nKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKnJpbmcpCitzdGF0aWMgdm9pZCBub3RpZnlfcmluZyhzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiB7Ci0JaWYgKCFpbnRlbF9yaW5nX2luaXRpYWxpemVkKHJpbmcp KQorCWlmICghaW50ZWxfcmluZ19pbml0aWFsaXplZChlbmdpbmUpKQogCQlyZXR1cm47CiAKLQl0 cmFjZV9pOTE1X2dlbV9yZXF1ZXN0X25vdGlmeShyaW5nKTsKKwl0cmFjZV9pOTE1X2dlbV9yZXF1 ZXN0X25vdGlmeShlbmdpbmUpOwogCi0Jd2FrZV91cF9hbGwoJnJpbmctPmlycV9xdWV1ZSk7CisJ d2FrZV91cF9hbGwoJmVuZ2luZS0+aXJxX3F1ZXVlKTsKIH0KIAogc3RhdGljIHZvaWQgdmx2X2Mw X3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LApAQCAtMTMxOSwxMiArMTMx OSwxMiBAQCBzdGF0aWMgdm9pZCBzbmJfZ3RfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKIH0KIAogc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkCi1nZW44X2NzX2lycV9oYW5k bGVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIHUzMiBpaXIsIGludCB0ZXN0X3NoaWZ0 KQorZ2VuOF9jc19pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUz MiBpaXIsIGludCB0ZXN0X3NoaWZ0KQogewogCWlmIChpaXIgJiAoR1RfUkVOREVSX1VTRVJfSU5U RVJSVVBUIDw8IHRlc3Rfc2hpZnQpKQotCQlub3RpZnlfcmluZyhyaW5nKTsKKwkJbm90aWZ5X3Jp bmcoZW5naW5lKTsKIAlpZiAoaWlyICYgKEdUX0NPTlRFWFRfU1dJVENIX0lOVEVSUlVQVCA8PCB0 ZXN0X3NoaWZ0KSkKLQkJaW50ZWxfbHJjX2lycV9oYW5kbGVyKHJpbmcpOworCQlpbnRlbF9scmNf aXJxX2hhbmRsZXIoZW5naW5lKTsKIH0KIAogc3RhdGljIGlycXJldHVybl90IGdlbjhfZ3RfaXJx X2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LApAQCAtMjgwNSwxMCAr MjgwNSwxMCBAQCBzdGF0aWMgdm9pZCBnZW44X2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKQogfQogCiBzdGF0aWMgYm9vbAotcmluZ19pZGxl KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIHUzMiBzZXFubykKK3JpbmdfaWRsZShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBzZXFubykKIHsKLQlyZXR1cm4gKGxpc3Rf ZW1wdHkoJnJpbmctPnJlcXVlc3RfbGlzdCkgfHwKLQkJaTkxNV9zZXFub19wYXNzZWQoc2Vxbm8s IHJpbmctPmxhc3Rfc3VibWl0dGVkX3NlcW5vKSk7CisJcmV0dXJuIChsaXN0X2VtcHR5KCZlbmdp bmUtPnJlcXVlc3RfbGlzdCkgfHwKKwkJaTkxNV9zZXFub19wYXNzZWQoc2Vxbm8sIGVuZ2luZS0+ bGFzdF9zdWJtaXR0ZWRfc2Vxbm8pKTsKIH0KIAogc3RhdGljIGJvb2wKQEAgLTI4MjQsNDIgKzI4 MjQsNDMgQEAgaXBlaHJfaXNfc2VtYXBob3JlX3dhaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dTMyIGlwZWhyKQogfQogCiBzdGF0aWMgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqCi1zZW1hcGhv cmVfd2FpdF90b19zaWduYWxsZXJfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCB1 MzIgaXBlaHIsIHU2NCBvZmZzZXQpCitzZW1hcGhvcmVfd2FpdF90b19zaWduYWxsZXJfcmluZyhz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBpcGVociwKKwkJCQkgdTY0IG9mZnNl dCkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByaW5nLT5kZXYtPmRl dl9wcml2YXRlOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+ ZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXI7CiAJ aW50IGk7CiAKIAlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdi0+ZGV2KS0+Z2VuID49IDgpIHsKIAkJ Zm9yX2VhY2hfcmluZyhzaWduYWxsZXIsIGRldl9wcml2LCBpKSB7Ci0JCQlpZiAocmluZyA9PSBz aWduYWxsZXIpCisJCQlpZiAoZW5naW5lID09IHNpZ25hbGxlcikKIAkJCQljb250aW51ZTsKIAot CQkJaWYgKG9mZnNldCA9PSBzaWduYWxsZXItPnNlbWFwaG9yZS5zaWduYWxfZ2d0dFtyaW5nLT5p ZF0pCisJCQlpZiAob2Zmc2V0ID09IHNpZ25hbGxlci0+c2VtYXBob3JlLnNpZ25hbF9nZ3R0W2Vu Z2luZS0+aWRdKQogCQkJCXJldHVybiBzaWduYWxsZXI7CiAJCX0KIAl9IGVsc2UgewogCQl1MzIg c3luY19iaXRzID0gaXBlaHIgJiBNSV9TRU1BUEhPUkVfU1lOQ19NQVNLOwogCiAJCWZvcl9lYWNo X3Jpbmcoc2lnbmFsbGVyLCBkZXZfcHJpdiwgaSkgewotCQkJaWYocmluZyA9PSBzaWduYWxsZXIp CisJCQlpZihlbmdpbmUgPT0gc2lnbmFsbGVyKQogCQkJCWNvbnRpbnVlOwogCi0JCQlpZiAoc3lu Y19iaXRzID09IHNpZ25hbGxlci0+c2VtYXBob3JlLm1ib3gud2FpdFtyaW5nLT5pZF0pCisJCQlp ZiAoc3luY19iaXRzID09IHNpZ25hbGxlci0+c2VtYXBob3JlLm1ib3gud2FpdFtlbmdpbmUtPmlk XSkKIAkJCQlyZXR1cm4gc2lnbmFsbGVyOwogCQl9CiAJfQogCiAJRFJNX0VSUk9SKCJObyBzaWdu YWxsZXIgcmluZyBmb3VuZCBmb3IgcmluZyAlaSwgaXBlaHIgMHglMDh4LCBvZmZzZXQgMHglMDE2 bGx4XG4iLAotCQkgIHJpbmctPmlkLCBpcGVociwgb2Zmc2V0KTsKKwkJICBlbmdpbmUtPmlkLCBp cGVociwgb2Zmc2V0KTsKIAogCXJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgc3RydWN0IGludGVs X2VuZ2luZV9jcyAqCi1zZW1hcGhvcmVfd2FpdHNfZm9yKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcsIHUzMiAqc2Vxbm8pCitzZW1hcGhvcmVfd2FpdHNfZm9yKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSwgdTMyICpzZXFubykKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSByaW5nLT5kZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKIAl1MzIgY21kLCBpcGVo ciwgaGVhZDsKIAl1NjQgb2Zmc2V0ID0gMDsKIAlpbnQgaSwgYmFja3dhcmRzOwpAQCAtMjg4MSwx MSArMjg4MiwxMSBAQCBzZW1hcGhvcmVfd2FpdHNfZm9yKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcsIHUzMiAqc2Vxbm8pCiAJICogVGhlcmVmb3JlLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90 IHN1cHBvcnQgZXhlY2xpc3QgbW9kZSBpbiBpdHMKIAkgKiBjdXJyZW50IGZvcm0uIEp1c3QgcmV0 dXJuIE5VTEwgYW5kIG1vdmUgb24uCiAJICovCi0JaWYgKHJpbmctPmJ1ZmZlciA9PSBOVUxMKQor CWlmIChlbmdpbmUtPmJ1ZmZlciA9PSBOVUxMKQogCQlyZXR1cm4gTlVMTDsKIAotCWlwZWhyID0g STkxNV9SRUFEKFJJTkdfSVBFSFIocmluZy0+bW1pb19iYXNlKSk7Ci0JaWYgKCFpcGVocl9pc19z ZW1hcGhvcmVfd2FpdChyaW5nLT5kZXYsIGlwZWhyKSkKKwlpcGVociA9IEk5MTVfUkVBRChSSU5H X0lQRUhSKGVuZ2luZS0+bW1pb19iYXNlKSk7CisJaWYgKCFpcGVocl9pc19zZW1hcGhvcmVfd2Fp dChlbmdpbmUtPmRldiwgaXBlaHIpKQogCQlyZXR1cm4gTlVMTDsKIAogCS8qCkBAIC0yODk2LDgg KzI4OTcsOCBAQCBzZW1hcGhvcmVfd2FpdHNfZm9yKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcsIHUzMiAqc2Vxbm8pCiAJICogcG9pbnQgYXQgYXQgYmF0Y2gsIGFuZCBzZW1hcGhvcmVzIGFy ZSBhbHdheXMgZW1pdHRlZCBpbnRvIHRoZQogCSAqIHJpbmdidWZmZXIgaXRzZWxmLgogCSAqLwot CWhlYWQgPSBJOTE1X1JFQURfSEVBRChyaW5nKSAmIEhFQURfQUREUjsKLQliYWNrd2FyZHMgPSAo SU5URUxfSU5GTyhyaW5nLT5kZXYpLT5nZW4gPj0gOCkgPyA1IDogNDsKKwloZWFkID0gSTkxNV9S RUFEX0hFQUQoZW5naW5lKSAmIEhFQURfQUREUjsKKwliYWNrd2FyZHMgPSAoSU5URUxfSU5GTyhl bmdpbmUtPmRldiktPmdlbiA+PSA4KSA/IDUgOiA0OwogCiAJZm9yIChpID0gYmFja3dhcmRzOyBp OyAtLWkpIHsKIAkJLyoKQEAgLTI5MDUsMTAgKzI5MDYsMTAgQEAgc2VtYXBob3JlX3dhaXRzX2Zv cihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCB1MzIgKnNlcW5vKQogCQkgKiBvdXIgcmlu ZyBpcyBzbWFsbGVyIHRoYW4gd2hhdCB0aGUgaGFyZHdhcmUgKGFuZCBoZW5jZQogCQkgKiBIRUFE X0FERFIpIGFsbG93cy4gQWxzbyBoYW5kbGVzIHdyYXAtYXJvdW5kLgogCQkgKi8KLQkJaGVhZCAm PSByaW5nLT5idWZmZXItPnNpemUgLSAxOworCQloZWFkICY9IGVuZ2luZS0+YnVmZmVyLT5zaXpl IC0gMTsKIAogCQkvKiBUaGlzIGhlcmUgc2VlbXMgdG8gYmxvdyB1cCAqLwotCQljbWQgPSBpb3Jl YWQzMihyaW5nLT5idWZmZXItPnZpcnR1YWxfc3RhcnQgKyBoZWFkKTsKKwkJY21kID0gaW9yZWFk MzIoZW5naW5lLT5idWZmZXItPnZpcnR1YWxfc3RhcnQgKyBoZWFkKTsKIAkJaWYgKGNtZCA9PSBp cGVocikKIAkJCWJyZWFrOwogCkBAIC0yOTE4LDI0ICsyOTE5LDI0IEBAIHNlbWFwaG9yZV93YWl0 c19mb3Ioc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgdTMyICpzZXFubykKIAlpZiAoIWkp CiAJCXJldHVybiBOVUxMOwogCi0JKnNlcW5vID0gaW9yZWFkMzIocmluZy0+YnVmZmVyLT52aXJ0 dWFsX3N0YXJ0ICsgaGVhZCArIDQpICsgMTsKLQlpZiAoSU5URUxfSU5GTyhyaW5nLT5kZXYpLT5n ZW4gPj0gOCkgewotCQlvZmZzZXQgPSBpb3JlYWQzMihyaW5nLT5idWZmZXItPnZpcnR1YWxfc3Rh cnQgKyBoZWFkICsgMTIpOworCSpzZXFubyA9IGlvcmVhZDMyKGVuZ2luZS0+YnVmZmVyLT52aXJ0 dWFsX3N0YXJ0ICsgaGVhZCArIDQpICsgMTsKKwlpZiAoSU5URUxfSU5GTyhlbmdpbmUtPmRldikt PmdlbiA+PSA4KSB7CisJCW9mZnNldCA9IGlvcmVhZDMyKGVuZ2luZS0+YnVmZmVyLT52aXJ0dWFs X3N0YXJ0ICsgaGVhZCArIDEyKTsKIAkJb2Zmc2V0IDw8PSAzMjsKLQkJb2Zmc2V0ID0gaW9yZWFk MzIocmluZy0+YnVmZmVyLT52aXJ0dWFsX3N0YXJ0ICsgaGVhZCArIDgpOworCQlvZmZzZXQgPSBp b3JlYWQzMihlbmdpbmUtPmJ1ZmZlci0+dmlydHVhbF9zdGFydCArIGhlYWQgKyA4KTsKIAl9Ci0J cmV0dXJuIHNlbWFwaG9yZV93YWl0X3RvX3NpZ25hbGxlcl9yaW5nKHJpbmcsIGlwZWhyLCBvZmZz ZXQpOworCXJldHVybiBzZW1hcGhvcmVfd2FpdF90b19zaWduYWxsZXJfcmluZyhlbmdpbmUsIGlw ZWhyLCBvZmZzZXQpOwogfQogCi1zdGF0aWMgaW50IHNlbWFwaG9yZV9wYXNzZWQoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZykKK3N0YXRpYyBpbnQgc2VtYXBob3JlX3Bhc3NlZChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gcmluZy0+ZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqc2lnbmFsbGVyOwogCXUzMiBzZXFubzsKIAotCXJpbmctPmhhbmdjaGVjay5kZWFk bG9jaysrOworCWVuZ2luZS0+aGFuZ2NoZWNrLmRlYWRsb2NrKys7CiAKLQlzaWduYWxsZXIgPSBz ZW1hcGhvcmVfd2FpdHNfZm9yKHJpbmcsICZzZXFubyk7CisJc2lnbmFsbGVyID0gc2VtYXBob3Jl X3dhaXRzX2ZvcihlbmdpbmUsICZzZXFubyk7CiAJaWYgKHNpZ25hbGxlciA9PSBOVUxMKQogCQly ZXR1cm4gLTE7CiAKQEAgLTI5NjMsMTYgKzI5NjQsMTYgQEAgc3RhdGljIHZvaWQgc2VtYXBob3Jl X2NsZWFyX2RlYWRsb2NrcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWVu Z2luZS0+aGFuZ2NoZWNrLmRlYWRsb2NrID0gMDsKIH0KIAotc3RhdGljIGJvb2wgc3VidW5pdHNf c3R1Y2soc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKK3N0YXRpYyBib29sIHN1YnVuaXRz X3N0dWNrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAl1MzIgaW5zdGRvbmVb STkxNV9OVU1fSU5TVERPTkVfUkVHXTsKIAlib29sIHN0dWNrOwogCWludCBpOwogCi0JaWYgKHJp bmctPmlkICE9IFJDUykKKwlpZiAoZW5naW5lLT5pZCAhPSBSQ1MpCiAJCXJldHVybiB0cnVlOwog Ci0JaTkxNV9nZXRfZXh0cmFfaW5zdGRvbmUocmluZy0+ZGV2LCBpbnN0ZG9uZSk7CisJaTkxNV9n ZXRfZXh0cmFfaW5zdGRvbmUoZW5naW5lLT5kZXYsIGluc3Rkb25lKTsKIAogCS8qIFRoZXJlIG1p Z2h0IGJlIHVuc3RhYmxlIHN1YnVuaXQgc3RhdGVzIGV2ZW4gd2hlbgogCSAqIGFjdHVhbCBoZWFk IGlzIG5vdCBtb3ZpbmcuIEZpbHRlciBvdXQgdGhlIHVuc3RhYmxlIG9uZXMgYnkKQEAgLTI5ODEs NDQgKzI5ODIsNDQgQEAgc3RhdGljIGJvb2wgc3VidW5pdHNfc3R1Y2soc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZykKIAkgKi8KIAlzdHVjayA9IHRydWU7CiAJZm9yIChpID0gMDsgaSA8IEk5 MTVfTlVNX0lOU1RET05FX1JFRzsgaSsrKSB7Ci0JCWNvbnN0IHUzMiB0bXAgPSBpbnN0ZG9uZVtp XSB8IHJpbmctPmhhbmdjaGVjay5pbnN0ZG9uZVtpXTsKKwkJY29uc3QgdTMyIHRtcCA9IGluc3Rk b25lW2ldIHwgZW5naW5lLT5oYW5nY2hlY2suaW5zdGRvbmVbaV07CiAKLQkJaWYgKHRtcCAhPSBy aW5nLT5oYW5nY2hlY2suaW5zdGRvbmVbaV0pCisJCWlmICh0bXAgIT0gZW5naW5lLT5oYW5nY2hl Y2suaW5zdGRvbmVbaV0pCiAJCQlzdHVjayA9IGZhbHNlOwogCi0JCXJpbmctPmhhbmdjaGVjay5p bnN0ZG9uZVtpXSB8PSB0bXA7CisJCWVuZ2luZS0+aGFuZ2NoZWNrLmluc3Rkb25lW2ldIHw9IHRt cDsKIAl9CiAKIAlyZXR1cm4gc3R1Y2s7CiB9CiAKIHN0YXRpYyBlbnVtIGludGVsX3JpbmdfaGFu Z2NoZWNrX2FjdGlvbgotaGVhZF9zdHVjayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCB1 NjQgYWN0aGQpCitoZWFkX3N0dWNrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTY0 IGFjdGhkKQogewotCWlmIChhY3RoZCAhPSByaW5nLT5oYW5nY2hlY2suYWN0aGQpIHsKKwlpZiAo YWN0aGQgIT0gZW5naW5lLT5oYW5nY2hlY2suYWN0aGQpIHsKIAogCQkvKiBDbGVhciBzdWJ1bml0 IHN0YXRlcyBvbiBoZWFkIG1vdmVtZW50ICovCi0JCW1lbXNldChyaW5nLT5oYW5nY2hlY2suaW5z dGRvbmUsIDAsCi0JCSAgICAgICBzaXplb2YocmluZy0+aGFuZ2NoZWNrLmluc3Rkb25lKSk7CisJ CW1lbXNldChlbmdpbmUtPmhhbmdjaGVjay5pbnN0ZG9uZSwgMCwKKwkJICAgICAgIHNpemVvZihl bmdpbmUtPmhhbmdjaGVjay5pbnN0ZG9uZSkpOwogCiAJCXJldHVybiBIQU5HQ0hFQ0tfQUNUSVZF OwogCX0KIAotCWlmICghc3VidW5pdHNfc3R1Y2socmluZykpCisJaWYgKCFzdWJ1bml0c19zdHVj ayhlbmdpbmUpKQogCQlyZXR1cm4gSEFOR0NIRUNLX0FDVElWRTsKIAogCXJldHVybiBIQU5HQ0hF Q0tfSFVORzsKIH0KIAogc3RhdGljIGVudW0gaW50ZWxfcmluZ19oYW5nY2hlY2tfYWN0aW9uCi1y aW5nX3N0dWNrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIHU2NCBhY3RoZCkKK3Jpbmdf c3R1Y2soc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1NjQgYWN0aGQpCiB7Ci0Jc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IHJpbmctPmRldjsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gZW5naW5lLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKIAllbnVtIGludGVsX3JpbmdfaGFuZ2NoZWNrX2FjdGlvbiBoYTsKIAl1 MzIgdG1wOwogCi0JaGEgPSBoZWFkX3N0dWNrKHJpbmcsIGFjdGhkKTsKKwloYSA9IGhlYWRfc3R1 Y2soZW5naW5lLCBhY3RoZCk7CiAJaWYgKGhhICE9IEhBTkdDSEVDS19IVU5HKQogCQlyZXR1cm4g aGE7CiAKQEAgLTMwMzAsMjQgKzMwMzEsMjQgQEAgcmluZ19zdHVjayhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nLCB1NjQgYWN0aGQpCiAJICogYW5kIGJyZWFrIHRoZSBoYW5nLiBUaGlzIHNo b3VsZCB3b3JrIG9uCiAJICogYWxsIGJ1dCB0aGUgc2Vjb25kIGdlbmVyYXRpb24gY2hpcHNldHMu CiAJICovCi0JdG1wID0gSTkxNV9SRUFEX0NUTChyaW5nKTsKKwl0bXAgPSBJOTE1X1JFQURfQ1RM KGVuZ2luZSk7CiAJaWYgKHRtcCAmIFJJTkdfV0FJVCkgewogCQlpOTE1X2hhbmRsZV9lcnJvcihk ZXYsIGZhbHNlLAogCQkJCSAgIktpY2tpbmcgc3R1Y2sgd2FpdCBvbiAlcyIsCi0JCQkJICByaW5n LT5uYW1lKTsKLQkJSTkxNV9XUklURV9DVEwocmluZywgdG1wKTsKKwkJCQkgIGVuZ2luZS0+bmFt ZSk7CisJCUk5MTVfV1JJVEVfQ1RMKGVuZ2luZSwgdG1wKTsKIAkJcmV0dXJuIEhBTkdDSEVDS19L SUNLOwogCX0KIAogCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2ICYmIHRtcCAmIFJJTkdf V0FJVF9TRU1BUEhPUkUpIHsKLQkJc3dpdGNoIChzZW1hcGhvcmVfcGFzc2VkKHJpbmcpKSB7CisJ CXN3aXRjaCAoc2VtYXBob3JlX3Bhc3NlZChlbmdpbmUpKSB7CiAJCWRlZmF1bHQ6CiAJCQlyZXR1 cm4gSEFOR0NIRUNLX0hVTkc7CiAJCWNhc2UgMToKIAkJCWk5MTVfaGFuZGxlX2Vycm9yKGRldiwg ZmFsc2UsCiAJCQkJCSAgIktpY2tpbmcgc3R1Y2sgc2VtYXBob3JlIG9uICVzIiwKLQkJCQkJICBy aW5nLT5uYW1lKTsKLQkJCUk5MTVfV1JJVEVfQ1RMKHJpbmcsIHRtcCk7CisJCQkJCSAgZW5naW5l LT5uYW1lKTsKKwkJCUk5MTVfV1JJVEVfQ1RMKGVuZ2luZSwgdG1wKTsKIAkJCXJldHVybiBIQU5H Q0hFQ0tfS0lDSzsKIAkJY2FzZSAwOgogCQkJcmV0dXJuIEhBTkdDSEVDS19XQUlUOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IGQ3Zjg2NzRiYzg3YS4uNDA2MmMxZjQ2Yzdk IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC0xMTIwNiw3ICsxMTIwNiw3 IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuN19xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBib29sIHVzZV9tbWlvX2ZsaXAoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZywKK3N0YXRpYyBib29sIHVzZV9tbWlvX2ZsaXAoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKQogewogCS8qCkBAIC0xMTIxNywxMCArMTEyMTcsMTAgQEAgc3RhdGljIGJvb2wgdXNlX21t aW9fZmxpcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogCSAqIFNvIHVzaW5nIE1NSU8g ZmxpcHMgdGhlcmUgd291bGQgZGlzcnVwdCB0aGlzIG1lY2hhbmlzbS4KIAkgKi8KIAotCWlmIChy aW5nID09IE5VTEwpCisJaWYgKGVuZ2luZSA9PSBOVUxMKQogCQlyZXR1cm4gdHJ1ZTsKIAotCWlm IChJTlRFTF9JTkZPKHJpbmctPmRldiktPmdlbiA8IDUpCisJaWYgKElOVEVMX0lORk8oZW5naW5l LT5kZXYpLT5nZW4gPCA1KQogCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAoaTkxNS51c2VfbW1pb19m bGlwIDwgMCkKQEAgLTExMjM0LDcgKzExMjM0LDcgQEAgc3RhdGljIGJvb2wgdXNlX21taW9fZmxp cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogCQkJCQkJICAgICAgIGZhbHNlKSkKIAkJ cmV0dXJuIHRydWU7CiAJZWxzZQotCQlyZXR1cm4gcmluZyAhPSBpOTE1X2dlbV9yZXF1ZXN0X2dl dF9yaW5nKG9iai0+bGFzdF93cml0ZV9yZXEpOworCQlyZXR1cm4gZW5naW5lICE9IGk5MTVfZ2Vt X3JlcXVlc3RfZ2V0X3Jpbmcob2JqLT5sYXN0X3dyaXRlX3JlcSk7CiB9CiAKIHN0YXRpYyB2b2lk IHNrbF9kb19tbWlvX2ZsaXAoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jCmluZGV4IDQ0OGM2OGU2OTE5NC4uMjU1MTRlOTE0NzlhIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtMjI4LDggKzIyOCw4IEBAIGVudW0gewogCiBzdGF0aWMg aW50IGludGVsX2xyX2NvbnRleHRfcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCiAJCQkJ c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKLXN0YXRpYyB2b2lkIGxyY19zZXR1cF9o YXJkd2FyZV9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAotCQlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqZGVmYXVsdF9jdHhfb2JqKTsKK3N0YXRpYyB2b2lkIGxy Y19zZXR1cF9oYXJkd2FyZV9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsCisJCQkJCSAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpkZWZhdWx0X2N0eF9vYmop OwogCiAKIC8qKgpAQCAtMjY2LDIzICsyNjYsMjMgQEAgaW50IGludGVsX3Nhbml0aXplX2VuYWJs ZV9leGVjbGlzdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGVuYWJsZV9leGVjbGlzdHMK IH0KIAogc3RhdGljIHZvaWQKLWxvZ2ljYWxfcmluZ19pbml0X3BsYXRmb3JtX2ludmFyaWFudHMo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKK2xvZ2ljYWxfcmluZ19pbml0X3BsYXRmb3Jt X2ludmFyaWFudHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVu Z2luZS0+ZGV2OwogCiAJaWYgKElTX0dFTjgoZGV2KSB8fCBJU19HRU45KGRldikpCi0JCXJpbmct PmlkbGVfbGl0ZV9yZXN0b3JlX3dhID0gfjA7CisJCWVuZ2luZS0+aWRsZV9saXRlX3Jlc3RvcmVf d2EgPSB+MDsKIAotCXJpbmctPmRpc2FibGVfbGl0ZV9yZXN0b3JlX3dhID0gKElTX1NLTF9SRVZJ RChkZXYsIDAsIFNLTF9SRVZJRF9CMCkgfHwKKwllbmdpbmUtPmRpc2FibGVfbGl0ZV9yZXN0b3Jl X3dhID0gKElTX1NLTF9SRVZJRChkZXYsIDAsIFNLTF9SRVZJRF9CMCkgfHwKIAkJCQkJSVNfQlhU X1JFVklEKGRldiwgMCwgQlhUX1JFVklEX0ExKSkgJiYKLQkJCQkJKHJpbmctPmlkID09IFZDUyB8 fCByaW5nLT5pZCA9PSBWQ1MyKTsKKwkJCQkJKGVuZ2luZS0+aWQgPT0gVkNTIHx8IGVuZ2luZS0+ aWQgPT0gVkNTMik7CiAKLQlyaW5nLT5jdHhfZGVzY190ZW1wbGF0ZSA9IEdFTjhfQ1RYX1ZBTElE OwotCXJpbmctPmN0eF9kZXNjX3RlbXBsYXRlIHw9IEdFTjhfQ1RYX0FERFJFU1NJTkdfTU9ERShk ZXYpIDw8CisJZW5naW5lLT5jdHhfZGVzY190ZW1wbGF0ZSA9IEdFTjhfQ1RYX1ZBTElEOworCWVu Z2luZS0+Y3R4X2Rlc2NfdGVtcGxhdGUgfD0gR0VOOF9DVFhfQUREUkVTU0lOR19NT0RFKGRldikg PDwKIAkJCQkgICBHRU44X0NUWF9BRERSRVNTSU5HX01PREVfU0hJRlQ7CiAJaWYgKElTX0dFTjgo ZGV2KSkKLQkJcmluZy0+Y3R4X2Rlc2NfdGVtcGxhdGUgfD0gR0VOOF9DVFhfTDNMTENfQ09IRVJF TlQ7Ci0JcmluZy0+Y3R4X2Rlc2NfdGVtcGxhdGUgfD0gR0VOOF9DVFhfUFJJVklMRUdFOworCQll bmdpbmUtPmN0eF9kZXNjX3RlbXBsYXRlIHw9IEdFTjhfQ1RYX0wzTExDX0NPSEVSRU5UOworCWVu Z2luZS0+Y3R4X2Rlc2NfdGVtcGxhdGUgfD0gR0VOOF9DVFhfUFJJVklMRUdFOwogCiAJLyogVE9E TzogV2FEaXNhYmxlTGl0ZVJlc3RvcmUgd2hlbiB3ZSBzdGFydCB1c2luZyBzZW1hcGhvcmUKIAkg KiBzaWduYWxsaW5nIGJldHdlZW4gQ29tbWFuZCBTdHJlYW1lcnMgKi8KQEAgLTI5MCw4ICsyOTAs OCBAQCBsb2dpY2FsX3JpbmdfaW5pdF9wbGF0Zm9ybV9pbnZhcmlhbnRzKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKnJpbmcpCiAKIAkvKiBXYUVuYWJsZUZvcmNlUmVzdG9yZUluQ3R4dERlc2NGb3JW Q1M6c2tsICovCiAJLyogV2FFbmFibGVGb3JjZVJlc3RvcmVJbkN0eHREZXNjRm9yVkNTOmJ4dCAq LwotCWlmIChyaW5nLT5kaXNhYmxlX2xpdGVfcmVzdG9yZV93YSkKLQkJcmluZy0+Y3R4X2Rlc2Nf dGVtcGxhdGUgfD0gR0VOOF9DVFhfRk9SQ0VfUkVTVE9SRTsKKwlpZiAoZW5naW5lLT5kaXNhYmxl X2xpdGVfcmVzdG9yZV93YSkKKwkJZW5naW5lLT5jdHhfZGVzY190ZW1wbGF0ZSB8PSBHRU44X0NU WF9GT1JDRV9SRVNUT1JFOwogfQogCiAvKioKQEAgLTMxNCwyNCArMzE0LDI0IEBAIGxvZ2ljYWxf cmluZ19pbml0X3BsYXRmb3JtX2ludmFyaWFudHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZykKICAqLwogc3RhdGljIHZvaWQKIGludGVsX2xyX2NvbnRleHRfZGVzY3JpcHRvcl91cGRhdGUo c3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKLQkJCQkgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nKQorCQkJCSAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAl1aW50 NjRfdCBscmNhLCBkZXNjOwogCi0JbHJjYSA9IGN0eC0+ZW5naW5lW3JpbmctPmlkXS5scmNfdm1h LT5ub2RlLnN0YXJ0ICsKKwlscmNhID0gY3R4LT5lbmdpbmVbZW5naW5lLT5pZF0ubHJjX3ZtYS0+ bm9kZS5zdGFydCArCiAJICAgICAgIExSQ19QUEhXU1BfUE4gKiBQQUdFX1NJWkU7CiAKLQlkZXNj ID0gcmluZy0+Y3R4X2Rlc2NfdGVtcGxhdGU7CQkJICAgLyogYml0cyAgMC0xMSAqLworCWRlc2Mg PSBlbmdpbmUtPmN0eF9kZXNjX3RlbXBsYXRlOwkJCSAgIC8qIGJpdHMgIDAtMTEgKi8KIAlkZXNj IHw9IGxyY2E7CQkJCQkgICAvKiBiaXRzIDEyLTMxICovCiAJZGVzYyB8PSAobHJjYSA+PiBQQUdF X1NISUZUKSA8PCBHRU44X0NUWF9JRF9TSElGVDsgLyogYml0cyAzMi01MSAqLwogCi0JY3R4LT5l bmdpbmVbcmluZy0+aWRdLmxyY19kZXNjID0gZGVzYzsKKwljdHgtPmVuZ2luZVtlbmdpbmUtPmlk XS5scmNfZGVzYyA9IGRlc2M7CiB9CiAKIHVpbnQ2NF90IGludGVsX2xyX2NvbnRleHRfZGVzY3Jp cHRvcihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAotCQkJCSAgICAgc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZykKKwkJCQkgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK IHsKLQlyZXR1cm4gY3R4LT5lbmdpbmVbcmluZy0+aWRdLmxyY19kZXNjOworCXJldHVybiBjdHgt PmVuZ2luZVtlbmdpbmUtPmlkXS5scmNfZGVzYzsKIH0KIAogLyoqCkBAIC0zNTEsOSArMzUxLDkg QEAgdWludDY0X3QgaW50ZWxfbHJfY29udGV4dF9kZXNjcmlwdG9yKHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjdHgsCiAgKiBSZXR1cm46IDIwLWJpdHMgZ2xvYmFsbHkgdW5pcXVlIGNvbnRleHQgSUQu CiAgKi8KIHUzMiBpbnRlbF9leGVjbGlzdHNfY3R4X2lkKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj dHgsCi0JCQkgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQorCQkJICAgc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXJldHVybiBpbnRlbF9scl9jb250ZXh0X2Rlc2Ny aXB0b3IoY3R4LCByaW5nKSA+PiBHRU44X0NUWF9JRF9TSElGVDsKKwlyZXR1cm4gaW50ZWxfbHJf Y29udGV4dF9kZXNjcmlwdG9yKGN0eCwgZW5naW5lKSA+PiBHRU44X0NUWF9JRF9TSElGVDsKIH0K IAogc3RhdGljIHZvaWQgZXhlY2xpc3RzX2Vsc3Bfd3JpdGUoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpycTAsCkBAIC00MjQsMjEgKzQyNCwyMSBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNf c3VibWl0X3JlcXVlc3RzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEwLAogCWV4ZWNs aXN0c19lbHNwX3dyaXRlKHJxMCwgcnExKTsKIH0KIAotc3RhdGljIHZvaWQgZXhlY2xpc3RzX2Nv bnRleHRfdW5xdWV1ZV9fbG9ja2VkKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCitzdGF0 aWMgdm9pZCBleGVjbGlzdHNfY29udGV4dF91bnF1ZXVlX19sb2NrZWQoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxMCA9 IE5VTEwsICpyZXExID0gTlVMTDsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKmN1cnNv ciwgKnRtcDsKIAotCWFzc2VydF9zcGluX2xvY2tlZCgmcmluZy0+ZXhlY2xpc3RfbG9jayk7CisJ YXNzZXJ0X3NwaW5fbG9ja2VkKCZlbmdpbmUtPmV4ZWNsaXN0X2xvY2spOwogCiAJLyoKIAkgKiBJ ZiBpcnFzIGFyZSBub3QgYWN0aXZlIGdlbmVyYXRlIGEgd2FybmluZyBhcyBiYXRjaGVzIHRoYXQg ZmluaXNoCiAJICogd2l0aG91dCB0aGUgaXJxcyBtYXkgZ2V0IGxvc3QgYW5kIGEgR1BVIEhhbmcg bWF5IG9jY3VyLgogCSAqLwotCVdBUk5fT04oIWludGVsX2lycXNfZW5hYmxlZChyaW5nLT5kZXYt PmRldl9wcml2YXRlKSk7CisJV0FSTl9PTighaW50ZWxfaXJxc19lbmFibGVkKGVuZ2luZS0+ZGV2 LT5kZXZfcHJpdmF0ZSkpOwogCiAJLyogVHJ5IHRvIHJlYWQgaW4gcGFpcnMgKi8KLQlsaXN0X2Zv cl9lYWNoX2VudHJ5X3NhZmUoY3Vyc29yLCB0bXAsICZyaW5nLT5leGVjbGlzdF9xdWV1ZSwKKwls aXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3Vyc29yLCB0bXAsICZlbmdpbmUtPmV4ZWNsaXN0X3F1 ZXVlLAogCQkJCSBleGVjbGlzdF9saW5rKSB7CiAJCWlmICghcmVxMCkgewogCQkJcmVxMCA9IGN1 cnNvcjsKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfY29udGV4dF91 bnF1ZXVlX19sb2NrZWQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKIAkJCSAqIHdpbGwg dXBkYXRlIHRhaWwgcGFzdCBmaXJzdCByZXF1ZXN0J3Mgd29ya2xvYWQgKi8KIAkJCWN1cnNvci0+ ZWxzcF9zdWJtaXR0ZWQgPSByZXEwLT5lbHNwX3N1Ym1pdHRlZDsKIAkJCWxpc3RfbW92ZV90YWls KCZyZXEwLT5leGVjbGlzdF9saW5rLAotCQkJCSAgICAgICAmcmluZy0+ZXhlY2xpc3RfcmV0aXJl ZF9yZXFfbGlzdCk7CisJCQkJICAgICAgICZlbmdpbmUtPmV4ZWNsaXN0X3JldGlyZWRfcmVxX2xp c3QpOwogCQkJcmVxMCA9IGN1cnNvcjsKIAkJfSBlbHNlIHsKIAkJCXJlcTEgPSBjdXJzb3I7CkBA IC00NTksNyArNDU5LDcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2NvbnRleHRfdW5xdWV1ZV9f bG9ja2VkKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiAJaWYgKHVubGlrZWx5KCFyZXEw KSkKIAkJcmV0dXJuOwogCi0JaWYgKHJlcTAtPmVsc3Bfc3VibWl0dGVkICYgcmluZy0+aWRsZV9s aXRlX3Jlc3RvcmVfd2EpIHsKKwlpZiAocmVxMC0+ZWxzcF9zdWJtaXR0ZWQgJiBlbmdpbmUtPmlk bGVfbGl0ZV9yZXN0b3JlX3dhKSB7CiAJCS8qCiAJCSAqIFdhSWRsZUxpdGVSZXN0b3JlOiBtYWtl IHN1cmUgd2UgbmV2ZXIgY2F1c2UgYSBsaXRlIHJlc3RvcmUKIAkJICogd2l0aCBIRUFEPT1UQUlM LgpAQCAtNDcwLDcgKzQ3MCw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19jb250ZXh0X3VucXVl dWVfX2xvY2tlZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogCQkgKi8KIAkJc3RydWN0 IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWY7CiAKLQkJcmluZ2J1ZiA9IHJlcTAtPmN0eC0+ZW5n aW5lW3JpbmctPmlkXS5yaW5nYnVmOworCQlyaW5nYnVmID0gcmVxMC0+Y3R4LT5lbmdpbmVbZW5n aW5lLT5pZF0ucmluZ2J1ZjsKIAkJcmVxMC0+dGFpbCArPSA4OwogCQlyZXEwLT50YWlsICY9IHJp bmdidWYtPnNpemUgLSAxOwogCX0KQEAgLTQ3OCwzNCArNDc4LDM0IEBAIHN0YXRpYyB2b2lkIGV4 ZWNsaXN0c19jb250ZXh0X3VucXVldWVfX2xvY2tlZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpy aW5nKQogCWV4ZWNsaXN0c19zdWJtaXRfcmVxdWVzdHMocmVxMCwgcmVxMSk7CiB9CiAKLXN0YXRp YyB2b2lkIGV4ZWNsaXN0c19jb250ZXh0X3VucXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq cmluZykKK3N0YXRpYyB2b2lkIGV4ZWNsaXN0c19jb250ZXh0X3VucXVldWUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZW5naW5lLT5kZXYtPmRldl9wcml2YXRlOwogCiAJc3Bpbl9sb2NrKCZkZXZfcHJp di0+dW5jb3JlLmxvY2spOwogCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0X19sb2NrZWQoZGV2 X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwogCi0JZXhlY2xpc3RzX2NvbnRleHRfdW5xdWV1ZV9fbG9j a2VkKHJpbmcpOworCWV4ZWNsaXN0c19jb250ZXh0X3VucXVldWVfX2xvY2tlZChlbmdpbmUpOwog CiAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXRfX2xvY2tlZChkZXZfcHJpdiwgRk9SQ0VXQUtF X0FMTCk7CiAJc3Bpbl91bmxvY2soJmRldl9wcml2LT51bmNvcmUubG9jayk7CiB9CiAKIHN0YXRp YyB1bnNpZ25lZCBpbnQKLWV4ZWNsaXN0c19jaGVja19yZW1vdmVfcmVxdWVzdChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nLCB1MzIgcmVxdWVzdF9pZCkKK2V4ZWNsaXN0c19jaGVja19yZW1v dmVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiByZXF1ZXN0X2lk KQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqaGVhZF9yZXE7CiAKLQlhc3NlcnRf c3Bpbl9sb2NrZWQoJnJpbmctPmV4ZWNsaXN0X2xvY2spOworCWFzc2VydF9zcGluX2xvY2tlZCgm ZW5naW5lLT5leGVjbGlzdF9sb2NrKTsKIAotCWhlYWRfcmVxID0gbGlzdF9maXJzdF9lbnRyeV9v cl9udWxsKCZyaW5nLT5leGVjbGlzdF9xdWV1ZSwKKwloZWFkX3JlcSA9IGxpc3RfZmlyc3RfZW50 cnlfb3JfbnVsbCgmZW5naW5lLT5leGVjbGlzdF9xdWV1ZSwKIAkJCQkJICAgIHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCwKIAkJCQkJICAgIGV4ZWNsaXN0X2xpbmspOwogCiAJaWYgKCFoZWFk X3JlcSkKIAkJcmV0dXJuIDA7CiAKLQlpZiAodW5saWtlbHkoaW50ZWxfZXhlY2xpc3RzX2N0eF9p ZChoZWFkX3JlcS0+Y3R4LCByaW5nKSAhPSByZXF1ZXN0X2lkKSkKKwlpZiAodW5saWtlbHkoaW50 ZWxfZXhlY2xpc3RzX2N0eF9pZChoZWFkX3JlcS0+Y3R4LCBlbmdpbmUpICE9IHJlcXVlc3RfaWQp KQogCQlyZXR1cm4gMDsKIAogCVdBUk4oaGVhZF9yZXEtPmVsc3Bfc3VibWl0dGVkID09IDAsICJO ZXZlciBzdWJtaXR0ZWQgaGVhZCByZXF1ZXN0XG4iKTsKQEAgLTUxNCwyNiArNTE0LDI2IEBAIGV4 ZWNsaXN0c19jaGVja19yZW1vdmVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n LCB1MzIgcmVxdWVzdF9pZCkKIAkJcmV0dXJuIDA7CiAKIAlsaXN0X21vdmVfdGFpbCgmaGVhZF9y ZXEtPmV4ZWNsaXN0X2xpbmssCi0JCSAgICAgICAmcmluZy0+ZXhlY2xpc3RfcmV0aXJlZF9yZXFf bGlzdCk7CisJCSAgICAgICAmZW5naW5lLT5leGVjbGlzdF9yZXRpcmVkX3JlcV9saXN0KTsKIAog CXJldHVybiAxOwogfQogCiBzdGF0aWMgdTMyCi1nZXRfY29udGV4dF9zdGF0dXMoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZywgdW5zaWduZWQgaW50IHJlYWRfcG9pbnRlciwKK2dldF9jb250 ZXh0X3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHVuc2lnbmVkIGludCBy ZWFkX3BvaW50ZXIsCiAJCSAgIHUzMiAqY29udGV4dF9pZCkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSByaW5nLT5kZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKIAl1MzIg c3RhdHVzOwogCiAJcmVhZF9wb2ludGVyICU9IEdFTjhfQ1NCX0VOVFJJRVM7CiAKLQlzdGF0dXMg PSBJOTE1X1JFQURfRlcoUklOR19DT05URVhUX1NUQVRVU19CVUZfTE8ocmluZywgcmVhZF9wb2lu dGVyKSk7CisJc3RhdHVzID0gSTkxNV9SRUFEX0ZXKFJJTkdfQ09OVEVYVF9TVEFUVVNfQlVGX0xP KGVuZ2luZSwgcmVhZF9wb2ludGVyKSk7CiAKIAlpZiAoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVT X0lETEVfQUNUSVZFKQogCQlyZXR1cm4gMDsKIAotCSpjb250ZXh0X2lkID0gSTkxNV9SRUFEX0ZX KFJJTkdfQ09OVEVYVF9TVEFUVVNfQlVGX0hJKHJpbmcsCisJKmNvbnRleHRfaWQgPSBJOTE1X1JF QURfRlcoUklOR19DT05URVhUX1NUQVRVU19CVUZfSEkoZW5naW5lLAogCQkJCQkJCSAgICAgIHJl YWRfcG9pbnRlcikpOwogCiAJcmV0dXJuIHN0YXR1czsKQEAgLTU0NiwzMyArNTQ2LDM0IEBAIGdl dF9jb250ZXh0X3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCB1bnNpZ25lZCBp bnQgcmVhZF9wb2ludGVyLAogICogQ2hlY2sgdGhlIHVucmVhZCBDb250ZXh0IFN0YXR1cyBCdWZm ZXJzIGFuZCBtYW5hZ2UgdGhlIHN1Ym1pc3Npb24gb2YgbmV3CiAgKiBjb250ZXh0cyB0byB0aGUg RUxTUCBhY2NvcmRpbmdseS4KICAqLwotdm9pZCBpbnRlbF9scmNfaXJxX2hhbmRsZXIoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZykKK3ZvaWQgaW50ZWxfbHJjX2lycV9oYW5kbGVyKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSByaW5nLT5kZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKIAl1MzIgc3RhdHVzX3Bv aW50ZXI7CiAJdW5zaWduZWQgaW50IHJlYWRfcG9pbnRlciwgd3JpdGVfcG9pbnRlcjsKIAl1MzIg c3RhdHVzID0gMDsKIAl1MzIgc3RhdHVzX2lkOwogCXVuc2lnbmVkIGludCBzdWJtaXRfY29udGV4 dHMgPSAwOwogCi0Jc3Bpbl9sb2NrKCZyaW5nLT5leGVjbGlzdF9sb2NrKTsKKwlzcGluX2xvY2so JmVuZ2luZS0+ZXhlY2xpc3RfbG9jayk7CiAKIAlzcGluX2xvY2soJmRldl9wcml2LT51bmNvcmUu bG9jayk7CiAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXRfX2xvY2tlZChkZXZfcHJpdiwgRk9S Q0VXQUtFX0FMTCk7CiAKLQlzdGF0dXNfcG9pbnRlciA9IEk5MTVfUkVBRF9GVyhSSU5HX0NPTlRF WFRfU1RBVFVTX1BUUihyaW5nKSk7CisJc3RhdHVzX3BvaW50ZXIgPSBJOTE1X1JFQURfRlcoUklO R19DT05URVhUX1NUQVRVU19QVFIoZW5naW5lKSk7CiAKLQlyZWFkX3BvaW50ZXIgPSByaW5nLT5u ZXh0X2NvbnRleHRfc3RhdHVzX2J1ZmZlcjsKKwlyZWFkX3BvaW50ZXIgPSBlbmdpbmUtPm5leHRf Y29udGV4dF9zdGF0dXNfYnVmZmVyOwogCXdyaXRlX3BvaW50ZXIgPSBHRU44X0NTQl9XUklURV9Q VFIoc3RhdHVzX3BvaW50ZXIpOwogCWlmIChyZWFkX3BvaW50ZXIgPiB3cml0ZV9wb2ludGVyKQog CQl3cml0ZV9wb2ludGVyICs9IEdFTjhfQ1NCX0VOVFJJRVM7CiAKIAl3aGlsZSAocmVhZF9wb2lu dGVyIDwgd3JpdGVfcG9pbnRlcikgewotCQlzdGF0dXMgPSBnZXRfY29udGV4dF9zdGF0dXMocmlu ZywgKytyZWFkX3BvaW50ZXIsICZzdGF0dXNfaWQpOworCQlzdGF0dXMgPSBnZXRfY29udGV4dF9z dGF0dXMoZW5naW5lLCArK3JlYWRfcG9pbnRlciwKKwkJCQkgICAgICAgICAgICAmc3RhdHVzX2lk KTsKIAogCQlpZiAodW5saWtlbHkoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX1BSRUVNUFRFRCkp IHsKIAkJCWlmIChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfTElURV9SRVNUT1JFKSB7Ci0JCQkJ aWYgKGV4ZWNsaXN0c19jaGVja19yZW1vdmVfcmVxdWVzdChyaW5nLCBzdGF0dXNfaWQpKQorCQkJ CWlmIChleGVjbGlzdHNfY2hlY2tfcmVtb3ZlX3JlcXVlc3QoZW5naW5lLCBzdGF0dXNfaWQpKQog CQkJCQlXQVJOKDEsICJMaXRlIFJlc3RvcmVkIHJlcXVlc3QgcmVtb3ZlZCBmcm9tIHF1ZXVlXG4i KTsKIAkJCX0gZWxzZQogCQkJCVdBUk4oMSwgIlByZWVtcHRpb24gd2l0aG91dCBMaXRlIFJlc3Rv cmVcbiIpOwpAQCAtNTgxLDI3ICs1ODIsMjggQEAgdm9pZCBpbnRlbF9scmNfaXJxX2hhbmRsZXIo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKIAkJaWYgKHN0YXR1cyAmIChHRU44X0NUWF9T VEFUVVNfQUNUSVZFX0lETEUgfAogCQkgICAgR0VOOF9DVFhfU1RBVFVTX0VMRU1FTlRfU1dJVENI KSkKIAkJCXN1Ym1pdF9jb250ZXh0cyArPQotCQkJCWV4ZWNsaXN0c19jaGVja19yZW1vdmVfcmVx dWVzdChyaW5nLCBzdGF0dXNfaWQpOworCQkJCWV4ZWNsaXN0c19jaGVja19yZW1vdmVfcmVxdWVz dChlbmdpbmUsCisJCQkJCQkgICAgICAgICAgICAgICBzdGF0dXNfaWQpOwogCX0KIAogCWlmIChz dWJtaXRfY29udGV4dHMpIHsKLQkJaWYgKCFyaW5nLT5kaXNhYmxlX2xpdGVfcmVzdG9yZV93YSB8 fAorCQlpZiAoIWVuZ2luZS0+ZGlzYWJsZV9saXRlX3Jlc3RvcmVfd2EgfHwKIAkJICAgIChzdGF0 dXMgJiBHRU44X0NUWF9TVEFUVVNfQUNUSVZFX0lETEUpKQotCQkJZXhlY2xpc3RzX2NvbnRleHRf dW5xdWV1ZV9fbG9ja2VkKHJpbmcpOworCQkJZXhlY2xpc3RzX2NvbnRleHRfdW5xdWV1ZV9fbG9j a2VkKGVuZ2luZSk7CiAJfQogCi0JcmluZy0+bmV4dF9jb250ZXh0X3N0YXR1c19idWZmZXIgPSB3 cml0ZV9wb2ludGVyICUgR0VOOF9DU0JfRU5UUklFUzsKKwllbmdpbmUtPm5leHRfY29udGV4dF9z dGF0dXNfYnVmZmVyID0gd3JpdGVfcG9pbnRlciAlIEdFTjhfQ1NCX0VOVFJJRVM7CiAKIAkvKiBV cGRhdGUgdGhlIHJlYWQgcG9pbnRlciB0byB0aGUgb2xkIHdyaXRlIHBvaW50ZXIuIE1hbnVhbCBy aW5nYnVmZmVyCiAJICogbWFuYWdlbWVudCBmdHcgPC9zYXJjYXNtPiAqLwotCUk5MTVfV1JJVEVf RlcoUklOR19DT05URVhUX1NUQVRVU19QVFIocmluZyksCisJSTkxNV9XUklURV9GVyhSSU5HX0NP TlRFWFRfU1RBVFVTX1BUUihlbmdpbmUpLAogCQkgICAgICBfTUFTS0VEX0ZJRUxEKEdFTjhfQ1NC X1JFQURfUFRSX01BU0ssCi0JCQkJICAgIHJpbmctPm5leHRfY29udGV4dF9zdGF0dXNfYnVmZmVy IDw8IDgpKTsKKwkJCQkgICAgZW5naW5lLT5uZXh0X2NvbnRleHRfc3RhdHVzX2J1ZmZlciA8PCA4 KSk7CiAKIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dF9fbG9ja2VkKGRldl9wcml2LCBGT1JD RVdBS0VfQUxMKTsKIAlzcGluX3VubG9jaygmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsKIAotCXNw aW5fdW5sb2NrKCZyaW5nLT5leGVjbGlzdF9sb2NrKTsKKwlzcGluX3VubG9jaygmZW5naW5lLT5l eGVjbGlzdF9sb2NrKTsKIAogCWlmICh1bmxpa2VseShzdWJtaXRfY29udGV4dHMgPiAyKSkKIAkJ RFJNX0VSUk9SKCJNb3JlIHRoYW4gdHdvIGNvbnRleHQgY29tcGxldGUgZXZlbnRzP1xuIik7CkBA IC0xMDIwLDUzICsxMDIyLDUzIEBAIGludCBpbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbihzdHJ1 Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zLAogCXJldHVybiAwOwogfQogCi12b2lk IGludGVsX2V4ZWNsaXN0c19yZXRpcmVfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq cmluZykKK3ZvaWQgaW50ZWxfZXhlY2xpc3RzX3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEs ICp0bXA7CiAJc3RydWN0IGxpc3RfaGVhZCByZXRpcmVkX2xpc3Q7CiAKLQlXQVJOX09OKCFtdXRl eF9pc19sb2NrZWQoJnJpbmctPmRldi0+c3RydWN0X211dGV4KSk7Ci0JaWYgKGxpc3RfZW1wdHko JnJpbmctPmV4ZWNsaXN0X3JldGlyZWRfcmVxX2xpc3QpKQorCVdBUk5fT04oIW11dGV4X2lzX2xv Y2tlZCgmZW5naW5lLT5kZXYtPnN0cnVjdF9tdXRleCkpOworCWlmIChsaXN0X2VtcHR5KCZlbmdp bmUtPmV4ZWNsaXN0X3JldGlyZWRfcmVxX2xpc3QpKQogCQlyZXR1cm47CiAKIAlJTklUX0xJU1Rf SEVBRCgmcmV0aXJlZF9saXN0KTsKLQlzcGluX2xvY2tfaXJxKCZyaW5nLT5leGVjbGlzdF9sb2Nr KTsKLQlsaXN0X3JlcGxhY2VfaW5pdCgmcmluZy0+ZXhlY2xpc3RfcmV0aXJlZF9yZXFfbGlzdCwg JnJldGlyZWRfbGlzdCk7Ci0Jc3Bpbl91bmxvY2tfaXJxKCZyaW5nLT5leGVjbGlzdF9sb2NrKTsK KwlzcGluX2xvY2tfaXJxKCZlbmdpbmUtPmV4ZWNsaXN0X2xvY2spOworCWxpc3RfcmVwbGFjZV9p bml0KCZlbmdpbmUtPmV4ZWNsaXN0X3JldGlyZWRfcmVxX2xpc3QsICZyZXRpcmVkX2xpc3QpOwor CXNwaW5fdW5sb2NrX2lycSgmZW5naW5lLT5leGVjbGlzdF9sb2NrKTsKIAogCWxpc3RfZm9yX2Vh Y2hfZW50cnlfc2FmZShyZXEsIHRtcCwgJnJldGlyZWRfbGlzdCwgZXhlY2xpc3RfbGluaykgewog CQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4ID0gcmVxLT5jdHg7CiAJCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpjdHhfb2JqID0KLQkJCQljdHgtPmVuZ2luZVtyaW5nLT5pZF0uc3RhdGU7 CisJCQkJY3R4LT5lbmdpbmVbZW5naW5lLT5pZF0uc3RhdGU7CiAKIAkJaWYgKGN0eF9vYmogJiYg KGN0eCAhPSByZXEtPmk5MTUtPmtlcm5lbF9jb250ZXh0KSkKLQkJCWludGVsX2xyX2NvbnRleHRf dW5waW4oY3R4LCByaW5nKTsKKwkJCWludGVsX2xyX2NvbnRleHRfdW5waW4oY3R4LCBlbmdpbmUp OwogCiAJCWxpc3RfZGVsKCZyZXEtPmV4ZWNsaXN0X2xpbmspOwogCQlpOTE1X2dlbV9yZXF1ZXN0 X3VucmVmZXJlbmNlKHJlcSk7CiAJfQogfQogCi12b2lkIGludGVsX2xvZ2ljYWxfcmluZ19zdG9w KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCit2b2lkIGludGVsX2xvZ2ljYWxfcmluZ19z dG9wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSByaW5nLT5kZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKIAlpbnQg cmV0OwogCi0JaWYgKCFpbnRlbF9yaW5nX2luaXRpYWxpemVkKHJpbmcpKQorCWlmICghaW50ZWxf cmluZ19pbml0aWFsaXplZChlbmdpbmUpKQogCQlyZXR1cm47CiAKLQlyZXQgPSBpbnRlbF9yaW5n X2lkbGUocmluZyk7Ci0JaWYgKHJldCAmJiAhaTkxNV9yZXNldF9pbl9wcm9ncmVzcygmdG9faTkx NShyaW5nLT5kZXYpLT5ncHVfZXJyb3IpKQorCXJldCA9IGludGVsX3JpbmdfaWRsZShlbmdpbmUp OworCWlmIChyZXQgJiYgIWk5MTVfcmVzZXRfaW5fcHJvZ3Jlc3MoJnRvX2k5MTUoZW5naW5lLT5k ZXYpLT5ncHVfZXJyb3IpKQogCQlEUk1fRVJST1IoImZhaWxlZCB0byBxdWllc2NlICVzIHdoaWxz dCBjbGVhbmluZyB1cDogJWRcbiIsCi0JCQkgIHJpbmctPm5hbWUsIHJldCk7CisJCQkgIGVuZ2lu ZS0+bmFtZSwgcmV0KTsKIAogCS8qIFRPRE86IElzIHRoaXMgY29ycmVjdCB3aXRoIEV4ZWNsaXN0 cyBlbmFibGVkPyAqLwotCUk5MTVfV1JJVEVfTU9ERShyaW5nLCBfTUFTS0VEX0JJVF9FTkFCTEUo U1RPUF9SSU5HKSk7Ci0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQURfTU9ERShyaW5nKSAmIE1PREVf SURMRSkgIT0gMCwgMTAwMCkpIHsKLQkJRFJNX0VSUk9SKCIlcyA6dGltZWQgb3V0IHRyeWluZyB0 byBzdG9wIHJpbmdcbiIsIHJpbmctPm5hbWUpOworCUk5MTVfV1JJVEVfTU9ERShlbmdpbmUsIF9N QVNLRURfQklUX0VOQUJMRShTVE9QX1JJTkcpKTsKKwlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRF9N T0RFKGVuZ2luZSkgJiBNT0RFX0lETEUpICE9IDAsIDEwMDApKSB7CisJCURSTV9FUlJPUigiJXMg OnRpbWVkIG91dCB0cnlpbmcgdG8gc3RvcCByaW5nXG4iLCBlbmdpbmUtPm5hbWUpOwogCQlyZXR1 cm47CiAJfQotCUk5MTVfV1JJVEVfTU9ERShyaW5nLCBfTUFTS0VEX0JJVF9ESVNBQkxFKFNUT1Bf UklORykpOworCUk5MTVfV1JJVEVfTU9ERShlbmdpbmUsIF9NQVNLRURfQklUX0RJU0FCTEUoU1RP UF9SSU5HKSk7CiB9CiAKIGludCBsb2dpY2FsX3JpbmdfZmx1c2hfYWxsX2NhY2hlcyhzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKQEAgLTEwODYsMTcgKzEwODgsMTcgQEAgaW50IGxv Z2ljYWxfcmluZ19mbHVzaF9hbGxfY2FjaGVzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxKQogfQogCiBzdGF0aWMgaW50IGludGVsX2xyX2NvbnRleHRfZG9fcGluKHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjdHgsCi0JCQkJICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKKwkJ CQkgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IHJpbmctPmRldjsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5lLT5k ZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaiA9IGN0eC0+ZW5naW5lW3Jp bmctPmlkXS5zdGF0ZTsKLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IGN0eC0+ ZW5naW5lW3JpbmctPmlkXS5yaW5nYnVmOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpj dHhfb2JqID0gY3R4LT5lbmdpbmVbZW5naW5lLT5pZF0uc3RhdGU7CisJc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKnJpbmdidWYgPSBjdHgtPmVuZ2luZVtlbmdpbmUtPmlkXS5yaW5nYnVmOwogCXN0 cnVjdCBwYWdlICpscmNfc3RhdGVfcGFnZTsKIAl1aW50MzJfdCAqbHJjX3JlZ19zdGF0ZTsKIAlp bnQgcmV0OwogCi0JV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZyaW5nLT5kZXYtPnN0cnVjdF9t dXRleCkpOworCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZW5naW5lLT5kZXYtPnN0cnVjdF9t dXRleCkpOwogCiAJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKGN0eF9vYmosIEdFTjhfTFJf Q09OVEVYVF9BTElHTiwKIAkJCVBJTl9PRkZTRVRfQklBUyB8IEdVQ19XT1BDTV9UT1ApOwpAQCAt MTEwOSwxNSArMTExMSwxNSBAQCBzdGF0aWMgaW50IGludGVsX2xyX2NvbnRleHRfZG9fcGluKHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCiAJCWdvdG8gdW5waW5fY3R4X29iajsKIAl9CiAKLQly ZXQgPSBpbnRlbF9waW5fYW5kX21hcF9yaW5nYnVmZmVyX29iaihyaW5nLT5kZXYsIHJpbmdidWYp OworCXJldCA9IGludGVsX3Bpbl9hbmRfbWFwX3JpbmdidWZmZXJfb2JqKGVuZ2luZS0+ZGV2LCBy aW5nYnVmKTsKIAlpZiAocmV0KQogCQlnb3RvIHVucGluX2N0eF9vYmo7CiAKLQljdHgtPmVuZ2lu ZVtyaW5nLT5pZF0ubHJjX3ZtYSA9IGk5MTVfZ2VtX29ial90b19nZ3R0KGN0eF9vYmopOwotCWlu dGVsX2xyX2NvbnRleHRfZGVzY3JpcHRvcl91cGRhdGUoY3R4LCByaW5nKTsKKwljdHgtPmVuZ2lu ZVtlbmdpbmUtPmlkXS5scmNfdm1hID0gaTkxNV9nZW1fb2JqX3RvX2dndHQoY3R4X29iaik7CisJ aW50ZWxfbHJfY29udGV4dF9kZXNjcmlwdG9yX3VwZGF0ZShjdHgsIGVuZ2luZSk7CiAJbHJjX3Jl Z19zdGF0ZSA9IGttYXAobHJjX3N0YXRlX3BhZ2UpOwogCWxyY19yZWdfc3RhdGVbQ1RYX1JJTkdf QlVGRkVSX1NUQVJUKzFdID0gcmluZ2J1Zi0+dm1hLT5ub2RlLnN0YXJ0OwotCWN0eC0+ZW5naW5l W3JpbmctPmlkXS5scmNfcmVnX3N0YXRlID0gbHJjX3JlZ19zdGF0ZTsKKwljdHgtPmVuZ2luZVtl bmdpbmUtPmlkXS5scmNfcmVnX3N0YXRlID0gbHJjX3JlZ19zdGF0ZTsKIAljdHhfb2JqLT5kaXJ0 eSA9IHRydWU7CiAKIAkvKiBJbnZhbGlkYXRlIEd1QyBUTEIuICovCkBAIC0xMjM1LDcgKzEyMzcs NyBAQCBzdGF0aWMgaW50IGludGVsX2xvZ2ljYWxfcmluZ193b3JrYXJvdW5kc19lbWl0KHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogICogVGhpcyBXQSBpcyBhbHNvIHJlcXVpcmVk IGZvciBHZW45IHNvIGV4dHJhY3RpbmcgYXMgYSBmdW5jdGlvbiBhdm9pZHMKICAqIGNvZGUgZHVw bGljYXRpb24uCiAgKi8KLXN0YXRpYyBpbmxpbmUgaW50IGdlbjhfZW1pdF9mbHVzaF9jb2hlcmVu dGwzX3dhKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCitzdGF0aWMgaW5saW5lIGludCBn ZW44X2VtaXRfZmx1c2hfY29oZXJlbnRsM193YShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsCiAJCQkJCQl1aW50MzJfdCAqY29uc3QgYmF0Y2gsCiAJCQkJCQl1aW50MzJfdCBpbmRleCkK IHsKQEAgLTEyNDcsMTMgKzEyNDksMTMgQEAgc3RhdGljIGlubGluZSBpbnQgZ2VuOF9lbWl0X2Zs dXNoX2NvaGVyZW50bDNfd2Eoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKIAkgKiB0aGlz IGJhdGNoIHVwZGF0ZXMgR0VOOF9MM1NRQ1JFRzQgd2l0aCBkZWZhdWx0IHZhbHVlIHdlIG5lZWQg dG8KIAkgKiBzZXQgdGhpcyBiaXQgaGVyZSB0byByZXRhaW4gdGhlIFdBIGR1cmluZyBmbHVzaC4K IAkgKi8KLQlpZiAoSVNfU0tMX1JFVklEKHJpbmctPmRldiwgMCwgU0tMX1JFVklEX0UwKSkKKwlp ZiAoSVNfU0tMX1JFVklEKGVuZ2luZS0+ZGV2LCAwLCBTS0xfUkVWSURfRTApKQogCQlsM3NxYzRf Zmx1c2ggfD0gR0VOOF9MUVNDX1JPX1BFUkZfRElTOwogCiAJd2FfY3R4X2VtaXQoYmF0Y2gsIGlu ZGV4LCAoTUlfU1RPUkVfUkVHSVNURVJfTUVNX0dFTjggfAogCQkJCSAgIE1JX1NSTV9MUk1fR0xP QkFMX0dUVCkpOwogCXdhX2N0eF9lbWl0X3JlZyhiYXRjaCwgaW5kZXgsIEdFTjhfTDNTUUNSRUc0 KTsKLQl3YV9jdHhfZW1pdChiYXRjaCwgaW5kZXgsIHJpbmctPnNjcmF0Y2guZ3R0X29mZnNldCAr IDI1Nik7CisJd2FfY3R4X2VtaXQoYmF0Y2gsIGluZGV4LCBlbmdpbmUtPnNjcmF0Y2guZ3R0X29m ZnNldCArIDI1Nik7CiAJd2FfY3R4X2VtaXQoYmF0Y2gsIGluZGV4LCAwKTsKIAogCXdhX2N0eF9l bWl0KGJhdGNoLCBpbmRleCwgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkpOwpAQCAtMTI3MSw3ICsx MjczLDcgQEAgc3RhdGljIGlubGluZSBpbnQgZ2VuOF9lbWl0X2ZsdXNoX2NvaGVyZW50bDNfd2Eo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKIAl3YV9jdHhfZW1pdChiYXRjaCwgaW5kZXgs IChNSV9MT0FEX1JFR0lTVEVSX01FTV9HRU44IHwKIAkJCQkgICBNSV9TUk1fTFJNX0dMT0JBTF9H VFQpKTsKIAl3YV9jdHhfZW1pdF9yZWcoYmF0Y2gsIGluZGV4LCBHRU44X0wzU1FDUkVHNCk7Ci0J d2FfY3R4X2VtaXQoYmF0Y2gsIGluZGV4LCByaW5nLT5zY3JhdGNoLmd0dF9vZmZzZXQgKyAyNTYp OworCXdhX2N0eF9lbWl0KGJhdGNoLCBpbmRleCwgZW5naW5lLT5zY3JhdGNoLmd0dF9vZmZzZXQg KyAyNTYpOwogCXdhX2N0eF9lbWl0KGJhdGNoLCBpbmRleCwgMCk7CiAKIAlyZXR1cm4gaW5kZXg7 CkBAIC0xMzI0LDcgKzEzMjYsNyBAQCBzdGF0aWMgaW5saW5lIGludCB3YV9jdHhfZW5kKHN0cnVj dCBpOTE1X3dhX2N0eF9iYiAqd2FfY3R4LAogICogUmV0dXJuOiBub24temVybyBpZiB3ZSBleGNl ZWQgdGhlIFBBR0VfU0laRSBsaW1pdC4KICAqLwogCi1zdGF0aWMgaW50IGdlbjhfaW5pdF9pbmRp cmVjdGN0eF9iYihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAorc3RhdGljIGludCBnZW44 X2luaXRfaW5kaXJlY3RjdHhfYmIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQkJ CSAgICBzdHJ1Y3QgaTkxNV93YV9jdHhfYmIgKndhX2N0eCwKIAkJCQkgICAgdWludDMyX3QgKmNv bnN0IGJhdGNoLAogCQkJCSAgICB1aW50MzJfdCAqb2Zmc2V0KQpAQCAtMTMzNiw4ICsxMzM4LDgg QEAgc3RhdGljIGludCBnZW44X2luaXRfaW5kaXJlY3RjdHhfYmIoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZywKIAl3YV9jdHhfZW1pdChiYXRjaCwgaW5kZXgsIE1JX0FSQl9PTl9PRkYgfCBN SV9BUkJfRElTQUJMRSk7CiAKIAkvKiBXYUZsdXNoQ29oZXJlbnRMM0NhY2hlTGluZXNBdENvbnRl eHRTd2l0Y2g6YmR3ICovCi0JaWYgKElTX0JST0FEV0VMTChyaW5nLT5kZXYpKSB7Ci0JCWludCBy YyA9IGdlbjhfZW1pdF9mbHVzaF9jb2hlcmVudGwzX3dhKHJpbmcsIGJhdGNoLCBpbmRleCk7CisJ aWYgKElTX0JST0FEV0VMTChlbmdpbmUtPmRldikpIHsKKwkJaW50IHJjID0gZ2VuOF9lbWl0X2Zs dXNoX2NvaGVyZW50bDNfd2EoZW5naW5lLCBiYXRjaCwgaW5kZXgpOwogCQlpZiAocmMgPCAwKQog CQkJcmV0dXJuIHJjOwogCQlpbmRleCA9IHJjOwpAQCAtMTM0NSw3ICsxMzQ3LDcgQEAgc3RhdGlj IGludCBnZW44X2luaXRfaW5kaXJlY3RjdHhfYmIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZywKIAogCS8qIFdhQ2xlYXJTbG1TcGFjZUF0Q29udGV4dFN3aXRjaDpiZHcsY2h2ICovCiAJLyog QWN0dWFsIHNjcmF0Y2ggbG9jYXRpb24gaXMgYXQgMTI4IGJ5dGVzIG9mZnNldCAqLwotCXNjcmF0 Y2hfYWRkciA9IHJpbmctPnNjcmF0Y2guZ3R0X29mZnNldCArIDIqQ0FDSEVMSU5FX0JZVEVTOwor CXNjcmF0Y2hfYWRkciA9IGVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0ICsgMipDQUNIRUxJTkVf QllURVM7CiAKIAl3YV9jdHhfZW1pdChiYXRjaCwgaW5kZXgsIEdGWF9PUF9QSVBFX0NPTlRST0wo NikpOwogCXdhX2N0eF9lbWl0KGJhdGNoLCBpbmRleCwgKFBJUEVfQ09OVFJPTF9GTFVTSF9MMyB8 CkBAIC0xMzg3LDcgKzEzODksNyBAQCBzdGF0aWMgaW50IGdlbjhfaW5pdF9pbmRpcmVjdGN0eF9i YihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogICogIFRoaXMgYmF0Y2ggaXMgdGVybWlu YXRlZCB3aXRoIE1JX0JBVENIX0JVRkZFUl9FTkQgYW5kIHNvIHdlIG5lZWQgbm90IGFkZCBwYWRk aW5nCiAgKiAgdG8gYWxpZ24gaXQgd2l0aCBjYWNoZWxpbmUgYXMgcGFkZGluZyBhZnRlciBNSV9C QVRDSF9CVUZGRVJfRU5EIGlzIHJlZHVuZGFudC4KICAqLwotc3RhdGljIGludCBnZW44X2luaXRf cGVyY3R4X2JiKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCitzdGF0aWMgaW50IGdlbjhf aW5pdF9wZXJjdHhfYmIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQkJICAgICAg IHN0cnVjdCBpOTE1X3dhX2N0eF9iYiAqd2FfY3R4LAogCQkJICAgICAgIHVpbnQzMl90ICpjb25z dCBiYXRjaCwKIAkJCSAgICAgICB1aW50MzJfdCAqb2Zmc2V0KQpAQCAtMTQwMiwxMyArMTQwNCwx MyBAQCBzdGF0aWMgaW50IGdlbjhfaW5pdF9wZXJjdHhfYmIoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZywKIAlyZXR1cm4gd2FfY3R4X2VuZCh3YV9jdHgsICpvZmZzZXQgPSBpbmRleCwgMSk7 CiB9CiAKLXN0YXRpYyBpbnQgZ2VuOV9pbml0X2luZGlyZWN0Y3R4X2JiKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKnJpbmcsCitzdGF0aWMgaW50IGdlbjlfaW5pdF9pbmRpcmVjdGN0eF9iYihzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJCQkJICAgIHN0cnVjdCBpOTE1X3dhX2N0eF9i YiAqd2FfY3R4LAogCQkJCSAgICB1aW50MzJfdCAqY29uc3QgYmF0Y2gsCiAJCQkJICAgIHVpbnQz Ml90ICpvZmZzZXQpCiB7CiAJaW50IHJldDsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcmlu Zy0+ZGV2OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKIAl1aW50MzJf dCBpbmRleCA9IHdhX2N0eF9zdGFydCh3YV9jdHgsICpvZmZzZXQsIENBQ0hFTElORV9EV09SRFMp OwogCiAJLyogV2FEaXNhYmxlQ3R4UmVzdG9yZUFyYml0cmF0aW9uOnNrbCxieHQgKi8KQEAgLTE0 MTcsNyArMTQxOSw3IEBAIHN0YXRpYyBpbnQgZ2VuOV9pbml0X2luZGlyZWN0Y3R4X2JiKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCiAJCXdhX2N0eF9lbWl0KGJhdGNoLCBpbmRleCwgTUlf QVJCX09OX09GRiB8IE1JX0FSQl9ESVNBQkxFKTsKIAogCS8qIFdhRmx1c2hDb2hlcmVudEwzQ2Fj aGVMaW5lc0F0Q29udGV4dFN3aXRjaDpza2wsYnh0ICovCi0JcmV0ID0gZ2VuOF9lbWl0X2ZsdXNo X2NvaGVyZW50bDNfd2EocmluZywgYmF0Y2gsIGluZGV4KTsKKwlyZXQgPSBnZW44X2VtaXRfZmx1 c2hfY29oZXJlbnRsM193YShlbmdpbmUsIGJhdGNoLCBpbmRleCk7CiAJaWYgKHJldCA8IDApCiAJ CXJldHVybiByZXQ7CiAJaW5kZXggPSByZXQ7CkBAIC0xNDI5LDEyICsxNDMxLDEyIEBAIHN0YXRp YyBpbnQgZ2VuOV9pbml0X2luZGlyZWN0Y3R4X2JiKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcsCiAJcmV0dXJuIHdhX2N0eF9lbmQod2FfY3R4LCAqb2Zmc2V0ID0gaW5kZXgsIENBQ0hFTElO RV9EV09SRFMpOwogfQogCi1zdGF0aWMgaW50IGdlbjlfaW5pdF9wZXJjdHhfYmIoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZywKK3N0YXRpYyBpbnQgZ2VuOV9pbml0X3BlcmN0eF9iYihzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJCQkgICAgICAgc3RydWN0IGk5MTVfd2FfY3R4 X2JiICp3YV9jdHgsCiAJCQkgICAgICAgdWludDMyX3QgKmNvbnN0IGJhdGNoLAogCQkJICAgICAg IHVpbnQzMl90ICpvZmZzZXQpCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHJpbmctPmRl djsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5lLT5kZXY7CiAJdWludDMyX3QgaW5k ZXggPSB3YV9jdHhfc3RhcnQod2FfY3R4LCAqb2Zmc2V0LCBDQUNIRUxJTkVfRFdPUkRTKTsKIAog CS8qIFdhU2V0RGlzYWJsZVBpeE1hc2tDYW1taW5nQW5kUmh3b0luQ29tbW9uU2xpY2VDaGlja2Vu OnNrbCxieHQgKi8KQEAgLTE0NTcsNjAgKzE0NTksNjEgQEAgc3RhdGljIGludCBnZW45X2luaXRf cGVyY3R4X2JiKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCiAJcmV0dXJuIHdhX2N0eF9l bmQod2FfY3R4LCAqb2Zmc2V0ID0gaW5kZXgsIDEpOwogfQogCi1zdGF0aWMgaW50IGxyY19zZXR1 cF93YV9jdHhfb2JqKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIHUzMiBzaXplKQorc3Rh dGljIGludCBscmNfc2V0dXBfd2FfY3R4X29iaihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsIHUzMiBzaXplKQogewogCWludCByZXQ7CiAKLQlyaW5nLT53YV9jdHgub2JqID0gaTkxNV9n ZW1fYWxsb2Nfb2JqZWN0KHJpbmctPmRldiwgUEFHRV9BTElHTihzaXplKSk7Ci0JaWYgKCFyaW5n LT53YV9jdHgub2JqKSB7CisJZW5naW5lLT53YV9jdHgub2JqID0gaTkxNV9nZW1fYWxsb2Nfb2Jq ZWN0KGVuZ2luZS0+ZGV2LAorCQkJCQkJICAgUEFHRV9BTElHTihzaXplKSk7CisJaWYgKCFlbmdp bmUtPndhX2N0eC5vYmopIHsKIAkJRFJNX0RFQlVHX0RSSVZFUigiYWxsb2MgTFJDIFdBIGN0eCBi YWNraW5nIG9iaiBmYWlsZWQuXG4iKTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQogCi0JcmV0ID0g aTkxNV9nZW1fb2JqX2dndHRfcGluKHJpbmctPndhX2N0eC5vYmosIFBBR0VfU0laRSwgMCk7CisJ cmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKGVuZ2luZS0+d2FfY3R4Lm9iaiwgUEFHRV9TSVpF LCAwKTsKIAlpZiAocmV0KSB7CiAJCURSTV9ERUJVR19EUklWRVIoInBpbiBMUkMgV0EgY3R4IGJh Y2tpbmcgb2JqIGZhaWxlZDogJWRcbiIsCiAJCQkJIHJldCk7Ci0JCWRybV9nZW1fb2JqZWN0X3Vu cmVmZXJlbmNlKCZyaW5nLT53YV9jdHgub2JqLT5iYXNlKTsKKwkJZHJtX2dlbV9vYmplY3RfdW5y ZWZlcmVuY2UoJmVuZ2luZS0+d2FfY3R4Lm9iai0+YmFzZSk7CiAJCXJldHVybiByZXQ7CiAJfQog CiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIGxyY19kZXN0cm95X3dhX2N0eF9vYmooc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKK3N0YXRpYyB2b2lkIGxyY19kZXN0cm95X3dhX2N0 eF9vYmooc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCWlmIChyaW5nLT53YV9j dHgub2JqKSB7Ci0JCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKHJpbmctPndhX2N0eC5vYmop OwotCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmcmluZy0+d2FfY3R4Lm9iai0+YmFzZSk7 Ci0JCXJpbmctPndhX2N0eC5vYmogPSBOVUxMOworCWlmIChlbmdpbmUtPndhX2N0eC5vYmopIHsK KwkJaTkxNV9nZW1fb2JqZWN0X2dndHRfdW5waW4oZW5naW5lLT53YV9jdHgub2JqKTsKKwkJZHJt X2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJmVuZ2luZS0+d2FfY3R4Lm9iai0+YmFzZSk7CisJCWVu Z2luZS0+d2FfY3R4Lm9iaiA9IE5VTEw7CiAJfQogfQogCi1zdGF0aWMgaW50IGludGVsX2luaXRf d29ya2Fyb3VuZF9iYihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQorc3RhdGljIGludCBp bnRlbF9pbml0X3dvcmthcm91bmRfYmIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog ewogCWludCByZXQ7CiAJdWludDMyX3QgKmJhdGNoOwogCXVpbnQzMl90IG9mZnNldDsKIAlzdHJ1 Y3QgcGFnZSAqcGFnZTsKLQlzdHJ1Y3QgaTkxNV9jdHhfd29ya2Fyb3VuZHMgKndhX2N0eCA9ICZy aW5nLT53YV9jdHg7CisJc3RydWN0IGk5MTVfY3R4X3dvcmthcm91bmRzICp3YV9jdHggPSAmZW5n aW5lLT53YV9jdHg7CiAKLQlXQVJOX09OKHJpbmctPmlkICE9IFJDUyk7CisJV0FSTl9PTihlbmdp bmUtPmlkICE9IFJDUyk7CiAKIAkvKiB1cGRhdGUgdGhpcyB3aGVuIFdBIGZvciBoaWdoZXIgR2Vu IGFyZSBhZGRlZCAqLwotCWlmIChJTlRFTF9JTkZPKHJpbmctPmRldiktPmdlbiA+IDkpIHsKKwlp ZiAoSU5URUxfSU5GTyhlbmdpbmUtPmRldiktPmdlbiA+IDkpIHsKIAkJRFJNX0VSUk9SKCJXQSBi YXRjaCBidWZmZXIgaXMgbm90IGluaXRpYWxpemVkIGZvciBHZW4lZFxuIiwKLQkJCSAgSU5URUxf SU5GTyhyaW5nLT5kZXYpLT5nZW4pOworCQkJICBJTlRFTF9JTkZPKGVuZ2luZS0+ZGV2KS0+Z2Vu KTsKIAkJcmV0dXJuIDA7CiAJfQogCiAJLyogc29tZSBXQSBwZXJmb3JtIHdyaXRlcyB0byBzY3Jh dGNoIHBhZ2UsIGVuc3VyZSBpdCBpcyB2YWxpZCAqLwotCWlmIChyaW5nLT5zY3JhdGNoLm9iaiA9 PSBOVUxMKSB7Ci0JCURSTV9FUlJPUigic2NyYXRjaCBwYWdlIG5vdCBhbGxvY2F0ZWQgZm9yICVz XG4iLCByaW5nLT5uYW1lKTsKKwlpZiAoZW5naW5lLT5zY3JhdGNoLm9iaiA9PSBOVUxMKSB7CisJ CURSTV9FUlJPUigic2NyYXRjaCBwYWdlIG5vdCBhbGxvY2F0ZWQgZm9yICVzXG4iLCBlbmdpbmUt Pm5hbWUpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlyZXQgPSBscmNfc2V0dXBfd2FfY3R4 X29iaihyaW5nLCBQQUdFX1NJWkUpOworCXJldCA9IGxyY19zZXR1cF93YV9jdHhfb2JqKGVuZ2lu ZSwgUEFHRV9TSVpFKTsKIAlpZiAocmV0KSB7CiAJCURSTV9ERUJVR19EUklWRVIoIkZhaWxlZCB0 byBzZXR1cCBjb250ZXh0IFdBIHBhZ2U6ICVkXG4iLCByZXQpOwogCQlyZXR1cm4gcmV0OwpAQCAt MTUyMCwyOSArMTUyMywyOSBAQCBzdGF0aWMgaW50IGludGVsX2luaXRfd29ya2Fyb3VuZF9iYihz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogCWJhdGNoID0ga21hcF9hdG9taWMocGFnZSk7 CiAJb2Zmc2V0ID0gMDsKIAotCWlmIChJTlRFTF9JTkZPKHJpbmctPmRldiktPmdlbiA9PSA4KSB7 Ci0JCXJldCA9IGdlbjhfaW5pdF9pbmRpcmVjdGN0eF9iYihyaW5nLAorCWlmIChJTlRFTF9JTkZP KGVuZ2luZS0+ZGV2KS0+Z2VuID09IDgpIHsKKwkJcmV0ID0gZ2VuOF9pbml0X2luZGlyZWN0Y3R4 X2JiKGVuZ2luZSwKIAkJCQkJICAgICAgICZ3YV9jdHgtPmluZGlyZWN0X2N0eCwKIAkJCQkJICAg ICAgIGJhdGNoLAogCQkJCQkgICAgICAgJm9mZnNldCk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIG91 dDsKIAotCQlyZXQgPSBnZW44X2luaXRfcGVyY3R4X2JiKHJpbmcsCisJCXJldCA9IGdlbjhfaW5p dF9wZXJjdHhfYmIoZW5naW5lLAogCQkJCQkgICZ3YV9jdHgtPnBlcl9jdHgsCiAJCQkJCSAgYmF0 Y2gsCiAJCQkJCSAgJm9mZnNldCk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIG91dDsKLQl9IGVsc2Ug aWYgKElOVEVMX0lORk8ocmluZy0+ZGV2KS0+Z2VuID09IDkpIHsKLQkJcmV0ID0gZ2VuOV9pbml0 X2luZGlyZWN0Y3R4X2JiKHJpbmcsCisJfSBlbHNlIGlmIChJTlRFTF9JTkZPKGVuZ2luZS0+ZGV2 KS0+Z2VuID09IDkpIHsKKwkJcmV0ID0gZ2VuOV9pbml0X2luZGlyZWN0Y3R4X2JiKGVuZ2luZSwK IAkJCQkJICAgICAgICZ3YV9jdHgtPmluZGlyZWN0X2N0eCwKIAkJCQkJICAgICAgIGJhdGNoLAog CQkJCQkgICAgICAgJm9mZnNldCk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIG91dDsKIAotCQlyZXQg PSBnZW45X2luaXRfcGVyY3R4X2JiKHJpbmcsCisJCXJldCA9IGdlbjlfaW5pdF9wZXJjdHhfYmIo ZW5naW5lLAogCQkJCQkgICZ3YV9jdHgtPnBlcl9jdHgsCiAJCQkJCSAgYmF0Y2gsCiAJCQkJCSAg Jm9mZnNldCk7CkBAIC0xNTUzLDI3ICsxNTU2LDI4IEBAIHN0YXRpYyBpbnQgaW50ZWxfaW5pdF93 b3JrYXJvdW5kX2JiKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiBvdXQ6CiAJa3VubWFw X2F0b21pYyhiYXRjaCk7CiAJaWYgKHJldCkKLQkJbHJjX2Rlc3Ryb3lfd2FfY3R4X29iaihyaW5n KTsKKwkJbHJjX2Rlc3Ryb3lfd2FfY3R4X29iaihlbmdpbmUpOwogCiAJcmV0dXJuIHJldDsKIH0K IAotc3RhdGljIGludCBnZW44X2luaXRfY29tbW9uX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZykKK3N0YXRpYyBpbnQgZ2VuOF9pbml0X2NvbW1vbl9yaW5nKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ZGV2 OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXVuc2lnbmVkIGludCBu ZXh0X2NvbnRleHRfc3RhdHVzX2J1ZmZlcl9odzsKIAotCWxyY19zZXR1cF9oYXJkd2FyZV9zdGF0 dXNfcGFnZShyaW5nLAotCQkJCWRldl9wcml2LT5rZXJuZWxfY29udGV4dC0+ZW5naW5lW3Jpbmct PmlkXS5zdGF0ZSk7CisJbHJjX3NldHVwX2hhcmR3YXJlX3N0YXR1c19wYWdlKGVuZ2luZSwKKwkJ CQkgICAgICAgZGV2X3ByaXYtPmtlcm5lbF9jb250ZXh0LT5lbmdpbmVbZW5naW5lLT5pZF0uc3Rh dGUpOwogCi0JSTkxNV9XUklURV9JTVIocmluZywgfihyaW5nLT5pcnFfZW5hYmxlX21hc2sgfCBy aW5nLT5pcnFfa2VlcF9tYXNrKSk7Ci0JSTkxNV9XUklURShSSU5HX0hXU1RBTShyaW5nLT5tbWlv X2Jhc2UpLCAweGZmZmZmZmZmKTsKKwlJOTE1X1dSSVRFX0lNUihlbmdpbmUsCisJCSAgICAgICB+ KGVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrIHwgZW5naW5lLT5pcnFfa2VlcF9tYXNrKSk7CisJSTkx NV9XUklURShSSU5HX0hXU1RBTShlbmdpbmUtPm1taW9fYmFzZSksIDB4ZmZmZmZmZmYpOwogCi0J STkxNV9XUklURShSSU5HX01PREVfR0VONyhyaW5nKSwKKwlJOTE1X1dSSVRFKFJJTkdfTU9ERV9H RU43KGVuZ2luZSksCiAJCSAgIF9NQVNLRURfQklUX0RJU0FCTEUoR0ZYX1JFUExBWV9NT0RFKSB8 CiAJCSAgIF9NQVNLRURfQklUX0VOQUJMRShHRlhfUlVOX0xJU1RfRU5BQkxFKSk7Ci0JUE9TVElO R19SRUFEKFJJTkdfTU9ERV9HRU43KHJpbmcpKTsKKwlQT1NUSU5HX1JFQUQoUklOR19NT0RFX0dF TjcoZW5naW5lKSk7CiAKIAkvKgogCSAqIEluc3RlYWQgb2YgcmVzZXR0aW5nIHRoZSBDb250ZXh0 IFN0YXR1cyBCdWZmZXIgKENTQikgcmVhZCBwb2ludGVyIHRvCkBAIC0xNTg4LDcgKzE1OTIsNyBA QCBzdGF0aWMgaW50IGdlbjhfaW5pdF9jb21tb25fcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nKQogCSAqIEJYVCAgfCAgICAgICAgID8gICAgICAgICAgICAgICAgfCAgICAgICAgID8g ICAgICAgICAgICB8CiAJICovCiAJbmV4dF9jb250ZXh0X3N0YXR1c19idWZmZXJfaHcgPQotCQlH RU44X0NTQl9XUklURV9QVFIoSTkxNV9SRUFEKFJJTkdfQ09OVEVYVF9TVEFUVVNfUFRSKHJpbmcp KSk7CisJCUdFTjhfQ1NCX1dSSVRFX1BUUihJOTE1X1JFQUQoUklOR19DT05URVhUX1NUQVRVU19Q VFIoZW5naW5lKSkpOwogCiAJLyoKIAkgKiBXaGVuIHRoZSBDU0IgcmVnaXN0ZXJzIGFyZSByZXNl dCAoYWxzbyBhZnRlciBwb3dlci11cCAvIGdwdSByZXNldCksCkBAIC0xNTk4LDIxICsxNjAyLDIx IEBAIHN0YXRpYyBpbnQgZ2VuOF9pbml0X2NvbW1vbl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKnJpbmcpCiAJaWYgKG5leHRfY29udGV4dF9zdGF0dXNfYnVmZmVyX2h3ID09IEdFTjhfQ1NC X1BUUl9NQVNLKQogCQluZXh0X2NvbnRleHRfc3RhdHVzX2J1ZmZlcl9odyA9IChHRU44X0NTQl9F TlRSSUVTIC0gMSk7CiAKLQlyaW5nLT5uZXh0X2NvbnRleHRfc3RhdHVzX2J1ZmZlciA9IG5leHRf Y29udGV4dF9zdGF0dXNfYnVmZmVyX2h3OwotCURSTV9ERUJVR19EUklWRVIoIkV4ZWNsaXN0cyBl bmFibGVkIGZvciAlc1xuIiwgcmluZy0+bmFtZSk7CisJZW5naW5lLT5uZXh0X2NvbnRleHRfc3Rh dHVzX2J1ZmZlciA9IG5leHRfY29udGV4dF9zdGF0dXNfYnVmZmVyX2h3OworCURSTV9ERUJVR19E UklWRVIoIkV4ZWNsaXN0cyBlbmFibGVkIGZvciAlc1xuIiwgZW5naW5lLT5uYW1lKTsKIAotCW1l bXNldCgmcmluZy0+aGFuZ2NoZWNrLCAwLCBzaXplb2YocmluZy0+aGFuZ2NoZWNrKSk7CisJbWVt c2V0KCZlbmdpbmUtPmhhbmdjaGVjaywgMCwgc2l6ZW9mKGVuZ2luZS0+aGFuZ2NoZWNrKSk7CiAK IAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBnZW44X2luaXRfcmVuZGVyX3Jpbmcoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZykKK3N0YXRpYyBpbnQgZ2VuOF9pbml0X3JlbmRlcl9yaW5n KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gcmluZy0+ZGV2OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwog CWludCByZXQ7CiAKLQlyZXQgPSBnZW44X2luaXRfY29tbW9uX3JpbmcocmluZyk7CisJcmV0ID0g Z2VuOF9pbml0X2NvbW1vbl9yaW5nKGVuZ2luZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsK IApAQCAtMTYyNiwxOCArMTYzMCwxOCBAQCBzdGF0aWMgaW50IGdlbjhfaW5pdF9yZW5kZXJfcmlu ZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogCiAJSTkxNV9XUklURShJTlNUUE0sIF9N QVNLRURfQklUX0VOQUJMRShJTlNUUE1fRk9SQ0VfT1JERVJJTkcpKTsKIAotCXJldHVybiBpbml0 X3dvcmthcm91bmRzX3JpbmcocmluZyk7CisJcmV0dXJuIGluaXRfd29ya2Fyb3VuZHNfcmluZyhl bmdpbmUpOwogfQogCi1zdGF0aWMgaW50IGdlbjlfaW5pdF9yZW5kZXJfcmluZyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nKQorc3RhdGljIGludCBnZW45X2luaXRfcmVuZGVyX3Jpbmcoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCWludCByZXQ7CiAKLQlyZXQgPSBnZW44 X2luaXRfY29tbW9uX3JpbmcocmluZyk7CisJcmV0ID0gZ2VuOF9pbml0X2NvbW1vbl9yaW5nKGVu Z2luZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldHVybiBpbml0X3dvcmthcm91 bmRzX3JpbmcocmluZyk7CisJcmV0dXJuIGluaXRfd29ya2Fyb3VuZHNfcmluZyhlbmdpbmUpOwog fQogCiBzdGF0aWMgaW50IGludGVsX2xvZ2ljYWxfcmluZ19lbWl0X3BkcHMoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEpCkBAIC0xNzEyLDkgKzE3MTYsOSBAQCBzdGF0aWMgaW50IGdl bjhfZW1pdF9iYl9zdGFydChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAlyZXR1 cm4gMDsKIH0KIAotc3RhdGljIGJvb2wgZ2VuOF9sb2dpY2FsX3JpbmdfZ2V0X2lycShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nKQorc3RhdGljIGJvb2wgZ2VuOF9sb2dpY2FsX3JpbmdfZ2V0 X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IHJpbmctPmRldjsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5lLT5k ZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCkBAIC0xNzIyLDI1ICsxNzI2LDI2IEBAIHN0YXRp YyBib29sIGdlbjhfbG9naWNhbF9yaW5nX2dldF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq cmluZykKIAkJcmV0dXJuIGZhbHNlOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT5p cnFfbG9jaywgZmxhZ3MpOwotCWlmIChyaW5nLT5pcnFfcmVmY291bnQrKyA9PSAwKSB7Ci0JCUk5 MTVfV1JJVEVfSU1SKHJpbmcsIH4ocmluZy0+aXJxX2VuYWJsZV9tYXNrIHwgcmluZy0+aXJxX2tl ZXBfbWFzaykpOwotCQlQT1NUSU5HX1JFQUQoUklOR19JTVIocmluZy0+bW1pb19iYXNlKSk7CisJ aWYgKGVuZ2luZS0+aXJxX3JlZmNvdW50KysgPT0gMCkgeworCQlJOTE1X1dSSVRFX0lNUihlbmdp bmUsCisJCQkgICAgICAgfihlbmdpbmUtPmlycV9lbmFibGVfbWFzayB8IGVuZ2luZS0+aXJxX2tl ZXBfbWFzaykpOworCQlQT1NUSU5HX1JFQUQoUklOR19JTVIoZW5naW5lLT5tbWlvX2Jhc2UpKTsK IAl9CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7 CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgZ2VuOF9sb2dpY2FsX3JpbmdfcHV0 X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQorc3RhdGljIHZvaWQgZ2VuOF9sb2dp Y2FsX3JpbmdfcHV0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IHJpbmctPmRldjsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gZW5naW5lLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJc3Bpbl9sb2NrX2lycXNh dmUoJmRldl9wcml2LT5pcnFfbG9jaywgZmxhZ3MpOwotCWlmICgtLXJpbmctPmlycV9yZWZjb3Vu dCA9PSAwKSB7Ci0JCUk5MTVfV1JJVEVfSU1SKHJpbmcsIH5yaW5nLT5pcnFfa2VlcF9tYXNrKTsK LQkJUE9TVElOR19SRUFEKFJJTkdfSU1SKHJpbmctPm1taW9fYmFzZSkpOworCWlmICgtLWVuZ2lu ZS0+aXJxX3JlZmNvdW50ID09IDApIHsKKwkJSTkxNV9XUklURV9JTVIoZW5naW5lLCB+ZW5naW5l LT5pcnFfa2VlcF9tYXNrKTsKKwkJUE9TVElOR19SRUFEKFJJTkdfSU1SKGVuZ2luZS0+bW1pb19i YXNlKSk7CiAJfQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5pcnFfbG9jaywg ZmxhZ3MpOwogfQpAQCAtMTg0OCwxNyArMTg1MywxOCBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9m bHVzaF9yZW5kZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAogCXJldHVy biAwOwogfQogCi1zdGF0aWMgdTMyIGdlbjhfZ2V0X3NlcW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKnJpbmcsIGJvb2wgbGF6eV9jb2hlcmVuY3kpCitzdGF0aWMgdTMyIGdlbjhfZ2V0X3NlcW5v KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgYm9vbCBsYXp5X2NvaGVyZW5jeSkKIHsK LQlyZXR1cm4gaW50ZWxfcmVhZF9zdGF0dXNfcGFnZShyaW5nLCBJOTE1X0dFTV9IV1NfSU5ERVgp OworCXJldHVybiBpbnRlbF9yZWFkX3N0YXR1c19wYWdlKGVuZ2luZSwgSTkxNV9HRU1fSFdTX0lO REVYKTsKIH0KIAotc3RhdGljIHZvaWQgZ2VuOF9zZXRfc2Vxbm8oc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZywgdTMyIHNlcW5vKQorc3RhdGljIHZvaWQgZ2VuOF9zZXRfc2Vxbm8oc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgc2Vxbm8pCiB7Ci0JaW50ZWxfd3JpdGVfc3Rh dHVzX3BhZ2UocmluZywgSTkxNV9HRU1fSFdTX0lOREVYLCBzZXFubyk7CisJaW50ZWxfd3JpdGVf c3RhdHVzX3BhZ2UoZW5naW5lLCBJOTE1X0dFTV9IV1NfSU5ERVgsIHNlcW5vKTsKIH0KIAotc3Rh dGljIHUzMiBieHRfYV9nZXRfc2Vxbm8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgYm9v bCBsYXp5X2NvaGVyZW5jeSkKK3N0YXRpYyB1MzIgYnh0X2FfZ2V0X3NlcW5vKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCSAgIGJvb2wgbGF6eV9jb2hlcmVuY3kpCiB7CiAKIAkv KgpAQCAtMTg3MywxNyArMTg3OSwxNyBAQCBzdGF0aWMgdTMyIGJ4dF9hX2dldF9zZXFubyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCBib29sIGxhenlfY29oZXJlbmN5KQogCSAqLwogCiAJ aWYgKCFsYXp5X2NvaGVyZW5jeSkKLQkJaW50ZWxfZmx1c2hfc3RhdHVzX3BhZ2UocmluZywgSTkx NV9HRU1fSFdTX0lOREVYKTsKKwkJaW50ZWxfZmx1c2hfc3RhdHVzX3BhZ2UoZW5naW5lLCBJOTE1 X0dFTV9IV1NfSU5ERVgpOwogCi0JcmV0dXJuIGludGVsX3JlYWRfc3RhdHVzX3BhZ2UocmluZywg STkxNV9HRU1fSFdTX0lOREVYKTsKKwlyZXR1cm4gaW50ZWxfcmVhZF9zdGF0dXNfcGFnZShlbmdp bmUsIEk5MTVfR0VNX0hXU19JTkRFWCk7CiB9CiAKLXN0YXRpYyB2b2lkIGJ4dF9hX3NldF9zZXFu byhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCB1MzIgc2Vxbm8pCitzdGF0aWMgdm9pZCBi eHRfYV9zZXRfc2Vxbm8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgc2Vxbm8p CiB7Ci0JaW50ZWxfd3JpdGVfc3RhdHVzX3BhZ2UocmluZywgSTkxNV9HRU1fSFdTX0lOREVYLCBz ZXFubyk7CisJaW50ZWxfd3JpdGVfc3RhdHVzX3BhZ2UoZW5naW5lLCBJOTE1X0dFTV9IV1NfSU5E RVgsIHNlcW5vKTsKIAogCS8qIFNlZSBieHRfYV9nZXRfc2Vxbm8oKSBleHBsYWluaW5nIHRoZSBy ZWFzb24gZm9yIHRoZSBjbGZsdXNoLiAqLwotCWludGVsX2ZsdXNoX3N0YXR1c19wYWdlKHJpbmcs IEk5MTVfR0VNX0hXU19JTkRFWCk7CisJaW50ZWxfZmx1c2hfc3RhdHVzX3BhZ2UoZW5naW5lLCBJ OTE1X0dFTV9IV1NfSU5ERVgpOwogfQogCiAvKgpAQCAtMjAwMiwxMDkgKzIwMDgsMTA5IEBAIHN0 YXRpYyBpbnQgZ2VuOF9pbml0X3Jjc19jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxKQogICogQHJpbmc6IEVuZ2luZSBDb21tYW5kIFN0cmVhbWVyLgogICoKICAqLwotdm9p ZCBpbnRlbF9sb2dpY2FsX3JpbmdfY2xlYW51cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n KQordm9pZCBpbnRlbF9sb2dpY2FsX3JpbmdfY2xlYW51cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2OwogCi0JaWYg KCFpbnRlbF9yaW5nX2luaXRpYWxpemVkKHJpbmcpKQorCWlmICghaW50ZWxfcmluZ19pbml0aWFs aXplZChlbmdpbmUpKQogCQlyZXR1cm47CiAKLQlkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3By aXZhdGU7CisJZGV2X3ByaXYgPSBlbmdpbmUtPmRldi0+ZGV2X3ByaXZhdGU7CiAKLQlpZiAocmlu Zy0+YnVmZmVyKSB7Ci0JCWludGVsX2xvZ2ljYWxfcmluZ19zdG9wKHJpbmcpOwotCQlXQVJOX09O KChJOTE1X1JFQURfTU9ERShyaW5nKSAmIE1PREVfSURMRSkgPT0gMCk7CisJaWYgKGVuZ2luZS0+ YnVmZmVyKSB7CisJCWludGVsX2xvZ2ljYWxfcmluZ19zdG9wKGVuZ2luZSk7CisJCVdBUk5fT04o KEk5MTVfUkVBRF9NT0RFKGVuZ2luZSkgJiBNT0RFX0lETEUpID09IDApOwogCX0KIAotCWlmIChy aW5nLT5jbGVhbnVwKQotCQlyaW5nLT5jbGVhbnVwKHJpbmcpOworCWlmIChlbmdpbmUtPmNsZWFu dXApCisJCWVuZ2luZS0+Y2xlYW51cChlbmdpbmUpOwogCi0JaTkxNV9jbWRfcGFyc2VyX2Zpbmlf cmluZyhyaW5nKTsKLQlpOTE1X2dlbV9iYXRjaF9wb29sX2ZpbmkoJnJpbmctPmJhdGNoX3Bvb2wp OworCWk5MTVfY21kX3BhcnNlcl9maW5pX3JpbmcoZW5naW5lKTsKKwlpOTE1X2dlbV9iYXRjaF9w b29sX2ZpbmkoJmVuZ2luZS0+YmF0Y2hfcG9vbCk7CiAKLQlpZiAocmluZy0+c3RhdHVzX3BhZ2Uu b2JqKSB7Ci0JCWt1bm1hcChzZ19wYWdlKHJpbmctPnN0YXR1c19wYWdlLm9iai0+cGFnZXMtPnNn bCkpOwotCQlyaW5nLT5zdGF0dXNfcGFnZS5vYmogPSBOVUxMOworCWlmIChlbmdpbmUtPnN0YXR1 c19wYWdlLm9iaikgeworCQlrdW5tYXAoc2dfcGFnZShlbmdpbmUtPnN0YXR1c19wYWdlLm9iai0+ cGFnZXMtPnNnbCkpOworCQllbmdpbmUtPnN0YXR1c19wYWdlLm9iaiA9IE5VTEw7CiAJfQogCi0J cmluZy0+aWRsZV9saXRlX3Jlc3RvcmVfd2EgPSAwOwotCXJpbmctPmRpc2FibGVfbGl0ZV9yZXN0 b3JlX3dhID0gZmFsc2U7Ci0JcmluZy0+Y3R4X2Rlc2NfdGVtcGxhdGUgPSAwOworCWVuZ2luZS0+ aWRsZV9saXRlX3Jlc3RvcmVfd2EgPSAwOworCWVuZ2luZS0+ZGlzYWJsZV9saXRlX3Jlc3RvcmVf d2EgPSBmYWxzZTsKKwllbmdpbmUtPmN0eF9kZXNjX3RlbXBsYXRlID0gMDsKIAotCWxyY19kZXN0 cm95X3dhX2N0eF9vYmoocmluZyk7Ci0JcmluZy0+ZGV2ID0gTlVMTDsKKwlscmNfZGVzdHJveV93 YV9jdHhfb2JqKGVuZ2luZSk7CisJZW5naW5lLT5kZXYgPSBOVUxMOwogfQogCiBzdGF0aWMgdm9p ZAogbG9naWNhbF9yaW5nX2RlZmF1bHRfdmZ1bmNzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0J CQkgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKKwkJCSAgICBzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiB7CiAJLyogRGVmYXVsdCB2ZnVuY3Mgd2hpY2ggY2FuIGJlIG92 ZXJyaWRlbiBieSBlYWNoIGVuZ2luZS4gKi8KLQlyaW5nLT5pbml0X2h3ID0gZ2VuOF9pbml0X2Nv bW1vbl9yaW5nOwotCXJpbmctPmVtaXRfcmVxdWVzdCA9IGdlbjhfZW1pdF9yZXF1ZXN0OwotCXJp bmctPmVtaXRfZmx1c2ggPSBnZW44X2VtaXRfZmx1c2g7Ci0JcmluZy0+aXJxX2dldCA9IGdlbjhf bG9naWNhbF9yaW5nX2dldF9pcnE7Ci0JcmluZy0+aXJxX3B1dCA9IGdlbjhfbG9naWNhbF9yaW5n X3B1dF9pcnE7Ci0JcmluZy0+ZW1pdF9iYl9zdGFydCA9IGdlbjhfZW1pdF9iYl9zdGFydDsKKwll bmdpbmUtPmluaXRfaHcgPSBnZW44X2luaXRfY29tbW9uX3Jpbmc7CisJZW5naW5lLT5lbWl0X3Jl cXVlc3QgPSBnZW44X2VtaXRfcmVxdWVzdDsKKwllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW44X2Vt aXRfZmx1c2g7CisJZW5naW5lLT5pcnFfZ2V0ID0gZ2VuOF9sb2dpY2FsX3JpbmdfZ2V0X2lycTsK KwllbmdpbmUtPmlycV9wdXQgPSBnZW44X2xvZ2ljYWxfcmluZ19wdXRfaXJxOworCWVuZ2luZS0+ ZW1pdF9iYl9zdGFydCA9IGdlbjhfZW1pdF9iYl9zdGFydDsKIAlpZiAoSVNfQlhUX1JFVklEKGRl diwgMCwgQlhUX1JFVklEX0ExKSkgewotCQlyaW5nLT5nZXRfc2Vxbm8gPSBieHRfYV9nZXRfc2Vx bm87Ci0JCXJpbmctPnNldF9zZXFubyA9IGJ4dF9hX3NldF9zZXFubzsKKwkJZW5naW5lLT5nZXRf c2Vxbm8gPSBieHRfYV9nZXRfc2Vxbm87CisJCWVuZ2luZS0+c2V0X3NlcW5vID0gYnh0X2Ffc2V0 X3NlcW5vOwogCX0gZWxzZSB7Ci0JCXJpbmctPmdldF9zZXFubyA9IGdlbjhfZ2V0X3NlcW5vOwot CQlyaW5nLT5zZXRfc2Vxbm8gPSBnZW44X3NldF9zZXFubzsKKwkJZW5naW5lLT5nZXRfc2Vxbm8g PSBnZW44X2dldF9zZXFubzsKKwkJZW5naW5lLT5zZXRfc2Vxbm8gPSBnZW44X3NldF9zZXFubzsK IAl9CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZAotbG9naWNhbF9yaW5nX2RlZmF1bHRfaXJxcyhz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCB1bnNpZ25lZCBzaGlmdCkKK2xvZ2ljYWxfcmlu Z19kZWZhdWx0X2lycXMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1bnNpZ25lZCBz aGlmdCkKIHsKLQlyaW5nLT5pcnFfZW5hYmxlX21hc2sgPSBHVF9SRU5ERVJfVVNFUl9JTlRFUlJV UFQgPDwgc2hpZnQ7Ci0JcmluZy0+aXJxX2tlZXBfbWFzayA9IEdUX0NPTlRFWFRfU1dJVENIX0lO VEVSUlVQVCA8PCBzaGlmdDsKKwllbmdpbmUtPmlycV9lbmFibGVfbWFzayA9IEdUX1JFTkRFUl9V U0VSX0lOVEVSUlVQVCA8PCBzaGlmdDsKKwllbmdpbmUtPmlycV9rZWVwX21hc2sgPSBHVF9DT05U RVhUX1NXSVRDSF9JTlRFUlJVUFQgPDwgc2hpZnQ7CiB9CiAKIHN0YXRpYyBpbnQKLWxvZ2ljYWxf cmluZ19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcpCitsb2dpY2FsX3JpbmdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGludGVsX2NvbnRleHQgKmRjdHgg PSB0b19pOTE1KGRldiktPmtlcm5lbF9jb250ZXh0OwogCWludCByZXQ7CiAKIAkvKiBJbnRlbnRp b25hbGx5IGxlZnQgYmxhbmsuICovCi0JcmluZy0+YnVmZmVyID0gTlVMTDsKKwllbmdpbmUtPmJ1 ZmZlciA9IE5VTEw7CiAKLQlyaW5nLT5kZXYgPSBkZXY7Ci0JSU5JVF9MSVNUX0hFQUQoJnJpbmct PmFjdGl2ZV9saXN0KTsKLQlJTklUX0xJU1RfSEVBRCgmcmluZy0+cmVxdWVzdF9saXN0KTsKLQlp OTE1X2dlbV9iYXRjaF9wb29sX2luaXQoZGV2LCAmcmluZy0+YmF0Y2hfcG9vbCk7Ci0JaW5pdF93 YWl0cXVldWVfaGVhZCgmcmluZy0+aXJxX3F1ZXVlKTsKKwllbmdpbmUtPmRldiA9IGRldjsKKwlJ TklUX0xJU1RfSEVBRCgmZW5naW5lLT5hY3RpdmVfbGlzdCk7CisJSU5JVF9MSVNUX0hFQUQoJmVu Z2luZS0+cmVxdWVzdF9saXN0KTsKKwlpOTE1X2dlbV9iYXRjaF9wb29sX2luaXQoZGV2LCAmZW5n aW5lLT5iYXRjaF9wb29sKTsKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZlbmdpbmUtPmlycV9xdWV1 ZSk7CiAKLQlJTklUX0xJU1RfSEVBRCgmcmluZy0+YnVmZmVycyk7Ci0JSU5JVF9MSVNUX0hFQUQo JnJpbmctPmV4ZWNsaXN0X3F1ZXVlKTsKLQlJTklUX0xJU1RfSEVBRCgmcmluZy0+ZXhlY2xpc3Rf cmV0aXJlZF9yZXFfbGlzdCk7Ci0Jc3Bpbl9sb2NrX2luaXQoJnJpbmctPmV4ZWNsaXN0X2xvY2sp OworCUlOSVRfTElTVF9IRUFEKCZlbmdpbmUtPmJ1ZmZlcnMpOworCUlOSVRfTElTVF9IRUFEKCZl bmdpbmUtPmV4ZWNsaXN0X3F1ZXVlKTsKKwlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5leGVjbGlz dF9yZXRpcmVkX3JlcV9saXN0KTsKKwlzcGluX2xvY2tfaW5pdCgmZW5naW5lLT5leGVjbGlzdF9s b2NrKTsKIAotCWxvZ2ljYWxfcmluZ19pbml0X3BsYXRmb3JtX2ludmFyaWFudHMocmluZyk7CisJ bG9naWNhbF9yaW5nX2luaXRfcGxhdGZvcm1faW52YXJpYW50cyhlbmdpbmUpOwogCi0JcmV0ID0g aTkxNV9jbWRfcGFyc2VyX2luaXRfcmluZyhyaW5nKTsKKwlyZXQgPSBpOTE1X2NtZF9wYXJzZXJf aW5pdF9yaW5nKGVuZ2luZSk7CiAJaWYgKHJldCkKIAkJZ290byBlcnJvcjsKIAotCXJldCA9IGlu dGVsX2xyX2NvbnRleHRfZGVmZXJyZWRfYWxsb2MoZGN0eCwgcmluZyk7CisJcmV0ID0gaW50ZWxf bHJfY29udGV4dF9kZWZlcnJlZF9hbGxvYyhkY3R4LCBlbmdpbmUpOwogCWlmIChyZXQpCiAJCWdv dG8gZXJyb3I7CiAKIAkvKiBBcyB0aGlzIGlzIHRoZSBkZWZhdWx0IGNvbnRleHQsIGFsd2F5cyBw aW4gaXQgKi8KLQlyZXQgPSBpbnRlbF9scl9jb250ZXh0X2RvX3BpbihkY3R4LCByaW5nKTsKKwly ZXQgPSBpbnRlbF9scl9jb250ZXh0X2RvX3BpbihkY3R4LCBlbmdpbmUpOwogCWlmIChyZXQpIHsK IAkJRFJNX0VSUk9SKAogCQkJIkZhaWxlZCB0byBwaW4gYW5kIG1hcCByaW5nYnVmZmVyICVzOiAl ZFxuIiwKLQkJCXJpbmctPm5hbWUsIHJldCk7CisJCQllbmdpbmUtPm5hbWUsIHJldCk7CiAJCWdv dG8gZXJyb3I7CiAJfQogCiAJcmV0dXJuIDA7CiAKIGVycm9yOgotCWludGVsX2xvZ2ljYWxfcmlu Z19jbGVhbnVwKHJpbmcpOworCWludGVsX2xvZ2ljYWxfcmluZ19jbGVhbnVwKGVuZ2luZSk7CiAJ cmV0dXJuIHJldDsKIH0KIApAQCAtMjMyOSwxMyArMjMzNSwxMyBAQCBtYWtlX3JwY3Moc3RydWN0 IGRybV9kZXZpY2UgKmRldikKIAlyZXR1cm4gcnBjczsKIH0KIAotc3RhdGljIHUzMiBpbnRlbF9s cl9pbmRpcmVjdF9jdHhfb2Zmc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCitzdGF0 aWMgdTMyIGludGVsX2xyX2luZGlyZWN0X2N0eF9vZmZzZXQoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQogewogCXUzMiBpbmRpcmVjdF9jdHhfb2Zmc2V0OwogCi0Jc3dpdGNoIChJTlRF TF9JTkZPKHJpbmctPmRldiktPmdlbikgeworCXN3aXRjaCAoSU5URUxfSU5GTyhlbmdpbmUtPmRl diktPmdlbikgewogCWRlZmF1bHQ6Ci0JCU1JU1NJTkdfQ0FTRShJTlRFTF9JTkZPKHJpbmctPmRl diktPmdlbik7CisJCU1JU1NJTkdfQ0FTRShJTlRFTF9JTkZPKGVuZ2luZS0+ZGV2KS0+Z2VuKTsK IAkJLyogZmFsbCB0aHJvdWdoICovCiAJY2FzZSA5OgogCQlpbmRpcmVjdF9jdHhfb2Zmc2V0ID0K QEAgLTIzNTIsOSArMjM1OCwxMCBAQCBzdGF0aWMgdTMyIGludGVsX2xyX2luZGlyZWN0X2N0eF9v ZmZzZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKIAogc3RhdGljIGludAogcG9wdWxh dGVfbHJfY29udGV4dChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LCBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqY3R4X29iaiwKLQkJICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcs IHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKQorCQkgICAgc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAorCQkgICAgc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYp CiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHJpbmctPmRldjsKKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gZW5naW5lLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPSBj dHgtPnBwZ3R0OwogCXN0cnVjdCBwYWdlICpwYWdlOwpAQCAtMjM4OSwzMyArMjM5Niw0NyBAQCBw b3B1bGF0ZV9scl9jb250ZXh0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsIHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpjdHhfbwogCSAqIHJlY3JlYXRlIHRoaXMgYmF0Y2hidWZmZXIgd2l0 aCBuZXcgdmFsdWVzIChpbmNsdWRpbmcgYWxsIHRoZSBtaXNzaW5nCiAJICogTUlfTE9BRF9SRUdJ U1RFUl9JTU0gY29tbWFuZHMgdGhhdCB3ZSBhcmUgbm90IGluaXRpYWxpemluZyBoZXJlKS4gKi8K IAlyZWdfc3RhdGVbQ1RYX0xSSV9IRUFERVJfMF0gPQotCQlNSV9MT0FEX1JFR0lTVEVSX0lNTShy aW5nLT5pZCA9PSBSQ1MgPyAxNCA6IDExKSB8IE1JX0xSSV9GT1JDRV9QT1NURUQ7Ci0JQVNTSUdO X0NUWF9SRUcocmVnX3N0YXRlLCBDVFhfQ09OVEVYVF9DT05UUk9MLCBSSU5HX0NPTlRFWFRfQ09O VFJPTChyaW5nKSwKKwkJTUlfTE9BRF9SRUdJU1RFUl9JTU0oZW5naW5lLT5pZCA9PSBSQ1MgPyAx NCA6IDExKSB8IE1JX0xSSV9GT1JDRV9QT1NURUQ7CisJQVNTSUdOX0NUWF9SRUcocmVnX3N0YXRl LCBDVFhfQ09OVEVYVF9DT05UUk9MLAorCQkgICAgICAgUklOR19DT05URVhUX0NPTlRST0woZW5n aW5lKSwKIAkJICAgICAgIF9NQVNLRURfQklUX0VOQUJMRShDVFhfQ1RSTF9JTkhJQklUX1NZTl9D VFhfU1dJVENIIHwKIAkJCQkJICBDVFhfQ1RSTF9FTkdJTkVfQ1RYX1JFU1RPUkVfSU5ISUJJVCB8 CiAJCQkJCSAgKEhBU19SRVNPVVJDRV9TVFJFQU1FUihkZXYpID8KIAkJCQkJICAgIENUWF9DVFJM X1JTX0NUWF9FTkFCTEUgOiAwKSkpOwotCUFTU0lHTl9DVFhfUkVHKHJlZ19zdGF0ZSwgQ1RYX1JJ TkdfSEVBRCwgUklOR19IRUFEKHJpbmctPm1taW9fYmFzZSksIDApOwotCUFTU0lHTl9DVFhfUkVH KHJlZ19zdGF0ZSwgQ1RYX1JJTkdfVEFJTCwgUklOR19UQUlMKHJpbmctPm1taW9fYmFzZSksIDAp OworCUFTU0lHTl9DVFhfUkVHKHJlZ19zdGF0ZSwgQ1RYX1JJTkdfSEVBRCwgUklOR19IRUFEKGVu Z2luZS0+bW1pb19iYXNlKSwKKwkJICAgICAgIDApOworCUFTU0lHTl9DVFhfUkVHKHJlZ19zdGF0 ZSwgQ1RYX1JJTkdfVEFJTCwgUklOR19UQUlMKGVuZ2luZS0+bW1pb19iYXNlKSwKKwkJICAgICAg IDApOwogCS8qIFJpbmcgYnVmZmVyIHN0YXJ0IGFkZHJlc3MgaXMgbm90IGtub3duIHVudGlsIHRo ZSBidWZmZXIgaXMgcGlubmVkLgogCSAqIEl0IGlzIHdyaXR0ZW4gdG8gdGhlIGNvbnRleHQgaW1h Z2UgaW4gZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0KCkKIAkgKi8KLQlBU1NJR05fQ1RYX1JFRyhy ZWdfc3RhdGUsIENUWF9SSU5HX0JVRkZFUl9TVEFSVCwgUklOR19TVEFSVChyaW5nLT5tbWlvX2Jh c2UpLCAwKTsKLQlBU1NJR05fQ1RYX1JFRyhyZWdfc3RhdGUsIENUWF9SSU5HX0JVRkZFUl9DT05U Uk9MLCBSSU5HX0NUTChyaW5nLT5tbWlvX2Jhc2UpLAorCUFTU0lHTl9DVFhfUkVHKHJlZ19zdGF0 ZSwgQ1RYX1JJTkdfQlVGRkVSX1NUQVJULAorCQkgICAgICAgUklOR19TVEFSVChlbmdpbmUtPm1t aW9fYmFzZSksIDApOworCUFTU0lHTl9DVFhfUkVHKHJlZ19zdGF0ZSwgQ1RYX1JJTkdfQlVGRkVS X0NPTlRST0wsCisJCSAgICAgICBSSU5HX0NUTChlbmdpbmUtPm1taW9fYmFzZSksCiAJCSAgICAg ICAoKHJpbmdidWYtPnNpemUgLSBQQUdFX1NJWkUpICYgUklOR19OUl9QQUdFUykgfCBSSU5HX1ZB TElEKTsKLQlBU1NJR05fQ1RYX1JFRyhyZWdfc3RhdGUsIENUWF9CQl9IRUFEX1UsIFJJTkdfQkJB RERSX1VEVyhyaW5nLT5tbWlvX2Jhc2UpLCAwKTsKLQlBU1NJR05fQ1RYX1JFRyhyZWdfc3RhdGUs IENUWF9CQl9IRUFEX0wsIFJJTkdfQkJBRERSKHJpbmctPm1taW9fYmFzZSksIDApOwotCUFTU0lH Tl9DVFhfUkVHKHJlZ19zdGF0ZSwgQ1RYX0JCX1NUQVRFLCBSSU5HX0JCU1RBVEUocmluZy0+bW1p b19iYXNlKSwKKwlBU1NJR05fQ1RYX1JFRyhyZWdfc3RhdGUsIENUWF9CQl9IRUFEX1UsCisJCSAg ICAgICBSSU5HX0JCQUREUl9VRFcoZW5naW5lLT5tbWlvX2Jhc2UpLCAwKTsKKwlBU1NJR05fQ1RY X1JFRyhyZWdfc3RhdGUsIENUWF9CQl9IRUFEX0wsCisJCSAgICAgICBSSU5HX0JCQUREUihlbmdp bmUtPm1taW9fYmFzZSksIDApOworCUFTU0lHTl9DVFhfUkVHKHJlZ19zdGF0ZSwgQ1RYX0JCX1NU QVRFLAorCQkgICAgICAgUklOR19CQlNUQVRFKGVuZ2luZS0+bW1pb19iYXNlKSwKIAkJICAgICAg IFJJTkdfQkJfUFBHVFQpOwotCUFTU0lHTl9DVFhfUkVHKHJlZ19zdGF0ZSwgQ1RYX1NFQ09ORF9C Ql9IRUFEX1UsIFJJTkdfU0JCQUREUl9VRFcocmluZy0+bW1pb19iYXNlKSwgMCk7Ci0JQVNTSUdO X0NUWF9SRUcocmVnX3N0YXRlLCBDVFhfU0VDT05EX0JCX0hFQURfTCwgUklOR19TQkJBRERSKHJp bmctPm1taW9fYmFzZSksIDApOwotCUFTU0lHTl9DVFhfUkVHKHJlZ19zdGF0ZSwgQ1RYX1NFQ09O RF9CQl9TVEFURSwgUklOR19TQkJTVEFURShyaW5nLT5tbWlvX2Jhc2UpLCAwKTsKLQlpZiAocmlu Zy0+aWQgPT0gUkNTKSB7Ci0JCUFTU0lHTl9DVFhfUkVHKHJlZ19zdGF0ZSwgQ1RYX0JCX1BFUl9D VFhfUFRSLCBSSU5HX0JCX1BFUl9DVFhfUFRSKHJpbmctPm1taW9fYmFzZSksIDApOwotCQlBU1NJ R05fQ1RYX1JFRyhyZWdfc3RhdGUsIENUWF9SQ1NfSU5ESVJFQ1RfQ1RYLCBSSU5HX0lORElSRUNU X0NUWChyaW5nLT5tbWlvX2Jhc2UpLCAwKTsKLQkJQVNTSUdOX0NUWF9SRUcocmVnX3N0YXRlLCBD VFhfUkNTX0lORElSRUNUX0NUWF9PRkZTRVQsIFJJTkdfSU5ESVJFQ1RfQ1RYX09GRlNFVChyaW5n LT5tbWlvX2Jhc2UpLCAwKTsKLQkJaWYgKHJpbmctPndhX2N0eC5vYmopIHsKLQkJCXN0cnVjdCBp OTE1X2N0eF93b3JrYXJvdW5kcyAqd2FfY3R4ID0gJnJpbmctPndhX2N0eDsKKwlBU1NJR05fQ1RY X1JFRyhyZWdfc3RhdGUsIENUWF9TRUNPTkRfQkJfSEVBRF9VLAorCQkgICAgICAgUklOR19TQkJB RERSX1VEVyhlbmdpbmUtPm1taW9fYmFzZSksIDApOworCUFTU0lHTl9DVFhfUkVHKHJlZ19zdGF0 ZSwgQ1RYX1NFQ09ORF9CQl9IRUFEX0wsCisJCSAgICAgICBSSU5HX1NCQkFERFIoZW5naW5lLT5t bWlvX2Jhc2UpLCAwKTsKKwlBU1NJR05fQ1RYX1JFRyhyZWdfc3RhdGUsIENUWF9TRUNPTkRfQkJf U1RBVEUsCisJCSAgICAgICBSSU5HX1NCQlNUQVRFKGVuZ2luZS0+bW1pb19iYXNlKSwgMCk7CisJ aWYgKGVuZ2luZS0+aWQgPT0gUkNTKSB7CisJCUFTU0lHTl9DVFhfUkVHKHJlZ19zdGF0ZSwgQ1RY X0JCX1BFUl9DVFhfUFRSLAorCQkJICAgICAgIFJJTkdfQkJfUEVSX0NUWF9QVFIoZW5naW5lLT5t bWlvX2Jhc2UpLCAwKTsKKwkJQVNTSUdOX0NUWF9SRUcocmVnX3N0YXRlLCBDVFhfUkNTX0lORElS RUNUX0NUWCwKKwkJCSAgICAgICBSSU5HX0lORElSRUNUX0NUWChlbmdpbmUtPm1taW9fYmFzZSks IDApOworCQlBU1NJR05fQ1RYX1JFRyhyZWdfc3RhdGUsIENUWF9SQ1NfSU5ESVJFQ1RfQ1RYX09G RlNFVCwKKwkJCSAgICAgICBSSU5HX0lORElSRUNUX0NUWF9PRkZTRVQoZW5naW5lLT5tbWlvX2Jh c2UpLCAwKTsKKwkJaWYgKGVuZ2luZS0+d2FfY3R4Lm9iaikgeworCQkJc3RydWN0IGk5MTVfY3R4 X3dvcmthcm91bmRzICp3YV9jdHggPSAmZW5naW5lLT53YV9jdHg7CiAJCQl1aW50MzJfdCBnZ3R0 X29mZnNldCA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldCh3YV9jdHgtPm9iaik7CiAKIAkJCXJl Z19zdGF0ZVtDVFhfUkNTX0lORElSRUNUX0NUWCsxXSA9CkBAIC0yNDIzLDcgKzI0NDQsNyBAQCBw b3B1bGF0ZV9scl9jb250ZXh0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsIHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpjdHhfbwogCQkJCSh3YV9jdHgtPmluZGlyZWN0X2N0eC5zaXplIC8g Q0FDSEVMSU5FX0RXT1JEUyk7CiAKIAkJCXJlZ19zdGF0ZVtDVFhfUkNTX0lORElSRUNUX0NUWF9P RkZTRVQrMV0gPQotCQkJCWludGVsX2xyX2luZGlyZWN0X2N0eF9vZmZzZXQocmluZykgPDwgNjsK KwkJCQlpbnRlbF9scl9pbmRpcmVjdF9jdHhfb2Zmc2V0KGVuZ2luZSkgPDwgNjsKIAogCQkJcmVn X3N0YXRlW0NUWF9CQl9QRVJfQ1RYX1BUUisxXSA9CiAJCQkJKGdndHRfb2Zmc2V0ICsgd2FfY3R4 LT5wZXJfY3R4Lm9mZnNldCAqIHNpemVvZih1aW50MzJfdCkpIHwKQEAgLTI0MzEsMTYgKzI0NTIs MjUgQEAgcG9wdWxhdGVfbHJfY29udGV4dChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LCBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X28KIAkJfQogCX0KIAlyZWdfc3RhdGVbQ1RYX0xS SV9IRUFERVJfMV0gPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSg5KSB8IE1JX0xSSV9GT1JDRV9QT1NU RUQ7Ci0JQVNTSUdOX0NUWF9SRUcocmVnX3N0YXRlLCBDVFhfQ1RYX1RJTUVTVEFNUCwgUklOR19D VFhfVElNRVNUQU1QKHJpbmctPm1taW9fYmFzZSksIDApOworCUFTU0lHTl9DVFhfUkVHKHJlZ19z dGF0ZSwgQ1RYX0NUWF9USU1FU1RBTVAsCisJCSAgICAgICBSSU5HX0NUWF9USU1FU1RBTVAoZW5n aW5lLT5tbWlvX2Jhc2UpLCAwKTsKIAkvKiBQRFAgdmFsdWVzIHdlbGwgYmUgYXNzaWduZWQgbGF0 ZXIgaWYgbmVlZGVkICovCi0JQVNTSUdOX0NUWF9SRUcocmVnX3N0YXRlLCBDVFhfUERQM19VRFcs IEdFTjhfUklOR19QRFBfVURXKHJpbmcsIDMpLCAwKTsKLQlBU1NJR05fQ1RYX1JFRyhyZWdfc3Rh dGUsIENUWF9QRFAzX0xEVywgR0VOOF9SSU5HX1BEUF9MRFcocmluZywgMyksIDApOwotCUFTU0lH Tl9DVFhfUkVHKHJlZ19zdGF0ZSwgQ1RYX1BEUDJfVURXLCBHRU44X1JJTkdfUERQX1VEVyhyaW5n LCAyKSwgMCk7Ci0JQVNTSUdOX0NUWF9SRUcocmVnX3N0YXRlLCBDVFhfUERQMl9MRFcsIEdFTjhf UklOR19QRFBfTERXKHJpbmcsIDIpLCAwKTsKLQlBU1NJR05fQ1RYX1JFRyhyZWdfc3RhdGUsIENU WF9QRFAxX1VEVywgR0VOOF9SSU5HX1BEUF9VRFcocmluZywgMSksIDApOwotCUFTU0lHTl9DVFhf UkVHKHJlZ19zdGF0ZSwgQ1RYX1BEUDFfTERXLCBHRU44X1JJTkdfUERQX0xEVyhyaW5nLCAxKSwg MCk7Ci0JQVNTSUdOX0NUWF9SRUcocmVnX3N0YXRlLCBDVFhfUERQMF9VRFcsIEdFTjhfUklOR19Q RFBfVURXKHJpbmcsIDApLCAwKTsKLQlBU1NJR05fQ1RYX1JFRyhyZWdfc3RhdGUsIENUWF9QRFAw X0xEVywgR0VOOF9SSU5HX1BEUF9MRFcocmluZywgMCksIDApOworCUFTU0lHTl9DVFhfUkVHKHJl Z19zdGF0ZSwgQ1RYX1BEUDNfVURXLCBHRU44X1JJTkdfUERQX1VEVyhlbmdpbmUsIDMpLAorCQkg ICAgICAgMCk7CisJQVNTSUdOX0NUWF9SRUcocmVnX3N0YXRlLCBDVFhfUERQM19MRFcsIEdFTjhf UklOR19QRFBfTERXKGVuZ2luZSwgMyksCisJCSAgICAgICAwKTsKKwlBU1NJR05fQ1RYX1JFRyhy ZWdfc3RhdGUsIENUWF9QRFAyX1VEVywgR0VOOF9SSU5HX1BEUF9VRFcoZW5naW5lLCAyKSwKKwkJ ICAgICAgIDApOworCUFTU0lHTl9DVFhfUkVHKHJlZ19zdGF0ZSwgQ1RYX1BEUDJfTERXLCBHRU44 X1JJTkdfUERQX0xEVyhlbmdpbmUsIDIpLAorCQkgICAgICAgMCk7CisJQVNTSUdOX0NUWF9SRUco cmVnX3N0YXRlLCBDVFhfUERQMV9VRFcsIEdFTjhfUklOR19QRFBfVURXKGVuZ2luZSwgMSksCisJ CSAgICAgICAwKTsKKwlBU1NJR05fQ1RYX1JFRyhyZWdfc3RhdGUsIENUWF9QRFAxX0xEVywgR0VO OF9SSU5HX1BEUF9MRFcoZW5naW5lLCAxKSwKKwkJICAgICAgIDApOworCUFTU0lHTl9DVFhfUkVH KHJlZ19zdGF0ZSwgQ1RYX1BEUDBfVURXLCBHRU44X1JJTkdfUERQX1VEVyhlbmdpbmUsIDApLAor CQkgICAgICAgMCk7CisJQVNTSUdOX0NUWF9SRUcocmVnX3N0YXRlLCBDVFhfUERQMF9MRFcsIEdF TjhfUklOR19QRFBfTERXKGVuZ2luZSwgMCksCisJCSAgICAgICAwKTsKIAogCWlmIChVU0VTX0ZV TExfNDhCSVRfUFBHVFQocHBndHQtPmJhc2UuZGV2KSkgewogCQkvKiA2NGIgUFBHVFQgKDQ4Yml0 IGNhbm9uaWNhbCkKQEAgLTI0NTcsNyArMjQ4Nyw3IEBAIHBvcHVsYXRlX2xyX2NvbnRleHQoc3Ry dWN0IGludGVsX2NvbnRleHQgKmN0eCwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9v CiAJCWV4ZWNsaXN0c191cGRhdGVfY29udGV4dF9wZHBzKHBwZ3R0LCByZWdfc3RhdGUpOwogCX0K IAotCWlmIChyaW5nLT5pZCA9PSBSQ1MpIHsKKwlpZiAoZW5naW5lLT5pZCA9PSBSQ1MpIHsKIAkJ cmVnX3N0YXRlW0NUWF9MUklfSEVBREVSXzJdID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSk7CiAJ CUFTU0lHTl9DVFhfUkVHKHJlZ19zdGF0ZSwgQ1RYX1JfUFdSX0NMS19TVEFURSwgR0VOOF9SX1BX Ul9DTEtfU1RBVEUsCiAJCQkgICAgICAgbWFrZV9ycGNzKGRldikpOwpAQCAtMjUxMywxNSArMjU0 MywxNSBAQCB2b2lkIGludGVsX2xyX2NvbnRleHRfZnJlZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y3R4KQogICogaW4gTFJDIG1vZGUsIGJ1dCBkb2VzIG5vdCBpbmNsdWRlIHRoZSAic2hhcmVkIGRh dGEgcGFnZSIgdXNlZCB3aXRoCiAgKiBHdUMgc3VibWlzc2lvbi4gVGhlIGNhbGxlciBzaG91bGQg YWNjb3VudCBmb3IgdGhpcyBpZiB1c2luZyB0aGUgR3VDLgogICovCi11aW50MzJfdCBpbnRlbF9s cl9jb250ZXh0X3NpemUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKK3VpbnQzMl90IGlu dGVsX2xyX2NvbnRleHRfc2l6ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJ aW50IHJldCA9IDA7CiAKLQlXQVJOX09OKElOVEVMX0lORk8ocmluZy0+ZGV2KS0+Z2VuIDwgOCk7 CisJV0FSTl9PTihJTlRFTF9JTkZPKGVuZ2luZS0+ZGV2KS0+Z2VuIDwgOCk7CiAKLQlzd2l0Y2gg KHJpbmctPmlkKSB7CisJc3dpdGNoIChlbmdpbmUtPmlkKSB7CiAJY2FzZSBSQ1M6Ci0JCWlmIChJ TlRFTF9JTkZPKHJpbmctPmRldiktPmdlbiA+PSA5KQorCQlpZiAoSU5URUxfSU5GTyhlbmdpbmUt PmRldiktPmdlbiA+PSA5KQogCQkJcmV0ID0gR0VOOV9MUl9DT05URVhUX1JFTkRFUl9TSVpFOwog CQllbHNlCiAJCQlyZXQgPSBHRU44X0xSX0NPTlRFWFRfUkVOREVSX1NJWkU7CkBAIC0yNTM3LDIy ICsyNTY3LDIyIEBAIHVpbnQzMl90IGludGVsX2xyX2NvbnRleHRfc2l6ZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nKQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB2b2lkIGxyY19zZXR1 cF9oYXJkd2FyZV9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAotCQlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqZGVmYXVsdF9jdHhfb2JqKQorc3RhdGljIHZvaWQg bHJjX3NldHVwX2hhcmR3YXJlX3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwKKwkJCQkJICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmRlZmF1bHRfY3R4X29i aikKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByaW5nLT5kZXYtPmRl dl9wcml2YXRlOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+ ZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKIAogCS8qIFRoZSBIV1NQIGlz IHBhcnQgb2YgdGhlIGRlZmF1bHQgY29udGV4dCBvYmplY3QgaW4gTFJDIG1vZGUuICovCi0Jcmlu Zy0+c3RhdHVzX3BhZ2UuZ2Z4X2FkZHIgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoZGVmYXVs dF9jdHhfb2JqKQorCWVuZ2luZS0+c3RhdHVzX3BhZ2UuZ2Z4X2FkZHIgPSBpOTE1X2dlbV9vYmpf Z2d0dF9vZmZzZXQoZGVmYXVsdF9jdHhfb2JqKQogCQkJKyBMUkNfUFBIV1NQX1BOICogUEFHRV9T SVpFOwogCXBhZ2UgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2UoZGVmYXVsdF9jdHhfb2JqLCBM UkNfUFBIV1NQX1BOKTsKLQlyaW5nLT5zdGF0dXNfcGFnZS5wYWdlX2FkZHIgPSBrbWFwKHBhZ2Up OwotCXJpbmctPnN0YXR1c19wYWdlLm9iaiA9IGRlZmF1bHRfY3R4X29iajsKKwllbmdpbmUtPnN0 YXR1c19wYWdlLnBhZ2VfYWRkciA9IGttYXAocGFnZSk7CisJZW5naW5lLT5zdGF0dXNfcGFnZS5v YmogPSBkZWZhdWx0X2N0eF9vYmo7CiAKLQlJOTE1X1dSSVRFKFJJTkdfSFdTX1BHQShyaW5nLT5t bWlvX2Jhc2UpLAotCQkJKHUzMilyaW5nLT5zdGF0dXNfcGFnZS5nZnhfYWRkcik7Ci0JUE9TVElO R19SRUFEKFJJTkdfSFdTX1BHQShyaW5nLT5tbWlvX2Jhc2UpKTsKKwlJOTE1X1dSSVRFKFJJTkdf SFdTX1BHQShlbmdpbmUtPm1taW9fYmFzZSksCisJCQkodTMyKWVuZ2luZS0+c3RhdHVzX3BhZ2Uu Z2Z4X2FkZHIpOworCVBPU1RJTkdfUkVBRChSSU5HX0hXU19QR0EoZW5naW5lLT5tbWlvX2Jhc2Up KTsKIH0KIAogLyoqCkBAIC0yNTcwLDE4ICsyNjAwLDE4IEBAIHN0YXRpYyB2b2lkIGxyY19zZXR1 cF9oYXJkd2FyZV9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogICov CiAKIGludCBpbnRlbF9scl9jb250ZXh0X2RlZmVycmVkX2FsbG9jKHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjdHgsCi0JCQkJICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCisJCQkJICAg IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gcmluZy0+ZGV2OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsK IAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iajsKIAl1aW50MzJfdCBjb250ZXh0 X3NpemU7CiAJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWY7CiAJaW50IHJldDsKIAog CVdBUk5fT04oY3R4LT5sZWdhY3lfaHdfY3R4LnJjc19zdGF0ZSAhPSBOVUxMKTsKLQlXQVJOX09O KGN0eC0+ZW5naW5lW3JpbmctPmlkXS5zdGF0ZSk7CisJV0FSTl9PTihjdHgtPmVuZ2luZVtlbmdp bmUtPmlkXS5zdGF0ZSk7CiAKLQljb250ZXh0X3NpemUgPSByb3VuZF91cChpbnRlbF9scl9jb250 ZXh0X3NpemUocmluZyksIDQwOTYpOworCWNvbnRleHRfc2l6ZSA9IHJvdW5kX3VwKGludGVsX2xy X2NvbnRleHRfc2l6ZShlbmdpbmUpLCA0MDk2KTsKIAogCS8qIE9uZSBleHRyYSBwYWdlIGFzIHRo ZSBzaGFyaW5nIGRhdGEgYmV0d2VlbiBkcml2ZXIgYW5kIEd1QyAqLwogCWNvbnRleHRfc2l6ZSAr PSBQQUdFX1NJWkUgKiBMUkNfUFBIV1NQX1BOOwpAQCAtMjU5MiwzMiArMjYyMiwzMiBAQCBpbnQg aW50ZWxfbHJfY29udGV4dF9kZWZlcnJlZF9hbGxvYyhzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4 LAogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAKLQlyaW5nYnVmID0gaW50ZWxfZW5naW5lX2NyZWF0 ZV9yaW5nYnVmZmVyKHJpbmcsIDQgKiBQQUdFX1NJWkUpOworCXJpbmdidWYgPSBpbnRlbF9lbmdp bmVfY3JlYXRlX3JpbmdidWZmZXIoZW5naW5lLCA0ICogUEFHRV9TSVpFKTsKIAlpZiAoSVNfRVJS KHJpbmdidWYpKSB7CiAJCXJldCA9IFBUUl9FUlIocmluZ2J1Zik7CiAJCWdvdG8gZXJyb3JfZGVy ZWZfb2JqOwogCX0KIAotCXJldCA9IHBvcHVsYXRlX2xyX2NvbnRleHQoY3R4LCBjdHhfb2JqLCBy aW5nLCByaW5nYnVmKTsKKwlyZXQgPSBwb3B1bGF0ZV9scl9jb250ZXh0KGN0eCwgY3R4X29iaiwg ZW5naW5lLCByaW5nYnVmKTsKIAlpZiAocmV0KSB7CiAJCURSTV9ERUJVR19EUklWRVIoIkZhaWxl ZCB0byBwb3B1bGF0ZSBMUkM6ICVkXG4iLCByZXQpOwogCQlnb3RvIGVycm9yX3JpbmdidWY7CiAJ fQogCi0JY3R4LT5lbmdpbmVbcmluZy0+aWRdLnJpbmdidWYgPSByaW5nYnVmOwotCWN0eC0+ZW5n aW5lW3JpbmctPmlkXS5zdGF0ZSA9IGN0eF9vYmo7CisJY3R4LT5lbmdpbmVbZW5naW5lLT5pZF0u cmluZ2J1ZiA9IHJpbmdidWY7CisJY3R4LT5lbmdpbmVbZW5naW5lLT5pZF0uc3RhdGUgPSBjdHhf b2JqOwogCi0JaWYgKGN0eCAhPSBjdHgtPmk5MTUtPmtlcm5lbF9jb250ZXh0ICYmIHJpbmctPmlu aXRfY29udGV4dCkgeworCWlmIChjdHggIT0gY3R4LT5pOTE1LT5rZXJuZWxfY29udGV4dCAmJiBl bmdpbmUtPmluaXRfY29udGV4dCkgewogCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cTsKIAotCQlyZXEgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHJpbmcsIGN0eCk7CisJCXJlcSA9 IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MoZW5naW5lLCBjdHgpOwogCQlpZiAoSVNfRVJSKHJlcSkp IHsKIAkJCXJldCA9IFBUUl9FUlIocmVxKTsKIAkJCURSTV9FUlJPUigicmluZyBjcmVhdGUgcmVx OiAlZFxuIiwgcmV0KTsKIAkJCWdvdG8gZXJyb3JfcmluZ2J1ZjsKIAkJfQogCi0JCXJldCA9IHJp bmctPmluaXRfY29udGV4dChyZXEpOworCQlyZXQgPSBlbmdpbmUtPmluaXRfY29udGV4dChyZXEp OwogCQlpZiAocmV0KSB7CiAJCQlEUk1fRVJST1IoInJpbmcgaW5pdCBjb250ZXh0OiAlZFxuIiwK IAkJCQlyZXQpOwpAQCAtMjYzMiw4ICsyNjYyLDggQEAgZXJyb3JfcmluZ2J1ZjoKIAlpbnRlbF9y aW5nYnVmZmVyX2ZyZWUocmluZ2J1Zik7CiBlcnJvcl9kZXJlZl9vYmo6CiAJZHJtX2dlbV9vYmpl Y3RfdW5yZWZlcmVuY2UoJmN0eF9vYmotPmJhc2UpOwotCWN0eC0+ZW5naW5lW3JpbmctPmlkXS5y aW5nYnVmID0gTlVMTDsKLQljdHgtPmVuZ2luZVtyaW5nLT5pZF0uc3RhdGUgPSBOVUxMOworCWN0 eC0+ZW5naW5lW2VuZ2luZS0+aWRdLnJpbmdidWYgPSBOVUxMOworCWN0eC0+ZW5naW5lW2VuZ2lu ZS0+aWRdLnN0YXRlID0gTlVMTDsKIAlyZXR1cm4gcmV0OwogfQogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5oCmluZGV4IGU2Y2RhM2UyMjVkMC4uYTE3Y2IxMjIyMWJhIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuaApAQCAtNTcsOCArNTcsOCBAQAogLyogTG9naWNhbCBSaW5ncyAqLwogaW50IGlu dGVsX2xvZ2ljYWxfcmluZ19hbGxvY19yZXF1ZXN0X2V4dHJhcyhzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcXVlc3QpOwogaW50IGludGVsX2xvZ2ljYWxfcmluZ19yZXNlcnZlX3NwYWNl KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCk7Ci12b2lkIGludGVsX2xvZ2lj YWxfcmluZ19zdG9wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwotdm9pZCBpbnRlbF9s b2dpY2FsX3JpbmdfY2xlYW51cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKK3ZvaWQg aW50ZWxfbG9naWNhbF9yaW5nX3N0b3Aoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsK K3ZvaWQgaW50ZWxfbG9naWNhbF9yaW5nX2NsZWFudXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKTsKIGludCBpbnRlbF9sb2dpY2FsX3JpbmdzX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldik7CiBpbnQgaW50ZWxfbG9naWNhbF9yaW5nX2JlZ2luKHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxLCBpbnQgbnVtX2R3b3Jkcyk7CiAKQEAgLTk4LDE4ICs5OCwxOCBAQCBzdGF0 aWMgaW5saW5lIHZvaWQgaW50ZWxfbG9naWNhbF9yaW5nX2VtaXRfcmVnKHN0cnVjdCBpbnRlbF9y aW5nYnVmZmVyICpyaW5nYnVmLAogI2RlZmluZSBMUkNfU1RBVEVfUE4JKExSQ19QUEhXU1BfUE4g KyAxKQogCiB2b2lkIGludGVsX2xyX2NvbnRleHRfZnJlZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y3R4KTsKLXVpbnQzMl90IGludGVsX2xyX2NvbnRleHRfc2l6ZShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpyaW5nKTsKK3VpbnQzMl90IGludGVsX2xyX2NvbnRleHRfc2l6ZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpOwogaW50IGludGVsX2xyX2NvbnRleHRfZGVmZXJyZWRfYWxsb2Mo c3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKLQkJCQkgICAgc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZyk7CisJCQkJICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiB2b2lk IGludGVsX2xyX2NvbnRleHRfdW5waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKIAkJCSAg ICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogdm9pZCBpbnRlbF9scl9jb250ZXh0 X3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y3R4KTsKIHVpbnQ2NF90IGludGVsX2xyX2NvbnRleHRfZGVzY3JpcHRvcihzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY3R4LAotCQkJCSAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyk7CisJ CQkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogCiB1MzIgaW50ZWxfZXhl Y2xpc3RzX2N0eF9pZChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAotCQkJICAgc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZyk7CisJCQkgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpOwogCiAvKiBFeGVjbGlzdHMgKi8KIGludCBpbnRlbF9zYW5pdGl6ZV9lbmFibGVfZXhlY2xp c3RzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBlbmFibGVfZXhlY2xpc3RzKTsKQEAgLTEx OCw3ICsxMTgsNyBAQCBpbnQgaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24oc3RydWN0IGk5MTVf ZXhlY2J1ZmZlcl9wYXJhbXMgKnBhcmFtcywKIAkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2V4ZWNidWZmZXIyICphcmdzLAogCQkJICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnZtYXMpOwog Ci12b2lkIGludGVsX2xyY19pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n KTsKLXZvaWQgaW50ZWxfZXhlY2xpc3RzX3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nKTsKK3ZvaWQgaW50ZWxfbHJjX2lycV9oYW5kbGVyKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSk7Cit2b2lkIGludGVsX2V4ZWNsaXN0c19yZXRpcmVfcmVxdWVzdHMo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIAogI2VuZGlmIC8qIF9JTlRFTF9MUkNf SF8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwppbmRleCA2ODg3NzNh YWE1ZTUuLjUzMjM3NjE2Y2UxOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuYwpAQCAtNTksMTkgKzU5LDE5IEBAIGludCBpbnRlbF9yaW5nX3NwYWNlKHN0cnVjdCBpbnRl bF9yaW5nYnVmZmVyICpyaW5nYnVmKQogCXJldHVybiByaW5nYnVmLT5zcGFjZTsKIH0KIAotYm9v bCBpbnRlbF9yaW5nX3N0b3BwZWQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKK2Jvb2wg aW50ZWxfcmluZ19zdG9wcGVkKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByaW5nLT5kZXYtPmRldl9wcml2YXRl OwotCXJldHVybiBkZXZfcHJpdi0+Z3B1X2Vycm9yLnN0b3BfcmluZ3MgJiBpbnRlbF9yaW5nX2Zs YWcocmluZyk7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5k ZXYtPmRldl9wcml2YXRlOworCXJldHVybiBkZXZfcHJpdi0+Z3B1X2Vycm9yLnN0b3BfcmluZ3Mg JiBpbnRlbF9yaW5nX2ZsYWcoZW5naW5lKTsKIH0KIAotc3RhdGljIHZvaWQgX19pbnRlbF9yaW5n X2FkdmFuY2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKK3N0YXRpYyB2b2lkIF9faW50 ZWxfcmluZ19hZHZhbmNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlzdHJ1 Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJpbmctPmJ1ZmZlcjsKKwlzdHJ1Y3QgaW50 ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IGVuZ2luZS0+YnVmZmVyOwogCXJpbmdidWYtPnRhaWwg Jj0gcmluZ2J1Zi0+c2l6ZSAtIDE7Ci0JaWYgKGludGVsX3Jpbmdfc3RvcHBlZChyaW5nKSkKKwlp ZiAoaW50ZWxfcmluZ19zdG9wcGVkKGVuZ2luZSkpCiAJCXJldHVybjsKLQlyaW5nLT53cml0ZV90 YWlsKHJpbmcsIHJpbmdidWYtPnRhaWwpOworCWVuZ2luZS0+d3JpdGVfdGFpbChlbmdpbmUsIHJp bmdidWYtPnRhaWwpOwogfQogCiBzdGF0aWMgaW50CkBAIC00MjksNTEgKzQyOSw1MSBAQCBnZW44 X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCXJl dHVybiBnZW44X2VtaXRfcGlwZV9jb250cm9sKHJlcSwgZmxhZ3MsIHNjcmF0Y2hfYWRkcik7CiB9 CiAKLXN0YXRpYyB2b2lkIHJpbmdfd3JpdGVfdGFpbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpy aW5nLAorc3RhdGljIHZvaWQgcmluZ193cml0ZV90YWlsKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwKIAkJCSAgICB1MzIgdmFsdWUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gcmluZy0+ZGV2LT5kZXZfcHJpdmF0ZTsKLQlJOTE1X1dSSVRFX1RBSUwocmlu ZywgdmFsdWUpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+ ZGV2LT5kZXZfcHJpdmF0ZTsKKwlJOTE1X1dSSVRFX1RBSUwoZW5naW5lLCB2YWx1ZSk7CiB9CiAK LXU2NCBpbnRlbF9yaW5nX2dldF9hY3RpdmVfaGVhZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpy aW5nKQordTY0IGludGVsX3JpbmdfZ2V0X2FjdGl2ZV9oZWFkKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByaW5n LT5kZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGVuZ2luZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKIAl1NjQgYWN0aGQ7CiAKLQlpZiAoSU5URUxfSU5G TyhyaW5nLT5kZXYpLT5nZW4gPj0gOCkKLQkJYWN0aGQgPSBJOTE1X1JFQUQ2NF8yeDMyKFJJTkdf QUNUSEQocmluZy0+bW1pb19iYXNlKSwKLQkJCQkJIFJJTkdfQUNUSERfVURXKHJpbmctPm1taW9f YmFzZSkpOwotCWVsc2UgaWYgKElOVEVMX0lORk8ocmluZy0+ZGV2KS0+Z2VuID49IDQpCi0JCWFj dGhkID0gSTkxNV9SRUFEKFJJTkdfQUNUSEQocmluZy0+bW1pb19iYXNlKSk7CisJaWYgKElOVEVM X0lORk8oZW5naW5lLT5kZXYpLT5nZW4gPj0gOCkKKwkJYWN0aGQgPSBJOTE1X1JFQUQ2NF8yeDMy KFJJTkdfQUNUSEQoZW5naW5lLT5tbWlvX2Jhc2UpLAorCQkJCQkgUklOR19BQ1RIRF9VRFcoZW5n aW5lLT5tbWlvX2Jhc2UpKTsKKwllbHNlIGlmIChJTlRFTF9JTkZPKGVuZ2luZS0+ZGV2KS0+Z2Vu ID49IDQpCisJCWFjdGhkID0gSTkxNV9SRUFEKFJJTkdfQUNUSEQoZW5naW5lLT5tbWlvX2Jhc2Up KTsKIAllbHNlCiAJCWFjdGhkID0gSTkxNV9SRUFEKEFDVEhEKTsKIAogCXJldHVybiBhY3RoZDsK IH0KIAotc3RhdGljIHZvaWQgcmluZ19zZXR1cF9waHlzX3N0YXR1c19wYWdlKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKnJpbmcpCitzdGF0aWMgdm9pZCByaW5nX3NldHVwX3BoeXNfc3RhdHVzX3Bh Z2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5kZXYtPmRldl9wcml2YXRlOwogCXUzMiBh ZGRyOwogCiAJYWRkciA9IGRldl9wcml2LT5zdGF0dXNfcGFnZV9kbWFoLT5idXNhZGRyOwotCWlm IChJTlRFTF9JTkZPKHJpbmctPmRldiktPmdlbiA+PSA0KQorCWlmIChJTlRFTF9JTkZPKGVuZ2lu ZS0+ZGV2KS0+Z2VuID49IDQpCiAJCWFkZHIgfD0gKGRldl9wcml2LT5zdGF0dXNfcGFnZV9kbWFo LT5idXNhZGRyID4+IDI4KSAmIDB4ZjA7CiAJSTkxNV9XUklURShIV1NfUEdBLCBhZGRyKTsKIH0K IAotc3RhdGljIHZvaWQgaW50ZWxfcmluZ19zZXR1cF9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nKQorc3RhdGljIHZvaWQgaW50ZWxfcmluZ19zZXR1cF9zdGF0dXNfcGFn ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IHJpbmctPmRldjsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBy aW5nLT5kZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUt PmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmRldi0+ ZGV2X3ByaXZhdGU7CiAJaTkxNV9yZWdfdCBtbWlvOwogCiAJLyogVGhlIHJpbmcgc3RhdHVzIHBh Z2UgYWRkcmVzc2VzIGFyZSBubyBsb25nZXIgbmV4dCB0byB0aGUgcmVzdCBvZgogCSAqIHRoZSBy aW5nIHJlZ2lzdGVycyBhcyBvZiBnZW43LgogCSAqLwogCWlmIChJU19HRU43KGRldikpIHsKLQkJ c3dpdGNoIChyaW5nLT5pZCkgeworCQlzd2l0Y2ggKGVuZ2luZS0+aWQpIHsKIAkJY2FzZSBSQ1M6 CiAJCQltbWlvID0gUkVOREVSX0hXU19QR0FfR0VONzsKIAkJCWJyZWFrOwpAQCAtNDkyLDE0ICs0 OTIsMTQgQEAgc3RhdGljIHZvaWQgaW50ZWxfcmluZ19zZXR1cF9zdGF0dXNfcGFnZShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nKQogCQkJbW1pbyA9IFZFQk9YX0hXU19QR0FfR0VONzsKIAkJ CWJyZWFrOwogCQl9Ci0JfSBlbHNlIGlmIChJU19HRU42KHJpbmctPmRldikpIHsKLQkJbW1pbyA9 IFJJTkdfSFdTX1BHQV9HRU42KHJpbmctPm1taW9fYmFzZSk7CisJfSBlbHNlIGlmIChJU19HRU42 KGVuZ2luZS0+ZGV2KSkgeworCQltbWlvID0gUklOR19IV1NfUEdBX0dFTjYoZW5naW5lLT5tbWlv X2Jhc2UpOwogCX0gZWxzZSB7CiAJCS8qIFhYWDogZ2VuOCByZXR1cm5zIHRvIHNhbml0eSAqLwot CQltbWlvID0gUklOR19IV1NfUEdBKHJpbmctPm1taW9fYmFzZSk7CisJCW1taW8gPSBSSU5HX0hX U19QR0EoZW5naW5lLT5tbWlvX2Jhc2UpOwogCX0KIAotCUk5MTVfV1JJVEUobW1pbywgKHUzMily aW5nLT5zdGF0dXNfcGFnZS5nZnhfYWRkcik7CisJSTkxNV9XUklURShtbWlvLCAodTMyKWVuZ2lu ZS0+c3RhdHVzX3BhZ2UuZ2Z4X2FkZHIpOwogCVBPU1RJTkdfUkVBRChtbWlvKTsKIAogCS8qCkBA IC01MTAsMTAgKzUxMCwxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9yaW5nX3NldHVwX3N0YXR1c19w YWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiAJICogaW52YWxpZGF0aW5nIHRoZSBU TEI/CiAJICovCiAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYgJiYgSU5URUxfSU5GTyhk ZXYpLT5nZW4gPCA4KSB7Ci0JCWk5MTVfcmVnX3QgcmVnID0gUklOR19JTlNUUE0ocmluZy0+bW1p b19iYXNlKTsKKwkJaTkxNV9yZWdfdCByZWcgPSBSSU5HX0lOU1RQTShlbmdpbmUtPm1taW9fYmFz ZSk7CiAKIAkJLyogcmluZyBzaG91bGQgYmUgaWRsZSBiZWZvcmUgaXNzdWluZyBhIHN5bmMgZmx1 c2gqLwotCQlXQVJOX09OKChJOTE1X1JFQURfTU9ERShyaW5nKSAmIE1PREVfSURMRSkgPT0gMCk7 CisJCVdBUk5fT04oKEk5MTVfUkVBRF9NT0RFKGVuZ2luZSkgJiBNT0RFX0lETEUpID09IDApOwog CiAJCUk5MTVfV1JJVEUocmVnLAogCQkJICAgX01BU0tFRF9CSVRfRU5BQkxFKElOU1RQTV9UTEJf SU5WQUxJREFURSB8CkBAIC01MjEsMTE3ICs1MjEsMTIwIEBAIHN0YXRpYyB2b2lkIGludGVsX3Jp bmdfc2V0dXBfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKIAkJaWYg KHdhaXRfZm9yKChJOTE1X1JFQUQocmVnKSAmIElOU1RQTV9TWU5DX0ZMVVNIKSA9PSAwLAogCQkJ ICAgICAxMDAwKSkKIAkJCURSTV9FUlJPUigiJXM6IHdhaXQgZm9yIFN5bmNGbHVzaCB0byBjb21w bGV0ZSBmb3IgVExCIGludmFsaWRhdGlvbiB0aW1lZCBvdXRcbiIsCi0JCQkJICByaW5nLT5uYW1l KTsKKwkJCQkgIGVuZ2luZS0+bmFtZSk7CiAJfQogfQogCi1zdGF0aWMgYm9vbCBzdG9wX3Jpbmco c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKK3N0YXRpYyBib29sIHN0b3BfcmluZyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShyaW5nLT5kZXYpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5naW5lLT5kZXYpOwogCi0JaWYgKCFJU19HRU4yKHJpbmct PmRldikpIHsKLQkJSTkxNV9XUklURV9NT0RFKHJpbmcsIF9NQVNLRURfQklUX0VOQUJMRShTVE9Q X1JJTkcpKTsKLQkJaWYgKHdhaXRfZm9yKChJOTE1X1JFQURfTU9ERShyaW5nKSAmIE1PREVfSURM RSkgIT0gMCwgMTAwMCkpIHsKLQkJCURSTV9FUlJPUigiJXMgOiB0aW1lZCBvdXQgdHJ5aW5nIHRv IHN0b3AgcmluZ1xuIiwgcmluZy0+bmFtZSk7CisJaWYgKCFJU19HRU4yKGVuZ2luZS0+ZGV2KSkg eworCQlJOTE1X1dSSVRFX01PREUoZW5naW5lLCBfTUFTS0VEX0JJVF9FTkFCTEUoU1RPUF9SSU5H KSk7CisJCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEX01PREUoZW5naW5lKSAmIE1PREVfSURMRSkg IT0gMCwgMTAwMCkpIHsKKwkJCURSTV9FUlJPUigiJXMgOiB0aW1lZCBvdXQgdHJ5aW5nIHRvIHN0 b3AgcmluZ1xuIiwKKwkJCQkgIGVuZ2luZS0+bmFtZSk7CiAJCQkvKiBTb21ldGltZXMgd2Ugb2Jz ZXJ2ZSB0aGF0IHRoZSBpZGxlIGZsYWcgaXMgbm90CiAJCQkgKiBzZXQgZXZlbiB0aG91Z2ggdGhl IHJpbmcgaXMgZW1wdHkuIFNvIGRvdWJsZQogCQkJICogY2hlY2sgYmVmb3JlIGdpdmluZyB1cC4K IAkJCSAqLwotCQkJaWYgKEk5MTVfUkVBRF9IRUFEKHJpbmcpICE9IEk5MTVfUkVBRF9UQUlMKHJp bmcpKQorCQkJaWYgKEk5MTVfUkVBRF9IRUFEKGVuZ2luZSkgIT0gSTkxNV9SRUFEX1RBSUwoZW5n aW5lKSkKIAkJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIAl9CiAKLQlJOTE1X1dSSVRFX0NUTChyaW5n LCAwKTsKLQlJOTE1X1dSSVRFX0hFQUQocmluZywgMCk7Ci0JcmluZy0+d3JpdGVfdGFpbChyaW5n LCAwKTsKKwlJOTE1X1dSSVRFX0NUTChlbmdpbmUsIDApOworCUk5MTVfV1JJVEVfSEVBRChlbmdp bmUsIDApOworCWVuZ2luZS0+d3JpdGVfdGFpbChlbmdpbmUsIDApOwogCi0JaWYgKCFJU19HRU4y KHJpbmctPmRldikpIHsKLQkJKHZvaWQpSTkxNV9SRUFEX0NUTChyaW5nKTsKLQkJSTkxNV9XUklU RV9NT0RFKHJpbmcsIF9NQVNLRURfQklUX0RJU0FCTEUoU1RPUF9SSU5HKSk7CisJaWYgKCFJU19H RU4yKGVuZ2luZS0+ZGV2KSkgeworCQkodm9pZClJOTE1X1JFQURfQ1RMKGVuZ2luZSk7CisJCUk5 MTVfV1JJVEVfTU9ERShlbmdpbmUsIF9NQVNLRURfQklUX0RJU0FCTEUoU1RPUF9SSU5HKSk7CiAJ fQogCi0JcmV0dXJuIChJOTE1X1JFQURfSEVBRChyaW5nKSAmIEhFQURfQUREUikgPT0gMDsKKwly ZXR1cm4gKEk5MTVfUkVBRF9IRUFEKGVuZ2luZSkgJiBIRUFEX0FERFIpID09IDA7CiB9CiAKLXN0 YXRpYyBpbnQgaW5pdF9yaW5nX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQor c3RhdGljIGludCBpbml0X3JpbmdfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ZGV2OworCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5n YnVmID0gcmluZy0+YnVmZmVyOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0g ZW5naW5lLT5idWZmZXI7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHJpbmdi dWYtPm9iajsKIAlpbnQgcmV0ID0gMDsKIAogCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRl dl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKIAotCWlmICghc3RvcF9yaW5nKHJpbmcpKSB7CisJaWYg KCFzdG9wX3JpbmcoZW5naW5lKSkgewogCQkvKiBHNDUgcmluZyBpbml0aWFsaXphdGlvbiBvZnRl biBmYWlscyB0byByZXNldCBoZWFkIHRvIHplcm8gKi8KIAkJRFJNX0RFQlVHX0tNUygiJXMgaGVh ZCBub3QgcmVzZXQgdG8gemVybyAiCiAJCQkgICAgICAiY3RsICUwOHggaGVhZCAlMDh4IHRhaWwg JTA4eCBzdGFydCAlMDh4XG4iLAotCQkJICAgICAgcmluZy0+bmFtZSwKLQkJCSAgICAgIEk5MTVf UkVBRF9DVEwocmluZyksCi0JCQkgICAgICBJOTE1X1JFQURfSEVBRChyaW5nKSwKLQkJCSAgICAg IEk5MTVfUkVBRF9UQUlMKHJpbmcpLAotCQkJICAgICAgSTkxNV9SRUFEX1NUQVJUKHJpbmcpKTsK KwkJCSAgICAgIGVuZ2luZS0+bmFtZSwKKwkJCSAgICAgIEk5MTVfUkVBRF9DVEwoZW5naW5lKSwK KwkJCSAgICAgIEk5MTVfUkVBRF9IRUFEKGVuZ2luZSksCisJCQkgICAgICBJOTE1X1JFQURfVEFJ TChlbmdpbmUpLAorCQkJICAgICAgSTkxNV9SRUFEX1NUQVJUKGVuZ2luZSkpOwogCi0JCWlmICgh c3RvcF9yaW5nKHJpbmcpKSB7CisJCWlmICghc3RvcF9yaW5nKGVuZ2luZSkpIHsKIAkJCURSTV9F UlJPUigiZmFpbGVkIHRvIHNldCAlcyBoZWFkIHRvIHplcm8gIgogCQkJCSAgImN0bCAlMDh4IGhl YWQgJTA4eCB0YWlsICUwOHggc3RhcnQgJTA4eFxuIiwKLQkJCQkgIHJpbmctPm5hbWUsCi0JCQkJ ICBJOTE1X1JFQURfQ1RMKHJpbmcpLAotCQkJCSAgSTkxNV9SRUFEX0hFQUQocmluZyksCi0JCQkJ ICBJOTE1X1JFQURfVEFJTChyaW5nKSwKLQkJCQkgIEk5MTVfUkVBRF9TVEFSVChyaW5nKSk7CisJ CQkJICBlbmdpbmUtPm5hbWUsCisJCQkJICBJOTE1X1JFQURfQ1RMKGVuZ2luZSksCisJCQkJICBJ OTE1X1JFQURfSEVBRChlbmdpbmUpLAorCQkJCSAgSTkxNV9SRUFEX1RBSUwoZW5naW5lKSwKKwkJ CQkgIEk5MTVfUkVBRF9TVEFSVChlbmdpbmUpKTsKIAkJCXJldCA9IC1FSU87CiAJCQlnb3RvIG91 dDsKIAkJfQogCX0KIAogCWlmIChJOTE1X05FRURfR0ZYX0hXUyhkZXYpKQotCQlpbnRlbF9yaW5n X3NldHVwX3N0YXR1c19wYWdlKHJpbmcpOworCQlpbnRlbF9yaW5nX3NldHVwX3N0YXR1c19wYWdl KGVuZ2luZSk7CiAJZWxzZQotCQlyaW5nX3NldHVwX3BoeXNfc3RhdHVzX3BhZ2UocmluZyk7CisJ CXJpbmdfc2V0dXBfcGh5c19zdGF0dXNfcGFnZShlbmdpbmUpOwogCiAJLyogRW5mb3JjZSBvcmRl cmluZyBieSByZWFkaW5nIEhFQUQgcmVnaXN0ZXIgYmFjayAqLwotCUk5MTVfUkVBRF9IRUFEKHJp bmcpOworCUk5MTVfUkVBRF9IRUFEKGVuZ2luZSk7CiAKIAkvKiBJbml0aWFsaXplIHRoZSByaW5n LiBUaGlzIG11c3QgaGFwcGVuIF9hZnRlcl8gd2UndmUgY2xlYXJlZCB0aGUgcmluZwogCSAqIHJl Z2lzdGVycyB3aXRoIHRoZSBhYm92ZSBzZXF1ZW5jZSAodGhlIHJlYWRiYWNrIG9mIHRoZSBIRUFE IHJlZ2lzdGVycwogCSAqIGFsc28gZW5mb3JjZXMgb3JkZXJpbmcpLCBvdGhlcndpc2UgdGhlIGh3 IG1pZ2h0IGxvc2UgdGhlIG5ldyByaW5nCiAJICogcmVnaXN0ZXIgdmFsdWVzLiAqLwotCUk5MTVf V1JJVEVfU1RBUlQocmluZywgaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9iaikpOworCUk5MTVf V1JJVEVfU1RBUlQoZW5naW5lLCBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSk7CiAKIAkv KiBXYUNsZWFyUmluZ0J1ZkhlYWRSZWdBdEluaXQ6Y3RnLGVsayAqLwotCWlmIChJOTE1X1JFQURf SEVBRChyaW5nKSkKKwlpZiAoSTkxNV9SRUFEX0hFQUQoZW5naW5lKSkKIAkJRFJNX0RFQlVHKCIl cyBpbml0aWFsaXphdGlvbiBmYWlsZWQgW2hlYWQ9JTA4eF0sIGZ1ZGdpbmdcbiIsCi0JCQkgIHJp bmctPm5hbWUsIEk5MTVfUkVBRF9IRUFEKHJpbmcpKTsKLQlJOTE1X1dSSVRFX0hFQUQocmluZywg MCk7Ci0JKHZvaWQpSTkxNV9SRUFEX0hFQUQocmluZyk7CisJCQkgIGVuZ2luZS0+bmFtZSwgSTkx NV9SRUFEX0hFQUQoZW5naW5lKSk7CisJSTkxNV9XUklURV9IRUFEKGVuZ2luZSwgMCk7CisJKHZv aWQpSTkxNV9SRUFEX0hFQUQoZW5naW5lKTsKIAotCUk5MTVfV1JJVEVfQ1RMKHJpbmcsCisJSTkx NV9XUklURV9DVEwoZW5naW5lLAogCQkJKChyaW5nYnVmLT5zaXplIC0gUEFHRV9TSVpFKSAmIFJJ TkdfTlJfUEFHRVMpCiAJCQl8IFJJTkdfVkFMSUQpOwogCiAJLyogSWYgdGhlIGhlYWQgaXMgc3Rp bGwgbm90IHplcm8sIHRoZSByaW5nIGlzIGRlYWQgKi8KLQlpZiAod2FpdF9mb3IoKEk5MTVfUkVB RF9DVEwocmluZykgJiBSSU5HX1ZBTElEKSAhPSAwICYmCi0JCSAgICAgSTkxNV9SRUFEX1NUQVJU KHJpbmcpID09IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChvYmopICYmCi0JCSAgICAgKEk5MTVf UkVBRF9IRUFEKHJpbmcpICYgSEVBRF9BRERSKSA9PSAwLCA1MCkpIHsKKwlpZiAod2FpdF9mb3Io KEk5MTVfUkVBRF9DVEwoZW5naW5lKSAmIFJJTkdfVkFMSUQpICE9IDAgJiYKKwkJICAgICBJOTE1 X1JFQURfU1RBUlQoZW5naW5lKSA9PSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSAmJgor CQkgICAgIChJOTE1X1JFQURfSEVBRChlbmdpbmUpICYgSEVBRF9BRERSKSA9PSAwLCA1MCkpIHsK IAkJRFJNX0VSUk9SKCIlcyBpbml0aWFsaXphdGlvbiBmYWlsZWQgIgogCQkJICAiY3RsICUwOHgg KHZhbGlkPyAlZCkgaGVhZCAlMDh4IHRhaWwgJTA4eCBzdGFydCAlMDh4IFtleHBlY3RlZCAlMDhs eF1cbiIsCi0JCQkgIHJpbmctPm5hbWUsCi0JCQkgIEk5MTVfUkVBRF9DVEwocmluZyksIEk5MTVf UkVBRF9DVEwocmluZykgJiBSSU5HX1ZBTElELAotCQkJICBJOTE1X1JFQURfSEVBRChyaW5nKSwg STkxNV9SRUFEX1RBSUwocmluZyksCi0JCQkgIEk5MTVfUkVBRF9TVEFSVChyaW5nKSwgKHVuc2ln bmVkIGxvbmcpaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9iaikpOworCQkJICBlbmdpbmUtPm5h bWUsCisJCQkgIEk5MTVfUkVBRF9DVEwoZW5naW5lKSwKKwkJCSAgSTkxNV9SRUFEX0NUTChlbmdp bmUpICYgUklOR19WQUxJRCwKKwkJCSAgSTkxNV9SRUFEX0hFQUQoZW5naW5lKSwgSTkxNV9SRUFE X1RBSUwoZW5naW5lKSwKKwkJCSAgSTkxNV9SRUFEX1NUQVJUKGVuZ2luZSksCisJCQkgICh1bnNp Z25lZCBsb25nKWk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChvYmopKTsKIAkJcmV0ID0gLUVJTzsK IAkJZ290byBvdXQ7CiAJfQogCiAJcmluZ2J1Zi0+bGFzdF9yZXRpcmVkX2hlYWQgPSAtMTsKLQly aW5nYnVmLT5oZWFkID0gSTkxNV9SRUFEX0hFQUQocmluZyk7Ci0JcmluZ2J1Zi0+dGFpbCA9IEk5 MTVfUkVBRF9UQUlMKHJpbmcpICYgVEFJTF9BRERSOworCXJpbmdidWYtPmhlYWQgPSBJOTE1X1JF QURfSEVBRChlbmdpbmUpOworCXJpbmdidWYtPnRhaWwgPSBJOTE1X1JFQURfVEFJTChlbmdpbmUp ICYgVEFJTF9BRERSOwogCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJpbmdidWYpOwogCi0JbWVt c2V0KCZyaW5nLT5oYW5nY2hlY2ssIDAsIHNpemVvZihyaW5nLT5oYW5nY2hlY2spKTsKKwltZW1z ZXQoJmVuZ2luZS0+aGFuZ2NoZWNrLCAwLCBzaXplb2YoZW5naW5lLT5oYW5nY2hlY2spKTsKIAog b3V0OgogCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxM KTsKQEAgLTY0MCw1OSArNjQzLDYwIEBAIG91dDoKIH0KIAogdm9pZAotaW50ZWxfZmluaV9waXBl X2NvbnRyb2woc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKK2ludGVsX2ZpbmlfcGlwZV9j b250cm9sKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gcmluZy0+ZGV2OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUt PmRldjsKIAotCWlmIChyaW5nLT5zY3JhdGNoLm9iaiA9PSBOVUxMKQorCWlmIChlbmdpbmUtPnNj cmF0Y2gub2JqID09IE5VTEwpCiAJCXJldHVybjsKIAogCWlmIChJTlRFTF9JTkZPKGRldiktPmdl biA+PSA1KSB7Ci0JCWt1bm1hcChzZ19wYWdlKHJpbmctPnNjcmF0Y2gub2JqLT5wYWdlcy0+c2ds KSk7Ci0JCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKHJpbmctPnNjcmF0Y2gub2JqKTsKKwkJ a3VubWFwKHNnX3BhZ2UoZW5naW5lLT5zY3JhdGNoLm9iai0+cGFnZXMtPnNnbCkpOworCQlpOTE1 X2dlbV9vYmplY3RfZ2d0dF91bnBpbihlbmdpbmUtPnNjcmF0Y2gub2JqKTsKIAl9CiAKLQlkcm1f Z2VtX29iamVjdF91bnJlZmVyZW5jZSgmcmluZy0+c2NyYXRjaC5vYmotPmJhc2UpOwotCXJpbmct PnNjcmF0Y2gub2JqID0gTlVMTDsKKwlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmZW5naW5l LT5zY3JhdGNoLm9iai0+YmFzZSk7CisJZW5naW5lLT5zY3JhdGNoLm9iaiA9IE5VTEw7CiB9CiAK IGludAotaW50ZWxfaW5pdF9waXBlX2NvbnRyb2woc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZykKK2ludGVsX2luaXRfcGlwZV9jb250cm9sKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKIHsKIAlpbnQgcmV0OwogCi0JV0FSTl9PTihyaW5nLT5zY3JhdGNoLm9iaik7CisJV0FSTl9P TihlbmdpbmUtPnNjcmF0Y2gub2JqKTsKIAotCXJpbmctPnNjcmF0Y2gub2JqID0gaTkxNV9nZW1f YWxsb2Nfb2JqZWN0KHJpbmctPmRldiwgNDA5Nik7Ci0JaWYgKHJpbmctPnNjcmF0Y2gub2JqID09 IE5VTEwpIHsKKwllbmdpbmUtPnNjcmF0Y2gub2JqID0gaTkxNV9nZW1fYWxsb2Nfb2JqZWN0KGVu Z2luZS0+ZGV2LCA0MDk2KTsKKwlpZiAoZW5naW5lLT5zY3JhdGNoLm9iaiA9PSBOVUxMKSB7CiAJ CURSTV9FUlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIHNlcW5vIHBhZ2VcbiIpOwogCQlyZXQgPSAt RU5PTUVNOwogCQlnb3RvIGVycjsKIAl9CiAKLQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X2Nh Y2hlX2xldmVsKHJpbmctPnNjcmF0Y2gub2JqLCBJOTE1X0NBQ0hFX0xMQyk7CisJcmV0ID0gaTkx NV9nZW1fb2JqZWN0X3NldF9jYWNoZV9sZXZlbChlbmdpbmUtPnNjcmF0Y2gub2JqLAorCQkJCQkg ICAgICBJOTE1X0NBQ0hFX0xMQyk7CiAJaWYgKHJldCkKIAkJZ290byBlcnJfdW5yZWY7CiAKLQly ZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4ocmluZy0+c2NyYXRjaC5vYmosIDQwOTYsIDApOwor CXJldCA9IGk5MTVfZ2VtX29ial9nZ3R0X3BpbihlbmdpbmUtPnNjcmF0Y2gub2JqLCA0MDk2LCAw KTsKIAlpZiAocmV0KQogCQlnb3RvIGVycl91bnJlZjsKIAotCXJpbmctPnNjcmF0Y2guZ3R0X29m ZnNldCA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChyaW5nLT5zY3JhdGNoLm9iaik7Ci0Jcmlu Zy0+c2NyYXRjaC5jcHVfcGFnZSA9IGttYXAoc2dfcGFnZShyaW5nLT5zY3JhdGNoLm9iai0+cGFn ZXMtPnNnbCkpOwotCWlmIChyaW5nLT5zY3JhdGNoLmNwdV9wYWdlID09IE5VTEwpIHsKKwllbmdp bmUtPnNjcmF0Y2guZ3R0X29mZnNldCA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChlbmdpbmUt PnNjcmF0Y2gub2JqKTsKKwllbmdpbmUtPnNjcmF0Y2guY3B1X3BhZ2UgPSBrbWFwKHNnX3BhZ2Uo ZW5naW5lLT5zY3JhdGNoLm9iai0+cGFnZXMtPnNnbCkpOworCWlmIChlbmdpbmUtPnNjcmF0Y2gu Y3B1X3BhZ2UgPT0gTlVMTCkgewogCQlyZXQgPSAtRU5PTUVNOwogCQlnb3RvIGVycl91bnBpbjsK IAl9CiAKIAlEUk1fREVCVUdfRFJJVkVSKCIlcyBwaXBlIGNvbnRyb2wgb2Zmc2V0OiAweCUwOHhc biIsCi0JCQkgcmluZy0+bmFtZSwgcmluZy0+c2NyYXRjaC5ndHRfb2Zmc2V0KTsKKwkJCSBlbmdp bmUtPm5hbWUsIGVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0KTsKIAlyZXR1cm4gMDsKIAogZXJy X3VucGluOgotCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKHJpbmctPnNjcmF0Y2gub2JqKTsK KwlpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihlbmdpbmUtPnNjcmF0Y2gub2JqKTsKIGVycl91 bnJlZjoKLQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmcmluZy0+c2NyYXRjaC5vYmotPmJh c2UpOworCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZlbmdpbmUtPnNjcmF0Y2gub2JqLT5i YXNlKTsKIGVycjoKIAlyZXR1cm4gcmV0OwogfQpAQCAtNzg5LDI1ICs3OTMsMjYgQEAgc3RhdGlj IGludCB3YV9hZGQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiAjZGVmaW5l IFdBX1dSSVRFKGFkZHIsIHZhbCkgV0FfUkVHKGFkZHIsIDB4ZmZmZmZmZmYsIHZhbCkKIAotc3Rh dGljIGludCB3YV9yaW5nX3doaXRlbGlzdF9yZWcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZywgaTkxNV9yZWdfdCByZWcpCitzdGF0aWMgaW50IHdhX3Jpbmdfd2hpdGVsaXN0X3JlZyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkJIGk5MTVfcmVnX3QgcmVnKQogewotCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7 CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5kZXYtPmRldl9w cml2YXRlOwogCXN0cnVjdCBpOTE1X3dvcmthcm91bmRzICp3YSA9ICZkZXZfcHJpdi0+d29ya2Fy b3VuZHM7Ci0JY29uc3QgdWludDMyX3QgaW5kZXggPSB3YS0+aHdfd2hpdGVsaXN0X2NvdW50W3Jp bmctPmlkXTsKKwljb25zdCB1aW50MzJfdCBpbmRleCA9IHdhLT5od193aGl0ZWxpc3RfY291bnRb ZW5naW5lLT5pZF07CiAKIAlpZiAoV0FSTl9PTihpbmRleCA+PSBSSU5HX01BWF9OT05QUklWX1NM T1RTKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlXQV9XUklURShSSU5HX0ZPUkNFX1RPX05PTlBS SVYocmluZy0+bW1pb19iYXNlLCBpbmRleCksCisJV0FfV1JJVEUoUklOR19GT1JDRV9UT19OT05Q UklWKGVuZ2luZS0+bW1pb19iYXNlLCBpbmRleCksCiAJCSBpOTE1X21taW9fcmVnX29mZnNldChy ZWcpKTsKLQl3YS0+aHdfd2hpdGVsaXN0X2NvdW50W3JpbmctPmlkXSsrOworCXdhLT5od193aGl0 ZWxpc3RfY291bnRbZW5naW5lLT5pZF0rKzsKIAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50 IGdlbjhfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQorc3Rh dGljIGludCBnZW44X2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7CisJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAKIAlXQV9TRVRfQklUX01BU0tFRChJTlNUUE0s IElOU1RQTV9GT1JDRV9PUkRFUklORyk7CkBAIC04NTcsMTMgKzg2MiwxMyBAQCBzdGF0aWMgaW50 IGdlbjhfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogCXJl dHVybiAwOwogfQogCi1zdGF0aWMgaW50IGJkd19pbml0X3dvcmthcm91bmRzKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKnJpbmcpCitzdGF0aWMgaW50IGJkd19pbml0X3dvcmthcm91bmRzKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlpbnQgcmV0OwotCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSByaW5nLT5kZXY7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7CiAKLQlyZXQgPSBnZW44X2luaXRfd29ya2Fyb3VuZHMocmluZyk7CisJcmV0ID0gZ2VuOF9p bml0X3dvcmthcm91bmRzKGVuZ2luZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAt ODg2LDEzICs4OTEsMTMgQEAgc3RhdGljIGludCBiZHdfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGNodl9p bml0X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCitzdGF0aWMgaW50 IGNodl9pbml0X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsK IAlpbnQgcmV0OwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7CisJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAKLQlyZXQgPSBnZW44X2luaXRfd29ya2Fy b3VuZHMocmluZyk7CisJcmV0ID0gZ2VuOF9pbml0X3dvcmthcm91bmRzKGVuZ2luZSk7CiAJaWYg KHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtOTA1LDkgKzkxMCw5IEBAIHN0YXRpYyBpbnQgY2h2 X2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKIAlyZXR1cm4g MDsKIH0KIAotc3RhdGljIGludCBnZW45X2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZykKK3N0YXRpYyBpbnQgZ2VuOV9pbml0X3dvcmthcm91bmRzKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcmlu Zy0+ZGV2OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXVpbnQzMl90 IHRtcDsKIAlpbnQgcmV0OwpAQCAtOTg2LDIxICs5OTEsMjEgQEAgc3RhdGljIGludCBnZW45X2lu aXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKIAkJCQkgICAgR0VO OF9MUVNDX0ZMVVNIX0NPSEVSRU5UX0xJTkVTKSk7CiAKIAkvKiBXYUVuYWJsZVByZWVtcHRpb25H cmFudWxhcml0eUNvbnRyb2xCeVVNRDpza2wsYnh0ICovCi0JcmV0PSB3YV9yaW5nX3doaXRlbGlz dF9yZWcocmluZywgR0VOOF9DU19DSElDS0VOMSk7CisJcmV0PSB3YV9yaW5nX3doaXRlbGlzdF9y ZWcoZW5naW5lLCBHRU44X0NTX0NISUNLRU4xKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0Owog CiAJLyogV2FBbGxvd1VNRFRvTW9kaWZ5SERDQ2hpY2tlbjE6c2tsLGJ4dCAqLwotCXJldCA9IHdh X3Jpbmdfd2hpdGVsaXN0X3JlZyhyaW5nLCBHRU44X0hEQ19DSElDS0VOMSk7CisJcmV0ID0gd2Ff cmluZ193aGl0ZWxpc3RfcmVnKGVuZ2luZSwgR0VOOF9IRENfQ0hJQ0tFTjEpOwogCWlmIChyZXQp CiAJCXJldHVybiByZXQ7CiAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBza2xfdHVuZV9p el9oYXNoaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCitzdGF0aWMgaW50IHNrbF90 dW5lX2l6X2hhc2hpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGVuZ2luZS0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7CiAJdTggdmFsc1szXSA9IHsgMCwgMCwgMCB9OwogCXVuc2lnbmVkIGludCBp OwpAQCAtMTA0MCwxMyArMTA0NSwxMyBAQCBzdGF0aWMgaW50IHNrbF90dW5lX2l6X2hhc2hpbmco c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGlu dCBza2xfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQorc3Rh dGljIGludCBza2xfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCiB7CiAJaW50IHJldDsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ZGV2Owor CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCi0JcmV0ID0gZ2VuOV9pbml0 X3dvcmthcm91bmRzKHJpbmcpOworCXJldCA9IGdlbjlfaW5pdF93b3JrYXJvdW5kcyhlbmdpbmUp OwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKQEAgLTExMTMsMjAgKzExMTgsMjAgQEAgc3Rh dGljIGludCBza2xfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n KQogCQkJR0VON19TQkVfU1NfQ0FDSEVfRElTUEFUQ0hfUE9SVF9TSEFSSU5HX0RJU0FCTEUpOwog CiAJLyogV2FEaXNhYmxlTFNRQ1JPUEVSRmZvck9DTDpza2wgKi8KLQlyZXQgPSB3YV9yaW5nX3do aXRlbGlzdF9yZWcocmluZywgR0VOOF9MM1NRQ1JFRzQpOworCXJldCA9IHdhX3Jpbmdfd2hpdGVs aXN0X3JlZyhlbmdpbmUsIEdFTjhfTDNTUUNSRUc0KTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0 OwogCi0JcmV0dXJuIHNrbF90dW5lX2l6X2hhc2hpbmcocmluZyk7CisJcmV0dXJuIHNrbF90dW5l X2l6X2hhc2hpbmcoZW5naW5lKTsKIH0KIAotc3RhdGljIGludCBieHRfaW5pdF93b3JrYXJvdW5k cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQorc3RhdGljIGludCBieHRfaW5pdF93b3Jr YXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJaW50IHJldDsKLQlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ZGV2OworCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBlbmdpbmUtPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwogCi0JcmV0ID0gZ2VuOV9pbml0X3dvcmthcm91bmRzKHJpbmcpOwor CXJldCA9IGdlbjlfaW5pdF93b3JrYXJvdW5kcyhlbmdpbmUpOwogCWlmIChyZXQpCiAJCXJldHVy biByZXQ7CiAKQEAgLTExNTcsMTEgKzExNjIsMTEgQEAgc3RhdGljIGludCBieHRfaW5pdF93b3Jr YXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogCS8qIFdhRGlzYWJsZU9iamVj dExldmVsUHJlZW10aW9uRm9ySW5zdGFuY2VJZDpieHQgKi8KIAkvKiBXYURpc2FibGVMU1FDUk9Q RVJGZm9yT0NMOmJ4dCAqLwogCWlmIChJU19CWFRfUkVWSUQoZGV2LCAwLCBCWFRfUkVWSURfQTEp KSB7Ci0JCXJldCA9IHdhX3Jpbmdfd2hpdGVsaXN0X3JlZyhyaW5nLCBHRU45X0NTX0RFQlVHX01P REUxKTsKKwkJcmV0ID0gd2FfcmluZ193aGl0ZWxpc3RfcmVnKGVuZ2luZSwgR0VOOV9DU19ERUJV R19NT0RFMSk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCi0JCXJldCA9IHdhX3Jpbmdf d2hpdGVsaXN0X3JlZyhyaW5nLCBHRU44X0wzU1FDUkVHNCk7CisJCXJldCA9IHdhX3Jpbmdfd2hp dGVsaXN0X3JlZyhlbmdpbmUsIEdFTjhfTDNTUUNSRUc0KTsKIAkJaWYgKHJldCkKIAkJCXJldHVy biByZXQ7CiAJfQpAQCAtMTE2OSwzNiArMTE3NCwzNiBAQCBzdGF0aWMgaW50IGJ4dF9pbml0X3dv cmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiAJcmV0dXJuIDA7CiB9CiAK LWludCBpbml0X3dvcmthcm91bmRzX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykK K2ludCBpbml0X3dvcmthcm91bmRzX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7CisJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAKLQlXQVJOX09OKHJpbmctPmlkICE9IFJDUyk7CisJ V0FSTl9PTihlbmdpbmUtPmlkICE9IFJDUyk7CiAKIAlkZXZfcHJpdi0+d29ya2Fyb3VuZHMuY291 bnQgPSAwOwogCWRldl9wcml2LT53b3JrYXJvdW5kcy5od193aGl0ZWxpc3RfY291bnRbUkNTXSA9 IDA7CiAKIAlpZiAoSVNfQlJPQURXRUxMKGRldikpCi0JCXJldHVybiBiZHdfaW5pdF93b3JrYXJv dW5kcyhyaW5nKTsKKwkJcmV0dXJuIGJkd19pbml0X3dvcmthcm91bmRzKGVuZ2luZSk7CiAKIAlp ZiAoSVNfQ0hFUlJZVklFVyhkZXYpKQotCQlyZXR1cm4gY2h2X2luaXRfd29ya2Fyb3VuZHMocmlu Zyk7CisJCXJldHVybiBjaHZfaW5pdF93b3JrYXJvdW5kcyhlbmdpbmUpOwogCiAJaWYgKElTX1NL WUxBS0UoZGV2KSkKLQkJcmV0dXJuIHNrbF9pbml0X3dvcmthcm91bmRzKHJpbmcpOworCQlyZXR1 cm4gc2tsX2luaXRfd29ya2Fyb3VuZHMoZW5naW5lKTsKIAogCWlmIChJU19CUk9YVE9OKGRldikp Ci0JCXJldHVybiBieHRfaW5pdF93b3JrYXJvdW5kcyhyaW5nKTsKKwkJcmV0dXJuIGJ4dF9pbml0 X3dvcmthcm91bmRzKGVuZ2luZSk7CiAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBpbml0 X3JlbmRlcl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCitzdGF0aWMgaW50IGlu aXRfcmVuZGVyX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGVuZ2luZS0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7Ci0JaW50IHJldCA9IGluaXRfcmluZ19jb21tb24ocmluZyk7CisJaW50IHJl dCA9IGluaXRfcmluZ19jb21tb24oZW5naW5lKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0Owog CkBAIC0xMjQxLDE0ICsxMjQ2LDE0IEBAIHN0YXRpYyBpbnQgaW5pdF9yZW5kZXJfcmluZyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogCQlJOTE1X1dSSVRFKElOU1RQTSwgX01BU0tFRF9C SVRfRU5BQkxFKElOU1RQTV9GT1JDRV9PUkRFUklORykpOwogCiAJaWYgKEhBU19MM19EUEYoZGV2 KSkKLQkJSTkxNV9XUklURV9JTVIocmluZywgfkdUX1BBUklUWV9FUlJPUihkZXYpKTsKKwkJSTkx NV9XUklURV9JTVIoZW5naW5lLCB+R1RfUEFSSVRZX0VSUk9SKGRldikpOwogCi0JcmV0dXJuIGlu aXRfd29ya2Fyb3VuZHNfcmluZyhyaW5nKTsKKwlyZXR1cm4gaW5pdF93b3JrYXJvdW5kc19yaW5n KGVuZ2luZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlbmRlcl9yaW5nX2NsZWFudXAoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZykKK3N0YXRpYyB2b2lkIHJlbmRlcl9yaW5nX2NsZWFudXAoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSByaW5nLT5kZXY7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2OwogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAKIAlp ZiAoZGV2X3ByaXYtPnNlbWFwaG9yZV9vYmopIHsKQEAgLTEyNTcsNyArMTI2Miw3IEBAIHN0YXRp YyB2b2lkIHJlbmRlcl9yaW5nX2NsZWFudXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykK IAkJZGV2X3ByaXYtPnNlbWFwaG9yZV9vYmogPSBOVUxMOwogCX0KIAotCWludGVsX2ZpbmlfcGlw ZV9jb250cm9sKHJpbmcpOworCWludGVsX2ZpbmlfcGlwZV9jb250cm9sKGVuZ2luZSk7CiB9CiAK IHN0YXRpYyBpbnQgZ2VuOF9yY3Nfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq c2lnbmFsbGVyX3JlcSwKQEAgLTE1NTQsNDcgKzE1NTksNDcgQEAgcGNfcmVuZGVyX2FkZF9yZXF1 ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogfQogCiBzdGF0aWMgdTMyCi1n ZW42X3JpbmdfZ2V0X3NlcW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIGJvb2wgbGF6 eV9jb2hlcmVuY3kpCitnZW42X3JpbmdfZ2V0X3NlcW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwgYm9vbCBsYXp5X2NvaGVyZW5jeSkKIHsKIAkvKiBXb3JrYXJvdW5kIHRvIGZvcmNl IGNvcnJlY3Qgb3JkZXJpbmcgYmV0d2VlbiBpcnEgYW5kIHNlcW5vIHdyaXRlcyBvbgogCSAqIGl2 YiAoYW5kIG1heWJlIGFsc28gb24gc25iKSBieSByZWFkaW5nIGZyb20gYSBDUyByZWdpc3RlciAo bGlrZQogCSAqIEFDVEhEKSBiZWZvcmUgcmVhZGluZyB0aGUgc3RhdHVzIHBhZ2UuICovCiAJaWYg KCFsYXp5X2NvaGVyZW5jeSkgewotCQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSByaW5nLT5kZXYtPmRldl9wcml2YXRlOwotCQlQT1NUSU5HX1JFQUQoUklOR19BQ1RIRChyaW5n LT5tbWlvX2Jhc2UpKTsKKwkJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5n aW5lLT5kZXYtPmRldl9wcml2YXRlOworCQlQT1NUSU5HX1JFQUQoUklOR19BQ1RIRChlbmdpbmUt Pm1taW9fYmFzZSkpOwogCX0KIAotCXJldHVybiBpbnRlbF9yZWFkX3N0YXR1c19wYWdlKHJpbmcs IEk5MTVfR0VNX0hXU19JTkRFWCk7CisJcmV0dXJuIGludGVsX3JlYWRfc3RhdHVzX3BhZ2UoZW5n aW5lLCBJOTE1X0dFTV9IV1NfSU5ERVgpOwogfQogCiBzdGF0aWMgdTMyCi1yaW5nX2dldF9zZXFu byhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCBib29sIGxhenlfY29oZXJlbmN5KQorcmlu Z19nZXRfc2Vxbm8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBib29sIGxhenlfY29o ZXJlbmN5KQogewotCXJldHVybiBpbnRlbF9yZWFkX3N0YXR1c19wYWdlKHJpbmcsIEk5MTVfR0VN X0hXU19JTkRFWCk7CisJcmV0dXJuIGludGVsX3JlYWRfc3RhdHVzX3BhZ2UoZW5naW5lLCBJOTE1 X0dFTV9IV1NfSU5ERVgpOwogfQogCiBzdGF0aWMgdm9pZAotcmluZ19zZXRfc2Vxbm8oc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZywgdTMyIHNlcW5vKQorcmluZ19zZXRfc2Vxbm8oc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgc2Vxbm8pCiB7Ci0JaW50ZWxfd3JpdGVfc3Rh dHVzX3BhZ2UocmluZywgSTkxNV9HRU1fSFdTX0lOREVYLCBzZXFubyk7CisJaW50ZWxfd3JpdGVf c3RhdHVzX3BhZ2UoZW5naW5lLCBJOTE1X0dFTV9IV1NfSU5ERVgsIHNlcW5vKTsKIH0KIAogc3Rh dGljIHUzMgotcGNfcmVuZGVyX2dldF9zZXFubyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n LCBib29sIGxhenlfY29oZXJlbmN5KQorcGNfcmVuZGVyX2dldF9zZXFubyhzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsIGJvb2wgbGF6eV9jb2hlcmVuY3kpCiB7Ci0JcmV0dXJuIHJpbmct PnNjcmF0Y2guY3B1X3BhZ2VbMF07CisJcmV0dXJuIGVuZ2luZS0+c2NyYXRjaC5jcHVfcGFnZVsw XTsKIH0KIAogc3RhdGljIHZvaWQKLXBjX3JlbmRlcl9zZXRfc2Vxbm8oc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZywgdTMyIHNlcW5vKQorcGNfcmVuZGVyX3NldF9zZXFubyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBzZXFubykKIHsKLQlyaW5nLT5zY3JhdGNoLmNwdV9w YWdlWzBdID0gc2Vxbm87CisJZW5naW5lLT5zY3JhdGNoLmNwdV9wYWdlWzBdID0gc2Vxbm87CiB9 CiAKIHN0YXRpYyBib29sCi1nZW41X3JpbmdfZ2V0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nKQorZ2VuNV9yaW5nX2dldF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7CisJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIApAQCAtMTYw MiwzMCArMTYwNywzMCBAQCBnZW41X3JpbmdfZ2V0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYt PmlycV9sb2NrLCBmbGFncyk7Ci0JaWYgKHJpbmctPmlycV9yZWZjb3VudCsrID09IDApCi0JCWdl bjVfZW5hYmxlX2d0X2lycShkZXZfcHJpdiwgcmluZy0+aXJxX2VuYWJsZV9tYXNrKTsKKwlpZiAo ZW5naW5lLT5pcnFfcmVmY291bnQrKyA9PSAwKQorCQlnZW41X2VuYWJsZV9ndF9pcnEoZGV2X3By aXYsIGVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrKTsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZk ZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKIAogCXJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg dm9pZAotZ2VuNV9yaW5nX3B1dF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKK2dl bjVfcmluZ19wdXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ZGV2OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBlbmdpbmUtPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAlzcGluX2xvY2tfaXJxc2F2 ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7Ci0JaWYgKC0tcmluZy0+aXJxX3JlZmNvdW50 ID09IDApCi0JCWdlbjVfZGlzYWJsZV9ndF9pcnEoZGV2X3ByaXYsIHJpbmctPmlycV9lbmFibGVf bWFzayk7CisJaWYgKC0tZW5naW5lLT5pcnFfcmVmY291bnQgPT0gMCkKKwkJZ2VuNV9kaXNhYmxl X2d0X2lycShkZXZfcHJpdiwgZW5naW5lLT5pcnFfZW5hYmxlX21hc2spOwogCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmRldl9wcml2LT5pcnFfbG9jaywgZmxhZ3MpOwogfQogCiBzdGF0aWMgYm9v bAotaTl4eF9yaW5nX2dldF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKK2k5eHhf cmluZ19nZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ZGV2OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBl bmdpbmUtPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKQEAgLTE2MzMsOCArMTYzOCw4IEBA IGk5eHhfcmluZ19nZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiAJCXJldHVy biBmYWxzZTsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdz KTsKLQlpZiAocmluZy0+aXJxX3JlZmNvdW50KysgPT0gMCkgewotCQlkZXZfcHJpdi0+aXJxX21h c2sgJj0gfnJpbmctPmlycV9lbmFibGVfbWFzazsKKwlpZiAoZW5naW5lLT5pcnFfcmVmY291bnQr KyA9PSAwKSB7CisJCWRldl9wcml2LT5pcnFfbWFzayAmPSB+ZW5naW5lLT5pcnFfZW5hYmxlX21h c2s7CiAJCUk5MTVfV1JJVEUoSU1SLCBkZXZfcHJpdi0+aXJxX21hc2spOwogCQlQT1NUSU5HX1JF QUQoSU1SKTsKIAl9CkBAIC0xNjQ0LDE1ICsxNjQ5LDE1IEBAIGk5eHhfcmluZ19nZXRfaXJxKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiB9CiAKIHN0YXRpYyB2b2lkCi1pOXh4X3Jpbmdf cHV0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQoraTl4eF9yaW5nX3B1dF9pcnEo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSByaW5nLT5kZXY7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2Owog CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJ dW5zaWduZWQgbG9uZyBmbGFnczsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJx X2xvY2ssIGZsYWdzKTsKLQlpZiAoLS1yaW5nLT5pcnFfcmVmY291bnQgPT0gMCkgewotCQlkZXZf cHJpdi0+aXJxX21hc2sgfD0gcmluZy0+aXJxX2VuYWJsZV9tYXNrOworCWlmICgtLWVuZ2luZS0+ aXJxX3JlZmNvdW50ID09IDApIHsKKwkJZGV2X3ByaXYtPmlycV9tYXNrIHw9IGVuZ2luZS0+aXJx X2VuYWJsZV9tYXNrOwogCQlJOTE1X1dSSVRFKElNUiwgZGV2X3ByaXYtPmlycV9tYXNrKTsKIAkJ UE9TVElOR19SRUFEKElNUik7CiAJfQpAQCAtMTY2MCw5ICsxNjY1LDkgQEAgaTl4eF9yaW5nX3B1 dF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKIH0KIAogc3RhdGljIGJvb2wKLWk4 eHhfcmluZ19nZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCitpOHh4X3Jpbmdf Z2V0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IHJpbmctPmRldjsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5l LT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCkBAIC0xNjcwLDggKzE2NzUsOCBAQCBpOHh4 X3JpbmdfZ2V0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogCQlyZXR1cm4gZmFs c2U7CiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7Ci0J aWYgKHJpbmctPmlycV9yZWZjb3VudCsrID09IDApIHsKLQkJZGV2X3ByaXYtPmlycV9tYXNrICY9 IH5yaW5nLT5pcnFfZW5hYmxlX21hc2s7CisJaWYgKGVuZ2luZS0+aXJxX3JlZmNvdW50KysgPT0g MCkgeworCQlkZXZfcHJpdi0+aXJxX21hc2sgJj0gfmVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrOwog CQlJOTE1X1dSSVRFMTYoSU1SLCBkZXZfcHJpdi0+aXJxX21hc2spOwogCQlQT1NUSU5HX1JFQUQx NihJTVIpOwogCX0KQEAgLTE2ODEsMTUgKzE2ODYsMTUgQEAgaTh4eF9yaW5nX2dldF9pcnEoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKIH0KIAogc3RhdGljIHZvaWQKLWk4eHhfcmluZ19w dXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCitpOHh4X3JpbmdfcHV0X2lycShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IHJpbmctPmRldjsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5lLT5kZXY7CiAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAl1 bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT5pcnFf bG9jaywgZmxhZ3MpOwotCWlmICgtLXJpbmctPmlycV9yZWZjb3VudCA9PSAwKSB7Ci0JCWRldl9w cml2LT5pcnFfbWFzayB8PSByaW5nLT5pcnFfZW5hYmxlX21hc2s7CisJaWYgKC0tZW5naW5lLT5p cnFfcmVmY291bnQgPT0gMCkgeworCQlkZXZfcHJpdi0+aXJxX21hc2sgfD0gZW5naW5lLT5pcnFf ZW5hYmxlX21hc2s7CiAJCUk5MTVfV1JJVEUxNihJTVIsIGRldl9wcml2LT5pcnFfbWFzayk7CiAJ CVBPU1RJTkdfUkVBRDE2KElNUik7CiAJfQpAQCAtMTczNSw5ICsxNzQwLDkgQEAgaTl4eF9hZGRf cmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIH0KIAogc3RhdGljIGJv b2wKLWdlbjZfcmluZ19nZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCitnZW42 X3JpbmdfZ2V0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IHJpbmctPmRldjsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g ZW5naW5lLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCkBAIC0xNzQ1LDE0ICsxNzUwLDE0 IEBAIGdlbjZfcmluZ19nZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiAJCXJl dHVybiBmYWxzZTsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZs YWdzKTsKLQlpZiAocmluZy0+aXJxX3JlZmNvdW50KysgPT0gMCkgewotCQlpZiAoSEFTX0wzX0RQ RihkZXYpICYmIHJpbmctPmlkID09IFJDUykKLQkJCUk5MTVfV1JJVEVfSU1SKHJpbmcsCi0JCQkJ ICAgICAgIH4ocmluZy0+aXJxX2VuYWJsZV9tYXNrIHwKKwlpZiAoZW5naW5lLT5pcnFfcmVmY291 bnQrKyA9PSAwKSB7CisJCWlmIChIQVNfTDNfRFBGKGRldikgJiYgZW5naW5lLT5pZCA9PSBSQ1Mp CisJCQlJOTE1X1dSSVRFX0lNUihlbmdpbmUsCisJCQkJICAgICAgIH4oZW5naW5lLT5pcnFfZW5h YmxlX21hc2sgfAogCQkJCQkgR1RfUEFSSVRZX0VSUk9SKGRldikpKTsKIAkJZWxzZQotCQkJSTkx NV9XUklURV9JTVIocmluZywgfnJpbmctPmlycV9lbmFibGVfbWFzayk7Ci0JCWdlbjVfZW5hYmxl X2d0X2lycShkZXZfcHJpdiwgcmluZy0+aXJxX2VuYWJsZV9tYXNrKTsKKwkJCUk5MTVfV1JJVEVf SU1SKGVuZ2luZSwgfmVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrKTsKKwkJZ2VuNV9lbmFibGVfZ3Rf aXJxKGRldl9wcml2LCBlbmdpbmUtPmlycV9lbmFibGVfbWFzayk7CiAJfQogCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmRldl9wcml2LT5pcnFfbG9jaywgZmxhZ3MpOwogCkBAIC0xNzYwLDI3ICsx NzY1LDI3IEBAIGdlbjZfcmluZ19nZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcp CiB9CiAKIHN0YXRpYyB2b2lkCi1nZW42X3JpbmdfcHV0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpyaW5nKQorZ2VuNl9yaW5nX3B1dF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7CisJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCXNw aW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKLQlpZiAoLS1yaW5n LT5pcnFfcmVmY291bnQgPT0gMCkgewotCQlpZiAoSEFTX0wzX0RQRihkZXYpICYmIHJpbmctPmlk ID09IFJDUykKLQkJCUk5MTVfV1JJVEVfSU1SKHJpbmcsIH5HVF9QQVJJVFlfRVJST1IoZGV2KSk7 CisJaWYgKC0tZW5naW5lLT5pcnFfcmVmY291bnQgPT0gMCkgeworCQlpZiAoSEFTX0wzX0RQRihk ZXYpICYmIGVuZ2luZS0+aWQgPT0gUkNTKQorCQkJSTkxNV9XUklURV9JTVIoZW5naW5lLCB+R1Rf UEFSSVRZX0VSUk9SKGRldikpOwogCQllbHNlCi0JCQlJOTE1X1dSSVRFX0lNUihyaW5nLCB+MCk7 Ci0JCWdlbjVfZGlzYWJsZV9ndF9pcnEoZGV2X3ByaXYsIHJpbmctPmlycV9lbmFibGVfbWFzayk7 CisJCQlJOTE1X1dSSVRFX0lNUihlbmdpbmUsIH4wKTsKKwkJZ2VuNV9kaXNhYmxlX2d0X2lycShk ZXZfcHJpdiwgZW5naW5lLT5pcnFfZW5hYmxlX21hc2spOwogCX0KIAlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKIH0KIAogc3RhdGljIGJvb2wKLWhz d192ZWJveF9nZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCitoc3dfdmVib3hf Z2V0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IHJpbmctPmRldjsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5l LT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCkBAIC0xNzg4LDkgKzE3OTMsOSBAQCBoc3df dmVib3hfZ2V0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogCQlyZXR1cm4gZmFs c2U7CiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7Ci0J aWYgKHJpbmctPmlycV9yZWZjb3VudCsrID09IDApIHsKLQkJSTkxNV9XUklURV9JTVIocmluZywg fnJpbmctPmlycV9lbmFibGVfbWFzayk7Ci0JCWdlbjZfZW5hYmxlX3BtX2lycShkZXZfcHJpdiwg cmluZy0+aXJxX2VuYWJsZV9tYXNrKTsKKwlpZiAoZW5naW5lLT5pcnFfcmVmY291bnQrKyA9PSAw KSB7CisJCUk5MTVfV1JJVEVfSU1SKGVuZ2luZSwgfmVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrKTsK KwkJZ2VuNl9lbmFibGVfcG1faXJxKGRldl9wcml2LCBlbmdpbmUtPmlycV9lbmFibGVfbWFzayk7 CiAJfQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5pcnFfbG9jaywgZmxhZ3Mp OwogCkBAIC0xNzk4LDI0ICsxODAzLDI0IEBAIGhzd192ZWJveF9nZXRfaXJxKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKnJpbmcpCiB9CiAKIHN0YXRpYyB2b2lkCi1oc3dfdmVib3hfcHV0X2lycShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQoraHN3X3ZlYm94X3B1dF9pcnEoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByaW5n LT5kZXY7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2OwogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJdW5zaWduZWQg bG9uZyBmbGFnczsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZs YWdzKTsKLQlpZiAoLS1yaW5nLT5pcnFfcmVmY291bnQgPT0gMCkgewotCQlJOTE1X1dSSVRFX0lN UihyaW5nLCB+MCk7Ci0JCWdlbjZfZGlzYWJsZV9wbV9pcnEoZGV2X3ByaXYsIHJpbmctPmlycV9l bmFibGVfbWFzayk7CisJaWYgKC0tZW5naW5lLT5pcnFfcmVmY291bnQgPT0gMCkgeworCQlJOTE1 X1dSSVRFX0lNUihlbmdpbmUsIH4wKTsKKwkJZ2VuNl9kaXNhYmxlX3BtX2lycShkZXZfcHJpdiwg ZW5naW5lLT5pcnFfZW5hYmxlX21hc2spOwogCX0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZk ZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKIH0KIAogc3RhdGljIGJvb2wKLWdlbjhfcmluZ19n ZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCitnZW44X3JpbmdfZ2V0X2lycShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IHJpbmctPmRldjsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5lLT5kZXY7CiAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAl1 bnNpZ25lZCBsb25nIGZsYWdzOwogCkBAIC0xODIzLDE1ICsxODI4LDE1IEBAIGdlbjhfcmluZ19n ZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiAJCXJldHVybiBmYWxzZTsKIAog CXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKLQlpZiAocmlu Zy0+aXJxX3JlZmNvdW50KysgPT0gMCkgewotCQlpZiAoSEFTX0wzX0RQRihkZXYpICYmIHJpbmct PmlkID09IFJDUykgewotCQkJSTkxNV9XUklURV9JTVIocmluZywKLQkJCQkgICAgICAgfihyaW5n LT5pcnFfZW5hYmxlX21hc2sgfAorCWlmIChlbmdpbmUtPmlycV9yZWZjb3VudCsrID09IDApIHsK KwkJaWYgKEhBU19MM19EUEYoZGV2KSAmJiBlbmdpbmUtPmlkID09IFJDUykgeworCQkJSTkxNV9X UklURV9JTVIoZW5naW5lLAorCQkJCSAgICAgICB+KGVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrIHwK IAkJCQkJIEdUX1JFTkRFUl9MM19QQVJJVFlfRVJST1JfSU5URVJSVVBUKSk7CiAJCX0gZWxzZSB7 Ci0JCQlJOTE1X1dSSVRFX0lNUihyaW5nLCB+cmluZy0+aXJxX2VuYWJsZV9tYXNrKTsKKwkJCUk5 MTVfV1JJVEVfSU1SKGVuZ2luZSwgfmVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrKTsKIAkJfQotCQlQ T1NUSU5HX1JFQUQoUklOR19JTVIocmluZy0+bW1pb19iYXNlKSk7CisJCVBPU1RJTkdfUkVBRChS SU5HX0lNUihlbmdpbmUtPm1taW9fYmFzZSkpOwogCX0KIAlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKIApAQCAtMTgzOSwyMSArMTg0NCwyMSBAQCBn ZW44X3JpbmdfZ2V0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogfQogCiBzdGF0 aWMgdm9pZAotZ2VuOF9yaW5nX3B1dF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykK K2dlbjhfcmluZ19wdXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ZGV2OworCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBlbmdpbmUtPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAlzcGluX2xvY2tfaXJx c2F2ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7Ci0JaWYgKC0tcmluZy0+aXJxX3JlZmNv dW50ID09IDApIHsKLQkJaWYgKEhBU19MM19EUEYoZGV2KSAmJiByaW5nLT5pZCA9PSBSQ1MpIHsK LQkJCUk5MTVfV1JJVEVfSU1SKHJpbmcsCisJaWYgKC0tZW5naW5lLT5pcnFfcmVmY291bnQgPT0g MCkgeworCQlpZiAoSEFTX0wzX0RQRihkZXYpICYmIGVuZ2luZS0+aWQgPT0gUkNTKSB7CisJCQlJ OTE1X1dSSVRFX0lNUihlbmdpbmUsCiAJCQkJICAgICAgIH5HVF9SRU5ERVJfTDNfUEFSSVRZX0VS Uk9SX0lOVEVSUlVQVCk7CiAJCX0gZWxzZSB7Ci0JCQlJOTE1X1dSSVRFX0lNUihyaW5nLCB+MCk7 CisJCQlJOTE1X1dSSVRFX0lNUihlbmdpbmUsIH4wKTsKIAkJfQotCQlQT1NUSU5HX1JFQUQoUklO R19JTVIocmluZy0+bW1pb19iYXNlKSk7CisJCVBPU1RJTkdfUkVBRChSSU5HX0lNUihlbmdpbmUt Pm1taW9fYmFzZSkpOwogCX0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+aXJx X2xvY2ssIGZsYWdzKTsKIH0KQEAgLTE5NjcsNDAgKzE5NzIsNDAgQEAgaTkxNV9kaXNwYXRjaF9l eGVjYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCXJldHVybiAwOwog fQogCi1zdGF0aWMgdm9pZCBjbGVhbnVwX3BoeXNfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZykKK3N0YXRpYyB2b2lkIGNsZWFudXBfcGh5c19zdGF0dXNfcGFnZShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShyaW5nLT5kZXYpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5naW5lLT5kZXYpOwogCiAJaWYgKCFkZXZfcHJpdi0+c3Rh dHVzX3BhZ2VfZG1haCkKIAkJcmV0dXJuOwogCi0JZHJtX3BjaV9mcmVlKHJpbmctPmRldiwgZGV2 X3ByaXYtPnN0YXR1c19wYWdlX2RtYWgpOwotCXJpbmctPnN0YXR1c19wYWdlLnBhZ2VfYWRkciA9 IE5VTEw7CisJZHJtX3BjaV9mcmVlKGVuZ2luZS0+ZGV2LCBkZXZfcHJpdi0+c3RhdHVzX3BhZ2Vf ZG1haCk7CisJZW5naW5lLT5zdGF0dXNfcGFnZS5wYWdlX2FkZHIgPSBOVUxMOwogfQogCi1zdGF0 aWMgdm9pZCBjbGVhbnVwX3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcp CitzdGF0aWMgdm9pZCBjbGVhbnVwX3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwogCi0Jb2JqID0g cmluZy0+c3RhdHVzX3BhZ2Uub2JqOworCW9iaiA9IGVuZ2luZS0+c3RhdHVzX3BhZ2Uub2JqOwog CWlmIChvYmogPT0gTlVMTCkKIAkJcmV0dXJuOwogCiAJa3VubWFwKHNnX3BhZ2Uob2JqLT5wYWdl cy0+c2dsKSk7CiAJaTkxNV9nZW1fb2JqZWN0X2dndHRfdW5waW4ob2JqKTsKIAlkcm1fZ2VtX29i amVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKLQlyaW5nLT5zdGF0dXNfcGFnZS5vYmogPSBO VUxMOworCWVuZ2luZS0+c3RhdHVzX3BhZ2Uub2JqID0gTlVMTDsKIH0KIAotc3RhdGljIGludCBp bml0X3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCitzdGF0aWMgaW50 IGluaXRfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSByaW5nLT5zdGF0dXNfcGFnZS5vYmo7CisJ c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGVuZ2luZS0+c3RhdHVzX3BhZ2Uub2Jq OwogCiAJaWYgKG9iaiA9PSBOVUxMKSB7CiAJCXVuc2lnbmVkIGZsYWdzOwogCQlpbnQgcmV0Owog Ci0JCW9iaiA9IGk5MTVfZ2VtX2FsbG9jX29iamVjdChyaW5nLT5kZXYsIDQwOTYpOworCQlvYmog PSBpOTE1X2dlbV9hbGxvY19vYmplY3QoZW5naW5lLT5kZXYsIDQwOTYpOwogCQlpZiAob2JqID09 IE5VTEwpIHsKIAkJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIHN0YXR1cyBwYWdlXG4i KTsKIAkJCXJldHVybiAtRU5PTUVNOwpAQCAtMjAxMSw3ICsyMDE2LDcgQEAgc3RhdGljIGludCBp bml0X3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiAJCQlnb3RvIGVy cl91bnJlZjsKIAogCQlmbGFncyA9IDA7Ci0JCWlmICghSEFTX0xMQyhyaW5nLT5kZXYpKQorCQlp ZiAoIUhBU19MTEMoZW5naW5lLT5kZXYpKQogCQkJLyogT24gZzMzLCB3ZSBjYW5ub3QgcGxhY2Ug SFdTIGFib3ZlIDI1Nk1pQiwgc28KIAkJCSAqIHJlc3RyaWN0IGl0cyBwaW5uaW5nIHRvIHRoZSBs b3cgbWFwcGFibGUgYXJlbmEuCiAJCQkgKiBUaG91Z2ggdGhpcyByZXN0cmljdGlvbiBpcyBub3Qg ZG9jdW1lbnRlZCBmb3IKQEAgLTIwMzAsMzIgKzIwMzUsMzIgQEAgZXJyX3VucmVmOgogCQkJcmV0 dXJuIHJldDsKIAkJfQogCi0JCXJpbmctPnN0YXR1c19wYWdlLm9iaiA9IG9iajsKKwkJZW5naW5l LT5zdGF0dXNfcGFnZS5vYmogPSBvYmo7CiAJfQogCi0JcmluZy0+c3RhdHVzX3BhZ2UuZ2Z4X2Fk ZHIgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKTsKLQlyaW5nLT5zdGF0dXNfcGFnZS5w YWdlX2FkZHIgPSBrbWFwKHNnX3BhZ2Uob2JqLT5wYWdlcy0+c2dsKSk7Ci0JbWVtc2V0KHJpbmct PnN0YXR1c19wYWdlLnBhZ2VfYWRkciwgMCwgUEFHRV9TSVpFKTsKKwllbmdpbmUtPnN0YXR1c19w YWdlLmdmeF9hZGRyID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9iaik7CisJZW5naW5lLT5z dGF0dXNfcGFnZS5wYWdlX2FkZHIgPSBrbWFwKHNnX3BhZ2Uob2JqLT5wYWdlcy0+c2dsKSk7CisJ bWVtc2V0KGVuZ2luZS0+c3RhdHVzX3BhZ2UucGFnZV9hZGRyLCAwLCBQQUdFX1NJWkUpOwogCiAJ RFJNX0RFQlVHX0RSSVZFUigiJXMgaHdzIG9mZnNldDogMHglMDh4XG4iLAotCQkJcmluZy0+bmFt ZSwgcmluZy0+c3RhdHVzX3BhZ2UuZ2Z4X2FkZHIpOworCQkJZW5naW5lLT5uYW1lLCBlbmdpbmUt PnN0YXR1c19wYWdlLmdmeF9hZGRyKTsKIAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGlu aXRfcGh5c19zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQorc3RhdGlj IGludCBpbml0X3BoeXNfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2 X3ByaXZhdGU7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5k ZXYtPmRldl9wcml2YXRlOwogCiAJaWYgKCFkZXZfcHJpdi0+c3RhdHVzX3BhZ2VfZG1haCkgewog CQlkZXZfcHJpdi0+c3RhdHVzX3BhZ2VfZG1haCA9Ci0JCQlkcm1fcGNpX2FsbG9jKHJpbmctPmRl diwgUEFHRV9TSVpFLCBQQUdFX1NJWkUpOworCQkJZHJtX3BjaV9hbGxvYyhlbmdpbmUtPmRldiwg UEFHRV9TSVpFLCBQQUdFX1NJWkUpOwogCQlpZiAoIWRldl9wcml2LT5zdGF0dXNfcGFnZV9kbWFo KQogCQkJcmV0dXJuIC1FTk9NRU07CiAJfQogCi0JcmluZy0+c3RhdHVzX3BhZ2UucGFnZV9hZGRy ID0gZGV2X3ByaXYtPnN0YXR1c19wYWdlX2RtYWgtPnZhZGRyOwotCW1lbXNldChyaW5nLT5zdGF0 dXNfcGFnZS5wYWdlX2FkZHIsIDAsIFBBR0VfU0laRSk7CisJZW5naW5lLT5zdGF0dXNfcGFnZS5w YWdlX2FkZHIgPSBkZXZfcHJpdi0+c3RhdHVzX3BhZ2VfZG1haC0+dmFkZHI7CisJbWVtc2V0KGVu Z2luZS0+c3RhdHVzX3BhZ2UucGFnZV9hZGRyLCAwLCBQQUdFX1NJWkUpOwogCiAJcmV0dXJuIDA7 CiB9CkBAIC0yMjE4LDM3ICsyMjIzLDM4IEBAIGludGVsX3JpbmdidWZmZXJfZnJlZShzdHJ1Y3Qg aW50ZWxfcmluZ2J1ZmZlciAqcmluZykKIH0KIAogc3RhdGljIGludCBpbnRlbF9pbml0X3Jpbmdf YnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCQkJICBzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpyaW5nKQorCQkJCSAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0 cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmOwogCWludCByZXQ7CiAKLQlXQVJOX09OKHJp bmctPmJ1ZmZlcik7CisJV0FSTl9PTihlbmdpbmUtPmJ1ZmZlcik7CiAKLQlyaW5nLT5kZXYgPSBk ZXY7Ci0JSU5JVF9MSVNUX0hFQUQoJnJpbmctPmFjdGl2ZV9saXN0KTsKLQlJTklUX0xJU1RfSEVB RCgmcmluZy0+cmVxdWVzdF9saXN0KTsKLQlJTklUX0xJU1RfSEVBRCgmcmluZy0+ZXhlY2xpc3Rf cXVldWUpOwotCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5idWZmZXJzKTsKLQlpOTE1X2dlbV9iYXRj aF9wb29sX2luaXQoZGV2LCAmcmluZy0+YmF0Y2hfcG9vbCk7Ci0JbWVtc2V0KHJpbmctPnNlbWFw aG9yZS5zeW5jX3NlcW5vLCAwLCBzaXplb2YocmluZy0+c2VtYXBob3JlLnN5bmNfc2Vxbm8pKTsK KwllbmdpbmUtPmRldiA9IGRldjsKKwlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5hY3RpdmVfbGlz dCk7CisJSU5JVF9MSVNUX0hFQUQoJmVuZ2luZS0+cmVxdWVzdF9saXN0KTsKKwlJTklUX0xJU1Rf SEVBRCgmZW5naW5lLT5leGVjbGlzdF9xdWV1ZSk7CisJSU5JVF9MSVNUX0hFQUQoJmVuZ2luZS0+ YnVmZmVycyk7CisJaTkxNV9nZW1fYmF0Y2hfcG9vbF9pbml0KGRldiwgJmVuZ2luZS0+YmF0Y2hf cG9vbCk7CisJbWVtc2V0KGVuZ2luZS0+c2VtYXBob3JlLnN5bmNfc2Vxbm8sIDAsCisJICAgICAg IHNpemVvZihlbmdpbmUtPnNlbWFwaG9yZS5zeW5jX3NlcW5vKSk7CiAKLQlpbml0X3dhaXRxdWV1 ZV9oZWFkKCZyaW5nLT5pcnFfcXVldWUpOworCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmVuZ2luZS0+ aXJxX3F1ZXVlKTsKIAotCXJpbmdidWYgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX3JpbmdidWZmZXIo cmluZywgMzIgKiBQQUdFX1NJWkUpOworCXJpbmdidWYgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX3Jp bmdidWZmZXIoZW5naW5lLCAzMiAqIFBBR0VfU0laRSk7CiAJaWYgKElTX0VSUihyaW5nYnVmKSkg ewogCQlyZXQgPSBQVFJfRVJSKHJpbmdidWYpOwogCQlnb3RvIGVycm9yOwogCX0KLQlyaW5nLT5i dWZmZXIgPSByaW5nYnVmOworCWVuZ2luZS0+YnVmZmVyID0gcmluZ2J1ZjsKIAogCWlmIChJOTE1 X05FRURfR0ZYX0hXUyhkZXYpKSB7Ci0JCXJldCA9IGluaXRfc3RhdHVzX3BhZ2UocmluZyk7CisJ CXJldCA9IGluaXRfc3RhdHVzX3BhZ2UoZW5naW5lKTsKIAkJaWYgKHJldCkKIAkJCWdvdG8gZXJy b3I7CiAJfSBlbHNlIHsKLQkJV0FSTl9PTihyaW5nLT5pZCAhPSBSQ1MpOwotCQlyZXQgPSBpbml0 X3BoeXNfc3RhdHVzX3BhZ2UocmluZyk7CisJCVdBUk5fT04oZW5naW5lLT5pZCAhPSBSQ1MpOwor CQlyZXQgPSBpbml0X3BoeXNfc3RhdHVzX3BhZ2UoZW5naW5lKTsKIAkJaWYgKHJldCkKIAkJCWdv dG8gZXJyb3I7CiAJfQpAQCAtMjI1Niw1OCArMjI2Miw1OCBAQCBzdGF0aWMgaW50IGludGVsX2lu aXRfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlyZXQgPSBpbnRlbF9waW5f YW5kX21hcF9yaW5nYnVmZmVyX29iaihkZXYsIHJpbmdidWYpOwogCWlmIChyZXQpIHsKIAkJRFJN X0VSUk9SKCJGYWlsZWQgdG8gcGluIGFuZCBtYXAgcmluZ2J1ZmZlciAlczogJWRcbiIsCi0JCQkJ cmluZy0+bmFtZSwgcmV0KTsKKwkJCQllbmdpbmUtPm5hbWUsIHJldCk7CiAJCWludGVsX2Rlc3Ry b3lfcmluZ2J1ZmZlcl9vYmoocmluZ2J1Zik7CiAJCWdvdG8gZXJyb3I7CiAJfQogCi0JcmV0ID0g aTkxNV9jbWRfcGFyc2VyX2luaXRfcmluZyhyaW5nKTsKKwlyZXQgPSBpOTE1X2NtZF9wYXJzZXJf aW5pdF9yaW5nKGVuZ2luZSk7CiAJaWYgKHJldCkKIAkJZ290byBlcnJvcjsKIAogCXJldHVybiAw OwogCiBlcnJvcjoKLQlpbnRlbF9jbGVhbnVwX3JpbmdfYnVmZmVyKHJpbmcpOworCWludGVsX2Ns ZWFudXBfcmluZ19idWZmZXIoZW5naW5lKTsKIAlyZXR1cm4gcmV0OwogfQogCi12b2lkIGludGVs X2NsZWFudXBfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKK3ZvaWQg aW50ZWxfY2xlYW51cF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp CiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2OwogCi0JaWYgKCFpbnRlbF9y aW5nX2luaXRpYWxpemVkKHJpbmcpKQorCWlmICghaW50ZWxfcmluZ19pbml0aWFsaXplZChlbmdp bmUpKQogCQlyZXR1cm47CiAKLQlkZXZfcHJpdiA9IHRvX2k5MTUocmluZy0+ZGV2KTsKKwlkZXZf cHJpdiA9IHRvX2k5MTUoZW5naW5lLT5kZXYpOwogCi0JaWYgKHJpbmctPmJ1ZmZlcikgewotCQlp bnRlbF9zdG9wX3JpbmdfYnVmZmVyKHJpbmcpOwotCQlXQVJOX09OKCFJU19HRU4yKHJpbmctPmRl dikgJiYgKEk5MTVfUkVBRF9NT0RFKHJpbmcpICYgTU9ERV9JRExFKSA9PSAwKTsKKwlpZiAoZW5n aW5lLT5idWZmZXIpIHsKKwkJaW50ZWxfc3RvcF9yaW5nX2J1ZmZlcihlbmdpbmUpOworCQlXQVJO X09OKCFJU19HRU4yKGVuZ2luZS0+ZGV2KSAmJiAoSTkxNV9SRUFEX01PREUoZW5naW5lKSAmIE1P REVfSURMRSkgPT0gMCk7CiAKLQkJaW50ZWxfdW5waW5fcmluZ2J1ZmZlcl9vYmoocmluZy0+YnVm ZmVyKTsKLQkJaW50ZWxfcmluZ2J1ZmZlcl9mcmVlKHJpbmctPmJ1ZmZlcik7Ci0JCXJpbmctPmJ1 ZmZlciA9IE5VTEw7CisJCWludGVsX3VucGluX3JpbmdidWZmZXJfb2JqKGVuZ2luZS0+YnVmZmVy KTsKKwkJaW50ZWxfcmluZ2J1ZmZlcl9mcmVlKGVuZ2luZS0+YnVmZmVyKTsKKwkJZW5naW5lLT5i dWZmZXIgPSBOVUxMOwogCX0KIAotCWlmIChyaW5nLT5jbGVhbnVwKQotCQlyaW5nLT5jbGVhbnVw KHJpbmcpOworCWlmIChlbmdpbmUtPmNsZWFudXApCisJCWVuZ2luZS0+Y2xlYW51cChlbmdpbmUp OwogCi0JaWYgKEk5MTVfTkVFRF9HRlhfSFdTKHJpbmctPmRldikpIHsKLQkJY2xlYW51cF9zdGF0 dXNfcGFnZShyaW5nKTsKKwlpZiAoSTkxNV9ORUVEX0dGWF9IV1MoZW5naW5lLT5kZXYpKSB7CisJ CWNsZWFudXBfc3RhdHVzX3BhZ2UoZW5naW5lKTsKIAl9IGVsc2UgewotCQlXQVJOX09OKHJpbmct PmlkICE9IFJDUyk7Ci0JCWNsZWFudXBfcGh5c19zdGF0dXNfcGFnZShyaW5nKTsKKwkJV0FSTl9P TihlbmdpbmUtPmlkICE9IFJDUyk7CisJCWNsZWFudXBfcGh5c19zdGF0dXNfcGFnZShlbmdpbmUp OwogCX0KIAotCWk5MTVfY21kX3BhcnNlcl9maW5pX3JpbmcocmluZyk7Ci0JaTkxNV9nZW1fYmF0 Y2hfcG9vbF9maW5pKCZyaW5nLT5iYXRjaF9wb29sKTsKLQlyaW5nLT5kZXYgPSBOVUxMOworCWk5 MTVfY21kX3BhcnNlcl9maW5pX3JpbmcoZW5naW5lKTsKKwlpOTE1X2dlbV9iYXRjaF9wb29sX2Zp bmkoJmVuZ2luZS0+YmF0Y2hfcG9vbCk7CisJZW5naW5lLT5kZXYgPSBOVUxMOwogfQogCi1zdGF0 aWMgaW50IHJpbmdfd2FpdF9mb3Jfc3BhY2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywg aW50IG4pCitzdGF0aWMgaW50IHJpbmdfd2FpdF9mb3Jfc3BhY2Uoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLCBpbnQgbikKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1 ZiA9IHJpbmctPmJ1ZmZlcjsKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IGVu Z2luZS0+YnVmZmVyOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKIAl1 bnNpZ25lZCBzcGFjZTsKIAlpbnQgcmV0OwpAQCAtMjMxOCwxNCArMjMyNCwxNCBAQCBzdGF0aWMg aW50IHJpbmdfd2FpdF9mb3Jfc3BhY2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgaW50 IG4pCiAJLyogVGhlIHdob2xlIHBvaW50IG9mIHJlc2VydmluZyBzcGFjZSBpcyB0byBub3Qgd2Fp dCEgKi8KIAlXQVJOX09OKHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSk7CiAKLQlsaXN0X2Zvcl9l YWNoX2VudHJ5KHJlcXVlc3QsICZyaW5nLT5yZXF1ZXN0X2xpc3QsIGxpc3QpIHsKKwlsaXN0X2Zv cl9lYWNoX2VudHJ5KHJlcXVlc3QsICZlbmdpbmUtPnJlcXVlc3RfbGlzdCwgbGlzdCkgewogCQlz cGFjZSA9IF9faW50ZWxfcmluZ19zcGFjZShyZXF1ZXN0LT5wb3N0Zml4LCByaW5nYnVmLT50YWls LAogCQkJCQkgICByaW5nYnVmLT5zaXplKTsKIAkJaWYgKHNwYWNlID49IG4pCiAJCQlicmVhazsK IAl9CiAKLQlpZiAoV0FSTl9PTigmcmVxdWVzdC0+bGlzdCA9PSAmcmluZy0+cmVxdWVzdF9saXN0 KSkKKwlpZiAoV0FSTl9PTigmcmVxdWVzdC0+bGlzdCA9PSAmZW5naW5lLT5yZXF1ZXN0X2xpc3Qp KQogCQlyZXR1cm4gLUVOT1NQQzsKIAogCXJldCA9IGk5MTVfd2FpdF9yZXF1ZXN0KHJlcXVlc3Qp OwpAQCAtMjM1MCwyMiArMjM1NiwyMiBAQCBzdGF0aWMgdm9pZCBfX3dyYXBfcmluZ19idWZmZXIo c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCiAJaW50ZWxfcmluZ191cGRhdGVfc3Bh Y2UocmluZ2J1Zik7CiB9CiAKLWludCBpbnRlbF9yaW5nX2lkbGUoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZykKK2ludCBpbnRlbF9yaW5nX2lkbGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwogCiAJLyogV2Fp dCB1cG9uIHRoZSBsYXN0IHJlcXVlc3QgdG8gYmUgY29tcGxldGVkICovCi0JaWYgKGxpc3RfZW1w dHkoJnJpbmctPnJlcXVlc3RfbGlzdCkpCisJaWYgKGxpc3RfZW1wdHkoJmVuZ2luZS0+cmVxdWVz dF9saXN0KSkKIAkJcmV0dXJuIDA7CiAKLQlyZXEgPSBsaXN0X2VudHJ5KHJpbmctPnJlcXVlc3Rf bGlzdC5wcmV2LAotCQkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0LAotCQkJbGlzdCk7CisJ cmVxID0gbGlzdF9lbnRyeShlbmdpbmUtPnJlcXVlc3RfbGlzdC5wcmV2LAorCQkJIHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCwKKwkJCSBsaXN0KTsKIAogCS8qIE1ha2Ugc3VyZSB3ZSBkbyBu b3QgdHJpZ2dlciBhbnkgcmV0aXJlcyAqLwogCXJldHVybiBfX2k5MTVfd2FpdF9yZXF1ZXN0KHJl cSwKLQkJCQkgICBhdG9taWNfcmVhZCgmdG9faTkxNShyaW5nLT5kZXYpLT5ncHVfZXJyb3IucmVz ZXRfY291bnRlciksCi0JCQkJICAgdG9faTkxNShyaW5nLT5kZXYpLT5tbS5pbnRlcnJ1cHRpYmxl LAorCQkJCSAgIGF0b21pY19yZWFkKCZ0b19pOTE1KGVuZ2luZS0+ZGV2KS0+Z3B1X2Vycm9yLnJl c2V0X2NvdW50ZXIpLAorCQkJCSAgIHRvX2k5MTUoZW5naW5lLT5kZXYpLT5tbS5pbnRlcnJ1cHRp YmxlLAogCQkJCSAgIE5VTEwsIE5VTEwpOwogfQogCkBAIC0yNDM3LDkgKzI0NDMsOSBAQCB2b2lk IGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfZW5kKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpy aW5nYnVmKQogCXJpbmdidWYtPnJlc2VydmVkX2luX3VzZSA9IGZhbHNlOwogfQogCi1zdGF0aWMg aW50IF9faW50ZWxfcmluZ19wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIGlu dCBieXRlcykKK3N0YXRpYyBpbnQgX19pbnRlbF9yaW5nX3ByZXBhcmUoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLCBpbnQgYnl0ZXMpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIg KnJpbmdidWYgPSByaW5nLT5idWZmZXI7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdi dWYgPSBlbmdpbmUtPmJ1ZmZlcjsKIAlpbnQgcmVtYWluX3VzYWJsZSA9IHJpbmdidWYtPmVmZmVj dGl2ZV9zaXplIC0gcmluZ2J1Zi0+dGFpbDsKIAlpbnQgcmVtYWluX2FjdHVhbCA9IHJpbmdidWYt PnNpemUgLSByaW5nYnVmLT50YWlsOwogCWludCByZXQsIHRvdGFsX2J5dGVzLCB3YWl0X2J5dGVz ID0gMDsKQEAgLTI0NzMsNyArMjQ3OSw3IEBAIHN0YXRpYyBpbnQgX19pbnRlbF9yaW5nX3ByZXBh cmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgaW50IGJ5dGVzKQogCX0KIAogCWlmICh3 YWl0X2J5dGVzKSB7Ci0JCXJldCA9IHJpbmdfd2FpdF9mb3Jfc3BhY2UocmluZywgd2FpdF9ieXRl cyk7CisJCXJldCA9IHJpbmdfd2FpdF9mb3Jfc3BhY2UoZW5naW5lLCB3YWl0X2J5dGVzKTsKIAkJ aWYgKHVubGlrZWx5KHJldCkpCiAJCQlyZXR1cm4gcmV0OwogCkBAIC0yNTMxLDI2ICsyNTM3LDI2 IEBAIGludCBpbnRlbF9yaW5nX2NhY2hlbGluZV9hbGlnbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSkKIAlyZXR1cm4gMDsKIH0KIAotdm9pZCBpbnRlbF9yaW5nX2luaXRfc2Vxbm8o c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgdTMyIHNlcW5vKQordm9pZCBpbnRlbF9yaW5n X2luaXRfc2Vxbm8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgc2Vxbm8pCiB7 Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHJpbmctPmRldjsKKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gZW5naW5lLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAogCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA9PSA2IHx8 IElOVEVMX0lORk8oZGV2KS0+Z2VuID09IDcpIHsKLQkJSTkxNV9XUklURShSSU5HX1NZTkNfMChy aW5nLT5tbWlvX2Jhc2UpLCAwKTsKLQkJSTkxNV9XUklURShSSU5HX1NZTkNfMShyaW5nLT5tbWlv X2Jhc2UpLCAwKTsKKwkJSTkxNV9XUklURShSSU5HX1NZTkNfMChlbmdpbmUtPm1taW9fYmFzZSks IDApOworCQlJOTE1X1dSSVRFKFJJTkdfU1lOQ18xKGVuZ2luZS0+bW1pb19iYXNlKSwgMCk7CiAJ CWlmIChIQVNfVkVCT1goZGV2KSkKLQkJCUk5MTVfV1JJVEUoUklOR19TWU5DXzIocmluZy0+bW1p b19iYXNlKSwgMCk7CisJCQlJOTE1X1dSSVRFKFJJTkdfU1lOQ18yKGVuZ2luZS0+bW1pb19iYXNl KSwgMCk7CiAJfQogCi0JcmluZy0+c2V0X3NlcW5vKHJpbmcsIHNlcW5vKTsKLQlyaW5nLT5oYW5n Y2hlY2suc2Vxbm8gPSBzZXFubzsKKwllbmdpbmUtPnNldF9zZXFubyhlbmdpbmUsIHNlcW5vKTsK KwllbmdpbmUtPmhhbmdjaGVjay5zZXFubyA9IHNlcW5vOwogfQogCi1zdGF0aWMgdm9pZCBnZW42 X2JzZF9yaW5nX3dyaXRlX3RhaWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKK3N0YXRp YyB2b2lkIGdlbjZfYnNkX3Jpbmdfd3JpdGVfdGFpbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCiAJCQkJICAgICB1MzIgdmFsdWUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gcmluZy0+ZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmRldi0+ZGV2X3ByaXZhdGU7CiAKICAgICAgICAvKiBF dmVyeSB0YWlsIG1vdmUgbXVzdCBmb2xsb3cgdGhlIHNlcXVlbmNlIGJlbG93ICovCiAKQEAgLTI1 NzAsOCArMjU3Niw4IEBAIHN0YXRpYyB2b2lkIGdlbjZfYnNkX3Jpbmdfd3JpdGVfdGFpbChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogCQlEUk1fRVJST1IoInRpbWVkIG91dCB3YWl0aW5n IGZvciB0aGUgQlNEIHJpbmcgdG8gd2FrZSB1cFxuIik7CiAKIAkvKiBOb3cgdGhhdCB0aGUgcmlu ZyBpcyBmdWxseSBwb3dlcmVkIHVwLCB1cGRhdGUgdGhlIHRhaWwgKi8KLQlJOTE1X1dSSVRFX1RB SUwocmluZywgdmFsdWUpOwotCVBPU1RJTkdfUkVBRChSSU5HX1RBSUwocmluZy0+bW1pb19iYXNl KSk7CisJSTkxNV9XUklURV9UQUlMKGVuZ2luZSwgdmFsdWUpOworCVBPU1RJTkdfUkVBRChSSU5H X1RBSUwoZW5naW5lLT5tbWlvX2Jhc2UpKTsKIAogCS8qIExldCB0aGUgcmluZyBzZW5kIElETEUg bWVzc2FnZXMgdG8gdGhlIEdUIGFnYWluLAogCSAqIGFuZCBzbyBsZXQgaXQgc2xlZXAgdG8gY29u c2VydmUgcG93ZXIgd2hlbiBpZGxlLgpAQCAtMzE1NywxNyArMzE2MywxNyBAQCBpbnRlbF9yaW5n X2ludmFsaWRhdGVfYWxsX2NhY2hlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkK IH0KIAogdm9pZAotaW50ZWxfc3RvcF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nKQoraW50ZWxfc3RvcF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCiB7CiAJaW50IHJldDsKIAotCWlmICghaW50ZWxfcmluZ19pbml0aWFsaXplZChyaW5n KSkKKwlpZiAoIWludGVsX3JpbmdfaW5pdGlhbGl6ZWQoZW5naW5lKSkKIAkJcmV0dXJuOwogCi0J cmV0ID0gaW50ZWxfcmluZ19pZGxlKHJpbmcpOwotCWlmIChyZXQgJiYgIWk5MTVfcmVzZXRfaW5f cHJvZ3Jlc3MoJnRvX2k5MTUocmluZy0+ZGV2KS0+Z3B1X2Vycm9yKSkKKwlyZXQgPSBpbnRlbF9y aW5nX2lkbGUoZW5naW5lKTsKKwlpZiAocmV0ICYmICFpOTE1X3Jlc2V0X2luX3Byb2dyZXNzKCZ0 b19pOTE1KGVuZ2luZS0+ZGV2KS0+Z3B1X2Vycm9yKSkKIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8g cXVpZXNjZSAlcyB3aGlsc3QgY2xlYW5pbmcgdXA6ICVkXG4iLAotCQkJICByaW5nLT5uYW1lLCBy ZXQpOworCQkJICBlbmdpbmUtPm5hbWUsIHJldCk7CiAKLQlzdG9wX3JpbmcocmluZyk7CisJc3Rv cF9yaW5nKGVuZ2luZSk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgK aW5kZXggMjRlZmI1N2RjZDdkLi40ODQ4NDYzOWM5ZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmgKQEAgLTM1NSwxOSArMzU1LDE5IEBAIHN0cnVjdCAgaW50ZWxfZW5n aW5lX2NzIHsKIH07CiAKIHN0YXRpYyBpbmxpbmUgYm9vbAotaW50ZWxfcmluZ19pbml0aWFsaXpl ZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQoraW50ZWxfcmluZ19pbml0aWFsaXplZChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0JcmV0dXJuIHJpbmctPmRldiAhPSBO VUxMOworCXJldHVybiBlbmdpbmUtPmRldiAhPSBOVUxMOwogfQogCiBzdGF0aWMgaW5saW5lIHVu c2lnbmVkCi1pbnRlbF9yaW5nX2ZsYWcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKK2lu dGVsX3JpbmdfZmxhZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0JcmV0dXJu IDEgPDwgcmluZy0+aWQ7CisJcmV0dXJuIDEgPDwgZW5naW5lLT5pZDsKIH0KIAogc3RhdGljIGlu bGluZSB1MzIKLWludGVsX3Jpbmdfc3luY19pbmRleChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpy aW5nLAoraW50ZWxfcmluZ19zeW5jX2luZGV4KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKIAkJICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqb3RoZXIpCiB7CiAJaW50IGlkeDsK QEAgLTM4MCw3ICszODAsNyBAQCBpbnRlbF9yaW5nX3N5bmNfaW5kZXgoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZywKIAkgKiB2Y3MyIC0+IDAgPSByY3MsIDEgPSB2Y3MsIDIgPSBiY3MsIDMg PSB2ZWNzOwogCSAqLwogCi0JaWR4ID0gKG90aGVyIC0gcmluZykgLSAxOworCWlkeCA9IChvdGhl ciAtIGVuZ2luZSkgLSAxOwogCWlmIChpZHggPCAwKQogCQlpZHggKz0gSTkxNV9OVU1fUklOR1M7 CiAKQEAgLTM4OCwyNiArMzg4LDI2IEBAIGludGVsX3Jpbmdfc3luY19pbmRleChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nLAogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQKLWludGVsX2ZsdXNo X3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIGludCByZWcpCitpbnRl bF9mbHVzaF9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGludCBy ZWcpCiB7Ci0JZHJtX2NsZmx1c2hfdmlydF9yYW5nZSgmcmluZy0+c3RhdHVzX3BhZ2UucGFnZV9h ZGRyW3JlZ10sCisJZHJtX2NsZmx1c2hfdmlydF9yYW5nZSgmZW5naW5lLT5zdGF0dXNfcGFnZS5w YWdlX2FkZHJbcmVnXSwKIAkJCSAgICAgICBzaXplb2YodWludDMyX3QpKTsKIH0KIAogc3RhdGlj IGlubGluZSB1MzIKLWludGVsX3JlYWRfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZywKK2ludGVsX3JlYWRfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLAogCQkgICAgICAgaW50IHJlZykKIHsKIAkvKiBFbnN1cmUgdGhhdCB0aGUgY29tcGls ZXIgZG9lc24ndCBvcHRpbWl6ZSBhd2F5IHRoZSBsb2FkLiAqLwogCWJhcnJpZXIoKTsKLQlyZXR1 cm4gcmluZy0+c3RhdHVzX3BhZ2UucGFnZV9hZGRyW3JlZ107CisJcmV0dXJuIGVuZ2luZS0+c3Rh dHVzX3BhZ2UucGFnZV9hZGRyW3JlZ107CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZAotaW50ZWxf d3JpdGVfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKK2ludGVsX3dy aXRlX3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCWludCBy ZWcsIHUzMiB2YWx1ZSkKIHsKLQlyaW5nLT5zdGF0dXNfcGFnZS5wYWdlX2FkZHJbcmVnXSA9IHZh bHVlOworCWVuZ2luZS0+c3RhdHVzX3BhZ2UucGFnZV9hZGRyW3JlZ10gPSB2YWx1ZTsKIH0KIAog LyoKQEAgLTQzOCw0MiArNDM4LDQyIEBAIGludCBpbnRlbF9waW5fYW5kX21hcF9yaW5nYnVmZmVy X29iaihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogdm9pZCBpbnRlbF91bnBpbl9yaW5nYnVmZmVy X29iaihzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1Zik7CiB2b2lkIGludGVsX3Jpbmdi dWZmZXJfZnJlZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyk7CiAKLXZvaWQgaW50ZWxf c3RvcF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKLXZvaWQgaW50 ZWxfY2xlYW51cF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKK3Zv aWQgaW50ZWxfc3RvcF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Owordm9pZCBpbnRlbF9jbGVhbnVwX3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSk7CiAKIGludCBpbnRlbF9yaW5nX2FsbG9jX3JlcXVlc3RfZXh0cmFzKHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCk7CiAKIGludCBfX211c3RfY2hlY2sgaW50ZWxf cmluZ19iZWdpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IG4pOwogaW50 IF9fbXVzdF9jaGVjayBpbnRlbF9yaW5nX2NhY2hlbGluZV9hbGlnbihzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSk7Ci1zdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfcmluZ19lbWl0KHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCitzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfcmlu Z19lbWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCQkgICB1MzIgZGF0YSkK IHsKLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJpbmctPmJ1ZmZlcjsKKwlz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IGVuZ2luZS0+YnVmZmVyOwogCWlvd3Jp dGUzMihkYXRhLCByaW5nYnVmLT52aXJ0dWFsX3N0YXJ0ICsgcmluZ2J1Zi0+dGFpbCk7CiAJcmlu Z2J1Zi0+dGFpbCArPSA0OwogfQotc3RhdGljIGlubGluZSB2b2lkIGludGVsX3JpbmdfZW1pdF9y ZWcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnRl bF9yaW5nX2VtaXRfcmVnKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCQkgICAg ICAgaTkxNV9yZWdfdCByZWcpCiB7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGk5MTVfbW1pb19y ZWdfb2Zmc2V0KHJlZykpOworCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGk5MTVfbW1pb19yZWdf b2Zmc2V0KHJlZykpOwogfQotc3RhdGljIGlubGluZSB2b2lkIGludGVsX3JpbmdfYWR2YW5jZShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQorc3RhdGljIGlubGluZSB2b2lkIGludGVsX3Jp bmdfYWR2YW5jZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByaW5nLT5idWZmZXI7CisJc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKnJpbmdidWYgPSBlbmdpbmUtPmJ1ZmZlcjsKIAlyaW5nYnVmLT50YWlsICY9IHJp bmdidWYtPnNpemUgLSAxOwogfQogaW50IF9faW50ZWxfcmluZ19zcGFjZShpbnQgaGVhZCwgaW50 IHRhaWwsIGludCBzaXplKTsKIHZvaWQgaW50ZWxfcmluZ191cGRhdGVfc3BhY2Uoc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgKnJpbmdidWYpOwogaW50IGludGVsX3Jpbmdfc3BhY2Uoc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgKnJpbmdidWYpOwotYm9vbCBpbnRlbF9yaW5nX3N0b3BwZWQoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZyk7Citib29sIGludGVsX3Jpbmdfc3RvcHBlZChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogCi1pbnQgX19tdXN0X2NoZWNrIGludGVsX3Jpbmdf aWRsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKLXZvaWQgaW50ZWxfcmluZ19pbml0 X3NlcW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIHUzMiBzZXFubyk7CitpbnQgX19t dXN0X2NoZWNrIGludGVsX3JpbmdfaWRsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Owordm9pZCBpbnRlbF9yaW5nX2luaXRfc2Vxbm8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLCB1MzIgc2Vxbm8pOwogaW50IGludGVsX3JpbmdfZmx1c2hfYWxsX2NhY2hlcyhzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7CiBpbnQgaW50ZWxfcmluZ19pbnZhbGlkYXRlX2Fs bF9jYWNoZXMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpOwogCi12b2lkIGludGVs X2ZpbmlfcGlwZV9jb250cm9sKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwotaW50IGlu dGVsX2luaXRfcGlwZV9jb250cm9sKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwordm9p ZCBpbnRlbF9maW5pX3BpcGVfY29udHJvbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp OworaW50IGludGVsX2luaXRfcGlwZV9jb250cm9sKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSk7CiAKIGludCBpbnRlbF9pbml0X3JlbmRlcl9yaW5nX2J1ZmZlcihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsKIGludCBpbnRlbF9pbml0X2JzZF9yaW5nX2J1ZmZlcihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsKQEAgLTQ4MSw5ICs0ODEsOSBAQCBpbnQgaW50ZWxfaW5pdF9ic2QyX3Jpbmdf YnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogaW50IGludGVsX2luaXRfYmx0X3Jpbmdf YnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogaW50IGludGVsX2luaXRfdmVib3hfcmlu Z19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiAKLXU2NCBpbnRlbF9yaW5nX2dldF9h Y3RpdmVfaGVhZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKK3U2NCBpbnRlbF9yaW5n X2dldF9hY3RpdmVfaGVhZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogCi1pbnQg aW5pdF93b3JrYXJvdW5kc19yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOworaW50 IGluaXRfd29ya2Fyb3VuZHNfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwog CiBzdGF0aWMgaW5saW5lIHUzMiBpbnRlbF9yaW5nX2dldF90YWlsKHN0cnVjdCBpbnRlbF9yaW5n YnVmZmVyICpyaW5nYnVmKQogewotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=