From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH v4 1/5] drm/atomic: Fix atomic helpers to use the new iterator macros, v2. Date: Thu, 16 Feb 2017 15:47:06 +0100 Message-ID: <1487256430-7625-2-git-send-email-maarten.lankhorst@linux.intel.com> References: <1487256430-7625-1-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1487256430-7625-1-git-send-email-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VGhlcmUgYXJlIG5ldyBpdGVyYXRvciBtYWNyb3MgdGhhdCBhbm5vdGF0ZSB3aGV0aGVyIHRoZSBu ZXcgb3Igb2xkCnN0YXRlIHNob3VsZCBiZSB1c2VkLiBUaGlzIGlzIGJldHRlciB0aGFuIHVzaW5n IGEgc3RhdGUgdGhhdCBkZXBlbmRzIG9uCndoZXRoZXIgaXQncyBjYWxsZWQgYmVmb3JlIG9yIGFm dGVyIHN3YXAuIEZvciBjbGFyaXR5LCBhbHNvIHJlbmFtZSB0aGUKdmFyaWFibGVzIGZyb20gJG9i al9zdGF0ZSB0byAob2xkLG5ldylfJG9ial9zdGF0ZSBhcyB3ZWxsLgoKQ2hhbmdlcyBzaW5jZSB2 MToKLSBVc2Ugb2xkL25ld18qX3N0YXRlIGZvciB2YXJpYWJsZSBuYW1lcyBhcyBtdWNoIGFzIHBv c3NpYmxlLiAocGluY2hhcnRsKQotIEV4cGFuZCBjb21taXQgbWVzc2FnZS4KClNpZ25lZC1vZmYt Ynk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgfCA0MzEgKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjIyIGluc2VydGlv bnMoKyksIDIwOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJt X2F0b21pY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCmlu ZGV4IDkyMDNmM2U5MzNmNy4uN2Q0MzJkOWExOGNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2F0b21pY19oZWxwZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19o ZWxwZXIuYwpAQCAtNjMsMTQgKzYzLDE1IEBACiAgKi8KIHN0YXRpYyB2b2lkCiBkcm1fYXRvbWlj X2hlbHBlcl9wbGFuZV9jaGFuZ2VkKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKKwkJ CQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfcGxhbmVfc3RhdGUsCiAJCQkJc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCiAJCQkJc3RydWN0IGRybV9wbGFuZSAqcGxhbmUp CiB7CiAJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwogCi0JaWYgKHBsYW5lLT5z dGF0ZS0+Y3J0YykgeworCWlmIChvbGRfcGxhbmVfc3RhdGUtPmNydGMpIHsKIAkJY3J0Y19zdGF0 ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUsCi0JCQkJCQkJCXBs YW5lLT5zdGF0ZS0+Y3J0Yyk7CisJCQkJCQkJCW9sZF9wbGFuZV9zdGF0ZS0+Y3J0Yyk7CiAKIAkJ aWYgKFdBUk5fT04oIWNydGNfc3RhdGUpKQogCQkJcmV0dXJuOwpAQCAtOTIsNyArOTMsNyBAQCBk cm1fYXRvbWljX2hlbHBlcl9wbGFuZV9jaGFuZ2VkKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSwKIHN0YXRpYyBpbnQgaGFuZGxlX2NvbmZsaWN0aW5nX2VuY29kZXJzKHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJCQkgICAgICAgYm9vbCBkaXNhYmxlX2NvbmZsaWN0aW5n X2VuY29kZXJzKQogewotCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOwor CXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpuZXdfY29ubl9zdGF0ZTsKIAlzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yOwogCXN0cnVjdCBkcm1fY29ubmVjdG9yX2xpc3RfaXRlciBj b25uX2l0ZXI7CiAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwpAQCAtMTA0LDE1ICsxMDUs MTUgQEAgc3RhdGljIGludCBoYW5kbGVfY29uZmxpY3RpbmdfZW5jb2RlcnMoc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlLAogCSAqIHBhcnQgb2YgdGhlIHN0YXRlLiBJZiB0aGUgc2FtZSBl bmNvZGVyIGlzIGFzc2lnbmVkIHRvIG11bHRpcGxlCiAJICogY29ubmVjdG9ycyBiYWlsIG91dC4K IAkgKi8KLQlmb3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3RvciwgY29u bl9zdGF0ZSwgaSkgeworCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNv bm5lY3RvciwgbmV3X2Nvbm5fc3RhdGUsIGkpIHsKIAkJY29uc3Qgc3RydWN0IGRybV9jb25uZWN0 b3JfaGVscGVyX2Z1bmNzICpmdW5jcyA9IGNvbm5lY3Rvci0+aGVscGVyX3ByaXZhdGU7CiAJCXN0 cnVjdCBkcm1fZW5jb2RlciAqbmV3X2VuY29kZXI7CiAKLQkJaWYgKCFjb25uX3N0YXRlLT5jcnRj KQorCQlpZiAoIW5ld19jb25uX3N0YXRlLT5jcnRjKQogCQkJY29udGludWU7CiAKIAkJaWYgKGZ1 bmNzLT5hdG9taWNfYmVzdF9lbmNvZGVyKQotCQkJbmV3X2VuY29kZXIgPSBmdW5jcy0+YXRvbWlj X2Jlc3RfZW5jb2Rlcihjb25uZWN0b3IsIGNvbm5fc3RhdGUpOworCQkJbmV3X2VuY29kZXIgPSBm dW5jcy0+YXRvbWljX2Jlc3RfZW5jb2Rlcihjb25uZWN0b3IsIG5ld19jb25uX3N0YXRlKTsKIAkJ ZWxzZSBpZiAoZnVuY3MtPmJlc3RfZW5jb2RlcikKIAkJCW5ld19lbmNvZGVyID0gZnVuY3MtPmJl c3RfZW5jb2Rlcihjb25uZWN0b3IpOwogCQllbHNlCkBAIC0xNjYsMjAgKzE2NywyMCBAQCBzdGF0 aWMgaW50IGhhbmRsZV9jb25mbGljdGluZ19lbmNvZGVycyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUsCiAJCQlnb3RvIG91dDsKIAkJfQogCi0JCWNvbm5fc3RhdGUgPSBkcm1fYXRvbWlj X2dldF9jb25uZWN0b3Jfc3RhdGUoc3RhdGUsIGNvbm5lY3Rvcik7Ci0JCWlmIChJU19FUlIoY29u bl9zdGF0ZSkpIHsKLQkJCXJldCA9IFBUUl9FUlIoY29ubl9zdGF0ZSk7CisJCW5ld19jb25uX3N0 YXRlID0gZHJtX2F0b21pY19nZXRfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IpOwor CQlpZiAoSVNfRVJSKG5ld19jb25uX3N0YXRlKSkgeworCQkJcmV0ID0gUFRSX0VSUihuZXdfY29u bl9zdGF0ZSk7CiAJCQlnb3RvIG91dDsKIAkJfQogCiAJCURSTV9ERUJVR19BVE9NSUMoIltFTkNP REVSOiVkOiVzXSBpbiB1c2Ugb24gW0NSVEM6JWQ6JXNdLCBkaXNhYmxpbmcgW0NPTk5FQ1RPUjol ZDolc11cbiIsCiAJCQkJIGVuY29kZXItPmJhc2UuaWQsIGVuY29kZXItPm5hbWUsCi0JCQkJIGNv bm5fc3RhdGUtPmNydGMtPmJhc2UuaWQsIGNvbm5fc3RhdGUtPmNydGMtPm5hbWUsCisJCQkJIG5l d19jb25uX3N0YXRlLT5jcnRjLT5iYXNlLmlkLCBuZXdfY29ubl9zdGF0ZS0+Y3J0Yy0+bmFtZSwK IAkJCQkgY29ubmVjdG9yLT5iYXNlLmlkLCBjb25uZWN0b3ItPm5hbWUpOwogCi0JCWNydGNfc3Rh dGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLCBjb25uX3N0YXRl LT5jcnRjKTsKKwkJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3Rh dGUoc3RhdGUsIG5ld19jb25uX3N0YXRlLT5jcnRjKTsKIAotCQlyZXQgPSBkcm1fYXRvbWljX3Nl dF9jcnRjX2Zvcl9jb25uZWN0b3IoY29ubl9zdGF0ZSwgTlVMTCk7CisJCXJldCA9IGRybV9hdG9t aWNfc2V0X2NydGNfZm9yX2Nvbm5lY3RvcihuZXdfY29ubl9zdGF0ZSwgTlVMTCk7CiAJCWlmIChy ZXQpCiAJCQlnb3RvIG91dDsKIApAQCAtMjQ1LDIyICsyNDYsMjIgQEAgc3RlYWxfZW5jb2Rlcihz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiB7CiAJc3RydWN0IGRybV9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlOwogCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Ci0Jc3RydWN0 IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5lY3Rvcl9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9zdGF0ZSAqb2xkX2Nvbm5lY3Rvcl9zdGF0ZSwgKm5ld19jb25uZWN0b3Jfc3RhdGU7CiAJ aW50IGk7CiAKLQlmb3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3Rvciwg Y29ubmVjdG9yX3N0YXRlLCBpKSB7CisJZm9yX2VhY2hfb2xkbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0 ZShzdGF0ZSwgY29ubmVjdG9yLCBvbGRfY29ubmVjdG9yX3N0YXRlLCBuZXdfY29ubmVjdG9yX3N0 YXRlLCBpKSB7CiAJCXN0cnVjdCBkcm1fY3J0YyAqZW5jb2Rlcl9jcnRjOwogCi0JCWlmIChjb25u ZWN0b3Jfc3RhdGUtPmJlc3RfZW5jb2RlciAhPSBlbmNvZGVyKQorCQlpZiAobmV3X2Nvbm5lY3Rv cl9zdGF0ZS0+YmVzdF9lbmNvZGVyICE9IGVuY29kZXIpCiAJCQljb250aW51ZTsKIAotCQllbmNv ZGVyX2NydGMgPSBjb25uZWN0b3ItPnN0YXRlLT5jcnRjOworCQllbmNvZGVyX2NydGMgPSBvbGRf Y29ubmVjdG9yX3N0YXRlLT5jcnRjOwogCiAJCURSTV9ERUJVR19BVE9NSUMoIltFTkNPREVSOiVk OiVzXSBpbiB1c2Ugb24gW0NSVEM6JWQ6JXNdLCBzdGVhbGluZyBpdFxuIiwKIAkJCQkgZW5jb2Rl ci0+YmFzZS5pZCwgZW5jb2Rlci0+bmFtZSwKIAkJCQkgZW5jb2Rlcl9jcnRjLT5iYXNlLmlkLCBl bmNvZGVyX2NydGMtPm5hbWUpOwogCi0JCXNldF9iZXN0X2VuY29kZXIoc3RhdGUsIGNvbm5lY3Rv cl9zdGF0ZSwgTlVMTCk7CisJCXNldF9iZXN0X2VuY29kZXIoc3RhdGUsIG5ld19jb25uZWN0b3Jf c3RhdGUsIE5VTEwpOwogCiAJCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19j cnRjX3N0YXRlKHN0YXRlLCBlbmNvZGVyX2NydGMpOwogCQljcnRjX3N0YXRlLT5jb25uZWN0b3Jz X2NoYW5nZWQgPSB0cnVlOwpAQCAtMjcyLDcgKzI3Myw4IEBAIHN0ZWFsX2VuY29kZXIoc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogc3RhdGljIGludAogdXBkYXRlX2Nvbm5lY3Rvcl9y b3V0aW5nKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJCSBzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yLAotCQkJIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25u ZWN0b3Jfc3RhdGUpCisJCQkgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25uZWN0 b3Jfc3RhdGUsCisJCQkgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm5ld19jb25uZWN0b3Jf c3RhdGUpCiB7CiAJY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzICpmdW5j czsKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKm5ld19lbmNvZGVyOwpAQCAtMjgyLDI0ICsyODQsMjQg QEAgdXBkYXRlX2Nvbm5lY3Rvcl9yb3V0aW5nKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSwKIAkJCSBjb25uZWN0b3ItPmJhc2UuaWQsCiAJCQkgY29ubmVjdG9yLT5uYW1lKTsKIAotCWlm IChjb25uZWN0b3ItPnN0YXRlLT5jcnRjICE9IGNvbm5lY3Rvcl9zdGF0ZS0+Y3J0YykgewotCQlp ZiAoY29ubmVjdG9yLT5zdGF0ZS0+Y3J0YykgewotCQkJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNf Z2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUsIGNvbm5lY3Rvci0+c3RhdGUtPmNydGMpOwor CWlmIChvbGRfY29ubmVjdG9yX3N0YXRlLT5jcnRjICE9IG5ld19jb25uZWN0b3Jfc3RhdGUtPmNy dGMpIHsKKwkJaWYgKG9sZF9jb25uZWN0b3Jfc3RhdGUtPmNydGMpIHsKKwkJCWNydGNfc3RhdGUg PSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLCBvbGRfY29ubmVjdG9y X3N0YXRlLT5jcnRjKTsKIAkJCWNydGNfc3RhdGUtPmNvbm5lY3RvcnNfY2hhbmdlZCA9IHRydWU7 CiAJCX0KIAotCQlpZiAoY29ubmVjdG9yX3N0YXRlLT5jcnRjKSB7Ci0JCQljcnRjX3N0YXRlID0g ZHJtX2F0b21pY19nZXRfZXhpc3RpbmdfY3J0Y19zdGF0ZShzdGF0ZSwgY29ubmVjdG9yX3N0YXRl LT5jcnRjKTsKKwkJaWYgKG5ld19jb25uZWN0b3Jfc3RhdGUtPmNydGMpIHsKKwkJCWNydGNfc3Rh dGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLCBuZXdfY29ubmVj dG9yX3N0YXRlLT5jcnRjKTsKIAkJCWNydGNfc3RhdGUtPmNvbm5lY3RvcnNfY2hhbmdlZCA9IHRy dWU7CiAJCX0KIAl9CiAKLQlpZiAoIWNvbm5lY3Rvcl9zdGF0ZS0+Y3J0YykgeworCWlmICghbmV3 X2Nvbm5lY3Rvcl9zdGF0ZS0+Y3J0YykgewogCQlEUk1fREVCVUdfQVRPTUlDKCJEaXNhYmxpbmcg W0NPTk5FQ1RPUjolZDolc11cbiIsCiAJCQkJY29ubmVjdG9yLT5iYXNlLmlkLAogCQkJCWNvbm5l Y3Rvci0+bmFtZSk7CiAKLQkJc2V0X2Jlc3RfZW5jb2RlcihzdGF0ZSwgY29ubmVjdG9yX3N0YXRl LCBOVUxMKTsKKwkJc2V0X2Jlc3RfZW5jb2RlcihzdGF0ZSwgbmV3X2Nvbm5lY3Rvcl9zdGF0ZSwg TlVMTCk7CiAKIAkJcmV0dXJuIDA7CiAJfQpAQCAtMzA4LDcgKzMxMCw3IEBAIHVwZGF0ZV9jb25u ZWN0b3Jfcm91dGluZyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAKIAlpZiAoZnVu Y3MtPmF0b21pY19iZXN0X2VuY29kZXIpCiAJCW5ld19lbmNvZGVyID0gZnVuY3MtPmF0b21pY19i ZXN0X2VuY29kZXIoY29ubmVjdG9yLAotCQkJCQkJCSBjb25uZWN0b3Jfc3RhdGUpOworCQkJCQkJ CSBuZXdfY29ubmVjdG9yX3N0YXRlKTsKIAllbHNlIGlmIChmdW5jcy0+YmVzdF9lbmNvZGVyKQog CQluZXdfZW5jb2RlciA9IGZ1bmNzLT5iZXN0X2VuY29kZXIoY29ubmVjdG9yKTsKIAllbHNlCkBA IC0zMjEsMzQgKzMyMywzNCBAQCB1cGRhdGVfY29ubmVjdG9yX3JvdXRpbmcoc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlLAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlpZiAoIWRybV9l bmNvZGVyX2NydGNfb2sobmV3X2VuY29kZXIsIGNvbm5lY3Rvcl9zdGF0ZS0+Y3J0YykpIHsKKwlp ZiAoIWRybV9lbmNvZGVyX2NydGNfb2sobmV3X2VuY29kZXIsIG5ld19jb25uZWN0b3Jfc3RhdGUt PmNydGMpKSB7CiAJCURSTV9ERUJVR19BVE9NSUMoIltFTkNPREVSOiVkOiVzXSBpbmNvbXBhdGli bGUgd2l0aCBbQ1JUQzolZDolc11cbiIsCiAJCQkJIG5ld19lbmNvZGVyLT5iYXNlLmlkLAogCQkJ CSBuZXdfZW5jb2Rlci0+bmFtZSwKLQkJCQkgY29ubmVjdG9yX3N0YXRlLT5jcnRjLT5iYXNlLmlk LAotCQkJCSBjb25uZWN0b3Jfc3RhdGUtPmNydGMtPm5hbWUpOworCQkJCSBuZXdfY29ubmVjdG9y X3N0YXRlLT5jcnRjLT5iYXNlLmlkLAorCQkJCSBuZXdfY29ubmVjdG9yX3N0YXRlLT5jcnRjLT5u YW1lKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JaWYgKG5ld19lbmNvZGVyID09IGNvbm5l Y3Rvcl9zdGF0ZS0+YmVzdF9lbmNvZGVyKSB7Ci0JCXNldF9iZXN0X2VuY29kZXIoc3RhdGUsIGNv bm5lY3Rvcl9zdGF0ZSwgbmV3X2VuY29kZXIpOworCWlmIChuZXdfZW5jb2RlciA9PSBuZXdfY29u bmVjdG9yX3N0YXRlLT5iZXN0X2VuY29kZXIpIHsKKwkJc2V0X2Jlc3RfZW5jb2RlcihzdGF0ZSwg bmV3X2Nvbm5lY3Rvcl9zdGF0ZSwgbmV3X2VuY29kZXIpOwogCiAJCURSTV9ERUJVR19BVE9NSUMo IltDT05ORUNUT1I6JWQ6JXNdIGtlZXBzIFtFTkNPREVSOiVkOiVzXSwgbm93IG9uIFtDUlRDOiVk OiVzXVxuIiwKIAkJCQkgY29ubmVjdG9yLT5iYXNlLmlkLAogCQkJCSBjb25uZWN0b3ItPm5hbWUs CiAJCQkJIG5ld19lbmNvZGVyLT5iYXNlLmlkLAogCQkJCSBuZXdfZW5jb2Rlci0+bmFtZSwKLQkJ CQkgY29ubmVjdG9yX3N0YXRlLT5jcnRjLT5iYXNlLmlkLAotCQkJCSBjb25uZWN0b3Jfc3RhdGUt PmNydGMtPm5hbWUpOworCQkJCSBuZXdfY29ubmVjdG9yX3N0YXRlLT5jcnRjLT5iYXNlLmlkLAor CQkJCSBuZXdfY29ubmVjdG9yX3N0YXRlLT5jcnRjLT5uYW1lKTsKIAogCQlyZXR1cm4gMDsKIAl9 CiAKIAlzdGVhbF9lbmNvZGVyKHN0YXRlLCBuZXdfZW5jb2Rlcik7CiAKLQlzZXRfYmVzdF9lbmNv ZGVyKHN0YXRlLCBjb25uZWN0b3Jfc3RhdGUsIG5ld19lbmNvZGVyKTsKKwlzZXRfYmVzdF9lbmNv ZGVyKHN0YXRlLCBuZXdfY29ubmVjdG9yX3N0YXRlLCBuZXdfZW5jb2Rlcik7CiAKLQljcnRjX3N0 YXRlID0gZHJtX2F0b21pY19nZXRfZXhpc3RpbmdfY3J0Y19zdGF0ZShzdGF0ZSwgY29ubmVjdG9y X3N0YXRlLT5jcnRjKTsKKwljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfZXhpc3RpbmdfY3J0 Y19zdGF0ZShzdGF0ZSwgbmV3X2Nvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yyk7CiAJY3J0Y19zdGF0ZS0+ Y29ubmVjdG9yc19jaGFuZ2VkID0gdHJ1ZTsKIAogCURSTV9ERUJVR19BVE9NSUMoIltDT05ORUNU T1I6JWQ6JXNdIHVzaW5nIFtFTkNPREVSOiVkOiVzXSBvbiBbQ1JUQzolZDolc11cbiIsCkBAIC0z NTYsOCArMzU4LDggQEAgdXBkYXRlX2Nvbm5lY3Rvcl9yb3V0aW5nKHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSwKIAkJCSBjb25uZWN0b3ItPm5hbWUsCiAJCQkgbmV3X2VuY29kZXItPmJh c2UuaWQsCiAJCQkgbmV3X2VuY29kZXItPm5hbWUsCi0JCQkgY29ubmVjdG9yX3N0YXRlLT5jcnRj LT5iYXNlLmlkLAotCQkJIGNvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yy0+bmFtZSk7CisJCQkgbmV3X2Nv bm5lY3Rvcl9zdGF0ZS0+Y3J0Yy0+YmFzZS5pZCwKKwkJCSBuZXdfY29ubmVjdG9yX3N0YXRlLT5j cnRjLT5uYW1lKTsKIAogCXJldHVybiAwOwogfQpAQCAtMzY2LDU3ICszNjgsNTcgQEAgc3RhdGlj IGludAogbW9kZV9maXh1cChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJc3Ry dWN0IGRybV9jcnRjICpjcnRjOwotCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsK KwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwogCXN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3I7Ci0Jc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3Rh dGU7CisJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm5ld19jb25uX3N0YXRlOwogCWludCBp OwogCWludCByZXQ7CiAKLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRj X3N0YXRlLCBpKSB7Ci0JCWlmICghY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkICYmCi0JCSAgICAh Y3J0Y19zdGF0ZS0+Y29ubmVjdG9yc19jaGFuZ2VkKQorCWZvcl9lYWNoX25ld19jcnRjX2luX3N0 YXRlKHN0YXRlLCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSwgaSkgeworCQlpZiAoIW5ld19jcnRjX3N0 YXRlLT5tb2RlX2NoYW5nZWQgJiYKKwkJICAgICFuZXdfY3J0Y19zdGF0ZS0+Y29ubmVjdG9yc19j aGFuZ2VkKQogCQkJY29udGludWU7CiAKLQkJZHJtX21vZGVfY29weSgmY3J0Y19zdGF0ZS0+YWRq dXN0ZWRfbW9kZSwgJmNydGNfc3RhdGUtPm1vZGUpOworCQlkcm1fbW9kZV9jb3B5KCZuZXdfY3J0 Y19zdGF0ZS0+YWRqdXN0ZWRfbW9kZSwgJm5ld19jcnRjX3N0YXRlLT5tb2RlKTsKIAl9CiAKLQlm b3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3RvciwgY29ubl9zdGF0ZSwg aSkgeworCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3Rvciwg bmV3X2Nvbm5fc3RhdGUsIGkpIHsKIAkJY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9m dW5jcyAqZnVuY3M7CiAJCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKIAotCQlXQVJOX09O KCEhY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyICE9ICEhY29ubl9zdGF0ZS0+Y3J0Yyk7CisJCVdB Uk5fT04oISFuZXdfY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyICE9ICEhbmV3X2Nvbm5fc3RhdGUt PmNydGMpOwogCi0JCWlmICghY29ubl9zdGF0ZS0+Y3J0YyB8fCAhY29ubl9zdGF0ZS0+YmVzdF9l bmNvZGVyKQorCQlpZiAoIW5ld19jb25uX3N0YXRlLT5jcnRjIHx8ICFuZXdfY29ubl9zdGF0ZS0+ YmVzdF9lbmNvZGVyKQogCQkJY29udGludWU7CiAKLQkJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNf Z2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUsCi0JCQkJCQkJCWNvbm5fc3RhdGUtPmNydGMp OworCQluZXdfY3J0Y19zdGF0ZSA9CisJCQlkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0 YXRlKHN0YXRlLCBuZXdfY29ubl9zdGF0ZS0+Y3J0Yyk7CiAKIAkJLyoKIAkJICogRWFjaCBlbmNv ZGVyIGhhcyBhdCBtb3N0IG9uZSBjb25uZWN0b3IgKHNpbmNlIHdlIGFsd2F5cyBzdGVhbAogCQkg KiBpdCBhd2F5KSwgc28gd2Ugd29uJ3QgY2FsbCAtPm1vZGVfZml4dXAgdHdpY2UuCiAJCSAqLwot CQllbmNvZGVyID0gY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyOworCQllbmNvZGVyID0gbmV3X2Nv bm5fc3RhdGUtPmJlc3RfZW5jb2RlcjsKIAkJZnVuY3MgPSBlbmNvZGVyLT5oZWxwZXJfcHJpdmF0 ZTsKIAotCQlyZXQgPSBkcm1fYnJpZGdlX21vZGVfZml4dXAoZW5jb2Rlci0+YnJpZGdlLCAmY3J0 Y19zdGF0ZS0+bW9kZSwKLQkJCQkmY3J0Y19zdGF0ZS0+YWRqdXN0ZWRfbW9kZSk7CisJCXJldCA9 IGRybV9icmlkZ2VfbW9kZV9maXh1cChlbmNvZGVyLT5icmlkZ2UsICZuZXdfY3J0Y19zdGF0ZS0+ bW9kZSwKKwkJCQkmbmV3X2NydGNfc3RhdGUtPmFkanVzdGVkX21vZGUpOwogCQlpZiAoIXJldCkg ewogCQkJRFJNX0RFQlVHX0FUT01JQygiQnJpZGdlIGZpeHVwIGZhaWxlZFxuIik7CiAJCQlyZXR1 cm4gLUVJTlZBTDsKIAkJfQogCiAJCWlmIChmdW5jcyAmJiBmdW5jcy0+YXRvbWljX2NoZWNrKSB7 Ci0JCQlyZXQgPSBmdW5jcy0+YXRvbWljX2NoZWNrKGVuY29kZXIsIGNydGNfc3RhdGUsCi0JCQkJ CQkgIGNvbm5fc3RhdGUpOworCQkJcmV0ID0gZnVuY3MtPmF0b21pY19jaGVjayhlbmNvZGVyLCBu ZXdfY3J0Y19zdGF0ZSwKKwkJCQkJCSAgbmV3X2Nvbm5fc3RhdGUpOwogCQkJaWYgKHJldCkgewog CQkJCURSTV9ERUJVR19BVE9NSUMoIltFTkNPREVSOiVkOiVzXSBjaGVjayBmYWlsZWRcbiIsCiAJ CQkJCQkgZW5jb2Rlci0+YmFzZS5pZCwgZW5jb2Rlci0+bmFtZSk7CiAJCQkJcmV0dXJuIHJldDsK IAkJCX0KIAkJfSBlbHNlIGlmIChmdW5jcyAmJiBmdW5jcy0+bW9kZV9maXh1cCkgewotCQkJcmV0 ID0gZnVuY3MtPm1vZGVfZml4dXAoZW5jb2RlciwgJmNydGNfc3RhdGUtPm1vZGUsCi0JCQkJCQkm Y3J0Y19zdGF0ZS0+YWRqdXN0ZWRfbW9kZSk7CisJCQlyZXQgPSBmdW5jcy0+bW9kZV9maXh1cChl bmNvZGVyLCAmbmV3X2NydGNfc3RhdGUtPm1vZGUsCisJCQkJCQkmbmV3X2NydGNfc3RhdGUtPmFk anVzdGVkX21vZGUpOwogCQkJaWYgKCFyZXQpIHsKIAkJCQlEUk1fREVCVUdfQVRPTUlDKCJbRU5D T0RFUjolZDolc10gZml4dXAgZmFpbGVkXG4iLAogCQkJCQkJIGVuY29kZXItPmJhc2UuaWQsIGVu Y29kZXItPm5hbWUpOwpAQCAtNDI1LDIyICs0MjcsMjIgQEAgbW9kZV9maXh1cChzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJCX0KIAl9CiAKLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRl KHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7CisJZm9yX2VhY2hfbmV3X2NydGNfaW5fc3Rh dGUoc3RhdGUsIGNydGMsIG5ld19jcnRjX3N0YXRlLCBpKSB7CiAJCWNvbnN0IHN0cnVjdCBkcm1f Y3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOwogCi0JCWlmICghY3J0Y19zdGF0ZS0+ZW5hYmxlKQor CQlpZiAoIW5ld19jcnRjX3N0YXRlLT5lbmFibGUpCiAJCQljb250aW51ZTsKIAotCQlpZiAoIWNy dGNfc3RhdGUtPm1vZGVfY2hhbmdlZCAmJgotCQkgICAgIWNydGNfc3RhdGUtPmNvbm5lY3RvcnNf Y2hhbmdlZCkKKwkJaWYgKCFuZXdfY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkICYmCisJCSAgICAh bmV3X2NydGNfc3RhdGUtPmNvbm5lY3RvcnNfY2hhbmdlZCkKIAkJCWNvbnRpbnVlOwogCiAJCWZ1 bmNzID0gY3J0Yy0+aGVscGVyX3ByaXZhdGU7CiAJCWlmICghZnVuY3MtPm1vZGVfZml4dXApCiAJ CQljb250aW51ZTsKIAotCQlyZXQgPSBmdW5jcy0+bW9kZV9maXh1cChjcnRjLCAmY3J0Y19zdGF0 ZS0+bW9kZSwKLQkJCQkJJmNydGNfc3RhdGUtPmFkanVzdGVkX21vZGUpOworCQlyZXQgPSBmdW5j cy0+bW9kZV9maXh1cChjcnRjLCAmbmV3X2NydGNfc3RhdGUtPm1vZGUsCisJCQkJCSZuZXdfY3J0 Y19zdGF0ZS0+YWRqdXN0ZWRfbW9kZSk7CiAJCWlmICghcmV0KSB7CiAJCQlEUk1fREVCVUdfQVRP TUlDKCJbQ1JUQzolZDolc10gZml4dXAgZmFpbGVkXG4iLAogCQkJCQkgY3J0Yy0+YmFzZS5pZCwg Y3J0Yy0+bmFtZSk7CkBAIC00ODcsMTkgKzQ4OSwxOSBAQCBkcm1fYXRvbWljX2hlbHBlcl9jaGVj a19tb2Rlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKQogewogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKLQlzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGU7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19z dGF0ZSwgKm5ld19jcnRjX3N0YXRlOwogCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7 Ci0Jc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5lY3Rvcl9zdGF0ZTsKKwlzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5lY3Rvcl9zdGF0ZSwgKm5ld19jb25uZWN0b3Jf c3RhdGU7CiAJaW50IGksIHJldDsKIAotCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNy dGMsIGNydGNfc3RhdGUsIGkpIHsKLQkJaWYgKCFkcm1fbW9kZV9lcXVhbCgmY3J0Yy0+c3RhdGUt Pm1vZGUsICZjcnRjX3N0YXRlLT5tb2RlKSkgeworCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0 YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpIHsKKwkJ aWYgKCFkcm1fbW9kZV9lcXVhbCgmb2xkX2NydGNfc3RhdGUtPm1vZGUsICZuZXdfY3J0Y19zdGF0 ZS0+bW9kZSkpIHsKIAkJCURSTV9ERUJVR19BVE9NSUMoIltDUlRDOiVkOiVzXSBtb2RlIGNoYW5n ZWRcbiIsCiAJCQkJCSBjcnRjLT5iYXNlLmlkLCBjcnRjLT5uYW1lKTsKLQkJCWNydGNfc3RhdGUt Pm1vZGVfY2hhbmdlZCA9IHRydWU7CisJCQluZXdfY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkID0g dHJ1ZTsKIAkJfQogCi0JCWlmIChjcnRjLT5zdGF0ZS0+ZW5hYmxlICE9IGNydGNfc3RhdGUtPmVu YWJsZSkgeworCQlpZiAob2xkX2NydGNfc3RhdGUtPmVuYWJsZSAhPSBuZXdfY3J0Y19zdGF0ZS0+ ZW5hYmxlKSB7CiAJCQlEUk1fREVCVUdfQVRPTUlDKCJbQ1JUQzolZDolc10gZW5hYmxlIGNoYW5n ZWRcbiIsCiAJCQkJCSBjcnRjLT5iYXNlLmlkLCBjcnRjLT5uYW1lKTsKIApAQCAtNTExLDggKzUx Myw4IEBAIGRybV9hdG9taWNfaGVscGVyX2NoZWNrX21vZGVzZXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKIAkJCSAqIFRoZSBvdGhlciB3YXkgYXJvdW5kIGlzIHRydWUgYXMgd2VsbC4gZW5hYmxl ICE9IDAKIAkJCSAqIGlmZiBjb25uZWN0b3JzIGFyZSBhdHRhY2hlZCBhbmQgYSBtb2RlIGlzIHNl dC4KIAkJCSAqLwotCQkJY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2VkID0gdHJ1ZTsKLQkJCWNydGNf c3RhdGUtPmNvbm5lY3RvcnNfY2hhbmdlZCA9IHRydWU7CisJCQluZXdfY3J0Y19zdGF0ZS0+bW9k ZV9jaGFuZ2VkID0gdHJ1ZTsKKwkJCW5ld19jcnRjX3N0YXRlLT5jb25uZWN0b3JzX2NoYW5nZWQg PSB0cnVlOwogCQl9CiAJfQogCkBAIC01MjAsMTQgKzUyMiwxNSBAQCBkcm1fYXRvbWljX2hlbHBl cl9jaGVja19tb2Rlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaWYgKHJldCkKIAkJcmV0 dXJuIHJldDsKIAotCWZvcl9lYWNoX2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9y LCBjb25uZWN0b3Jfc3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9vbGRuZXdfY29ubmVjdG9yX2luX3N0 YXRlKHN0YXRlLCBjb25uZWN0b3IsIG9sZF9jb25uZWN0b3Jfc3RhdGUsIG5ld19jb25uZWN0b3Jf c3RhdGUsIGkpIHsKIAkJLyoKIAkJICogVGhpcyBvbmx5IHNldHMgY3J0Yy0+Y29ubmVjdG9yc19j aGFuZ2VkIGZvciByb3V0aW5nIGNoYW5nZXMsCiAJCSAqIGRyaXZlcnMgbXVzdCBzZXQgY3J0Yy0+ Y29ubmVjdG9yc19jaGFuZ2VkIHRoZW1zZWx2ZXMgd2hlbgogCQkgKiBjb25uZWN0b3IgcHJvcGVy dGllcyBuZWVkIHRvIGJlIHVwZGF0ZWQuCiAJCSAqLwogCQlyZXQgPSB1cGRhdGVfY29ubmVjdG9y X3JvdXRpbmcoc3RhdGUsIGNvbm5lY3RvciwKLQkJCQkJICAgICAgIGNvbm5lY3Rvcl9zdGF0ZSk7 CisJCQkJCSAgICAgICBvbGRfY29ubmVjdG9yX3N0YXRlLAorCQkJCQkgICAgICAgbmV3X2Nvbm5l Y3Rvcl9zdGF0ZSk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCX0KQEAgLTUzOCwyOCAr NTQxLDI4IEBAIGRybV9hdG9taWNfaGVscGVyX2NoZWNrX21vZGVzZXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIAkgKiBjb25maWd1cmF0aW9uLiBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgY2Fs bGluZyBtb2RlX2ZpeHVwIGluIGNhc2UgYQogCSAqIGNydGMgb25seSBjaGFuZ2VkIGl0cyBtb2Rl IGJ1dCBoYXMgdGhlIHNhbWUgc2V0IG9mIGNvbm5lY3RvcnMuCiAJICovCi0JZm9yX2VhY2hfY3J0 Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgeworCWZvcl9lYWNoX29sZG5l d19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3Rh dGUsIGkpIHsKIAkJYm9vbCBoYXNfY29ubmVjdG9ycyA9Ci0JCQkhIWNydGNfc3RhdGUtPmNvbm5l Y3Rvcl9tYXNrOworCQkJISFuZXdfY3J0Y19zdGF0ZS0+Y29ubmVjdG9yX21hc2s7CiAKIAkJLyoK IAkJICogV2UgbXVzdCBzZXQgLT5hY3RpdmVfY2hhbmdlZCBhZnRlciB3YWxraW5nIGNvbm5lY3Rv cnMgZm9yCiAJCSAqIG90aGVyd2lzZSBhbiB1cGRhdGUgdGhhdCBvbmx5IGNoYW5nZXMgYWN0aXZl IHdvdWxkIHJlc3VsdCBpbgogCQkgKiBhIGZ1bGwgbW9kZXNldCBiZWNhdXNlIHVwZGF0ZV9jb25u ZWN0b3Jfcm91dGluZyBmb3JjZSB0aGF0LgogCQkgKi8KLQkJaWYgKGNydGMtPnN0YXRlLT5hY3Rp dmUgIT0gY3J0Y19zdGF0ZS0+YWN0aXZlKSB7CisJCWlmIChvbGRfY3J0Y19zdGF0ZS0+YWN0aXZl ICE9IG5ld19jcnRjX3N0YXRlLT5hY3RpdmUpIHsKIAkJCURSTV9ERUJVR19BVE9NSUMoIltDUlRD OiVkOiVzXSBhY3RpdmUgY2hhbmdlZFxuIiwKIAkJCQkJIGNydGMtPmJhc2UuaWQsIGNydGMtPm5h bWUpOwotCQkJY3J0Y19zdGF0ZS0+YWN0aXZlX2NoYW5nZWQgPSB0cnVlOworCQkJbmV3X2NydGNf c3RhdGUtPmFjdGl2ZV9jaGFuZ2VkID0gdHJ1ZTsKIAkJfQogCi0JCWlmICghZHJtX2F0b21pY19j cnRjX25lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSkpCisJCWlmICghZHJtX2F0b21pY19jcnRjX25l ZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpKQogCQkJY29udGludWU7CiAKIAkJRFJNX0RFQlVH X0FUT01JQygiW0NSVEM6JWQ6JXNdIG5lZWRzIGFsbCBjb25uZWN0b3JzLCBlbmFibGU6ICVjLCBh Y3RpdmU6ICVjXG4iLAogCQkJCSBjcnRjLT5iYXNlLmlkLCBjcnRjLT5uYW1lLAotCQkJCSBjcnRj X3N0YXRlLT5lbmFibGUgPyAneScgOiAnbicsCi0JCQkJIGNydGNfc3RhdGUtPmFjdGl2ZSA/ICd5 JyA6ICduJyk7CisJCQkJIG5ld19jcnRjX3N0YXRlLT5lbmFibGUgPyAneScgOiAnbicsCisJCQkJ IG5ld19jcnRjX3N0YXRlLT5hY3RpdmUgPyAneScgOiAnbicpOwogCiAJCXJldCA9IGRybV9hdG9t aWNfYWRkX2FmZmVjdGVkX2Nvbm5lY3RvcnMoc3RhdGUsIGNydGMpOwogCQlpZiAocmV0ICE9IDAp CkBAIC01NjksNyArNTcyLDcgQEAgZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfbW9kZXNldChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCQlpZiAocmV0ICE9IDApCiAJCQlyZXR1cm4gcmV0OwogCi0J CWlmIChjcnRjX3N0YXRlLT5lbmFibGUgIT0gaGFzX2Nvbm5lY3RvcnMpIHsKKwkJaWYgKG5ld19j cnRjX3N0YXRlLT5lbmFibGUgIT0gaGFzX2Nvbm5lY3RvcnMpIHsKIAkJCURSTV9ERUJVR19BVE9N SUMoIltDUlRDOiVkOiVzXSBlbmFibGVkL2Nvbm5lY3RvcnMgbWlzbWF0Y2hcbiIsCiAJCQkJCSBj cnRjLT5iYXNlLmlkLCBjcnRjLT5uYW1lKTsKIApAQCAtNjAyLDIyICs2MDUsMjIgQEAgZHJtX2F0 b21pY19oZWxwZXJfY2hlY2tfcGxhbmVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkgICAg ICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogewogCXN0cnVjdCBkcm1fY3J0YyAq Y3J0YzsKLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CisJc3RydWN0IGRybV9j cnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZTsKIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKLQlz dHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0 YXRlICpuZXdfcGxhbmVfc3RhdGUsICpvbGRfcGxhbmVfc3RhdGU7CiAJaW50IGksIHJldCA9IDA7 CiAKLQlmb3JfZWFjaF9wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIHBsYW5lX3N0YXRlLCBp KSB7CisJZm9yX2VhY2hfb2xkbmV3X3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgb2xkX3Bs YW5lX3N0YXRlLCBuZXdfcGxhbmVfc3RhdGUsIGkpIHsKIAkJY29uc3Qgc3RydWN0IGRybV9wbGFu ZV9oZWxwZXJfZnVuY3MgKmZ1bmNzOwogCiAJCWZ1bmNzID0gcGxhbmUtPmhlbHBlcl9wcml2YXRl OwogCi0JCWRybV9hdG9taWNfaGVscGVyX3BsYW5lX2NoYW5nZWQoc3RhdGUsIHBsYW5lX3N0YXRl LCBwbGFuZSk7CisJCWRybV9hdG9taWNfaGVscGVyX3BsYW5lX2NoYW5nZWQoc3RhdGUsIG9sZF9w bGFuZV9zdGF0ZSwgbmV3X3BsYW5lX3N0YXRlLCBwbGFuZSk7CiAKIAkJaWYgKCFmdW5jcyB8fCAh ZnVuY3MtPmF0b21pY19jaGVjaykKIAkJCWNvbnRpbnVlOwogCi0JCXJldCA9IGZ1bmNzLT5hdG9t aWNfY2hlY2socGxhbmUsIHBsYW5lX3N0YXRlKTsKKwkJcmV0ID0gZnVuY3MtPmF0b21pY19jaGVj ayhwbGFuZSwgbmV3X3BsYW5lX3N0YXRlKTsKIAkJaWYgKHJldCkgewogCQkJRFJNX0RFQlVHX0FU T01JQygiW1BMQU5FOiVkOiVzXSBhdG9taWMgZHJpdmVyIGNoZWNrIGZhaWxlZFxuIiwKIAkJCQkJ IHBsYW5lLT5iYXNlLmlkLCBwbGFuZS0+bmFtZSk7CkBAIC02MjUsNyArNjI4LDcgQEAgZHJtX2F0 b21pY19oZWxwZXJfY2hlY2tfcGxhbmVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCX0KIAl9 CiAKLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7 CisJZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG5ld19jcnRjX3N0YXRl LCBpKSB7CiAJCWNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOwogCiAJ CWZ1bmNzID0gY3J0Yy0+aGVscGVyX3ByaXZhdGU7CkBAIC02MzMsNyArNjM2LDcgQEAgZHJtX2F0 b21pY19oZWxwZXJfY2hlY2tfcGxhbmVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCWlmICgh ZnVuY3MgfHwgIWZ1bmNzLT5hdG9taWNfY2hlY2spCiAJCQljb250aW51ZTsKIAotCQlyZXQgPSBm dW5jcy0+YXRvbWljX2NoZWNrKGNydGMsIGNydGNfc3RhdGUpOworCQlyZXQgPSBmdW5jcy0+YXRv bWljX2NoZWNrKGNydGMsIG5ld19jcnRjX3N0YXRlKTsKIAkJaWYgKHJldCkgewogCQkJRFJNX0RF QlVHX0FUT01JQygiW0NSVEM6JWQ6JXNdIGF0b21pYyBkcml2ZXIgY2hlY2sgZmFpbGVkXG4iLAog CQkJCQkgY3J0Yy0+YmFzZS5pZCwgY3J0Yy0+bmFtZSk7CkBAIC02ODcsMTIgKzY5MCwxMiBAQCBz dGF0aWMgdm9pZAogZGlzYWJsZV9vdXRwdXRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvcjsKLQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGU7 CisJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25uX3N0YXRlLCAqbmV3X2Nvbm5f c3RhdGU7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwotCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq b2xkX2NydGNfc3RhdGU7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwg Km5ld19jcnRjX3N0YXRlOwogCWludCBpOwogCi0JZm9yX2VhY2hfY29ubmVjdG9yX2luX3N0YXRl KG9sZF9zdGF0ZSwgY29ubmVjdG9yLCBvbGRfY29ubl9zdGF0ZSwgaSkgeworCWZvcl9lYWNoX29s ZG5ld19jb25uZWN0b3JfaW5fc3RhdGUob2xkX3N0YXRlLCBjb25uZWN0b3IsIG9sZF9jb25uX3N0 YXRlLCBuZXdfY29ubl9zdGF0ZSwgaSkgewogCQljb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVs cGVyX2Z1bmNzICpmdW5jczsKIAkJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwogCkBAIC03 MjksNyArNzMyLDcgQEAgZGlzYWJsZV9vdXRwdXRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCiAKIAkJLyogUmlnaHQgZnVuY3Rpb24g ZGVwZW5kcyB1cG9uIHRhcmdldCBzdGF0ZS4gKi8KIAkJaWYgKGZ1bmNzKSB7Ci0JCQlpZiAoY29u bmVjdG9yLT5zdGF0ZS0+Y3J0YyAmJiBmdW5jcy0+cHJlcGFyZSkKKwkJCWlmIChuZXdfY29ubl9z dGF0ZS0+Y3J0YyAmJiBmdW5jcy0+cHJlcGFyZSkKIAkJCQlmdW5jcy0+cHJlcGFyZShlbmNvZGVy KTsKIAkJCWVsc2UgaWYgKGZ1bmNzLT5kaXNhYmxlKQogCQkJCWZ1bmNzLT5kaXNhYmxlKGVuY29k ZXIpOwpAQCAtNzQwLDExICs3NDMsMTEgQEAgZGlzYWJsZV9vdXRwdXRzKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCiAJCWRybV9icmlk Z2VfcG9zdF9kaXNhYmxlKGVuY29kZXItPmJyaWRnZSk7CiAJfQogCi0JZm9yX2VhY2hfY3J0Y19p bl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBpKSB7CisJZm9yX2VhY2hf b2xkbmV3X2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3 X2NydGNfc3RhdGUsIGkpIHsKIAkJY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyAq ZnVuY3M7CiAKIAkJLyogU2h1dCBkb3duIGV2ZXJ5dGhpbmcgdGhhdCBuZWVkcyBhIGZ1bGwgbW9k ZXNldC4gKi8KLQkJaWYgKCFkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldChjcnRjLT5zdGF0 ZSkpCisJCWlmICghZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUp KQogCQkJY29udGludWU7CiAKIAkJaWYgKCFvbGRfY3J0Y19zdGF0ZS0+YWN0aXZlKQpAQCAtNzU3 LDcgKzc2MCw3IEBAIGRpc2FibGVfb3V0cHV0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQogCiAKIAkJLyogUmlnaHQgZnVuY3Rpb24g ZGVwZW5kcyB1cG9uIHRhcmdldCBzdGF0ZS4gKi8KLQkJaWYgKGNydGMtPnN0YXRlLT5lbmFibGUg JiYgZnVuY3MtPnByZXBhcmUpCisJCWlmIChuZXdfY3J0Y19zdGF0ZS0+ZW5hYmxlICYmIGZ1bmNz LT5wcmVwYXJlKQogCQkJZnVuY3MtPnByZXBhcmUoY3J0Yyk7CiAJCWVsc2UgaWYgKGZ1bmNzLT5h dG9taWNfZGlzYWJsZSkKIAkJCWZ1bmNzLT5hdG9taWNfZGlzYWJsZShjcnRjLCBvbGRfY3J0Y19z dGF0ZSk7CkBAIC03ODYsMTMgKzc4OSwxMyBAQCBkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfbGVn YWN5X21vZGVzZXRfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkJICAgICAgc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yOwotCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0 ZTsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGUsICpuZXdfY29u bl9zdGF0ZTsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Ci0Jc3RydWN0IGRybV9jcnRjX3N0YXRl ICpvbGRfY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRl OwogCWludCBpOwogCiAJLyogY2xlYXIgb3V0IGV4aXN0aW5nIGxpbmtzIGFuZCB1cGRhdGUgZHBt cyAqLwotCWZvcl9lYWNoX2Nvbm5lY3Rvcl9pbl9zdGF0ZShvbGRfc3RhdGUsIGNvbm5lY3Rvciwg b2xkX2Nvbm5fc3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9vbGRuZXdfY29ubmVjdG9yX2luX3N0YXRl KG9sZF9zdGF0ZSwgY29ubmVjdG9yLCBvbGRfY29ubl9zdGF0ZSwgbmV3X2Nvbm5fc3RhdGUsIGkp IHsKIAkJaWYgKGNvbm5lY3Rvci0+ZW5jb2RlcikgewogCQkJV0FSTl9PTighY29ubmVjdG9yLT5l bmNvZGVyLT5jcnRjKTsKIApAQCAtODAwLDcgKzgwMyw3IEBAIGRybV9hdG9taWNfaGVscGVyX3Vw ZGF0ZV9sZWdhY3lfbW9kZXNldF9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJY29u bmVjdG9yLT5lbmNvZGVyID0gTlVMTDsKIAkJfQogCi0JCWNydGMgPSBjb25uZWN0b3ItPnN0YXRl LT5jcnRjOworCQljcnRjID0gbmV3X2Nvbm5fc3RhdGUtPmNydGM7CiAJCWlmICgoIWNydGMgJiYg b2xkX2Nvbm5fc3RhdGUtPmNydGMpIHx8CiAJCSAgICAoY3J0YyAmJiBkcm1fYXRvbWljX2NydGNf bmVlZHNfbW9kZXNldChjcnRjLT5zdGF0ZSkpKSB7CiAJCQlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpk cG1zX3Byb3AgPQpAQCAtODE3LDIzICs4MjAsMjMgQEAgZHJtX2F0b21pY19oZWxwZXJfdXBkYXRl X2xlZ2FjeV9tb2Rlc2V0X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJfQogCiAJLyog c2V0IG5ldyBsaW5rcyAqLwotCWZvcl9lYWNoX2Nvbm5lY3Rvcl9pbl9zdGF0ZShvbGRfc3RhdGUs IGNvbm5lY3Rvciwgb2xkX2Nvbm5fc3RhdGUsIGkpIHsKLQkJaWYgKCFjb25uZWN0b3ItPnN0YXRl LT5jcnRjKQorCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUob2xkX3N0YXRlLCBjb25u ZWN0b3IsIG5ld19jb25uX3N0YXRlLCBpKSB7CisJCWlmICghbmV3X2Nvbm5fc3RhdGUtPmNydGMp CiAJCQljb250aW51ZTsKIAotCQlpZiAoV0FSTl9PTighY29ubmVjdG9yLT5zdGF0ZS0+YmVzdF9l bmNvZGVyKSkKKwkJaWYgKFdBUk5fT04oIW5ld19jb25uX3N0YXRlLT5iZXN0X2VuY29kZXIpKQog CQkJY29udGludWU7CiAKLQkJY29ubmVjdG9yLT5lbmNvZGVyID0gY29ubmVjdG9yLT5zdGF0ZS0+ YmVzdF9lbmNvZGVyOwotCQljb25uZWN0b3ItPmVuY29kZXItPmNydGMgPSBjb25uZWN0b3ItPnN0 YXRlLT5jcnRjOworCQljb25uZWN0b3ItPmVuY29kZXIgPSBuZXdfY29ubl9zdGF0ZS0+YmVzdF9l bmNvZGVyOworCQljb25uZWN0b3ItPmVuY29kZXItPmNydGMgPSBuZXdfY29ubl9zdGF0ZS0+Y3J0 YzsKIAl9CiAKIAkvKiBzZXQgbGVnYWN5IHN0YXRlIGluIHRoZSBjcnRjIHN0cnVjdHVyZSAqLwot CWZvcl9lYWNoX2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwg aSkgeworCWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0YywgbmV3X2Ny dGNfc3RhdGUsIGkpIHsKIAkJc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSA9IGNydGMtPnByaW1h cnk7CiAKLQkJY3J0Yy0+bW9kZSA9IGNydGMtPnN0YXRlLT5tb2RlOwotCQljcnRjLT5lbmFibGVk ID0gY3J0Yy0+c3RhdGUtPmVuYWJsZTsKKwkJY3J0Yy0+bW9kZSA9IG5ld19jcnRjX3N0YXRlLT5t b2RlOworCQljcnRjLT5lbmFibGVkID0gbmV3X2NydGNfc3RhdGUtPmVuYWJsZTsKIAogCQlpZiAo ZHJtX2F0b21pY19nZXRfZXhpc3RpbmdfcGxhbmVfc3RhdGUob2xkX3N0YXRlLCBwcmltYXJ5KSAm JgogCQkgICAgcHJpbWFyeS0+c3RhdGUtPmNydGMgPT0gY3J0YykgewpAQCAtODQxLDkgKzg0NCw5 IEBAIGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9sZWdhY3lfbW9kZXNldF9zdGF0ZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAogCQkJY3J0Yy0+eSA9IHByaW1hcnktPnN0YXRlLT5zcmNfeSA+PiAx NjsKIAkJfQogCi0JCWlmIChjcnRjLT5zdGF0ZS0+ZW5hYmxlKQorCQlpZiAobmV3X2NydGNfc3Rh dGUtPmVuYWJsZSkKIAkJCWRybV9jYWxjX3RpbWVzdGFtcGluZ19jb25zdGFudHMoY3J0YywKLQkJ CQkJCQkmY3J0Yy0+c3RhdGUtPmFkanVzdGVkX21vZGUpOworCQkJCQkJCSZuZXdfY3J0Y19zdGF0 ZS0+YWRqdXN0ZWRfbW9kZSk7CiAJfQogfQogRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBl cl91cGRhdGVfbGVnYWN5X21vZGVzZXRfc3RhdGUpOwpAQCAtODUyLDIwICs4NTUsMjAgQEAgc3Rh dGljIHZvaWQKIGNydGNfc2V0X21vZGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Ci0J c3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKm5ld19jcnRjX3N0YXRlOwogCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7 Ci0Jc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25uX3N0YXRlOworCXN0cnVjdCBk cm1fY29ubmVjdG9yX3N0YXRlICpuZXdfY29ubl9zdGF0ZTsKIAlpbnQgaTsKIAotCWZvcl9lYWNo X2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgaSkgeworCWZv cl9lYWNoX25ld19jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0YywgbmV3X2NydGNfc3RhdGUs IGkpIHsKIAkJY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyAqZnVuY3M7CiAKLQkJ aWYgKCFjcnRjLT5zdGF0ZS0+bW9kZV9jaGFuZ2VkKQorCQlpZiAoIW5ld19jcnRjX3N0YXRlLT5t b2RlX2NoYW5nZWQpCiAJCQljb250aW51ZTsKIAogCQlmdW5jcyA9IGNydGMtPmhlbHBlcl9wcml2 YXRlOwogCi0JCWlmIChjcnRjLT5zdGF0ZS0+ZW5hYmxlICYmIGZ1bmNzLT5tb2RlX3NldF9ub2Zi KSB7CisJCWlmIChuZXdfY3J0Y19zdGF0ZS0+ZW5hYmxlICYmIGZ1bmNzLT5tb2RlX3NldF9ub2Zi KSB7CiAJCQlEUk1fREVCVUdfQVRPTUlDKCJtb2Rlc2V0IG9uIFtDUlRDOiVkOiVzXVxuIiwKIAkJ CQkJIGNydGMtPmJhc2UuaWQsIGNydGMtPm5hbWUpOwogCkBAIC04NzMsMTggKzg3NiwxNyBAQCBj cnRjX3NldF9tb2RlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpvbGRfc3RhdGUpCiAJCX0KIAl9CiAKLQlmb3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUo b2xkX3N0YXRlLCBjb25uZWN0b3IsIG9sZF9jb25uX3N0YXRlLCBpKSB7CisJZm9yX2VhY2hfbmV3 X2Nvbm5lY3Rvcl9pbl9zdGF0ZShvbGRfc3RhdGUsIGNvbm5lY3RvciwgbmV3X2Nvbm5fc3RhdGUs IGkpIHsKIAkJY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyAqZnVuY3M7Ci0J CXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7CiAJCXN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2RlcjsKIAkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsICphZGp1c3Rl ZF9tb2RlOwogCi0JCWlmICghY29ubmVjdG9yLT5zdGF0ZS0+YmVzdF9lbmNvZGVyKQorCQlpZiAo IW5ld19jb25uX3N0YXRlLT5iZXN0X2VuY29kZXIpCiAJCQljb250aW51ZTsKIAotCQllbmNvZGVy ID0gY29ubmVjdG9yLT5zdGF0ZS0+YmVzdF9lbmNvZGVyOworCQllbmNvZGVyID0gbmV3X2Nvbm5f c3RhdGUtPmJlc3RfZW5jb2RlcjsKIAkJZnVuY3MgPSBlbmNvZGVyLT5oZWxwZXJfcHJpdmF0ZTsK LQkJbmV3X2NydGNfc3RhdGUgPSBjb25uZWN0b3ItPnN0YXRlLT5jcnRjLT5zdGF0ZTsKKwkJbmV3 X2NydGNfc3RhdGUgPSBuZXdfY29ubl9zdGF0ZS0+Y3J0Yy0+c3RhdGU7CiAJCW1vZGUgPSAmbmV3 X2NydGNfc3RhdGUtPm1vZGU7CiAJCWFkanVzdGVkX21vZGUgPSAmbmV3X2NydGNfc3RhdGUtPmFk anVzdGVkX21vZGU7CiAKQEAgLTkwMCw3ICs5MDIsNyBAQCBjcnRjX3NldF9tb2RlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCiAJCSAq LwogCQlpZiAoZnVuY3MgJiYgZnVuY3MtPmF0b21pY19tb2RlX3NldCkgewogCQkJZnVuY3MtPmF0 b21pY19tb2RlX3NldChlbmNvZGVyLCBuZXdfY3J0Y19zdGF0ZSwKLQkJCQkJICAgICAgIGNvbm5l Y3Rvci0+c3RhdGUpOworCQkJCQkgICAgICAgbmV3X2Nvbm5fc3RhdGUpOwogCQl9IGVsc2UgaWYg KGZ1bmNzICYmIGZ1bmNzLT5tb2RlX3NldCkgewogCQkJZnVuY3MtPm1vZGVfc2V0KGVuY29kZXIs IG1vZGUsIGFkanVzdGVkX21vZGUpOwogCQl9CkBAIC05NTIsMjQgKzk1NCwyNCBAQCB2b2lkIGRy bV9hdG9taWNfaGVscGVyX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKIAkJCQkJICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKIHsK IAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Ci0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0 Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwogCXN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Ci0Jc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg Km9sZF9jb25uX3N0YXRlOworCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpuZXdfY29ubl9z dGF0ZTsKIAlpbnQgaTsKIAotCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRj LCBvbGRfY3J0Y19zdGF0ZSwgaSkgeworCWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKG9sZF9z dGF0ZSwgY3J0YywgbmV3X2NydGNfc3RhdGUsIGkpIHsKIAkJY29uc3Qgc3RydWN0IGRybV9jcnRj X2hlbHBlcl9mdW5jcyAqZnVuY3M7CiAKIAkJLyogTmVlZCB0byBmaWx0ZXIgb3V0IENSVENzIHdo ZXJlIG9ubHkgcGxhbmVzIGNoYW5nZS4gKi8KLQkJaWYgKCFkcm1fYXRvbWljX2NydGNfbmVlZHNf bW9kZXNldChjcnRjLT5zdGF0ZSkpCisJCWlmICghZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVz ZXQobmV3X2NydGNfc3RhdGUpKQogCQkJY29udGludWU7CiAKLQkJaWYgKCFjcnRjLT5zdGF0ZS0+ YWN0aXZlKQorCQlpZiAoIW5ld19jcnRjX3N0YXRlLT5hY3RpdmUpCiAJCQljb250aW51ZTsKIAog CQlmdW5jcyA9IGNydGMtPmhlbHBlcl9wcml2YXRlOwogCi0JCWlmIChjcnRjLT5zdGF0ZS0+ZW5h YmxlKSB7CisJCWlmIChuZXdfY3J0Y19zdGF0ZS0+ZW5hYmxlKSB7CiAJCQlEUk1fREVCVUdfQVRP TUlDKCJlbmFibGluZyBbQ1JUQzolZDolc11cbiIsCiAJCQkJCSBjcnRjLT5iYXNlLmlkLCBjcnRj LT5uYW1lKTsKIApAQCAtOTgwLDE4ICs5ODIsMTggQEAgdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9j b21taXRfbW9kZXNldF9lbmFibGVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCX0KIAl9CiAK LQlmb3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUob2xkX3N0YXRlLCBjb25uZWN0b3IsIG9sZF9j b25uX3N0YXRlLCBpKSB7CisJZm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShvbGRfc3Rh dGUsIGNvbm5lY3RvciwgbmV3X2Nvbm5fc3RhdGUsIGkpIHsKIAkJY29uc3Qgc3RydWN0IGRybV9l bmNvZGVyX2hlbHBlcl9mdW5jcyAqZnVuY3M7CiAJCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl cjsKIAotCQlpZiAoIWNvbm5lY3Rvci0+c3RhdGUtPmJlc3RfZW5jb2RlcikKKwkJaWYgKCFuZXdf Y29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyKQogCQkJY29udGludWU7CiAKLQkJaWYgKCFjb25uZWN0 b3ItPnN0YXRlLT5jcnRjLT5zdGF0ZS0+YWN0aXZlIHx8Ci0JCSAgICAhZHJtX2F0b21pY19jcnRj X25lZWRzX21vZGVzZXQoY29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yy0+c3RhdGUpKQorCQlpZiAoIW5l d19jb25uX3N0YXRlLT5jcnRjLT5zdGF0ZS0+YWN0aXZlIHx8CisJCSAgICAhZHJtX2F0b21pY19j cnRjX25lZWRzX21vZGVzZXQobmV3X2Nvbm5fc3RhdGUtPmNydGMtPnN0YXRlKSkKIAkJCWNvbnRp bnVlOwogCi0JCWVuY29kZXIgPSBjb25uZWN0b3ItPnN0YXRlLT5iZXN0X2VuY29kZXI7CisJCWVu Y29kZXIgPSBuZXdfY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyOwogCQlmdW5jcyA9IGVuY29kZXIt PmhlbHBlcl9wcml2YXRlOwogCiAJCURSTV9ERUJVR19BVE9NSUMoImVuYWJsaW5nIFtFTkNPREVS OiVkOiVzXVxuIiwKQEAgLTEwNDEsMjkgKzEwNDMsMjYgQEAgaW50IGRybV9hdG9taWNfaGVscGVy X3dhaXRfZm9yX2ZlbmNlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSAgICAgIGJvb2wg cHJlX3N3YXApCiB7CiAJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Ci0Jc3RydWN0IGRybV9wbGFu ZV9zdGF0ZSAqcGxhbmVfc3RhdGU7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X3BsYW5l X3N0YXRlOwogCWludCBpLCByZXQ7CiAKLQlmb3JfZWFjaF9wbGFuZV9pbl9zdGF0ZShzdGF0ZSwg cGxhbmUsIHBsYW5lX3N0YXRlLCBpKSB7Ci0JCWlmICghcHJlX3N3YXApCi0JCQlwbGFuZV9zdGF0 ZSA9IHBsYW5lLT5zdGF0ZTsKLQotCQlpZiAoIXBsYW5lX3N0YXRlLT5mZW5jZSkKKwlmb3JfZWFj aF9uZXdfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBuZXdfcGxhbmVfc3RhdGUsIGkpIHsK KwkJaWYgKCFuZXdfcGxhbmVfc3RhdGUtPmZlbmNlKQogCQkJY29udGludWU7CiAKLQkJV0FSTl9P TighcGxhbmVfc3RhdGUtPmZiKTsKKwkJV0FSTl9PTighbmV3X3BsYW5lX3N0YXRlLT5mYik7CiAK IAkJLyoKIAkJICogSWYgd2FpdGluZyBmb3IgZmVuY2VzIHByZS1zd2FwIChpZTogbm9uYmxvY2sp LCB1c2Vyc3BhY2UgY2FuCiAJCSAqIHN0aWxsIGludGVycnVwdCB0aGUgb3BlcmF0aW9uLiBJbnN0 ZWFkIG9mIGJsb2NraW5nIHVudGlsIHRoZQogCQkgKiB0aW1lciBleHBpcmVzLCBtYWtlIHRoZSB3 YWl0IGludGVycnVwdGlibGUuCiAJCSAqLwotCQlyZXQgPSBkbWFfZmVuY2Vfd2FpdChwbGFuZV9z dGF0ZS0+ZmVuY2UsIHByZV9zd2FwKTsKKwkJcmV0ID0gZG1hX2ZlbmNlX3dhaXQobmV3X3BsYW5l X3N0YXRlLT5mZW5jZSwgcHJlX3N3YXApOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAot CQlkbWFfZmVuY2VfcHV0KHBsYW5lX3N0YXRlLT5mZW5jZSk7Ci0JCXBsYW5lX3N0YXRlLT5mZW5j ZSA9IE5VTEw7CisJCWRtYV9mZW5jZV9wdXQobmV3X3BsYW5lX3N0YXRlLT5mZW5jZSk7CisJCW5l d19wbGFuZV9zdGF0ZS0+ZmVuY2UgPSBOVUxMOwogCX0KIAogCXJldHVybiAwOwpAQCAtMTA4Niw3 ICsxMDg1LDcgQEAgZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfdmJsYW5rcyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAogCQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQogewog CXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRj X3N0YXRlOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsICpuZXdfY3J0 Y19zdGF0ZTsKIAlpbnQgaSwgcmV0OwogCXVuc2lnbmVkIGNydGNfbWFzayA9IDA7CiAKQEAgLTEw OTcsOSArMTA5Niw3IEBAIGRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX3ZibGFua3Moc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKIAlpZiAob2xkX3N0YXRlLT5sZWdhY3lfY3Vyc29yX3VwZGF0ZSkK IAkJcmV0dXJuOwogCi0JZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG9s ZF9jcnRjX3N0YXRlLCBpKSB7Ci0JCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3Rh dGUgPSBjcnRjLT5zdGF0ZTsKLQorCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRlKG9sZF9z dGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBpKSB7CiAJCWlmICgh bmV3X2NydGNfc3RhdGUtPmFjdGl2ZSB8fCAhbmV3X2NydGNfc3RhdGUtPnBsYW5lc19jaGFuZ2Vk KQogCQkJY29udGludWU7CiAKQEAgLTExMTEsNyArMTEwOCw3IEBAIGRybV9hdG9taWNfaGVscGVy X3dhaXRfZm9yX3ZibGFua3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJb2xkX3N0YXRlLT5j cnRjc1tpXS5sYXN0X3ZibGFua19jb3VudCA9IGRybV9jcnRjX3ZibGFua19jb3VudChjcnRjKTsK IAl9CiAKLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0Yywgb2xkX2NydGNf c3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9vbGRfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMs IG9sZF9jcnRjX3N0YXRlLCBpKSB7CiAJCWlmICghKGNydGNfbWFzayAmIGRybV9jcnRjX21hc2so Y3J0YykpKQogCQkJY29udGludWU7CiAKQEAgLTE0MjAsMTEgKzE0MTcsMTEgQEAgaW50IGRybV9h dG9taWNfaGVscGVyX3NldHVwX2NvbW1pdChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUs CiAJCQkJICAgYm9vbCBub25ibG9jaykKIHsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Ci0Jc3Ry dWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq b2xkX2NydGNfc3RhdGUsICpuZXdfY3J0Y19zdGF0ZTsKIAlzdHJ1Y3QgZHJtX2NydGNfY29tbWl0 ICpjb21taXQ7CiAJaW50IGksIHJldDsKIAotCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUs IGNydGMsIGNydGNfc3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9vbGRuZXdfY3J0Y19pbl9zdGF0ZShz dGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBpKSB7CiAJCWNvbW1p dCA9IGt6YWxsb2Moc2l6ZW9mKCpjb21taXQpLCBHRlBfS0VSTkVMKTsKIAkJaWYgKCFjb21taXQp CiAJCQlyZXR1cm4gLUVOT01FTTsKQEAgLTE0NDUsNyArMTQ0Miw3IEBAIGludCBkcm1fYXRvbWlj X2hlbHBlcl9zZXR1cF9jb21taXQoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQkv KiBEcml2ZXJzIG9ubHkgc2VuZCBvdXQgZXZlbnRzIHdoZW4gYXQgbGVhc3QgZWl0aGVyIGN1cnJl bnQgb3IKIAkJICogbmV3IENSVEMgc3RhdGUgaXMgYWN0aXZlLiBDb21wbGV0ZSByaWdodCBhd2F5 IGlmIGV2ZXJ5dGhpbmcKIAkJICogc3RheXMgb2ZmLiAqLwotCQlpZiAoIWNydGMtPnN0YXRlLT5h Y3RpdmUgJiYgIWNydGNfc3RhdGUtPmFjdGl2ZSkgeworCQlpZiAoIW9sZF9jcnRjX3N0YXRlLT5h Y3RpdmUgJiYgIW5ld19jcnRjX3N0YXRlLT5hY3RpdmUpIHsKIAkJCWNvbXBsZXRlX2FsbCgmY29t bWl0LT5mbGlwX2RvbmUpOwogCQkJY29udGludWU7CiAJCX0KQEAgLTE0NTYsMTcgKzE0NTMsMTcg QEAgaW50IGRybV9hdG9taWNfaGVscGVyX3NldHVwX2NvbW1pdChzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUsCiAJCQljb250aW51ZTsKIAkJfQogCi0JCWlmICghY3J0Y19zdGF0ZS0+ZXZl bnQpIHsKKwkJaWYgKCFuZXdfY3J0Y19zdGF0ZS0+ZXZlbnQpIHsKIAkJCWNvbW1pdC0+ZXZlbnQg PSBremFsbG9jKHNpemVvZigqY29tbWl0LT5ldmVudCksCiAJCQkJCQlHRlBfS0VSTkVMKTsKIAkJ CWlmICghY29tbWl0LT5ldmVudCkKIAkJCQlyZXR1cm4gLUVOT01FTTsKIAotCQkJY3J0Y19zdGF0 ZS0+ZXZlbnQgPSBjb21taXQtPmV2ZW50OworCQkJbmV3X2NydGNfc3RhdGUtPmV2ZW50ID0gY29t bWl0LT5ldmVudDsKIAkJfQogCi0JCWNydGNfc3RhdGUtPmV2ZW50LT5iYXNlLmNvbXBsZXRpb24g PSAmY29tbWl0LT5mbGlwX2RvbmU7Ci0JCWNydGNfc3RhdGUtPmV2ZW50LT5iYXNlLmNvbXBsZXRp b25fcmVsZWFzZSA9IHJlbGVhc2VfY3J0Y19jb21taXQ7CisJCW5ld19jcnRjX3N0YXRlLT5ldmVu dC0+YmFzZS5jb21wbGV0aW9uID0gJmNvbW1pdC0+ZmxpcF9kb25lOworCQluZXdfY3J0Y19zdGF0 ZS0+ZXZlbnQtPmJhc2UuY29tcGxldGlvbl9yZWxlYXNlID0gcmVsZWFzZV9jcnRjX2NvbW1pdDsK IAkJZHJtX2NydGNfY29tbWl0X2dldChjb21taXQpOwogCX0KIApAQCAtMTUwNSwxMiArMTUwMiwx MiBAQCBzdGF0aWMgc3RydWN0IGRybV9jcnRjX2NvbW1pdCAqcHJlY2VlZGluZ19jb21taXQoc3Ry dWN0IGRybV9jcnRjICpjcnRjKQogdm9pZCBkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9kZXBl bmRlbmNpZXMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKIHsKIAlzdHJ1Y3Qg ZHJtX2NydGMgKmNydGM7Ci0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOworCXN0 cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7CiAJc3RydWN0IGRybV9jcnRjX2Nv bW1pdCAqY29tbWl0OwogCWludCBpOwogCWxvbmcgcmV0OwogCi0JZm9yX2VhY2hfY3J0Y19pbl9z dGF0ZShvbGRfc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9uZXdfY3J0 Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG5ld19jcnRjX3N0YXRlLCBpKSB7CiAJCXNwaW5f bG9jaygmY3J0Yy0+Y29tbWl0X2xvY2spOwogCQljb21taXQgPSBwcmVjZWVkaW5nX2NvbW1pdChj cnRjKTsKIAkJaWYgKGNvbW1pdCkKQEAgLTE1NTcsMTcgKzE1NTQsMTcgQEAgRVhQT1JUX1NZTUJP TChkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9kZXBlbmRlbmNpZXMpOwogdm9pZCBkcm1fYXRv bWljX2hlbHBlcl9jb21taXRfaHdfZG9uZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0 YXRlKQogewogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUg KmNydGNfc3RhdGU7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZTsKIAlz dHJ1Y3QgZHJtX2NydGNfY29tbWl0ICpjb21taXQ7CiAJaW50IGk7CiAKLQlmb3JfZWFjaF9jcnRj X2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgeworCWZvcl9lYWNoX25l d19jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0YywgbmV3X2NydGNfc3RhdGUsIGkpIHsKIAkJ Y29tbWl0ID0gb2xkX3N0YXRlLT5jcnRjc1tpXS5jb21taXQ7CiAJCWlmICghY29tbWl0KQogCQkJ Y29udGludWU7CiAKIAkJLyogYmFja2VuZCBtdXN0IGhhdmUgY29uc3VtZWQgYW55IGV2ZW50IGJ5 IG5vdyAqLwotCQlXQVJOX09OKGNydGMtPnN0YXRlLT5ldmVudCk7CisJCVdBUk5fT04obmV3X2Ny dGNfc3RhdGUtPmV2ZW50KTsKIAkJc3Bpbl9sb2NrKCZjcnRjLT5jb21taXRfbG9jayk7CiAJCWNv bXBsZXRlX2FsbCgmY29tbWl0LT5od19kb25lKTsKIAkJc3Bpbl91bmxvY2soJmNydGMtPmNvbW1p dF9sb2NrKTsKQEAgLTE1ODksMTIgKzE1ODYsMTIgQEAgRVhQT1JUX1NZTUJPTChkcm1fYXRvbWlj X2hlbHBlcl9jb21taXRfaHdfZG9uZSk7CiB2b2lkIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9j bGVhbnVwX2RvbmUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKIHsKIAlzdHJ1 Y3QgZHJtX2NydGMgKmNydGM7Ci0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwor CXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7CiAJc3RydWN0IGRybV9jcnRj X2NvbW1pdCAqY29tbWl0OwogCWludCBpOwogCWxvbmcgcmV0OwogCi0JZm9yX2VhY2hfY3J0Y19p bl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9uZXdf Y3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG5ld19jcnRjX3N0YXRlLCBpKSB7CiAJCWNv bW1pdCA9IG9sZF9zdGF0ZS0+Y3J0Y3NbaV0uY29tbWl0OwogCQlpZiAoV0FSTl9PTighY29tbWl0 KSkKIAkJCWNvbnRpbnVlOwpAQCAtMTY0NSwxNiArMTY0MiwxNiBAQCBpbnQgZHJtX2F0b21pY19o ZWxwZXJfcHJlcGFyZV9wbGFuZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgICAgIHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZTsKLQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX3Bs YW5lX3N0YXRlICpuZXdfcGxhbmVfc3RhdGU7CiAJaW50IHJldCwgaSwgajsKIAotCWZvcl9lYWNo X3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgcGxhbmVfc3RhdGUsIGkpIHsKKwlmb3JfZWFj aF9uZXdfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBuZXdfcGxhbmVfc3RhdGUsIGkpIHsK IAkJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgKmZ1bmNzOwogCiAJCWZ1bmNz ID0gcGxhbmUtPmhlbHBlcl9wcml2YXRlOwogCiAJCWlmIChmdW5jcy0+cHJlcGFyZV9mYikgewot CQkJcmV0ID0gZnVuY3MtPnByZXBhcmVfZmIocGxhbmUsIHBsYW5lX3N0YXRlKTsKKwkJCXJldCA9 IGZ1bmNzLT5wcmVwYXJlX2ZiKHBsYW5lLCBuZXdfcGxhbmVfc3RhdGUpOwogCQkJaWYgKHJldCkK IAkJCQlnb3RvIGZhaWw7CiAJCX0KQEAgLTE2NjMsNyArMTY2MCw3IEBAIGludCBkcm1fYXRvbWlj X2hlbHBlcl9wcmVwYXJlX3BsYW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXJldHVybiAw OwogCiBmYWlsOgotCWZvcl9lYWNoX3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgcGxhbmVf c3RhdGUsIGopIHsKKwlmb3JfZWFjaF9uZXdfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBu ZXdfcGxhbmVfc3RhdGUsIGopIHsKIAkJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVu Y3MgKmZ1bmNzOwogCiAJCWlmIChqID49IGkpCkBAIC0xNjcyLDcgKzE2NjksNyBAQCBpbnQgZHJt X2F0b21pY19oZWxwZXJfcHJlcGFyZV9wbGFuZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJ ZnVuY3MgPSBwbGFuZS0+aGVscGVyX3ByaXZhdGU7CiAKIAkJaWYgKGZ1bmNzLT5jbGVhbnVwX2Zi KQotCQkJZnVuY3MtPmNsZWFudXBfZmIocGxhbmUsIHBsYW5lX3N0YXRlKTsKKwkJCWZ1bmNzLT5j bGVhbnVwX2ZiKHBsYW5lLCBuZXdfcGxhbmVfc3RhdGUpOwogCX0KIAogCXJldHVybiByZXQ7CkBA IC0xNzMwLDE0ICsxNzI3LDE0IEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3BsYW5l cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSAgICAgdWludDMyX3QgZmxhZ3MpCiB7CiAJ c3RydWN0IGRybV9jcnRjICpjcnRjOwotCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNf c3RhdGU7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwgKm5ld19jcnRj X3N0YXRlOwogCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwotCXN0cnVjdCBkcm1fcGxhbmVfc3Rh dGUgKm9sZF9wbGFuZV9zdGF0ZTsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfcGxhbmVf c3RhdGUsICpuZXdfcGxhbmVfc3RhdGU7CiAJaW50IGk7CiAJYm9vbCBhY3RpdmVfb25seSA9IGZs YWdzICYgRFJNX1BMQU5FX0NPTU1JVF9BQ1RJVkVfT05MWTsKIAlib29sIG5vX2Rpc2FibGUgPSBm bGFncyAmIERSTV9QTEFORV9DT01NSVRfTk9fRElTQUJMRV9BRlRFUl9NT0RFU0VUOwogCi0JZm9y X2VhY2hfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBpKSB7 CisJZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBvbGRfY3J0 Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpIHsKIAkJY29uc3Qgc3RydWN0IGRybV9jcnRjX2hl bHBlcl9mdW5jcyAqZnVuY3M7CiAKIAkJZnVuY3MgPSBjcnRjLT5oZWxwZXJfcHJpdmF0ZTsKQEAg LTE3NDUsMTMgKzE3NDIsMTMgQEAgdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfcGxhbmVz KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCWlmICghZnVuY3MgfHwgIWZ1bmNzLT5hdG9taWNf YmVnaW4pCiAJCQljb250aW51ZTsKIAotCQlpZiAoYWN0aXZlX29ubHkgJiYgIWNydGMtPnN0YXRl LT5hY3RpdmUpCisJCWlmIChhY3RpdmVfb25seSAmJiAhbmV3X2NydGNfc3RhdGUtPmFjdGl2ZSkK IAkJCWNvbnRpbnVlOwogCiAJCWZ1bmNzLT5hdG9taWNfYmVnaW4oY3J0Yywgb2xkX2NydGNfc3Rh dGUpOwogCX0KIAotCWZvcl9lYWNoX3BsYW5lX2luX3N0YXRlKG9sZF9zdGF0ZSwgcGxhbmUsIG9s ZF9wbGFuZV9zdGF0ZSwgaSkgeworCWZvcl9lYWNoX29sZG5ld19wbGFuZV9pbl9zdGF0ZShvbGRf c3RhdGUsIHBsYW5lLCBvbGRfcGxhbmVfc3RhdGUsIG5ld19wbGFuZV9zdGF0ZSwgaSkgewogCQlj b25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyAqZnVuY3M7CiAJCWJvb2wgZGlzYWJs aW5nOwogCkBAIC0xNzcwLDcgKzE3NjcsNyBAQCB2b2lkIGRybV9hdG9taWNfaGVscGVyX2NvbW1p dF9wbGFuZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCSAqIENSVEMgdG8gYXZvaWQgc2tp cHBpbmcgcGxhbmVzIGJlaW5nIGRpc2FibGVkIG9uIGFuCiAJCQkgKiBhY3RpdmUgQ1JUQy4KIAkJ CSAqLwotCQkJaWYgKCFkaXNhYmxpbmcgJiYgIXBsYW5lX2NydGNfYWN0aXZlKHBsYW5lLT5zdGF0 ZSkpCisJCQlpZiAoIWRpc2FibGluZyAmJiAhcGxhbmVfY3J0Y19hY3RpdmUobmV3X3BsYW5lX3N0 YXRlKSkKIAkJCQljb250aW51ZTsKIAkJCWlmIChkaXNhYmxpbmcgJiYgIXBsYW5lX2NydGNfYWN0 aXZlKG9sZF9wbGFuZV9zdGF0ZSkpCiAJCQkJY29udGludWU7CkBAIC0xNzg5LDEyICsxNzg2LDEy IEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3BsYW5lcyhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAogCQkJCWNvbnRpbnVlOwogCiAJCQlmdW5jcy0+YXRvbWljX2Rpc2FibGUocGxhbmUs IG9sZF9wbGFuZV9zdGF0ZSk7Ci0JCX0gZWxzZSBpZiAocGxhbmUtPnN0YXRlLT5jcnRjIHx8IGRp c2FibGluZykgeworCQl9IGVsc2UgaWYgKG5ld19wbGFuZV9zdGF0ZS0+Y3J0YyB8fCBkaXNhYmxp bmcpIHsKIAkJCWZ1bmNzLT5hdG9taWNfdXBkYXRlKHBsYW5lLCBvbGRfcGxhbmVfc3RhdGUpOwog CQl9CiAJfQogCi0JZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG9sZF9j cnRjX3N0YXRlLCBpKSB7CisJZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUob2xkX3N0YXRl LCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpIHsKIAkJY29uc3Qgc3Ry dWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyAqZnVuY3M7CiAKIAkJZnVuY3MgPSBjcnRjLT5oZWxw ZXJfcHJpdmF0ZTsKQEAgLTE4MDIsNyArMTc5OSw3IEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJf Y29tbWl0X3BsYW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlpZiAoIWZ1bmNzIHx8ICFm dW5jcy0+YXRvbWljX2ZsdXNoKQogCQkJY29udGludWU7CiAKLQkJaWYgKGFjdGl2ZV9vbmx5ICYm ICFjcnRjLT5zdGF0ZS0+YWN0aXZlKQorCQlpZiAoYWN0aXZlX29ubHkgJiYgIW5ld19jcnRjX3N0 YXRlLT5hY3RpdmUpCiAJCQljb250aW51ZTsKIAogCQlmdW5jcy0+YXRvbWljX2ZsdXNoKGNydGMs IG9sZF9jcnRjX3N0YXRlKTsKQEAgLTE5MjksMTEgKzE5MjYsMjEgQEAgdm9pZCBkcm1fYXRvbWlj X2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSAgICAg IHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9wbGFu ZSAqcGxhbmU7Ci0Jc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7CisJc3RydWN0 IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlLCAqbmV3X3BsYW5lX3N0YXRlOwogCWlu dCBpOwogCi0JZm9yX2VhY2hfcGxhbmVfaW5fc3RhdGUob2xkX3N0YXRlLCBwbGFuZSwgcGxhbmVf c3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9vbGRuZXdfcGxhbmVfaW5fc3RhdGUob2xkX3N0YXRlLCBw bGFuZSwgb2xkX3BsYW5lX3N0YXRlLCBuZXdfcGxhbmVfc3RhdGUsIGkpIHsKIAkJY29uc3Qgc3Ry dWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgKmZ1bmNzOworCQlzdHJ1Y3QgZHJtX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZTsKKworCQkvKgorCQkgKiBUaGlzIG1pZ2h0IGJlIGNhbGxlZCBiZWZv cmUgc3dhcHBpbmcgd2hlbiBjb21taXQgaXMgYWJvcnRlZCwKKwkJICogaW4gd2hpY2ggY2FzZSB3 ZSBoYXZlIHRvIGZyZWUgdGhlIG5ldyBzdGF0ZS4KKwkJICovCisJCWlmIChvbGRfcGxhbmVfc3Rh dGUgPT0gcGxhbmUtPnN0YXRlKQorCQkJcGxhbmVfc3RhdGUgPSBuZXdfcGxhbmVfc3RhdGU7CisJ CWVsc2UKKwkJCXBsYW5lX3N0YXRlID0gb2xkX3BsYW5lX3N0YXRlOwogCiAJCWZ1bmNzID0gcGxh bmUtPmhlbHBlcl9wcml2YXRlOwogCkBAIC0xOTc5LDE1ICsxOTg2LDE1IEBAIHZvaWQgZHJtX2F0 b21pY19oZWxwZXJfc3dhcF9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJ aW50IGk7CiAJbG9uZyByZXQ7CiAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKLQlz dHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSwgKm9sZF9jb25uX3N0YXRlOwor CXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0ZSwgKm5ld19jb25uX3N0 YXRlOwogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsICpvbGRfY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9j cnRjX3N0YXRlLCAqbmV3X2NydGNfc3RhdGU7CiAJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Ci0J c3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsICpvbGRfcGxhbmVfc3RhdGU7CisJ c3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlLCAqbmV3X3BsYW5lX3N0YXRl OwogCXN0cnVjdCBkcm1fY3J0Y19jb21taXQgKmNvbW1pdDsKIAogCWlmIChzdGFsbCkgewotCQlm b3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7CisJCWZv cl9lYWNoX25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSwgaSkg ewogCQkJc3Bpbl9sb2NrKCZjcnRjLT5jb21taXRfbG9jayk7CiAJCQljb21taXQgPSBsaXN0X2Zp cnN0X2VudHJ5X29yX251bGwoJmNydGMtPmNvbW1pdF9saXN0LAogCQkJCQlzdHJ1Y3QgZHJtX2Ny dGNfY29tbWl0LCBjb21taXRfZW50cnkpOwpAQCAtMjAwNywyMCArMjAxNCwyNCBAQCB2b2lkIGRy bV9hdG9taWNfaGVscGVyX3N3YXBfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl LAogCQl9CiAJfQogCi0JZm9yX2VhY2hfb2xkbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwg Y29ubmVjdG9yLCBvbGRfY29ubl9zdGF0ZSwgY29ubl9zdGF0ZSwgaSkgeworCWZvcl9lYWNoX29s ZG5ld19jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3Rvciwgb2xkX2Nvbm5fc3RhdGUs IG5ld19jb25uX3N0YXRlLCBpKSB7CiAJCVdBUk5fT04oY29ubmVjdG9yLT5zdGF0ZSAhPSBvbGRf Y29ubl9zdGF0ZSk7CiAKLQkJY29ubmVjdG9yLT5zdGF0ZS0+c3RhdGUgPSBzdGF0ZTsKLQkJc3dh cChzdGF0ZS0+Y29ubmVjdG9yc1tpXS5zdGF0ZSwgY29ubmVjdG9yLT5zdGF0ZSk7Ci0JCWNvbm5l Y3Rvci0+c3RhdGUtPnN0YXRlID0gTlVMTDsKKwkJb2xkX2Nvbm5fc3RhdGUtPnN0YXRlID0gc3Rh dGU7CisJCW5ld19jb25uX3N0YXRlLT5zdGF0ZSA9IE5VTEw7CisKKwkJc3RhdGUtPmNvbm5lY3Rv cnNbaV0uc3RhdGUgPSBvbGRfY29ubl9zdGF0ZTsKKwkJY29ubmVjdG9yLT5zdGF0ZSA9IG5ld19j b25uX3N0YXRlOwogCX0KIAotCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBj cnRjLCBvbGRfY3J0Y19zdGF0ZSwgY3J0Y19zdGF0ZSwgaSkgeworCWZvcl9lYWNoX29sZG5ld19j cnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUs IGkpIHsKIAkJV0FSTl9PTihjcnRjLT5zdGF0ZSAhPSBvbGRfY3J0Y19zdGF0ZSk7CiAKLQkJY3J0 Yy0+c3RhdGUtPnN0YXRlID0gc3RhdGU7Ci0JCXN3YXAoc3RhdGUtPmNydGNzW2ldLnN0YXRlLCBj cnRjLT5zdGF0ZSk7Ci0JCWNydGMtPnN0YXRlLT5zdGF0ZSA9IE5VTEw7CisJCW9sZF9jcnRjX3N0 YXRlLT5zdGF0ZSA9IHN0YXRlOworCQluZXdfY3J0Y19zdGF0ZS0+c3RhdGUgPSBOVUxMOworCisJ CXN0YXRlLT5jcnRjc1tpXS5zdGF0ZSA9IG9sZF9jcnRjX3N0YXRlOworCQljcnRjLT5zdGF0ZSA9 IG5ld19jcnRjX3N0YXRlOwogCiAJCWlmIChzdGF0ZS0+Y3J0Y3NbaV0uY29tbWl0KSB7CiAJCQlz cGluX2xvY2soJmNydGMtPmNvbW1pdF9sb2NrKTsKQEAgLTIwMzIsMTIgKzIwNDMsMTQgQEAgdm9p ZCBkcm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSwKIAkJfQogCX0KIAotCWZvcl9lYWNoX29sZG5ld19wbGFuZV9pbl9zdGF0ZShzdGF0ZSwg cGxhbmUsIG9sZF9wbGFuZV9zdGF0ZSwgcGxhbmVfc3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9vbGRu ZXdfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBvbGRfcGxhbmVfc3RhdGUsIG5ld19wbGFu ZV9zdGF0ZSwgaSkgewogCQlXQVJOX09OKHBsYW5lLT5zdGF0ZSAhPSBvbGRfcGxhbmVfc3RhdGUp OwogCi0JCXBsYW5lLT5zdGF0ZS0+c3RhdGUgPSBzdGF0ZTsKLQkJc3dhcChzdGF0ZS0+cGxhbmVz W2ldLnN0YXRlLCBwbGFuZS0+c3RhdGUpOwotCQlwbGFuZS0+c3RhdGUtPnN0YXRlID0gTlVMTDsK KwkJb2xkX3BsYW5lX3N0YXRlLT5zdGF0ZSA9IHN0YXRlOworCQluZXdfcGxhbmVfc3RhdGUtPnN0 YXRlID0gTlVMTDsKKworCQlzdGF0ZS0+cGxhbmVzW2ldLnN0YXRlID0gb2xkX3BsYW5lX3N0YXRl OworCQlwbGFuZS0+c3RhdGUgPSBuZXdfcGxhbmVfc3RhdGU7CiAJfQogfQogRVhQT1JUX1NZTUJP TChkcm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0YXRlKTsKQEAgLTIyMjAsOSArMjIzMyw5IEBAIHN0 YXRpYyBpbnQgdXBkYXRlX291dHB1dF9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUsCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHNldC0+Y3J0Yy0+ZGV2OwogCXN0cnVj dCBkcm1fY3J0YyAqY3J0YzsKLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CisJ c3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZTsKIAlzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yOwotCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRl OworCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpuZXdfY29ubl9zdGF0ZTsKIAlpbnQgcmV0 LCBpOwogCiAJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0 aW9uX211dGV4LApAQCAtMjIzNSw5ICsyMjQ4LDkgQEAgc3RhdGljIGludCB1cGRhdGVfb3V0cHV0 X3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKIAlpZiAocmV0KQogCQlyZXR1 cm4gcmV0OwogCi0JZm9yX2VhY2hfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25uZWN0b3Is IGNvbm5fc3RhdGUsIGkpIHsKLQkJaWYgKGNvbm5fc3RhdGUtPmNydGMgPT0gc2V0LT5jcnRjKSB7 Ci0JCQlyZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9jb25uZWN0b3IoY29ubl9zdGF0ZSwK Kwlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IsIG5ld19j b25uX3N0YXRlLCBpKSB7CisJCWlmIChuZXdfY29ubl9zdGF0ZS0+Y3J0YyA9PSBzZXQtPmNydGMp IHsKKwkJCXJldCA9IGRybV9hdG9taWNfc2V0X2NydGNfZm9yX2Nvbm5lY3RvcihuZXdfY29ubl9z dGF0ZSwKIAkJCQkJCQkJTlVMTCk7CiAJCQlpZiAocmV0KQogCQkJCXJldHVybiByZXQ7CkBAIC0y MjQ2LDE4ICsyMjU5LDE4IEBAIHN0YXRpYyBpbnQgdXBkYXRlX291dHB1dF9zdGF0ZShzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAKIAkvKiBUaGVuIHNldCBhbGwgY29ubmVjdG9ycyBm cm9tIHNldC0+Y29ubmVjdG9ycyBvbiB0aGUgdGFyZ2V0IGNydGMgKi8KIAlmb3IgKGkgPSAwOyBp IDwgc2V0LT5udW1fY29ubmVjdG9yczsgaSsrKSB7Ci0JCWNvbm5fc3RhdGUgPSBkcm1fYXRvbWlj X2dldF9jb25uZWN0b3Jfc3RhdGUoc3RhdGUsCisJCW5ld19jb25uX3N0YXRlID0gZHJtX2F0b21p Y19nZXRfY29ubmVjdG9yX3N0YXRlKHN0YXRlLAogCQkJCQkJCSAgICBzZXQtPmNvbm5lY3RvcnNb aV0pOwotCQlpZiAoSVNfRVJSKGNvbm5fc3RhdGUpKQotCQkJcmV0dXJuIFBUUl9FUlIoY29ubl9z dGF0ZSk7CisJCWlmIChJU19FUlIobmV3X2Nvbm5fc3RhdGUpKQorCQkJcmV0dXJuIFBUUl9FUlIo bmV3X2Nvbm5fc3RhdGUpOwogCi0JCXJldCA9IGRybV9hdG9taWNfc2V0X2NydGNfZm9yX2Nvbm5l Y3Rvcihjb25uX3N0YXRlLAorCQlyZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9jb25uZWN0 b3IobmV3X2Nvbm5fc3RhdGUsCiAJCQkJCQkJc2V0LT5jcnRjKTsKIAkJaWYgKHJldCkKIAkJCXJl dHVybiByZXQ7CiAJfQogCi0JZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0 Y19zdGF0ZSwgaSkgeworCWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBu ZXdfY3J0Y19zdGF0ZSwgaSkgewogCQkvKiBEb24ndCB1cGRhdGUgLT5lbmFibGUgZm9yIHRoZSBD UlRDIGluIHRoZSBzZXRfY29uZmlnIHJlcXVlc3QsCiAJCSAqIHNpbmNlIGEgbWlzbWF0Y2ggd291 bGQgaW5kaWNhdGUgYSBidWcgaW4gdGhlIHVwcGVyIGxheWVycy4KIAkJICogVGhlIGFjdHVhbCBt b2Rlc2V0IGNvZGUgbGF0ZXIgb24gd2lsbCBjYXRjaCBhbnkKQEAgLTIyNjUsMTMgKzIyNzgsMTMg QEAgc3RhdGljIGludCB1cGRhdGVfb3V0cHV0X3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSwKIAkJaWYgKGNydGMgPT0gc2V0LT5jcnRjKQogCQkJY29udGludWU7CiAKLQkJaWYg KCFjcnRjX3N0YXRlLT5jb25uZWN0b3JfbWFzaykgewotCQkJcmV0ID0gZHJtX2F0b21pY19zZXRf bW9kZV9wcm9wX2Zvcl9jcnRjKGNydGNfc3RhdGUsCisJCWlmICghbmV3X2NydGNfc3RhdGUtPmNv bm5lY3Rvcl9tYXNrKSB7CisJCQlyZXQgPSBkcm1fYXRvbWljX3NldF9tb2RlX3Byb3BfZm9yX2Ny dGMobmV3X2NydGNfc3RhdGUsCiAJCQkJCQkJCU5VTEwpOwogCQkJaWYgKHJldCA8IDApCiAJCQkJ cmV0dXJuIHJldDsKIAotCQkJY3J0Y19zdGF0ZS0+YWN0aXZlID0gZmFsc2U7CisJCQluZXdfY3J0 Y19zdGF0ZS0+YWN0aXZlID0gZmFsc2U7CiAJCX0KIAl9CiAKQEAgLTI1NDUsMjEgKzI1NTgsMjEg QEAgaW50IGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9kdXBsaWNhdGVkX3N0YXRlKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKIHsKIAlpbnQgaTsKIAlzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZTsKLQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKKwlzdHJ1Y3QgZHJt X3BsYW5lX3N0YXRlICpuZXdfcGxhbmVfc3RhdGU7CiAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvcjsKLQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZTsKKwlzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nvbm5fc3RhdGU7CiAJc3RydWN0IGRybV9jcnRj ICpjcnRjOwotCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwogCiAJc3RhdGUtPmFjcXVpcmVfY3R4ID0gY3R4 OwogCi0JZm9yX2VhY2hfbmV3X3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgcGxhbmVfc3Rh dGUsIGkpCisJZm9yX2VhY2hfbmV3X3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgbmV3X3Bs YW5lX3N0YXRlLCBpKQogCQlzdGF0ZS0+cGxhbmVzW2ldLm9sZF9zdGF0ZSA9IHBsYW5lLT5zdGF0 ZTsKIAotCWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRl LCBpKQorCWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBuZXdfY3J0Y19z dGF0ZSwgaSkKIAkJc3RhdGUtPmNydGNzW2ldLm9sZF9zdGF0ZSA9IGNydGMtPnN0YXRlOwogCi0J Zm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yLCBjb25uX3N0 YXRlLCBpKQorCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3Rv ciwgbmV3X2Nvbm5fc3RhdGUsIGkpCiAJCXN0YXRlLT5jb25uZWN0b3JzW2ldLm9sZF9zdGF0ZSA9 IGNvbm5lY3Rvci0+c3RhdGU7CiAKIAlyZXR1cm4gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwot LSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=