From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH v2 4/7] drm/atomic: Fix atomic helpers to use the new iterator macros. Date: Tue, 10 Jan 2017 11:21:35 +0100 Message-ID: <1484043698-6703-5-git-send-email-maarten.lankhorst@linux.intel.com> References: <1484043698-6703-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: <1484043698-6703-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 U2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4 LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyB8IDI5 MyArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAx NTIgaW5zZXJ0aW9ucygrKSwgMTQxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNf aGVscGVyLmMKaW5kZXggYzQ2ODE5NDkzNGE4Li5iNTc3OTc3MzIyZDAgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljX2hlbHBlci5jCkBAIC02MywxNCArNjMsMTUgQEAKICAqLwogc3RhdGljIHZvaWQK IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX2NoYW5nZWQoc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlLAorCQkJCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZSwKIAkJ CQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKIAkJCQlzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSkKIHsKIAlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CiAKLQlp ZiAocGxhbmUtPnN0YXRlLT5jcnRjKSB7CisJaWYgKG9sZF9wbGFuZV9zdGF0ZS0+Y3J0Yykgewog CQljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfZXhpc3RpbmdfY3J0Y19zdGF0ZShzdGF0ZSwK LQkJCQkJCQkJcGxhbmUtPnN0YXRlLT5jcnRjKTsKKwkJCQkJCQkJb2xkX3BsYW5lX3N0YXRlLT5j cnRjKTsKIAogCQlpZiAoV0FSTl9PTighY3J0Y19zdGF0ZSkpCiAJCQlyZXR1cm47CkBAIC0xMDQs NyArMTA1LDcgQEAgc3RhdGljIGludCBoYW5kbGVfY29uZmxpY3RpbmdfZW5jb2RlcnMoc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCSAqIHBhcnQgb2YgdGhlIHN0YXRlLiBJZiB0aGUg c2FtZSBlbmNvZGVyIGlzIGFzc2lnbmVkIHRvIG11bHRpcGxlCiAJICogY29ubmVjdG9ycyBiYWls IG91dC4KIAkgKi8KLQlmb3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3Rv ciwgY29ubl9zdGF0ZSwgaSkgeworCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUoc3Rh dGUsIGNvbm5lY3RvciwgY29ubl9zdGF0ZSwgaSkgewogCQljb25zdCBzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9oZWxwZXJfZnVuY3MgKmZ1bmNzID0gY29ubmVjdG9yLT5oZWxwZXJfcHJpdmF0ZTsKIAkJ c3RydWN0IGRybV9lbmNvZGVyICpuZXdfZW5jb2RlcjsKIApAQCAtMjQ1LDIyICsyNDYsMjIgQEAg c3RlYWxfZW5jb2RlcihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiB7CiAJc3RydWN0 IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwogCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3I7Ci0Jc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5lY3Rvcl9zdGF0ZTsKKwlz dHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5lY3Rvcl9zdGF0ZSwgKm5ld19jb25u ZWN0b3Jfc3RhdGU7CiAJaW50IGk7CiAKLQlmb3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUoc3Rh dGUsIGNvbm5lY3RvciwgY29ubmVjdG9yX3N0YXRlLCBpKSB7CisJZm9yX2VhY2hfb2xkbmV3X2Nv bm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yLCBvbGRfY29ubmVjdG9yX3N0YXRlLCBu ZXdfY29ubmVjdG9yX3N0YXRlLCBpKSB7CiAJCXN0cnVjdCBkcm1fY3J0YyAqZW5jb2Rlcl9jcnRj OwogCi0JCWlmIChjb25uZWN0b3Jfc3RhdGUtPmJlc3RfZW5jb2RlciAhPSBlbmNvZGVyKQorCQlp ZiAobmV3X2Nvbm5lY3Rvcl9zdGF0ZS0+YmVzdF9lbmNvZGVyICE9IGVuY29kZXIpCiAJCQljb250 aW51ZTsKIAotCQllbmNvZGVyX2NydGMgPSBjb25uZWN0b3ItPnN0YXRlLT5jcnRjOworCQllbmNv ZGVyX2NydGMgPSBvbGRfY29ubmVjdG9yX3N0YXRlLT5jcnRjOwogCiAJCURSTV9ERUJVR19BVE9N SUMoIltFTkNPREVSOiVkOiVzXSBpbiB1c2Ugb24gW0NSVEM6JWQ6JXNdLCBzdGVhbGluZyBpdFxu IiwKIAkJCQkgZW5jb2Rlci0+YmFzZS5pZCwgZW5jb2Rlci0+bmFtZSwKIAkJCQkgZW5jb2Rlcl9j cnRjLT5iYXNlLmlkLCBlbmNvZGVyX2NydGMtPm5hbWUpOwogCi0JCXNldF9iZXN0X2VuY29kZXIo c3RhdGUsIGNvbm5lY3Rvcl9zdGF0ZSwgTlVMTCk7CisJCXNldF9iZXN0X2VuY29kZXIoc3RhdGUs IG5ld19jb25uZWN0b3Jfc3RhdGUsIE5VTEwpOwogCiAJCWNydGNfc3RhdGUgPSBkcm1fYXRvbWlj X2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLCBlbmNvZGVyX2NydGMpOwogCQljcnRjX3N0 YXRlLT5jb25uZWN0b3JzX2NoYW5nZWQgPSB0cnVlOwpAQCAtMjcyLDcgKzI3Myw4IEBAIHN0ZWFs X2VuY29kZXIoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogc3RhdGljIGludAogdXBk YXRlX2Nvbm5lY3Rvcl9yb3V0aW5nKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJ CSBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAotCQkJIHN0cnVjdCBkcm1fY29ubmVj dG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGUpCisJCQkgc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKm9sZF9jb25uZWN0b3Jfc3RhdGUsCisJCQkgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg Km5ld19jb25uZWN0b3Jfc3RhdGUpCiB7CiAJY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVs cGVyX2Z1bmNzICpmdW5jczsKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKm5ld19lbmNvZGVyOwpAQCAt MjgyLDI0ICsyODQsMjQgQEAgdXBkYXRlX2Nvbm5lY3Rvcl9yb3V0aW5nKHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSwKIAkJCSBjb25uZWN0b3ItPmJhc2UuaWQsCiAJCQkgY29ubmVjdG9y LT5uYW1lKTsKIAotCWlmIChjb25uZWN0b3ItPnN0YXRlLT5jcnRjICE9IGNvbm5lY3Rvcl9zdGF0 ZS0+Y3J0YykgewotCQlpZiAoY29ubmVjdG9yLT5zdGF0ZS0+Y3J0YykgewotCQkJY3J0Y19zdGF0 ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUsIGNvbm5lY3Rvci0+ c3RhdGUtPmNydGMpOworCWlmIChvbGRfY29ubmVjdG9yX3N0YXRlLT5jcnRjICE9IG5ld19jb25u ZWN0b3Jfc3RhdGUtPmNydGMpIHsKKwkJaWYgKG9sZF9jb25uZWN0b3Jfc3RhdGUtPmNydGMpIHsK KwkJCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRl LCBvbGRfY29ubmVjdG9yX3N0YXRlLT5jcnRjKTsKIAkJCWNydGNfc3RhdGUtPmNvbm5lY3RvcnNf Y2hhbmdlZCA9IHRydWU7CiAJCX0KIAotCQlpZiAoY29ubmVjdG9yX3N0YXRlLT5jcnRjKSB7Ci0J CQljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfZXhpc3RpbmdfY3J0Y19zdGF0ZShzdGF0ZSwg Y29ubmVjdG9yX3N0YXRlLT5jcnRjKTsKKwkJaWYgKG5ld19jb25uZWN0b3Jfc3RhdGUtPmNydGMp IHsKKwkJCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0 YXRlLCBuZXdfY29ubmVjdG9yX3N0YXRlLT5jcnRjKTsKIAkJCWNydGNfc3RhdGUtPmNvbm5lY3Rv cnNfY2hhbmdlZCA9IHRydWU7CiAJCX0KIAl9CiAKLQlpZiAoIWNvbm5lY3Rvcl9zdGF0ZS0+Y3J0 YykgeworCWlmICghbmV3X2Nvbm5lY3Rvcl9zdGF0ZS0+Y3J0YykgewogCQlEUk1fREVCVUdfQVRP TUlDKCJEaXNhYmxpbmcgW0NPTk5FQ1RPUjolZDolc11cbiIsCiAJCQkJY29ubmVjdG9yLT5iYXNl LmlkLAogCQkJCWNvbm5lY3Rvci0+bmFtZSk7CiAKLQkJc2V0X2Jlc3RfZW5jb2RlcihzdGF0ZSwg Y29ubmVjdG9yX3N0YXRlLCBOVUxMKTsKKwkJc2V0X2Jlc3RfZW5jb2RlcihzdGF0ZSwgbmV3X2Nv bm5lY3Rvcl9zdGF0ZSwgTlVMTCk7CiAKIAkJcmV0dXJuIDA7CiAJfQpAQCAtMzA4LDcgKzMxMCw3 IEBAIHVwZGF0ZV9jb25uZWN0b3Jfcm91dGluZyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUsCiAKIAlpZiAoZnVuY3MtPmF0b21pY19iZXN0X2VuY29kZXIpCiAJCW5ld19lbmNvZGVyID0g ZnVuY3MtPmF0b21pY19iZXN0X2VuY29kZXIoY29ubmVjdG9yLAotCQkJCQkJCSBjb25uZWN0b3Jf c3RhdGUpOworCQkJCQkJCSBuZXdfY29ubmVjdG9yX3N0YXRlKTsKIAllbHNlIGlmIChmdW5jcy0+ YmVzdF9lbmNvZGVyKQogCQluZXdfZW5jb2RlciA9IGZ1bmNzLT5iZXN0X2VuY29kZXIoY29ubmVj dG9yKTsKIAllbHNlCkBAIC0zMjEsMzMgKzMyMywzMyBAQCB1cGRhdGVfY29ubmVjdG9yX3JvdXRp bmcoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9 CiAKLQlpZiAoIWRybV9lbmNvZGVyX2NydGNfb2sobmV3X2VuY29kZXIsIGNvbm5lY3Rvcl9zdGF0 ZS0+Y3J0YykpIHsKKwlpZiAoIWRybV9lbmNvZGVyX2NydGNfb2sobmV3X2VuY29kZXIsIG5ld19j b25uZWN0b3Jfc3RhdGUtPmNydGMpKSB7CiAJCURSTV9ERUJVR19BVE9NSUMoIltFTkNPREVSOiVk OiVzXSBpbmNvbXBhdGlibGUgd2l0aCBbQ1JUQzolZF1cbiIsCiAJCQkJIG5ld19lbmNvZGVyLT5i YXNlLmlkLAogCQkJCSBuZXdfZW5jb2Rlci0+bmFtZSwKLQkJCQkgY29ubmVjdG9yX3N0YXRlLT5j cnRjLT5iYXNlLmlkKTsKKwkJCQkgbmV3X2Nvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yy0+YmFzZS5pZCk7 CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCWlmIChuZXdfZW5jb2RlciA9PSBjb25uZWN0b3Jf c3RhdGUtPmJlc3RfZW5jb2RlcikgewotCQlzZXRfYmVzdF9lbmNvZGVyKHN0YXRlLCBjb25uZWN0 b3Jfc3RhdGUsIG5ld19lbmNvZGVyKTsKKwlpZiAobmV3X2VuY29kZXIgPT0gbmV3X2Nvbm5lY3Rv cl9zdGF0ZS0+YmVzdF9lbmNvZGVyKSB7CisJCXNldF9iZXN0X2VuY29kZXIoc3RhdGUsIG5ld19j b25uZWN0b3Jfc3RhdGUsIG5ld19lbmNvZGVyKTsKIAogCQlEUk1fREVCVUdfQVRPTUlDKCJbQ09O TkVDVE9SOiVkOiVzXSBrZWVwcyBbRU5DT0RFUjolZDolc10sIG5vdyBvbiBbQ1JUQzolZDolc11c biIsCiAJCQkJIGNvbm5lY3Rvci0+YmFzZS5pZCwKIAkJCQkgY29ubmVjdG9yLT5uYW1lLAogCQkJ CSBuZXdfZW5jb2Rlci0+YmFzZS5pZCwKIAkJCQkgbmV3X2VuY29kZXItPm5hbWUsCi0JCQkJIGNv bm5lY3Rvcl9zdGF0ZS0+Y3J0Yy0+YmFzZS5pZCwKLQkJCQkgY29ubmVjdG9yX3N0YXRlLT5jcnRj LT5uYW1lKTsKKwkJCQkgbmV3X2Nvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yy0+YmFzZS5pZCwKKwkJCQkg bmV3X2Nvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yy0+bmFtZSk7CiAKIAkJcmV0dXJuIDA7CiAJfQogCiAJ c3RlYWxfZW5jb2RlcihzdGF0ZSwgbmV3X2VuY29kZXIpOwogCi0Jc2V0X2Jlc3RfZW5jb2Rlcihz dGF0ZSwgY29ubmVjdG9yX3N0YXRlLCBuZXdfZW5jb2Rlcik7CisJc2V0X2Jlc3RfZW5jb2Rlcihz dGF0ZSwgbmV3X2Nvbm5lY3Rvcl9zdGF0ZSwgbmV3X2VuY29kZXIpOwogCi0JY3J0Y19zdGF0ZSA9 IGRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUsIGNvbm5lY3Rvcl9zdGF0 ZS0+Y3J0Yyk7CisJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3Rh dGUoc3RhdGUsIG5ld19jb25uZWN0b3Jfc3RhdGUtPmNydGMpOwogCWNydGNfc3RhdGUtPmNvbm5l Y3RvcnNfY2hhbmdlZCA9IHRydWU7CiAKIAlEUk1fREVCVUdfQVRPTUlDKCJbQ09OTkVDVE9SOiVk OiVzXSB1c2luZyBbRU5DT0RFUjolZDolc10gb24gW0NSVEM6JWQ6JXNdXG4iLApAQCAtMzU1LDgg KzM1Nyw4IEBAIHVwZGF0ZV9jb25uZWN0b3Jfcm91dGluZyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUsCiAJCQkgY29ubmVjdG9yLT5uYW1lLAogCQkJIG5ld19lbmNvZGVyLT5iYXNlLmlk LAogCQkJIG5ld19lbmNvZGVyLT5uYW1lLAotCQkJIGNvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yy0+YmFz ZS5pZCwKLQkJCSBjb25uZWN0b3Jfc3RhdGUtPmNydGMtPm5hbWUpOworCQkJIG5ld19jb25uZWN0 b3Jfc3RhdGUtPmNydGMtPmJhc2UuaWQsCisJCQkgbmV3X2Nvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yy0+ bmFtZSk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTM3MSw3ICszNzMsNyBAQCBtb2RlX2ZpeHVwKHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAlpbnQgaTsKIAlib29sIHJldDsKIAotCWZv cl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKKwlmb3Jf ZWFjaF9uZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewogCQlp ZiAoIWNydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCAmJgogCQkgICAgIWNydGNfc3RhdGUtPmNvbm5l Y3RvcnNfY2hhbmdlZCkKIAkJCWNvbnRpbnVlOwpAQCAtMzc5LDcgKzM4MSw3IEBAIG1vZGVfZml4 dXAoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCQlkcm1fbW9kZV9jb3B5KCZjcnRj X3N0YXRlLT5hZGp1c3RlZF9tb2RlLCAmY3J0Y19zdGF0ZS0+bW9kZSk7CiAJfQogCi0JZm9yX2Vh Y2hfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IsIGNvbm5fc3RhdGUsIGkpIHsK Kwlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IsIGNvbm5f c3RhdGUsIGkpIHsKIAkJY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyAqZnVu Y3M7CiAJCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKIApAQCAtNDI0LDcgKzQyNiw3IEBA IG1vZGVfZml4dXAoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCQl9CiAJfQogCi0J Zm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgeworCWZv cl9lYWNoX25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7CiAJ CWNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOwogCiAJCWlmICghY3J0 Y19zdGF0ZS0+ZW5hYmxlKQpAQCAtNDgzLDE5ICs0ODUsMTkgQEAgZHJtX2F0b21pY19oZWxwZXJf Y2hlY2tfbW9kZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCXN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Ci0Jc3RydWN0IGRy bV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2Ny dGNfc3RhdGUsICpuZXdfY3J0Y19zdGF0ZTsKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yOwotCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGU7CisJc3Ry dWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25uZWN0b3Jfc3RhdGUsICpuZXdfY29ubmVj dG9yX3N0YXRlOwogCWludCBpLCByZXQ7CiAKLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRl LCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Ci0JCWlmICghZHJtX21vZGVfZXF1YWwoJmNydGMtPnN0 YXRlLT5tb2RlLCAmY3J0Y19zdGF0ZS0+bW9kZSkpIHsKKwlmb3JfZWFjaF9vbGRuZXdfY3J0Y19p bl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBpKSB7 CisJCWlmICghZHJtX21vZGVfZXF1YWwoJm9sZF9jcnRjX3N0YXRlLT5tb2RlLCAmbmV3X2NydGNf c3RhdGUtPm1vZGUpKSB7CiAJCQlEUk1fREVCVUdfQVRPTUlDKCJbQ1JUQzolZDolc10gbW9kZSBj aGFuZ2VkXG4iLAogCQkJCQkgY3J0Yy0+YmFzZS5pZCwgY3J0Yy0+bmFtZSk7Ci0JCQljcnRjX3N0 YXRlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOworCQkJbmV3X2NydGNfc3RhdGUtPm1vZGVfY2hhbmdl ZCA9IHRydWU7CiAJCX0KIAotCQlpZiAoY3J0Yy0+c3RhdGUtPmVuYWJsZSAhPSBjcnRjX3N0YXRl LT5lbmFibGUpIHsKKwkJaWYgKG9sZF9jcnRjX3N0YXRlLT5lbmFibGUgIT0gbmV3X2NydGNfc3Rh dGUtPmVuYWJsZSkgewogCQkJRFJNX0RFQlVHX0FUT01JQygiW0NSVEM6JWQ6JXNdIGVuYWJsZSBj aGFuZ2VkXG4iLAogCQkJCQkgY3J0Yy0+YmFzZS5pZCwgY3J0Yy0+bmFtZSk7CiAKQEAgLTUwNyw4 ICs1MDksOCBAQCBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19tb2Rlc2V0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCiAJCQkgKiBUaGUgb3RoZXIgd2F5IGFyb3VuZCBpcyB0cnVlIGFzIHdlbGwuIGVu YWJsZSAhPSAwCiAJCQkgKiBpZmYgY29ubmVjdG9ycyBhcmUgYXR0YWNoZWQgYW5kIGEgbW9kZSBp cyBzZXQuCiAJCQkgKi8KLQkJCWNydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCA9IHRydWU7Ci0JCQlj cnRjX3N0YXRlLT5jb25uZWN0b3JzX2NoYW5nZWQgPSB0cnVlOworCQkJbmV3X2NydGNfc3RhdGUt Pm1vZGVfY2hhbmdlZCA9IHRydWU7CisJCQluZXdfY3J0Y19zdGF0ZS0+Y29ubmVjdG9yc19jaGFu Z2VkID0gdHJ1ZTsKIAkJfQogCX0KIApAQCAtNTE2LDE0ICs1MTgsMTUgQEAgZHJtX2F0b21pY19o ZWxwZXJfY2hlY2tfbW9kZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmIChyZXQpCiAJ CXJldHVybiByZXQ7CiAKLQlmb3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5l Y3RvciwgY29ubmVjdG9yX3N0YXRlLCBpKSB7CisJZm9yX2VhY2hfb2xkbmV3X2Nvbm5lY3Rvcl9p bl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yLCBvbGRfY29ubmVjdG9yX3N0YXRlLCBuZXdfY29ubmVj dG9yX3N0YXRlLCBpKSB7CiAJCS8qCiAJCSAqIFRoaXMgb25seSBzZXRzIGNydGMtPmNvbm5lY3Rv cnNfY2hhbmdlZCBmb3Igcm91dGluZyBjaGFuZ2VzLAogCQkgKiBkcml2ZXJzIG11c3Qgc2V0IGNy dGMtPmNvbm5lY3RvcnNfY2hhbmdlZCB0aGVtc2VsdmVzIHdoZW4KIAkJICogY29ubmVjdG9yIHBy b3BlcnRpZXMgbmVlZCB0byBiZSB1cGRhdGVkLgogCQkgKi8KIAkJcmV0ID0gdXBkYXRlX2Nvbm5l Y3Rvcl9yb3V0aW5nKHN0YXRlLCBjb25uZWN0b3IsCi0JCQkJCSAgICAgICBjb25uZWN0b3Jfc3Rh dGUpOworCQkJCQkgICAgICAgb2xkX2Nvbm5lY3Rvcl9zdGF0ZSwKKwkJCQkJICAgICAgIG5ld19j b25uZWN0b3Jfc3RhdGUpOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAl9CkBAIC01MzQs MjggKzUzNywyOCBAQCBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19tb2Rlc2V0KHN0cnVjdCBkcm1f 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 PSAwKQpAQCAtNTY1LDcgKzU2OCw3IEBAIGRybV9hdG9taWNfaGVscGVyX2NoZWNrX21vZGVzZXQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJaWYgKHJldCAhPSAwKQogCQkJcmV0dXJuIHJldDsK IAotCQlpZiAoY3J0Y19zdGF0ZS0+ZW5hYmxlICE9IGhhc19jb25uZWN0b3JzKSB7CisJCWlmIChu ZXdfY3J0Y19zdGF0ZS0+ZW5hYmxlICE9IGhhc19jb25uZWN0b3JzKSB7CiAJCQlEUk1fREVCVUdf QVRPTUlDKCJbQ1JUQzolZDolc10gZW5hYmxlZC9jb25uZWN0b3JzIG1pc21hdGNoXG4iLAogCQkJ CQkgY3J0Yy0+YmFzZS5pZCwgY3J0Yy0+bmFtZSk7CiAKQEAgLTU5OSwxNSArNjAyLDE1IEBAIGRy bV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXN0 cnVjdCBkcm1fY3J0YyAqY3J0YzsKIAlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7 CiAJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Ci0Jc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGU7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsICpvbGRfcGxh bmVfc3RhdGU7CiAJaW50IGksIHJldCA9IDA7CiAKLQlmb3JfZWFjaF9wbGFuZV9pbl9zdGF0ZShz dGF0ZSwgcGxhbmUsIHBsYW5lX3N0YXRlLCBpKSB7CisJZm9yX2VhY2hfb2xkbmV3X3BsYW5lX2lu X3N0YXRlKHN0YXRlLCBwbGFuZSwgb2xkX3BsYW5lX3N0YXRlLCBwbGFuZV9zdGF0ZSwgaSkgewog CQljb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyAqZnVuY3M7CiAKIAkJZnVuY3Mg PSBwbGFuZS0+aGVscGVyX3ByaXZhdGU7CiAKLQkJZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfY2hh bmdlZChzdGF0ZSwgcGxhbmVfc3RhdGUsIHBsYW5lKTsKKwkJZHJtX2F0b21pY19oZWxwZXJfcGxh bmVfY2hhbmdlZChzdGF0ZSwgb2xkX3BsYW5lX3N0YXRlLCBwbGFuZV9zdGF0ZSwgcGxhbmUpOwog CiAJCWlmICghZnVuY3MgfHwgIWZ1bmNzLT5hdG9taWNfY2hlY2spCiAJCQljb250aW51ZTsKQEAg LTYyMCw3ICs2MjMsNyBAQCBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZXMoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIAkJfQogCX0KIAotCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUs IGNydGMsIGNydGNfc3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9uZXdfY3J0Y19pbl9zdGF0ZShzdGF0 ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewogCQljb25zdCBzdHJ1Y3QgZHJtX2NydGNfaGVscGVy X2Z1bmNzICpmdW5jczsKIAogCQlmdW5jcyA9IGNydGMtPmhlbHBlcl9wcml2YXRlOwpAQCAtNjgx LDEyICs2ODQsMTIgQEAgc3RhdGljIHZvaWQKIGRpc2FibGVfb3V0cHV0cyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQogewogCXN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Ci0Jc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg Km9sZF9jb25uX3N0YXRlOworCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9z dGF0ZSwgKm5ld19jb25uX3N0YXRlOwogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKLQlzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq b2xkX2NydGNfc3RhdGUsICpuZXdfY3J0Y19zdGF0ZTsKIAlpbnQgaTsKIAotCWZvcl9lYWNoX2Nv bm5lY3Rvcl9pbl9zdGF0ZShvbGRfc3RhdGUsIGNvbm5lY3Rvciwgb2xkX2Nvbm5fc3RhdGUsIGkp IHsKKwlmb3JfZWFjaF9vbGRuZXdfY29ubmVjdG9yX2luX3N0YXRlKG9sZF9zdGF0ZSwgY29ubmVj dG9yLCBvbGRfY29ubl9zdGF0ZSwgbmV3X2Nvbm5fc3RhdGUsIGkpIHsKIAkJY29uc3Qgc3RydWN0 IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyAqZnVuY3M7CiAJCXN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlcjsKIApAQCAtNzIzLDcgKzcyNiw3IEBAIGRpc2FibGVfb3V0cHV0cyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQogCiAJCS8q IFJpZ2h0IGZ1bmN0aW9uIGRlcGVuZHMgdXBvbiB0YXJnZXQgc3RhdGUuICovCiAJCWlmIChmdW5j cykgewotCQkJaWYgKGNvbm5lY3Rvci0+c3RhdGUtPmNydGMgJiYgZnVuY3MtPnByZXBhcmUpCisJ CQlpZiAobmV3X2Nvbm5fc3RhdGUtPmNydGMgJiYgZnVuY3MtPnByZXBhcmUpCiAJCQkJZnVuY3Mt PnByZXBhcmUoZW5jb2Rlcik7CiAJCQllbHNlIGlmIChmdW5jcy0+ZGlzYWJsZSkKIAkJCQlmdW5j cy0+ZGlzYWJsZShlbmNvZGVyKTsKQEAgLTczNCwxMSArNzM3LDExIEBAIGRpc2FibGVfb3V0cHV0 cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0 YXRlKQogCQlkcm1fYnJpZGdlX3Bvc3RfZGlzYWJsZShlbmNvZGVyLT5icmlkZ2UpOwogCX0KIAot CWZvcl9lYWNoX2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwg aSkgeworCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0Yywgb2xk X2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBpKSB7CiAJCWNvbnN0IHN0cnVjdCBkcm1fY3J0 Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOwogCiAJCS8qIFNodXQgZG93biBldmVyeXRoaW5nIHRoYXQg bmVlZHMgYSBmdWxsIG1vZGVzZXQuICovCi0JCWlmICghZHJtX2F0b21pY19jcnRjX25lZWRzX21v ZGVzZXQoY3J0Yy0+c3RhdGUpKQorCQlpZiAoIWRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0 KG5ld19jcnRjX3N0YXRlKSkKIAkJCWNvbnRpbnVlOwogCiAJCWlmICghb2xkX2NydGNfc3RhdGUt PmFjdGl2ZSkKQEAgLTc1MSw3ICs3NTQsNyBAQCBkaXNhYmxlX291dHB1dHMoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKIAogCiAJCS8q IFJpZ2h0IGZ1bmN0aW9uIGRlcGVuZHMgdXBvbiB0YXJnZXQgc3RhdGUuICovCi0JCWlmIChjcnRj LT5zdGF0ZS0+ZW5hYmxlICYmIGZ1bmNzLT5wcmVwYXJlKQorCQlpZiAobmV3X2NydGNfc3RhdGUt PmVuYWJsZSAmJiBmdW5jcy0+cHJlcGFyZSkKIAkJCWZ1bmNzLT5wcmVwYXJlKGNydGMpOwogCQll bHNlIGlmIChmdW5jcy0+YXRvbWljX2Rpc2FibGUpCiAJCQlmdW5jcy0+YXRvbWljX2Rpc2FibGUo Y3J0Yywgb2xkX2NydGNfc3RhdGUpOwpAQCAtNzgwLDEzICs3ODMsMTMgQEAgZHJtX2F0b21pY19o ZWxwZXJfdXBkYXRlX2xlZ2FjeV9tb2Rlc2V0X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CiAJCQkJCSAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCiB7CiAJc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKLQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0 ZSAqb2xkX2Nvbm5fc3RhdGU7CisJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25u X3N0YXRlLCAqbmV3X2Nvbm5fc3RhdGU7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwotCXN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7CisJc3RydWN0IGRybV9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlOwogCWludCBpOwogCiAJLyogY2xlYXIgb3V0IGV4aXN0aW5nIGxpbmtzIGFu ZCB1cGRhdGUgZHBtcyAqLwotCWZvcl9lYWNoX2Nvbm5lY3Rvcl9pbl9zdGF0ZShvbGRfc3RhdGUs IGNvbm5lY3Rvciwgb2xkX2Nvbm5fc3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9vbGRuZXdfY29ubmVj dG9yX2luX3N0YXRlKG9sZF9zdGF0ZSwgY29ubmVjdG9yLCBvbGRfY29ubl9zdGF0ZSwgbmV3X2Nv bm5fc3RhdGUsIGkpIHsKIAkJaWYgKGNvbm5lY3Rvci0+ZW5jb2RlcikgewogCQkJV0FSTl9PTigh Y29ubmVjdG9yLT5lbmNvZGVyLT5jcnRjKTsKIApAQCAtNzk0LDcgKzc5Nyw3IEBAIGRybV9hdG9t aWNfaGVscGVyX3VwZGF0ZV9sZWdhY3lfbW9kZXNldF9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCQkJY29ubmVjdG9yLT5lbmNvZGVyID0gTlVMTDsKIAkJfQogCi0JCWNydGMgPSBjb25u ZWN0b3ItPnN0YXRlLT5jcnRjOworCQljcnRjID0gbmV3X2Nvbm5fc3RhdGUtPmNydGM7CiAJCWlm ICgoIWNydGMgJiYgb2xkX2Nvbm5fc3RhdGUtPmNydGMpIHx8CiAJCSAgICAoY3J0YyAmJiBkcm1f YXRvbWljX2NydGNfbmVlZHNfbW9kZXNldChjcnRjLT5zdGF0ZSkpKSB7CiAJCQlzdHJ1Y3QgZHJt X3Byb3BlcnR5ICpkcG1zX3Byb3AgPQpAQCAtODExLDIzICs4MTQsMjMgQEAgZHJtX2F0b21pY19o ZWxwZXJfdXBkYXRlX2xlZ2FjeV9tb2Rlc2V0X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CiAJfQogCiAJLyogc2V0IG5ldyBsaW5rcyAqLwotCWZvcl9lYWNoX2Nvbm5lY3Rvcl9pbl9zdGF0 ZShvbGRfc3RhdGUsIGNvbm5lY3Rvciwgb2xkX2Nvbm5fc3RhdGUsIGkpIHsKLQkJaWYgKCFjb25u ZWN0b3ItPnN0YXRlLT5jcnRjKQorCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUob2xk X3N0YXRlLCBjb25uZWN0b3IsIG5ld19jb25uX3N0YXRlLCBpKSB7CisJCWlmICghbmV3X2Nvbm5f c3RhdGUtPmNydGMpCiAJCQljb250aW51ZTsKIAotCQlpZiAoV0FSTl9PTighY29ubmVjdG9yLT5z dGF0ZS0+YmVzdF9lbmNvZGVyKSkKKwkJaWYgKFdBUk5fT04oIW5ld19jb25uX3N0YXRlLT5iZXN0 X2VuY29kZXIpKQogCQkJY29udGludWU7CiAKLQkJY29ubmVjdG9yLT5lbmNvZGVyID0gY29ubmVj dG9yLT5zdGF0ZS0+YmVzdF9lbmNvZGVyOwotCQljb25uZWN0b3ItPmVuY29kZXItPmNydGMgPSBj b25uZWN0b3ItPnN0YXRlLT5jcnRjOworCQljb25uZWN0b3ItPmVuY29kZXIgPSBuZXdfY29ubl9z dGF0ZS0+YmVzdF9lbmNvZGVyOworCQljb25uZWN0b3ItPmVuY29kZXItPmNydGMgPSBuZXdfY29u bl9zdGF0ZS0+Y3J0YzsKIAl9CiAKIAkvKiBzZXQgbGVnYWN5IHN0YXRlIGluIHRoZSBjcnRjIHN0 cnVjdHVyZSAqLwotCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBvbGRf Y3J0Y19zdGF0ZSwgaSkgeworCWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwg Y3J0YywgY3J0Y19zdGF0ZSwgaSkgewogCQlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gY3J0 Yy0+cHJpbWFyeTsKIAotCQljcnRjLT5tb2RlID0gY3J0Yy0+c3RhdGUtPm1vZGU7Ci0JCWNydGMt PmVuYWJsZWQgPSBjcnRjLT5zdGF0ZS0+ZW5hYmxlOworCQljcnRjLT5tb2RlID0gY3J0Y19zdGF0 ZS0+bW9kZTsKKwkJY3J0Yy0+ZW5hYmxlZCA9IGNydGNfc3RhdGUtPmVuYWJsZTsKIAogCQlpZiAo ZHJtX2F0b21pY19nZXRfZXhpc3RpbmdfcGxhbmVfc3RhdGUob2xkX3N0YXRlLCBwcmltYXJ5KSAm JgogCQkgICAgcHJpbWFyeS0+c3RhdGUtPmNydGMgPT0gY3J0YykgewpAQCAtODM1LDkgKzgzOCw5 IEBAIGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9sZWdhY3lfbW9kZXNldF9zdGF0ZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAogCQkJY3J0Yy0+eSA9IHByaW1hcnktPnN0YXRlLT5zcmNfeSA+PiAx NjsKIAkJfQogCi0JCWlmIChjcnRjLT5zdGF0ZS0+ZW5hYmxlKQorCQlpZiAoY3J0Y19zdGF0ZS0+ ZW5hYmxlKQogCQkJZHJtX2NhbGNfdGltZXN0YW1waW5nX2NvbnN0YW50cyhjcnRjLAotCQkJCQkJ CSZjcnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZSk7CisJCQkJCQkJJmNydGNfc3RhdGUtPmFkanVz dGVkX21vZGUpOwogCX0KIH0KIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfdXBkYXRl X2xlZ2FjeV9tb2Rlc2V0X3N0YXRlKTsKQEAgLTg0NiwyMCArODQ5LDIwIEBAIHN0YXRpYyB2b2lk CiBjcnRjX3NldF9tb2RlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpvbGRfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwotCXN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpj cnRjX3N0YXRlOwogCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Ci0Jc3RydWN0IGRy bV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25uX3N0YXRlOworCXN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlICpjb25uX3N0YXRlOwogCWludCBpOwogCi0JZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShv bGRfc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBpKSB7CisJZm9yX2VhY2hfbmV3X2NydGNf aW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7CiAJCWNvbnN0IHN0cnVj dCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOwogCi0JCWlmICghY3J0Yy0+c3RhdGUtPm1v ZGVfY2hhbmdlZCkKKwkJaWYgKCFjcnRjX3N0YXRlLT5tb2RlX2NoYW5nZWQpCiAJCQljb250aW51 ZTsKIAogCQlmdW5jcyA9IGNydGMtPmhlbHBlcl9wcml2YXRlOwogCi0JCWlmIChjcnRjLT5zdGF0 ZS0+ZW5hYmxlICYmIGZ1bmNzLT5tb2RlX3NldF9ub2ZiKSB7CisJCWlmIChjcnRjX3N0YXRlLT5l bmFibGUgJiYgZnVuY3MtPm1vZGVfc2V0X25vZmIpIHsKIAkJCURSTV9ERUJVR19BVE9NSUMoIm1v ZGVzZXQgb24gW0NSVEM6JWQ6JXNdXG4iLAogCQkJCQkgY3J0Yy0+YmFzZS5pZCwgY3J0Yy0+bmFt ZSk7CiAKQEAgLTg2NywxOCArODcwLDE4IEBAIGNydGNfc2V0X21vZGUoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKIAkJfQogCX0KIAot CWZvcl9lYWNoX2Nvbm5lY3Rvcl9pbl9zdGF0ZShvbGRfc3RhdGUsIGNvbm5lY3Rvciwgb2xkX2Nv bm5fc3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKG9sZF9zdGF0 ZSwgY29ubmVjdG9yLCBjb25uX3N0YXRlLCBpKSB7CiAJCWNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rl cl9oZWxwZXJfZnVuY3MgKmZ1bmNzOwogCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRj X3N0YXRlOwogCQlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7CiAJCXN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICptb2RlLCAqYWRqdXN0ZWRfbW9kZTsKIAotCQlpZiAoIWNvbm5lY3Rvci0+c3Rh dGUtPmJlc3RfZW5jb2RlcikKKwkJaWYgKCFjb25uX3N0YXRlLT5iZXN0X2VuY29kZXIpCiAJCQlj b250aW51ZTsKIAotCQllbmNvZGVyID0gY29ubmVjdG9yLT5zdGF0ZS0+YmVzdF9lbmNvZGVyOwor CQllbmNvZGVyID0gY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyOwogCQlmdW5jcyA9IGVuY29kZXIt PmhlbHBlcl9wcml2YXRlOwotCQluZXdfY3J0Y19zdGF0ZSA9IGNvbm5lY3Rvci0+c3RhdGUtPmNy dGMtPnN0YXRlOworCQluZXdfY3J0Y19zdGF0ZSA9IGNvbm5fc3RhdGUtPmNydGMtPnN0YXRlOwog CQltb2RlID0gJm5ld19jcnRjX3N0YXRlLT5tb2RlOwogCQlhZGp1c3RlZF9tb2RlID0gJm5ld19j cnRjX3N0YXRlLT5hZGp1c3RlZF9tb2RlOwogCkBAIC04OTQsNyArODk3LDcgQEAgY3J0Y19zZXRf bW9kZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xk X3N0YXRlKQogCQkgKi8KIAkJaWYgKGZ1bmNzICYmIGZ1bmNzLT5hdG9taWNfbW9kZV9zZXQpIHsK IAkJCWZ1bmNzLT5hdG9taWNfbW9kZV9zZXQoZW5jb2RlciwgbmV3X2NydGNfc3RhdGUsCi0JCQkJ CSAgICAgICBjb25uZWN0b3ItPnN0YXRlKTsKKwkJCQkJICAgICAgIGNvbm5fc3RhdGUpOwogCQl9 IGVsc2UgaWYgKGZ1bmNzICYmIGZ1bmNzLT5tb2RlX3NldCkgewogCQkJZnVuY3MtPm1vZGVfc2V0 KGVuY29kZXIsIG1vZGUsIGFkanVzdGVkX21vZGUpOwogCQl9CkBAIC05NDYsMjQgKzk0OSwyNCBA QCB2b2lkIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIAkJCQkJICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9z dGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Ci0Jc3RydWN0IGRybV9jcnRjX3N0YXRl ICpvbGRfY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CiAJ c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKLQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9z dGF0ZSAqb2xkX2Nvbm5fc3RhdGU7CisJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5f c3RhdGU7CiAJaW50IGk7CiAKLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0 Yywgb2xkX2NydGNfc3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9uZXdfY3J0Y19pbl9zdGF0ZShvbGRf c3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKIAkJY29uc3Qgc3RydWN0IGRybV9jcnRjX2hl bHBlcl9mdW5jcyAqZnVuY3M7CiAKIAkJLyogTmVlZCB0byBmaWx0ZXIgb3V0IENSVENzIHdoZXJl IG9ubHkgcGxhbmVzIGNoYW5nZS4gKi8KLQkJaWYgKCFkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9k ZXNldChjcnRjLT5zdGF0ZSkpCisJCWlmICghZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQo Y3J0Y19zdGF0ZSkpCiAJCQljb250aW51ZTsKIAotCQlpZiAoIWNydGMtPnN0YXRlLT5hY3RpdmUp CisJCWlmICghY3J0Y19zdGF0ZS0+YWN0aXZlKQogCQkJY29udGludWU7CiAKIAkJZnVuY3MgPSBj cnRjLT5oZWxwZXJfcHJpdmF0ZTsKIAotCQlpZiAoY3J0Yy0+c3RhdGUtPmVuYWJsZSkgeworCQlp ZiAoY3J0Y19zdGF0ZS0+ZW5hYmxlKSB7CiAJCQlEUk1fREVCVUdfQVRPTUlDKCJlbmFibGluZyBb Q1JUQzolZDolc11cbiIsCiAJCQkJCSBjcnRjLT5iYXNlLmlkLCBjcnRjLT5uYW1lKTsKIApAQCAt OTc0LDE4ICs5NzcsMTggQEAgdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfbW9kZXNldF9l bmFibGVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCX0KIAl9CiAKLQlmb3JfZWFjaF9jb25u ZWN0b3JfaW5fc3RhdGUob2xkX3N0YXRlLCBjb25uZWN0b3IsIG9sZF9jb25uX3N0YXRlLCBpKSB7 CisJZm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShvbGRfc3RhdGUsIGNvbm5lY3Rvciwg Y29ubl9zdGF0ZSwgaSkgewogCQljb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNz ICpmdW5jczsKIAkJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwogCi0JCWlmICghY29ubmVj dG9yLT5zdGF0ZS0+YmVzdF9lbmNvZGVyKQorCQlpZiAoIWNvbm5fc3RhdGUtPmJlc3RfZW5jb2Rl cikKIAkJCWNvbnRpbnVlOwogCi0JCWlmICghY29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yy0+c3RhdGUt PmFjdGl2ZSB8fAotCQkgICAgIWRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KGNvbm5lY3Rv ci0+c3RhdGUtPmNydGMtPnN0YXRlKSkKKwkJaWYgKCFjb25uX3N0YXRlLT5jcnRjLT5zdGF0ZS0+ YWN0aXZlIHx8CisJCSAgICAhZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQoY29ubl9zdGF0 ZS0+Y3J0Yy0+c3RhdGUpKQogCQkJY29udGludWU7CiAKLQkJZW5jb2RlciA9IGNvbm5lY3Rvci0+ c3RhdGUtPmJlc3RfZW5jb2RlcjsKKwkJZW5jb2RlciA9IGNvbm5fc3RhdGUtPmJlc3RfZW5jb2Rl cjsKIAkJZnVuY3MgPSBlbmNvZGVyLT5oZWxwZXJfcHJpdmF0ZTsKIAogCQlEUk1fREVCVUdfQVRP TUlDKCJlbmFibGluZyBbRU5DT0RFUjolZDolc11cbiIsCkBAIC0xMDM4LDEwICsxMDQxLDcgQEAg aW50IGRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX2ZlbmNlcyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwogCWludCBpLCByZXQ7 CiAKLQlmb3JfZWFjaF9wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIHBsYW5lX3N0YXRlLCBp KSB7Ci0JCWlmICghcHJlX3N3YXApCi0JCQlwbGFuZV9zdGF0ZSA9IHBsYW5lLT5zdGF0ZTsKLQor CWZvcl9lYWNoX25ld19wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIHBsYW5lX3N0YXRlLCBp KSB7CiAJCWlmICghcGxhbmVfc3RhdGUtPmZlbmNlKQogCQkJY29udGludWU7CiAKQEAgLTEwODAs NyArMTA4MCw3IEBAIGRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX3ZibGFua3Moc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIAkJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKIHsK IAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Ci0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0 Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLCAqbmV3X2Ny dGNfc3RhdGU7CiAJaW50IGksIHJldDsKIAl1bnNpZ25lZCBjcnRjX21hc2sgPSAwOwogCkBAIC0x MDkxLDkgKzEwOTEsNyBAQCBkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCiAJaWYgKG9sZF9zdGF0ZS0+bGVnYWN5X2N1cnNvcl91cGRhdGUp CiAJCXJldHVybjsKIAotCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBv bGRfY3J0Y19zdGF0ZSwgaSkgewotCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0 YXRlID0gY3J0Yy0+c3RhdGU7Ci0KKwlmb3JfZWFjaF9vbGRuZXdfY3J0Y19pbl9zdGF0ZShvbGRf c3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewogCQlpZiAo IW5ld19jcnRjX3N0YXRlLT5hY3RpdmUgfHwgIW5ld19jcnRjX3N0YXRlLT5wbGFuZXNfY2hhbmdl ZCkKIAkJCWNvbnRpbnVlOwogCkBAIC0xMTA1LDcgKzExMDMsNyBAQCBkcm1fYXRvbWljX2hlbHBl cl93YWl0X2Zvcl92YmxhbmtzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCW9sZF9zdGF0ZS0+ Y3J0Y3NbaV0ubGFzdF92YmxhbmtfY291bnQgPSBkcm1fY3J0Y192YmxhbmtfY291bnQoY3J0Yyk7 CiAJfQogCi0JZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG9sZF9jcnRj X3N0YXRlLCBpKSB7CisJZm9yX2VhY2hfb2xkX2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRj LCBvbGRfY3J0Y19zdGF0ZSwgaSkgewogCQlpZiAoIShjcnRjX21hc2sgJiBkcm1fY3J0Y19tYXNr KGNydGMpKSkKIAkJCWNvbnRpbnVlOwogCkBAIC0xNDEyLDExICsxNDEwLDExIEBAIGludCBkcm1f YXRvbWljX2hlbHBlcl9zZXR1cF9jb21taXQoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl LAogCQkJCSAgIGJvb2wgbm9uYmxvY2spCiB7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwotCXN0 cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUg Km9sZF9jcnRjX3N0YXRlLCAqY3J0Y19zdGF0ZTsKIAlzdHJ1Y3QgZHJtX2NydGNfY29tbWl0ICpj b21taXQ7CiAJaW50IGksIHJldDsKIAotCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNy dGMsIGNydGNfc3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9vbGRuZXdfY3J0Y19pbl9zdGF0ZShzdGF0 ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIGNydGNfc3RhdGUsIGkpIHsKIAkJY29tbWl0ID0ga3ph bGxvYyhzaXplb2YoKmNvbW1pdCksIEdGUF9LRVJORUwpOwogCQlpZiAoIWNvbW1pdCkKIAkJCXJl dHVybiAtRU5PTUVNOwpAQCAtMTQzNyw3ICsxNDM1LDcgQEAgaW50IGRybV9hdG9taWNfaGVscGVy X3NldHVwX2NvbW1pdChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJCS8qIERyaXZl cnMgb25seSBzZW5kIG91dCBldmVudHMgd2hlbiBhdCBsZWFzdCBlaXRoZXIgY3VycmVudCBvcgog CQkgKiBuZXcgQ1JUQyBzdGF0ZSBpcyBhY3RpdmUuIENvbXBsZXRlIHJpZ2h0IGF3YXkgaWYgZXZl cnl0aGluZwogCQkgKiBzdGF5cyBvZmYuICovCi0JCWlmICghY3J0Yy0+c3RhdGUtPmFjdGl2ZSAm JiAhY3J0Y19zdGF0ZS0+YWN0aXZlKSB7CisJCWlmICghb2xkX2NydGNfc3RhdGUtPmFjdGl2ZSAm JiAhY3J0Y19zdGF0ZS0+YWN0aXZlKSB7CiAJCQljb21wbGV0ZV9hbGwoJmNvbW1pdC0+ZmxpcF9k b25lKTsKIAkJCWNvbnRpbnVlOwogCQl9CkBAIC0xNTAzLDcgKzE1MDEsNyBAQCB2b2lkIGRybV9h dG9taWNfaGVscGVyX3dhaXRfZm9yX2RlcGVuZGVuY2llcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqb2xkX3N0YXRlKQogCWludCBpOwogCWxvbmcgcmV0OwogCi0JZm9yX2VhY2hfY3J0Y19pbl9z dGF0ZShvbGRfc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9uZXdfY3J0 Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKIAkJc3Bpbl9sb2Nr KCZjcnRjLT5jb21taXRfbG9jayk7CiAJCWNvbW1pdCA9IHByZWNlZWRpbmdfY29tbWl0KGNydGMp OwogCQlpZiAoY29tbWl0KQpAQCAtMTU1NCwxMyArMTU1MiwxMyBAQCB2b2lkIGRybV9hdG9taWNf aGVscGVyX2NvbW1pdF9od19kb25lKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUp CiAJc3RydWN0IGRybV9jcnRjX2NvbW1pdCAqY29tbWl0OwogCWludCBpOwogCi0JZm9yX2VhY2hf Y3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKKwlmb3JfZWFj aF9uZXdfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKIAkJ Y29tbWl0ID0gb2xkX3N0YXRlLT5jcnRjc1tpXS5jb21taXQ7CiAJCWlmICghY29tbWl0KQogCQkJ Y29udGludWU7CiAKIAkJLyogYmFja2VuZCBtdXN0IGhhdmUgY29uc3VtZWQgYW55IGV2ZW50IGJ5 IG5vdyAqLwotCQlXQVJOX09OKGNydGMtPnN0YXRlLT5ldmVudCk7CisJCVdBUk5fT04oY3J0Y19z dGF0ZS0+ZXZlbnQpOwogCQlzcGluX2xvY2soJmNydGMtPmNvbW1pdF9sb2NrKTsKIAkJY29tcGxl dGVfYWxsKCZjb21taXQtPmh3X2RvbmUpOwogCQlzcGluX3VubG9jaygmY3J0Yy0+Y29tbWl0X2xv Y2spOwpAQCAtMTU4Nyw3ICsxNTg1LDcgQEAgdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRf Y2xlYW51cF9kb25lKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCiAJaW50IGk7 CiAJbG9uZyByZXQ7CiAKLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0Yywg Y3J0Y19zdGF0ZSwgaSkgeworCWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwg Y3J0YywgY3J0Y19zdGF0ZSwgaSkgewogCQljb21taXQgPSBvbGRfc3RhdGUtPmNydGNzW2ldLmNv bW1pdDsKIAkJaWYgKFdBUk5fT04oIWNvbW1pdCkpCiAJCQljb250aW51ZTsKQEAgLTE2NDAsNyAr MTYzOCw3IEBAIGludCBkcm1fYXRvbWljX2hlbHBlcl9wcmVwYXJlX3BsYW5lcyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAogCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwogCWlu dCByZXQsIGksIGo7CiAKLQlmb3JfZWFjaF9wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIHBs YW5lX3N0YXRlLCBpKSB7CisJZm9yX2VhY2hfbmV3X3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFu ZSwgcGxhbmVfc3RhdGUsIGkpIHsKIAkJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVu Y3MgKmZ1bmNzOwogCiAJCWZ1bmNzID0gcGxhbmUtPmhlbHBlcl9wcml2YXRlOwpAQCAtMTY1NSw3 ICsxNjUzLDcgQEAgaW50IGRybV9hdG9taWNfaGVscGVyX3ByZXBhcmVfcGxhbmVzKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCiAJcmV0dXJuIDA7CiAKIGZhaWw6Ci0JZm9yX2VhY2hfcGxhbmVfaW5f c3RhdGUoc3RhdGUsIHBsYW5lLCBwbGFuZV9zdGF0ZSwgaikgeworCWZvcl9lYWNoX25ld19wbGFu ZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIHBsYW5lX3N0YXRlLCBqKSB7CiAJCWNvbnN0IHN0cnVj dCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzICpmdW5jczsKIAogCQlpZiAoaiA+PSBpKQpAQCAtMTcy MiwxNCArMTcyMCwxNCBAQCB2b2lkIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgICAgIHVpbnQzMl90IGZsYWdzKQogewogCXN0cnVj dCBkcm1fY3J0YyAqY3J0YzsKLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRl OworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsICpuZXdfY3J0Y19zdGF0 ZTsKIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKLQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpv bGRfcGxhbmVfc3RhdGU7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRl LCAqbmV3X3BsYW5lX3N0YXRlOwogCWludCBpOwogCWJvb2wgYWN0aXZlX29ubHkgPSBmbGFncyAm IERSTV9QTEFORV9DT01NSVRfQUNUSVZFX09OTFk7CiAJYm9vbCBub19kaXNhYmxlID0gZmxhZ3Mg JiBEUk1fUExBTkVfQ09NTUlUX05PX0RJU0FCTEVfQUZURVJfTU9ERVNFVDsKIAotCWZvcl9lYWNo X2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgaSkgeworCWZv cl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3Rh dGUsIG5ld19jcnRjX3N0YXRlLCBpKSB7CiAJCWNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJf ZnVuY3MgKmZ1bmNzOwogCiAJCWZ1bmNzID0gY3J0Yy0+aGVscGVyX3ByaXZhdGU7CkBAIC0xNzM3 LDEzICsxNzM1LDEzIEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3BsYW5lcyhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCQlpZiAoIWZ1bmNzIHx8ICFmdW5jcy0+YXRvbWljX2JlZ2lu KQogCQkJY29udGludWU7CiAKLQkJaWYgKGFjdGl2ZV9vbmx5ICYmICFjcnRjLT5zdGF0ZS0+YWN0 aXZlKQorCQlpZiAoYWN0aXZlX29ubHkgJiYgIW5ld19jcnRjX3N0YXRlLT5hY3RpdmUpCiAJCQlj b250aW51ZTsKIAogCQlmdW5jcy0+YXRvbWljX2JlZ2luKGNydGMsIG9sZF9jcnRjX3N0YXRlKTsK IAl9CiAKLQlmb3JfZWFjaF9wbGFuZV9pbl9zdGF0ZShvbGRfc3RhdGUsIHBsYW5lLCBvbGRfcGxh bmVfc3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9vbGRuZXdfcGxhbmVfaW5fc3RhdGUob2xkX3N0YXRl LCBwbGFuZSwgb2xkX3BsYW5lX3N0YXRlLCBuZXdfcGxhbmVfc3RhdGUsIGkpIHsKIAkJY29uc3Qg c3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgKmZ1bmNzOwogCQlib29sIGRpc2FibGluZzsK IApAQCAtMTc2Miw3ICsxNzYwLDcgQEAgdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfcGxh bmVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkgKiBDUlRDIHRvIGF2b2lkIHNraXBwaW5n IHBsYW5lcyBiZWluZyBkaXNhYmxlZCBvbiBhbgogCQkJICogYWN0aXZlIENSVEMuCiAJCQkgKi8K LQkJCWlmICghZGlzYWJsaW5nICYmICFwbGFuZV9jcnRjX2FjdGl2ZShwbGFuZS0+c3RhdGUpKQor CQkJaWYgKCFkaXNhYmxpbmcgJiYgIXBsYW5lX2NydGNfYWN0aXZlKG5ld19wbGFuZV9zdGF0ZSkp CiAJCQkJY29udGludWU7CiAJCQlpZiAoZGlzYWJsaW5nICYmICFwbGFuZV9jcnRjX2FjdGl2ZShv bGRfcGxhbmVfc3RhdGUpKQogCQkJCWNvbnRpbnVlOwpAQCAtMTc4MSwxMiArMTc3OSwxMiBAQCB2 b2lkIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKIAkJCQljb250aW51ZTsKIAogCQkJZnVuY3MtPmF0b21pY19kaXNhYmxlKHBsYW5lLCBvbGRf cGxhbmVfc3RhdGUpOwotCQl9IGVsc2UgaWYgKHBsYW5lLT5zdGF0ZS0+Y3J0YyB8fCBkaXNhYmxp bmcpIHsKKwkJfSBlbHNlIGlmIChuZXdfcGxhbmVfc3RhdGUtPmNydGMgfHwgZGlzYWJsaW5nKSB7 CiAJCQlmdW5jcy0+YXRvbWljX3VwZGF0ZShwbGFuZSwgb2xkX3BsYW5lX3N0YXRlKTsKIAkJfQog CX0KIAotCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBvbGRfY3J0Y19z dGF0ZSwgaSkgeworCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0 Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBpKSB7CiAJCWNvbnN0IHN0cnVjdCBk cm1fY3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOwogCiAJCWZ1bmNzID0gY3J0Yy0+aGVscGVyX3By aXZhdGU7CkBAIC0xNzk0LDcgKzE3OTIsNyBAQCB2b2lkIGRybV9hdG9taWNfaGVscGVyX2NvbW1p dF9wbGFuZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJaWYgKCFmdW5jcyB8fCAhZnVuY3Mt PmF0b21pY19mbHVzaCkKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChhY3RpdmVfb25seSAmJiAhY3J0 Yy0+c3RhdGUtPmFjdGl2ZSkKKwkJaWYgKGFjdGl2ZV9vbmx5ICYmICFuZXdfY3J0Y19zdGF0ZS0+ YWN0aXZlKQogCQkJY29udGludWU7CiAKIAkJZnVuY3MtPmF0b21pY19mbHVzaChjcnRjLCBvbGRf Y3J0Y19zdGF0ZSk7CkBAIC0xOTIxLDEyICsxOTE5LDE5IEBAIHZvaWQgZHJtX2F0b21pY19oZWxw ZXJfY2xlYW51cF9wbGFuZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgICAgICBzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQogewogCXN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lOwotCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOworCXN0cnVjdCBkcm1f cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlLCAqbmV3X3BsYW5lX3N0YXRlOwogCWludCBpOwogCi0J Zm9yX2VhY2hfcGxhbmVfaW5fc3RhdGUob2xkX3N0YXRlLCBwbGFuZSwgcGxhbmVfc3RhdGUsIGkp IHsKKwlmb3JfZWFjaF9vbGRuZXdfcGxhbmVfaW5fc3RhdGUob2xkX3N0YXRlLCBwbGFuZSwgcGxh bmVfc3RhdGUsIG5ld19wbGFuZV9zdGF0ZSwgaSkgewogCQljb25zdCBzdHJ1Y3QgZHJtX3BsYW5l X2hlbHBlcl9mdW5jcyAqZnVuY3M7CiAKKwkJLyoKKwkJICogVGhpcyBtaWdodCBiZSBjYWxsZWQg YmVmb3JlIHN3YXBwaW5nIHdoZW4gY29tbWl0IGlzIGFib3J0ZWQsCisJCSAqIGluIHdoaWNoIGNh c2Ugd2UgaGF2ZSB0byBmcmVlIHRoZSBuZXcgc3RhdGUuCisJCSAqLworCQlpZiAocGxhbmVfc3Rh dGUgPT0gcGxhbmUtPnN0YXRlKQorCQkJcGxhbmVfc3RhdGUgPSBuZXdfcGxhbmVfc3RhdGU7CisK IAkJZnVuY3MgPSBwbGFuZS0+aGVscGVyX3ByaXZhdGU7CiAKIAkJaWYgKGZ1bmNzLT5jbGVhbnVw X2ZiKQpAQCAtMTk3MSwxNSArMTk3NiwxNSBAQCB2b2lkIGRybV9hdG9taWNfaGVscGVyX3N3YXBf c3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCWludCBpOwogCWxvbmcgcmV0 OwogCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Ci0Jc3RydWN0IGRybV9jb25uZWN0 b3Jfc3RhdGUgKmNvbm5fc3RhdGU7CisJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9j b25uX3N0YXRlLCAqbmV3X2Nvbm5fc3RhdGU7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwotCXN0 cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUg Km9sZF9jcnRjX3N0YXRlLCAqbmV3X2NydGNfc3RhdGU7CiAJc3RydWN0IGRybV9wbGFuZSAqcGxh bmU7Ci0Jc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7CisJc3RydWN0IGRybV9w bGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlLCAqbmV3X3BsYW5lX3N0YXRlOwogCXN0cnVjdCBk cm1fY3J0Y19jb21taXQgKmNvbW1pdDsKIAogCWlmIChzdGFsbCkgewotCQlmb3JfZWFjaF9jcnRj X2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7CisJCWZvcl9lYWNoX25ld19j cnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewogCQkJc3Bpbl9s b2NrKCZjcnRjLT5jb21taXRfbG9jayk7CiAJCQljb21taXQgPSBsaXN0X2ZpcnN0X2VudHJ5X29y X251bGwoJmNydGMtPmNvbW1pdF9saXN0LAogCQkJCQlzdHJ1Y3QgZHJtX2NydGNfY29tbWl0LCBj b21taXRfZW50cnkpOwpAQCAtMTk5OSwxNiArMjAwNCwyMCBAQCB2b2lkIGRybV9hdG9taWNfaGVs cGVyX3N3YXBfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQl9CiAJfQog Ci0JZm9yX2VhY2hfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IsIGNvbm5fc3Rh dGUsIGkpIHsKLQkJY29ubmVjdG9yLT5zdGF0ZS0+c3RhdGUgPSBzdGF0ZTsKLQkJc3dhcChzdGF0 ZS0+Y29ubmVjdG9yc1tpXS5zdGF0ZSwgY29ubmVjdG9yLT5zdGF0ZSk7Ci0JCWNvbm5lY3Rvci0+ c3RhdGUtPnN0YXRlID0gTlVMTDsKKwlmb3JfZWFjaF9vbGRuZXdfY29ubmVjdG9yX2luX3N0YXRl KHN0YXRlLCBjb25uZWN0b3IsIG9sZF9jb25uX3N0YXRlLCBuZXdfY29ubl9zdGF0ZSwgaSkgewor CQlvbGRfY29ubl9zdGF0ZS0+c3RhdGUgPSBzdGF0ZTsKKwkJbmV3X2Nvbm5fc3RhdGUtPnN0YXRl ID0gTlVMTDsKKworCQlzdGF0ZS0+Y29ubmVjdG9yc1tpXS5zdGF0ZSA9IG9sZF9jb25uX3N0YXRl OworCQljb25uZWN0b3ItPnN0YXRlID0gbmV3X2Nvbm5fc3RhdGU7CiAJfQogCi0JZm9yX2VhY2hf Y3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewotCQljcnRjLT5zdGF0 ZS0+c3RhdGUgPSBzdGF0ZTsKLQkJc3dhcChzdGF0ZS0+Y3J0Y3NbaV0uc3RhdGUsIGNydGMtPnN0 YXRlKTsKLQkJY3J0Yy0+c3RhdGUtPnN0YXRlID0gTlVMTDsKKwlmb3JfZWFjaF9vbGRuZXdfY3J0 Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBp KSB7CisJCW9sZF9jcnRjX3N0YXRlLT5zdGF0ZSA9IHN0YXRlOworCQluZXdfY3J0Y19zdGF0ZS0+ c3RhdGUgPSBOVUxMOworCisJCXN0YXRlLT5jcnRjc1tpXS5zdGF0ZSA9IG9sZF9jcnRjX3N0YXRl OworCQljcnRjLT5zdGF0ZSA9IG5ld19jcnRjX3N0YXRlOwogCiAJCWlmIChzdGF0ZS0+Y3J0Y3Nb aV0uY29tbWl0KSB7CiAJCQlzcGluX2xvY2soJmNydGMtPmNvbW1pdF9sb2NrKTsKQEAgLTIwMjAs MTAgKzIwMjksMTIgQEAgdm9pZCBkcm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0YXRlKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJfQogCX0KIAotCWZvcl9lYWNoX3BsYW5lX2luX3N0 YXRlKHN0YXRlLCBwbGFuZSwgcGxhbmVfc3RhdGUsIGkpIHsKLQkJcGxhbmUtPnN0YXRlLT5zdGF0 ZSA9IHN0YXRlOwotCQlzd2FwKHN0YXRlLT5wbGFuZXNbaV0uc3RhdGUsIHBsYW5lLT5zdGF0ZSk7 Ci0JCXBsYW5lLT5zdGF0ZS0+c3RhdGUgPSBOVUxMOworCWZvcl9lYWNoX29sZG5ld19wbGFuZV9p bl9zdGF0ZShzdGF0ZSwgcGxhbmUsIG9sZF9wbGFuZV9zdGF0ZSwgbmV3X3BsYW5lX3N0YXRlLCBp KSB7CisJCW9sZF9wbGFuZV9zdGF0ZS0+c3RhdGUgPSBzdGF0ZTsKKwkJbmV3X3BsYW5lX3N0YXRl LT5zdGF0ZSA9IE5VTEw7CisKKwkJc3RhdGUtPnBsYW5lc1tpXS5zdGF0ZSA9IG9sZF9wbGFuZV9z dGF0ZTsKKwkJcGxhbmUtPnN0YXRlID0gbmV3X3BsYW5lX3N0YXRlOwogCX0KIH0KIEVYUE9SVF9T WU1CT0woZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZSk7CkBAIC0yMjIxLDcgKzIyMzIsNyBA QCBzdGF0aWMgaW50IHVwZGF0ZV9vdXRwdXRfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlLAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlmb3JfZWFjaF9jb25uZWN0b3Jf aW5fc3RhdGUoc3RhdGUsIGNvbm5lY3RvciwgY29ubl9zdGF0ZSwgaSkgeworCWZvcl9lYWNoX25l d19jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3RvciwgY29ubl9zdGF0ZSwgaSkgewog CQlpZiAoY29ubl9zdGF0ZS0+Y3J0YyA9PSBzZXQtPmNydGMpIHsKIAkJCXJldCA9IGRybV9hdG9t aWNfc2V0X2NydGNfZm9yX2Nvbm5lY3Rvcihjb25uX3N0YXRlLAogCQkJCQkJCQlOVUxMKTsKQEAg LTIyNDMsNyArMjI1NCw3IEBAIHN0YXRpYyBpbnQgdXBkYXRlX291dHB1dF9zdGF0ZShzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJCQlyZXR1cm4gcmV0OwogCX0KIAotCWZvcl9lYWNo X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9u ZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewogCQkvKiBEb24n dCB1cGRhdGUgLT5lbmFibGUgZm9yIHRoZSBDUlRDIGluIHRoZSBzZXRfY29uZmlnIHJlcXVlc3Qs CiAJCSAqIHNpbmNlIGEgbWlzbWF0Y2ggd291bGQgaW5kaWNhdGUgYSBidWcgaW4gdGhlIHVwcGVy IGxheWVycy4KIAkJICogVGhlIGFjdHVhbCBtb2Rlc2V0IGNvZGUgbGF0ZXIgb24gd2lsbCBjYXRj aCBhbnkKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWwK