From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH v2 13/15] drm/i915: dev_priv cleanup in intel_display.c Date: Wed, 16 Nov 2016 12:32:42 +0000 Message-ID: <1479299562-18417-1-git-send-email-tvrtko.ursulin@linux.intel.com> References: <1479286545-15020-14-git-send-email-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id E119A6E685 for ; Wed, 16 Nov 2016 12:32:51 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id a20so10673554wme.2 for ; Wed, 16 Nov 2016 04:32:51 -0800 (PST) In-Reply-To: <1479286545-15020-14-git-send-email-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCnYyOiBSZWJh c2UuCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwu Y29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICB8ICAgMiArLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwgICAzICstCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAxNjcgKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgNzUgaW5zZXJ0aW9ucygrKSwgOTcgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggY2UzNGU3YWI0NGFiLi40NDVmZWM5 YzI4NDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtNDk1LDcgKzQ5NSw3IEBAIHN0YXRp YyB1bnNpZ25lZCBpbnQgaTkxNV92Z2Ffc2V0X2RlY29kZSh2b2lkICpjb29raWUsIGJvb2wgc3Rh dGUpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvb2tpZTsKIAotCWludGVsX21vZGVz ZXRfdmdhX3NldF9zdGF0ZShkZXYsIHN0YXRlKTsKKwlpbnRlbF9tb2Rlc2V0X3ZnYV9zZXRfc3Rh dGUodG9faTkxNShkZXYpLCBzdGF0ZSk7CiAJaWYgKHN0YXRlKQogCQlyZXR1cm4gVkdBX1JTUkNf TEVHQUNZX0lPIHwgVkdBX1JTUkNfTEVHQUNZX01FTSB8CiAJCSAgICAgICBWR0FfUlNSQ19OT1JN QUxfSU8gfCBWR0FfUlNSQ19OT1JNQUxfTUVNOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXgg NjllMzY1OGYwMGUyLi43MGE3MzZhMDJlMjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAt MzQ4MSw3ICszNDgxLDggQEAgZXh0ZXJuIHZvaWQgaW50ZWxfbW9kZXNldF9nZW1faW5pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KTsKIGV4dGVybiB2b2lkIGludGVsX21vZGVzZXRfY2xlYW51cChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGV4dGVybiBpbnQgaW50ZWxfY29ubmVjdG9yX3JlZ2lz dGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICopOwogZXh0ZXJuIHZvaWQgaW50ZWxfY29ubmVjdG9y X3VucmVnaXN0ZXIoc3RydWN0IGRybV9jb25uZWN0b3IgKik7Ci1leHRlcm4gaW50IGludGVsX21v ZGVzZXRfdmdhX3NldF9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sIHN0YXRlKTsK K2V4dGVybiBpbnQgaW50ZWxfbW9kZXNldF92Z2Ffc2V0X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKKwkJCQkgICAgICAgYm9vbCBzdGF0ZSk7CiBleHRlcm4gdm9pZCBp bnRlbF9kaXNwbGF5X3Jlc3VtZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGV4dGVybiB2b2lk IGk5MTVfcmVkaXNhYmxlX3ZnYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwog ZXh0ZXJuIHZvaWQgaTkxNV9yZWRpc2FibGVfdmdhX3Bvd2VyX29uKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXgg ZGExZTI5ZWM5ZWI2Li5lNGYxOTg1YTU1OTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKQEAgLTEwMzUsOSArMTAzNSw4IEBAIGVudW0gdHJhbnNjb2RlciBpbnRlbF9waXBlX3Rv X2NwdV90cmFuc2NvZGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlyZXR1 cm4gY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKIH0KIAotc3RhdGljIGJvb2wgcGlwZV9k c2xfc3RvcHBlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSkKK3N0YXRp YyBib29sIHBpcGVfZHNsX3N0b3BwZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCBlbnVtIHBpcGUgcGlwZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGRldik7CiAJaTkxNV9yZWdfdCByZWcgPSBQSVBFRFNMKHBpcGUpOwogCXUzMiBs aW5lMSwgbGluZTI7CiAJdTMyIGxpbmVfbWFzazsKQEAgLTEwNzIsMTIgKzEwNzEsMTEgQEAgc3Rh dGljIGJvb2wgcGlwZV9kc2xfc3RvcHBlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBp cGUgcGlwZSkKICAqLwogc3RhdGljIHZvaWQgaW50ZWxfd2FpdF9mb3JfcGlwZV9vZmYoc3RydWN0 IGludGVsX2NydGMgKmNydGMpCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJh c2UuZGV2OwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2 KTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJh c2UuZGV2KTsKIAllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBjcnRjLT5jb25maWct PmNwdV90cmFuc2NvZGVyOwogCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKIAotCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g NCkgewogCQlpOTE1X3JlZ190IHJlZyA9IFBJUEVDT05GKGNwdV90cmFuc2NvZGVyKTsKIAogCQkv KiBXYWl0IGZvciB0aGUgUGlwZSBTdGF0ZSB0byBnbyBvZmYgKi8KQEAgLTEwODcsNyArMTA4NSw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX3dhaXRfZm9yX3BpcGVfb2ZmKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjKQogCQkJV0FSTigxLCAicGlwZV9vZmYgd2FpdCB0aW1lZCBvdXRcbiIpOwogCX0gZWxz ZSB7CiAJCS8qIFdhaXQgZm9yIHRoZSBkaXNwbGF5IGxpbmUgdG8gc2V0dGxlICovCi0JCWlmICh3 YWl0X2ZvcihwaXBlX2RzbF9zdG9wcGVkKGRldiwgcGlwZSksIDEwMCkpCisJCWlmICh3YWl0X2Zv cihwaXBlX2RzbF9zdG9wcGVkKGRldl9wcml2LCBwaXBlKSwgMTAwKSkKIAkJCVdBUk4oMSwgInBp cGVfb2ZmIHdhaXQgdGltZWQgb3V0XG4iKTsKIAl9CiB9CkBAIC0xMjkzLDExICsxMjkxLDEwIEBA IHN0YXRpYyB2b2lkIGFzc2VydF9wbGFuZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiBzdGF0aWMgdm9pZCBhc3NlcnRfcGxhbmVzX2Rpc2FibGVkKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAkJCQkgICBlbnVtIHBpcGUgcGlwZSkKIHsKLQlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gJmRldl9wcml2LT5kcm07CiAJaW50IGk7CiAKIAkvKiBQcmltYXJ5IHBs YW5lcyBhcmUgZml4ZWQgdG8gcGlwZXMgb24gZ2VuNCsgKi8KLQlpZiAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPj0gNCkgeworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKIAkJdTMyIHZh bCA9IEk5MTVfUkVBRChEU1BDTlRSKHBpcGUpKTsKIAkJSTkxNV9TVEFURV9XQVJOKHZhbCAmIERJ U1BMQVlfUExBTkVfRU5BQkxFLAogCQkgICAgICJwbGFuZSAlYyBhc3NlcnRpb24gZmFpbHVyZSwg c2hvdWxkIGJlIGRpc2FibGVkIGJ1dCBub3RcbiIsCkBAIC0xMzE5LDEwICsxMzE2LDkgQEAgc3Rh dGljIHZvaWQgYXNzZXJ0X3BsYW5lc19kaXNhYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCiBzdGF0aWMgdm9pZCBhc3NlcnRfc3ByaXRlc19kaXNhYmxlZChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJICAgIGVudW0gcGlwZSBwaXBlKQogewotCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmZGV2X3ByaXYtPmRybTsKIAlpbnQgc3ByaXRlOwogCi0J aWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpIHsKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA5KSB7CiAJCWZvcl9lYWNoX3Nwcml0ZShkZXZfcHJpdiwgcGlwZSwgc3ByaXRlKSB7CiAJ CQl1MzIgdmFsID0gSTkxNV9SRUFEKFBMQU5FX0NUTChwaXBlLCBzcHJpdGUpKTsKIAkJCUk5MTVf U1RBVEVfV0FSTih2YWwgJiBQTEFORV9DVExfRU5BQkxFLApAQCAtMTMzNiwxMiArMTMzMiwxMiBA QCBzdGF0aWMgdm9pZCBhc3NlcnRfc3ByaXRlc19kaXNhYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCiAJCQkgICAgICJzcHJpdGUgJWMgYXNzZXJ0aW9uIGZhaWx1cmUsIHNo b3VsZCBiZSBvZmYgb24gcGlwZSAlYyBidXQgaXMgc3RpbGwgYWN0aXZlXG4iLAogCQkJICAgICBz cHJpdGVfbmFtZShwaXBlLCBzcHJpdGUpLCBwaXBlX25hbWUocGlwZSkpOwogCQl9Ci0JfSBlbHNl IGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3KSB7CisJfSBlbHNlIGlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDcpIHsKIAkJdTMyIHZhbCA9IEk5MTVfUkVBRChTUFJDVEwocGlwZSkpOwog CQlJOTE1X1NUQVRFX1dBUk4odmFsICYgU1BSSVRFX0VOQUJMRSwKIAkJICAgICAic3ByaXRlICVj IGFzc2VydGlvbiBmYWlsdXJlLCBzaG91bGQgYmUgb2ZmIG9uIHBpcGUgJWMgYnV0IGlzIHN0aWxs IGFjdGl2ZVxuIiwKIAkJICAgICBwbGFuZV9uYW1lKHBpcGUpLCBwaXBlX25hbWUocGlwZSkpOwot CX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSkgeworCX0gZWxzZSBpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA1KSB7CiAJCXUzMiB2YWwgPSBJOTE1X1JFQUQoRFZTQ05UUihw aXBlKSk7CiAJCUk5MTVfU1RBVEVfV0FSTih2YWwgJiBEVlNfRU5BQkxFLAogCQkgICAgICJzcHJp dGUgJWMgYXNzZXJ0aW9uIGZhaWx1cmUsIHNob3VsZCBiZSBvZmYgb24gcGlwZSAlYyBidXQgaXMg c3RpbGwgYWN0aXZlXG4iLApAQCAtMTU5NSwxMiArMTU5MSwxMiBAQCBzdGF0aWMgdm9pZCBjaHZf ZW5hYmxlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAl9CiB9CiAKLXN0YXRpYyBpbnQg aW50ZWxfbnVtX2R2b19waXBlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQorc3RhdGljIGludCBp bnRlbF9udW1fZHZvX3BpcGVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsK IAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKIAlpbnQgY291bnQgPSAwOwogCi0JZm9yX2VhY2hf aW50ZWxfY3J0YyhkZXYsIGNydGMpIHsKKwlmb3JfZWFjaF9pbnRlbF9jcnRjKCZkZXZfcHJpdi0+ ZHJtLCBjcnRjKSB7CiAJCWNvdW50ICs9IGNydGMtPmJhc2Uuc3RhdGUtPmFjdGl2ZSAmJgogCQkJ aW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9EVk8pOwogCX0K QEAgLTE2MTAsOCArMTYwNiw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfbnVtX2R2b19waXBlcyhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQogCiBzdGF0aWMgdm9pZCBpOXh4X2VuYWJsZV9wbGwoc3RydWN0 IGludGVsX2NydGMgKmNydGMpCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJh c2UuZGV2OwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2 KTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJh c2UuZGV2KTsKIAlpOTE1X3JlZ190IHJlZyA9IERQTEwoY3J0Yy0+cGlwZSk7CiAJdTMyIGRwbGwg PSBjcnRjLT5jb25maWctPmRwbGxfaHdfc3RhdGUuZHBsbDsKIApAQCAtMTYyMiw3ICsxNjE3LDcg QEAgc3RhdGljIHZvaWQgaTl4eF9lbmFibGVfcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQog CQlhc3NlcnRfcGFuZWxfdW5sb2NrZWQoZGV2X3ByaXYsIGNydGMtPnBpcGUpOwogCiAJLyogRW5h YmxlIERWTyAyeCBjbG9jayBvbiBib3RoIFBMTHMgaWYgbmVjZXNzYXJ5ICovCi0JaWYgKElTX0k4 MzAoZGV2X3ByaXYpICYmIGludGVsX251bV9kdm9fcGlwZXMoZGV2KSA+IDApIHsKKwlpZiAoSVNf STgzMChkZXZfcHJpdikgJiYgaW50ZWxfbnVtX2R2b19waXBlcyhkZXZfcHJpdikgPiAwKSB7CiAJ CS8qCiAJCSAqIEl0IGFwcGVhcnMgdG8gYmUgaW1wb3J0YW50IHRoYXQgd2UgZG9uJ3QgZW5hYmxl IHRoaXMKIAkJICogZm9yIHRoZSBjdXJyZW50IHBpcGUgYmVmb3JlIG90aGVyd2lzZSBjb25maWd1 cmluZyB0aGUKQEAgLTE2NDcsNyArMTY0Miw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfZW5hYmxlX3Bs bChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAlQT1NUSU5HX1JFQUQocmVnKTsKIAl1ZGVsYXko MTUwKTsKIAotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7CisJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gNCkgewogCQlJOTE1X1dSSVRFKERQTExfTUQoY3J0Yy0+cGlwZSksCiAJ CQkgICBjcnRjLT5jb25maWctPmRwbGxfaHdfc3RhdGUuZHBsbF9tZCk7CiAJfSBlbHNlIHsKQEAg LTE2ODIsMTQgKzE2NzcsMTMgQEAgc3RhdGljIHZvaWQgaTl4eF9lbmFibGVfcGxsKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjKQogICovCiBzdGF0aWMgdm9pZCBpOXh4X2Rpc2FibGVfcGxsKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5i YXNlLmRldjsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRl dik7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5i YXNlLmRldik7CiAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwogCiAJLyogRGlzYWJsZSBE Vk8gMnggY2xvY2sgb24gYm90aCBQTExzIGlmIG5lY2Vzc2FyeSAqLwogCWlmIChJU19JODMwKGRl dl9wcml2KSAmJgogCSAgICBpbnRlbF9jcnRjX2hhc190eXBlKGNydGMtPmNvbmZpZywgSU5URUxf T1VUUFVUX0RWTykgJiYKLQkgICAgIWludGVsX251bV9kdm9fcGlwZXMoZGV2KSkgeworCSAgICAh aW50ZWxfbnVtX2R2b19waXBlcyhkZXZfcHJpdikpIHsKIAkJSTkxNV9XUklURShEUExMKFBJUEVf QiksCiAJCQkgICBJOTE1X1JFQUQoRFBMTChQSVBFX0IpKSAmIH5EUExMX0RWT18yWF9NT0RFKTsK IAkJSTkxNV9XUklURShEUExMKFBJUEVfQSksCkBAIC0zMDA0LDggKzI5OTgsNyBAQCBzdGF0aWMg dm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnks CiAJCQkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJ CQkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsK LQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcHJpbWFyeS0+ZGV2OwotCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHByaW1hcnktPmRldik7CiAJc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7CiAJ c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKIAlpbnQg cGxhbmUgPSBpbnRlbF9jcnRjLT5wbGFuZTsKQEAgLTMwMjAsNyArMzAxMyw3IEBAIHN0YXRpYyB2 b2lkIGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSwK IAogCWRzcGNudHIgfD0gRElTUExBWV9QTEFORV9FTkFCTEU7CiAKLQlpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPCA0KSB7CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0KSB7CiAJCWlmIChp bnRlbF9jcnRjLT5waXBlID09IFBJUEVfQikKIAkJCWRzcGNudHIgfD0gRElTUFBMQU5FX1NFTF9Q SVBFX0I7CiAKQEAgLTMwODAsNyArMzA3Myw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3By aW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSwKIAogCWludGVsX2FkZF9mYl9v ZmZzZXRzKCZ4LCAmeSwgcGxhbmVfc3RhdGUsIDApOwogCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+ Z2VuID49IDQpCisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkKIAkJaW50ZWxfY3J0Yy0+ ZHNwYWRkcl9vZmZzZXQgPQogCQkJaW50ZWxfY29tcHV0ZV90aWxlX29mZnNldCgmeCwgJnksIHBs YW5lX3N0YXRlLCAwKTsKIApAQCAtMzA5Myw3ICszMDg2LDcgQEAgc3RhdGljIHZvaWQgaTl4eF91 cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5LAogCiAJbGluZWFy X29mZnNldCA9IGludGVsX2ZiX3h5X3RvX2xpbmVhcih4LCB5LCBwbGFuZV9zdGF0ZSwgMCk7CiAK LQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0KQorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp IDwgNCkKIAkJaW50ZWxfY3J0Yy0+ZHNwYWRkcl9vZmZzZXQgPSBsaW5lYXJfb2Zmc2V0OwogCiAJ aW50ZWxfY3J0Yy0+YWRqdXN0ZWRfeCA9IHg7CkBAIC0zMTAyLDcgKzMwOTUsNyBAQCBzdGF0aWMg dm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnks CiAJSTkxNV9XUklURShyZWcsIGRzcGNudHIpOwogCiAJSTkxNV9XUklURShEU1BTVFJJREUocGxh bmUpLCBmYi0+cGl0Y2hlc1swXSk7Ci0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsK KwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7CiAJCUk5MTVfV1JJVEUoRFNQU1VSRihw bGFuZSksCiAJCQkgICBpbnRlbF9mYl9ndHRfb2Zmc2V0KGZiLCByb3RhdGlvbikgKwogCQkJICAg aW50ZWxfY3J0Yy0+ZHNwYWRkcl9vZmZzZXQpOwpAQCAtMzY4MCw4ICszNjczLDcgQEAgc3RhdGlj IGJvb2wgaW50ZWxfY3J0Y19oYXNfcGVuZGluZ19mbGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK IHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKIAkJCQkgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSkK IHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Ci0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwogCXN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyA9CiAJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0 Yy0+YmFzZS5zdGF0ZSk7CiAKQEAgLTM3MDYsNyArMzY5OCw3IEBAIHN0YXRpYyB2b2lkIGludGVs X3VwZGF0ZV9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJICAgKHBpcGVf Y29uZmlnLT5waXBlX3NyY19oIC0gMSkpOwogCiAJLyogb24gc2t5bGFrZSB0aGlzIGlzIGRvbmUg YnkgZGV0YWNoaW5nIHNjYWxlcnMgKi8KLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkg eworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKIAkJc2tsX2RldGFjaF9zY2FsZXJz KGNydGMpOwogCiAJCWlmIChwaXBlX2NvbmZpZy0+cGNoX3BmaXQuZW5hYmxlZCkKQEAgLTU0MDYs OCArNTM5OCw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19lbmFibGUoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAogCQkJCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpv bGRfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjID0gcGlwZV9jb25maWctPmJhc2Uu Y3J0YzsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OwotCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmRldik7CiAJc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwogCWludCBwaXBlID0gaW50ZWxf Y3J0Yy0+cGlwZSwgaHN3X3dvcmthcm91bmRfcGlwZTsKIAllbnVtIHRyYW5zY29kZXIgY3B1X3Ry YW5zY29kZXIgPSBpbnRlbF9jcnRjLT5jb25maWctPmNwdV90cmFuc2NvZGVyOwpAQCAtNTQ2Nyw3 ICs1NDU4LDcgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCiAJaWYgKCF0cmFuc2NvZGVyX2lzX2RzaShjcHVfdHJh bnNjb2RlcikpCiAJCWludGVsX2RkaV9lbmFibGVfcGlwZV9jbG9jayhpbnRlbF9jcnRjKTsKIAot CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDkpCiAJCXNreWxha2VfcGZpdF9lbmFibGUoaW50ZWxfY3J0Yyk7CiAJZWxzZQogCQlpcm9u bGFrZV9wZml0X2VuYWJsZShpbnRlbF9jcnRjKTsKQEAgLTU2MDAsOCArNTU5MSw3IEBAIHN0YXRp YyB2b2lkIGhhc3dlbGxfY3J0Y19kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRf Y3J0Y19zdGF0ZSwKIAkJCQkgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKIHsK IAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBvbGRfY3J0Y19zdGF0ZS0+YmFzZS5jcnRjOwotCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CiAJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2Nv ZGVyID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKIApAQCAtNTYyNCw3ICs1 NjE0LDcgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2Rpc2FibGUoc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAogCWlmICghdHJhbnNjb2Rlcl9pc19kc2koY3B1X3Ry YW5zY29kZXIpKQogCQlpbnRlbF9kZGlfZGlzYWJsZV90cmFuc2NvZGVyX2Z1bmMoZGV2X3ByaXYs IGNwdV90cmFuc2NvZGVyKTsKIAotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQorCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCiAJCXNreWxha2Vfc2NhbGVyX2Rpc2FibGUoaW50 ZWxfY3J0Yyk7CiAJZWxzZQogCQlpcm9ubGFrZV9wZml0X2Rpc2FibGUoaW50ZWxfY3J0YywgZmFs c2UpOwpAQCAtNzE5Myw3ICs3MTgzLDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX2NvbXB1dGVf Y29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7 CiAJaW50IGNsb2NrX2xpbWl0ID0gZGV2X3ByaXYtPm1heF9kb3RjbGtfZnJlcTsKIAotCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA8IDQpIHsKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQp IHsKIAkJY2xvY2tfbGltaXQgPSBkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEgKiA5IC8gMTA7CiAK IAkJLyoKQEAgLTc3ODcsMTIgKzc3NzcsMTEgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3B1X3RyYW5z Y29kZXJfc2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCQkJIHN0cnVjdCBpbnRl bF9saW5rX21fbiAqbV9uLAogCQkJCQkgc3RydWN0IGludGVsX2xpbmtfbV9uICptMl9uMikKIHsK LQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Ci0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwogCWludCBwaXBlID0g Y3J0Yy0+cGlwZTsKIAllbnVtIHRyYW5zY29kZXIgdHJhbnNjb2RlciA9IGNydGMtPmNvbmZpZy0+ Y3B1X3RyYW5zY29kZXI7CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSkgeworCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKIAkJSTkxNV9XUklURShQSVBFX0RBVEFfTTEo dHJhbnNjb2RlciksIFRVX1NJWkUobV9uLT50dSkgfCBtX24tPmdtY2hfbSk7CiAJCUk5MTVfV1JJ VEUoUElQRV9EQVRBX04xKHRyYW5zY29kZXIpLCBtX24tPmdtY2hfbik7CiAJCUk5MTVfV1JJVEUo UElQRV9MSU5LX00xKHRyYW5zY29kZXIpLCBtX24tPmxpbmtfbSk7CkBAIC04MjQ2LDggKzgyMzUs NyBAQCBzdGF0aWMgdm9pZCBpOHh4X2NvbXB1dGVfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YywKIAogc3RhdGljIHZvaWQgaW50ZWxfc2V0X3BpcGVfdGltaW5ncyhzdHJ1Y3QgaW50ZWxfY3J0 YyAqaW50ZWxfY3J0YykKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfY3J0Yy0+ YmFzZS5kZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShk ZXYpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxf Y3J0Yy0+YmFzZS5kZXYpOwogCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKIAll bnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBpbnRlbF9jcnRjLT5jb25maWctPmNwdV90 cmFuc2NvZGVyOwogCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2Rl ID0gJmludGVsX2NydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwpAQCAtODI3Myw3ICs4 MjYxLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2V0X3BpcGVfdGltaW5ncyhzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YykKIAkJCXZzeW5jc2hpZnQgKz0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19o dG90YWw7CiAJfQogCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID4gMykKKwlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+IDMpCiAJCUk5MTVfV1JJVEUoVlNZTkNTSElGVChjcHVfdHJhbnNjb2Rl ciksIHZzeW5jc2hpZnQpOwogCiAJSTkxNV9XUklURShIVE9UQUwoY3B1X3RyYW5zY29kZXIpLApA QCAtODM5Niw4ICs4Mzg0LDcgQEAgdm9pZCBpbnRlbF9tb2RlX2Zyb21fcGlwZV9jb25maWcoc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCiAKIHN0YXRpYyB2b2lkIGk5eHhfc2V0X3BpcGVj b25mKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQogewotCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShpbnRlbF9jcnRjLT5iYXNlLmRldik7CiAJdWludDMyX3QgcGlwZWNvbmY7 CiAKIAlwaXBlY29uZiA9IDA7CkBAIC04NDQzLDcgKzg0MzAsNyBAQCBzdGF0aWMgdm9pZCBpOXh4 X3NldF9waXBlY29uZihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKIAl9CiAKIAlpZiAo aW50ZWxfY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9G TEFHX0lOVEVSTEFDRSkgewotCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0IHx8CisJCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCB8fAogCQkgICAgaW50ZWxfY3J0Y19oYXNfdHlwZShp bnRlbF9jcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9TRFZPKSkKIAkJCXBpcGVjb25mIHw9IFBJ UEVDT05GX0lOVEVSTEFDRV9XX0ZJRUxEX0lORElDQVRJT047CiAJCWVsc2UKQEAgLTg2NTEsOCAr ODYzOCw3IEBAIHN0YXRpYyBpbnQgdmx2X2NydGNfY29tcHV0ZV9jbG9jayhzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YywKIHN0YXRpYyB2b2lkIGk5eHhfZ2V0X3BmaXRfY29uZmlnKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAogCQkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcp CiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OwotCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKIAl1aW50MzJf dCB0bXA7CiAKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSAzICYmCkBAIC04NjY0LDcgKzg2 NTAsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2dldF9wZml0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKIAkJcmV0dXJuOwogCiAJLyogQ2hlY2sgd2hldGhlciB0aGUgcGZpdCBpcyBhdHRh Y2hlZCB0byBvdXIgcGlwZS4gKi8KLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0KSB7CisJ aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0KSB7CiAJCWlmIChjcnRjLT5waXBlICE9IFBJUEVf QikKIAkJCXJldHVybjsKIAl9IGVsc2UgewpAQCAtODcyOCw3ICs4NzE0LDcgQEAgaTl4eF9nZXRf aW5pdGlhbF9wbGFuZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAKIAlmYiA9ICZp bnRlbF9mYi0+YmFzZTsKIAotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7CisJaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewogCQlpZiAodmFsICYgRElTUFBMQU5FX1RJTEVE KSB7CiAJCQlwbGFuZV9jb25maWctPnRpbGluZyA9IEk5MTVfVElMSU5HX1g7CiAJCQlmYi0+bW9k aWZpZXJbMF0gPSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDsKQEAgLTg3NDAsNyArODcyNiw3IEBA IGk5eHhfZ2V0X2luaXRpYWxfcGxhbmVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAog CWZiLT5waXhlbF9mb3JtYXQgPSBmb3VyY2M7CiAJZmItPmJpdHNfcGVyX3BpeGVsID0gZHJtX2Zv cm1hdF9wbGFuZV9jcHAoZm91cmNjLCAwKSAqIDg7CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5n ZW4gPj0gNCkgeworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKIAkJaWYgKHBsYW5l X2NvbmZpZy0+dGlsaW5nKQogCQkJb2Zmc2V0ID0gSTkxNV9SRUFEKERTUFRJTEVPRkYocGxhbmUp KTsKIAkJZWxzZQpAQCAtODgwOSw4ICs4Nzk1LDcgQEAgc3RhdGljIHZvaWQgY2h2X2NydGNfY2xv Y2tfZ2V0KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogc3RhdGljIGJvb2wgaTl4eF9nZXRfcGlw ZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCQkJIHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpwaXBlX2NvbmZpZykKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ YmFzZS5kZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShk ZXYpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ YmFzZS5kZXYpOwogCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gcG93ZXJfZG9tYWlu OwogCXVpbnQzMl90IHRtcDsKIAlib29sIHJldDsKQEAgLTg4NDksNyArODgzNCw3IEBAIHN0YXRp YyBib29sIGk5eHhfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCSAg ICAodG1wICYgUElQRUNPTkZfQ09MT1JfUkFOR0VfU0VMRUNUKSkKIAkJcGlwZV9jb25maWctPmxp bWl0ZWRfY29sb3JfcmFuZ2UgPSB0cnVlOwogCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwg NCkKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpCiAJCXBpcGVfY29uZmlnLT5kb3VibGVf d2lkZSA9IHRtcCAmIFBJUEVDT05GX0RPVUJMRV9XSURFOwogCiAJaW50ZWxfZ2V0X3BpcGVfdGlt aW5ncyhjcnRjLCBwaXBlX2NvbmZpZyk7CkBAIC04ODU3LDcgKzg4NDIsNyBAQCBzdGF0aWMgYm9v bCBpOXh4X2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAogCWk5eHhf Z2V0X3BmaXRfY29uZmlnKGNydGMsIHBpcGVfY29uZmlnKTsKIAotCWlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA+PSA0KSB7CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewogCQkvKiBO byB3YXkgdG8gcmVhZCBpdCBvdXQgb24gcGlwZXMgQiBhbmQgQyAqLwogCQlpZiAoSVNfQ0hFUlJZ VklFVyhkZXZfcHJpdikgJiYgY3J0Yy0+cGlwZSAhPSBQSVBFX0EpCiAJCQl0bXAgPSBkZXZfcHJp di0+Y2h2X2RwbGxfbWRbY3J0Yy0+cGlwZV07CkBAIC05NjU0LDExICs5NjM5LDEwIEBAIHN0YXRp YyB2b2lkIGludGVsX2NwdV90cmFuc2NvZGVyX2dldF9tX24oc3RydWN0IGludGVsX2NydGMgKmNy dGMsCiAJCQkJCSBzdHJ1Y3QgaW50ZWxfbGlua19tX24gKm1fbiwKIAkJCQkJIHN0cnVjdCBpbnRl bF9saW5rX21fbiAqbTJfbjIpCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJh c2UuZGV2OwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2 KTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJh c2UuZGV2KTsKIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CiAKLQlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPj0gNSkgeworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKIAkJ bV9uLT5saW5rX20gPSBJOTE1X1JFQUQoUElQRV9MSU5LX00xKHRyYW5zY29kZXIpKTsKIAkJbV9u LT5saW5rX24gPSBJOTE1X1JFQUQoUElQRV9MSU5LX04xKHRyYW5zY29kZXIpKTsKIAkJbV9uLT5n bWNoX20gPSBJOTE1X1JFQUQoUElQRV9EQVRBX00xKHRyYW5zY29kZXIpKQpAQCAtOTY3MCw3ICs5 NjU0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3B1X3RyYW5zY29kZXJfZ2V0X21fbihzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKIAkJICogZ2VuIDwgOCkgYW5kIGlmIERSUlMgaXMgc3VwcG9ydGVk ICh0byBtYWtlIHN1cmUgdGhlCiAJCSAqIHJlZ2lzdGVycyBhcmUgbm90IHVubmVjZXNzYXJpbHkg cmVhZCkuCiAJCSAqLwotCQlpZiAobTJfbjIgJiYgSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA4ICYm CisJCWlmIChtMl9uMiAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOCAmJgogCQkJY3J0Yy0+Y29u ZmlnLT5oYXNfZHJycykgewogCQkJbTJfbjItPmxpbmtfbSA9IEk5MTVfUkVBRChQSVBFX0xJTktf TTIodHJhbnNjb2RlcikpOwogCQkJbTJfbjItPmxpbmtfbiA9CUk5MTVfUkVBRChQSVBFX0xJTktf TjIodHJhbnNjb2RlcikpOwpAQCAtOTg3Miw3ICs5ODU2LDcgQEAgaXJvbmxha2VfZ2V0X2luaXRp YWxfcGxhbmVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCiAJZmIgPSAmaW50ZWxf ZmItPmJhc2U7CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgeworCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDQpIHsKIAkJaWYgKHZhbCAmIERJU1BQTEFORV9USUxFRCkgewog CQkJcGxhbmVfY29uZmlnLT50aWxpbmcgPSBJOTE1X1RJTElOR19YOwogCQkJZmItPm1vZGlmaWVy WzBdID0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ7CkBAIC0xMDY2Miw4ICsxMDY0Niw3IEBAIHN0 YXRpYyBib29sIGJ4dF9nZXRfZHNpX3RyYW5zY29kZXJfc3RhdGUoc3RydWN0IGludGVsX2NydGMg KmNydGMsCiBzdGF0aWMgdm9pZCBoYXN3ZWxsX2dldF9kZGlfcG9ydF9zdGF0ZShzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YywKIAkJCQkgICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVf Y29uZmlnKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7CiAJ c3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGw7CiAJZW51bSBwb3J0IHBvcnQ7CiAJdWludDMy X3QgdG1wOwpAQCAtMTA2OTAsNyArMTA2NzMsNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2dldF9k ZGlfcG9ydF9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkgKiBEREkgRS4gU28ganVz dCBjaGVjayB3aGV0aGVyIHRoaXMgcGlwZSBpcyB3aXJlZCB0byBEREkgRSBhbmQgd2hldGhlcgog CSAqIHRoZSBQQ0ggdHJhbnNjb2RlciBpcyBvbi4KIAkgKi8KLQlpZiAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPCA5ICYmCisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA5ICYmCiAJICAgIChwb3J0 ID09IFBPUlRfRSkgJiYgSTkxNV9SRUFEKExQVF9UUkFOU0NPTkYpICYgVFJBTlNfRU5BQkxFKSB7 CiAJCXBpcGVfY29uZmlnLT5oYXNfcGNoX2VuY29kZXIgPSB0cnVlOwogCkBAIC0xMDcwNSw4ICsx MDY4OCw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfZ2V0X2RkaV9wb3J0X3N0YXRlKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAogc3RhdGljIGJvb2wgaGFzd2VsbF9nZXRfcGlwZV9jb25maWcoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCiAJCQkJICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpw aXBlX2NvbmZpZykKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7 Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYp OwogCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gcG93ZXJfZG9tYWluOwogCXVuc2ln bmVkIGxvbmcgcG93ZXJfZG9tYWluX21hc2s7CiAJYm9vbCBhY3RpdmU7CkBAIC0xMDczOSw3ICsx MDcyMSw3IEBAIHN0YXRpYyBib29sIGhhc3dlbGxfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAogCXBpcGVfY29uZmlnLT5nYW1tYV9tb2RlID0KIAkJSTkxNV9SRUFEKEdB TU1BX01PREUoY3J0Yy0+cGlwZSkpICYgR0FNTUFfTU9ERV9NT0RFX01BU0s7CiAKLQlpZiAoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgeworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkp IHsKIAkJc2tsX2luaXRfc2NhbGVycyhkZXZfcHJpdiwgY3J0YywgcGlwZV9jb25maWcpOwogCiAJ CXBpcGVfY29uZmlnLT5zY2FsZXJfc3RhdGUuc2NhbGVyX2lkID0gLTE7CkBAIC0xMDc0OSw3ICsx MDczMSw3IEBAIHN0YXRpYyBib29sIGhhc3dlbGxfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAogCXBvd2VyX2RvbWFpbiA9IFBPV0VSX0RPTUFJTl9QSVBFX1BBTkVMX0ZJ VFRFUihjcnRjLT5waXBlKTsKIAlpZiAoaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxl ZChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKSkgewogCQlwb3dlcl9kb21haW5fbWFzayB8PSBCSVQo cG93ZXJfZG9tYWluKTsKLQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpCisJCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCiAJCQlza3lsYWtlX2dldF9wZml0X2NvbmZpZyhjcnRj LCBwaXBlX2NvbmZpZyk7CiAJCWVsc2UKIAkJCWlyb25sYWtlX2dldF9wZml0X2NvbmZpZyhjcnRj LCBwaXBlX2NvbmZpZyk7CkBAIC0xMjE4MSw3ICsxMjE2Myw3IEBAIHN0YXRpYyBpbnQgaW50ZWxf Y3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCSAqIFRJTEVPRkYvTElOT0ZG IHJlZ2lzdGVycyBjYW4ndCBiZSBjaGFuZ2VkIHZpYSBNSSBkaXNwbGF5IGZsaXBzLgogCSAqIE5v dGUgdGhhdCBwaXRjaCBjaGFuZ2VzIGNvdWxkIGFsc28gYWZmZWN0IHRoZXNlIHJlZ2lzdGVyLgog CSAqLwotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+IDMgJiYKKwlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+IDMgJiYKIAkgICAgKGZiLT5vZmZzZXRzWzBdICE9IGNydGMtPnByaW1hcnktPmZi LT5vZmZzZXRzWzBdIHx8CiAJICAgICBmYi0+cGl0Y2hlc1swXSAhPSBjcnRjLT5wcmltYXJ5LT5m Yi0+cGl0Y2hlc1swXSkpCiAJCXJldHVybiAtRUlOVkFMOwpAQCAtMTIyNTYsNyArMTIyMzgsNyBA QCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK IAkJCWVuZ2luZSA9IE5VTEw7CiAJfSBlbHNlIGlmIChJU19JVllCUklER0UoZGV2X3ByaXYpIHx8 IElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7CiAJCWVuZ2luZSA9IGRldl9wcml2LT5lbmdpbmVbQkNT XTsKLQl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDcpIHsKKwl9IGVsc2UgaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykgewogCQllbmdpbmUgPSBpOTE1X2dlbV9vYmplY3Rf bGFzdF93cml0ZV9lbmdpbmUob2JqKTsKIAkJaWYgKGVuZ2luZSA9PSBOVUxMIHx8IGVuZ2luZS0+ aWQgIT0gUkNTKQogCQkJZW5naW5lID0gZGV2X3ByaXYtPmVuZ2luZVtCQ1NdOwpAQCAtMTI1MTMs NyArMTI0OTUsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdlcyhzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAKIAkvKiBQcmUtZ2VuOSBwbGF0Zm9ybXMgbmVl ZCB0d28tc3RlcCB3YXRlcm1hcmsgdXBkYXRlcyAqLwogCWlmICgocGlwZV9jb25maWctPnVwZGF0 ZV93bV9wcmUgfHwgcGlwZV9jb25maWctPnVwZGF0ZV93bV9wb3N0KSAmJgotCSAgICBJTlRFTF9J TkZPKGRldiktPmdlbiA8IDkgJiYgZGV2X3ByaXYtPmRpc3BsYXkub3B0aW1pemVfd2F0ZXJtYXJr cykKKwkgICAgSU5URUxfR0VOKGRldl9wcml2KSA8IDkgJiYgZGV2X3ByaXYtPmRpc3BsYXkub3B0 aW1pemVfd2F0ZXJtYXJrcykKIAkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjX3N0YXRlKS0+d20u bmVlZF9wb3N0dmJsX3VwZGF0ZSA9IHRydWU7CiAKIAlpZiAodmlzaWJsZSB8fCB3YXNfdmlzaWJs ZSkKQEAgLTEyNjE4LDcgKzEyNjAwLDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX2F0b21pY19j aGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCSAqIG9sZCBzdGF0ZSBhbmQgdGhlIG5ldyBz dGF0ZS4gIFdlIGNhbiBwcm9ncmFtIHRoZXNlCiAJCSAqIGltbWVkaWF0ZWx5LgogCQkgKi8KLQkJ cmV0ID0gZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9pbnRlcm1lZGlhdGVfd20oY3J0Yy0+ZGV2 LAorCQlyZXQgPSBkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX2ludGVybWVkaWF0ZV93bShkZXYs CiAJCQkJCQkJCWludGVsX2NydGMsCiAJCQkJCQkJCXBpcGVfY29uZmlnKTsKIAkJaWYgKHJldCkg ewpAQCAtMTI2MzAsNyArMTI2MTIsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfYXRvbWljX2No ZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCXBpcGVfY29uZmlnLT53bS5pbGsuaW50ZXJt ZWRpYXRlID0gcGlwZV9jb25maWctPndtLmlsay5vcHRpbWFsOwogCX0KIAotCWlmIChJTlRFTF9J TkZPKGRldiktPmdlbiA+PSA5KSB7CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewog CQlpZiAobW9kZV9jaGFuZ2VkKQogCQkJcmV0ID0gc2tsX3VwZGF0ZV9zY2FsZXJfY3J0YyhwaXBl X2NvbmZpZyk7CiAKQEAgLTEzMTg3LDEyICsxMzE2OSwxMSBAQCBpbnRlbF9jb21wYXJlX2xpbmtf bV9uKGNvbnN0IHN0cnVjdCBpbnRlbF9saW5rX21fbiAqbV9uLAogfQogCiBzdGF0aWMgYm9vbAot aW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAoraW50ZWxf cGlwZV9jb25maWdfY29tcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ CQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjdXJyZW50X2NvbmZpZywKIAkJCSAgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAogCQkJICBib29sIGFkanVzdCkKIHsKLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJYm9vbCBy ZXQgPSB0cnVlOwogCiAjZGVmaW5lIElOVEVMX0VSUl9PUl9EQkdfS01TKGZtdCwgLi4uKSBcCkBA IC0xMzMxMiw3ICsxMzI5Myw3IEBAIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIAlQSVBFX0NPTkZfQ0hFQ0tfSShsYW5lX2NvdW50KTsKIAlQSVBFX0NP TkZfQ0hFQ0tfWChsYW5lX2xhdF9vcHRpbV9tYXNrKTsKIAotCWlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA8IDgpIHsKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDgpIHsKIAkJUElQRV9DT05G X0NIRUNLX01fTihkcF9tX24pOwogCiAJCWlmIChjdXJyZW50X2NvbmZpZy0+aGFzX2RycnMpCkBA IC0xMzM2MSw3ICsxMzM0Miw3IEBAIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIAogCVBJUEVfQ09ORl9DSEVDS19YKGdtY2hfcGZpdC5jb250cm9sKTsK IAkvKiBwZml0IHJhdGlvcyBhcmUgYXV0b2NvbXB1dGVkIGJ5IHRoZSBodyBvbiBnZW40KyAqLwot CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQpCisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikg PCA0KQogCQlQSVBFX0NPTkZfQ0hFQ0tfWChnbWNoX3BmaXQucGdtX3JhdGlvcyk7CiAJUElQRV9D T05GX0NIRUNLX1goZ21jaF9wZml0Lmx2ZHNfYm9yZGVyX2JpdHMpOwogCkBAIC0xMzQzNiw4ICsx MzQxNyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3BpcGVfY29uZmlnX3Nhbml0eV9jaGVjayhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiBzdGF0aWMgdm9pZCB2ZXJpZnlfd21fc3Rh dGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq bmV3X3N0YXRlKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Ci0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ZGV2KTsKIAlzdHJ1Y3Qg c2tsX2RkYl9hbGxvY2F0aW9uIGh3X2RkYiwgKnN3X2RkYjsKIAlzdHJ1Y3Qgc2tsX3BpcGVfd20g aHdfd20sICpzd193bTsKIAlzdHJ1Y3Qgc2tsX3BsYW5lX3dtICpod19wbGFuZV93bSwgKnN3X3Bs YW5lX3dtOwpAQCAtMTM0NDYsNyArMTM0MjYsNyBAQCBzdGF0aWMgdm9pZCB2ZXJpZnlfd21fc3Rh dGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCWNvbnN0IGVudW0gcGlwZSBwaXBlID0gaW50ZWxf Y3J0Yy0+cGlwZTsKIAlpbnQgcGxhbmUsIGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4X2xl dmVsKGRldl9wcml2KTsKIAotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDkgfHwgIW5ld19z dGF0ZS0+YWN0aXZlKQorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSB8fCAhbmV3X3N0YXRl LT5hY3RpdmUpCiAJCXJldHVybjsKIAogCXNrbF9waXBlX3dtX2dldF9od19zdGF0ZShjcnRjLCAm aHdfd20pOwpAQCAtMTM2NzUsNyArMTM2NTUsNyBAQCB2ZXJpZnlfY3J0Y19zdGF0ZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCiAJaW50ZWxfcGlwZV9jb25maWdfc2FuaXR5X2NoZWNrKGRldl9wcml2 LCBwaXBlX2NvbmZpZyk7CiAKIAlzd19jb25maWcgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMt PnN0YXRlKTsKLQlpZiAoIWludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoZGV2LCBzd19jb25maWcs CisJaWYgKCFpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKGRldl9wcml2LCBzd19jb25maWcsCiAJ CQkJICAgICAgIHBpcGVfY29uZmlnLCBmYWxzZSkpIHsKIAkJSTkxNV9TVEFURV9XQVJOKDEsICJw aXBlIHN0YXRlIGRvZXNuJ3QgbWF0Y2ghXG4iKTsKIAkJaW50ZWxfZHVtcF9waXBlX2NvbmZpZyhp bnRlbF9jcnRjLCBwaXBlX2NvbmZpZywKQEAgLTE0MDk1LDcgKzE0MDc1LDcgQEAgc3RhdGljIGlu dCBpbnRlbF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJfQogCiAJCWlm IChpOTE1LmZhc3Rib290ICYmCi0JCSAgICBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKGRldiwK KwkJICAgIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoZGV2X3ByaXYsCiAJCQkJCXRvX2ludGVs X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpLAogCQkJCQlwaXBlX2NvbmZpZywgdHJ1ZSkpIHsKIAkJ CWNydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCA9IGZhbHNlOwpAQCAtMTU0MjUsMTEgKzE1NDA1LDkg QEAgc3RhdGljIGJvb2wgaGFzX2VkcF9hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIAlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgaW50ZWxfY3J0X3ByZXNlbnQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKK3N0YXRpYyBib29sIGludGVsX2NydF9wcmVzZW50KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Ci0KLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4g Pj0gOSkKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQogCQlyZXR1cm4gZmFsc2U7CiAK IAlpZiAoSVNfSFNXX1VMVChkZXZfcHJpdikgfHwgSVNfQkRXX1VMVChkZXZfcHJpdikpCkBAIC0x NTUwMyw3ICsxNTQ4MSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3NldHVwX291dHB1dHMoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKIAkgKi8KIAlpbnRlbF9sdmRzX2luaXQoZGV2KTsKIAotCWlmIChp bnRlbF9jcnRfcHJlc2VudChkZXYpKQorCWlmIChpbnRlbF9jcnRfcHJlc2VudChkZXZfcHJpdikp CiAJCWludGVsX2NydF9pbml0KGRldik7CiAKIAlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpIHsK QEAgLTE1NzkzLDcgKzE1NzcxLDcgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJc3dpdGNoIChtb2RlX2NtZC0+bW9kaWZpZXJbMF0p IHsKIAljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEOgogCWNhc2UgSTkxNV9GT1JNQVRfTU9E X1lmX1RJTEVEOgotCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA5KSB7CisJCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpIDwgOSkgewogCQkJRFJNX0RFQlVHKCJVbnN1cHBvcnRlZCB0aWxpbmcg MHglbGx4IVxuIiwKIAkJCQkgIG1vZGVfY21kLT5tb2RpZmllclswXSk7CiAJCQlyZXR1cm4gLUVJ TlZBTDsKQEAgLTE1ODU2LDcgKzE1ODM0LDcgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZl cl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJY2FzZSBEUk1fRk9STUFUX0FSR0I4ODg4 OgogCQlicmVhazsKIAljYXNlIERSTV9GT1JNQVRfWFJHQjE1NTU6Ci0JCWlmIChJTlRFTF9JTkZP KGRldiktPmdlbiA+IDMpIHsKKwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPiAzKSB7CiAJCQlE Uk1fREVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsCiAJCQkgICAgICAgICAg ZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0LCAmZm9ybWF0X25hbWUp KTsKIAkJCXJldHVybiAtRUlOVkFMOwpAQCAtMTU4NjQsNyArMTU4NDIsNyBAQCBzdGF0aWMgaW50 IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJYnJlYWs7 CiAJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4OgogCQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2X3By aXYpICYmICFJU19DSEVSUllWSUVXKGRldl9wcml2KSAmJgotCQkgICAgSU5URUxfSU5GTyhkZXYp LT5nZW4gPCA5KSB7CisJCSAgICBJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSkgewogCQkJRFJNX0RF QlVHKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLAogCQkJICAgICAgICAgIGRybV9n ZXRfZm9ybWF0X25hbWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCwgJmZvcm1hdF9uYW1lKSk7CiAJ CQlyZXR1cm4gLUVJTlZBTDsKQEAgLTE1ODczLDcgKzE1ODUxLDcgQEAgc3RhdGljIGludCBpbnRl bF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJY2FzZSBEUk1fRk9S TUFUX1hCR1I4ODg4OgogCWNhc2UgRFJNX0ZPUk1BVF9YUkdCMjEwMTAxMDoKIAljYXNlIERSTV9G T1JNQVRfWEJHUjIxMDEwMTA6Ci0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQpIHsKKwkJ aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0KSB7CiAJCQlEUk1fREVCVUcoInVuc3VwcG9ydGVk IHBpeGVsIGZvcm1hdDogJXNcbiIsCiAJCQkgICAgICAgICAgZHJtX2dldF9mb3JtYXRfbmFtZSht b2RlX2NtZC0+cGl4ZWxfZm9ybWF0LCAmZm9ybWF0X25hbWUpKTsKIAkJCXJldHVybiAtRUlOVkFM OwpAQCAtMTU4OTAsNyArMTU4NjgsNyBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAljYXNlIERSTV9GT1JNQVRfVVlWWToKIAljYXNl IERSTV9GT1JNQVRfWVZZVToKIAljYXNlIERSTV9GT1JNQVRfVllVWToKLQkJaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuIDwgNSkgeworCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDUpIHsKIAkJ CURSTV9ERUJVRygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwKIAkJCSAgICAgICAg ICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQsICZmb3JtYXRfbmFt ZSkpOwogCQkJcmV0dXJuIC1FSU5WQUw7CkBAIC0xNjY2Nyw3ICsxNjY0NSw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX3Nhbml0aXplX2NydGMoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAJLyogV2Ug bmVlZCB0byBzYW5pdGl6ZSB0aGUgcGxhbmUgLT4gcGlwZSBtYXBwaW5nIGZpcnN0IGJlY2F1c2Ug dGhpcyB3aWxsCiAJICogZGlzYWJsZSB0aGUgY3J0YyAoYW5kIGhlbmNlIGNoYW5nZSB0aGUgc3Rh dGUpIGlmIGl0IGlzIHdyb25nLiBOb3RlCiAJICogdGhhdCBnZW40KyBoYXMgYSBmaXhlZCBwbGFu ZSAtPiBwaXBlIG1hcHBpbmcuICAqLwotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQgJiYg IWludGVsX2NoZWNrX3BsYW5lX21hcHBpbmcoY3J0YykpIHsKKwlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA8IDQgJiYgIWludGVsX2NoZWNrX3BsYW5lX21hcHBpbmcoY3J0YykpIHsKIAkJYm9vbCBw bGFuZTsKIAogCQlEUk1fREVCVUdfS01TKCJbQ1JUQzolZDolc10gd3JvbmcgcGxhbmUgY29ubmVj dGlvbiBkZXRlY3RlZCFcbiIsCkBAIC0xNzE3NywxMCArMTcxNTUsOSBAQCB2b2lkIGludGVsX2Nv bm5lY3Rvcl9hdHRhY2hfZW5jb2RlcihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Is CiAvKgogICogc2V0IHZnYSBkZWNvZGUgc3RhdGUgLSB0cnVlID09IGVuYWJsZSBWR0EgZGVjb2Rl CiAgKi8KLWludCBpbnRlbF9tb2Rlc2V0X3ZnYV9zZXRfc3RhdGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgYm9vbCBzdGF0ZSkKK2ludCBpbnRlbF9tb2Rlc2V0X3ZnYV9zZXRfc3RhdGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIHN0YXRlKQogewotCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKLQl1bnNpZ25lZCByZWcgPSBJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA2ID8gU05CX0dNQ0hfQ1RSTCA6IElOVEVMX0dNQ0hfQ1RS TDsKKwl1bnNpZ25lZCByZWcgPSBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYgPyBTTkJfR01DSF9D VFJMIDogSU5URUxfR01DSF9DVFJMOwogCXUxNiBnbWNoX2N0cmw7CiAKIAlpZiAocGNpX3JlYWRf Y29uZmlnX3dvcmQoZGV2X3ByaXYtPmJyaWRnZV9kZXYsIHJlZywgJmdtY2hfY3RybCkpIHsKLS0g CjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK