From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH v4.1 1/5] drm/atomic: Fix atomic helpers to use the new iterator macros, v3. Date: Wed, 1 Mar 2017 10:21:26 +0100 Message-ID: References: <1487256430-7625-1-git-send-email-maarten.lankhorst@linux.intel.com> <1487256430-7625-2-git-send-email-maarten.lankhorst@linux.intel.com> <2300823.Tk3Sl1JXBV@avalon> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <2300823.Tk3Sl1JXBV@avalon> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Laurent Pinchart , dri-devel@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VGhlcmUgYXJlIG5ldyBpdGVyYXRvciBtYWNyb3MgdGhhdCBhbm5vdGF0ZSB3aGV0aGVyIHRoZSBu ZXcgb3Igb2xkCnN0YXRlIHNob3VsZCBiZSB1c2VkLiBUaGlzIGlzIGJldHRlciB0aGFuIHVzaW5n IGEgc3RhdGUgdGhhdCBkZXBlbmRzIG9uCndoZXRoZXIgaXQncyBjYWxsZWQgYmVmb3JlIG9yIGFm dGVyIHN3YXAuIEZvciBjbGFyaXR5LCBhbHNvIHJlbmFtZSB0aGUKdmFyaWFibGVzIGZyb20gJG9i al9zdGF0ZSB0byAob2xkLG5ldylfJG9ial9zdGF0ZSBhcyB3ZWxsLgoKQ2hhbmdlcyBzaW5jZSB2 MToKLSBVc2Ugb2xkL25ld18qX3N0YXRlIGZvciB2YXJpYWJsZSBuYW1lcyBhcyBtdWNoIGFzIHBv c3NpYmxlLiAocGluY2hhcnRsKQotIEV4cGFuZCBjb21taXQgbWVzc2FnZS4KQ2hhbmdlcyBzaW5j ZSB2MjoKLSBSZWJhc2Ugb24gdG9wIG9mIGxpbmsgdHJhaW5pbmcgcGF0Y2hlcy4KLSBmcmVlIC0+ IGNsZWFudXAgKHBpbmNoYXJ0bCkKClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxt YWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+ClJldmlld2VkLWJ5OiBMYXVyZW50IFBp bmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+Ci0tLQogZHJpdmVycy9n cHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgfCA0NDYgKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjMwIGluc2VydGlvbnMoKyksIDIxNiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIu YyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCmluZGV4IDZiMTIzOTZmNzE4 Yi4uYWExZTc2MDliMDI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19o ZWxwZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwpAQCAtNjMs MTQgKzYzLDE1IEBACiAgKi8KIHN0YXRpYyB2b2lkCiBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9j aGFuZ2VkKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKKwkJCQlzdHJ1Y3QgZHJtX3Bs YW5lX3N0YXRlICpvbGRfcGxhbmVfc3RhdGUsCiAJCQkJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUsCiAJCQkJc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiB7CiAJc3RydWN0IGRy bV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwogCi0JaWYgKHBsYW5lLT5zdGF0ZS0+Y3J0Yykgewor CWlmIChvbGRfcGxhbmVfc3RhdGUtPmNydGMpIHsKIAkJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNf Z2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUsCi0JCQkJCQkJCXBsYW5lLT5zdGF0ZS0+Y3J0 Yyk7CisJCQkJCQkJCW9sZF9wbGFuZV9zdGF0ZS0+Y3J0Yyk7CiAKIAkJaWYgKFdBUk5fT04oIWNy dGNfc3RhdGUpKQogCQkJcmV0dXJuOwpAQCAtOTIsNyArOTMsNyBAQCBkcm1fYXRvbWljX2hlbHBl cl9wbGFuZV9jaGFuZ2VkKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKIHN0YXRpYyBp bnQgaGFuZGxlX2NvbmZsaWN0aW5nX2VuY29kZXJzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSwKIAkJCQkgICAgICAgYm9vbCBkaXNhYmxlX2NvbmZsaWN0aW5nX2VuY29kZXJzKQogewot CXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOworCXN0cnVjdCBkcm1fY29u bmVjdG9yX3N0YXRlICpuZXdfY29ubl9zdGF0ZTsKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yOwogCXN0cnVjdCBkcm1fY29ubmVjdG9yX2xpc3RfaXRlciBjb25uX2l0ZXI7CiAJc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwpAQCAtMTA0LDE1ICsxMDUsMTUgQEAgc3RhdGljIGlu dCBoYW5kbGVfY29uZmxpY3RpbmdfZW5jb2RlcnMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlLAogCSAqIHBhcnQgb2YgdGhlIHN0YXRlLiBJZiB0aGUgc2FtZSBlbmNvZGVyIGlzIGFzc2ln bmVkIHRvIG11bHRpcGxlCiAJICogY29ubmVjdG9ycyBiYWlsIG91dC4KIAkgKi8KLQlmb3JfZWFj aF9jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3RvciwgY29ubl9zdGF0ZSwgaSkgewor CWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3RvciwgbmV3X2Nv bm5fc3RhdGUsIGkpIHsKIAkJY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNz ICpmdW5jcyA9IGNvbm5lY3Rvci0+aGVscGVyX3ByaXZhdGU7CiAJCXN0cnVjdCBkcm1fZW5jb2Rl ciAqbmV3X2VuY29kZXI7CiAKLQkJaWYgKCFjb25uX3N0YXRlLT5jcnRjKQorCQlpZiAoIW5ld19j b25uX3N0YXRlLT5jcnRjKQogCQkJY29udGludWU7CiAKIAkJaWYgKGZ1bmNzLT5hdG9taWNfYmVz dF9lbmNvZGVyKQotCQkJbmV3X2VuY29kZXIgPSBmdW5jcy0+YXRvbWljX2Jlc3RfZW5jb2Rlcihj b25uZWN0b3IsIGNvbm5fc3RhdGUpOworCQkJbmV3X2VuY29kZXIgPSBmdW5jcy0+YXRvbWljX2Jl c3RfZW5jb2Rlcihjb25uZWN0b3IsIG5ld19jb25uX3N0YXRlKTsKIAkJZWxzZSBpZiAoZnVuY3Mt PmJlc3RfZW5jb2RlcikKIAkJCW5ld19lbmNvZGVyID0gZnVuY3MtPmJlc3RfZW5jb2Rlcihjb25u ZWN0b3IpOwogCQllbHNlCkBAIC0xNjYsMjAgKzE2NywyMCBAQCBzdGF0aWMgaW50IGhhbmRsZV9j b25mbGljdGluZ19lbmNvZGVycyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJCQln b3RvIG91dDsKIAkJfQogCi0JCWNvbm5fc3RhdGUgPSBkcm1fYXRvbWljX2dldF9jb25uZWN0b3Jf c3RhdGUoc3RhdGUsIGNvbm5lY3Rvcik7Ci0JCWlmIChJU19FUlIoY29ubl9zdGF0ZSkpIHsKLQkJ CXJldCA9IFBUUl9FUlIoY29ubl9zdGF0ZSk7CisJCW5ld19jb25uX3N0YXRlID0gZHJtX2F0b21p Y19nZXRfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IpOworCQlpZiAoSVNfRVJSKG5l d19jb25uX3N0YXRlKSkgeworCQkJcmV0ID0gUFRSX0VSUihuZXdfY29ubl9zdGF0ZSk7CiAJCQln b3RvIG91dDsKIAkJfQogCiAJCURSTV9ERUJVR19BVE9NSUMoIltFTkNPREVSOiVkOiVzXSBpbiB1 c2Ugb24gW0NSVEM6JWQ6JXNdLCBkaXNhYmxpbmcgW0NPTk5FQ1RPUjolZDolc11cbiIsCiAJCQkJ IGVuY29kZXItPmJhc2UuaWQsIGVuY29kZXItPm5hbWUsCi0JCQkJIGNvbm5fc3RhdGUtPmNydGMt PmJhc2UuaWQsIGNvbm5fc3RhdGUtPmNydGMtPm5hbWUsCisJCQkJIG5ld19jb25uX3N0YXRlLT5j cnRjLT5iYXNlLmlkLCBuZXdfY29ubl9zdGF0ZS0+Y3J0Yy0+bmFtZSwKIAkJCQkgY29ubmVjdG9y LT5iYXNlLmlkLCBjb25uZWN0b3ItPm5hbWUpOwogCi0JCWNydGNfc3RhdGUgPSBkcm1fYXRvbWlj X2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLCBjb25uX3N0YXRlLT5jcnRjKTsKKwkJY3J0 Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUsIG5ld19j b25uX3N0YXRlLT5jcnRjKTsKIAotCQlyZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9jb25u ZWN0b3IoY29ubl9zdGF0ZSwgTlVMTCk7CisJCXJldCA9IGRybV9hdG9taWNfc2V0X2NydGNfZm9y X2Nvbm5lY3RvcihuZXdfY29ubl9zdGF0ZSwgTlVMTCk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIG91 dDsKIApAQCAtMjQ1LDIyICsyNDYsMjIgQEAgc3RlYWxfZW5jb2RlcihzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUsCiB7CiAJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwog CXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Ci0Jc3RydWN0IGRybV9jb25uZWN0b3Jf c3RhdGUgKmNvbm5lY3Rvcl9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xk X2Nvbm5lY3Rvcl9zdGF0ZSwgKm5ld19jb25uZWN0b3Jfc3RhdGU7CiAJaW50IGk7CiAKLQlmb3Jf ZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3RvciwgY29ubmVjdG9yX3N0YXRl LCBpKSB7CisJZm9yX2VhY2hfb2xkbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubmVj dG9yLCBvbGRfY29ubmVjdG9yX3N0YXRlLCBuZXdfY29ubmVjdG9yX3N0YXRlLCBpKSB7CiAJCXN0 cnVjdCBkcm1fY3J0YyAqZW5jb2Rlcl9jcnRjOwogCi0JCWlmIChjb25uZWN0b3Jfc3RhdGUtPmJl c3RfZW5jb2RlciAhPSBlbmNvZGVyKQorCQlpZiAobmV3X2Nvbm5lY3Rvcl9zdGF0ZS0+YmVzdF9l bmNvZGVyICE9IGVuY29kZXIpCiAJCQljb250aW51ZTsKIAotCQllbmNvZGVyX2NydGMgPSBjb25u ZWN0b3ItPnN0YXRlLT5jcnRjOworCQllbmNvZGVyX2NydGMgPSBvbGRfY29ubmVjdG9yX3N0YXRl LT5jcnRjOwogCiAJCURSTV9ERUJVR19BVE9NSUMoIltFTkNPREVSOiVkOiVzXSBpbiB1c2Ugb24g W0NSVEM6JWQ6JXNdLCBzdGVhbGluZyBpdFxuIiwKIAkJCQkgZW5jb2Rlci0+YmFzZS5pZCwgZW5j b2Rlci0+bmFtZSwKIAkJCQkgZW5jb2Rlcl9jcnRjLT5iYXNlLmlkLCBlbmNvZGVyX2NydGMtPm5h bWUpOwogCi0JCXNldF9iZXN0X2VuY29kZXIoc3RhdGUsIGNvbm5lY3Rvcl9zdGF0ZSwgTlVMTCk7 CisJCXNldF9iZXN0X2VuY29kZXIoc3RhdGUsIG5ld19jb25uZWN0b3Jfc3RhdGUsIE5VTEwpOwog CiAJCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRl LCBlbmNvZGVyX2NydGMpOwogCQljcnRjX3N0YXRlLT5jb25uZWN0b3JzX2NoYW5nZWQgPSB0cnVl OwpAQCAtMjcyLDcgKzI3Myw4IEBAIHN0ZWFsX2VuY29kZXIoc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlLAogc3RhdGljIGludAogdXBkYXRlX2Nvbm5lY3Rvcl9yb3V0aW5nKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yLAotCQkJIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGUpCisJ CQkgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25uZWN0b3Jfc3RhdGUsCisJCQkg c3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm5ld19jb25uZWN0b3Jfc3RhdGUpCiB7CiAJY29u c3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzICpmdW5jczsKIAlzdHJ1Y3QgZHJt X2VuY29kZXIgKm5ld19lbmNvZGVyOwpAQCAtMjgyLDI0ICsyODQsMjQgQEAgdXBkYXRlX2Nvbm5l Y3Rvcl9yb3V0aW5nKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJCSBjb25uZWN0 b3ItPmJhc2UuaWQsCiAJCQkgY29ubmVjdG9yLT5uYW1lKTsKIAotCWlmIChjb25uZWN0b3ItPnN0 YXRlLT5jcnRjICE9IGNvbm5lY3Rvcl9zdGF0ZS0+Y3J0YykgewotCQlpZiAoY29ubmVjdG9yLT5z dGF0ZS0+Y3J0YykgewotCQkJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2Ny dGNfc3RhdGUoc3RhdGUsIGNvbm5lY3Rvci0+c3RhdGUtPmNydGMpOworCWlmIChvbGRfY29ubmVj dG9yX3N0YXRlLT5jcnRjICE9IG5ld19jb25uZWN0b3Jfc3RhdGUtPmNydGMpIHsKKwkJaWYgKG9s ZF9jb25uZWN0b3Jfc3RhdGUtPmNydGMpIHsKKwkJCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dl dF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLCBvbGRfY29ubmVjdG9yX3N0YXRlLT5jcnRjKTsK IAkJCWNydGNfc3RhdGUtPmNvbm5lY3RvcnNfY2hhbmdlZCA9IHRydWU7CiAJCX0KIAotCQlpZiAo Y29ubmVjdG9yX3N0YXRlLT5jcnRjKSB7Ci0JCQljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRf ZXhpc3RpbmdfY3J0Y19zdGF0ZShzdGF0ZSwgY29ubmVjdG9yX3N0YXRlLT5jcnRjKTsKKwkJaWYg KG5ld19jb25uZWN0b3Jfc3RhdGUtPmNydGMpIHsKKwkJCWNydGNfc3RhdGUgPSBkcm1fYXRvbWlj X2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLCBuZXdfY29ubmVjdG9yX3N0YXRlLT5jcnRj KTsKIAkJCWNydGNfc3RhdGUtPmNvbm5lY3RvcnNfY2hhbmdlZCA9IHRydWU7CiAJCX0KIAl9CiAK LQlpZiAoIWNvbm5lY3Rvcl9zdGF0ZS0+Y3J0YykgeworCWlmICghbmV3X2Nvbm5lY3Rvcl9zdGF0 ZS0+Y3J0YykgewogCQlEUk1fREVCVUdfQVRPTUlDKCJEaXNhYmxpbmcgW0NPTk5FQ1RPUjolZDol c11cbiIsCiAJCQkJY29ubmVjdG9yLT5iYXNlLmlkLAogCQkJCWNvbm5lY3Rvci0+bmFtZSk7CiAK LQkJc2V0X2Jlc3RfZW5jb2RlcihzdGF0ZSwgY29ubmVjdG9yX3N0YXRlLCBOVUxMKTsKKwkJc2V0 X2Jlc3RfZW5jb2RlcihzdGF0ZSwgbmV3X2Nvbm5lY3Rvcl9zdGF0ZSwgTlVMTCk7CiAKIAkJcmV0 dXJuIDA7CiAJfQpAQCAtMzA4LDcgKzMxMCw3IEBAIHVwZGF0ZV9jb25uZWN0b3Jfcm91dGluZyhz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAKIAlpZiAoZnVuY3MtPmF0b21pY19iZXN0 X2VuY29kZXIpCiAJCW5ld19lbmNvZGVyID0gZnVuY3MtPmF0b21pY19iZXN0X2VuY29kZXIoY29u bmVjdG9yLAotCQkJCQkJCSBjb25uZWN0b3Jfc3RhdGUpOworCQkJCQkJCSBuZXdfY29ubmVjdG9y X3N0YXRlKTsKIAllbHNlIGlmIChmdW5jcy0+YmVzdF9lbmNvZGVyKQogCQluZXdfZW5jb2RlciA9 IGZ1bmNzLT5iZXN0X2VuY29kZXIoY29ubmVjdG9yKTsKIAllbHNlCkBAIC0zMjEsMzQgKzMyMywz NCBAQCB1cGRhdGVfY29ubmVjdG9yX3JvdXRpbmcoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlLAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlpZiAoIWRybV9lbmNvZGVyX2NydGNfb2so bmV3X2VuY29kZXIsIGNvbm5lY3Rvcl9zdGF0ZS0+Y3J0YykpIHsKKwlpZiAoIWRybV9lbmNvZGVy X2NydGNfb2sobmV3X2VuY29kZXIsIG5ld19jb25uZWN0b3Jfc3RhdGUtPmNydGMpKSB7CiAJCURS TV9ERUJVR19BVE9NSUMoIltFTkNPREVSOiVkOiVzXSBpbmNvbXBhdGlibGUgd2l0aCBbQ1JUQzol ZDolc11cbiIsCiAJCQkJIG5ld19lbmNvZGVyLT5iYXNlLmlkLAogCQkJCSBuZXdfZW5jb2Rlci0+ bmFtZSwKLQkJCQkgY29ubmVjdG9yX3N0YXRlLT5jcnRjLT5iYXNlLmlkLAotCQkJCSBjb25uZWN0 b3Jfc3RhdGUtPmNydGMtPm5hbWUpOworCQkJCSBuZXdfY29ubmVjdG9yX3N0YXRlLT5jcnRjLT5i YXNlLmlkLAorCQkJCSBuZXdfY29ubmVjdG9yX3N0YXRlLT5jcnRjLT5uYW1lKTsKIAkJcmV0dXJu IC1FSU5WQUw7CiAJfQogCi0JaWYgKG5ld19lbmNvZGVyID09IGNvbm5lY3Rvcl9zdGF0ZS0+YmVz dF9lbmNvZGVyKSB7Ci0JCXNldF9iZXN0X2VuY29kZXIoc3RhdGUsIGNvbm5lY3Rvcl9zdGF0ZSwg bmV3X2VuY29kZXIpOworCWlmIChuZXdfZW5jb2RlciA9PSBuZXdfY29ubmVjdG9yX3N0YXRlLT5i ZXN0X2VuY29kZXIpIHsKKwkJc2V0X2Jlc3RfZW5jb2RlcihzdGF0ZSwgbmV3X2Nvbm5lY3Rvcl9z dGF0ZSwgbmV3X2VuY29kZXIpOwogCiAJCURSTV9ERUJVR19BVE9NSUMoIltDT05ORUNUT1I6JWQ6 JXNdIGtlZXBzIFtFTkNPREVSOiVkOiVzXSwgbm93IG9uIFtDUlRDOiVkOiVzXVxuIiwKIAkJCQkg Y29ubmVjdG9yLT5iYXNlLmlkLAogCQkJCSBjb25uZWN0b3ItPm5hbWUsCiAJCQkJIG5ld19lbmNv ZGVyLT5iYXNlLmlkLAogCQkJCSBuZXdfZW5jb2Rlci0+bmFtZSwKLQkJCQkgY29ubmVjdG9yX3N0 YXRlLT5jcnRjLT5iYXNlLmlkLAotCQkJCSBjb25uZWN0b3Jfc3RhdGUtPmNydGMtPm5hbWUpOwor CQkJCSBuZXdfY29ubmVjdG9yX3N0YXRlLT5jcnRjLT5iYXNlLmlkLAorCQkJCSBuZXdfY29ubmVj dG9yX3N0YXRlLT5jcnRjLT5uYW1lKTsKIAogCQlyZXR1cm4gMDsKIAl9CiAKIAlzdGVhbF9lbmNv ZGVyKHN0YXRlLCBuZXdfZW5jb2Rlcik7CiAKLQlzZXRfYmVzdF9lbmNvZGVyKHN0YXRlLCBjb25u ZWN0b3Jfc3RhdGUsIG5ld19lbmNvZGVyKTsKKwlzZXRfYmVzdF9lbmNvZGVyKHN0YXRlLCBuZXdf Y29ubmVjdG9yX3N0YXRlLCBuZXdfZW5jb2Rlcik7CiAKLQljcnRjX3N0YXRlID0gZHJtX2F0b21p Y19nZXRfZXhpc3RpbmdfY3J0Y19zdGF0ZShzdGF0ZSwgY29ubmVjdG9yX3N0YXRlLT5jcnRjKTsK KwljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfZXhpc3RpbmdfY3J0Y19zdGF0ZShzdGF0ZSwg bmV3X2Nvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yyk7CiAJY3J0Y19zdGF0ZS0+Y29ubmVjdG9yc19jaGFu Z2VkID0gdHJ1ZTsKIAogCURSTV9ERUJVR19BVE9NSUMoIltDT05ORUNUT1I6JWQ6JXNdIHVzaW5n IFtFTkNPREVSOiVkOiVzXSBvbiBbQ1JUQzolZDolc11cbiIsCkBAIC0zNTYsOCArMzU4LDggQEAg dXBkYXRlX2Nvbm5lY3Rvcl9yb3V0aW5nKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwK IAkJCSBjb25uZWN0b3ItPm5hbWUsCiAJCQkgbmV3X2VuY29kZXItPmJhc2UuaWQsCiAJCQkgbmV3 X2VuY29kZXItPm5hbWUsCi0JCQkgY29ubmVjdG9yX3N0YXRlLT5jcnRjLT5iYXNlLmlkLAotCQkJ IGNvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yy0+bmFtZSk7CisJCQkgbmV3X2Nvbm5lY3Rvcl9zdGF0ZS0+ Y3J0Yy0+YmFzZS5pZCwKKwkJCSBuZXdfY29ubmVjdG9yX3N0YXRlLT5jcnRjLT5uYW1lKTsKIAog CXJldHVybiAwOwogfQpAQCAtMzY2LDU3ICszNjgsNTcgQEAgc3RhdGljIGludAogbW9kZV9maXh1 cChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0IGRybV9jcnRjICpj cnRjOwotCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwogCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3I7Ci0Jc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGU7CisJc3RydWN0IGRy bV9jb25uZWN0b3Jfc3RhdGUgKm5ld19jb25uX3N0YXRlOwogCWludCBpOwogCWludCByZXQ7CiAK LQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Ci0J CWlmICghY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkICYmCi0JCSAgICAhY3J0Y19zdGF0ZS0+Y29u bmVjdG9yc19jaGFuZ2VkKQorCWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRj LCBuZXdfY3J0Y19zdGF0ZSwgaSkgeworCQlpZiAoIW5ld19jcnRjX3N0YXRlLT5tb2RlX2NoYW5n ZWQgJiYKKwkJICAgICFuZXdfY3J0Y19zdGF0ZS0+Y29ubmVjdG9yc19jaGFuZ2VkKQogCQkJY29u dGludWU7CiAKLQkJZHJtX21vZGVfY29weSgmY3J0Y19zdGF0ZS0+YWRqdXN0ZWRfbW9kZSwgJmNy dGNfc3RhdGUtPm1vZGUpOworCQlkcm1fbW9kZV9jb3B5KCZuZXdfY3J0Y19zdGF0ZS0+YWRqdXN0 ZWRfbW9kZSwgJm5ld19jcnRjX3N0YXRlLT5tb2RlKTsKIAl9CiAKLQlmb3JfZWFjaF9jb25uZWN0 b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3RvciwgY29ubl9zdGF0ZSwgaSkgeworCWZvcl9lYWNo X25ld19jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3RvciwgbmV3X2Nvbm5fc3RhdGUs IGkpIHsKIAkJY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyAqZnVuY3M7CiAJ CXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKIAotCQlXQVJOX09OKCEhY29ubl9zdGF0ZS0+ YmVzdF9lbmNvZGVyICE9ICEhY29ubl9zdGF0ZS0+Y3J0Yyk7CisJCVdBUk5fT04oISFuZXdfY29u bl9zdGF0ZS0+YmVzdF9lbmNvZGVyICE9ICEhbmV3X2Nvbm5fc3RhdGUtPmNydGMpOwogCi0JCWlm ICghY29ubl9zdGF0ZS0+Y3J0YyB8fCAhY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyKQorCQlpZiAo IW5ld19jb25uX3N0YXRlLT5jcnRjIHx8ICFuZXdfY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyKQog CQkJY29udGludWU7CiAKLQkJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2Ny dGNfc3RhdGUoc3RhdGUsCi0JCQkJCQkJCWNvbm5fc3RhdGUtPmNydGMpOworCQluZXdfY3J0Y19z dGF0ZSA9CisJCQlkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLCBuZXdf Y29ubl9zdGF0ZS0+Y3J0Yyk7CiAKIAkJLyoKIAkJICogRWFjaCBlbmNvZGVyIGhhcyBhdCBtb3N0 IG9uZSBjb25uZWN0b3IgKHNpbmNlIHdlIGFsd2F5cyBzdGVhbAogCQkgKiBpdCBhd2F5KSwgc28g d2Ugd29uJ3QgY2FsbCAtPm1vZGVfZml4dXAgdHdpY2UuCiAJCSAqLwotCQllbmNvZGVyID0gY29u bl9zdGF0ZS0+YmVzdF9lbmNvZGVyOworCQllbmNvZGVyID0gbmV3X2Nvbm5fc3RhdGUtPmJlc3Rf ZW5jb2RlcjsKIAkJZnVuY3MgPSBlbmNvZGVyLT5oZWxwZXJfcHJpdmF0ZTsKIAotCQlyZXQgPSBk cm1fYnJpZGdlX21vZGVfZml4dXAoZW5jb2Rlci0+YnJpZGdlLCAmY3J0Y19zdGF0ZS0+bW9kZSwK LQkJCQkmY3J0Y19zdGF0ZS0+YWRqdXN0ZWRfbW9kZSk7CisJCXJldCA9IGRybV9icmlkZ2VfbW9k ZV9maXh1cChlbmNvZGVyLT5icmlkZ2UsICZuZXdfY3J0Y19zdGF0ZS0+bW9kZSwKKwkJCQkmbmV3 X2NydGNfc3RhdGUtPmFkanVzdGVkX21vZGUpOwogCQlpZiAoIXJldCkgewogCQkJRFJNX0RFQlVH X0FUT01JQygiQnJpZGdlIGZpeHVwIGZhaWxlZFxuIik7CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJ fQogCiAJCWlmIChmdW5jcyAmJiBmdW5jcy0+YXRvbWljX2NoZWNrKSB7Ci0JCQlyZXQgPSBmdW5j cy0+YXRvbWljX2NoZWNrKGVuY29kZXIsIGNydGNfc3RhdGUsCi0JCQkJCQkgIGNvbm5fc3RhdGUp OworCQkJcmV0ID0gZnVuY3MtPmF0b21pY19jaGVjayhlbmNvZGVyLCBuZXdfY3J0Y19zdGF0ZSwK KwkJCQkJCSAgbmV3X2Nvbm5fc3RhdGUpOwogCQkJaWYgKHJldCkgewogCQkJCURSTV9ERUJVR19B VE9NSUMoIltFTkNPREVSOiVkOiVzXSBjaGVjayBmYWlsZWRcbiIsCiAJCQkJCQkgZW5jb2Rlci0+ YmFzZS5pZCwgZW5jb2Rlci0+bmFtZSk7CiAJCQkJcmV0dXJuIHJldDsKIAkJCX0KIAkJfSBlbHNl IGlmIChmdW5jcyAmJiBmdW5jcy0+bW9kZV9maXh1cCkgewotCQkJcmV0ID0gZnVuY3MtPm1vZGVf Zml4dXAoZW5jb2RlciwgJmNydGNfc3RhdGUtPm1vZGUsCi0JCQkJCQkmY3J0Y19zdGF0ZS0+YWRq dXN0ZWRfbW9kZSk7CisJCQlyZXQgPSBmdW5jcy0+bW9kZV9maXh1cChlbmNvZGVyLCAmbmV3X2Ny dGNfc3RhdGUtPm1vZGUsCisJCQkJCQkmbmV3X2NydGNfc3RhdGUtPmFkanVzdGVkX21vZGUpOwog CQkJaWYgKCFyZXQpIHsKIAkJCQlEUk1fREVCVUdfQVRPTUlDKCJbRU5DT0RFUjolZDolc10gZml4 dXAgZmFpbGVkXG4iLAogCQkJCQkJIGVuY29kZXItPmJhc2UuaWQsIGVuY29kZXItPm5hbWUpOwpA QCAtNDI1LDIyICs0MjcsMjIgQEAgbW9kZV9maXh1cChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUpCiAJCX0KIAl9CiAKLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBj cnRjX3N0YXRlLCBpKSB7CisJZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMs IG5ld19jcnRjX3N0YXRlLCBpKSB7CiAJCWNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVu Y3MgKmZ1bmNzOwogCi0JCWlmICghY3J0Y19zdGF0ZS0+ZW5hYmxlKQorCQlpZiAoIW5ld19jcnRj X3N0YXRlLT5lbmFibGUpCiAJCQljb250aW51ZTsKIAotCQlpZiAoIWNydGNfc3RhdGUtPm1vZGVf Y2hhbmdlZCAmJgotCQkgICAgIWNydGNfc3RhdGUtPmNvbm5lY3RvcnNfY2hhbmdlZCkKKwkJaWYg KCFuZXdfY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkICYmCisJCSAgICAhbmV3X2NydGNfc3RhdGUt PmNvbm5lY3RvcnNfY2hhbmdlZCkKIAkJCWNvbnRpbnVlOwogCiAJCWZ1bmNzID0gY3J0Yy0+aGVs cGVyX3ByaXZhdGU7CiAJCWlmICghZnVuY3MtPm1vZGVfZml4dXApCiAJCQljb250aW51ZTsKIAot CQlyZXQgPSBmdW5jcy0+bW9kZV9maXh1cChjcnRjLCAmY3J0Y19zdGF0ZS0+bW9kZSwKLQkJCQkJ JmNydGNfc3RhdGUtPmFkanVzdGVkX21vZGUpOworCQlyZXQgPSBmdW5jcy0+bW9kZV9maXh1cChj cnRjLCAmbmV3X2NydGNfc3RhdGUtPm1vZGUsCisJCQkJCSZuZXdfY3J0Y19zdGF0ZS0+YWRqdXN0 ZWRfbW9kZSk7CiAJCWlmICghcmV0KSB7CiAJCQlEUk1fREVCVUdfQVRPTUlDKCJbQ1JUQzolZDol c10gZml4dXAgZmFpbGVkXG4iLAogCQkJCQkgY3J0Yy0+YmFzZS5pZCwgY3J0Yy0+bmFtZSk7CkBA IC00ODcsMTkgKzQ4OSwxOSBAQCBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19tb2Rlc2V0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQog ewogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNf c3RhdGU7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwgKm5ld19jcnRj X3N0YXRlOwogCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Ci0Jc3RydWN0IGRybV9j b25uZWN0b3Jfc3RhdGUgKmNvbm5lY3Rvcl9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9z dGF0ZSAqb2xkX2Nvbm5lY3Rvcl9zdGF0ZSwgKm5ld19jb25uZWN0b3Jfc3RhdGU7CiAJaW50IGks IHJldDsKIAotCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUs IGkpIHsKLQkJaWYgKCFkcm1fbW9kZV9lcXVhbCgmY3J0Yy0+c3RhdGUtPm1vZGUsICZjcnRjX3N0 YXRlLT5tb2RlKSkgeworCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRj LCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpIHsKKwkJaWYgKCFkcm1fbW9kZV9l cXVhbCgmb2xkX2NydGNfc3RhdGUtPm1vZGUsICZuZXdfY3J0Y19zdGF0ZS0+bW9kZSkpIHsKIAkJ CURSTV9ERUJVR19BVE9NSUMoIltDUlRDOiVkOiVzXSBtb2RlIGNoYW5nZWRcbiIsCiAJCQkJCSBj cnRjLT5iYXNlLmlkLCBjcnRjLT5uYW1lKTsKLQkJCWNydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCA9 IHRydWU7CisJCQluZXdfY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkID0gdHJ1ZTsKIAkJfQogCi0J CWlmIChjcnRjLT5zdGF0ZS0+ZW5hYmxlICE9IGNydGNfc3RhdGUtPmVuYWJsZSkgeworCQlpZiAo b2xkX2NydGNfc3RhdGUtPmVuYWJsZSAhPSBuZXdfY3J0Y19zdGF0ZS0+ZW5hYmxlKSB7CiAJCQlE Uk1fREVCVUdfQVRPTUlDKCJbQ1JUQzolZDolc10gZW5hYmxlIGNoYW5nZWRcbiIsCiAJCQkJCSBj cnRjLT5iYXNlLmlkLCBjcnRjLT5uYW1lKTsKIApAQCAtNTExLDggKzUxMyw4IEBAIGRybV9hdG9t aWNfaGVscGVyX2NoZWNrX21vZGVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCSAqIFRo ZSBvdGhlciB3YXkgYXJvdW5kIGlzIHRydWUgYXMgd2VsbC4gZW5hYmxlICE9IDAKIAkJCSAqIGlm ZiBjb25uZWN0b3JzIGFyZSBhdHRhY2hlZCBhbmQgYSBtb2RlIGlzIHNldC4KIAkJCSAqLwotCQkJ Y3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkID0gdHJ1ZTsKLQkJCWNydGNfc3RhdGUtPmNvbm5lY3Rv cnNfY2hhbmdlZCA9IHRydWU7CisJCQluZXdfY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkID0gdHJ1 ZTsKKwkJCW5ld19jcnRjX3N0YXRlLT5jb25uZWN0b3JzX2NoYW5nZWQgPSB0cnVlOwogCQl9CiAJ fQogCkBAIC01MjAsMjIgKzUyMiwyMyBAQCBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19tb2Rlc2V0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWZv cl9lYWNoX2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yLCBjb25uZWN0b3Jfc3Rh dGUsIGkpIHsKKwlmb3JfZWFjaF9vbGRuZXdfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25u ZWN0b3IsIG9sZF9jb25uZWN0b3Jfc3RhdGUsIG5ld19jb25uZWN0b3Jfc3RhdGUsIGkpIHsKIAkJ LyoKIAkJICogVGhpcyBvbmx5IHNldHMgY3J0Yy0+Y29ubmVjdG9yc19jaGFuZ2VkIGZvciByb3V0 aW5nIGNoYW5nZXMsCiAJCSAqIGRyaXZlcnMgbXVzdCBzZXQgY3J0Yy0+Y29ubmVjdG9yc19jaGFu Z2VkIHRoZW1zZWx2ZXMgd2hlbgogCQkgKiBjb25uZWN0b3IgcHJvcGVydGllcyBuZWVkIHRvIGJl IHVwZGF0ZWQuCiAJCSAqLwogCQlyZXQgPSB1cGRhdGVfY29ubmVjdG9yX3JvdXRpbmcoc3RhdGUs IGNvbm5lY3RvciwKLQkJCQkJICAgICAgIGNvbm5lY3Rvcl9zdGF0ZSk7CisJCQkJCSAgICAgICBv bGRfY29ubmVjdG9yX3N0YXRlLAorCQkJCQkgICAgICAgbmV3X2Nvbm5lY3Rvcl9zdGF0ZSk7CiAJ CWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwotCQlpZiAoY29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yykg ewotCQkJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoc3Rh dGUsCi0JCQkJCQkJCQljb25uZWN0b3ItPnN0YXRlLT5jcnRjKTsKLQkJCWlmIChjb25uZWN0b3It PnN0YXRlLT5saW5rX3N0YXR1cyAhPQotCQkJICAgIGNvbm5lY3Rvcl9zdGF0ZS0+bGlua19zdGF0 dXMpCi0JCQkJY3J0Y19zdGF0ZS0+Y29ubmVjdG9yc19jaGFuZ2VkID0gdHJ1ZTsKKwkJaWYgKG9s ZF9jb25uZWN0b3Jfc3RhdGUtPmNydGMpIHsKKwkJCW5ld19jcnRjX3N0YXRlID0gZHJtX2F0b21p Y19nZXRfZXhpc3RpbmdfY3J0Y19zdGF0ZShzdGF0ZSwKKwkJCQkJCQkJCSAgICBvbGRfY29ubmVj dG9yX3N0YXRlLT5jcnRjKTsKKwkJCWlmIChvbGRfY29ubmVjdG9yX3N0YXRlLT5saW5rX3N0YXR1 cyAhPQorCQkJICAgIG5ld19jb25uZWN0b3Jfc3RhdGUtPmxpbmtfc3RhdHVzKQorCQkJCW5ld19j cnRjX3N0YXRlLT5jb25uZWN0b3JzX2NoYW5nZWQgPSB0cnVlOwogCQl9CiAJfQogCkBAIC01NDUs MjggKzU0OCwyOCBAQCBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19tb2Rlc2V0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAJICogY29uZmlndXJhdGlvbi4gVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3Jl IGNhbGxpbmcgbW9kZV9maXh1cCBpbiBjYXNlIGEKIAkgKiBjcnRjIG9ubHkgY2hhbmdlZCBpdHMg bW9kZSBidXQgaGFzIHRoZSBzYW1lIHNldCBvZiBjb25uZWN0b3JzLgogCSAqLwotCWZvcl9lYWNo X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9v bGRuZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRj X3N0YXRlLCBpKSB7CiAJCWJvb2wgaGFzX2Nvbm5lY3RvcnMgPQotCQkJISFjcnRjX3N0YXRlLT5j b25uZWN0b3JfbWFzazsKKwkJCSEhbmV3X2NydGNfc3RhdGUtPmNvbm5lY3Rvcl9tYXNrOwogCiAJ CS8qCiAJCSAqIFdlIG11c3Qgc2V0IC0+YWN0aXZlX2NoYW5nZWQgYWZ0ZXIgd2Fsa2luZyBjb25u ZWN0b3JzIGZvcgogCQkgKiBvdGhlcndpc2UgYW4gdXBkYXRlIHRoYXQgb25seSBjaGFuZ2VzIGFj dGl2ZSB3b3VsZCByZXN1bHQgaW4KIAkJICogYSBmdWxsIG1vZGVzZXQgYmVjYXVzZSB1cGRhdGVf Y29ubmVjdG9yX3JvdXRpbmcgZm9yY2UgdGhhdC4KIAkJICovCi0JCWlmIChjcnRjLT5zdGF0ZS0+ YWN0aXZlICE9IGNydGNfc3RhdGUtPmFjdGl2ZSkgeworCQlpZiAob2xkX2NydGNfc3RhdGUtPmFj dGl2ZSAhPSBuZXdfY3J0Y19zdGF0ZS0+YWN0aXZlKSB7CiAJCQlEUk1fREVCVUdfQVRPTUlDKCJb Q1JUQzolZDolc10gYWN0aXZlIGNoYW5nZWRcbiIsCiAJCQkJCSBjcnRjLT5iYXNlLmlkLCBjcnRj LT5uYW1lKTsKLQkJCWNydGNfc3RhdGUtPmFjdGl2ZV9jaGFuZ2VkID0gdHJ1ZTsKKwkJCW5ld19j cnRjX3N0YXRlLT5hY3RpdmVfY2hhbmdlZCA9IHRydWU7CiAJCX0KIAotCQlpZiAoIWRybV9hdG9t aWNfY3J0Y19uZWVkc19tb2Rlc2V0KGNydGNfc3RhdGUpKQorCQlpZiAoIWRybV9hdG9taWNfY3J0 Y19uZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKSkKIAkJCWNvbnRpbnVlOwogCiAJCURSTV9E RUJVR19BVE9NSUMoIltDUlRDOiVkOiVzXSBuZWVkcyBhbGwgY29ubmVjdG9ycywgZW5hYmxlOiAl YywgYWN0aXZlOiAlY1xuIiwKIAkJCQkgY3J0Yy0+YmFzZS5pZCwgY3J0Yy0+bmFtZSwKLQkJCQkg Y3J0Y19zdGF0ZS0+ZW5hYmxlID8gJ3knIDogJ24nLAotCQkJCSBjcnRjX3N0YXRlLT5hY3RpdmUg PyAneScgOiAnbicpOworCQkJCSBuZXdfY3J0Y19zdGF0ZS0+ZW5hYmxlID8gJ3knIDogJ24nLAor CQkJCSBuZXdfY3J0Y19zdGF0ZS0+YWN0aXZlID8gJ3knIDogJ24nKTsKIAogCQlyZXQgPSBkcm1f YXRvbWljX2FkZF9hZmZlY3RlZF9jb25uZWN0b3JzKHN0YXRlLCBjcnRjKTsKIAkJaWYgKHJldCAh PSAwKQpAQCAtNTc2LDcgKzU3OSw3IEBAIGRybV9hdG9taWNfaGVscGVyX2NoZWNrX21vZGVzZXQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJaWYgKHJldCAhPSAwKQogCQkJcmV0dXJuIHJldDsK IAotCQlpZiAoY3J0Y19zdGF0ZS0+ZW5hYmxlICE9IGhhc19jb25uZWN0b3JzKSB7CisJCWlmIChu ZXdfY3J0Y19zdGF0ZS0+ZW5hYmxlICE9IGhhc19jb25uZWN0b3JzKSB7CiAJCQlEUk1fREVCVUdf QVRPTUlDKCJbQ1JUQzolZDolc10gZW5hYmxlZC9jb25uZWN0b3JzIG1pc21hdGNoXG4iLAogCQkJ CQkgY3J0Yy0+YmFzZS5pZCwgY3J0Yy0+bmFtZSk7CiAKQEAgLTYwOSwyMiArNjEyLDIyIEBAIGRy bV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJ ICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2Ny dGMgKmNydGM7Ci0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOworCXN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7CiAJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7 Ci0Jc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7CisJc3RydWN0IGRybV9wbGFu ZV9zdGF0ZSAqbmV3X3BsYW5lX3N0YXRlLCAqb2xkX3BsYW5lX3N0YXRlOwogCWludCBpLCByZXQg PSAwOwogCi0JZm9yX2VhY2hfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBwbGFuZV9zdGF0 ZSwgaSkgeworCWZvcl9lYWNoX29sZG5ld19wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIG9s ZF9wbGFuZV9zdGF0ZSwgbmV3X3BsYW5lX3N0YXRlLCBpKSB7CiAJCWNvbnN0IHN0cnVjdCBkcm1f cGxhbmVfaGVscGVyX2Z1bmNzICpmdW5jczsKIAogCQlmdW5jcyA9IHBsYW5lLT5oZWxwZXJfcHJp dmF0ZTsKIAotCQlkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9jaGFuZ2VkKHN0YXRlLCBwbGFuZV9z dGF0ZSwgcGxhbmUpOworCQlkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9jaGFuZ2VkKHN0YXRlLCBv bGRfcGxhbmVfc3RhdGUsIG5ld19wbGFuZV9zdGF0ZSwgcGxhbmUpOwogCiAJCWlmICghZnVuY3Mg fHwgIWZ1bmNzLT5hdG9taWNfY2hlY2spCiAJCQljb250aW51ZTsKIAotCQlyZXQgPSBmdW5jcy0+ YXRvbWljX2NoZWNrKHBsYW5lLCBwbGFuZV9zdGF0ZSk7CisJCXJldCA9IGZ1bmNzLT5hdG9taWNf Y2hlY2socGxhbmUsIG5ld19wbGFuZV9zdGF0ZSk7CiAJCWlmIChyZXQpIHsKIAkJCURSTV9ERUJV R19BVE9NSUMoIltQTEFORTolZDolc10gYXRvbWljIGRyaXZlciBjaGVjayBmYWlsZWRcbiIsCiAJ CQkJCSBwbGFuZS0+YmFzZS5pZCwgcGxhbmUtPm5hbWUpOwpAQCAtNjMyLDcgKzYzNSw3IEBAIGRy bV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQl9 CiAJfQogCi0JZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwg aSkgeworCWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBuZXdfY3J0Y19z dGF0ZSwgaSkgewogCQljb25zdCBzdHJ1Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNzICpmdW5jczsK IAogCQlmdW5jcyA9IGNydGMtPmhlbHBlcl9wcml2YXRlOwpAQCAtNjQwLDcgKzY0Myw3IEBAIGRy bV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlp ZiAoIWZ1bmNzIHx8ICFmdW5jcy0+YXRvbWljX2NoZWNrKQogCQkJY29udGludWU7CiAKLQkJcmV0 ID0gZnVuY3MtPmF0b21pY19jaGVjayhjcnRjLCBjcnRjX3N0YXRlKTsKKwkJcmV0ID0gZnVuY3Mt PmF0b21pY19jaGVjayhjcnRjLCBuZXdfY3J0Y19zdGF0ZSk7CiAJCWlmIChyZXQpIHsKIAkJCURS TV9ERUJVR19BVE9NSUMoIltDUlRDOiVkOiVzXSBhdG9taWMgZHJpdmVyIGNoZWNrIGZhaWxlZFxu IiwKIAkJCQkJIGNydGMtPmJhc2UuaWQsIGNydGMtPm5hbWUpOwpAQCAtNjk0LDEyICs2OTcsMTIg QEAgc3RhdGljIHZvaWQKIGRpc2FibGVfb3V0cHV0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQogewogCXN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3I7Ci0Jc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25uX3N0 YXRlOworCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0ZSwgKm5ld19j b25uX3N0YXRlOwogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKLQlzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKm9sZF9jcnRjX3N0YXRlOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3Rh dGUsICpuZXdfY3J0Y19zdGF0ZTsKIAlpbnQgaTsKIAotCWZvcl9lYWNoX2Nvbm5lY3Rvcl9pbl9z dGF0ZShvbGRfc3RhdGUsIGNvbm5lY3Rvciwgb2xkX2Nvbm5fc3RhdGUsIGkpIHsKKwlmb3JfZWFj aF9vbGRuZXdfY29ubmVjdG9yX2luX3N0YXRlKG9sZF9zdGF0ZSwgY29ubmVjdG9yLCBvbGRfY29u bl9zdGF0ZSwgbmV3X2Nvbm5fc3RhdGUsIGkpIHsKIAkJY29uc3Qgc3RydWN0IGRybV9lbmNvZGVy X2hlbHBlcl9mdW5jcyAqZnVuY3M7CiAJCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKIApA QCAtNzM2LDcgKzczOSw3IEBAIGRpc2FibGVfb3V0cHV0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQogCiAJCS8qIFJpZ2h0IGZ1bmN0 aW9uIGRlcGVuZHMgdXBvbiB0YXJnZXQgc3RhdGUuICovCiAJCWlmIChmdW5jcykgewotCQkJaWYg KGNvbm5lY3Rvci0+c3RhdGUtPmNydGMgJiYgZnVuY3MtPnByZXBhcmUpCisJCQlpZiAobmV3X2Nv bm5fc3RhdGUtPmNydGMgJiYgZnVuY3MtPnByZXBhcmUpCiAJCQkJZnVuY3MtPnByZXBhcmUoZW5j b2Rlcik7CiAJCQllbHNlIGlmIChmdW5jcy0+ZGlzYWJsZSkKIAkJCQlmdW5jcy0+ZGlzYWJsZShl bmNvZGVyKTsKQEAgLTc0NywxMSArNzUwLDExIEBAIGRpc2FibGVfb3V0cHV0cyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQogCQlkcm1f YnJpZGdlX3Bvc3RfZGlzYWJsZShlbmNvZGVyLT5icmlkZ2UpOwogCX0KIAotCWZvcl9lYWNoX2Ny dGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgaSkgeworCWZvcl9l YWNoX29sZG5ld19jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUs IG5ld19jcnRjX3N0YXRlLCBpKSB7CiAJCWNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVu Y3MgKmZ1bmNzOwogCiAJCS8qIFNodXQgZG93biBldmVyeXRoaW5nIHRoYXQgbmVlZHMgYSBmdWxs IG1vZGVzZXQuICovCi0JCWlmICghZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQoY3J0Yy0+ c3RhdGUpKQorCQlpZiAoIWRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0 YXRlKSkKIAkJCWNvbnRpbnVlOwogCiAJCWlmICghb2xkX2NydGNfc3RhdGUtPmFjdGl2ZSkKQEAg LTc2NCw3ICs3NjcsNyBAQCBkaXNhYmxlX291dHB1dHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKIAogCiAJCS8qIFJpZ2h0IGZ1bmN0 aW9uIGRlcGVuZHMgdXBvbiB0YXJnZXQgc3RhdGUuICovCi0JCWlmIChjcnRjLT5zdGF0ZS0+ZW5h YmxlICYmIGZ1bmNzLT5wcmVwYXJlKQorCQlpZiAobmV3X2NydGNfc3RhdGUtPmVuYWJsZSAmJiBm dW5jcy0+cHJlcGFyZSkKIAkJCWZ1bmNzLT5wcmVwYXJlKGNydGMpOwogCQllbHNlIGlmIChmdW5j cy0+YXRvbWljX2Rpc2FibGUpCiAJCQlmdW5jcy0+YXRvbWljX2Rpc2FibGUoY3J0Yywgb2xkX2Ny dGNfc3RhdGUpOwpAQCAtNzkzLDEzICs3OTYsMTMgQEAgZHJtX2F0b21pY19oZWxwZXJfdXBkYXRl X2xlZ2FjeV9tb2Rlc2V0X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJCSAgICAg IHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvcjsKLQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5f c3RhdGU7CisJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25uX3N0YXRlLCAqbmV3 X2Nvbm5fc3RhdGU7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwotCXN0cnVjdCBkcm1fY3J0Y19z dGF0ZSAqb2xkX2NydGNfc3RhdGU7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfY3J0Y19z dGF0ZTsKIAlpbnQgaTsKIAogCS8qIGNsZWFyIG91dCBleGlzdGluZyBsaW5rcyBhbmQgdXBkYXRl IGRwbXMgKi8KLQlmb3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUob2xkX3N0YXRlLCBjb25uZWN0 b3IsIG9sZF9jb25uX3N0YXRlLCBpKSB7CisJZm9yX2VhY2hfb2xkbmV3X2Nvbm5lY3Rvcl9pbl9z dGF0ZShvbGRfc3RhdGUsIGNvbm5lY3Rvciwgb2xkX2Nvbm5fc3RhdGUsIG5ld19jb25uX3N0YXRl LCBpKSB7CiAJCWlmIChjb25uZWN0b3ItPmVuY29kZXIpIHsKIAkJCVdBUk5fT04oIWNvbm5lY3Rv ci0+ZW5jb2Rlci0+Y3J0Yyk7CiAKQEAgLTgwNyw3ICs4MTAsNyBAQCBkcm1fYXRvbWljX2hlbHBl cl91cGRhdGVfbGVnYWN5X21vZGVzZXRfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJ CWNvbm5lY3Rvci0+ZW5jb2RlciA9IE5VTEw7CiAJCX0KIAotCQljcnRjID0gY29ubmVjdG9yLT5z dGF0ZS0+Y3J0YzsKKwkJY3J0YyA9IG5ld19jb25uX3N0YXRlLT5jcnRjOwogCQlpZiAoKCFjcnRj ICYmIG9sZF9jb25uX3N0YXRlLT5jcnRjKSB8fAogCQkgICAgKGNydGMgJiYgZHJtX2F0b21pY19j cnRjX25lZWRzX21vZGVzZXQoY3J0Yy0+c3RhdGUpKSkgewogCQkJc3RydWN0IGRybV9wcm9wZXJ0 eSAqZHBtc19wcm9wID0KQEAgLTgyNCwyMyArODI3LDIzIEBAIGRybV9hdG9taWNfaGVscGVyX3Vw ZGF0ZV9sZWdhY3lfbW9kZXNldF9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCX0KIAog CS8qIHNldCBuZXcgbGlua3MgKi8KLQlmb3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUob2xkX3N0 YXRlLCBjb25uZWN0b3IsIG9sZF9jb25uX3N0YXRlLCBpKSB7Ci0JCWlmICghY29ubmVjdG9yLT5z dGF0ZS0+Y3J0YykKKwlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKG9sZF9zdGF0ZSwg Y29ubmVjdG9yLCBuZXdfY29ubl9zdGF0ZSwgaSkgeworCQlpZiAoIW5ld19jb25uX3N0YXRlLT5j cnRjKQogCQkJY29udGludWU7CiAKLQkJaWYgKFdBUk5fT04oIWNvbm5lY3Rvci0+c3RhdGUtPmJl c3RfZW5jb2RlcikpCisJCWlmIChXQVJOX09OKCFuZXdfY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVy KSkKIAkJCWNvbnRpbnVlOwogCi0JCWNvbm5lY3Rvci0+ZW5jb2RlciA9IGNvbm5lY3Rvci0+c3Rh dGUtPmJlc3RfZW5jb2RlcjsKLQkJY29ubmVjdG9yLT5lbmNvZGVyLT5jcnRjID0gY29ubmVjdG9y LT5zdGF0ZS0+Y3J0YzsKKwkJY29ubmVjdG9yLT5lbmNvZGVyID0gbmV3X2Nvbm5fc3RhdGUtPmJl c3RfZW5jb2RlcjsKKwkJY29ubmVjdG9yLT5lbmNvZGVyLT5jcnRjID0gbmV3X2Nvbm5fc3RhdGUt PmNydGM7CiAJfQogCiAJLyogc2V0IGxlZ2FjeSBzdGF0ZSBpbiB0aGUgY3J0YyBzdHJ1Y3R1cmUg Ki8KLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3Rh dGUsIGkpIHsKKwlmb3JfZWFjaF9uZXdfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG5l d19jcnRjX3N0YXRlLCBpKSB7CiAJCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnkgPSBjcnRjLT5w cmltYXJ5OwogCi0JCWNydGMtPm1vZGUgPSBjcnRjLT5zdGF0ZS0+bW9kZTsKLQkJY3J0Yy0+ZW5h YmxlZCA9IGNydGMtPnN0YXRlLT5lbmFibGU7CisJCWNydGMtPm1vZGUgPSBuZXdfY3J0Y19zdGF0 ZS0+bW9kZTsKKwkJY3J0Yy0+ZW5hYmxlZCA9IG5ld19jcnRjX3N0YXRlLT5lbmFibGU7CiAKIAkJ aWYgKGRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX3BsYW5lX3N0YXRlKG9sZF9zdGF0ZSwgcHJpbWFy eSkgJiYKIAkJICAgIHByaW1hcnktPnN0YXRlLT5jcnRjID09IGNydGMpIHsKQEAgLTg0OCw5ICs4 NTEsOSBAQCBkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfbGVnYWN5X21vZGVzZXRfc3RhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCWNydGMtPnkgPSBwcmltYXJ5LT5zdGF0ZS0+c3JjX3kg Pj4gMTY7CiAJCX0KIAotCQlpZiAoY3J0Yy0+c3RhdGUtPmVuYWJsZSkKKwkJaWYgKG5ld19jcnRj X3N0YXRlLT5lbmFibGUpCiAJCQlkcm1fY2FsY190aW1lc3RhbXBpbmdfY29uc3RhbnRzKGNydGMs Ci0JCQkJCQkJJmNydGMtPnN0YXRlLT5hZGp1c3RlZF9tb2RlKTsKKwkJCQkJCQkmbmV3X2NydGNf c3RhdGUtPmFkanVzdGVkX21vZGUpOwogCX0KIH0KIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19o ZWxwZXJfdXBkYXRlX2xlZ2FjeV9tb2Rlc2V0X3N0YXRlKTsKQEAgLTg1OSwyMCArODYyLDIwIEBA IHN0YXRpYyB2b2lkCiBjcnRjX3NldF9tb2RlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9jcnRjICpjcnRj OwotCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7CisJc3RydWN0IGRybV9j cnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZTsKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yOwotCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0ZTsKKwlzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nvbm5fc3RhdGU7CiAJaW50IGk7CiAKLQlmb3Jf ZWFjaF9jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIGkpIHsK Kwlmb3JfZWFjaF9uZXdfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG5ld19jcnRjX3N0 YXRlLCBpKSB7CiAJCWNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOwog Ci0JCWlmICghY3J0Yy0+c3RhdGUtPm1vZGVfY2hhbmdlZCkKKwkJaWYgKCFuZXdfY3J0Y19zdGF0 ZS0+bW9kZV9jaGFuZ2VkKQogCQkJY29udGludWU7CiAKIAkJZnVuY3MgPSBjcnRjLT5oZWxwZXJf cHJpdmF0ZTsKIAotCQlpZiAoY3J0Yy0+c3RhdGUtPmVuYWJsZSAmJiBmdW5jcy0+bW9kZV9zZXRf bm9mYikgeworCQlpZiAobmV3X2NydGNfc3RhdGUtPmVuYWJsZSAmJiBmdW5jcy0+bW9kZV9zZXRf bm9mYikgewogCQkJRFJNX0RFQlVHX0FUT01JQygibW9kZXNldCBvbiBbQ1JUQzolZDolc11cbiIs CiAJCQkJCSBjcnRjLT5iYXNlLmlkLCBjcnRjLT5uYW1lKTsKIApAQCAtODgwLDE4ICs4ODMsMTcg QEAgY3J0Y19zZXRfbW9kZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqb2xkX3N0YXRlKQogCQl9CiAJfQogCi0JZm9yX2VhY2hfY29ubmVjdG9yX2luX3N0 YXRlKG9sZF9zdGF0ZSwgY29ubmVjdG9yLCBvbGRfY29ubl9zdGF0ZSwgaSkgeworCWZvcl9lYWNo X25ld19jb25uZWN0b3JfaW5fc3RhdGUob2xkX3N0YXRlLCBjb25uZWN0b3IsIG5ld19jb25uX3N0 YXRlLCBpKSB7CiAJCWNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgKmZ1bmNz OwotCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwogCQlzdHJ1Y3QgZHJt X2VuY29kZXIgKmVuY29kZXI7CiAJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLCAqYWRq dXN0ZWRfbW9kZTsKIAotCQlpZiAoIWNvbm5lY3Rvci0+c3RhdGUtPmJlc3RfZW5jb2RlcikKKwkJ aWYgKCFuZXdfY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyKQogCQkJY29udGludWU7CiAKLQkJZW5j b2RlciA9IGNvbm5lY3Rvci0+c3RhdGUtPmJlc3RfZW5jb2RlcjsKKwkJZW5jb2RlciA9IG5ld19j b25uX3N0YXRlLT5iZXN0X2VuY29kZXI7CiAJCWZ1bmNzID0gZW5jb2Rlci0+aGVscGVyX3ByaXZh dGU7Ci0JCW5ld19jcnRjX3N0YXRlID0gY29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yy0+c3RhdGU7CisJ CW5ld19jcnRjX3N0YXRlID0gbmV3X2Nvbm5fc3RhdGUtPmNydGMtPnN0YXRlOwogCQltb2RlID0g Jm5ld19jcnRjX3N0YXRlLT5tb2RlOwogCQlhZGp1c3RlZF9tb2RlID0gJm5ld19jcnRjX3N0YXRl LT5hZGp1c3RlZF9tb2RlOwogCkBAIC05MDcsNyArOTA5LDcgQEAgY3J0Y19zZXRfbW9kZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQog CQkgKi8KIAkJaWYgKGZ1bmNzICYmIGZ1bmNzLT5hdG9taWNfbW9kZV9zZXQpIHsKIAkJCWZ1bmNz LT5hdG9taWNfbW9kZV9zZXQoZW5jb2RlciwgbmV3X2NydGNfc3RhdGUsCi0JCQkJCSAgICAgICBj b25uZWN0b3ItPnN0YXRlKTsKKwkJCQkJICAgICAgIG5ld19jb25uX3N0YXRlKTsKIAkJfSBlbHNl IGlmIChmdW5jcyAmJiBmdW5jcy0+bW9kZV9zZXQpIHsKIAkJCWZ1bmNzLT5tb2RlX3NldChlbmNv ZGVyLCBtb2RlLCBhZGp1c3RlZF9tb2RlKTsKIAkJfQpAQCAtOTU5LDI0ICs5NjEsMjQgQEAgdm9p ZCBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfbW9kZXNldF9lbmFibGVzKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCiAJCQkJCSAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUp CiB7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwotCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xk X2NydGNfc3RhdGU7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZTsKIAlz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwotCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0 YXRlICpvbGRfY29ubl9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nv bm5fc3RhdGU7CiAJaW50IGk7CiAKLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwg Y3J0Yywgb2xkX2NydGNfc3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9uZXdfY3J0Y19pbl9zdGF0ZShv bGRfc3RhdGUsIGNydGMsIG5ld19jcnRjX3N0YXRlLCBpKSB7CiAJCWNvbnN0IHN0cnVjdCBkcm1f Y3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOwogCiAJCS8qIE5lZWQgdG8gZmlsdGVyIG91dCBDUlRD cyB3aGVyZSBvbmx5IHBsYW5lcyBjaGFuZ2UuICovCi0JCWlmICghZHJtX2F0b21pY19jcnRjX25l ZWRzX21vZGVzZXQoY3J0Yy0+c3RhdGUpKQorCQlpZiAoIWRybV9hdG9taWNfY3J0Y19uZWVkc19t b2Rlc2V0KG5ld19jcnRjX3N0YXRlKSkKIAkJCWNvbnRpbnVlOwogCi0JCWlmICghY3J0Yy0+c3Rh dGUtPmFjdGl2ZSkKKwkJaWYgKCFuZXdfY3J0Y19zdGF0ZS0+YWN0aXZlKQogCQkJY29udGludWU7 CiAKIAkJZnVuY3MgPSBjcnRjLT5oZWxwZXJfcHJpdmF0ZTsKIAotCQlpZiAoY3J0Yy0+c3RhdGUt PmVuYWJsZSkgeworCQlpZiAobmV3X2NydGNfc3RhdGUtPmVuYWJsZSkgewogCQkJRFJNX0RFQlVH X0FUT01JQygiZW5hYmxpbmcgW0NSVEM6JWQ6JXNdXG4iLAogCQkJCQkgY3J0Yy0+YmFzZS5pZCwg Y3J0Yy0+bmFtZSk7CiAKQEAgLTk4NywxOCArOTg5LDE4IEBAIHZvaWQgZHJtX2F0b21pY19oZWxw ZXJfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQl9CiAJ fQogCi0JZm9yX2VhY2hfY29ubmVjdG9yX2luX3N0YXRlKG9sZF9zdGF0ZSwgY29ubmVjdG9yLCBv bGRfY29ubl9zdGF0ZSwgaSkgeworCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUob2xk X3N0YXRlLCBjb25uZWN0b3IsIG5ld19jb25uX3N0YXRlLCBpKSB7CiAJCWNvbnN0IHN0cnVjdCBk cm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgKmZ1bmNzOwogCQlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXI7CiAKLQkJaWYgKCFjb25uZWN0b3ItPnN0YXRlLT5iZXN0X2VuY29kZXIpCisJCWlmICgh bmV3X2Nvbm5fc3RhdGUtPmJlc3RfZW5jb2RlcikKIAkJCWNvbnRpbnVlOwogCi0JCWlmICghY29u bmVjdG9yLT5zdGF0ZS0+Y3J0Yy0+c3RhdGUtPmFjdGl2ZSB8fAotCQkgICAgIWRybV9hdG9taWNf Y3J0Y19uZWVkc19tb2Rlc2V0KGNvbm5lY3Rvci0+c3RhdGUtPmNydGMtPnN0YXRlKSkKKwkJaWYg KCFuZXdfY29ubl9zdGF0ZS0+Y3J0Yy0+c3RhdGUtPmFjdGl2ZSB8fAorCQkgICAgIWRybV9hdG9t aWNfY3J0Y19uZWVkc19tb2Rlc2V0KG5ld19jb25uX3N0YXRlLT5jcnRjLT5zdGF0ZSkpCiAJCQlj b250aW51ZTsKIAotCQllbmNvZGVyID0gY29ubmVjdG9yLT5zdGF0ZS0+YmVzdF9lbmNvZGVyOwor CQllbmNvZGVyID0gbmV3X2Nvbm5fc3RhdGUtPmJlc3RfZW5jb2RlcjsKIAkJZnVuY3MgPSBlbmNv ZGVyLT5oZWxwZXJfcHJpdmF0ZTsKIAogCQlEUk1fREVCVUdfQVRPTUlDKCJlbmFibGluZyBbRU5D T0RFUjolZDolc11cbiIsCkBAIC0xMDQ4LDI5ICsxMDUwLDI2IEBAIGludCBkcm1fYXRvbWljX2hl bHBlcl93YWl0X2Zvcl9mZW5jZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgICAgICBi b29sIHByZV9zd2FwKQogewogCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwotCXN0cnVjdCBkcm1f cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOworCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19w bGFuZV9zdGF0ZTsKIAlpbnQgaSwgcmV0OwogCi0JZm9yX2VhY2hfcGxhbmVfaW5fc3RhdGUoc3Rh dGUsIHBsYW5lLCBwbGFuZV9zdGF0ZSwgaSkgewotCQlpZiAoIXByZV9zd2FwKQotCQkJcGxhbmVf c3RhdGUgPSBwbGFuZS0+c3RhdGU7Ci0KLQkJaWYgKCFwbGFuZV9zdGF0ZS0+ZmVuY2UpCisJZm9y X2VhY2hfbmV3X3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgbmV3X3BsYW5lX3N0YXRlLCBp KSB7CisJCWlmICghbmV3X3BsYW5lX3N0YXRlLT5mZW5jZSkKIAkJCWNvbnRpbnVlOwogCi0JCVdB Uk5fT04oIXBsYW5lX3N0YXRlLT5mYik7CisJCVdBUk5fT04oIW5ld19wbGFuZV9zdGF0ZS0+ZmIp OwogCiAJCS8qCiAJCSAqIElmIHdhaXRpbmcgZm9yIGZlbmNlcyBwcmUtc3dhcCAoaWU6IG5vbmJs b2NrKSwgdXNlcnNwYWNlIGNhbgogCQkgKiBzdGlsbCBpbnRlcnJ1cHQgdGhlIG9wZXJhdGlvbi4g SW5zdGVhZCBvZiBibG9ja2luZyB1bnRpbCB0aGUKIAkJICogdGltZXIgZXhwaXJlcywgbWFrZSB0 aGUgd2FpdCBpbnRlcnJ1cHRpYmxlLgogCQkgKi8KLQkJcmV0ID0gZG1hX2ZlbmNlX3dhaXQocGxh bmVfc3RhdGUtPmZlbmNlLCBwcmVfc3dhcCk7CisJCXJldCA9IGRtYV9mZW5jZV93YWl0KG5ld19w bGFuZV9zdGF0ZS0+ZmVuY2UsIHByZV9zd2FwKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7 CiAKLQkJZG1hX2ZlbmNlX3B1dChwbGFuZV9zdGF0ZS0+ZmVuY2UpOwotCQlwbGFuZV9zdGF0ZS0+ ZmVuY2UgPSBOVUxMOworCQlkbWFfZmVuY2VfcHV0KG5ld19wbGFuZV9zdGF0ZS0+ZmVuY2UpOwor CQluZXdfcGxhbmVfc3RhdGUtPmZlbmNlID0gTlVMTDsKIAl9CiAKIAlyZXR1cm4gMDsKQEAgLTEw OTMsNyArMTA5Miw3IEBAIGRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX3ZibGFua3Moc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKIAkJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkK IHsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Ci0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRf Y3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLCAqbmV3 X2NydGNfc3RhdGU7CiAJaW50IGksIHJldDsKIAl1bnNpZ25lZCBjcnRjX21hc2sgPSAwOwogCkBA IC0xMTA0LDkgKzExMDMsNyBAQCBkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaWYgKG9sZF9zdGF0ZS0+bGVnYWN5X2N1cnNvcl91cGRh dGUpCiAJCXJldHVybjsKIAotCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRj LCBvbGRfY3J0Y19zdGF0ZSwgaSkgewotCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRj X3N0YXRlID0gY3J0Yy0+c3RhdGU7Ci0KKwlmb3JfZWFjaF9vbGRuZXdfY3J0Y19pbl9zdGF0ZShv bGRfc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewogCQlp ZiAoIW5ld19jcnRjX3N0YXRlLT5hY3RpdmUgfHwgIW5ld19jcnRjX3N0YXRlLT5wbGFuZXNfY2hh bmdlZCkKIAkJCWNvbnRpbnVlOwogCkBAIC0xMTE4LDcgKzExMTUsNyBAQCBkcm1fYXRvbWljX2hl bHBlcl93YWl0X2Zvcl92YmxhbmtzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCW9sZF9zdGF0 ZS0+Y3J0Y3NbaV0ubGFzdF92YmxhbmtfY291bnQgPSBkcm1fY3J0Y192YmxhbmtfY291bnQoY3J0 Yyk7CiAJfQogCi0JZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG9sZF9j cnRjX3N0YXRlLCBpKSB7CisJZm9yX2VhY2hfb2xkX2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBj cnRjLCBvbGRfY3J0Y19zdGF0ZSwgaSkgewogCQlpZiAoIShjcnRjX21hc2sgJiBkcm1fY3J0Y19t YXNrKGNydGMpKSkKIAkJCWNvbnRpbnVlOwogCkBAIC0xNDI3LDExICsxNDI0LDExIEBAIGludCBk cm1fYXRvbWljX2hlbHBlcl9zZXR1cF9jb21taXQoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlLAogCQkJCSAgIGJvb2wgbm9uYmxvY2spCiB7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwot CXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKm9sZF9jcnRjX3N0YXRlLCAqbmV3X2NydGNfc3RhdGU7CiAJc3RydWN0IGRybV9jcnRjX2Nv bW1pdCAqY29tbWl0OwogCWludCBpLCByZXQ7CiAKLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0 YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7CisJZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3Rh dGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewogCQlj b21taXQgPSBremFsbG9jKHNpemVvZigqY29tbWl0KSwgR0ZQX0tFUk5FTCk7CiAJCWlmICghY29t bWl0KQogCQkJcmV0dXJuIC1FTk9NRU07CkBAIC0xNDUyLDcgKzE0NDksNyBAQCBpbnQgZHJtX2F0 b21pY19oZWxwZXJfc2V0dXBfY29tbWl0KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwK IAkJLyogRHJpdmVycyBvbmx5IHNlbmQgb3V0IGV2ZW50cyB3aGVuIGF0IGxlYXN0IGVpdGhlciBj dXJyZW50IG9yCiAJCSAqIG5ldyBDUlRDIHN0YXRlIGlzIGFjdGl2ZS4gQ29tcGxldGUgcmlnaHQg YXdheSBpZiBldmVyeXRoaW5nCiAJCSAqIHN0YXlzIG9mZi4gKi8KLQkJaWYgKCFjcnRjLT5zdGF0 ZS0+YWN0aXZlICYmICFjcnRjX3N0YXRlLT5hY3RpdmUpIHsKKwkJaWYgKCFvbGRfY3J0Y19zdGF0 ZS0+YWN0aXZlICYmICFuZXdfY3J0Y19zdGF0ZS0+YWN0aXZlKSB7CiAJCQljb21wbGV0ZV9hbGwo JmNvbW1pdC0+ZmxpcF9kb25lKTsKIAkJCWNvbnRpbnVlOwogCQl9CkBAIC0xNDYzLDE3ICsxNDYw LDE3IEBAIGludCBkcm1fYXRvbWljX2hlbHBlcl9zZXR1cF9jb21taXQoc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlLAogCQkJY29udGludWU7CiAJCX0KIAotCQlpZiAoIWNydGNfc3RhdGUt PmV2ZW50KSB7CisJCWlmICghbmV3X2NydGNfc3RhdGUtPmV2ZW50KSB7CiAJCQljb21taXQtPmV2 ZW50ID0ga3phbGxvYyhzaXplb2YoKmNvbW1pdC0+ZXZlbnQpLAogCQkJCQkJR0ZQX0tFUk5FTCk7 CiAJCQlpZiAoIWNvbW1pdC0+ZXZlbnQpCiAJCQkJcmV0dXJuIC1FTk9NRU07CiAKLQkJCWNydGNf c3RhdGUtPmV2ZW50ID0gY29tbWl0LT5ldmVudDsKKwkJCW5ld19jcnRjX3N0YXRlLT5ldmVudCA9 IGNvbW1pdC0+ZXZlbnQ7CiAJCX0KIAotCQljcnRjX3N0YXRlLT5ldmVudC0+YmFzZS5jb21wbGV0 aW9uID0gJmNvbW1pdC0+ZmxpcF9kb25lOwotCQljcnRjX3N0YXRlLT5ldmVudC0+YmFzZS5jb21w bGV0aW9uX3JlbGVhc2UgPSByZWxlYXNlX2NydGNfY29tbWl0OworCQluZXdfY3J0Y19zdGF0ZS0+ ZXZlbnQtPmJhc2UuY29tcGxldGlvbiA9ICZjb21taXQtPmZsaXBfZG9uZTsKKwkJbmV3X2NydGNf c3RhdGUtPmV2ZW50LT5iYXNlLmNvbXBsZXRpb25fcmVsZWFzZSA9IHJlbGVhc2VfY3J0Y19jb21t aXQ7CiAJCWRybV9jcnRjX2NvbW1pdF9nZXQoY29tbWl0KTsKIAl9CiAKQEAgLTE1MTIsMTIgKzE1 MDksMTIgQEAgc3RhdGljIHN0cnVjdCBkcm1fY3J0Y19jb21taXQgKnByZWNlZWRpbmdfY29tbWl0 KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3Jf ZGVwZW5kZW5jaWVzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCiB7CiAJc3Ry dWN0IGRybV9jcnRjICpjcnRjOwotCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsK KwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwogCXN0cnVjdCBkcm1fY3J0 Y19jb21taXQgKmNvbW1pdDsKIAlpbnQgaTsKIAlsb25nIHJldDsKIAotCWZvcl9lYWNoX2NydGNf aW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7CisJZm9yX2VhY2hfbmV3 X2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewogCQlz cGluX2xvY2soJmNydGMtPmNvbW1pdF9sb2NrKTsKIAkJY29tbWl0ID0gcHJlY2VlZGluZ19jb21t aXQoY3J0Yyk7CiAJCWlmIChjb21taXQpCkBAIC0xNTY0LDE3ICsxNTYxLDE3IEBAIEVYUE9SVF9T WU1CT0woZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfZGVwZW5kZW5jaWVzKTsKIHZvaWQgZHJt X2F0b21pY19oZWxwZXJfY29tbWl0X2h3X2RvbmUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9s ZF9zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Ci0Jc3RydWN0IGRybV9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7 CiAJc3RydWN0IGRybV9jcnRjX2NvbW1pdCAqY29tbWl0OwogCWludCBpOwogCi0JZm9yX2VhY2hf Y3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKKwlmb3JfZWFj aF9uZXdfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG5ld19jcnRjX3N0YXRlLCBpKSB7 CiAJCWNvbW1pdCA9IG9sZF9zdGF0ZS0+Y3J0Y3NbaV0uY29tbWl0OwogCQlpZiAoIWNvbW1pdCkK IAkJCWNvbnRpbnVlOwogCiAJCS8qIGJhY2tlbmQgbXVzdCBoYXZlIGNvbnN1bWVkIGFueSBldmVu dCBieSBub3cgKi8KLQkJV0FSTl9PTihjcnRjLT5zdGF0ZS0+ZXZlbnQpOworCQlXQVJOX09OKG5l d19jcnRjX3N0YXRlLT5ldmVudCk7CiAJCXNwaW5fbG9jaygmY3J0Yy0+Y29tbWl0X2xvY2spOwog CQljb21wbGV0ZV9hbGwoJmNvbW1pdC0+aHdfZG9uZSk7CiAJCXNwaW5fdW5sb2NrKCZjcnRjLT5j b21taXRfbG9jayk7CkBAIC0xNTk2LDEyICsxNTkzLDEyIEBAIEVYUE9SVF9TWU1CT0woZHJtX2F0 b21pY19oZWxwZXJfY29tbWl0X2h3X2RvbmUpOwogdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9jb21t aXRfY2xlYW51cF9kb25lKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCiB7CiAJ c3RydWN0IGRybV9jcnRjICpjcnRjOwotCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZTsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwogCXN0cnVjdCBkcm1f Y3J0Y19jb21taXQgKmNvbW1pdDsKIAlpbnQgaTsKIAlsb25nIHJldDsKIAotCWZvcl9lYWNoX2Ny dGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7CisJZm9yX2VhY2hf bmV3X2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewog CQljb21taXQgPSBvbGRfc3RhdGUtPmNydGNzW2ldLmNvbW1pdDsKIAkJaWYgKFdBUk5fT04oIWNv bW1pdCkpCiAJCQljb250aW51ZTsKQEAgLTE2NTIsMTYgKzE2NDksMTYgQEAgaW50IGRybV9hdG9t aWNfaGVscGVyX3ByZXBhcmVfcGxhbmVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJICAg ICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0IGRybV9wbGFuZSAq cGxhbmU7Ci0Jc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7CisJc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqbmV3X3BsYW5lX3N0YXRlOwogCWludCByZXQsIGksIGo7CiAKLQlmb3Jf ZWFjaF9wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIHBsYW5lX3N0YXRlLCBpKSB7CisJZm9y X2VhY2hfbmV3X3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgbmV3X3BsYW5lX3N0YXRlLCBp KSB7CiAJCWNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzICpmdW5jczsKIAogCQlm dW5jcyA9IHBsYW5lLT5oZWxwZXJfcHJpdmF0ZTsKIAogCQlpZiAoZnVuY3MtPnByZXBhcmVfZmIp IHsKLQkJCXJldCA9IGZ1bmNzLT5wcmVwYXJlX2ZiKHBsYW5lLCBwbGFuZV9zdGF0ZSk7CisJCQly ZXQgPSBmdW5jcy0+cHJlcGFyZV9mYihwbGFuZSwgbmV3X3BsYW5lX3N0YXRlKTsKIAkJCWlmIChy ZXQpCiAJCQkJZ290byBmYWlsOwogCQl9CkBAIC0xNjcwLDcgKzE2NjcsNyBAQCBpbnQgZHJtX2F0 b21pY19oZWxwZXJfcHJlcGFyZV9wbGFuZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlyZXR1 cm4gMDsKIAogZmFpbDoKLQlmb3JfZWFjaF9wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIHBs YW5lX3N0YXRlLCBqKSB7CisJZm9yX2VhY2hfbmV3X3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFu ZSwgbmV3X3BsYW5lX3N0YXRlLCBqKSB7CiAJCWNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVy X2Z1bmNzICpmdW5jczsKIAogCQlpZiAoaiA+PSBpKQpAQCAtMTY3OSw3ICsxNjc2LDcgQEAgaW50 IGRybV9hdG9taWNfaGVscGVyX3ByZXBhcmVfcGxhbmVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CiAJCWZ1bmNzID0gcGxhbmUtPmhlbHBlcl9wcml2YXRlOwogCiAJCWlmIChmdW5jcy0+Y2xlYW51 cF9mYikKLQkJCWZ1bmNzLT5jbGVhbnVwX2ZiKHBsYW5lLCBwbGFuZV9zdGF0ZSk7CisJCQlmdW5j cy0+Y2xlYW51cF9mYihwbGFuZSwgbmV3X3BsYW5lX3N0YXRlKTsKIAl9CiAKIAlyZXR1cm4gcmV0 OwpAQCAtMTczNywxNCArMTczNCwxNCBAQCB2b2lkIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9w bGFuZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgICAgIHVpbnQzMl90IGZsYWdzKQog ewogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9j cnRjX3N0YXRlOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsICpuZXdf Y3J0Y19zdGF0ZTsKIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKLQlzdHJ1Y3QgZHJtX3BsYW5l X3N0YXRlICpvbGRfcGxhbmVfc3RhdGU7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3Bs YW5lX3N0YXRlLCAqbmV3X3BsYW5lX3N0YXRlOwogCWludCBpOwogCWJvb2wgYWN0aXZlX29ubHkg PSBmbGFncyAmIERSTV9QTEFORV9DT01NSVRfQUNUSVZFX09OTFk7CiAJYm9vbCBub19kaXNhYmxl ID0gZmxhZ3MgJiBEUk1fUExBTkVfQ09NTUlUX05PX0RJU0FCTEVfQUZURVJfTU9ERVNFVDsKIAot CWZvcl9lYWNoX2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwg aSkgeworCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0Yywgb2xk X2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBpKSB7CiAJCWNvbnN0IHN0cnVjdCBkcm1fY3J0 Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOwogCiAJCWZ1bmNzID0gY3J0Yy0+aGVscGVyX3ByaXZhdGU7 CkBAIC0xNzUyLDEzICsxNzQ5LDEzIEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3Bs YW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlpZiAoIWZ1bmNzIHx8ICFmdW5jcy0+YXRv bWljX2JlZ2luKQogCQkJY29udGludWU7CiAKLQkJaWYgKGFjdGl2ZV9vbmx5ICYmICFjcnRjLT5z dGF0ZS0+YWN0aXZlKQorCQlpZiAoYWN0aXZlX29ubHkgJiYgIW5ld19jcnRjX3N0YXRlLT5hY3Rp dmUpCiAJCQljb250aW51ZTsKIAogCQlmdW5jcy0+YXRvbWljX2JlZ2luKGNydGMsIG9sZF9jcnRj X3N0YXRlKTsKIAl9CiAKLQlmb3JfZWFjaF9wbGFuZV9pbl9zdGF0ZShvbGRfc3RhdGUsIHBsYW5l LCBvbGRfcGxhbmVfc3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9vbGRuZXdfcGxhbmVfaW5fc3RhdGUo b2xkX3N0YXRlLCBwbGFuZSwgb2xkX3BsYW5lX3N0YXRlLCBuZXdfcGxhbmVfc3RhdGUsIGkpIHsK IAkJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgKmZ1bmNzOwogCQlib29sIGRp c2FibGluZzsKIApAQCAtMTc3Nyw3ICsxNzc0LDcgQEAgdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9j b21taXRfcGxhbmVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkgKiBDUlRDIHRvIGF2b2lk IHNraXBwaW5nIHBsYW5lcyBiZWluZyBkaXNhYmxlZCBvbiBhbgogCQkJICogYWN0aXZlIENSVEMu CiAJCQkgKi8KLQkJCWlmICghZGlzYWJsaW5nICYmICFwbGFuZV9jcnRjX2FjdGl2ZShwbGFuZS0+ c3RhdGUpKQorCQkJaWYgKCFkaXNhYmxpbmcgJiYgIXBsYW5lX2NydGNfYWN0aXZlKG5ld19wbGFu ZV9zdGF0ZSkpCiAJCQkJY29udGludWU7CiAJCQlpZiAoZGlzYWJsaW5nICYmICFwbGFuZV9jcnRj X2FjdGl2ZShvbGRfcGxhbmVfc3RhdGUpKQogCQkJCWNvbnRpbnVlOwpAQCAtMTc5NiwxMiArMTc5 MywxMiBAQCB2b2lkIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAkJCQljb250aW51ZTsKIAogCQkJZnVuY3MtPmF0b21pY19kaXNhYmxlKHBs YW5lLCBvbGRfcGxhbmVfc3RhdGUpOwotCQl9IGVsc2UgaWYgKHBsYW5lLT5zdGF0ZS0+Y3J0YyB8 fCBkaXNhYmxpbmcpIHsKKwkJfSBlbHNlIGlmIChuZXdfcGxhbmVfc3RhdGUtPmNydGMgfHwgZGlz YWJsaW5nKSB7CiAJCQlmdW5jcy0+YXRvbWljX3VwZGF0ZShwbGFuZSwgb2xkX3BsYW5lX3N0YXRl KTsKIAkJfQogCX0KIAotCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBv bGRfY3J0Y19zdGF0ZSwgaSkgeworCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRlKG9sZF9z dGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBpKSB7CiAJCWNvbnN0 IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOwogCiAJCWZ1bmNzID0gY3J0Yy0+ aGVscGVyX3ByaXZhdGU7CkBAIC0xODA5LDcgKzE4MDYsNyBAQCB2b2lkIGRybV9hdG9taWNfaGVs cGVyX2NvbW1pdF9wbGFuZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJaWYgKCFmdW5jcyB8 fCAhZnVuY3MtPmF0b21pY19mbHVzaCkKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChhY3RpdmVfb25s eSAmJiAhY3J0Yy0+c3RhdGUtPmFjdGl2ZSkKKwkJaWYgKGFjdGl2ZV9vbmx5ICYmICFuZXdfY3J0 Y19zdGF0ZS0+YWN0aXZlKQogCQkJY29udGludWU7CiAKIAkJZnVuY3MtPmF0b21pY19mbHVzaChj cnRjLCBvbGRfY3J0Y19zdGF0ZSk7CkBAIC0xOTM2LDExICsxOTMzLDIxIEBAIHZvaWQgZHJtX2F0 b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkg ICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQogewogCXN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lOwotCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOworCXN0 cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZSwgKm5ld19wbGFuZV9zdGF0ZTsK IAlpbnQgaTsKIAotCWZvcl9lYWNoX3BsYW5lX2luX3N0YXRlKG9sZF9zdGF0ZSwgcGxhbmUsIHBs YW5lX3N0YXRlLCBpKSB7CisJZm9yX2VhY2hfb2xkbmV3X3BsYW5lX2luX3N0YXRlKG9sZF9zdGF0 ZSwgcGxhbmUsIG9sZF9wbGFuZV9zdGF0ZSwgbmV3X3BsYW5lX3N0YXRlLCBpKSB7CiAJCWNvbnN0 IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzICpmdW5jczsKKwkJc3RydWN0IGRybV9wbGFu ZV9zdGF0ZSAqcGxhbmVfc3RhdGU7CisKKwkJLyoKKwkJICogVGhpcyBtaWdodCBiZSBjYWxsZWQg YmVmb3JlIHN3YXBwaW5nIHdoZW4gY29tbWl0IGlzIGFib3J0ZWQsCisJCSAqIGluIHdoaWNoIGNh c2Ugd2UgaGF2ZSB0byBjbGVhbnVwIHRoZSBuZXcgc3RhdGUuCisJCSAqLworCQlpZiAob2xkX3Bs YW5lX3N0YXRlID09IHBsYW5lLT5zdGF0ZSkKKwkJCXBsYW5lX3N0YXRlID0gbmV3X3BsYW5lX3N0 YXRlOworCQllbHNlCisJCQlwbGFuZV9zdGF0ZSA9IG9sZF9wbGFuZV9zdGF0ZTsKIAogCQlmdW5j cyA9IHBsYW5lLT5oZWxwZXJfcHJpdmF0ZTsKIApAQCAtMTk4NiwxNSArMTk5MywxNSBAQCB2b2lk IGRybV9hdG9taWNfaGVscGVyX3N3YXBfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlLAogCWludCBpOwogCWxvbmcgcmV0OwogCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3I7Ci0Jc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUsICpvbGRfY29ubl9z dGF0ZTsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGUsICpuZXdf Y29ubl9zdGF0ZTsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Ci0Jc3RydWN0IGRybV9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLCAqb2xkX2NydGNfc3RhdGU7CisJc3RydWN0IGRybV9jcnRjX3N0YXRl ICpvbGRfY3J0Y19zdGF0ZSwgKm5ld19jcnRjX3N0YXRlOwogCXN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lOwotCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlLCAqb2xkX3BsYW5lX3N0 YXRlOworCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZSwgKm5ld19wbGFu ZV9zdGF0ZTsKIAlzdHJ1Y3QgZHJtX2NydGNfY29tbWl0ICpjb21taXQ7CiAKIAlpZiAoc3RhbGwp IHsKLQkJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkg eworCQlmb3JfZWFjaF9uZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgbmV3X2NydGNfc3Rh dGUsIGkpIHsKIAkJCXNwaW5fbG9jaygmY3J0Yy0+Y29tbWl0X2xvY2spOwogCQkJY29tbWl0ID0g bGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZjcnRjLT5jb21taXRfbGlzdCwKIAkJCQkJc3RydWN0 IGRybV9jcnRjX2NvbW1pdCwgY29tbWl0X2VudHJ5KTsKQEAgLTIwMTQsMjAgKzIwMjEsMjQgQEAg dm9pZCBkcm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSwKIAkJfQogCX0KIAotCWZvcl9lYWNoX29sZG5ld19jb25uZWN0b3JfaW5fc3RhdGUo c3RhdGUsIGNvbm5lY3Rvciwgb2xkX2Nvbm5fc3RhdGUsIGNvbm5fc3RhdGUsIGkpIHsKKwlmb3Jf ZWFjaF9vbGRuZXdfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IsIG9sZF9jb25u X3N0YXRlLCBuZXdfY29ubl9zdGF0ZSwgaSkgewogCQlXQVJOX09OKGNvbm5lY3Rvci0+c3RhdGUg IT0gb2xkX2Nvbm5fc3RhdGUpOwogCi0JCWNvbm5lY3Rvci0+c3RhdGUtPnN0YXRlID0gc3RhdGU7 Ci0JCXN3YXAoc3RhdGUtPmNvbm5lY3RvcnNbaV0uc3RhdGUsIGNvbm5lY3Rvci0+c3RhdGUpOwot CQljb25uZWN0b3ItPnN0YXRlLT5zdGF0ZSA9IE5VTEw7CisJCW9sZF9jb25uX3N0YXRlLT5zdGF0 ZSA9IHN0YXRlOworCQluZXdfY29ubl9zdGF0ZS0+c3RhdGUgPSBOVUxMOworCisJCXN0YXRlLT5j b25uZWN0b3JzW2ldLnN0YXRlID0gb2xkX2Nvbm5fc3RhdGU7CisJCWNvbm5lY3Rvci0+c3RhdGUg PSBuZXdfY29ubl9zdGF0ZTsKIAl9CiAKLQlmb3JfZWFjaF9vbGRuZXdfY3J0Y19pbl9zdGF0ZShz dGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIGNydGNfc3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9v bGRuZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRj X3N0YXRlLCBpKSB7CiAJCVdBUk5fT04oY3J0Yy0+c3RhdGUgIT0gb2xkX2NydGNfc3RhdGUpOwog Ci0JCWNydGMtPnN0YXRlLT5zdGF0ZSA9IHN0YXRlOwotCQlzd2FwKHN0YXRlLT5jcnRjc1tpXS5z dGF0ZSwgY3J0Yy0+c3RhdGUpOwotCQljcnRjLT5zdGF0ZS0+c3RhdGUgPSBOVUxMOworCQlvbGRf Y3J0Y19zdGF0ZS0+c3RhdGUgPSBzdGF0ZTsKKwkJbmV3X2NydGNfc3RhdGUtPnN0YXRlID0gTlVM TDsKKworCQlzdGF0ZS0+Y3J0Y3NbaV0uc3RhdGUgPSBvbGRfY3J0Y19zdGF0ZTsKKwkJY3J0Yy0+ c3RhdGUgPSBuZXdfY3J0Y19zdGF0ZTsKIAogCQlpZiAoc3RhdGUtPmNydGNzW2ldLmNvbW1pdCkg ewogCQkJc3Bpbl9sb2NrKCZjcnRjLT5jb21taXRfbG9jayk7CkBAIC0yMDM5LDEyICsyMDUwLDE0 IEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUsCiAJCX0KIAl9CiAKLQlmb3JfZWFjaF9vbGRuZXdfcGxhbmVfaW5fc3RhdGUo c3RhdGUsIHBsYW5lLCBvbGRfcGxhbmVfc3RhdGUsIHBsYW5lX3N0YXRlLCBpKSB7CisJZm9yX2Vh Y2hfb2xkbmV3X3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgb2xkX3BsYW5lX3N0YXRlLCBu ZXdfcGxhbmVfc3RhdGUsIGkpIHsKIAkJV0FSTl9PTihwbGFuZS0+c3RhdGUgIT0gb2xkX3BsYW5l X3N0YXRlKTsKIAotCQlwbGFuZS0+c3RhdGUtPnN0YXRlID0gc3RhdGU7Ci0JCXN3YXAoc3RhdGUt PnBsYW5lc1tpXS5zdGF0ZSwgcGxhbmUtPnN0YXRlKTsKLQkJcGxhbmUtPnN0YXRlLT5zdGF0ZSA9 IE5VTEw7CisJCW9sZF9wbGFuZV9zdGF0ZS0+c3RhdGUgPSBzdGF0ZTsKKwkJbmV3X3BsYW5lX3N0 YXRlLT5zdGF0ZSA9IE5VTEw7CisKKwkJc3RhdGUtPnBsYW5lc1tpXS5zdGF0ZSA9IG9sZF9wbGFu ZV9zdGF0ZTsKKwkJcGxhbmUtPnN0YXRlID0gbmV3X3BsYW5lX3N0YXRlOwogCX0KIH0KIEVYUE9S VF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZSk7CkBAIC0yMjI3LDkgKzIyNDAs OSBAQCBzdGF0aWMgaW50IHVwZGF0ZV9vdXRwdXRfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlLAogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzZXQtPmNydGMtPmRldjsK IAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Ci0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7CiAJc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKLQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29u bl9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nvbm5fc3RhdGU7CiAJ aW50IHJldCwgaTsKIAogCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmRldi0+bW9kZV9jb25maWcu Y29ubmVjdGlvbl9tdXRleCwKQEAgLTIyNDIsMzEgKzIyNTUsMzIgQEAgc3RhdGljIGludCB1cGRh dGVfb3V0cHV0X3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKIAlpZiAocmV0 KQogCQlyZXR1cm4gcmV0OwogCi0JZm9yX2VhY2hfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBj b25uZWN0b3IsIGNvbm5fc3RhdGUsIGkpIHsKLQkJaWYgKGNvbm5fc3RhdGUtPmNydGMgPT0gc2V0 LT5jcnRjKSB7Ci0JCQlyZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9jb25uZWN0b3IoY29u bl9zdGF0ZSwKKwlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25uZWN0 b3IsIG5ld19jb25uX3N0YXRlLCBpKSB7CisJCWlmIChuZXdfY29ubl9zdGF0ZS0+Y3J0YyA9PSBz ZXQtPmNydGMpIHsKKwkJCXJldCA9IGRybV9hdG9taWNfc2V0X2NydGNfZm9yX2Nvbm5lY3Rvcihu ZXdfY29ubl9zdGF0ZSwKIAkJCQkJCQkJTlVMTCk7CiAJCQlpZiAocmV0KQogCQkJCXJldHVybiBy ZXQ7CisKIAkJCS8qIE1ha2Ugc3VyZSBsZWdhY3kgc2V0Q3J0YyBhbHdheXMgcmUtdHJhaW5zICov Ci0JCQljb25uX3N0YXRlLT5saW5rX3N0YXR1cyA9IERSTV9MSU5LX1NUQVRVU19HT09EOworCQkJ bmV3X2Nvbm5fc3RhdGUtPmxpbmtfc3RhdHVzID0gRFJNX0xJTktfU1RBVFVTX0dPT0Q7CiAJCX0K IAl9CiAKIAkvKiBUaGVuIHNldCBhbGwgY29ubmVjdG9ycyBmcm9tIHNldC0+Y29ubmVjdG9ycyBv biB0aGUgdGFyZ2V0IGNydGMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgc2V0LT5udW1fY29ubmVjdG9y czsgaSsrKSB7Ci0JCWNvbm5fc3RhdGUgPSBkcm1fYXRvbWljX2dldF9jb25uZWN0b3Jfc3RhdGUo c3RhdGUsCisJCW5ld19jb25uX3N0YXRlID0gZHJtX2F0b21pY19nZXRfY29ubmVjdG9yX3N0YXRl KHN0YXRlLAogCQkJCQkJCSAgICBzZXQtPmNvbm5lY3RvcnNbaV0pOwotCQlpZiAoSVNfRVJSKGNv bm5fc3RhdGUpKQotCQkJcmV0dXJuIFBUUl9FUlIoY29ubl9zdGF0ZSk7CisJCWlmIChJU19FUlIo bmV3X2Nvbm5fc3RhdGUpKQorCQkJcmV0dXJuIFBUUl9FUlIobmV3X2Nvbm5fc3RhdGUpOwogCi0J CXJldCA9IGRybV9hdG9taWNfc2V0X2NydGNfZm9yX2Nvbm5lY3Rvcihjb25uX3N0YXRlLAorCQly ZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9jb25uZWN0b3IobmV3X2Nvbm5fc3RhdGUsCiAJ CQkJCQkJc2V0LT5jcnRjKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAJfQogCi0JZm9y X2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgeworCWZvcl9l YWNoX25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewog CQkvKiBEb24ndCB1cGRhdGUgLT5lbmFibGUgZm9yIHRoZSBDUlRDIGluIHRoZSBzZXRfY29uZmln IHJlcXVlc3QsCiAJCSAqIHNpbmNlIGEgbWlzbWF0Y2ggd291bGQgaW5kaWNhdGUgYSBidWcgaW4g dGhlIHVwcGVyIGxheWVycy4KIAkJICogVGhlIGFjdHVhbCBtb2Rlc2V0IGNvZGUgbGF0ZXIgb24g d2lsbCBjYXRjaCBhbnkKQEAgLTIyNzQsMTMgKzIyODgsMTMgQEAgc3RhdGljIGludCB1cGRhdGVf b3V0cHV0X3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJaWYgKGNydGMg PT0gc2V0LT5jcnRjKQogCQkJY29udGludWU7CiAKLQkJaWYgKCFjcnRjX3N0YXRlLT5jb25uZWN0 b3JfbWFzaykgewotCQkJcmV0ID0gZHJtX2F0b21pY19zZXRfbW9kZV9wcm9wX2Zvcl9jcnRjKGNy dGNfc3RhdGUsCisJCWlmICghbmV3X2NydGNfc3RhdGUtPmNvbm5lY3Rvcl9tYXNrKSB7CisJCQly ZXQgPSBkcm1fYXRvbWljX3NldF9tb2RlX3Byb3BfZm9yX2NydGMobmV3X2NydGNfc3RhdGUsCiAJ CQkJCQkJCU5VTEwpOwogCQkJaWYgKHJldCA8IDApCiAJCQkJcmV0dXJuIHJldDsKIAotCQkJY3J0 Y19zdGF0ZS0+YWN0aXZlID0gZmFsc2U7CisJCQluZXdfY3J0Y19zdGF0ZS0+YWN0aXZlID0gZmFs c2U7CiAJCX0KIAl9CiAKQEAgLTI1ODMsMjEgKzI1OTcsMjEgQEAgaW50IGRybV9hdG9taWNfaGVs cGVyX2NvbW1pdF9kdXBsaWNhdGVkX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSwKIHsKIAlpbnQgaTsKIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKLQlzdHJ1Y3QgZHJtX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpuZXdfcGxh bmVfc3RhdGU7CiAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKLQlzdHJ1Y3QgZHJt X2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0 ZSAqbmV3X2Nvbm5fc3RhdGU7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwotCXN0cnVjdCBkcm1f Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRj X3N0YXRlOwogCiAJc3RhdGUtPmFjcXVpcmVfY3R4ID0gY3R4OwogCi0JZm9yX2VhY2hfbmV3X3Bs YW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgcGxhbmVfc3RhdGUsIGkpCisJZm9yX2VhY2hfbmV3 X3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgbmV3X3BsYW5lX3N0YXRlLCBpKQogCQlzdGF0 ZS0+cGxhbmVzW2ldLm9sZF9zdGF0ZSA9IHBsYW5lLT5zdGF0ZTsKIAotCWZvcl9lYWNoX25ld19j cnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKQorCWZvcl9lYWNoX25ld19j cnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSwgaSkKIAkJc3RhdGUtPmNy dGNzW2ldLm9sZF9zdGF0ZSA9IGNydGMtPnN0YXRlOwogCi0JZm9yX2VhY2hfbmV3X2Nvbm5lY3Rv cl9pbl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yLCBjb25uX3N0YXRlLCBpKQorCWZvcl9lYWNoX25l d19jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3RvciwgbmV3X2Nvbm5fc3RhdGUsIGkp CiAJCXN0YXRlLT5jb25uZWN0b3JzW2ldLm9sZF9zdGF0ZSA9IGNvbm5lY3Rvci0+c3RhdGU7CiAK IAlyZXR1cm4gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwotLSAKMi43LjQKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK