From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH 12/14] drm/i915: Perform automated conversions for plane uapi/hw split, base -> uapi. Date: Thu, 24 Oct 2019 14:48:03 +0200 Message-ID: <20191024124805.26840-12-maarten.lankhorst@linux.intel.com> References: <20191024124805.26840-1-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id BE0C46E3DB for ; Thu, 24 Oct 2019 12:48:11 +0000 (UTC) In-Reply-To: <20191024124805.26840-1-maarten.lankhorst@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 U3BsaXQgdXAgcGxhbmVfc3RhdGUtPmJhc2UgdG8gdWFwaS4gVGhpcyBpcyBkb25lIHVzaW5nIHRo ZSBmb2xsb3dpbmcgcGF0Y2gsCnJhbiBhZnRlciB0aGUgcHJldmlvdXMgY29tbWl0IHRoYXQgc3Bs aXRzIG91dCBhbnkgaHcgcmVmZXJlbmNlczoKCkBACnN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq VDsKaWRlbnRpZmllciB4OwpAQAotVC0+YmFzZS54CitULT51YXBpLngKCkBACnN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqVDsKQEAKLVQtPmJhc2UKK1QtPnVhcGkKClNpZ25lZC1vZmYtYnk6IE1h YXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ci0tLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuYyAgIHwgICAyICstCiAu Li4vZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljX3BsYW5lLmMgfCAgMjggKy0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jICB8IDI5NiArKysrKysr KystLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmJjLmMgICAg ICB8ICAxMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9vdmVybGF5LmMg IHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jICAg fCAxMTQgKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgICAg ICAgIHwgIDU3ICsrLS0KIDcgZmlsZXMgY2hhbmdlZCwgMjU3IGluc2VydGlvbnMoKyksIDI1NCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMu YwppbmRleCA5YmE1MGZkMTExNmMuLjQ3ODNkN2ZmNGZjZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jCkBAIC0yOTksNyArMjk5LDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfYXRvbWljX3NldHVwX3NjYWxlcihzdHJ1Y3QgaW50ZWxfY3J0Y19zY2FsZXJfc3Rh dGUgKnNjYWxlcl9zdGEKIAlpZiAocGxhbmVfc3RhdGUgJiYgcGxhbmVfc3RhdGUtPmh3LmZiICYm CiAJICAgIHBsYW5lX3N0YXRlLT5ody5mYi0+Zm9ybWF0LT5pc195dXYgJiYKIAkgICAgcGxhbmVf c3RhdGUtPmh3LmZiLT5mb3JtYXQtPm51bV9wbGFuZXMgPiAxKSB7Ci0JCXN0cnVjdCBpbnRlbF9w bGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJ CXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+ dWFwaS5wbGFuZSk7CiAJCWlmIChJU19HRU4oZGV2X3ByaXYsIDkpICYmCiAJCSAgICAhSVNfR0VN SU5JTEFLRShkZXZfcHJpdikpIHsKIAkJCW1vZGUgPSBTS0xfUFNfU0NBTEVSX01PREVfTlYxMjsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljX3Bs YW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pY19wbGFuZS5j CmluZGV4IGZkNWE4MDEyODU5Yy4uZTQwNDRhYmMyZDIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pY19wbGFuZS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljX3BsYW5lLmMKQEAgLTU2LDcgKzU2LDcgQEAg c3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZV9hbGxvYyh2b2lkKQogCQlyZXR1cm4gRVJS X1BUUigtRU5PTUVNKTsKIAl9CiAKLQlfX2RybV9hdG9taWNfaGVscGVyX3BsYW5lX3Jlc2V0KCZw bGFuZS0+YmFzZSwgJnBsYW5lX3N0YXRlLT5iYXNlKTsKKwlfX2RybV9hdG9taWNfaGVscGVyX3Bs YW5lX3Jlc2V0KCZwbGFuZS0+YmFzZSwgJnBsYW5lX3N0YXRlLT51YXBpKTsKIAlwbGFuZV9zdGF0 ZS0+c2NhbGVyX2lkID0gLTE7CiAKIAlyZXR1cm4gcGxhbmU7CkBAIC04OCwxMiArODgsMTIgQEAg aW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQogCWlm ICghaW50ZWxfc3RhdGUpCiAJCXJldHVybiBOVUxMOwogCi0JX19kcm1fYXRvbWljX2hlbHBlcl9w bGFuZV9kdXBsaWNhdGVfc3RhdGUocGxhbmUsICZpbnRlbF9zdGF0ZS0+YmFzZSk7CisJX19kcm1f YXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVfc3RhdGUocGxhbmUsICZpbnRlbF9zdGF0ZS0+ dWFwaSk7CiAKIAlpbnRlbF9zdGF0ZS0+dm1hID0gTlVMTDsKIAlpbnRlbF9zdGF0ZS0+ZmxhZ3Mg PSAwOwogCi0JcmV0dXJuICZpbnRlbF9zdGF0ZS0+YmFzZTsKKwlyZXR1cm4gJmludGVsX3N0YXRl LT51YXBpOwogfQogCiAvKioKQEAgLTExMSw3ICsxMTEsNyBAQCBpbnRlbF9wbGFuZV9kZXN0cm95 X3N0YXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShzdGF0ZSk7CiAJV0FSTl9PTihw bGFuZV9zdGF0ZS0+dm1hKTsKIAotCV9fZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZGVzdHJveV9z dGF0ZSgmcGxhbmVfc3RhdGUtPmJhc2UpOworCV9fZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZGVz dHJveV9zdGF0ZSgmcGxhbmVfc3RhdGUtPnVhcGkpOwogCWtmcmVlKHBsYW5lX3N0YXRlKTsKIH0K IApAQCAtMTIxLDcgKzEyMSw3IEBAIHVuc2lnbmVkIGludCBpbnRlbF9wbGFuZV9kYXRhX3JhdGUo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJY29uc3Qgc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJdW5zaWduZWQgaW50 IGNwcDsKIAotCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKKwlpZiAoIXBsYW5lX3N0 YXRlLT51YXBpLnZpc2libGUpCiAJCXJldHVybiAwOwogCiAJY3BwID0gZmItPmZvcm1hdC0+Y3Bw WzBdOwpAQCAtMTQzLDcgKzE0Myw3IEBAIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2tfd2l0 aF9zdGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfCiAJCQkJCWNv bnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlLAogCQkJCQlzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm5ld19wbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxf cGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnBsYW5l KTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUobmV3X3BsYW5l X3N0YXRlLT51YXBpLnBsYW5lKTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9 IG5ld19wbGFuZV9zdGF0ZS0+aHcuZmI7CiAJaW50IHJldDsKIApAQCAtMTUxLDcgKzE1MSw3IEBA IGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2tfd2l0aF9zdGF0ZShjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfCiAJbmV3X2NydGNfc3RhdGUtPm52MTJfcGxhbmVzICY9 IH5CSVQocGxhbmUtPmlkKTsKIAluZXdfY3J0Y19zdGF0ZS0+YzhfcGxhbmVzICY9IH5CSVQocGxh bmUtPmlkKTsKIAluZXdfY3J0Y19zdGF0ZS0+ZGF0YV9yYXRlW3BsYW5lLT5pZF0gPSAwOwotCW5l d19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlID0gZmFsc2U7CisJbmV3X3BsYW5lX3N0YXRlLT51 YXBpLnZpc2libGUgPSBmYWxzZTsKIAogCWlmICghbmV3X3BsYW5lX3N0YXRlLT5ody5jcnRjICYm ICFvbGRfcGxhbmVfc3RhdGUtPmh3LmNydGMpCiAJCXJldHVybiAwOwpAQCAtMTYxLDE4ICsxNjEs MTggQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jaGVja193aXRoX3N0YXRlKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y18KIAkJcmV0dXJuIHJldDsKIAogCS8qIEZJWE1F IHByZS1nNHggZG9uJ3Qgd29yayBsaWtlIHRoaXMgKi8KLQlpZiAobmV3X3BsYW5lX3N0YXRlLT5i YXNlLnZpc2libGUpCisJaWYgKG5ld19wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQogCQluZXdf Y3J0Y19zdGF0ZS0+YWN0aXZlX3BsYW5lcyB8PSBCSVQocGxhbmUtPmlkKTsKIAotCWlmIChuZXdf cGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSAmJgorCWlmIChuZXdfcGxhbmVfc3RhdGUtPnVhcGku dmlzaWJsZSAmJgogCSAgICBkcm1fZm9ybWF0X2luZm9faXNfeXV2X3NlbWlwbGFuYXIoZmItPmZv cm1hdCkpCiAJCW5ld19jcnRjX3N0YXRlLT5udjEyX3BsYW5lcyB8PSBCSVQocGxhbmUtPmlkKTsK IAotCWlmIChuZXdfcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSAmJgorCWlmIChuZXdfcGxhbmVf c3RhdGUtPnVhcGkudmlzaWJsZSAmJgogCSAgICBmYi0+Zm9ybWF0LT5mb3JtYXQgPT0gRFJNX0ZP Uk1BVF9DOCkKIAkJbmV3X2NydGNfc3RhdGUtPmM4X3BsYW5lcyB8PSBCSVQocGxhbmUtPmlkKTsK IAotCWlmIChuZXdfcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSB8fCBvbGRfcGxhbmVfc3RhdGUt PmJhc2UudmlzaWJsZSkKKwlpZiAobmV3X3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUgfHwgb2xk X3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCW5ld19jcnRjX3N0YXRlLT51cGRhdGVfcGxh bmVzIHw9IEJJVChwbGFuZS0+aWQpOwogCiAJbmV3X2NydGNfc3RhdGUtPmRhdGFfcmF0ZVtwbGFu ZS0+aWRdID0KQEAgLTIwNyw3ICsyMDcsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNr KHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAogCWNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZTsKIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3 X2NydGNfc3RhdGU7CiAKLQluZXdfcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSA9IGZhbHNlOwor CW5ld19wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlID0gZmFsc2U7CiAJaWYgKCFjcnRjKQogCQly ZXR1cm4gMDsKIApAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgc2tsX3VwZGF0ZV9wbGFuZXNfb25f Y3J0YyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpuZXdfcGxhbmVfc3RhdGUgPQogCQkJaW50ZWxfYXRvbWljX2dldF9uZXdfcGxh bmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsKIAotCQlpZiAobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnZp c2libGUpIHsKKwkJaWYgKG5ld19wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKSB7CiAJCQlpbnRl bF91cGRhdGVfcGxhbmUocGxhbmUsIG5ld19jcnRjX3N0YXRlLCBuZXdfcGxhbmVfc3RhdGUpOwog CQl9IGVsc2UgaWYgKG5ld19wbGFuZV9zdGF0ZS0+cGxhbmFyX3NsYXZlKSB7CiAJCQlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKm1hc3RlciA9CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBpOXh4X3VwZGF0 ZV9wbGFuZXNfb25fY3J0YyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJICAg ICEodXBkYXRlX21hc2sgJiBCSVQocGxhbmUtPmlkKSkpCiAJCQljb250aW51ZTsKIAotCQlpZiAo bmV3X3BsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCisJCWlmIChuZXdfcGxhbmVfc3RhdGUtPnVh cGkudmlzaWJsZSkKIAkJCWludGVsX3VwZGF0ZV9wbGFuZShwbGFuZSwgbmV3X2NydGNfc3RhdGUs IG5ld19wbGFuZV9zdGF0ZSk7CiAJCWVsc2UKIAkJCWludGVsX2Rpc2FibGVfcGxhbmUocGxhbmUs IG5ld19jcnRjX3N0YXRlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5LmMKaW5kZXggYjY4OWJhZWJiNGMyLi4xMmYyMzBhNDFmMmYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCkBAIC0yMDY5LDcgKzIwNjksNyBA QCBzdGF0aWMgdW5zaWduZWQgaW50IGludGVsX3N1cmZfYWxpZ25tZW50KGNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiLAogCiBzdGF0aWMgYm9vbCBpbnRlbF9wbGFuZV91c2VzX2ZlbmNl KGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0 IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBs YW5lKTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVf c3RhdGUtPnVhcGkucGxhbmUpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKIAogCXJldHVybiBJTlRFTF9HRU4oZGV2X3ByaXYp IDwgNCB8fApAQCAtMjM3OCw3ICsyMzc4LDcgQEAgc3RhdGljIHUzMiBpbnRlbF9wbGFuZV9jb21w dXRlX2FsaWduZWRfb2Zmc2V0KGludCAqeCwgaW50ICp5LAogCQkJCQkgICAgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlLAogCQkJCQkgICAgICBpbnQgY29sb3JfcGxhbmUp CiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHN0 YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9f aW50ZWxfcGxhbmUoc3RhdGUtPnVhcGkucGxhbmUpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfcGxhbmUtPmJhc2UuZGV2KTsKIAljb25zdCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5ody5mYjsKIAl1bnNpZ25lZCBpbnQgcm90 YXRpb24gPSBzdGF0ZS0+aHcucm90YXRpb247CkBAIC0yNTY2LDcgKzI1NjYsNyBAQCBpbnRlbF9m Yl9zdHJpZGVfYWxpZ25tZW50KGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQg Y29sb3JfcGxhbmUpCiAKIGJvb2wgaW50ZWxfcGxhbmVfY2FuX3JlbWFwKGNvbnN0IHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxh bmUpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUt PmJhc2UuZGV2KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0 YXRlLT5ody5mYjsKIAlpbnQgaTsKQEAgLTI2MDYsNyArMjYwNiw3IEBAIGJvb2wgaW50ZWxfcGxh bmVfY2FuX3JlbWFwKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp CiAKIHN0YXRpYyBib29sIGludGVsX3BsYW5lX25lZWRzX3JlbWFwKGNvbnN0IHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3QgaW50 ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUp OwogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZi OwogCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKIAl1 MzIgc3RyaWRlLCBtYXhfc3RyaWRlOwpAQCAtMjYxNSw3ICsyNjE1LDcgQEAgc3RhdGljIGJvb2wg aW50ZWxfcGxhbmVfbmVlZHNfcmVtYXAoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZSkKIAkgKiBObyByZW1hcHBpbmcgZm9yIGludmlzaWJsZSBwbGFuZXMgc2luY2Ug d2UgZG9uJ3QgaGF2ZQogCSAqIGFuIGFjdHVhbCBzb3VyY2Ugdmlld3BvcnQgdG8gcmVtYXAuCiAJ ICovCi0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCWlmICghcGxhbmVfc3RhdGUt PnVhcGkudmlzaWJsZSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJaWYgKCFpbnRlbF9wbGFuZV9jYW5f cmVtYXAocGxhbmVfc3RhdGUpKQpAQCAtMjc5OCw3ICsyNzk4LDcgQEAgc3RhdGljIHZvaWQKIGlu dGVsX3BsYW5lX3JlbWFwX2d0dChzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRl KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Ci0JCXRvX2k5MTUocGxh bmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7CisJCXRvX2k5MTUocGxhbmVfc3RhdGUtPnVhcGku cGxhbmUtPmRldik7CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+ aHcuZmI7CiAJc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYiA9IHRvX2ludGVsX2Zy YW1lYnVmZmVyKGZiKTsKIAlzdHJ1Y3QgaW50ZWxfcm90YXRpb25faW5mbyAqaW5mbyA9ICZwbGFu ZV9zdGF0ZS0+dmlldy5yb3RhdGVkOwpAQCAtMjgxMywyMCArMjgxMywyMCBAQCBpbnRlbF9wbGFu ZV9yZW1hcF9ndHQoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIAlwbGFu ZV9zdGF0ZS0+dmlldy50eXBlID0gZHJtX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikgPwog CQlJOTE1X0dHVFRfVklFV19ST1RBVEVEIDogSTkxNV9HR1RUX1ZJRVdfUkVNQVBQRUQ7CiAKLQlz cmNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy54MSA+PiAxNjsKLQlzcmNfeSA9IHBsYW5lX3N0 YXRlLT5iYXNlLnNyYy55MSA+PiAxNjsKLQlzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+YmFzZS5zcmMpID4+IDE2OwotCXNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9z dGF0ZS0+YmFzZS5zcmMpID4+IDE2OworCXNyY194ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLngx ID4+IDE2OworCXNyY195ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLnkxID4+IDE2OworCXNyY193 ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7CisJc3JjX2gg PSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7CiAKIAlXQVJO X09OKGlzX2Njc19tb2RpZmllcihmYi0+bW9kaWZpZXIpKTsKIAogCS8qIE1ha2Ugc3JjIGNvb3Jk aW5hdGVzIHJlbGF0aXZlIHRvIHRoZSB2aWV3cG9ydCAqLwotCWRybV9yZWN0X3RyYW5zbGF0ZSgm cGxhbmVfc3RhdGUtPmJhc2Uuc3JjLAorCWRybV9yZWN0X3RyYW5zbGF0ZSgmcGxhbmVfc3RhdGUt PnVhcGkuc3JjLAogCQkJICAgLShzcmNfeCA8PCAxNiksIC0oc3JjX3kgPDwgMTYpKTsKIAogCS8q IFJvdGF0ZSBzcmMgY29vcmRpbmF0ZXMgdG8gbWF0Y2ggcm90YXRlZCBHVFQgdmlldyAqLwogCWlm IChkcm1fcm90YXRpb25fOTBfb3JfMjcwKHJvdGF0aW9uKSkKLQkJZHJtX3JlY3Rfcm90YXRlKCZw bGFuZV9zdGF0ZS0+YmFzZS5zcmMsCisJCWRybV9yZWN0X3JvdGF0ZSgmcGxhbmVfc3RhdGUtPnVh cGkuc3JjLAogCQkJCXNyY193IDw8IDE2LCBzcmNfaCA8PCAxNiwKIAkJCQlEUk1fTU9ERV9ST1RB VEVfMjcwKTsKIApAQCAtMjk0Niw3ICsyOTQ2LDcgQEAgaW50ZWxfcGxhbmVfY29tcHV0ZV9ndHQo c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIAogCS8qIFJvdGF0ZSBzcmMg Y29vcmRpbmF0ZXMgdG8gbWF0Y2ggcm90YXRlZCBHVFQgdmlldyAqLwogCWlmIChkcm1fcm90YXRp b25fOTBfb3JfMjcwKHJvdGF0aW9uKSkKLQkJZHJtX3JlY3Rfcm90YXRlKCZwbGFuZV9zdGF0ZS0+ YmFzZS5zcmMsCisJCWRybV9yZWN0X3JvdGF0ZSgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjLAogCQkJ CWZiLT5iYXNlLndpZHRoIDw8IDE2LCBmYi0+YmFzZS5oZWlnaHQgPDwgMTYsCiAJCQkJRFJNX01P REVfUk9UQVRFXzI3MCk7CiAKQEAgLTMxMTIsOSArMzExMiw5IEBAIGludGVsX3NldF9wbGFuZV92 aXNpYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJc3RydWN0IGlu dGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKIAkJCWJvb2wgdmlzaWJsZSkKIHsKLQlzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2Uu cGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFu ZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAKLQlwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlID0gdmlz aWJsZTsKKwlwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlID0gdmlzaWJsZTsKIAogCWlmICh2aXNp YmxlKQogCQljcnRjX3N0YXRlLT51YXBpLnBsYW5lX21hc2sgfD0gZHJtX3BsYW5lX21hc2soJnBs YW5lLT5iYXNlKTsKQEAgLTMyNTksOCArMzI1OSw4IEBAIGludGVsX2ZpbmRfaW5pdGlhbF9wbGFu ZV9vYmooc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCiAJcGxhbmVfc3RhdGUtPmNydGNf dyA9IGZiLT53aWR0aDsKIAlwbGFuZV9zdGF0ZS0+Y3J0Y19oID0gZmItPmhlaWdodDsKIAotCWlu dGVsX3N0YXRlLT5iYXNlLnNyYyA9IGRybV9wbGFuZV9zdGF0ZV9zcmMocGxhbmVfc3RhdGUpOwot CWludGVsX3N0YXRlLT5iYXNlLmRzdCA9IGRybV9wbGFuZV9zdGF0ZV9kZXN0KHBsYW5lX3N0YXRl KTsKKwlpbnRlbF9zdGF0ZS0+dWFwaS5zcmMgPSBkcm1fcGxhbmVfc3RhdGVfc3JjKHBsYW5lX3N0 YXRlKTsKKwlpbnRlbF9zdGF0ZS0+dWFwaS5kc3QgPSBkcm1fcGxhbmVfc3RhdGVfZGVzdChwbGFu ZV9zdGF0ZSk7CiAKIAlpZiAocGxhbmVfY29uZmlnLT50aWxpbmcpCiAJCWRldl9wcml2LT5wcmVz ZXJ2ZV9iaW9zX3N3aXp6bGUgPSB0cnVlOwpAQCAtMzM5NSwxMyArMzM5NSwxMyBAQCBzdGF0aWMg Ym9vbCBza2xfY2hlY2tfbWFpbl9jY3NfY29vcmRpbmF0ZXMoc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZQogCiBzdGF0aWMgaW50IHNrbF9jaGVja19tYWluX3N1cmZhY2Uoc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYp OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmVfc3Rh dGUtPnVhcGkucGxhbmUtPmRldik7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIg PSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3Rh dGUtPmh3LnJvdGF0aW9uOwotCWludCB4ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLngxID4+IDE2 OwotCWludCB5ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLnkxID4+IDE2OwotCWludCB3ID0gZHJt X3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Ci0JaW50IGggPSBkcm1f cmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7CisJaW50IHggPSBwbGFu ZV9zdGF0ZS0+dWFwaS5zcmMueDEgPj4gMTY7CisJaW50IHkgPSBwbGFuZV9zdGF0ZS0+dWFwaS5z cmMueTEgPj4gMTY7CisJaW50IHcgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGku c3JjKSA+PiAxNjsKKwlpbnQgaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGku c3JjKSA+PiAxNjsKIAlpbnQgbWF4X3dpZHRoOwogCWludCBtYXhfaGVpZ2h0OwogCXUzMiBhbGln bm1lbnQsIG9mZnNldCwgYXV4X29mZnNldCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVsxXS5v ZmZzZXQ7CkBAIC0zNDg0LDcgKzM0ODQsNyBAQCBzdGF0aWMgaW50IHNrbF9jaGVja19tYWluX3N1 cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIAkgKiBQdXQgdGhl IGZpbmFsIGNvb3JkaW5hdGVzIGJhY2sgc28gdGhhdCB0aGUgc3JjCiAJICogY29vcmRpbmF0ZSBj aGVja3Mgd2lsbCBzZWUgdGhlIHJpZ2h0IHZhbHVlcy4KIAkgKi8KLQlkcm1fcmVjdF90cmFuc2xh dGVfdG8oJnBsYW5lX3N0YXRlLT5iYXNlLnNyYywKKwlkcm1fcmVjdF90cmFuc2xhdGVfdG8oJnBs YW5lX3N0YXRlLT51YXBpLnNyYywKIAkJCSAgICAgIHggPDwgMTYsIHkgPDwgMTYpOwogCiAJcmV0 dXJuIDA7CkBAIC0zNDk2LDEwICszNDk2LDEwIEBAIHN0YXRpYyBpbnQgc2tsX2NoZWNrX252MTJf YXV4X3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIAl1bnNp Z25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247CiAJaW50IG1heF93 aWR0aCA9IHNrbF9tYXhfcGxhbmVfd2lkdGgoZmIsIDEsIHJvdGF0aW9uKTsKIAlpbnQgbWF4X2hl aWdodCA9IDQwOTY7Ci0JaW50IHggPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueDEgPj4gMTc7Ci0J aW50IHkgPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueTEgPj4gMTc7Ci0JaW50IHcgPSBkcm1fcmVj dF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNzsKLQlpbnQgaCA9IGRybV9yZWN0 X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNzsKKwlpbnQgeCA9IHBsYW5lX3N0 YXRlLT51YXBpLnNyYy54MSA+PiAxNzsKKwlpbnQgeSA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy55 MSA+PiAxNzsKKwlpbnQgdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMp ID4+IDE3OworCWludCBoID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMp ID4+IDE3OwogCXUzMiBvZmZzZXQ7CiAKIAlpbnRlbF9hZGRfZmJfb2Zmc2V0cygmeCwgJnksIHBs YW5lX3N0YXRlLCAxKTsKQEAgLTM1MjIsOCArMzUyMiw4IEBAIHN0YXRpYyBpbnQgc2tsX2NoZWNr X252MTJfYXV4X3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkK IHN0YXRpYyBpbnQgc2tsX2NoZWNrX2Njc19hdXhfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnBsYW5lX3N0YXRlKQogewogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi ID0gcGxhbmVfc3RhdGUtPmh3LmZiOwotCWludCBzcmNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLnNy Yy54MSA+PiAxNjsKLQlpbnQgc3JjX3kgPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueTEgPj4gMTY7 CisJaW50IHNyY194ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLngxID4+IDE2OworCWludCBzcmNf eSA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy55MSA+PiAxNjsKIAlpbnQgaHN1YiA9IGZiLT5mb3Jt YXQtPmhzdWI7CiAJaW50IHZzdWIgPSBmYi0+Zm9ybWF0LT52c3ViOwogCWludCB4ID0gc3JjX3gg LyBoc3ViOwpAQCAtMzU0OSw3ICszNTQ5LDcgQEAgaW50IHNrbF9jaGVja19wbGFuZV9zdXJmYWNl KHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiAJaWYgKHJldCkKIAkJcmV0 dXJuIHJldDsKIAotCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKKwlpZiAoIXBsYW5l X3N0YXRlLT51YXBpLnZpc2libGUpCiAJCXJldHVybiAwOwogCiAJLyoKQEAgLTM2MjYsNyArMzYy Niw3IEBAIHN0YXRpYyB1MzIgaTl4eF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCiAJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KLQkJ dG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKKwkJdG9faTkxNShwbGFuZV9z dGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9z dGF0ZS0+aHcucm90YXRpb247CiAJdTMyIGRzcGNudHI7CkBAIC0zNjgwLDcgKzM2ODAsNyBAQCBz dGF0aWMgdTMyIGk5eHhfcGxhbmVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAogaW50IGk5eHhfY2hlY2tfcGxhbmVfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9Ci0JCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7CisJCXRvX2k5 MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7CiAJaW50IHNyY194LCBzcmNfeTsKIAl1 MzIgb2Zmc2V0OwogCWludCByZXQ7CkBAIC0zNjg5LDExICszNjg5LDExIEBAIGludCBpOXh4X2No ZWNrX3BsYW5lX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkK IAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNp YmxlKQorCWlmICghcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKIAkJcmV0dXJuIDA7CiAKLQlz cmNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy54MSA+PiAxNjsKLQlzcmNfeSA9IHBsYW5lX3N0 YXRlLT5iYXNlLnNyYy55MSA+PiAxNjsKKwlzcmNfeCA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy54 MSA+PiAxNjsKKwlzcmNfeSA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy55MSA+PiAxNjsKIAogCWlu dGVsX2FkZF9mYl9vZmZzZXRzKCZzcmNfeCwgJnNyY195LCBwbGFuZV9zdGF0ZSwgMCk7CiAKQEAg LTM3MDcsMTQgKzM3MDcsMTQgQEAgaW50IGk5eHhfY2hlY2tfcGxhbmVfc3VyZmFjZShzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogCSAqIFB1dCB0aGUgZmluYWwgY29vcmRp bmF0ZXMgYmFjayBzbyB0aGF0IHRoZSBzcmMKIAkgKiBjb29yZGluYXRlIGNoZWNrcyB3aWxsIHNl ZSB0aGUgcmlnaHQgdmFsdWVzLgogCSAqLwotCWRybV9yZWN0X3RyYW5zbGF0ZV90bygmcGxhbmVf c3RhdGUtPmJhc2Uuc3JjLAorCWRybV9yZWN0X3RyYW5zbGF0ZV90bygmcGxhbmVfc3RhdGUtPnVh cGkuc3JjLAogCQkJICAgICAgc3JjX3ggPDwgMTYsIHNyY195IDw8IDE2KTsKIAogCS8qIEhTVy9C RFcgZG8gdGhpcyBhdXRvbWFnaWNhbGx5IGluIGhhcmR3YXJlICovCiAJaWYgKCFJU19IQVNXRUxM KGRldl9wcml2KSAmJiAhSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewogCQl1bnNpZ25lZCBpbnQg cm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Ci0JCWludCBzcmNfdyA9IGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwotCQlpbnQgc3JjX2ggPSBk cm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7CisJCWludCBzcmNf dyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2OworCQlpbnQg c3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7CiAK IAkJaWYgKHJvdGF0aW9uICYgRFJNX01PREVfUk9UQVRFXzE4MCkgewogCQkJc3JjX3ggKz0gc3Jj X3cgLSAxOwpAQCAtMzc1MSwxNCArMzc1MSwxNCBAQCBzdGF0aWMgaW50CiBpOXh4X3BsYW5lX2No ZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l ID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7 CiAJaW50IHJldDsKIAogCXJldCA9IGNodl9wbGFuZV9jaGVja19yb3RhdGlvbihwbGFuZV9zdGF0 ZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldCA9IGRybV9hdG9taWNfaGVscGVy X2NoZWNrX3BsYW5lX3N0YXRlKCZwbGFuZV9zdGF0ZS0+YmFzZSwKKwlyZXQgPSBkcm1fYXRvbWlj X2hlbHBlcl9jaGVja19wbGFuZV9zdGF0ZSgmcGxhbmVfc3RhdGUtPnVhcGksCiAJCQkJCQkgICZj cnRjX3N0YXRlLT51YXBpLAogCQkJCQkJICBEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkcsCiAJ CQkJCQkgIERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywKQEAgLTM3NzEsNyArMzc3MSw3IEBA IGk5eHhfcGxhbmVfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJs ZSkKKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCXJldHVybiAwOwogCiAJcmV0 ID0gaW50ZWxfcGxhbmVfY2hlY2tfc3JjX2Nvb3JkaW5hdGVzKHBsYW5lX3N0YXRlKTsKQEAgLTM3 OTIsMTAgKzM3OTIsMTAgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcGxhbmUoc3RydWN0IGlu dGVsX3BsYW5lICpwbGFuZSwKIAl1MzIgbGluZWFyX29mZnNldDsKIAlpbnQgeCA9IHBsYW5lX3N0 YXRlLT5jb2xvcl9wbGFuZVswXS54OwogCWludCB5ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5l WzBdLnk7Ci0JaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC54MTsKLQlpbnQgY3J0 Y195ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LnkxOwotCWludCBjcnRjX3cgPSBkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKLQlpbnQgY3J0Y19oID0gZHJtX3JlY3RfaGVp Z2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOworCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+ dWFwaS5kc3QueDE7CisJaW50IGNydGNfeSA9IHBsYW5lX3N0YXRlLT51YXBpLmRzdC55MTsKKwlp bnQgY3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7CisJaW50 IGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKIAl1bnNp Z25lZCBsb25nIGlycWZsYWdzOwogCXUzMiBkc3BhZGRyX29mZnNldDsKIAl1MzIgZHNwY250cjsK QEAgLTQxNDksNyArNDE0OSw3IEBAIHUzMiBza2xfcGxhbmVfY3RsKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqcGxhbmVfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0KLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKKwkJdG9faTkxNShw bGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBw bGFuZV9zdGF0ZS0+aHcucm90YXRpb247CiAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVf Y29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKQEAgLTQyMDUsOSArNDIwNSw5IEBA IHUzMiBnbGtfcGxhbmVfY29sb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAogCQkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQotCQl0b19pOTE1KHBs YW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOworCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBp LnBsYW5lLT5kZXYpOwogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVf c3RhdGUtPmh3LmZiOwotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9 IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAl1MzIgcGxhbmVfY29s b3JfY3RsID0gMDsKIAogCXBsYW5lX2NvbG9yX2N0bCB8PSBQTEFORV9DT0xPUl9QTEFORV9HQU1N QV9ESVNBQkxFOwpAQCAtNTU1MSwxMSArNTU1MSwxMSBAQCBzdGF0aWMgaW50IHNrbF91cGRhdGVf c2NhbGVyX3BsYW5lKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJCSAg IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7CiAJc3RydWN0IGludGVs X3BsYW5lICppbnRlbF9wbGFuZSA9Ci0JCXRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNl LnBsYW5lKTsKKwkJdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfcGxhbmUtPmJh c2UuZGV2KTsKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5m YjsKIAlpbnQgcmV0OwotCWJvb2wgZm9yY2VfZGV0YWNoID0gIWZiIHx8ICFwbGFuZV9zdGF0ZS0+ YmFzZS52aXNpYmxlOworCWJvb2wgZm9yY2VfZGV0YWNoID0gIWZiIHx8ICFwbGFuZV9zdGF0ZS0+ dWFwaS52aXNpYmxlOwogCWJvb2wgbmVlZF9zY2FsZXIgPSBmYWxzZTsKIAogCS8qIFByZS1nZW4x MSBhbmQgU0RSIHBsYW5lcyBhbHdheXMgbmVlZCBhIHNjYWxlciBmb3IgcGxhbmFyIGZvcm1hdHMu ICovCkBAIC01NTY2LDEwICs1NTY2LDEwIEBAIHN0YXRpYyBpbnQgc2tsX3VwZGF0ZV9zY2FsZXJf cGxhbmUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJcmV0ID0gc2tsX3Vw ZGF0ZV9zY2FsZXIoY3J0Y19zdGF0ZSwgZm9yY2VfZGV0YWNoLAogCQkJCWRybV9wbGFuZV9pbmRl eCgmaW50ZWxfcGxhbmUtPmJhc2UpLAogCQkJCSZwbGFuZV9zdGF0ZS0+c2NhbGVyX2lkLAotCQkJ CWRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2LAotCQkJCWRybV9y ZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNiwKLQkJCQlkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSwKLQkJCQlkcm1fcmVjdF9oZWlnaHQoJnBsYW5l X3N0YXRlLT5iYXNlLmRzdCksCisJCQkJZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBp LnNyYykgPj4gMTYsCisJCQkJZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMp ID4+IDE2LAorCQkJCWRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpLAorCQkJ CWRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSwKIAkJCQlmYiA/IGZiLT5m b3JtYXQgOiBOVUxMLCBuZWVkX3NjYWxlcik7CiAKIAlpZiAocmV0IHx8IHBsYW5lX3N0YXRlLT5z Y2FsZXJfaWQgPCAwKQpAQCAtNTk4Miw3ICs1OTgyLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJl X3BsYW5lX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCiAJ CSAqIFNvIGRpc2FibGUgdW5kZXJydW4gcmVwb3J0aW5nIGJlZm9yZSBhbGwgdGhlIHBsYW5lcyBn ZXQgZGlzYWJsZWQuCiAJCSAqLwogCQlpZiAoSVNfR0VOKGRldl9wcml2LCAyKSAmJiBvbGRfcHJp bWFyeV9zdGF0ZS0+dmlzaWJsZSAmJgotCQkgICAgKG1vZGVzZXQgfHwgIW5ld19wcmltYXJ5X3N0 YXRlLT5iYXNlLnZpc2libGUpKQorCQkgICAgKG1vZGVzZXQgfHwgIW5ld19wcmltYXJ5X3N0YXRl LT51YXBpLnZpc2libGUpKQogCQkJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGlu ZyhkZXZfcHJpdiwgY3J0Yy0+cGlwZSwgZmFsc2UpOwogCX0KIApAQCAtNjA2OSw3ICs2MDY5LDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19kaXNhYmxlX3BsYW5lcyhzdHJ1Y3QgaW50ZWxfYXRv bWljX3N0YXRlICpzdGF0ZSwKIAogCQlpbnRlbF9kaXNhYmxlX3BsYW5lKHBsYW5lLCBuZXdfY3J0 Y19zdGF0ZSk7CiAKLQkJaWYgKG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCQlpZiAo b2xkX3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCQlmYl9iaXRzIHw9IHBsYW5lLT5mcm9u dGJ1ZmZlcl9iaXQ7CiAJfQogCkBAIC03MDc4LDcgKzcwNzgsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9jcnRjX2Rpc2FibGVfbm9hdG9taWMoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQljb25zdCBz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0KIAkJCXRvX2ludGVsX3BsYW5l X3N0YXRlKHBsYW5lLT5iYXNlLnN0YXRlKTsKIAotCQlpZiAocGxhbmVfc3RhdGUtPmJhc2Uudmlz aWJsZSkKKwkJaWYgKHBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCQlpbnRlbF9wbGFuZV9k aXNhYmxlX25vYXRvbWljKGludGVsX2NydGMsIHBsYW5lKTsKIAl9CiAKQEAgLTEwNjUyLDcgKzEw NjUyLDcgQEAgc3RhdGljIGJvb2wgaGFzd2VsbF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVs X2NydGMgKmNydGMsCiBzdGF0aWMgdTMyIGludGVsX2N1cnNvcl9iYXNlKGNvbnN0IHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0KLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsK KwkJdG9faTkxNShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKIAljb25zdCBzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAljb25zdCBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKIAl1MzIgYmFzZTsK QEAgLTEwNjY3LDggKzEwNjY3LDggQEAgc3RhdGljIHUzMiBpbnRlbF9jdXJzb3JfYmFzZShjb25z dCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogCiBzdGF0aWMgdTMyIGlu dGVsX2N1cnNvcl9wb3NpdGlvbihjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlKQogewotCWludCB4ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LngxOwotCWludCB5ID0g cGxhbmVfc3RhdGUtPmJhc2UuZHN0LnkxOworCWludCB4ID0gcGxhbmVfc3RhdGUtPnVhcGkuZHN0 LngxOworCWludCB5ID0gcGxhbmVfc3RhdGUtPnVhcGkuZHN0LnkxOwogCXUzMiBwb3MgPSAwOwog CiAJaWYgKHggPCAwKSB7CkBAIC0xMDY4OSw5ICsxMDY4OSw5IEBAIHN0YXRpYyB1MzIgaW50ZWxf Y3Vyc29yX3Bvc2l0aW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUpCiBzdGF0aWMgYm9vbCBpbnRlbF9jdXJzb3Jfc2l6ZV9vayhjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewogCWNvbnN0IHN0cnVjdCBkcm1fbW9kZV9jb25m aWcgKmNvbmZpZyA9Ci0JCSZwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2LT5tb2RlX2NvbmZp ZzsKLQlpbnQgd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsK LQlpbnQgaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwor CQkmcGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldi0+bW9kZV9jb25maWc7CisJaW50IHdpZHRo ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7CisJaW50IGhlaWdodCA9 IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKIAogCXJldHVybiB3aWR0 aCA+IDAgJiYgd2lkdGggPD0gY29uZmlnLT5jdXJzb3Jfd2lkdGggJiYKIAkJaGVpZ2h0ID4gMCAm JiBoZWlnaHQgPD0gY29uZmlnLT5jdXJzb3JfaGVpZ2h0OwpAQCAtMTA3MDAsNyArMTA3MDAsNyBA QCBzdGF0aWMgYm9vbCBpbnRlbF9jdXJzb3Jfc2l6ZV9vayhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogc3RhdGljIGludCBpbnRlbF9jdXJzb3JfY2hlY2tfc3Vy ZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Ci0JCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2Uu cGxhbmUtPmRldik7CisJCXRvX2k5MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7CiAJ dW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwogCWludCBz cmNfeCwgc3JjX3k7CiAJdTMyIG9mZnNldDsKQEAgLTEwNzEwLDExICsxMDcxMCwxMSBAQCBzdGF0 aWMgaW50IGludGVsX2N1cnNvcl9jaGVja19zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUpCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWlmICghcGxhbmVf c3RhdGUtPmJhc2UudmlzaWJsZSkKKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJ CXJldHVybiAwOwogCi0Jc3JjX3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueDEgPj4gMTY7Ci0J c3JjX3kgPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueTEgPj4gMTY7CisJc3JjX3ggPSBwbGFuZV9z dGF0ZS0+dWFwaS5zcmMueDEgPj4gMTY7CisJc3JjX3kgPSBwbGFuZV9zdGF0ZS0+dWFwaS5zcmMu eTEgPj4gMTY7CiAKIAlpbnRlbF9hZGRfZmJfb2Zmc2V0cygmc3JjX3gsICZzcmNfeSwgcGxhbmVf c3RhdGUsIDApOwogCW9mZnNldCA9IGludGVsX3BsYW5lX2NvbXB1dGVfYWxpZ25lZF9vZmZzZXQo JnNyY194LCAmc3JjX3ksCkBAIC0xMDcyOSwxNCArMTA3MjksMTQgQEAgc3RhdGljIGludCBpbnRl bF9jdXJzb3JfY2hlY2tfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlKQogCSAqIFB1dCB0aGUgZmluYWwgY29vcmRpbmF0ZXMgYmFjayBzbyB0aGF0IHRoZSBzcmMK IAkgKiBjb29yZGluYXRlIGNoZWNrcyB3aWxsIHNlZSB0aGUgcmlnaHQgdmFsdWVzLgogCSAqLwot CWRybV9yZWN0X3RyYW5zbGF0ZV90bygmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLAorCWRybV9yZWN0 X3RyYW5zbGF0ZV90bygmcGxhbmVfc3RhdGUtPnVhcGkuc3JjLAogCQkJICAgICAgc3JjX3ggPDwg MTYsIHNyY195IDw8IDE2KTsKIAogCS8qIElMSysgZG8gdGhpcyBhdXRvbWFnaWNhbGx5IGluIGhh cmR3YXJlICovCiAJaWYgKEhBU19HTUNIKGRldl9wcml2KSAmJiByb3RhdGlvbiAmIERSTV9NT0RF X1JPVEFURV8xODApIHsKLQkJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFu ZV9zdGF0ZS0+YmFzZS5mYjsKLQkJaW50IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0 YXRlLT5iYXNlLnNyYykgPj4gMTY7Ci0JCWludCBzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxh bmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKKwkJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CisJCWludCBzcmNfdyA9IGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2OworCQlpbnQgc3JjX2ggPSBkcm1fcmVjdF9o ZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7CiAKIAkJb2Zmc2V0ICs9IChzcmNf aCAqIHNyY193IC0gMSkgKiBmYi0+Zm9ybWF0LT5jcHBbMF07CiAJfQpAQCAtMTA3NTksNyArMTA3 NTksNyBAQCBzdGF0aWMgaW50IGludGVsX2NoZWNrX2N1cnNvcihzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JcmV0ID0gZHJtX2F0 b21pY19oZWxwZXJfY2hlY2tfcGxhbmVfc3RhdGUoJnBsYW5lX3N0YXRlLT5iYXNlLAorCXJldCA9 IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lX3N0YXRlKCZwbGFuZV9zdGF0ZS0+dWFwaSwK IAkJCQkJCSAgJmNydGNfc3RhdGUtPnVhcGksCiAJCQkJCQkgIERSTV9QTEFORV9IRUxQRVJfTk9f U0NBTElORywKIAkJCQkJCSAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLApAQCAtMTA3Njgs MTQgKzEwNzY4LDE0IEBAIHN0YXRpYyBpbnQgaW50ZWxfY2hlY2tfY3Vyc29yKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQlyZXR1cm4gcmV0OwogCiAJLyogVXNlIHRoZSB1 bmNsaXBwZWQgc3JjL2RzdCByZWN0YW5nbGVzLCB3aGljaCB3ZSBwcm9ncmFtIHRvIGh3ICovCi0J cGxhbmVfc3RhdGUtPmJhc2Uuc3JjID0gZHJtX3BsYW5lX3N0YXRlX3NyYygmcGxhbmVfc3RhdGUt PmJhc2UpOwotCXBsYW5lX3N0YXRlLT5iYXNlLmRzdCA9IGRybV9wbGFuZV9zdGF0ZV9kZXN0KCZw bGFuZV9zdGF0ZS0+YmFzZSk7CisJcGxhbmVfc3RhdGUtPnVhcGkuc3JjID0gZHJtX3BsYW5lX3N0 YXRlX3NyYygmcGxhbmVfc3RhdGUtPnVhcGkpOworCXBsYW5lX3N0YXRlLT51YXBpLmRzdCA9IGRy bV9wbGFuZV9zdGF0ZV9kZXN0KCZwbGFuZV9zdGF0ZS0+dWFwaSk7CiAKIAlyZXQgPSBpbnRlbF9j dXJzb3JfY2hlY2tfc3VyZmFjZShwbGFuZV9zdGF0ZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJl dDsKIAotCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKKwlpZiAoIXBsYW5lX3N0YXRl LT51YXBpLnZpc2libGUpCiAJCXJldHVybiAwOwogCiAJcmV0ID0gaW50ZWxfcGxhbmVfY2hlY2tf c3JjX2Nvb3JkaW5hdGVzKHBsYW5lX3N0YXRlKTsKQEAgLTEwODEzLDcgKzEwODEzLDcgQEAgc3Rh dGljIHUzMiBpODQ1X2N1cnNvcl9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCiAKIHN0YXRpYyBib29sIGk4NDVfY3Vyc29yX3NpemVfb2soY29uc3Qgc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlpbnQgd2lkdGggPSBkcm1fcmVj dF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKKwlpbnQgd2lkdGggPSBkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKIAogCS8qCiAJICogODQ1Zy84NjVnIGFyZSBv bmx5IGxpbWl0ZWQgYnkgdGhlIHdpZHRoIG9mIHRoZWlyIGN1cnNvcnMsCkBAIC0xMDgzOSwxMiAr MTA4MzksMTIgQEAgc3RhdGljIGludCBpODQ1X2NoZWNrX2N1cnNvcihzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkvKiBDaGVjayBmb3Igd2hpY2ggY3Vyc29yIHR5cGVzIHdl IHN1cHBvcnQgKi8KIAlpZiAoIWk4NDVfY3Vyc29yX3NpemVfb2socGxhbmVfc3RhdGUpKSB7CiAJ CURSTV9ERUJVRygiQ3Vyc29yIGRpbWVuc2lvbiAlZHglZCBub3Qgc3VwcG9ydGVkXG4iLAotCQkJ ICBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSwKLQkJCSAgZHJtX3JlY3Rf aGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpKTsKKwkJCSAgZHJtX3JlY3Rfd2lkdGgoJnBs YW5lX3N0YXRlLT51YXBpLmRzdCksCisJCQkgIGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUt PnVhcGkuZHN0KSk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCVdBUk5fT04ocGxhbmVfc3Rh dGUtPmJhc2UudmlzaWJsZSAmJgorCVdBUk5fT04ocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSAm JgogCQlwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0uc3RyaWRlICE9IGZiLT5waXRjaGVzWzBd KTsKIAogCXN3aXRjaCAoZmItPnBpdGNoZXNbMF0pIHsKQEAgLTEwODcyLDkgKzEwODcyLDkgQEAg c3RhdGljIHZvaWQgaTg0NV91cGRhdGVfY3Vyc29yKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUs CiAJdTMyIGNudGwgPSAwLCBiYXNlID0gMCwgcG9zID0gMCwgc2l6ZSA9IDA7CiAJdW5zaWduZWQg bG9uZyBpcnFmbGFnczsKIAotCWlmIChwbGFuZV9zdGF0ZSAmJiBwbGFuZV9zdGF0ZS0+YmFzZS52 aXNpYmxlKSB7Ci0JCXVuc2lnbmVkIGludCB3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+YmFzZS5zcmMpOwotCQl1bnNpZ25lZCBpbnQgaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0 KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOworCWlmIChwbGFuZV9zdGF0ZSAmJiBwbGFuZV9zdGF0 ZS0+dWFwaS52aXNpYmxlKSB7CisJCXVuc2lnbmVkIGludCB3aWR0aCA9IGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpOworCQl1bnNpZ25lZCBpbnQgaGVpZ2h0ID0gZHJtX3Jl Y3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwogCiAJCWNudGwgPSBwbGFuZV9zdGF0 ZS0+Y3RsIHwKIAkJCWk4NDVfY3Vyc29yX2N0bF9jcnRjKGNydGNfc3RhdGUpOwpAQCAtMTA5NzAs MTMgKzEwOTcwLDEzIEBAIHN0YXRpYyB1MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJICAgY29uc3Qgc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPQotCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOworCQl0b19p OTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOwogCXUzMiBjbnRsID0gMDsKIAogCWlm IChJU19HRU4oZGV2X3ByaXYsIDYpIHx8IElTX0lWWUJSSURHRShkZXZfcHJpdikpCiAJCWNudGwg fD0gTUNVUlNPUl9UUklDS0xFX0ZFRURfRElTQUJMRTsKIAotCXN3aXRjaCAoZHJtX3JlY3Rfd2lk dGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCkpIHsKKwlzd2l0Y2ggKGRybV9yZWN0X3dpZHRoKCZw bGFuZV9zdGF0ZS0+dWFwaS5kc3QpKSB7CiAJY2FzZSA2NDoKIAkJY250bCB8PSBNQ1VSU09SX01P REVfNjRfQVJHQl9BWDsKIAkJYnJlYWs7CkBAIC0xMDk4Nyw3ICsxMDk4Nyw3IEBAIHN0YXRpYyB1 MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAogCQljbnRsIHw9IE1DVVJTT1JfTU9ERV8yNTZfQVJHQl9BWDsKIAkJYnJlYWs7CiAJZGVm YXVsdDoKLQkJTUlTU0lOR19DQVNFKGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5k c3QpKTsKKwkJTUlTU0lOR19DQVNFKGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5k c3QpKTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC0xMTAwMCw5ICsxMTAwMCw5IEBAIHN0YXRpYyB1 MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAogc3RhdGljIGJvb2wgaTl4eF9jdXJzb3Jfc2l6ZV9vayhjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9Ci0JCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Ci0JaW50 IHdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Ci0JaW50IGhl aWdodCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKKwkJdG9faTkx NShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKKwlpbnQgd2lkdGggPSBkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKKwlpbnQgaGVpZ2h0ID0gZHJtX3JlY3RfaGVp Z2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwogCiAJaWYgKCFpbnRlbF9jdXJzb3Jfc2l6ZV9v ayhwbGFuZV9zdGF0ZSkpCiAJCXJldHVybiBmYWxzZTsKQEAgLTExMDM4LDcgKzExMDM4LDcgQEAg c3RhdGljIGJvb2wgaTl4eF9jdXJzb3Jfc2l6ZV9vayhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnBsYW5lX3N0YXRlKQogc3RhdGljIGludCBpOXh4X2NoZWNrX2N1cnNvcihzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCSAgICAgc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9f aW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFu ZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYp OwogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZi OwogCWVudW0gcGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7CkBAIC0xMTA1NSwxOSArMTEwNTUsMTkg QEAgc3RhdGljIGludCBpOXh4X2NoZWNrX2N1cnNvcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKIAkvKiBDaGVjayBmb3Igd2hpY2ggY3Vyc29yIHR5cGVzIHdlIHN1cHBvcnQg Ki8KIAlpZiAoIWk5eHhfY3Vyc29yX3NpemVfb2socGxhbmVfc3RhdGUpKSB7CiAJCURSTV9ERUJV RygiQ3Vyc29yIGRpbWVuc2lvbiAlZHglZCBub3Qgc3VwcG9ydGVkXG4iLAotCQkJICBkcm1fcmVj dF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSwKLQkJCSAgZHJtX3JlY3RfaGVpZ2h0KCZw bGFuZV9zdGF0ZS0+YmFzZS5kc3QpKTsKKwkJCSAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRl LT51YXBpLmRzdCksCisJCQkgIGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0 KSk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCVdBUk5fT04ocGxhbmVfc3RhdGUtPmJhc2Uu dmlzaWJsZSAmJgorCVdBUk5fT04ocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSAmJgogCQlwbGFu ZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0uc3RyaWRlICE9IGZiLT5waXRjaGVzWzBdKTsKIAogCWlm IChmYi0+cGl0Y2hlc1swXSAhPQotCSAgICBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJh c2UuZHN0KSAqIGZiLT5mb3JtYXQtPmNwcFswXSkgeworCSAgICBkcm1fcmVjdF93aWR0aCgmcGxh bmVfc3RhdGUtPnVhcGkuZHN0KSAqIGZiLT5mb3JtYXQtPmNwcFswXSkgewogCQlEUk1fREVCVUdf S01TKCJJbnZhbGlkIGN1cnNvciBzdHJpZGUgKCV1KSAoY3Vyc29yIHdpZHRoICVkKVxuIiwKIAkJ CSAgICAgIGZiLT5waXRjaGVzWzBdLAotCQkJICAgICAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0 YXRlLT5iYXNlLmRzdCkpOworCQkJICAgICAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51 YXBpLmRzdCkpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKQEAgLTExMDgyLDcgKzExMDgyLDcg QEAgc3RhdGljIGludCBpOXh4X2NoZWNrX2N1cnNvcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKIAkgKiBSZWZ1c2UgdGhlIHB1dCB0aGUgY3Vyc29yIGludG8gdGhhdCBjb21w cm9taXNlZCBwb3NpdGlvbi4KIAkgKi8KIAlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikgJiYg cGlwZSA9PSBQSVBFX0MgJiYKLQkgICAgcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSAmJiBwbGFu ZV9zdGF0ZS0+YmFzZS5kc3QueDEgPCAwKSB7CisJICAgIHBsYW5lX3N0YXRlLT51YXBpLnZpc2li bGUgJiYgcGxhbmVfc3RhdGUtPnVhcGkuZHN0LngxIDwgMCkgewogCQlEUk1fREVCVUdfS01TKCJD SFYgY3Vyc29yIEMgbm90IGFsbG93ZWQgdG8gc3RyYWRkbGUgdGhlIGxlZnQgc2NyZWVuIGVkZ2Vc biIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CkBAIC0xMTEwMSw5ICsxMTEwMSw5IEBAIHN0YXRp YyB2b2lkIGk5eHhfdXBkYXRlX2N1cnNvcihzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCXUz MiBjbnRsID0gMCwgYmFzZSA9IDAsIHBvcyA9IDAsIGZiY19jdGwgPSAwOwogCXVuc2lnbmVkIGxv bmcgaXJxZmxhZ3M7CiAKLQlpZiAocGxhbmVfc3RhdGUgJiYgcGxhbmVfc3RhdGUtPmJhc2Uudmlz aWJsZSkgewotCQl1bnNpZ25lZCB3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+ YmFzZS5kc3QpOwotCQl1bnNpZ25lZCBoZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0 YXRlLT5iYXNlLmRzdCk7CisJaWYgKHBsYW5lX3N0YXRlICYmIHBsYW5lX3N0YXRlLT51YXBpLnZp c2libGUpIHsKKwkJdW5zaWduZWQgd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PnVhcGkuZHN0KTsKKwkJdW5zaWduZWQgaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9z dGF0ZS0+dWFwaS5kc3QpOwogCiAJCWNudGwgPSBwbGFuZV9zdGF0ZS0+Y3RsIHwKIAkJCWk5eHhf Y3Vyc29yX2N0bF9jcnRjKGNydGNfc3RhdGUpOwpAQCAtMTE2NDEsNyArMTE2NDEsNyBAQCBzdGF0 aWMgYm9vbCBpbnRlbF93bV9uZWVkX3VwZGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKmN1ciwKIAkJCQkgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpuZXcpCiB7CiAJLyogVXBk YXRlIHdhdGVybWFya3Mgb24gdGlsaW5nIG9yIHNpemUgY2hhbmdlcy4gKi8KLQlpZiAobmV3LT5i YXNlLnZpc2libGUgIT0gY3VyLT5iYXNlLnZpc2libGUpCisJaWYgKG5ldy0+dWFwaS52aXNpYmxl ICE9IGN1ci0+dWFwaS52aXNpYmxlKQogCQlyZXR1cm4gdHJ1ZTsKIAogCWlmICghY3VyLT5ody5m YiB8fCAhbmV3LT5ody5mYikKQEAgLTExNjQ5LDEwICsxMTY0OSwxMCBAQCBzdGF0aWMgYm9vbCBp bnRlbF93bV9uZWVkX3VwZGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmN1ciwK IAogCWlmIChjdXItPmh3LmZiLT5tb2RpZmllciAhPSBuZXctPmh3LmZiLT5tb2RpZmllciB8fAog CSAgICBjdXItPmh3LnJvdGF0aW9uICE9IG5ldy0+aHcucm90YXRpb24gfHwKLQkgICAgZHJtX3Jl Y3Rfd2lkdGgoJm5ldy0+YmFzZS5zcmMpICE9IGRybV9yZWN0X3dpZHRoKCZjdXItPmJhc2Uuc3Jj KSB8fAotCSAgICBkcm1fcmVjdF9oZWlnaHQoJm5ldy0+YmFzZS5zcmMpICE9IGRybV9yZWN0X2hl aWdodCgmY3VyLT5iYXNlLnNyYykgfHwKLQkgICAgZHJtX3JlY3Rfd2lkdGgoJm5ldy0+YmFzZS5k c3QpICE9IGRybV9yZWN0X3dpZHRoKCZjdXItPmJhc2UuZHN0KSB8fAotCSAgICBkcm1fcmVjdF9o ZWlnaHQoJm5ldy0+YmFzZS5kc3QpICE9IGRybV9yZWN0X2hlaWdodCgmY3VyLT5iYXNlLmRzdCkp CisJICAgIGRybV9yZWN0X3dpZHRoKCZuZXctPnVhcGkuc3JjKSAhPSBkcm1fcmVjdF93aWR0aCgm Y3VyLT51YXBpLnNyYykgfHwKKwkgICAgZHJtX3JlY3RfaGVpZ2h0KCZuZXctPnVhcGkuc3JjKSAh PSBkcm1fcmVjdF9oZWlnaHQoJmN1ci0+dWFwaS5zcmMpIHx8CisJICAgIGRybV9yZWN0X3dpZHRo KCZuZXctPnVhcGkuZHN0KSAhPSBkcm1fcmVjdF93aWR0aCgmY3VyLT51YXBpLmRzdCkgfHwKKwkg ICAgZHJtX3JlY3RfaGVpZ2h0KCZuZXctPnVhcGkuZHN0KSAhPSBkcm1fcmVjdF9oZWlnaHQoJmN1 ci0+dWFwaS5kc3QpKQogCQlyZXR1cm4gdHJ1ZTsKIAogCXJldHVybiBmYWxzZTsKQEAgLTExNjYw LDEwICsxMTY2MCwxMCBAQCBzdGF0aWMgYm9vbCBpbnRlbF93bV9uZWVkX3VwZGF0ZShjb25zdCBz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmN1ciwKIAogc3RhdGljIGJvb2wgbmVlZHNfc2NhbGlu Zyhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlKQogewotCWludCBzcmNfdyA9 IGRybV9yZWN0X3dpZHRoKCZzdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwotCWludCBzcmNfaCA9IGRy bV9yZWN0X2hlaWdodCgmc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKLQlpbnQgZHN0X3cgPSBkcm1f cmVjdF93aWR0aCgmc3RhdGUtPmJhc2UuZHN0KTsKLQlpbnQgZHN0X2ggPSBkcm1fcmVjdF9oZWln aHQoJnN0YXRlLT5iYXNlLmRzdCk7CisJaW50IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnN0YXRl LT51YXBpLnNyYykgPj4gMTY7CisJaW50IHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZzdGF0ZS0+ dWFwaS5zcmMpID4+IDE2OworCWludCBkc3RfdyA9IGRybV9yZWN0X3dpZHRoKCZzdGF0ZS0+dWFw aS5kc3QpOworCWludCBkc3RfaCA9IGRybV9yZWN0X2hlaWdodCgmc3RhdGUtPnVhcGkuZHN0KTsK IAogCXJldHVybiAoc3JjX3cgIT0gZHN0X3cgfHwgc3JjX2ggIT0gZHN0X2gpOwogfQpAQCAtMTE2 NzQsNyArMTE2NzQsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdlcyhjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdAogCQkJCSAgICBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewogCXN0cnVjdCBpbnRlbF9jcnRjICpj cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwotCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7 CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRl LT51YXBpLnBsYW5lKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGNydGMtPmJhc2UuZGV2KTsKIAlib29sIG1vZGVfY2hhbmdlZCA9IG5lZWRzX21vZGVzZXQo Y3J0Y19zdGF0ZSk7CiAJYm9vbCB3YXNfY3J0Y19lbmFibGVkID0gb2xkX2NydGNfc3RhdGUtPmh3 LmFjdGl2ZTsKQEAgLTExNjg4LDggKzExNjg4LDggQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19j YWxjX2NoYW5nZXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXQK IAkJCXJldHVybiByZXQ7CiAJfQogCi0Jd2FzX3Zpc2libGUgPSBvbGRfcGxhbmVfc3RhdGUtPmJh c2UudmlzaWJsZTsKLQl2aXNpYmxlID0gcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZTsKKwl3YXNf dmlzaWJsZSA9IG9sZF9wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlOworCXZpc2libGUgPSBwbGFu ZV9zdGF0ZS0+dWFwaS52aXNpYmxlOwogCiAJaWYgKCF3YXNfY3J0Y19lbmFibGVkICYmIFdBUk5f T04od2FzX3Zpc2libGUpKQogCQl3YXNfdmlzaWJsZSA9IGZhbHNlOwpAQCAtMTE3MDUsNyArMTE3 MDUsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdlcyhjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdAogCSAqIG9ubHkgY29tYmluZSB0aGUgcmVz dWx0cyBmcm9tIGFsbCBwbGFuZXMgaW4gdGhlIGN1cnJlbnQgcGxhY2U/CiAJICovCiAJaWYgKCFp c19jcnRjX2VuYWJsZWQpIHsKLQkJcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSA9IHZpc2libGUg PSBmYWxzZTsKKwkJcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSA9IHZpc2libGUgPSBmYWxzZTsK IAkJY3J0Y19zdGF0ZS0+YWN0aXZlX3BsYW5lcyAmPSB+QklUKHBsYW5lLT5pZCk7CiAJCWNydGNf c3RhdGUtPmRhdGFfcmF0ZVtwbGFuZS0+aWRdID0gMDsKIAl9CkBAIC0xMTg2NCw3ICsxMTg2NCw3 IEBAIHN0YXRpYyBpbnQgaWNsX2NoZWNrX252MTJfcGxhbmVzKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQogCQkJY29udGludWU7CiAKIAkJcGxhbmVfc3RhdGUtPnBsYW5hcl9s aW5rZWRfcGxhbmUgPSBOVUxMOwotCQlpZiAocGxhbmVfc3RhdGUtPnBsYW5hcl9zbGF2ZSAmJiAh cGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkgeworCQlpZiAocGxhbmVfc3RhdGUtPnBsYW5hcl9z bGF2ZSAmJiAhcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkgewogCQkJY3J0Y19zdGF0ZS0+YWN0 aXZlX3BsYW5lcyAmPSB+QklUKHBsYW5lLT5pZCk7CiAJCQljcnRjX3N0YXRlLT51cGRhdGVfcGxh bmVzIHw9IEJJVChwbGFuZS0+aWQpOwogCQl9CkBAIC0xMjI4MywxNCArMTIyODMsMTQgQEAgc3Rh dGljIGNvbnN0IGNoYXIgKm91dHB1dF9mb3JtYXRzKGVudW0gaW50ZWxfb3V0cHV0X2Zvcm1hdCBm b3JtYXQpCiAKIHN0YXRpYyB2b2lkIGludGVsX2R1bXBfcGxhbmVfc3RhdGUoY29uc3Qgc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUg KnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVj dCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5w bGFuZSk7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+ aHcuZmI7CiAJc3RydWN0IGRybV9mb3JtYXRfbmFtZV9idWYgZm9ybWF0X25hbWU7CiAKIAlpZiAo IWZiKSB7CiAJCURSTV9ERUJVR19LTVMoIltQTEFORTolZDolc10gZmI6IFtOT0ZCXSwgdmlzaWJs ZTogJXNcbiIsCiAJCQkgICAgICBwbGFuZS0+YmFzZS5iYXNlLmlkLCBwbGFuZS0+YmFzZS5uYW1l LAotCQkJICAgICAgeWVzbm8ocGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkpOworCQkJICAgICAg eWVzbm8ocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkpOwogCQlyZXR1cm47CiAJfQogCkBAIC0x MjI5OCwxMyArMTIyOTgsMTMgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHVtcF9wbGFuZV9zdGF0ZShj b25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogCQkgICAgICBwbGFu ZS0+YmFzZS5iYXNlLmlkLCBwbGFuZS0+YmFzZS5uYW1lLAogCQkgICAgICBmYi0+YmFzZS5pZCwg ZmItPndpZHRoLCBmYi0+aGVpZ2h0LAogCQkgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKGZiLT5m b3JtYXQtPmZvcm1hdCwgJmZvcm1hdF9uYW1lKSwKLQkJICAgICAgeWVzbm8ocGxhbmVfc3RhdGUt PmJhc2UudmlzaWJsZSkpOworCQkgICAgICB5ZXNubyhwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxl KSk7CiAJRFJNX0RFQlVHX0tNUygiXHRyb3RhdGlvbjogMHgleCwgc2NhbGVyOiAlZFxuIiwKIAkJ ICAgICAgcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uLCBwbGFuZV9zdGF0ZS0+c2NhbGVyX2lkKTsK LQlpZiAocGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKKwlpZiAocGxhbmVfc3RhdGUtPnVhcGku dmlzaWJsZSkKIAkJRFJNX0RFQlVHX0tNUygiXHRzcmM6ICIgRFJNX1JFQ1RfRlBfRk1UICIgZHN0 OiAiIERSTV9SRUNUX0ZNVCAiXG4iLAotCQkJICAgICAgRFJNX1JFQ1RfRlBfQVJHKCZwbGFuZV9z dGF0ZS0+YmFzZS5zcmMpLAotCQkJICAgICAgRFJNX1JFQ1RfQVJHKCZwbGFuZV9zdGF0ZS0+YmFz ZS5kc3QpKTsKKwkJCSAgICAgIERSTV9SRUNUX0ZQX0FSRygmcGxhbmVfc3RhdGUtPnVhcGkuc3Jj KSwKKwkJCSAgICAgIERSTV9SRUNUX0FSRygmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSk7CiB9CiAK IHN0YXRpYyB2b2lkIGludGVsX2R1bXBfcGlwZV9jb25maWcoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKnBpcGVfY29uZmlnLApAQCAtMTM0NTEsNyArMTM0NTEsNyBAQCBpbnRlbF92ZXJp ZnlfcGxhbmVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogCWZvcl9lYWNoX25l d19pbnRlbF9wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsCiAJCQkJCSAgcGxhbmVfc3RhdGUs IGkpCiAJCWFzc2VydF9wbGFuZShwbGFuZSwgcGxhbmVfc3RhdGUtPnBsYW5hcl9zbGF2ZSB8fAot CQkJICAgICBwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKTsKKwkJCSAgICAgcGxhbmVfc3RhdGUt PnVhcGkudmlzaWJsZSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNDgyMSw3ICsxNDgyMSw3IEBA IHN0YXRpYyB2b2lkIGFkZF9ycHNfYm9vc3RfYWZ0ZXJfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywKIAogc3RhdGljIGludCBpbnRlbF9wbGFuZV9waW5fZmIoc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9f aW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFu ZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYp OwogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwogCXN0 cnVjdCBpOTE1X3ZtYSAqdm1hOwpAQCAtMTQ4ODYsNyArMTQ4ODYsNyBAQCBpbnRlbF9wcmVwYXJl X3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCXN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqbmV3X3BsYW5lX3N0YXRlID0KIAkJdG9faW50ZWxfcGxhbmVfc3RhdGUoX25ld19wbGFu ZV9zdGF0ZSk7CiAJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPQotCQl0 b19pbnRlbF9hdG9taWNfc3RhdGUobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnN0YXRlKTsKKwkJdG9f aW50ZWxfYXRvbWljX3N0YXRlKG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5zdGF0ZSk7CiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+ZGV2KTsKIAlzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IG5ld19wbGFuZV9zdGF0ZS0+aHcuZmI7CiAJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7CkBAIC0xNDkxOSw5 ICsxNDkxOSw5IEBAIGludGVsX3ByZXBhcmVfcGxhbmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCiAJCX0KIAl9CiAKLQlpZiAobmV3X3BsYW5lX3N0YXRlLT5iYXNlLmZlbmNlKSB7IC8qIGV4 cGxpY2l0IGZlbmNpbmcgKi8KKwlpZiAobmV3X3BsYW5lX3N0YXRlLT51YXBpLmZlbmNlKSB7IC8q IGV4cGxpY2l0IGZlbmNpbmcgKi8KIAkJcmV0ID0gaTkxNV9zd19mZW5jZV9hd2FpdF9kbWFfZmVu Y2UoJmludGVsX3N0YXRlLT5jb21taXRfcmVhZHksCi0JCQkJCQkgICAgbmV3X3BsYW5lX3N0YXRl LT5iYXNlLmZlbmNlLAorCQkJCQkJICAgIG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5mZW5jZSwKIAkJ CQkJCSAgICBJOTE1X0ZFTkNFX1RJTUVPVVQsCiAJCQkJCQkgICAgR0ZQX0tFUk5FTCk7CiAJCWlm IChyZXQgPCAwKQpAQCAtMTQ5NDQsNyArMTQ5NDQsNyBAQCBpbnRlbF9wcmVwYXJlX3BsYW5lX2Zi KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCWZiX29ial9idW1wX3JlbmRlcl9wcmlvcml0eShv YmopOwogCWludGVsX2Zyb250YnVmZmVyX2ZsdXNoKG9iai0+ZnJvbnRidWZmZXIsIE9SSUdJTl9E SVJUWUZCKTsKIAotCWlmICghbmV3X3BsYW5lX3N0YXRlLT5iYXNlLmZlbmNlKSB7IC8qIGltcGxp Y2l0IGZlbmNpbmcgKi8KKwlpZiAoIW5ld19wbGFuZV9zdGF0ZS0+dWFwaS5mZW5jZSkgeyAvKiBp bXBsaWNpdCBmZW5jaW5nICovCiAJCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOwogCiAJCXJldCA9 IGk5MTVfc3dfZmVuY2VfYXdhaXRfcmVzZXJ2YXRpb24oJmludGVsX3N0YXRlLT5jb21taXRfcmVh ZHksCkBAIC0xNDk2Miw3ICsxNDk2Miw3IEBAIGludGVsX3ByZXBhcmVfcGxhbmVfZmIoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUsCiAJCX0KIAl9IGVsc2UgewogCQlhZGRfcnBzX2Jvb3N0X2FmdGVy X3ZibGFuayhuZXdfcGxhbmVfc3RhdGUtPmh3LmNydGMsCi0JCQkJCSAgIG5ld19wbGFuZV9zdGF0 ZS0+YmFzZS5mZW5jZSk7CisJCQkJCSAgIG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5mZW5jZSk7CiAJ fQogCiAJLyoKQEAgLTE0OTk1LDcgKzE0OTk1LDcgQEAgaW50ZWxfY2xlYW51cF9wbGFuZV9mYihz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm9sZF9w bGFuZV9zdGF0ZSA9CiAJCXRvX2ludGVsX3BsYW5lX3N0YXRlKF9vbGRfcGxhbmVfc3RhdGUpOwog CXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0KLQkJdG9faW50ZWxfYXRv bWljX3N0YXRlKG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS5zdGF0ZSk7CisJCXRvX2ludGVsX2F0b21p Y19zdGF0ZShvbGRfcGxhbmVfc3RhdGUtPnVhcGkuc3RhdGUpOwogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmRldik7CiAKIAlpZiAoaW50ZWxfc3Rh dGUtPnJwc19pbnRlcmFjdGl2ZSkgewpAQCAtMTUxNjQsOCArMTUxNjQsOCBAQCBpbnRlbF9sZWdh Y3lfY3Vyc29yX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCiAJICogdGhlIHBsYW5l LiAgVGhpcyBwcmV2ZW50cyBvdXIgYXN5bmMgdXBkYXRlJ3MgY2hhbmdlcyBmcm9tIGdldHRpbmcK IAkgKiBvdmVycmlkZGVuIGJ5IGEgcHJldmlvdXMgc3luY2hyb25vdXMgdXBkYXRlJ3Mgc3RhdGUu CiAJICovCi0JaWYgKG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS5jb21taXQgJiYKLQkgICAgIXRyeV93 YWl0X2Zvcl9jb21wbGV0aW9uKCZvbGRfcGxhbmVfc3RhdGUtPmJhc2UuY29tbWl0LT5od19kb25l KSkKKwlpZiAob2xkX3BsYW5lX3N0YXRlLT51YXBpLmNvbW1pdCAmJgorCSAgICAhdHJ5X3dhaXRf Zm9yX2NvbXBsZXRpb24oJm9sZF9wbGFuZV9zdGF0ZS0+dWFwaS5jb21taXQtPmh3X2RvbmUpKQog CQlnb3RvIHNsb3c7CiAKIAkvKgpAQCAtMTUxNzQsMTAgKzE1MTc0LDEwIEBAIGludGVsX2xlZ2Fj eV9jdXJzb3JfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKl9wbGFuZSwKIAkgKiBpbiB0aGUgZmFz dHBhdGguCiAJICovCiAJaWYgKG9sZF9wbGFuZV9zdGF0ZS0+dWFwaS5jcnRjICE9ICZjcnRjLT5i YXNlIHx8Ci0JICAgIG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS5zcmNfdyAhPSBzcmNfdyB8fAotCSAg ICBvbGRfcGxhbmVfc3RhdGUtPmJhc2Uuc3JjX2ggIT0gc3JjX2ggfHwKLQkgICAgb2xkX3BsYW5l X3N0YXRlLT5iYXNlLmNydGNfdyAhPSBjcnRjX3cgfHwKLQkgICAgb2xkX3BsYW5lX3N0YXRlLT5i YXNlLmNydGNfaCAhPSBjcnRjX2ggfHwKKwkgICAgb2xkX3BsYW5lX3N0YXRlLT51YXBpLnNyY193 ICE9IHNyY193IHx8CisJICAgIG9sZF9wbGFuZV9zdGF0ZS0+dWFwaS5zcmNfaCAhPSBzcmNfaCB8 fAorCSAgICBvbGRfcGxhbmVfc3RhdGUtPnVhcGkuY3J0Y193ICE9IGNydGNfdyB8fAorCSAgICBv bGRfcGxhbmVfc3RhdGUtPnVhcGkuY3J0Y19oICE9IGNydGNfaCB8fAogCSAgICAhb2xkX3BsYW5l X3N0YXRlLT51YXBpLmZiICE9ICFmYikKIAkJZ290byBzbG93OwogCkBAIC0xNTE5MSwxNiArMTUx OTEsMTYgQEAgaW50ZWxfbGVnYWN5X2N1cnNvcl91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqX3Bs YW5lLAogCQlnb3RvIG91dF9mcmVlOwogCX0KIAotCWRybV9hdG9taWNfc2V0X2ZiX2Zvcl9wbGFu ZSgmbmV3X3BsYW5lX3N0YXRlLT5iYXNlLCBmYik7CisJZHJtX2F0b21pY19zZXRfZmJfZm9yX3Bs YW5lKCZuZXdfcGxhbmVfc3RhdGUtPnVhcGksIGZiKTsKIAotCW5ld19wbGFuZV9zdGF0ZS0+YmFz ZS5zcmNfeCA9IHNyY194OwotCW5ld19wbGFuZV9zdGF0ZS0+YmFzZS5zcmNfeSA9IHNyY195Owot CW5ld19wbGFuZV9zdGF0ZS0+YmFzZS5zcmNfdyA9IHNyY193OwotCW5ld19wbGFuZV9zdGF0ZS0+ YmFzZS5zcmNfaCA9IHNyY19oOwotCW5ld19wbGFuZV9zdGF0ZS0+YmFzZS5jcnRjX3ggPSBjcnRj X3g7Ci0JbmV3X3BsYW5lX3N0YXRlLT5iYXNlLmNydGNfeSA9IGNydGNfeTsKLQluZXdfcGxhbmVf c3RhdGUtPmJhc2UuY3J0Y193ID0gY3J0Y193OwotCW5ld19wbGFuZV9zdGF0ZS0+YmFzZS5jcnRj X2ggPSBjcnRjX2g7CisJbmV3X3BsYW5lX3N0YXRlLT51YXBpLnNyY194ID0gc3JjX3g7CisJbmV3 X3BsYW5lX3N0YXRlLT51YXBpLnNyY195ID0gc3JjX3k7CisJbmV3X3BsYW5lX3N0YXRlLT51YXBp LnNyY193ID0gc3JjX3c7CisJbmV3X3BsYW5lX3N0YXRlLT51YXBpLnNyY19oID0gc3JjX2g7CisJ bmV3X3BsYW5lX3N0YXRlLT51YXBpLmNydGNfeCA9IGNydGNfeDsKKwluZXdfcGxhbmVfc3RhdGUt PnVhcGkuY3J0Y195ID0gY3J0Y195OworCW5ld19wbGFuZV9zdGF0ZS0+dWFwaS5jcnRjX3cgPSBj cnRjX3c7CisJbmV3X3BsYW5lX3N0YXRlLT51YXBpLmNydGNfaCA9IGNydGNfaDsKIAogCXJldCA9 IGludGVsX3BsYW5lX2F0b21pY19jaGVja193aXRoX3N0YXRlKGNydGNfc3RhdGUsIG5ld19jcnRj X3N0YXRlLAogCQkJCQkJICBvbGRfcGxhbmVfc3RhdGUsIG5ld19wbGFuZV9zdGF0ZSk7CkBAIC0x NTIxOCw3ICsxNTIxOCw3IEBAIGludGVsX2xlZ2FjeV9jdXJzb3JfdXBkYXRlKHN0cnVjdCBkcm1f cGxhbmUgKl9wbGFuZSwKIAkJCQlwbGFuZS0+ZnJvbnRidWZmZXJfYml0KTsKIAogCS8qIFN3YXAg cGxhbmUgc3RhdGUgKi8KLQlwbGFuZS0+YmFzZS5zdGF0ZSA9ICZuZXdfcGxhbmVfc3RhdGUtPmJh c2U7CisJcGxhbmUtPmJhc2Uuc3RhdGUgPSAmbmV3X3BsYW5lX3N0YXRlLT51YXBpOwogCiAJLyoK IAkgKiBXZSBjYW5ub3Qgc3dhcCBjcnRjX3N0YXRlIGFzIGl0IG1heSBiZSBpbiB1c2UgYnkgYW4g YXRvbWljIGNvbW1pdCBvcgpAQCAtMTUyMzIsNyArMTUyMzIsNyBAQCBpbnRlbF9sZWdhY3lfY3Vy c29yX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCiAJICovCiAJY3J0Y19zdGF0ZS0+ YWN0aXZlX3BsYW5lcyA9IG5ld19jcnRjX3N0YXRlLT5hY3RpdmVfcGxhbmVzOwogCi0JaWYgKG5l d19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCWlmIChuZXdfcGxhbmVfc3RhdGUtPnVhcGku dmlzaWJsZSkKIAkJaW50ZWxfdXBkYXRlX3BsYW5lKHBsYW5lLCBjcnRjX3N0YXRlLCBuZXdfcGxh bmVfc3RhdGUpOwogCWVsc2UKIAkJaW50ZWxfZGlzYWJsZV9wbGFuZShwbGFuZSwgY3J0Y19zdGF0 ZSk7CkBAIC0xNTI0Myw5ICsxNTI0MywxMSBAQCBpbnRlbF9sZWdhY3lfY3Vyc29yX3VwZGF0ZShz dHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCiAJaWYgKG5ld19jcnRjX3N0YXRlKQogCQlpbnRlbF9j cnRjX2Rlc3Ryb3lfc3RhdGUoJmNydGMtPmJhc2UsICZuZXdfY3J0Y19zdGF0ZS0+dWFwaSk7CiAJ aWYgKHJldCkKLQkJaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZSgmcGxhbmUtPmJhc2UsICZuZXdf cGxhbmVfc3RhdGUtPmJhc2UpOworCQlpbnRlbF9wbGFuZV9kZXN0cm95X3N0YXRlKCZwbGFuZS0+ YmFzZSwKKwkJCQkJICAmbmV3X3BsYW5lX3N0YXRlLT51YXBpKTsKIAllbHNlCi0JCWludGVsX3Bs YW5lX2Rlc3Ryb3lfc3RhdGUoJnBsYW5lLT5iYXNlLCAmb2xkX3BsYW5lX3N0YXRlLT5iYXNlKTsK KwkJaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZSgmcGxhbmUtPmJhc2UsCisJCQkJCSAgJm9sZF9w bGFuZV9zdGF0ZS0+dWFwaSk7CiAJcmV0dXJuIHJldDsKIAogc2xvdzoKQEAgLTE2OTQzLDcgKzE2 OTQ1LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2FuaXRpemVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKIAkJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUg PQogCQkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lLT5iYXNlLnN0YXRlKTsKIAotCQkJaWYg KHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUgJiYKKwkJCWlmIChwbGFuZV9zdGF0ZS0+dWFwaS52 aXNpYmxlICYmCiAJCQkgICAgcGxhbmUtPmJhc2UudHlwZSAhPSBEUk1fUExBTkVfVFlQRV9QUklN QVJZKQogCQkJCWludGVsX3BsYW5lX2Rpc2FibGVfbm9hdG9taWMoY3J0YywgcGxhbmUpOwogCQl9 CkBAIC0xNzI4Miw3ICsxNzI4NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX21vZGVzZXRfcmVhZG91 dF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQkJICogRklYTUUgZG9uJ3QgaGF2 ZSB0aGUgZmIgeWV0LCBzbyBjYW4ndAogCQkJICogdXNlIGludGVsX3BsYW5lX2RhdGFfcmF0ZSgp IDooCiAJCQkgKi8KLQkJCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCQkJaWYgKHBs YW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCQkJY3J0Y19zdGF0ZS0+ZGF0YV9yYXRlW3BsYW5l LT5pZF0gPQogCQkJCQk0ICogY3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZTsKIAkJfQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mYmMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmJjLmMKaW5kZXggM2VhOGQwMTBkYjZjLi45MmM3ZWIy NDM1NTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmJj LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mYmMuYwpAQCAtNDMw LDcgKzQzMCw3IEBAIHN0YXRpYyBib29sIG11bHRpcGxlX3BpcGVzX29rKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAogCWlmICghbm9fZmJjX29uX211bHRpcGxlX3BpcGVzKGRldl9wcml2KSkKIAkJ cmV0dXJuIHRydWU7CiAKLQlpZiAocGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKKwlpZiAocGxh bmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKIAkJZmJjLT52aXNpYmxlX3BpcGVzX21hc2sgfD0gKDEg PDwgcGlwZSk7CiAJZWxzZQogCQlmYmMtPnZpc2libGVfcGlwZXNfbWFzayAmPSB+KDEgPDwgcGlw ZSk7CkBAIC02NzcsMTIgKzY3NywxMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9mYmNfdXBkYXRlX3N0 YXRlX2NhY2hlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCSAqIHRoZSA5MC8yNzAgZGVncmVl IHBsYW5lIHJvdGF0aW9uIGNhc2VzICh0byBtYXRjaCB0aGUKIAkgKiBHVFQgbWFwcGluZyksIGhl bmNlIG5vIG5lZWQgdG8gYWNjb3VudCBmb3Igcm90YXRpb24gaGVyZS4KIAkgKi8KLQljYWNoZS0+ cGxhbmUuc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAx NjsKLQljYWNoZS0+cGxhbmUuc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5i YXNlLnNyYykgPj4gMTY7Ci0JY2FjaGUtPnBsYW5lLnZpc2libGUgPSBwbGFuZV9zdGF0ZS0+YmFz ZS52aXNpYmxlOworCWNhY2hlLT5wbGFuZS5zcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+dWFwaS5zcmMpID4+IDE2OworCWNhY2hlLT5wbGFuZS5zcmNfaCA9IGRybV9yZWN0X2hl aWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKKwljYWNoZS0+cGxhbmUudmlzaWJs ZSA9IHBsYW5lX3N0YXRlLT51YXBpLnZpc2libGU7CiAJY2FjaGUtPnBsYW5lLmFkanVzdGVkX3gg PSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ueDsKIAljYWNoZS0+cGxhbmUuYWRqdXN0ZWRf eSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS55OwotCWNhY2hlLT5wbGFuZS55ID0gcGxh bmVfc3RhdGUtPmJhc2Uuc3JjLnkxID4+IDE2OworCWNhY2hlLT5wbGFuZS55ID0gcGxhbmVfc3Rh dGUtPnVhcGkuc3JjLnkxID4+IDE2OwogCiAJY2FjaGUtPnBsYW5lLnBpeGVsX2JsZW5kX21vZGUg PSBwbGFuZV9zdGF0ZS0+aHcucGl4ZWxfYmxlbmRfbW9kZTsKIApAQCAtMTA1Miw3ICsxMDUyLDcg QEAgdm9pZCBpbnRlbF9mYmNfY2hvb3NlX2NydGMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogCQlpZiAoIXBsYW5lLT5oYXNfZmJjKQogCQkJY29udGludWU7CiAKLQkJaWYgKCFw bGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCQlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2li bGUpCiAJCQljb250aW51ZTsKIAogCQljcnRjX3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9uZXdf Y3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX292ZXJsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfb3ZlcmxheS5jCmluZGV4IDQ2ZTNkNmNmNTk3Ni4uOGNmYjc4NWU3NjFjIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX292ZXJsYXkuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX292ZXJsYXkuYwpAQCAtNjY4LDcgKzY2 OCw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9jb2xvcmtleShzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAq b3ZlcmxheSwKIAlpZiAob3ZlcmxheS0+Y29sb3Jfa2V5X2VuYWJsZWQpCiAJCWZsYWdzIHw9IERT VF9LRVlfRU5BQkxFOwogCi0JaWYgKHN0YXRlLT5iYXNlLnZpc2libGUpCisJaWYgKHN0YXRlLT51 YXBpLnZpc2libGUpCiAJCWZvcm1hdCA9IHN0YXRlLT5ody5mYi0+Zm9ybWF0LT5mb3JtYXQ7CiAK IAlzd2l0Y2ggKGZvcm1hdCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf c3ByaXRlLmMKaW5kZXggMjQ1MjYzMDMxMjk5Li4wMGY4M2QzN2FiY2YgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYwpAQCAtMjQwLDcgKzI0MCw3IEBAIHZv aWQgaW50ZWxfcGlwZV91cGRhdGVfZW5kKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0 Y19zdGF0ZSkKIAogaW50IGludGVsX3BsYW5lX2NoZWNrX3N0cmlkZShjb25zdCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxh bmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGlu dGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5l KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5m YjsKIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247CiAJ dTMyIHN0cmlkZSwgbWF4X3N0cmlkZTsKQEAgLTI1Miw3ICsyNTIsNyBAQCBpbnQgaW50ZWxfcGxh bmVfY2hlY2tfc3RyaWRlKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUpCiAJICoga2ljayBpbiBkdWUgdGhlIHBsYW5lIGJlaW5nIGludmlzaWJsZS4KIAkgKi8KIAlp ZiAoaW50ZWxfcGxhbmVfY2FuX3JlbWFwKHBsYW5lX3N0YXRlKSAmJgotCSAgICAhcGxhbmVfc3Rh dGUtPmJhc2UudmlzaWJsZSkKKwkgICAgIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCXJl dHVybiAwOwogCiAJLyogRklYTUUgb3RoZXIgY29sb3IgcGxhbmVzPyAqLwpAQCAtMjczLDcgKzI3 Myw3IEBAIGludCBpbnRlbF9wbGFuZV9jaGVja19zdHJpZGUoY29uc3Qgc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIGludCBpbnRlbF9wbGFuZV9jaGVja19zcmNfY29vcmRp bmF0ZXMoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKIAljb25zdCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKLQlzdHJ1Y3Qg ZHJtX3JlY3QgKnNyYyA9ICZwbGFuZV9zdGF0ZS0+YmFzZS5zcmM7CisJc3RydWN0IGRybV9yZWN0 ICpzcmMgPSAmcGxhbmVfc3RhdGUtPnVhcGkuc3JjOwogCXUzMiBzcmNfeCwgc3JjX3ksIHNyY193 LCBzcmNfaCwgaHN1YiwgdnN1YjsKIAlib29sIHJvdGF0ZWQgPSBkcm1fcm90YXRpb25fOTBfb3Jf MjcwKHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbik7CiAKQEAgLTM1MiwxOSArMzUyLDE5IEBAIHNr bF9wcm9ncmFtX3NjYWxlcihzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCWludCBzY2FsZXJf aWQgPSBwbGFuZV9zdGF0ZS0+c2NhbGVyX2lkOwogCWNvbnN0IHN0cnVjdCBpbnRlbF9zY2FsZXIg KnNjYWxlciA9CiAJCSZjcnRjX3N0YXRlLT5zY2FsZXJfc3RhdGUuc2NhbGVyc1tzY2FsZXJfaWRd OwotCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7Ci0JaW50IGNydGNfeSA9 IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC55MTsKLQl1MzIgY3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgo JnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Ci0JdTMyIGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgm cGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKKwlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPnVhcGku ZHN0LngxOworCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueTE7CisJdTMyIGNy dGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOworCXUzMiBjcnRj X2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7CiAJdTE2IHlfaHBo YXNlLCB1dl9yZ2JfaHBoYXNlOwogCXUxNiB5X3ZwaGFzZSwgdXZfcmdiX3ZwaGFzZTsKIAlpbnQg aHNjYWxlLCB2c2NhbGU7CiAKLQloc2NhbGUgPSBkcm1fcmVjdF9jYWxjX2hzY2FsZSgmcGxhbmVf c3RhdGUtPmJhc2Uuc3JjLAotCQkJCSAgICAgICZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QsCisJaHNj YWxlID0gZHJtX3JlY3RfY2FsY19oc2NhbGUoJnBsYW5lX3N0YXRlLT51YXBpLnNyYywKKwkJCQkg ICAgICAmcGxhbmVfc3RhdGUtPnVhcGkuZHN0LAogCQkJCSAgICAgIDAsIElOVF9NQVgpOwotCXZz Y2FsZSA9IGRybV9yZWN0X2NhbGNfdnNjYWxlKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMsCi0JCQkJ ICAgICAgJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCwKKwl2c2NhbGUgPSBkcm1fcmVjdF9jYWxjX3Zz Y2FsZSgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjLAorCQkJCSAgICAgICZwbGFuZV9zdGF0ZS0+dWFw aS5kc3QsCiAJCQkJICAgICAgMCwgSU5UX01BWCk7CiAKIAkvKiBUT0RPOiBoYW5kbGUgc3ViLXBp eGVsIGNvb3JkaW5hdGVzICovCkBAIC01MzUsMTIgKzUzNSwxMiBAQCBza2xfcHJvZ3JhbV9wbGFu ZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCXUzMiBzdXJmX2FkZHIgPSBwbGFuZV9zdGF0 ZS0+Y29sb3JfcGxhbmVbY29sb3JfcGxhbmVdLm9mZnNldDsKIAl1MzIgc3RyaWRlID0gc2tsX3Bs YW5lX3N0cmlkZShwbGFuZV9zdGF0ZSwgY29sb3JfcGxhbmUpOwogCXUzMiBhdXhfc3RyaWRlID0g c2tsX3BsYW5lX3N0cmlkZShwbGFuZV9zdGF0ZSwgMSk7Ci0JaW50IGNydGNfeCA9IHBsYW5lX3N0 YXRlLT5iYXNlLmRzdC54MTsKLQlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0Lnkx OworCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDE7CisJaW50IGNydGNfeSA9 IHBsYW5lX3N0YXRlLT51YXBpLmRzdC55MTsKIAl1MzIgeCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9w bGFuZVtjb2xvcl9wbGFuZV0ueDsKIAl1MzIgeSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVtj b2xvcl9wbGFuZV0ueTsKLQl1MzIgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PmJhc2Uuc3JjKSA+PiAxNjsKLQl1MzIgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0 YXRlLT5iYXNlLnNyYykgPj4gMTY7CisJdTMyIHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5l X3N0YXRlLT51YXBpLnNyYykgPj4gMTY7CisJdTMyIHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZw bGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2OwogCXN0cnVjdCBpbnRlbF9wbGFuZSAqbGlua2Vk ID0gcGxhbmVfc3RhdGUtPnBsYW5hcl9saW5rZWRfcGxhbmU7CiAJY29uc3Qgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJdTggYWxwaGEgPSBwbGFuZV9z dGF0ZS0+aHcuYWxwaGEgPj4gODsKQEAgLTcxNyw3ICs3MTcsNyBAQCBzdGF0aWMgdm9pZCBpOXh4 X3BsYW5lX2xpbmVhcl9nYW1tYSh1MTYgZ2FtbWFbOF0pCiBzdGF0aWMgdm9pZAogY2h2X3VwZGF0 ZV9jc2MoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJh c2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShw bGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwogCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQg PSBwbGFuZS0+aWQ7CkBAIC03NzYsNyArNzc2LDcgQEAgY2h2X3VwZGF0ZV9jc2MoY29uc3Qgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHN0YXRpYyB2b2lkCiB2bHZfdXBk YXRlX2NscmMoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsK LQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUt PmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwogCWNvbnN0IHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwogCWVudW0gcGlwZSBwaXBlID0gcGxh bmUtPnBpcGU7CkBAIC04OTEsNyArODkxLDcgQEAgc3RhdGljIHUzMiB2bHZfc3ByaXRlX2N0bChj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAogc3RhdGljIHZvaWQg dmx2X3VwZGF0ZV9nYW1tYShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlKQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFu ZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2lu dGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7CiAJY29uc3Qgc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJZW51bSBwaXBlIHBp cGUgPSBwbGFuZS0+cGlwZTsKQEAgLTkyNSwxMCArOTI1LDEwIEBAIHZsdl91cGRhdGVfcGxhbmUo c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKIAl1MzIgc3Byc3VyZl9vZmZzZXQgPSBwbGFuZV9z dGF0ZS0+Y29sb3JfcGxhbmVbMF0ub2Zmc2V0OwogCXUzMiBsaW5lYXJfb2Zmc2V0OwogCWNvbnN0 IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNr ZXk7Ci0JaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC54MTsKLQlpbnQgY3J0Y195 ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LnkxOwotCXUzMiBjcnRjX3cgPSBkcm1fcmVjdF93aWR0 aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKLQl1MzIgY3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0 KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOworCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+dWFw aS5kc3QueDE7CisJaW50IGNydGNfeSA9IHBsYW5lX3N0YXRlLT51YXBpLmRzdC55MTsKKwl1MzIg Y3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7CisJdTMyIGNy dGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKIAl1MzIgeCA9 IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS54OwogCXUzMiB5ID0gcGxhbmVfc3RhdGUtPmNv bG9yX3BsYW5lWzBdLnk7CiAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKQEAgLTEwMzUsNyArMTAz NSw3IEBAIHN0YXRpYyB1MzIgaXZiX3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCiAJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KLQkJ dG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKKwkJdG9faTkxNShwbGFuZV9z dGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9z dGF0ZS0+aHcucm90YXRpb247CiAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3Jr ZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKQEAgLTExMDUsNyArMTEwNSw3IEBAIHN0YXRp YyB2b2lkIGl2Yl9zcHJpdGVfbGluZWFyX2dhbW1hKHUxNiBnYW1tYVsxOF0pCiAKIHN0YXRpYyB2 b2lkIGl2Yl91cGRhdGVfZ2FtbWEoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUo cGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0 b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwogCWVudW0gcGlw ZSBwaXBlID0gcGxhbmUtPnBpcGU7CiAJdTE2IGdhbW1hWzE4XTsKQEAgLTExNDEsMTQgKzExNDEs MTQgQEAgaXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCXUzMiBz cHJzdXJmX29mZnNldCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS5vZmZzZXQ7CiAJdTMy IGxpbmVhcl9vZmZzZXQ7CiAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkg KmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKLQlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPmJh c2UuZHN0LngxOwotCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueTE7Ci0JdTMy IGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwotCXUzMiBj cnRjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7CisJaW50IGNy dGNfeCA9IHBsYW5lX3N0YXRlLT51YXBpLmRzdC54MTsKKwlpbnQgY3J0Y195ID0gcGxhbmVfc3Rh dGUtPnVhcGkuZHN0LnkxOworCXUzMiBjcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3Rh dGUtPnVhcGkuZHN0KTsKKwl1MzIgY3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0 ZS0+dWFwaS5kc3QpOwogCXUzMiB4ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLng7CiAJ dTMyIHkgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ueTsKLQl1MzIgc3JjX3cgPSBkcm1f cmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKLQl1MzIgc3JjX2ggPSBk cm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7CisJdTMyIHNyY193 ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7CisJdTMyIHNy Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2OwogCXUz MiBzcHJjdGwsIHNwcnNjYWxlID0gMDsKIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwogCkBAIC0x MjY5LDcgKzEyNjksNyBAQCBzdGF0aWMgdTMyIGc0eF9zcHJpdGVfY3RsKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9Ci0JCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7CisJCXRvX2k5 MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJdW5zaWduZWQgaW50IHJvdGF0aW9u ID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwogCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3By aXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7CkBAIC0xMzI2LDcgKzEzMjYs NyBAQCBzdGF0aWMgdTMyIGc0eF9zcHJpdGVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAogCiBzdGF0aWMgdm9pZCBnNHhfdXBkYXRlX2dhbW1hKGNvbnN0IHN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVh cGkucGxhbmUpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo cGxhbmUtPmJhc2UuZGV2KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBs YW5lX3N0YXRlLT5ody5mYjsKIAllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwpAQCAtMTM1 OCw3ICsxMzU4LDcgQEAgc3RhdGljIHZvaWQgaWxrX3Nwcml0ZV9saW5lYXJfZ2FtbWEodTE2IGdh bW1hWzE3XSkKIAogc3RhdGljIHZvaWQgaWxrX3VwZGF0ZV9nYW1tYShjb25zdCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxh bmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGlu dGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5l KTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5i YXNlLmRldik7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0 ZS0+aHcuZmI7CiAJZW51bSBwaXBlIHBpcGUgPSBwbGFuZS0+cGlwZTsKQEAgLTEzOTQsMTQgKzEz OTQsMTQgQEAgZzR4X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCXUz MiBkdnNzdXJmX29mZnNldCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS5vZmZzZXQ7CiAJ dTMyIGxpbmVhcl9vZmZzZXQ7CiAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3Jr ZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKLQlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUt PmJhc2UuZHN0LngxOwotCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueTE7Ci0J dTMyIGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwotCXUz MiBjcnRjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7CisJaW50 IGNydGNfeCA9IHBsYW5lX3N0YXRlLT51YXBpLmRzdC54MTsKKwlpbnQgY3J0Y195ID0gcGxhbmVf c3RhdGUtPnVhcGkuZHN0LnkxOworCXUzMiBjcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVf c3RhdGUtPnVhcGkuZHN0KTsKKwl1MzIgY3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9z dGF0ZS0+dWFwaS5kc3QpOwogCXUzMiB4ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLng7 CiAJdTMyIHkgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ueTsKLQl1MzIgc3JjX3cgPSBk cm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKLQl1MzIgc3JjX2gg PSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7CisJdTMyIHNy Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7CisJdTMy IHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owog CXUzMiBkdnNjbnRyLCBkdnNzY2FsZSA9IDA7CiAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKIApA QCAtMTUxMCw4ICsxNTEwLDggQEAgZzR4X3Nwcml0ZV9jaGVja19zY2FsaW5nKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCiB7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFu ZV9zdGF0ZS0+aHcuZmI7Ci0JY29uc3Qgc3RydWN0IGRybV9yZWN0ICpzcmMgPSAmcGxhbmVfc3Rh dGUtPmJhc2Uuc3JjOwotCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqZHN0ID0gJnBsYW5lX3N0YXRl LT5iYXNlLmRzdDsKKwljb25zdCBzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9ICZwbGFuZV9zdGF0ZS0+ dWFwaS5zcmM7CisJY29uc3Qgc3RydWN0IGRybV9yZWN0ICpkc3QgPSAmcGxhbmVfc3RhdGUtPnVh cGkuZHN0OwogCWludCBzcmNfeCwgc3JjX3csIHNyY19oLCBjcnRjX3csIGNydGNfaDsKIAljb25z dCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9CiAJCSZjcnRjX3N0YXRl LT5ody5hZGp1c3RlZF9tb2RlOwpAQCAtMTU3MCw3ICsxNTcwLDcgQEAgc3RhdGljIGludAogZzR4 X3Nwcml0ZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJIHN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVh cGkucGxhbmUpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo cGxhbmUtPmJhc2UuZGV2KTsKIAlpbnQgbWluX3NjYWxlID0gRFJNX1BMQU5FX0hFTFBFUl9OT19T Q0FMSU5HOwogCWludCBtYXhfc2NhbGUgPSBEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkc7CkBA IC0xNTg2LDcgKzE1ODYsNyBAQCBnNHhfc3ByaXRlX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAogCQl9CiAJfQogCi0JcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hl Y2tfcGxhbmVfc3RhdGUoJnBsYW5lX3N0YXRlLT5iYXNlLAorCXJldCA9IGRybV9hdG9taWNfaGVs cGVyX2NoZWNrX3BsYW5lX3N0YXRlKCZwbGFuZV9zdGF0ZS0+dWFwaSwKIAkJCQkJCSAgJmNydGNf c3RhdGUtPnVhcGksCiAJCQkJCQkgIG1pbl9zY2FsZSwgbWF4X3NjYWxlLAogCQkJCQkJICB0cnVl LCB0cnVlKTsKQEAgLTE1OTcsNyArMTU5Nyw3IEBAIGc0eF9zcHJpdGVfY2hlY2soc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAot CWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBp LnZpc2libGUpCiAJCXJldHVybiAwOwogCiAJcmV0ID0gaW50ZWxfcGxhbmVfY2hlY2tfc3JjX2Nv b3JkaW5hdGVzKHBsYW5lX3N0YXRlKTsKQEAgLTE2MTgsNyArMTYxOCw3IEBAIGc0eF9zcHJpdGVf Y2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAKIGludCBjaHZfcGxh bmVfY2hlY2tfcm90YXRpb24oY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9z dGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxh bmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19p bnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwogCXVuc2lnbmVkIGlu dCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKIApAQCAtMTY0Myw3ICsxNjQz LDcgQEAgdmx2X3Nwcml0ZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0ID0gZHJtX2F0b21pY19oZWxwZXJf Y2hlY2tfcGxhbmVfc3RhdGUoJnBsYW5lX3N0YXRlLT5iYXNlLAorCXJldCA9IGRybV9hdG9taWNf aGVscGVyX2NoZWNrX3BsYW5lX3N0YXRlKCZwbGFuZV9zdGF0ZS0+dWFwaSwKIAkJCQkJCSAgJmNy dGNfc3RhdGUtPnVhcGksCiAJCQkJCQkgIERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywKIAkJ CQkJCSAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLApAQCAtMTY1NSw3ICsxNjU1LDcgQEAg dmx2X3Nwcml0ZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlp ZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxl KQorCWlmICghcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKIAkJcmV0dXJuIDA7CiAKIAlyZXQg PSBpbnRlbF9wbGFuZV9jaGVja19zcmNfY29vcmRpbmF0ZXMocGxhbmVfc3RhdGUpOwpAQCAtMTY3 MCw3ICsxNjcwLDcgQEAgdmx2X3Nwcml0ZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKIHN0YXRpYyBpbnQgc2tsX3BsYW5lX2NoZWNrX2ZiKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJICAgICAgY29uc3Qgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l ID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFz ZS5kZXYpOwogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUt Pmh3LmZiOwogCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlv bjsKQEAgLTE3NDUsOSArMTc0NSw5IEBAIHN0YXRpYyBpbnQgc2tsX3BsYW5lX2NoZWNrX2RzdF9j b29yZGluYXRlcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zCiAJCQkJCSAg IGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7CiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFz ZS5wbGFuZS0+ZGV2KTsKLQlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LngxOwot CWludCBjcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKKwkJ dG9faTkxNShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKKwlpbnQgY3J0Y194ID0gcGxh bmVfc3RhdGUtPnVhcGkuZHN0LngxOworCWludCBjcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxh bmVfc3RhdGUtPnVhcGkuZHN0KTsKIAlpbnQgcGlwZV9zcmNfdyA9IGNydGNfc3RhdGUtPnBpcGVf c3JjX3c7CiAKIAkvKgpAQCAtMTc3NSw3ICsxNzc1LDcgQEAgc3RhdGljIGludCBza2xfcGxhbmVf Y2hlY2tfbnYxMl9yb3RhdGlvbihjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5l X3MKIHsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5o dy5mYjsKIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247 Ci0JaW50IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4g MTY7CisJaW50IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykg Pj4gMTY7CiAKIAkvKiBEaXNwbGF5IFdBICMxMTA2ICovCiAJaWYgKGRybV9mb3JtYXRfaW5mb19p c195dXZfc2VtaXBsYW5hcihmYi0+Zm9ybWF0KSAmJiBzcmNfdyAmIDMgJiYKQEAgLTE3OTEsNyAr MTc5MSw3IEBAIHN0YXRpYyBpbnQgc2tsX3BsYW5lX2NoZWNrX252MTJfcm90YXRpb24oY29uc3Qg c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zCiBzdGF0aWMgaW50IHNrbF9wbGFuZV9j aGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCSAgIHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxh bmUpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUt PmJhc2UuZGV2KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0 YXRlLT5ody5mYjsKIAlpbnQgbWluX3NjYWxlID0gRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5H OwpAQCAtMTgwOCw3ICsxODA4LDcgQEAgc3RhdGljIGludCBza2xfcGxhbmVfY2hlY2soc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCW1heF9zY2FsZSA9IHNrbF9tYXhfc2Nh bGUoY3J0Y19zdGF0ZSwgZmItPmZvcm1hdCk7CiAJfQogCi0JcmV0ID0gZHJtX2F0b21pY19oZWxw ZXJfY2hlY2tfcGxhbmVfc3RhdGUoJnBsYW5lX3N0YXRlLT5iYXNlLAorCXJldCA9IGRybV9hdG9t aWNfaGVscGVyX2NoZWNrX3BsYW5lX3N0YXRlKCZwbGFuZV9zdGF0ZS0+dWFwaSwKIAkJCQkJCSAg JmNydGNfc3RhdGUtPnVhcGksCiAJCQkJCQkgIG1pbl9zY2FsZSwgbWF4X3NjYWxlLAogCQkJCQkJ ICB0cnVlLCB0cnVlKTsKQEAgLTE4MTksNyArMTgxOSw3IEBAIHN0YXRpYyBpbnQgc2tsX3BsYW5l X2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCWlmIChyZXQpCiAJ CXJldHVybiByZXQ7CiAKLQlpZiAoIXBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCisJaWYgKCFw bGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQogCQlyZXR1cm4gMDsKIAogCXJldCA9IHNrbF9wbGFu ZV9jaGVja19kc3RfY29vcmRpbmF0ZXMoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUpOwpAQCAtMTgz Niw3ICsxODM2LDcgQEAgc3RhdGljIGludCBza2xfcGxhbmVfY2hlY2soc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCiAKIAkvKiBIVyBvbmx5IGhhcyA4IGJpdHMgcGl4ZWwgcHJl Y2lzaW9uLCBkaXNhYmxlIHBsYW5lIGlmIGludmlzaWJsZSAqLwogCWlmICghKHBsYW5lX3N0YXRl LT5ody5hbHBoYSA+PiA4KSkKLQkJcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSA9IGZhbHNlOwor CQlwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlID0gZmFsc2U7CiAKIAlwbGFuZV9zdGF0ZS0+Y3Rs ID0gc2tsX3BsYW5lX2N0bChjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSk7CiAKQEAgLTE4NTUsNyAr MTg1NSw3IEBAIHN0YXRpYyBib29sIGhhc19kc3Rfa2V5X2luX3ByaW1hcnlfcGxhbmUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogc3RhdGljIHZvaWQgaW50ZWxfcGxhbmVfc2V0 X2NrZXkoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKIAkJCQkgY29uc3Qg c3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKnNldCkKIHsKLQlzdHJ1Y3QgaW50ZWxf cGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwor CXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+ dWFwaS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShwbGFuZS0+YmFzZS5kZXYpOwogCXN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICpr ZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDEx ZjM2YmFmMTAyMS4uMjA4YWI5MDViN2ViIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTc5 Niw3ICs3OTYsNyBAQCBzdGF0aWMgaW50IGludGVsX3dtX251bV9sZXZlbHMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogc3RhdGljIGJvb2wgaW50ZWxfd21fcGxhbmVfdmlzaWJs ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCQkgICBjb25z dCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7 CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRl LT51YXBpLnBsYW5lKTsKIAogCS8qIEZJWE1FIGNoZWNrIHRoZSAnZW5hYmxlJyBpbnN0ZWFkICov CiAJaWYgKCFjcnRjX3N0YXRlLT5ody5hY3RpdmUpCkBAIC04MTMsNyArODEzLDcgQEAgc3RhdGlj IGJvb2wgaW50ZWxfd21fcGxhbmVfdmlzaWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKIAlpZiAocGxhbmUtPmlkID09IFBMQU5FX0NVUlNPUikKIAkJcmV0dXJu IHBsYW5lX3N0YXRlLT5ody5mYiAhPSBOVUxMOwogCWVsc2UKLQkJcmV0dXJuIHBsYW5lX3N0YXRl LT5iYXNlLnZpc2libGU7CisJCXJldHVybiBwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlOwogfQog CiBzdGF0aWMgc3RydWN0IGludGVsX2NydGMgKnNpbmdsZV9lbmFibGVkX2NydGMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgc3RhdGljIHUx NiBnNHhfY29tcHV0ZV93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKIAkJCSAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKIAkJ CSAgaW50IGxldmVsKQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9w bGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7CiAJY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQogCQkmY3J0Y19zdGF0 ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKQEAgLTExMTgsNyArMTExOCw3IEBAIHN0YXRpYyB1MTYgZzR4 X2NvbXB1dGVfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJ Y2xvY2sgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrOwogCWh0b3RhbCA9IGFkanVzdGVkX21v ZGUtPmNydGNfaHRvdGFsOwogCi0Jd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PmJhc2UuZHN0KTsKKwl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5k c3QpOwogCiAJaWYgKHBsYW5lLT5pZCA9PSBQTEFORV9DVVJTT1IpIHsKIAkJd20gPSBpbnRlbF93 bV9tZXRob2QyKGNsb2NrLCBodG90YWwsIHdpZHRoLCBjcHAsIGxhdGVuY3kpOwpAQCAtMTE4NCw3 ICsxMTg0LDcgQEAgc3RhdGljIHUzMiBpbGtfY29tcHV0ZV9mYmNfd20oY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiBzdGF0aWMgYm9vbCBnNHhfcmF3X3BsYW5lX3dt X2NvbXB1dGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkJICAgICBj b25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBp bnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFu ZSk7CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0 YXRlLT51YXBpLnBsYW5lKTsKIAlpbnQgbnVtX2xldmVscyA9IGludGVsX3dtX251bV9sZXZlbHMo dG9faTkxNShwbGFuZS0+YmFzZS5kZXYpKTsKIAllbnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gcGxh bmUtPmlkOwogCWJvb2wgZGlydHkgPSBmYWxzZTsKQEAgLTE1OTEsNyArMTU5MSw3IEBAIHN0YXRp YyB1MTYgdmx2X2NvbXB1dGVfd21fbGV2ZWwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCiAJCQkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9z dGF0ZSwKIAkJCQlpbnQgbGV2ZWwpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRv X2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2 KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9CiAJCSZj cnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwpAQCAtMTc2MSw3ICsxNzYxLDcgQEAgc3RhdGlj IGJvb2wgdmx2X3Jhd19wbGFuZV93bV9zZXQoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCiBzdGF0aWMgYm9vbCB2bHZfcmF3X3BsYW5lX3dtX2NvbXB1dGUoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0 b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAll bnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gcGxhbmUtPmlkOwogCWludCBudW1fbGV2ZWxzID0gaW50 ZWxfd21fbnVtX2xldmVscyh0b19pOTE1KHBsYW5lLT5iYXNlLmRldikpOwogCWludCBsZXZlbDsK QEAgLTI0OTQsNyArMjQ5NCw3IEBAIHN0YXRpYyB1MzIgaWxrX2NvbXB1dGVfcHJpX3dtKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCiAJbWV0aG9kMiA9IGlsa193 bV9tZXRob2QyKGNydGNfc3RhdGUtPnBpeGVsX3JhdGUsCiAJCQkJIGNydGNfc3RhdGUtPmh3LmFk anVzdGVkX21vZGUuY3J0Y19odG90YWwsCi0JCQkJIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0 ZS0+YmFzZS5kc3QpLAorCQkJCSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0 KSwKIAkJCQkgY3BwLCBtZW1fdmFsdWUpOwogCiAJcmV0dXJuIG1pbihtZXRob2QxLCBtZXRob2Qy KTsKQEAgLTI1MjIsNyArMjUyMiw3IEBAIHN0YXRpYyB1MzIgaWxrX2NvbXB1dGVfc3ByX3dtKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCW1ldGhvZDEgPSBpbGtf d21fbWV0aG9kMShjcnRjX3N0YXRlLT5waXhlbF9yYXRlLCBjcHAsIG1lbV92YWx1ZSk7CiAJbWV0 aG9kMiA9IGlsa193bV9tZXRob2QyKGNydGNfc3RhdGUtPnBpeGVsX3JhdGUsCiAJCQkJIGNydGNf c3RhdGUtPmh3LmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwsCi0JCQkJIGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpLAorCQkJCSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3Rh dGUtPnVhcGkuZHN0KSwKIAkJCQkgY3BwLCBtZW1fdmFsdWUpOwogCXJldHVybiBtaW4obWV0aG9k MSwgbWV0aG9kMik7CiB9CkBAIC0yNTQ3LDcgKzI1NDcsNyBAQCBzdGF0aWMgdTMyIGlsa19jb21w dXRlX2N1cl93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAog CXJldHVybiBpbGtfd21fbWV0aG9kMihjcnRjX3N0YXRlLT5waXhlbF9yYXRlLAogCQkJICAgICAg Y3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCwKLQkJCSAgICAgIGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpLAorCQkJICAgICAgZHJtX3JlY3Rfd2lk dGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCksCiAJCQkgICAgICBjcHAsIG1lbV92YWx1ZSk7CiB9 CiAKQEAgLTI1NjMsNyArMjU2Myw4IEBAIHN0YXRpYyB1MzIgaWxrX2NvbXB1dGVfZmJjX3dtKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCiAJY3BwID0gcGxhbmVf c3RhdGUtPmh3LmZiLT5mb3JtYXQtPmNwcFswXTsKIAotCXJldHVybiBpbGtfd21fZmJjKHByaV92 YWwsIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpLCBjcHApOworCXJldHVy biBpbGtfd21fZmJjKHByaV92YWwsIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5k c3QpLAorCQkJICBjcHApOwogfQogCiBzdGF0aWMgdW5zaWduZWQgaW50CkBAIC0zMTA3LDEwICsz MTA4LDEwIEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAogCXBpcGVfd20tPnBpcGVfZW5hYmxlZCA9IGNydGNfc3Rh dGUtPmh3LmFjdGl2ZTsKIAlpZiAoc3Byc3RhdGUpIHsKLQkJcGlwZV93bS0+c3ByaXRlc19lbmFi bGVkID0gc3Byc3RhdGUtPmJhc2UudmlzaWJsZTsKLQkJcGlwZV93bS0+c3ByaXRlc19zY2FsZWQg PSBzcHJzdGF0ZS0+YmFzZS52aXNpYmxlICYmCi0JCQkoZHJtX3JlY3Rfd2lkdGgoJnNwcnN0YXRl LT5iYXNlLmRzdCkgIT0gZHJtX3JlY3Rfd2lkdGgoJnNwcnN0YXRlLT5iYXNlLnNyYykgPj4gMTYg fHwKLQkJCSBkcm1fcmVjdF9oZWlnaHQoJnNwcnN0YXRlLT5iYXNlLmRzdCkgIT0gZHJtX3JlY3Rf aGVpZ2h0KCZzcHJzdGF0ZS0+YmFzZS5zcmMpID4+IDE2KTsKKwkJcGlwZV93bS0+c3ByaXRlc19l bmFibGVkID0gc3Byc3RhdGUtPnVhcGkudmlzaWJsZTsKKwkJcGlwZV93bS0+c3ByaXRlc19zY2Fs ZWQgPSBzcHJzdGF0ZS0+dWFwaS52aXNpYmxlICYmCisJCQkoZHJtX3JlY3Rfd2lkdGgoJnNwcnN0 YXRlLT51YXBpLmRzdCkgIT0gZHJtX3JlY3Rfd2lkdGgoJnNwcnN0YXRlLT51YXBpLnNyYykgPj4g MTYgfHwKKwkJCSBkcm1fcmVjdF9oZWlnaHQoJnNwcnN0YXRlLT51YXBpLmRzdCkgIT0gZHJtX3Jl Y3RfaGVpZ2h0KCZzcHJzdGF0ZS0+dWFwaS5zcmMpID4+IDE2KTsKIAl9CiAKIAl1c2FibGVfbGV2 ZWwgPSBtYXhfbGV2ZWw7CkBAIC00MDgyLDEwICs0MDgzLDEwIEBAIHNrbF9wbGFuZV9kb3duc2Nh bGVfYW1vdW50KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCSAq CiAJICogbi5iLiwgc3JjIGlzIDE2LjE2IGZpeGVkIHBvaW50LCBkc3QgaXMgd2hvbGUgaW50ZWdl ci4KIAkgKi8KLQlzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMp ID4+IDE2OwotCXNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMp ID4+IDE2OwotCWRzdF93ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7 Ci0JZHN0X2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7CisJc3Jj X3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKKwlzcmNf aCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKKwlkc3Rf dyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOworCWRzdF9oID0gZHJt X3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwogCiAJZnBfd19yYXRpbyA9IGRp dl9maXhlZDE2KHNyY193LCBkc3Rfdyk7CiAJZnBfaF9yYXRpbyA9IGRpdl9maXhlZDE2KHNyY19o LCBkc3RfaCk7CkBAIC00MTg3LDE0ICs0MTg4LDE0IEBAIHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRh X3JhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkgICAg IGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCiAJCQkgICAgIGlu dCBjb2xvcl9wbGFuZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxf cGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxh bmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJY29uc3Qgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJdTMyIGRhdGFf cmF0ZTsKIAl1MzIgd2lkdGggPSAwLCBoZWlnaHQgPSAwOwogCXVpbnRfZml4ZWRfMTZfMTZfdCBk b3duX3NjYWxlX2Ftb3VudDsKIAl1NjQgcmF0ZTsKIAotCWlmICghcGxhbmVfc3RhdGUtPmJhc2Uu dmlzaWJsZSkKKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCXJldHVybiAwOwog CiAJaWYgKHBsYW5lLT5pZCA9PSBQTEFORV9DVVJTT1IpCkBAIC00MjA5LDggKzQyMTAsOCBAQCBz a2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAogCSAqIHRoZSA5MC8yNzAgZGVncmVlIHBsYW5lIHJvdGF0aW9uIGNhc2Vz ICh0byBtYXRjaCB0aGUKIAkgKiBHVFQgbWFwcGluZyksIGhlbmNlIG5vIG5lZWQgdG8gYWNjb3Vu dCBmb3Igcm90YXRpb24gaGVyZS4KIAkgKi8KLQl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFu ZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwotCWhlaWdodCA9IGRybV9yZWN0X2hlaWdodCgmcGxh bmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKKwl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFu ZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2OworCWhlaWdodCA9IGRybV9yZWN0X2hlaWdodCgmcGxh bmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKIAogCS8qIFVWIHBsYW5lIGRvZXMgMS8yIHBpeGVs IHN1Yi1zYW1wbGluZyAqLwogCWlmIChjb2xvcl9wbGFuZSA9PSAxKSB7CkBAIC00NzE3LDcgKzQ3 MTgsNyBAQCBza2xfY29tcHV0ZV9wbGFuZV93bV9wYXJhbXMoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJICogdGhlIDkwLzI3MCBkZWdyZWUgcGxhbmUgcm90YXRp b24gY2FzZXMgKHRvIG1hdGNoIHRoZQogCSAqIEdUVCBtYXBwaW5nKSwgaGVuY2Ugbm8gbmVlZCB0 byBhY2NvdW50IGZvciByb3RhdGlvbiBoZXJlLgogCSAqLwotCXdpZHRoID0gZHJtX3JlY3Rfd2lk dGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7CisJd2lkdGggPSBkcm1fcmVjdF93aWR0 aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKIAogCXJldHVybiBza2xfY29tcHV0ZV93 bV9wYXJhbXMoY3J0Y19zdGF0ZSwgd2lkdGgsCiAJCQkJICAgICBmYi0+Zm9ybWF0LCBmYi0+bW9k aWZpZXIsCkBAIC00OTk5LDcgKzUwMDAsNyBAQCBzdGF0aWMgaW50IHNrbF9idWlsZF9wbGFuZV93 bV91dihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIHN0YXRpYyBpbnQgc2ts X2J1aWxkX3BsYW5lX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJ ICAgICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJh c2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShw bGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5l LT5pZDsKIAlpbnQgcmV0OwpAQCAtNTAyNSw3ICs1MDI2LDcgQEAgc3RhdGljIGludCBza2xfYnVp bGRfcGxhbmVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiBzdGF0aWMg aW50IGljbF9idWlsZF9wbGFuZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp CiB7Ci0JZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRl LT5iYXNlLnBsYW5lKS0+aWQ7CisJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHRvX2ludGVsX3Bs YW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKS0+aWQ7CiAJaW50IHJldDsKIAogCS8qIFdhdGVy bWFya3MgY2FsY3VsYXRlZCBpbiBtYXN0ZXIgKi8KQEAgLTYwMjcsNyArNjAyOCw3IEBAIHZvaWQg ZzR4X3dtX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJZW51 bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKIAkJaW50IGxldmVsOwogCi0JCWlmIChw bGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCQlpZiAocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJs ZSkKIAkJCWNvbnRpbnVlOwogCiAJCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8IDM7IGxldmVsKysp IHsKQEAgLTYxODIsNyArNjE4Myw3IEBAIHZvaWQgdmx2X3dtX3Nhbml0aXplKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5l LT5pZDsKIAkJaW50IGxldmVsOwogCi0JCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQor CQlpZiAocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKIAkJCWNvbnRpbnVlOwogCiAJCWZvciAo bGV2ZWwgPSAwOyBsZXZlbCA8IHdtX3N0YXRlLT5udW1fbGV2ZWxzOyBsZXZlbCsrKSB7Ci0tIAoy LjIzLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNWANTED_LANGUAGE_BODY,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 848C2CA9EAF for ; Thu, 24 Oct 2019 12:48:27 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 62EFB205C9 for ; Thu, 24 Oct 2019 12:48:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 62EFB205C9 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id D1B826E3D2; Thu, 24 Oct 2019 12:48:25 +0000 (UTC) Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id BE0C46E3DB for ; Thu, 24 Oct 2019 12:48:11 +0000 (UTC) From: Maarten Lankhorst To: intel-gfx@lists.freedesktop.org Date: Thu, 24 Oct 2019 14:48:03 +0200 Message-Id: <20191024124805.26840-12-maarten.lankhorst@linux.intel.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191024124805.26840-1-maarten.lankhorst@linux.intel.com> References: <20191024124805.26840-1-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 12/14] drm/i915: Perform automated conversions for plane uapi/hw split, base -> uapi. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191024124803.Mi8Cb68rhgWpuaZ3Th1TDd_RS6lpN7eAyEBgwQdCgl0@z> U3BsaXQgdXAgcGxhbmVfc3RhdGUtPmJhc2UgdG8gdWFwaS4gVGhpcyBpcyBkb25lIHVzaW5nIHRo ZSBmb2xsb3dpbmcgcGF0Y2gsCnJhbiBhZnRlciB0aGUgcHJldmlvdXMgY29tbWl0IHRoYXQgc3Bs aXRzIG91dCBhbnkgaHcgcmVmZXJlbmNlczoKCkBACnN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq VDsKaWRlbnRpZmllciB4OwpAQAotVC0+YmFzZS54CitULT51YXBpLngKCkBACnN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqVDsKQEAKLVQtPmJhc2UKK1QtPnVhcGkKClNpZ25lZC1vZmYtYnk6IE1h YXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ci0tLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuYyAgIHwgICAyICstCiAu Li4vZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljX3BsYW5lLmMgfCAgMjggKy0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jICB8IDI5NiArKysrKysr KystLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmJjLmMgICAg ICB8ICAxMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9vdmVybGF5LmMg IHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jICAg fCAxMTQgKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgICAg ICAgIHwgIDU3ICsrLS0KIDcgZmlsZXMgY2hhbmdlZCwgMjU3IGluc2VydGlvbnMoKyksIDI1NCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMu YwppbmRleCA5YmE1MGZkMTExNmMuLjQ3ODNkN2ZmNGZjZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jCkBAIC0yOTksNyArMjk5LDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfYXRvbWljX3NldHVwX3NjYWxlcihzdHJ1Y3QgaW50ZWxfY3J0Y19zY2FsZXJfc3Rh dGUgKnNjYWxlcl9zdGEKIAlpZiAocGxhbmVfc3RhdGUgJiYgcGxhbmVfc3RhdGUtPmh3LmZiICYm CiAJICAgIHBsYW5lX3N0YXRlLT5ody5mYi0+Zm9ybWF0LT5pc195dXYgJiYKIAkgICAgcGxhbmVf c3RhdGUtPmh3LmZiLT5mb3JtYXQtPm51bV9wbGFuZXMgPiAxKSB7Ci0JCXN0cnVjdCBpbnRlbF9w bGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJ CXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+ dWFwaS5wbGFuZSk7CiAJCWlmIChJU19HRU4oZGV2X3ByaXYsIDkpICYmCiAJCSAgICAhSVNfR0VN SU5JTEFLRShkZXZfcHJpdikpIHsKIAkJCW1vZGUgPSBTS0xfUFNfU0NBTEVSX01PREVfTlYxMjsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljX3Bs YW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pY19wbGFuZS5j CmluZGV4IGZkNWE4MDEyODU5Yy4uZTQwNDRhYmMyZDIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pY19wbGFuZS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljX3BsYW5lLmMKQEAgLTU2LDcgKzU2LDcgQEAg c3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZV9hbGxvYyh2b2lkKQogCQlyZXR1cm4gRVJS X1BUUigtRU5PTUVNKTsKIAl9CiAKLQlfX2RybV9hdG9taWNfaGVscGVyX3BsYW5lX3Jlc2V0KCZw bGFuZS0+YmFzZSwgJnBsYW5lX3N0YXRlLT5iYXNlKTsKKwlfX2RybV9hdG9taWNfaGVscGVyX3Bs YW5lX3Jlc2V0KCZwbGFuZS0+YmFzZSwgJnBsYW5lX3N0YXRlLT51YXBpKTsKIAlwbGFuZV9zdGF0 ZS0+c2NhbGVyX2lkID0gLTE7CiAKIAlyZXR1cm4gcGxhbmU7CkBAIC04OCwxMiArODgsMTIgQEAg aW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQogCWlm ICghaW50ZWxfc3RhdGUpCiAJCXJldHVybiBOVUxMOwogCi0JX19kcm1fYXRvbWljX2hlbHBlcl9w bGFuZV9kdXBsaWNhdGVfc3RhdGUocGxhbmUsICZpbnRlbF9zdGF0ZS0+YmFzZSk7CisJX19kcm1f YXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVfc3RhdGUocGxhbmUsICZpbnRlbF9zdGF0ZS0+ dWFwaSk7CiAKIAlpbnRlbF9zdGF0ZS0+dm1hID0gTlVMTDsKIAlpbnRlbF9zdGF0ZS0+ZmxhZ3Mg PSAwOwogCi0JcmV0dXJuICZpbnRlbF9zdGF0ZS0+YmFzZTsKKwlyZXR1cm4gJmludGVsX3N0YXRl LT51YXBpOwogfQogCiAvKioKQEAgLTExMSw3ICsxMTEsNyBAQCBpbnRlbF9wbGFuZV9kZXN0cm95 X3N0YXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShzdGF0ZSk7CiAJV0FSTl9PTihw bGFuZV9zdGF0ZS0+dm1hKTsKIAotCV9fZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZGVzdHJveV9z dGF0ZSgmcGxhbmVfc3RhdGUtPmJhc2UpOworCV9fZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZGVz dHJveV9zdGF0ZSgmcGxhbmVfc3RhdGUtPnVhcGkpOwogCWtmcmVlKHBsYW5lX3N0YXRlKTsKIH0K IApAQCAtMTIxLDcgKzEyMSw3IEBAIHVuc2lnbmVkIGludCBpbnRlbF9wbGFuZV9kYXRhX3JhdGUo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJY29uc3Qgc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJdW5zaWduZWQgaW50 IGNwcDsKIAotCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKKwlpZiAoIXBsYW5lX3N0 YXRlLT51YXBpLnZpc2libGUpCiAJCXJldHVybiAwOwogCiAJY3BwID0gZmItPmZvcm1hdC0+Y3Bw WzBdOwpAQCAtMTQzLDcgKzE0Myw3IEBAIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2tfd2l0 aF9zdGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfCiAJCQkJCWNv bnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlLAogCQkJCQlzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm5ld19wbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxf cGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnBsYW5l KTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUobmV3X3BsYW5l X3N0YXRlLT51YXBpLnBsYW5lKTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9 IG5ld19wbGFuZV9zdGF0ZS0+aHcuZmI7CiAJaW50IHJldDsKIApAQCAtMTUxLDcgKzE1MSw3IEBA IGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2tfd2l0aF9zdGF0ZShjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfCiAJbmV3X2NydGNfc3RhdGUtPm52MTJfcGxhbmVzICY9 IH5CSVQocGxhbmUtPmlkKTsKIAluZXdfY3J0Y19zdGF0ZS0+YzhfcGxhbmVzICY9IH5CSVQocGxh bmUtPmlkKTsKIAluZXdfY3J0Y19zdGF0ZS0+ZGF0YV9yYXRlW3BsYW5lLT5pZF0gPSAwOwotCW5l d19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlID0gZmFsc2U7CisJbmV3X3BsYW5lX3N0YXRlLT51 YXBpLnZpc2libGUgPSBmYWxzZTsKIAogCWlmICghbmV3X3BsYW5lX3N0YXRlLT5ody5jcnRjICYm ICFvbGRfcGxhbmVfc3RhdGUtPmh3LmNydGMpCiAJCXJldHVybiAwOwpAQCAtMTYxLDE4ICsxNjEs MTggQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jaGVja193aXRoX3N0YXRlKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y18KIAkJcmV0dXJuIHJldDsKIAogCS8qIEZJWE1F IHByZS1nNHggZG9uJ3Qgd29yayBsaWtlIHRoaXMgKi8KLQlpZiAobmV3X3BsYW5lX3N0YXRlLT5i YXNlLnZpc2libGUpCisJaWYgKG5ld19wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQogCQluZXdf Y3J0Y19zdGF0ZS0+YWN0aXZlX3BsYW5lcyB8PSBCSVQocGxhbmUtPmlkKTsKIAotCWlmIChuZXdf cGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSAmJgorCWlmIChuZXdfcGxhbmVfc3RhdGUtPnVhcGku dmlzaWJsZSAmJgogCSAgICBkcm1fZm9ybWF0X2luZm9faXNfeXV2X3NlbWlwbGFuYXIoZmItPmZv cm1hdCkpCiAJCW5ld19jcnRjX3N0YXRlLT5udjEyX3BsYW5lcyB8PSBCSVQocGxhbmUtPmlkKTsK IAotCWlmIChuZXdfcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSAmJgorCWlmIChuZXdfcGxhbmVf c3RhdGUtPnVhcGkudmlzaWJsZSAmJgogCSAgICBmYi0+Zm9ybWF0LT5mb3JtYXQgPT0gRFJNX0ZP Uk1BVF9DOCkKIAkJbmV3X2NydGNfc3RhdGUtPmM4X3BsYW5lcyB8PSBCSVQocGxhbmUtPmlkKTsK IAotCWlmIChuZXdfcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSB8fCBvbGRfcGxhbmVfc3RhdGUt PmJhc2UudmlzaWJsZSkKKwlpZiAobmV3X3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUgfHwgb2xk X3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCW5ld19jcnRjX3N0YXRlLT51cGRhdGVfcGxh bmVzIHw9IEJJVChwbGFuZS0+aWQpOwogCiAJbmV3X2NydGNfc3RhdGUtPmRhdGFfcmF0ZVtwbGFu ZS0+aWRdID0KQEAgLTIwNyw3ICsyMDcsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNr KHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAogCWNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZTsKIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3 X2NydGNfc3RhdGU7CiAKLQluZXdfcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSA9IGZhbHNlOwor CW5ld19wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlID0gZmFsc2U7CiAJaWYgKCFjcnRjKQogCQly ZXR1cm4gMDsKIApAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgc2tsX3VwZGF0ZV9wbGFuZXNfb25f Y3J0YyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpuZXdfcGxhbmVfc3RhdGUgPQogCQkJaW50ZWxfYXRvbWljX2dldF9uZXdfcGxh bmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsKIAotCQlpZiAobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnZp c2libGUpIHsKKwkJaWYgKG5ld19wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKSB7CiAJCQlpbnRl bF91cGRhdGVfcGxhbmUocGxhbmUsIG5ld19jcnRjX3N0YXRlLCBuZXdfcGxhbmVfc3RhdGUpOwog CQl9IGVsc2UgaWYgKG5ld19wbGFuZV9zdGF0ZS0+cGxhbmFyX3NsYXZlKSB7CiAJCQlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKm1hc3RlciA9CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBpOXh4X3VwZGF0 ZV9wbGFuZXNfb25fY3J0YyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJICAg ICEodXBkYXRlX21hc2sgJiBCSVQocGxhbmUtPmlkKSkpCiAJCQljb250aW51ZTsKIAotCQlpZiAo bmV3X3BsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCisJCWlmIChuZXdfcGxhbmVfc3RhdGUtPnVh cGkudmlzaWJsZSkKIAkJCWludGVsX3VwZGF0ZV9wbGFuZShwbGFuZSwgbmV3X2NydGNfc3RhdGUs IG5ld19wbGFuZV9zdGF0ZSk7CiAJCWVsc2UKIAkJCWludGVsX2Rpc2FibGVfcGxhbmUocGxhbmUs IG5ld19jcnRjX3N0YXRlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5LmMKaW5kZXggYjY4OWJhZWJiNGMyLi4xMmYyMzBhNDFmMmYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCkBAIC0yMDY5LDcgKzIwNjksNyBA QCBzdGF0aWMgdW5zaWduZWQgaW50IGludGVsX3N1cmZfYWxpZ25tZW50KGNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiLAogCiBzdGF0aWMgYm9vbCBpbnRlbF9wbGFuZV91c2VzX2ZlbmNl KGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0 IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBs YW5lKTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVf c3RhdGUtPnVhcGkucGxhbmUpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKIAogCXJldHVybiBJTlRFTF9HRU4oZGV2X3ByaXYp IDwgNCB8fApAQCAtMjM3OCw3ICsyMzc4LDcgQEAgc3RhdGljIHUzMiBpbnRlbF9wbGFuZV9jb21w dXRlX2FsaWduZWRfb2Zmc2V0KGludCAqeCwgaW50ICp5LAogCQkJCQkgICAgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlLAogCQkJCQkgICAgICBpbnQgY29sb3JfcGxhbmUp CiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHN0 YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9f aW50ZWxfcGxhbmUoc3RhdGUtPnVhcGkucGxhbmUpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfcGxhbmUtPmJhc2UuZGV2KTsKIAljb25zdCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5ody5mYjsKIAl1bnNpZ25lZCBpbnQgcm90 YXRpb24gPSBzdGF0ZS0+aHcucm90YXRpb247CkBAIC0yNTY2LDcgKzI1NjYsNyBAQCBpbnRlbF9m Yl9zdHJpZGVfYWxpZ25tZW50KGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQg Y29sb3JfcGxhbmUpCiAKIGJvb2wgaW50ZWxfcGxhbmVfY2FuX3JlbWFwKGNvbnN0IHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxh bmUpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUt PmJhc2UuZGV2KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0 YXRlLT5ody5mYjsKIAlpbnQgaTsKQEAgLTI2MDYsNyArMjYwNiw3IEBAIGJvb2wgaW50ZWxfcGxh bmVfY2FuX3JlbWFwKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp CiAKIHN0YXRpYyBib29sIGludGVsX3BsYW5lX25lZWRzX3JlbWFwKGNvbnN0IHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3QgaW50 ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUp OwogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZi OwogCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKIAl1 MzIgc3RyaWRlLCBtYXhfc3RyaWRlOwpAQCAtMjYxNSw3ICsyNjE1LDcgQEAgc3RhdGljIGJvb2wg aW50ZWxfcGxhbmVfbmVlZHNfcmVtYXAoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZSkKIAkgKiBObyByZW1hcHBpbmcgZm9yIGludmlzaWJsZSBwbGFuZXMgc2luY2Ug d2UgZG9uJ3QgaGF2ZQogCSAqIGFuIGFjdHVhbCBzb3VyY2Ugdmlld3BvcnQgdG8gcmVtYXAuCiAJ ICovCi0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCWlmICghcGxhbmVfc3RhdGUt PnVhcGkudmlzaWJsZSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJaWYgKCFpbnRlbF9wbGFuZV9jYW5f cmVtYXAocGxhbmVfc3RhdGUpKQpAQCAtMjc5OCw3ICsyNzk4LDcgQEAgc3RhdGljIHZvaWQKIGlu dGVsX3BsYW5lX3JlbWFwX2d0dChzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRl KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Ci0JCXRvX2k5MTUocGxh bmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7CisJCXRvX2k5MTUocGxhbmVfc3RhdGUtPnVhcGku cGxhbmUtPmRldik7CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+ aHcuZmI7CiAJc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYiA9IHRvX2ludGVsX2Zy YW1lYnVmZmVyKGZiKTsKIAlzdHJ1Y3QgaW50ZWxfcm90YXRpb25faW5mbyAqaW5mbyA9ICZwbGFu ZV9zdGF0ZS0+dmlldy5yb3RhdGVkOwpAQCAtMjgxMywyMCArMjgxMywyMCBAQCBpbnRlbF9wbGFu ZV9yZW1hcF9ndHQoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIAlwbGFu ZV9zdGF0ZS0+dmlldy50eXBlID0gZHJtX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikgPwog CQlJOTE1X0dHVFRfVklFV19ST1RBVEVEIDogSTkxNV9HR1RUX1ZJRVdfUkVNQVBQRUQ7CiAKLQlz cmNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy54MSA+PiAxNjsKLQlzcmNfeSA9IHBsYW5lX3N0 YXRlLT5iYXNlLnNyYy55MSA+PiAxNjsKLQlzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+YmFzZS5zcmMpID4+IDE2OwotCXNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9z dGF0ZS0+YmFzZS5zcmMpID4+IDE2OworCXNyY194ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLngx ID4+IDE2OworCXNyY195ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLnkxID4+IDE2OworCXNyY193 ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7CisJc3JjX2gg PSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7CiAKIAlXQVJO X09OKGlzX2Njc19tb2RpZmllcihmYi0+bW9kaWZpZXIpKTsKIAogCS8qIE1ha2Ugc3JjIGNvb3Jk aW5hdGVzIHJlbGF0aXZlIHRvIHRoZSB2aWV3cG9ydCAqLwotCWRybV9yZWN0X3RyYW5zbGF0ZSgm cGxhbmVfc3RhdGUtPmJhc2Uuc3JjLAorCWRybV9yZWN0X3RyYW5zbGF0ZSgmcGxhbmVfc3RhdGUt PnVhcGkuc3JjLAogCQkJICAgLShzcmNfeCA8PCAxNiksIC0oc3JjX3kgPDwgMTYpKTsKIAogCS8q IFJvdGF0ZSBzcmMgY29vcmRpbmF0ZXMgdG8gbWF0Y2ggcm90YXRlZCBHVFQgdmlldyAqLwogCWlm IChkcm1fcm90YXRpb25fOTBfb3JfMjcwKHJvdGF0aW9uKSkKLQkJZHJtX3JlY3Rfcm90YXRlKCZw bGFuZV9zdGF0ZS0+YmFzZS5zcmMsCisJCWRybV9yZWN0X3JvdGF0ZSgmcGxhbmVfc3RhdGUtPnVh cGkuc3JjLAogCQkJCXNyY193IDw8IDE2LCBzcmNfaCA8PCAxNiwKIAkJCQlEUk1fTU9ERV9ST1RB VEVfMjcwKTsKIApAQCAtMjk0Niw3ICsyOTQ2LDcgQEAgaW50ZWxfcGxhbmVfY29tcHV0ZV9ndHQo c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIAogCS8qIFJvdGF0ZSBzcmMg Y29vcmRpbmF0ZXMgdG8gbWF0Y2ggcm90YXRlZCBHVFQgdmlldyAqLwogCWlmIChkcm1fcm90YXRp b25fOTBfb3JfMjcwKHJvdGF0aW9uKSkKLQkJZHJtX3JlY3Rfcm90YXRlKCZwbGFuZV9zdGF0ZS0+ YmFzZS5zcmMsCisJCWRybV9yZWN0X3JvdGF0ZSgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjLAogCQkJ CWZiLT5iYXNlLndpZHRoIDw8IDE2LCBmYi0+YmFzZS5oZWlnaHQgPDwgMTYsCiAJCQkJRFJNX01P REVfUk9UQVRFXzI3MCk7CiAKQEAgLTMxMTIsOSArMzExMiw5IEBAIGludGVsX3NldF9wbGFuZV92 aXNpYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJc3RydWN0IGlu dGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKIAkJCWJvb2wgdmlzaWJsZSkKIHsKLQlzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2Uu cGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFu ZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAKLQlwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlID0gdmlz aWJsZTsKKwlwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlID0gdmlzaWJsZTsKIAogCWlmICh2aXNp YmxlKQogCQljcnRjX3N0YXRlLT51YXBpLnBsYW5lX21hc2sgfD0gZHJtX3BsYW5lX21hc2soJnBs YW5lLT5iYXNlKTsKQEAgLTMyNTksOCArMzI1OSw4IEBAIGludGVsX2ZpbmRfaW5pdGlhbF9wbGFu ZV9vYmooc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCiAJcGxhbmVfc3RhdGUtPmNydGNf dyA9IGZiLT53aWR0aDsKIAlwbGFuZV9zdGF0ZS0+Y3J0Y19oID0gZmItPmhlaWdodDsKIAotCWlu dGVsX3N0YXRlLT5iYXNlLnNyYyA9IGRybV9wbGFuZV9zdGF0ZV9zcmMocGxhbmVfc3RhdGUpOwot CWludGVsX3N0YXRlLT5iYXNlLmRzdCA9IGRybV9wbGFuZV9zdGF0ZV9kZXN0KHBsYW5lX3N0YXRl KTsKKwlpbnRlbF9zdGF0ZS0+dWFwaS5zcmMgPSBkcm1fcGxhbmVfc3RhdGVfc3JjKHBsYW5lX3N0 YXRlKTsKKwlpbnRlbF9zdGF0ZS0+dWFwaS5kc3QgPSBkcm1fcGxhbmVfc3RhdGVfZGVzdChwbGFu ZV9zdGF0ZSk7CiAKIAlpZiAocGxhbmVfY29uZmlnLT50aWxpbmcpCiAJCWRldl9wcml2LT5wcmVz ZXJ2ZV9iaW9zX3N3aXp6bGUgPSB0cnVlOwpAQCAtMzM5NSwxMyArMzM5NSwxMyBAQCBzdGF0aWMg Ym9vbCBza2xfY2hlY2tfbWFpbl9jY3NfY29vcmRpbmF0ZXMoc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZQogCiBzdGF0aWMgaW50IHNrbF9jaGVja19tYWluX3N1cmZhY2Uoc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYp OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmVfc3Rh dGUtPnVhcGkucGxhbmUtPmRldik7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIg PSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3Rh dGUtPmh3LnJvdGF0aW9uOwotCWludCB4ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLngxID4+IDE2 OwotCWludCB5ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLnkxID4+IDE2OwotCWludCB3ID0gZHJt X3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Ci0JaW50IGggPSBkcm1f cmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7CisJaW50IHggPSBwbGFu ZV9zdGF0ZS0+dWFwaS5zcmMueDEgPj4gMTY7CisJaW50IHkgPSBwbGFuZV9zdGF0ZS0+dWFwaS5z cmMueTEgPj4gMTY7CisJaW50IHcgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGku c3JjKSA+PiAxNjsKKwlpbnQgaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGku c3JjKSA+PiAxNjsKIAlpbnQgbWF4X3dpZHRoOwogCWludCBtYXhfaGVpZ2h0OwogCXUzMiBhbGln bm1lbnQsIG9mZnNldCwgYXV4X29mZnNldCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVsxXS5v ZmZzZXQ7CkBAIC0zNDg0LDcgKzM0ODQsNyBAQCBzdGF0aWMgaW50IHNrbF9jaGVja19tYWluX3N1 cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIAkgKiBQdXQgdGhl IGZpbmFsIGNvb3JkaW5hdGVzIGJhY2sgc28gdGhhdCB0aGUgc3JjCiAJICogY29vcmRpbmF0ZSBj aGVja3Mgd2lsbCBzZWUgdGhlIHJpZ2h0IHZhbHVlcy4KIAkgKi8KLQlkcm1fcmVjdF90cmFuc2xh dGVfdG8oJnBsYW5lX3N0YXRlLT5iYXNlLnNyYywKKwlkcm1fcmVjdF90cmFuc2xhdGVfdG8oJnBs YW5lX3N0YXRlLT51YXBpLnNyYywKIAkJCSAgICAgIHggPDwgMTYsIHkgPDwgMTYpOwogCiAJcmV0 dXJuIDA7CkBAIC0zNDk2LDEwICszNDk2LDEwIEBAIHN0YXRpYyBpbnQgc2tsX2NoZWNrX252MTJf YXV4X3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIAl1bnNp Z25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247CiAJaW50IG1heF93 aWR0aCA9IHNrbF9tYXhfcGxhbmVfd2lkdGgoZmIsIDEsIHJvdGF0aW9uKTsKIAlpbnQgbWF4X2hl aWdodCA9IDQwOTY7Ci0JaW50IHggPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueDEgPj4gMTc7Ci0J aW50IHkgPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueTEgPj4gMTc7Ci0JaW50IHcgPSBkcm1fcmVj dF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNzsKLQlpbnQgaCA9IGRybV9yZWN0 X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNzsKKwlpbnQgeCA9IHBsYW5lX3N0 YXRlLT51YXBpLnNyYy54MSA+PiAxNzsKKwlpbnQgeSA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy55 MSA+PiAxNzsKKwlpbnQgdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMp ID4+IDE3OworCWludCBoID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMp ID4+IDE3OwogCXUzMiBvZmZzZXQ7CiAKIAlpbnRlbF9hZGRfZmJfb2Zmc2V0cygmeCwgJnksIHBs YW5lX3N0YXRlLCAxKTsKQEAgLTM1MjIsOCArMzUyMiw4IEBAIHN0YXRpYyBpbnQgc2tsX2NoZWNr X252MTJfYXV4X3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkK IHN0YXRpYyBpbnQgc2tsX2NoZWNrX2Njc19hdXhfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnBsYW5lX3N0YXRlKQogewogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi ID0gcGxhbmVfc3RhdGUtPmh3LmZiOwotCWludCBzcmNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLnNy Yy54MSA+PiAxNjsKLQlpbnQgc3JjX3kgPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueTEgPj4gMTY7 CisJaW50IHNyY194ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLngxID4+IDE2OworCWludCBzcmNf eSA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy55MSA+PiAxNjsKIAlpbnQgaHN1YiA9IGZiLT5mb3Jt YXQtPmhzdWI7CiAJaW50IHZzdWIgPSBmYi0+Zm9ybWF0LT52c3ViOwogCWludCB4ID0gc3JjX3gg LyBoc3ViOwpAQCAtMzU0OSw3ICszNTQ5LDcgQEAgaW50IHNrbF9jaGVja19wbGFuZV9zdXJmYWNl KHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiAJaWYgKHJldCkKIAkJcmV0 dXJuIHJldDsKIAotCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKKwlpZiAoIXBsYW5l X3N0YXRlLT51YXBpLnZpc2libGUpCiAJCXJldHVybiAwOwogCiAJLyoKQEAgLTM2MjYsNyArMzYy Niw3IEBAIHN0YXRpYyB1MzIgaTl4eF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCiAJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KLQkJ dG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKKwkJdG9faTkxNShwbGFuZV9z dGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9z dGF0ZS0+aHcucm90YXRpb247CiAJdTMyIGRzcGNudHI7CkBAIC0zNjgwLDcgKzM2ODAsNyBAQCBz dGF0aWMgdTMyIGk5eHhfcGxhbmVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAogaW50IGk5eHhfY2hlY2tfcGxhbmVfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9Ci0JCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7CisJCXRvX2k5 MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7CiAJaW50IHNyY194LCBzcmNfeTsKIAl1 MzIgb2Zmc2V0OwogCWludCByZXQ7CkBAIC0zNjg5LDExICszNjg5LDExIEBAIGludCBpOXh4X2No ZWNrX3BsYW5lX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkK IAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNp YmxlKQorCWlmICghcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKIAkJcmV0dXJuIDA7CiAKLQlz cmNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy54MSA+PiAxNjsKLQlzcmNfeSA9IHBsYW5lX3N0 YXRlLT5iYXNlLnNyYy55MSA+PiAxNjsKKwlzcmNfeCA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy54 MSA+PiAxNjsKKwlzcmNfeSA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy55MSA+PiAxNjsKIAogCWlu dGVsX2FkZF9mYl9vZmZzZXRzKCZzcmNfeCwgJnNyY195LCBwbGFuZV9zdGF0ZSwgMCk7CiAKQEAg LTM3MDcsMTQgKzM3MDcsMTQgQEAgaW50IGk5eHhfY2hlY2tfcGxhbmVfc3VyZmFjZShzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogCSAqIFB1dCB0aGUgZmluYWwgY29vcmRp bmF0ZXMgYmFjayBzbyB0aGF0IHRoZSBzcmMKIAkgKiBjb29yZGluYXRlIGNoZWNrcyB3aWxsIHNl ZSB0aGUgcmlnaHQgdmFsdWVzLgogCSAqLwotCWRybV9yZWN0X3RyYW5zbGF0ZV90bygmcGxhbmVf c3RhdGUtPmJhc2Uuc3JjLAorCWRybV9yZWN0X3RyYW5zbGF0ZV90bygmcGxhbmVfc3RhdGUtPnVh cGkuc3JjLAogCQkJICAgICAgc3JjX3ggPDwgMTYsIHNyY195IDw8IDE2KTsKIAogCS8qIEhTVy9C RFcgZG8gdGhpcyBhdXRvbWFnaWNhbGx5IGluIGhhcmR3YXJlICovCiAJaWYgKCFJU19IQVNXRUxM KGRldl9wcml2KSAmJiAhSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewogCQl1bnNpZ25lZCBpbnQg cm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Ci0JCWludCBzcmNfdyA9IGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwotCQlpbnQgc3JjX2ggPSBk cm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7CisJCWludCBzcmNf dyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2OworCQlpbnQg c3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7CiAK IAkJaWYgKHJvdGF0aW9uICYgRFJNX01PREVfUk9UQVRFXzE4MCkgewogCQkJc3JjX3ggKz0gc3Jj X3cgLSAxOwpAQCAtMzc1MSwxNCArMzc1MSwxNCBAQCBzdGF0aWMgaW50CiBpOXh4X3BsYW5lX2No ZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l ID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7 CiAJaW50IHJldDsKIAogCXJldCA9IGNodl9wbGFuZV9jaGVja19yb3RhdGlvbihwbGFuZV9zdGF0 ZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldCA9IGRybV9hdG9taWNfaGVscGVy X2NoZWNrX3BsYW5lX3N0YXRlKCZwbGFuZV9zdGF0ZS0+YmFzZSwKKwlyZXQgPSBkcm1fYXRvbWlj X2hlbHBlcl9jaGVja19wbGFuZV9zdGF0ZSgmcGxhbmVfc3RhdGUtPnVhcGksCiAJCQkJCQkgICZj cnRjX3N0YXRlLT51YXBpLAogCQkJCQkJICBEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkcsCiAJ CQkJCQkgIERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywKQEAgLTM3NzEsNyArMzc3MSw3IEBA IGk5eHhfcGxhbmVfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJs ZSkKKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCXJldHVybiAwOwogCiAJcmV0 ID0gaW50ZWxfcGxhbmVfY2hlY2tfc3JjX2Nvb3JkaW5hdGVzKHBsYW5lX3N0YXRlKTsKQEAgLTM3 OTIsMTAgKzM3OTIsMTAgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcGxhbmUoc3RydWN0IGlu dGVsX3BsYW5lICpwbGFuZSwKIAl1MzIgbGluZWFyX29mZnNldDsKIAlpbnQgeCA9IHBsYW5lX3N0 YXRlLT5jb2xvcl9wbGFuZVswXS54OwogCWludCB5ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5l WzBdLnk7Ci0JaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC54MTsKLQlpbnQgY3J0 Y195ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LnkxOwotCWludCBjcnRjX3cgPSBkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKLQlpbnQgY3J0Y19oID0gZHJtX3JlY3RfaGVp Z2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOworCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+ dWFwaS5kc3QueDE7CisJaW50IGNydGNfeSA9IHBsYW5lX3N0YXRlLT51YXBpLmRzdC55MTsKKwlp bnQgY3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7CisJaW50 IGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKIAl1bnNp Z25lZCBsb25nIGlycWZsYWdzOwogCXUzMiBkc3BhZGRyX29mZnNldDsKIAl1MzIgZHNwY250cjsK QEAgLTQxNDksNyArNDE0OSw3IEBAIHUzMiBza2xfcGxhbmVfY3RsKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqcGxhbmVfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0KLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKKwkJdG9faTkxNShw bGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBw bGFuZV9zdGF0ZS0+aHcucm90YXRpb247CiAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVf Y29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKQEAgLTQyMDUsOSArNDIwNSw5IEBA IHUzMiBnbGtfcGxhbmVfY29sb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAogCQkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQotCQl0b19pOTE1KHBs YW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOworCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBp LnBsYW5lLT5kZXYpOwogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVf c3RhdGUtPmh3LmZiOwotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9 IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAl1MzIgcGxhbmVfY29s b3JfY3RsID0gMDsKIAogCXBsYW5lX2NvbG9yX2N0bCB8PSBQTEFORV9DT0xPUl9QTEFORV9HQU1N QV9ESVNBQkxFOwpAQCAtNTU1MSwxMSArNTU1MSwxMSBAQCBzdGF0aWMgaW50IHNrbF91cGRhdGVf c2NhbGVyX3BsYW5lKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJCSAg IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7CiAJc3RydWN0IGludGVs X3BsYW5lICppbnRlbF9wbGFuZSA9Ci0JCXRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNl LnBsYW5lKTsKKwkJdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfcGxhbmUtPmJh c2UuZGV2KTsKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5m YjsKIAlpbnQgcmV0OwotCWJvb2wgZm9yY2VfZGV0YWNoID0gIWZiIHx8ICFwbGFuZV9zdGF0ZS0+ YmFzZS52aXNpYmxlOworCWJvb2wgZm9yY2VfZGV0YWNoID0gIWZiIHx8ICFwbGFuZV9zdGF0ZS0+ dWFwaS52aXNpYmxlOwogCWJvb2wgbmVlZF9zY2FsZXIgPSBmYWxzZTsKIAogCS8qIFByZS1nZW4x MSBhbmQgU0RSIHBsYW5lcyBhbHdheXMgbmVlZCBhIHNjYWxlciBmb3IgcGxhbmFyIGZvcm1hdHMu ICovCkBAIC01NTY2LDEwICs1NTY2LDEwIEBAIHN0YXRpYyBpbnQgc2tsX3VwZGF0ZV9zY2FsZXJf cGxhbmUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJcmV0ID0gc2tsX3Vw ZGF0ZV9zY2FsZXIoY3J0Y19zdGF0ZSwgZm9yY2VfZGV0YWNoLAogCQkJCWRybV9wbGFuZV9pbmRl eCgmaW50ZWxfcGxhbmUtPmJhc2UpLAogCQkJCSZwbGFuZV9zdGF0ZS0+c2NhbGVyX2lkLAotCQkJ CWRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2LAotCQkJCWRybV9y ZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNiwKLQkJCQlkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSwKLQkJCQlkcm1fcmVjdF9oZWlnaHQoJnBsYW5l X3N0YXRlLT5iYXNlLmRzdCksCisJCQkJZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBp LnNyYykgPj4gMTYsCisJCQkJZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMp ID4+IDE2LAorCQkJCWRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpLAorCQkJ CWRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSwKIAkJCQlmYiA/IGZiLT5m b3JtYXQgOiBOVUxMLCBuZWVkX3NjYWxlcik7CiAKIAlpZiAocmV0IHx8IHBsYW5lX3N0YXRlLT5z Y2FsZXJfaWQgPCAwKQpAQCAtNTk4Miw3ICs1OTgyLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJl X3BsYW5lX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCiAJ CSAqIFNvIGRpc2FibGUgdW5kZXJydW4gcmVwb3J0aW5nIGJlZm9yZSBhbGwgdGhlIHBsYW5lcyBn ZXQgZGlzYWJsZWQuCiAJCSAqLwogCQlpZiAoSVNfR0VOKGRldl9wcml2LCAyKSAmJiBvbGRfcHJp bWFyeV9zdGF0ZS0+dmlzaWJsZSAmJgotCQkgICAgKG1vZGVzZXQgfHwgIW5ld19wcmltYXJ5X3N0 YXRlLT5iYXNlLnZpc2libGUpKQorCQkgICAgKG1vZGVzZXQgfHwgIW5ld19wcmltYXJ5X3N0YXRl LT51YXBpLnZpc2libGUpKQogCQkJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGlu ZyhkZXZfcHJpdiwgY3J0Yy0+cGlwZSwgZmFsc2UpOwogCX0KIApAQCAtNjA2OSw3ICs2MDY5LDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19kaXNhYmxlX3BsYW5lcyhzdHJ1Y3QgaW50ZWxfYXRv bWljX3N0YXRlICpzdGF0ZSwKIAogCQlpbnRlbF9kaXNhYmxlX3BsYW5lKHBsYW5lLCBuZXdfY3J0 Y19zdGF0ZSk7CiAKLQkJaWYgKG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCQlpZiAo b2xkX3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCQlmYl9iaXRzIHw9IHBsYW5lLT5mcm9u dGJ1ZmZlcl9iaXQ7CiAJfQogCkBAIC03MDc4LDcgKzcwNzgsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9jcnRjX2Rpc2FibGVfbm9hdG9taWMoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQljb25zdCBz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0KIAkJCXRvX2ludGVsX3BsYW5l X3N0YXRlKHBsYW5lLT5iYXNlLnN0YXRlKTsKIAotCQlpZiAocGxhbmVfc3RhdGUtPmJhc2Uudmlz aWJsZSkKKwkJaWYgKHBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCQlpbnRlbF9wbGFuZV9k aXNhYmxlX25vYXRvbWljKGludGVsX2NydGMsIHBsYW5lKTsKIAl9CiAKQEAgLTEwNjUyLDcgKzEw NjUyLDcgQEAgc3RhdGljIGJvb2wgaGFzd2VsbF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVs X2NydGMgKmNydGMsCiBzdGF0aWMgdTMyIGludGVsX2N1cnNvcl9iYXNlKGNvbnN0IHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0KLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsK KwkJdG9faTkxNShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKIAljb25zdCBzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAljb25zdCBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKIAl1MzIgYmFzZTsK QEAgLTEwNjY3LDggKzEwNjY3LDggQEAgc3RhdGljIHUzMiBpbnRlbF9jdXJzb3JfYmFzZShjb25z dCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogCiBzdGF0aWMgdTMyIGlu dGVsX2N1cnNvcl9wb3NpdGlvbihjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlKQogewotCWludCB4ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LngxOwotCWludCB5ID0g cGxhbmVfc3RhdGUtPmJhc2UuZHN0LnkxOworCWludCB4ID0gcGxhbmVfc3RhdGUtPnVhcGkuZHN0 LngxOworCWludCB5ID0gcGxhbmVfc3RhdGUtPnVhcGkuZHN0LnkxOwogCXUzMiBwb3MgPSAwOwog CiAJaWYgKHggPCAwKSB7CkBAIC0xMDY4OSw5ICsxMDY4OSw5IEBAIHN0YXRpYyB1MzIgaW50ZWxf Y3Vyc29yX3Bvc2l0aW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUpCiBzdGF0aWMgYm9vbCBpbnRlbF9jdXJzb3Jfc2l6ZV9vayhjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewogCWNvbnN0IHN0cnVjdCBkcm1fbW9kZV9jb25m aWcgKmNvbmZpZyA9Ci0JCSZwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2LT5tb2RlX2NvbmZp ZzsKLQlpbnQgd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsK LQlpbnQgaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwor CQkmcGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldi0+bW9kZV9jb25maWc7CisJaW50IHdpZHRo ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7CisJaW50IGhlaWdodCA9 IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKIAogCXJldHVybiB3aWR0 aCA+IDAgJiYgd2lkdGggPD0gY29uZmlnLT5jdXJzb3Jfd2lkdGggJiYKIAkJaGVpZ2h0ID4gMCAm JiBoZWlnaHQgPD0gY29uZmlnLT5jdXJzb3JfaGVpZ2h0OwpAQCAtMTA3MDAsNyArMTA3MDAsNyBA QCBzdGF0aWMgYm9vbCBpbnRlbF9jdXJzb3Jfc2l6ZV9vayhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogc3RhdGljIGludCBpbnRlbF9jdXJzb3JfY2hlY2tfc3Vy ZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Ci0JCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2Uu cGxhbmUtPmRldik7CisJCXRvX2k5MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7CiAJ dW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwogCWludCBz cmNfeCwgc3JjX3k7CiAJdTMyIG9mZnNldDsKQEAgLTEwNzEwLDExICsxMDcxMCwxMSBAQCBzdGF0 aWMgaW50IGludGVsX2N1cnNvcl9jaGVja19zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUpCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWlmICghcGxhbmVf c3RhdGUtPmJhc2UudmlzaWJsZSkKKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJ CXJldHVybiAwOwogCi0Jc3JjX3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueDEgPj4gMTY7Ci0J c3JjX3kgPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueTEgPj4gMTY7CisJc3JjX3ggPSBwbGFuZV9z dGF0ZS0+dWFwaS5zcmMueDEgPj4gMTY7CisJc3JjX3kgPSBwbGFuZV9zdGF0ZS0+dWFwaS5zcmMu eTEgPj4gMTY7CiAKIAlpbnRlbF9hZGRfZmJfb2Zmc2V0cygmc3JjX3gsICZzcmNfeSwgcGxhbmVf c3RhdGUsIDApOwogCW9mZnNldCA9IGludGVsX3BsYW5lX2NvbXB1dGVfYWxpZ25lZF9vZmZzZXQo JnNyY194LCAmc3JjX3ksCkBAIC0xMDcyOSwxNCArMTA3MjksMTQgQEAgc3RhdGljIGludCBpbnRl bF9jdXJzb3JfY2hlY2tfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlKQogCSAqIFB1dCB0aGUgZmluYWwgY29vcmRpbmF0ZXMgYmFjayBzbyB0aGF0IHRoZSBzcmMK IAkgKiBjb29yZGluYXRlIGNoZWNrcyB3aWxsIHNlZSB0aGUgcmlnaHQgdmFsdWVzLgogCSAqLwot CWRybV9yZWN0X3RyYW5zbGF0ZV90bygmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLAorCWRybV9yZWN0 X3RyYW5zbGF0ZV90bygmcGxhbmVfc3RhdGUtPnVhcGkuc3JjLAogCQkJICAgICAgc3JjX3ggPDwg MTYsIHNyY195IDw8IDE2KTsKIAogCS8qIElMSysgZG8gdGhpcyBhdXRvbWFnaWNhbGx5IGluIGhh cmR3YXJlICovCiAJaWYgKEhBU19HTUNIKGRldl9wcml2KSAmJiByb3RhdGlvbiAmIERSTV9NT0RF X1JPVEFURV8xODApIHsKLQkJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFu ZV9zdGF0ZS0+YmFzZS5mYjsKLQkJaW50IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0 YXRlLT5iYXNlLnNyYykgPj4gMTY7Ci0JCWludCBzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxh bmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKKwkJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CisJCWludCBzcmNfdyA9IGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2OworCQlpbnQgc3JjX2ggPSBkcm1fcmVjdF9o ZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7CiAKIAkJb2Zmc2V0ICs9IChzcmNf aCAqIHNyY193IC0gMSkgKiBmYi0+Zm9ybWF0LT5jcHBbMF07CiAJfQpAQCAtMTA3NTksNyArMTA3 NTksNyBAQCBzdGF0aWMgaW50IGludGVsX2NoZWNrX2N1cnNvcihzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JcmV0ID0gZHJtX2F0 b21pY19oZWxwZXJfY2hlY2tfcGxhbmVfc3RhdGUoJnBsYW5lX3N0YXRlLT5iYXNlLAorCXJldCA9 IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lX3N0YXRlKCZwbGFuZV9zdGF0ZS0+dWFwaSwK IAkJCQkJCSAgJmNydGNfc3RhdGUtPnVhcGksCiAJCQkJCQkgIERSTV9QTEFORV9IRUxQRVJfTk9f U0NBTElORywKIAkJCQkJCSAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLApAQCAtMTA3Njgs MTQgKzEwNzY4LDE0IEBAIHN0YXRpYyBpbnQgaW50ZWxfY2hlY2tfY3Vyc29yKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQlyZXR1cm4gcmV0OwogCiAJLyogVXNlIHRoZSB1 bmNsaXBwZWQgc3JjL2RzdCByZWN0YW5nbGVzLCB3aGljaCB3ZSBwcm9ncmFtIHRvIGh3ICovCi0J cGxhbmVfc3RhdGUtPmJhc2Uuc3JjID0gZHJtX3BsYW5lX3N0YXRlX3NyYygmcGxhbmVfc3RhdGUt PmJhc2UpOwotCXBsYW5lX3N0YXRlLT5iYXNlLmRzdCA9IGRybV9wbGFuZV9zdGF0ZV9kZXN0KCZw bGFuZV9zdGF0ZS0+YmFzZSk7CisJcGxhbmVfc3RhdGUtPnVhcGkuc3JjID0gZHJtX3BsYW5lX3N0 YXRlX3NyYygmcGxhbmVfc3RhdGUtPnVhcGkpOworCXBsYW5lX3N0YXRlLT51YXBpLmRzdCA9IGRy bV9wbGFuZV9zdGF0ZV9kZXN0KCZwbGFuZV9zdGF0ZS0+dWFwaSk7CiAKIAlyZXQgPSBpbnRlbF9j dXJzb3JfY2hlY2tfc3VyZmFjZShwbGFuZV9zdGF0ZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJl dDsKIAotCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKKwlpZiAoIXBsYW5lX3N0YXRl LT51YXBpLnZpc2libGUpCiAJCXJldHVybiAwOwogCiAJcmV0ID0gaW50ZWxfcGxhbmVfY2hlY2tf c3JjX2Nvb3JkaW5hdGVzKHBsYW5lX3N0YXRlKTsKQEAgLTEwODEzLDcgKzEwODEzLDcgQEAgc3Rh dGljIHUzMiBpODQ1X2N1cnNvcl9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCiAKIHN0YXRpYyBib29sIGk4NDVfY3Vyc29yX3NpemVfb2soY29uc3Qgc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlpbnQgd2lkdGggPSBkcm1fcmVj dF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKKwlpbnQgd2lkdGggPSBkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKIAogCS8qCiAJICogODQ1Zy84NjVnIGFyZSBv bmx5IGxpbWl0ZWQgYnkgdGhlIHdpZHRoIG9mIHRoZWlyIGN1cnNvcnMsCkBAIC0xMDgzOSwxMiAr MTA4MzksMTIgQEAgc3RhdGljIGludCBpODQ1X2NoZWNrX2N1cnNvcihzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkvKiBDaGVjayBmb3Igd2hpY2ggY3Vyc29yIHR5cGVzIHdl IHN1cHBvcnQgKi8KIAlpZiAoIWk4NDVfY3Vyc29yX3NpemVfb2socGxhbmVfc3RhdGUpKSB7CiAJ CURSTV9ERUJVRygiQ3Vyc29yIGRpbWVuc2lvbiAlZHglZCBub3Qgc3VwcG9ydGVkXG4iLAotCQkJ ICBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSwKLQkJCSAgZHJtX3JlY3Rf aGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpKTsKKwkJCSAgZHJtX3JlY3Rfd2lkdGgoJnBs YW5lX3N0YXRlLT51YXBpLmRzdCksCisJCQkgIGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUt PnVhcGkuZHN0KSk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCVdBUk5fT04ocGxhbmVfc3Rh dGUtPmJhc2UudmlzaWJsZSAmJgorCVdBUk5fT04ocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSAm JgogCQlwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0uc3RyaWRlICE9IGZiLT5waXRjaGVzWzBd KTsKIAogCXN3aXRjaCAoZmItPnBpdGNoZXNbMF0pIHsKQEAgLTEwODcyLDkgKzEwODcyLDkgQEAg c3RhdGljIHZvaWQgaTg0NV91cGRhdGVfY3Vyc29yKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUs CiAJdTMyIGNudGwgPSAwLCBiYXNlID0gMCwgcG9zID0gMCwgc2l6ZSA9IDA7CiAJdW5zaWduZWQg bG9uZyBpcnFmbGFnczsKIAotCWlmIChwbGFuZV9zdGF0ZSAmJiBwbGFuZV9zdGF0ZS0+YmFzZS52 aXNpYmxlKSB7Ci0JCXVuc2lnbmVkIGludCB3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+YmFzZS5zcmMpOwotCQl1bnNpZ25lZCBpbnQgaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0 KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOworCWlmIChwbGFuZV9zdGF0ZSAmJiBwbGFuZV9zdGF0 ZS0+dWFwaS52aXNpYmxlKSB7CisJCXVuc2lnbmVkIGludCB3aWR0aCA9IGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpOworCQl1bnNpZ25lZCBpbnQgaGVpZ2h0ID0gZHJtX3Jl Y3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwogCiAJCWNudGwgPSBwbGFuZV9zdGF0 ZS0+Y3RsIHwKIAkJCWk4NDVfY3Vyc29yX2N0bF9jcnRjKGNydGNfc3RhdGUpOwpAQCAtMTA5NzAs MTMgKzEwOTcwLDEzIEBAIHN0YXRpYyB1MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJICAgY29uc3Qgc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPQotCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOworCQl0b19p OTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOwogCXUzMiBjbnRsID0gMDsKIAogCWlm IChJU19HRU4oZGV2X3ByaXYsIDYpIHx8IElTX0lWWUJSSURHRShkZXZfcHJpdikpCiAJCWNudGwg fD0gTUNVUlNPUl9UUklDS0xFX0ZFRURfRElTQUJMRTsKIAotCXN3aXRjaCAoZHJtX3JlY3Rfd2lk dGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCkpIHsKKwlzd2l0Y2ggKGRybV9yZWN0X3dpZHRoKCZw bGFuZV9zdGF0ZS0+dWFwaS5kc3QpKSB7CiAJY2FzZSA2NDoKIAkJY250bCB8PSBNQ1VSU09SX01P REVfNjRfQVJHQl9BWDsKIAkJYnJlYWs7CkBAIC0xMDk4Nyw3ICsxMDk4Nyw3IEBAIHN0YXRpYyB1 MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAogCQljbnRsIHw9IE1DVVJTT1JfTU9ERV8yNTZfQVJHQl9BWDsKIAkJYnJlYWs7CiAJZGVm YXVsdDoKLQkJTUlTU0lOR19DQVNFKGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5k c3QpKTsKKwkJTUlTU0lOR19DQVNFKGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5k c3QpKTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC0xMTAwMCw5ICsxMTAwMCw5IEBAIHN0YXRpYyB1 MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAogc3RhdGljIGJvb2wgaTl4eF9jdXJzb3Jfc2l6ZV9vayhjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9Ci0JCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Ci0JaW50 IHdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Ci0JaW50IGhl aWdodCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKKwkJdG9faTkx NShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKKwlpbnQgd2lkdGggPSBkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKKwlpbnQgaGVpZ2h0ID0gZHJtX3JlY3RfaGVp Z2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwogCiAJaWYgKCFpbnRlbF9jdXJzb3Jfc2l6ZV9v ayhwbGFuZV9zdGF0ZSkpCiAJCXJldHVybiBmYWxzZTsKQEAgLTExMDM4LDcgKzExMDM4LDcgQEAg c3RhdGljIGJvb2wgaTl4eF9jdXJzb3Jfc2l6ZV9vayhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnBsYW5lX3N0YXRlKQogc3RhdGljIGludCBpOXh4X2NoZWNrX2N1cnNvcihzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCSAgICAgc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9f aW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFu ZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYp OwogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZi OwogCWVudW0gcGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7CkBAIC0xMTA1NSwxOSArMTEwNTUsMTkg QEAgc3RhdGljIGludCBpOXh4X2NoZWNrX2N1cnNvcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKIAkvKiBDaGVjayBmb3Igd2hpY2ggY3Vyc29yIHR5cGVzIHdlIHN1cHBvcnQg Ki8KIAlpZiAoIWk5eHhfY3Vyc29yX3NpemVfb2socGxhbmVfc3RhdGUpKSB7CiAJCURSTV9ERUJV RygiQ3Vyc29yIGRpbWVuc2lvbiAlZHglZCBub3Qgc3VwcG9ydGVkXG4iLAotCQkJICBkcm1fcmVj dF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSwKLQkJCSAgZHJtX3JlY3RfaGVpZ2h0KCZw bGFuZV9zdGF0ZS0+YmFzZS5kc3QpKTsKKwkJCSAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRl LT51YXBpLmRzdCksCisJCQkgIGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0 KSk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCVdBUk5fT04ocGxhbmVfc3RhdGUtPmJhc2Uu dmlzaWJsZSAmJgorCVdBUk5fT04ocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSAmJgogCQlwbGFu ZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0uc3RyaWRlICE9IGZiLT5waXRjaGVzWzBdKTsKIAogCWlm IChmYi0+cGl0Y2hlc1swXSAhPQotCSAgICBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJh c2UuZHN0KSAqIGZiLT5mb3JtYXQtPmNwcFswXSkgeworCSAgICBkcm1fcmVjdF93aWR0aCgmcGxh bmVfc3RhdGUtPnVhcGkuZHN0KSAqIGZiLT5mb3JtYXQtPmNwcFswXSkgewogCQlEUk1fREVCVUdf S01TKCJJbnZhbGlkIGN1cnNvciBzdHJpZGUgKCV1KSAoY3Vyc29yIHdpZHRoICVkKVxuIiwKIAkJ CSAgICAgIGZiLT5waXRjaGVzWzBdLAotCQkJICAgICAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0 YXRlLT5iYXNlLmRzdCkpOworCQkJICAgICAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51 YXBpLmRzdCkpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKQEAgLTExMDgyLDcgKzExMDgyLDcg QEAgc3RhdGljIGludCBpOXh4X2NoZWNrX2N1cnNvcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKIAkgKiBSZWZ1c2UgdGhlIHB1dCB0aGUgY3Vyc29yIGludG8gdGhhdCBjb21w cm9taXNlZCBwb3NpdGlvbi4KIAkgKi8KIAlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikgJiYg cGlwZSA9PSBQSVBFX0MgJiYKLQkgICAgcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSAmJiBwbGFu ZV9zdGF0ZS0+YmFzZS5kc3QueDEgPCAwKSB7CisJICAgIHBsYW5lX3N0YXRlLT51YXBpLnZpc2li bGUgJiYgcGxhbmVfc3RhdGUtPnVhcGkuZHN0LngxIDwgMCkgewogCQlEUk1fREVCVUdfS01TKCJD SFYgY3Vyc29yIEMgbm90IGFsbG93ZWQgdG8gc3RyYWRkbGUgdGhlIGxlZnQgc2NyZWVuIGVkZ2Vc biIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CkBAIC0xMTEwMSw5ICsxMTEwMSw5IEBAIHN0YXRp YyB2b2lkIGk5eHhfdXBkYXRlX2N1cnNvcihzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCXUz MiBjbnRsID0gMCwgYmFzZSA9IDAsIHBvcyA9IDAsIGZiY19jdGwgPSAwOwogCXVuc2lnbmVkIGxv bmcgaXJxZmxhZ3M7CiAKLQlpZiAocGxhbmVfc3RhdGUgJiYgcGxhbmVfc3RhdGUtPmJhc2Uudmlz aWJsZSkgewotCQl1bnNpZ25lZCB3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+ YmFzZS5kc3QpOwotCQl1bnNpZ25lZCBoZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0 YXRlLT5iYXNlLmRzdCk7CisJaWYgKHBsYW5lX3N0YXRlICYmIHBsYW5lX3N0YXRlLT51YXBpLnZp c2libGUpIHsKKwkJdW5zaWduZWQgd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PnVhcGkuZHN0KTsKKwkJdW5zaWduZWQgaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9z dGF0ZS0+dWFwaS5kc3QpOwogCiAJCWNudGwgPSBwbGFuZV9zdGF0ZS0+Y3RsIHwKIAkJCWk5eHhf Y3Vyc29yX2N0bF9jcnRjKGNydGNfc3RhdGUpOwpAQCAtMTE2NDEsNyArMTE2NDEsNyBAQCBzdGF0 aWMgYm9vbCBpbnRlbF93bV9uZWVkX3VwZGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKmN1ciwKIAkJCQkgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpuZXcpCiB7CiAJLyogVXBk YXRlIHdhdGVybWFya3Mgb24gdGlsaW5nIG9yIHNpemUgY2hhbmdlcy4gKi8KLQlpZiAobmV3LT5i YXNlLnZpc2libGUgIT0gY3VyLT5iYXNlLnZpc2libGUpCisJaWYgKG5ldy0+dWFwaS52aXNpYmxl ICE9IGN1ci0+dWFwaS52aXNpYmxlKQogCQlyZXR1cm4gdHJ1ZTsKIAogCWlmICghY3VyLT5ody5m YiB8fCAhbmV3LT5ody5mYikKQEAgLTExNjQ5LDEwICsxMTY0OSwxMCBAQCBzdGF0aWMgYm9vbCBp bnRlbF93bV9uZWVkX3VwZGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmN1ciwK IAogCWlmIChjdXItPmh3LmZiLT5tb2RpZmllciAhPSBuZXctPmh3LmZiLT5tb2RpZmllciB8fAog CSAgICBjdXItPmh3LnJvdGF0aW9uICE9IG5ldy0+aHcucm90YXRpb24gfHwKLQkgICAgZHJtX3Jl Y3Rfd2lkdGgoJm5ldy0+YmFzZS5zcmMpICE9IGRybV9yZWN0X3dpZHRoKCZjdXItPmJhc2Uuc3Jj KSB8fAotCSAgICBkcm1fcmVjdF9oZWlnaHQoJm5ldy0+YmFzZS5zcmMpICE9IGRybV9yZWN0X2hl aWdodCgmY3VyLT5iYXNlLnNyYykgfHwKLQkgICAgZHJtX3JlY3Rfd2lkdGgoJm5ldy0+YmFzZS5k c3QpICE9IGRybV9yZWN0X3dpZHRoKCZjdXItPmJhc2UuZHN0KSB8fAotCSAgICBkcm1fcmVjdF9o ZWlnaHQoJm5ldy0+YmFzZS5kc3QpICE9IGRybV9yZWN0X2hlaWdodCgmY3VyLT5iYXNlLmRzdCkp CisJICAgIGRybV9yZWN0X3dpZHRoKCZuZXctPnVhcGkuc3JjKSAhPSBkcm1fcmVjdF93aWR0aCgm Y3VyLT51YXBpLnNyYykgfHwKKwkgICAgZHJtX3JlY3RfaGVpZ2h0KCZuZXctPnVhcGkuc3JjKSAh PSBkcm1fcmVjdF9oZWlnaHQoJmN1ci0+dWFwaS5zcmMpIHx8CisJICAgIGRybV9yZWN0X3dpZHRo KCZuZXctPnVhcGkuZHN0KSAhPSBkcm1fcmVjdF93aWR0aCgmY3VyLT51YXBpLmRzdCkgfHwKKwkg ICAgZHJtX3JlY3RfaGVpZ2h0KCZuZXctPnVhcGkuZHN0KSAhPSBkcm1fcmVjdF9oZWlnaHQoJmN1 ci0+dWFwaS5kc3QpKQogCQlyZXR1cm4gdHJ1ZTsKIAogCXJldHVybiBmYWxzZTsKQEAgLTExNjYw LDEwICsxMTY2MCwxMCBAQCBzdGF0aWMgYm9vbCBpbnRlbF93bV9uZWVkX3VwZGF0ZShjb25zdCBz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmN1ciwKIAogc3RhdGljIGJvb2wgbmVlZHNfc2NhbGlu Zyhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlKQogewotCWludCBzcmNfdyA9 IGRybV9yZWN0X3dpZHRoKCZzdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwotCWludCBzcmNfaCA9IGRy bV9yZWN0X2hlaWdodCgmc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKLQlpbnQgZHN0X3cgPSBkcm1f cmVjdF93aWR0aCgmc3RhdGUtPmJhc2UuZHN0KTsKLQlpbnQgZHN0X2ggPSBkcm1fcmVjdF9oZWln aHQoJnN0YXRlLT5iYXNlLmRzdCk7CisJaW50IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnN0YXRl LT51YXBpLnNyYykgPj4gMTY7CisJaW50IHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZzdGF0ZS0+ dWFwaS5zcmMpID4+IDE2OworCWludCBkc3RfdyA9IGRybV9yZWN0X3dpZHRoKCZzdGF0ZS0+dWFw aS5kc3QpOworCWludCBkc3RfaCA9IGRybV9yZWN0X2hlaWdodCgmc3RhdGUtPnVhcGkuZHN0KTsK IAogCXJldHVybiAoc3JjX3cgIT0gZHN0X3cgfHwgc3JjX2ggIT0gZHN0X2gpOwogfQpAQCAtMTE2 NzQsNyArMTE2NzQsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdlcyhjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdAogCQkJCSAgICBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewogCXN0cnVjdCBpbnRlbF9jcnRjICpj cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwotCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7 CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRl LT51YXBpLnBsYW5lKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGNydGMtPmJhc2UuZGV2KTsKIAlib29sIG1vZGVfY2hhbmdlZCA9IG5lZWRzX21vZGVzZXQo Y3J0Y19zdGF0ZSk7CiAJYm9vbCB3YXNfY3J0Y19lbmFibGVkID0gb2xkX2NydGNfc3RhdGUtPmh3 LmFjdGl2ZTsKQEAgLTExNjg4LDggKzExNjg4LDggQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19j YWxjX2NoYW5nZXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXQK IAkJCXJldHVybiByZXQ7CiAJfQogCi0Jd2FzX3Zpc2libGUgPSBvbGRfcGxhbmVfc3RhdGUtPmJh c2UudmlzaWJsZTsKLQl2aXNpYmxlID0gcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZTsKKwl3YXNf dmlzaWJsZSA9IG9sZF9wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlOworCXZpc2libGUgPSBwbGFu ZV9zdGF0ZS0+dWFwaS52aXNpYmxlOwogCiAJaWYgKCF3YXNfY3J0Y19lbmFibGVkICYmIFdBUk5f T04od2FzX3Zpc2libGUpKQogCQl3YXNfdmlzaWJsZSA9IGZhbHNlOwpAQCAtMTE3MDUsNyArMTE3 MDUsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdlcyhjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdAogCSAqIG9ubHkgY29tYmluZSB0aGUgcmVz dWx0cyBmcm9tIGFsbCBwbGFuZXMgaW4gdGhlIGN1cnJlbnQgcGxhY2U/CiAJICovCiAJaWYgKCFp c19jcnRjX2VuYWJsZWQpIHsKLQkJcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSA9IHZpc2libGUg PSBmYWxzZTsKKwkJcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSA9IHZpc2libGUgPSBmYWxzZTsK IAkJY3J0Y19zdGF0ZS0+YWN0aXZlX3BsYW5lcyAmPSB+QklUKHBsYW5lLT5pZCk7CiAJCWNydGNf c3RhdGUtPmRhdGFfcmF0ZVtwbGFuZS0+aWRdID0gMDsKIAl9CkBAIC0xMTg2NCw3ICsxMTg2NCw3 IEBAIHN0YXRpYyBpbnQgaWNsX2NoZWNrX252MTJfcGxhbmVzKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQogCQkJY29udGludWU7CiAKIAkJcGxhbmVfc3RhdGUtPnBsYW5hcl9s aW5rZWRfcGxhbmUgPSBOVUxMOwotCQlpZiAocGxhbmVfc3RhdGUtPnBsYW5hcl9zbGF2ZSAmJiAh cGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkgeworCQlpZiAocGxhbmVfc3RhdGUtPnBsYW5hcl9z bGF2ZSAmJiAhcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkgewogCQkJY3J0Y19zdGF0ZS0+YWN0 aXZlX3BsYW5lcyAmPSB+QklUKHBsYW5lLT5pZCk7CiAJCQljcnRjX3N0YXRlLT51cGRhdGVfcGxh bmVzIHw9IEJJVChwbGFuZS0+aWQpOwogCQl9CkBAIC0xMjI4MywxNCArMTIyODMsMTQgQEAgc3Rh dGljIGNvbnN0IGNoYXIgKm91dHB1dF9mb3JtYXRzKGVudW0gaW50ZWxfb3V0cHV0X2Zvcm1hdCBm b3JtYXQpCiAKIHN0YXRpYyB2b2lkIGludGVsX2R1bXBfcGxhbmVfc3RhdGUoY29uc3Qgc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUg KnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVj dCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5w bGFuZSk7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+ aHcuZmI7CiAJc3RydWN0IGRybV9mb3JtYXRfbmFtZV9idWYgZm9ybWF0X25hbWU7CiAKIAlpZiAo IWZiKSB7CiAJCURSTV9ERUJVR19LTVMoIltQTEFORTolZDolc10gZmI6IFtOT0ZCXSwgdmlzaWJs ZTogJXNcbiIsCiAJCQkgICAgICBwbGFuZS0+YmFzZS5iYXNlLmlkLCBwbGFuZS0+YmFzZS5uYW1l LAotCQkJICAgICAgeWVzbm8ocGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkpOworCQkJICAgICAg eWVzbm8ocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkpOwogCQlyZXR1cm47CiAJfQogCkBAIC0x MjI5OCwxMyArMTIyOTgsMTMgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHVtcF9wbGFuZV9zdGF0ZShj b25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogCQkgICAgICBwbGFu ZS0+YmFzZS5iYXNlLmlkLCBwbGFuZS0+YmFzZS5uYW1lLAogCQkgICAgICBmYi0+YmFzZS5pZCwg ZmItPndpZHRoLCBmYi0+aGVpZ2h0LAogCQkgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKGZiLT5m b3JtYXQtPmZvcm1hdCwgJmZvcm1hdF9uYW1lKSwKLQkJICAgICAgeWVzbm8ocGxhbmVfc3RhdGUt PmJhc2UudmlzaWJsZSkpOworCQkgICAgICB5ZXNubyhwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxl KSk7CiAJRFJNX0RFQlVHX0tNUygiXHRyb3RhdGlvbjogMHgleCwgc2NhbGVyOiAlZFxuIiwKIAkJ ICAgICAgcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uLCBwbGFuZV9zdGF0ZS0+c2NhbGVyX2lkKTsK LQlpZiAocGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKKwlpZiAocGxhbmVfc3RhdGUtPnVhcGku dmlzaWJsZSkKIAkJRFJNX0RFQlVHX0tNUygiXHRzcmM6ICIgRFJNX1JFQ1RfRlBfRk1UICIgZHN0 OiAiIERSTV9SRUNUX0ZNVCAiXG4iLAotCQkJICAgICAgRFJNX1JFQ1RfRlBfQVJHKCZwbGFuZV9z dGF0ZS0+YmFzZS5zcmMpLAotCQkJICAgICAgRFJNX1JFQ1RfQVJHKCZwbGFuZV9zdGF0ZS0+YmFz ZS5kc3QpKTsKKwkJCSAgICAgIERSTV9SRUNUX0ZQX0FSRygmcGxhbmVfc3RhdGUtPnVhcGkuc3Jj KSwKKwkJCSAgICAgIERSTV9SRUNUX0FSRygmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSk7CiB9CiAK IHN0YXRpYyB2b2lkIGludGVsX2R1bXBfcGlwZV9jb25maWcoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKnBpcGVfY29uZmlnLApAQCAtMTM0NTEsNyArMTM0NTEsNyBAQCBpbnRlbF92ZXJp ZnlfcGxhbmVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogCWZvcl9lYWNoX25l d19pbnRlbF9wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsCiAJCQkJCSAgcGxhbmVfc3RhdGUs IGkpCiAJCWFzc2VydF9wbGFuZShwbGFuZSwgcGxhbmVfc3RhdGUtPnBsYW5hcl9zbGF2ZSB8fAot CQkJICAgICBwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKTsKKwkJCSAgICAgcGxhbmVfc3RhdGUt PnVhcGkudmlzaWJsZSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNDgyMSw3ICsxNDgyMSw3IEBA IHN0YXRpYyB2b2lkIGFkZF9ycHNfYm9vc3RfYWZ0ZXJfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywKIAogc3RhdGljIGludCBpbnRlbF9wbGFuZV9waW5fZmIoc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9f aW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFu ZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYp OwogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwogCXN0 cnVjdCBpOTE1X3ZtYSAqdm1hOwpAQCAtMTQ4ODYsNyArMTQ4ODYsNyBAQCBpbnRlbF9wcmVwYXJl X3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCXN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqbmV3X3BsYW5lX3N0YXRlID0KIAkJdG9faW50ZWxfcGxhbmVfc3RhdGUoX25ld19wbGFu ZV9zdGF0ZSk7CiAJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPQotCQl0 b19pbnRlbF9hdG9taWNfc3RhdGUobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnN0YXRlKTsKKwkJdG9f aW50ZWxfYXRvbWljX3N0YXRlKG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5zdGF0ZSk7CiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+ZGV2KTsKIAlzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IG5ld19wbGFuZV9zdGF0ZS0+aHcuZmI7CiAJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7CkBAIC0xNDkxOSw5 ICsxNDkxOSw5IEBAIGludGVsX3ByZXBhcmVfcGxhbmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCiAJCX0KIAl9CiAKLQlpZiAobmV3X3BsYW5lX3N0YXRlLT5iYXNlLmZlbmNlKSB7IC8qIGV4 cGxpY2l0IGZlbmNpbmcgKi8KKwlpZiAobmV3X3BsYW5lX3N0YXRlLT51YXBpLmZlbmNlKSB7IC8q IGV4cGxpY2l0IGZlbmNpbmcgKi8KIAkJcmV0ID0gaTkxNV9zd19mZW5jZV9hd2FpdF9kbWFfZmVu Y2UoJmludGVsX3N0YXRlLT5jb21taXRfcmVhZHksCi0JCQkJCQkgICAgbmV3X3BsYW5lX3N0YXRl LT5iYXNlLmZlbmNlLAorCQkJCQkJICAgIG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5mZW5jZSwKIAkJ CQkJCSAgICBJOTE1X0ZFTkNFX1RJTUVPVVQsCiAJCQkJCQkgICAgR0ZQX0tFUk5FTCk7CiAJCWlm IChyZXQgPCAwKQpAQCAtMTQ5NDQsNyArMTQ5NDQsNyBAQCBpbnRlbF9wcmVwYXJlX3BsYW5lX2Zi KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCWZiX29ial9idW1wX3JlbmRlcl9wcmlvcml0eShv YmopOwogCWludGVsX2Zyb250YnVmZmVyX2ZsdXNoKG9iai0+ZnJvbnRidWZmZXIsIE9SSUdJTl9E SVJUWUZCKTsKIAotCWlmICghbmV3X3BsYW5lX3N0YXRlLT5iYXNlLmZlbmNlKSB7IC8qIGltcGxp Y2l0IGZlbmNpbmcgKi8KKwlpZiAoIW5ld19wbGFuZV9zdGF0ZS0+dWFwaS5mZW5jZSkgeyAvKiBp bXBsaWNpdCBmZW5jaW5nICovCiAJCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOwogCiAJCXJldCA9 IGk5MTVfc3dfZmVuY2VfYXdhaXRfcmVzZXJ2YXRpb24oJmludGVsX3N0YXRlLT5jb21taXRfcmVh ZHksCkBAIC0xNDk2Miw3ICsxNDk2Miw3IEBAIGludGVsX3ByZXBhcmVfcGxhbmVfZmIoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUsCiAJCX0KIAl9IGVsc2UgewogCQlhZGRfcnBzX2Jvb3N0X2FmdGVy X3ZibGFuayhuZXdfcGxhbmVfc3RhdGUtPmh3LmNydGMsCi0JCQkJCSAgIG5ld19wbGFuZV9zdGF0 ZS0+YmFzZS5mZW5jZSk7CisJCQkJCSAgIG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5mZW5jZSk7CiAJ fQogCiAJLyoKQEAgLTE0OTk1LDcgKzE0OTk1LDcgQEAgaW50ZWxfY2xlYW51cF9wbGFuZV9mYihz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm9sZF9w bGFuZV9zdGF0ZSA9CiAJCXRvX2ludGVsX3BsYW5lX3N0YXRlKF9vbGRfcGxhbmVfc3RhdGUpOwog CXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0KLQkJdG9faW50ZWxfYXRv bWljX3N0YXRlKG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS5zdGF0ZSk7CisJCXRvX2ludGVsX2F0b21p Y19zdGF0ZShvbGRfcGxhbmVfc3RhdGUtPnVhcGkuc3RhdGUpOwogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmRldik7CiAKIAlpZiAoaW50ZWxfc3Rh dGUtPnJwc19pbnRlcmFjdGl2ZSkgewpAQCAtMTUxNjQsOCArMTUxNjQsOCBAQCBpbnRlbF9sZWdh Y3lfY3Vyc29yX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCiAJICogdGhlIHBsYW5l LiAgVGhpcyBwcmV2ZW50cyBvdXIgYXN5bmMgdXBkYXRlJ3MgY2hhbmdlcyBmcm9tIGdldHRpbmcK IAkgKiBvdmVycmlkZGVuIGJ5IGEgcHJldmlvdXMgc3luY2hyb25vdXMgdXBkYXRlJ3Mgc3RhdGUu CiAJICovCi0JaWYgKG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS5jb21taXQgJiYKLQkgICAgIXRyeV93 YWl0X2Zvcl9jb21wbGV0aW9uKCZvbGRfcGxhbmVfc3RhdGUtPmJhc2UuY29tbWl0LT5od19kb25l KSkKKwlpZiAob2xkX3BsYW5lX3N0YXRlLT51YXBpLmNvbW1pdCAmJgorCSAgICAhdHJ5X3dhaXRf Zm9yX2NvbXBsZXRpb24oJm9sZF9wbGFuZV9zdGF0ZS0+dWFwaS5jb21taXQtPmh3X2RvbmUpKQog CQlnb3RvIHNsb3c7CiAKIAkvKgpAQCAtMTUxNzQsMTAgKzE1MTc0LDEwIEBAIGludGVsX2xlZ2Fj eV9jdXJzb3JfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKl9wbGFuZSwKIAkgKiBpbiB0aGUgZmFz dHBhdGguCiAJICovCiAJaWYgKG9sZF9wbGFuZV9zdGF0ZS0+dWFwaS5jcnRjICE9ICZjcnRjLT5i YXNlIHx8Ci0JICAgIG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS5zcmNfdyAhPSBzcmNfdyB8fAotCSAg ICBvbGRfcGxhbmVfc3RhdGUtPmJhc2Uuc3JjX2ggIT0gc3JjX2ggfHwKLQkgICAgb2xkX3BsYW5l X3N0YXRlLT5iYXNlLmNydGNfdyAhPSBjcnRjX3cgfHwKLQkgICAgb2xkX3BsYW5lX3N0YXRlLT5i YXNlLmNydGNfaCAhPSBjcnRjX2ggfHwKKwkgICAgb2xkX3BsYW5lX3N0YXRlLT51YXBpLnNyY193 ICE9IHNyY193IHx8CisJICAgIG9sZF9wbGFuZV9zdGF0ZS0+dWFwaS5zcmNfaCAhPSBzcmNfaCB8 fAorCSAgICBvbGRfcGxhbmVfc3RhdGUtPnVhcGkuY3J0Y193ICE9IGNydGNfdyB8fAorCSAgICBv bGRfcGxhbmVfc3RhdGUtPnVhcGkuY3J0Y19oICE9IGNydGNfaCB8fAogCSAgICAhb2xkX3BsYW5l X3N0YXRlLT51YXBpLmZiICE9ICFmYikKIAkJZ290byBzbG93OwogCkBAIC0xNTE5MSwxNiArMTUx OTEsMTYgQEAgaW50ZWxfbGVnYWN5X2N1cnNvcl91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqX3Bs YW5lLAogCQlnb3RvIG91dF9mcmVlOwogCX0KIAotCWRybV9hdG9taWNfc2V0X2ZiX2Zvcl9wbGFu ZSgmbmV3X3BsYW5lX3N0YXRlLT5iYXNlLCBmYik7CisJZHJtX2F0b21pY19zZXRfZmJfZm9yX3Bs YW5lKCZuZXdfcGxhbmVfc3RhdGUtPnVhcGksIGZiKTsKIAotCW5ld19wbGFuZV9zdGF0ZS0+YmFz ZS5zcmNfeCA9IHNyY194OwotCW5ld19wbGFuZV9zdGF0ZS0+YmFzZS5zcmNfeSA9IHNyY195Owot CW5ld19wbGFuZV9zdGF0ZS0+YmFzZS5zcmNfdyA9IHNyY193OwotCW5ld19wbGFuZV9zdGF0ZS0+ YmFzZS5zcmNfaCA9IHNyY19oOwotCW5ld19wbGFuZV9zdGF0ZS0+YmFzZS5jcnRjX3ggPSBjcnRj X3g7Ci0JbmV3X3BsYW5lX3N0YXRlLT5iYXNlLmNydGNfeSA9IGNydGNfeTsKLQluZXdfcGxhbmVf c3RhdGUtPmJhc2UuY3J0Y193ID0gY3J0Y193OwotCW5ld19wbGFuZV9zdGF0ZS0+YmFzZS5jcnRj X2ggPSBjcnRjX2g7CisJbmV3X3BsYW5lX3N0YXRlLT51YXBpLnNyY194ID0gc3JjX3g7CisJbmV3 X3BsYW5lX3N0YXRlLT51YXBpLnNyY195ID0gc3JjX3k7CisJbmV3X3BsYW5lX3N0YXRlLT51YXBp LnNyY193ID0gc3JjX3c7CisJbmV3X3BsYW5lX3N0YXRlLT51YXBpLnNyY19oID0gc3JjX2g7CisJ bmV3X3BsYW5lX3N0YXRlLT51YXBpLmNydGNfeCA9IGNydGNfeDsKKwluZXdfcGxhbmVfc3RhdGUt PnVhcGkuY3J0Y195ID0gY3J0Y195OworCW5ld19wbGFuZV9zdGF0ZS0+dWFwaS5jcnRjX3cgPSBj cnRjX3c7CisJbmV3X3BsYW5lX3N0YXRlLT51YXBpLmNydGNfaCA9IGNydGNfaDsKIAogCXJldCA9 IGludGVsX3BsYW5lX2F0b21pY19jaGVja193aXRoX3N0YXRlKGNydGNfc3RhdGUsIG5ld19jcnRj X3N0YXRlLAogCQkJCQkJICBvbGRfcGxhbmVfc3RhdGUsIG5ld19wbGFuZV9zdGF0ZSk7CkBAIC0x NTIxOCw3ICsxNTIxOCw3IEBAIGludGVsX2xlZ2FjeV9jdXJzb3JfdXBkYXRlKHN0cnVjdCBkcm1f cGxhbmUgKl9wbGFuZSwKIAkJCQlwbGFuZS0+ZnJvbnRidWZmZXJfYml0KTsKIAogCS8qIFN3YXAg cGxhbmUgc3RhdGUgKi8KLQlwbGFuZS0+YmFzZS5zdGF0ZSA9ICZuZXdfcGxhbmVfc3RhdGUtPmJh c2U7CisJcGxhbmUtPmJhc2Uuc3RhdGUgPSAmbmV3X3BsYW5lX3N0YXRlLT51YXBpOwogCiAJLyoK IAkgKiBXZSBjYW5ub3Qgc3dhcCBjcnRjX3N0YXRlIGFzIGl0IG1heSBiZSBpbiB1c2UgYnkgYW4g YXRvbWljIGNvbW1pdCBvcgpAQCAtMTUyMzIsNyArMTUyMzIsNyBAQCBpbnRlbF9sZWdhY3lfY3Vy c29yX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCiAJICovCiAJY3J0Y19zdGF0ZS0+ YWN0aXZlX3BsYW5lcyA9IG5ld19jcnRjX3N0YXRlLT5hY3RpdmVfcGxhbmVzOwogCi0JaWYgKG5l d19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCWlmIChuZXdfcGxhbmVfc3RhdGUtPnVhcGku dmlzaWJsZSkKIAkJaW50ZWxfdXBkYXRlX3BsYW5lKHBsYW5lLCBjcnRjX3N0YXRlLCBuZXdfcGxh bmVfc3RhdGUpOwogCWVsc2UKIAkJaW50ZWxfZGlzYWJsZV9wbGFuZShwbGFuZSwgY3J0Y19zdGF0 ZSk7CkBAIC0xNTI0Myw5ICsxNTI0MywxMSBAQCBpbnRlbF9sZWdhY3lfY3Vyc29yX3VwZGF0ZShz dHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCiAJaWYgKG5ld19jcnRjX3N0YXRlKQogCQlpbnRlbF9j cnRjX2Rlc3Ryb3lfc3RhdGUoJmNydGMtPmJhc2UsICZuZXdfY3J0Y19zdGF0ZS0+dWFwaSk7CiAJ aWYgKHJldCkKLQkJaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZSgmcGxhbmUtPmJhc2UsICZuZXdf cGxhbmVfc3RhdGUtPmJhc2UpOworCQlpbnRlbF9wbGFuZV9kZXN0cm95X3N0YXRlKCZwbGFuZS0+ YmFzZSwKKwkJCQkJICAmbmV3X3BsYW5lX3N0YXRlLT51YXBpKTsKIAllbHNlCi0JCWludGVsX3Bs YW5lX2Rlc3Ryb3lfc3RhdGUoJnBsYW5lLT5iYXNlLCAmb2xkX3BsYW5lX3N0YXRlLT5iYXNlKTsK KwkJaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZSgmcGxhbmUtPmJhc2UsCisJCQkJCSAgJm9sZF9w bGFuZV9zdGF0ZS0+dWFwaSk7CiAJcmV0dXJuIHJldDsKIAogc2xvdzoKQEAgLTE2OTQzLDcgKzE2 OTQ1LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2FuaXRpemVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKIAkJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUg PQogCQkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lLT5iYXNlLnN0YXRlKTsKIAotCQkJaWYg KHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUgJiYKKwkJCWlmIChwbGFuZV9zdGF0ZS0+dWFwaS52 aXNpYmxlICYmCiAJCQkgICAgcGxhbmUtPmJhc2UudHlwZSAhPSBEUk1fUExBTkVfVFlQRV9QUklN QVJZKQogCQkJCWludGVsX3BsYW5lX2Rpc2FibGVfbm9hdG9taWMoY3J0YywgcGxhbmUpOwogCQl9 CkBAIC0xNzI4Miw3ICsxNzI4NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX21vZGVzZXRfcmVhZG91 dF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQkJICogRklYTUUgZG9uJ3QgaGF2 ZSB0aGUgZmIgeWV0LCBzbyBjYW4ndAogCQkJICogdXNlIGludGVsX3BsYW5lX2RhdGFfcmF0ZSgp IDooCiAJCQkgKi8KLQkJCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCQkJaWYgKHBs YW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCQkJY3J0Y19zdGF0ZS0+ZGF0YV9yYXRlW3BsYW5l LT5pZF0gPQogCQkJCQk0ICogY3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZTsKIAkJfQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mYmMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmJjLmMKaW5kZXggM2VhOGQwMTBkYjZjLi45MmM3ZWIy NDM1NTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmJj LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mYmMuYwpAQCAtNDMw LDcgKzQzMCw3IEBAIHN0YXRpYyBib29sIG11bHRpcGxlX3BpcGVzX29rKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAogCWlmICghbm9fZmJjX29uX211bHRpcGxlX3BpcGVzKGRldl9wcml2KSkKIAkJ cmV0dXJuIHRydWU7CiAKLQlpZiAocGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKKwlpZiAocGxh bmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKIAkJZmJjLT52aXNpYmxlX3BpcGVzX21hc2sgfD0gKDEg PDwgcGlwZSk7CiAJZWxzZQogCQlmYmMtPnZpc2libGVfcGlwZXNfbWFzayAmPSB+KDEgPDwgcGlw ZSk7CkBAIC02NzcsMTIgKzY3NywxMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9mYmNfdXBkYXRlX3N0 YXRlX2NhY2hlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCSAqIHRoZSA5MC8yNzAgZGVncmVl IHBsYW5lIHJvdGF0aW9uIGNhc2VzICh0byBtYXRjaCB0aGUKIAkgKiBHVFQgbWFwcGluZyksIGhl bmNlIG5vIG5lZWQgdG8gYWNjb3VudCBmb3Igcm90YXRpb24gaGVyZS4KIAkgKi8KLQljYWNoZS0+ cGxhbmUuc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAx NjsKLQljYWNoZS0+cGxhbmUuc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5i YXNlLnNyYykgPj4gMTY7Ci0JY2FjaGUtPnBsYW5lLnZpc2libGUgPSBwbGFuZV9zdGF0ZS0+YmFz ZS52aXNpYmxlOworCWNhY2hlLT5wbGFuZS5zcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+dWFwaS5zcmMpID4+IDE2OworCWNhY2hlLT5wbGFuZS5zcmNfaCA9IGRybV9yZWN0X2hl aWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKKwljYWNoZS0+cGxhbmUudmlzaWJs ZSA9IHBsYW5lX3N0YXRlLT51YXBpLnZpc2libGU7CiAJY2FjaGUtPnBsYW5lLmFkanVzdGVkX3gg PSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ueDsKIAljYWNoZS0+cGxhbmUuYWRqdXN0ZWRf eSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS55OwotCWNhY2hlLT5wbGFuZS55ID0gcGxh bmVfc3RhdGUtPmJhc2Uuc3JjLnkxID4+IDE2OworCWNhY2hlLT5wbGFuZS55ID0gcGxhbmVfc3Rh dGUtPnVhcGkuc3JjLnkxID4+IDE2OwogCiAJY2FjaGUtPnBsYW5lLnBpeGVsX2JsZW5kX21vZGUg PSBwbGFuZV9zdGF0ZS0+aHcucGl4ZWxfYmxlbmRfbW9kZTsKIApAQCAtMTA1Miw3ICsxMDUyLDcg QEAgdm9pZCBpbnRlbF9mYmNfY2hvb3NlX2NydGMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogCQlpZiAoIXBsYW5lLT5oYXNfZmJjKQogCQkJY29udGludWU7CiAKLQkJaWYgKCFw bGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCQlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2li bGUpCiAJCQljb250aW51ZTsKIAogCQljcnRjX3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9uZXdf Y3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX292ZXJsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfb3ZlcmxheS5jCmluZGV4IDQ2ZTNkNmNmNTk3Ni4uOGNmYjc4NWU3NjFjIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX292ZXJsYXkuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX292ZXJsYXkuYwpAQCAtNjY4LDcgKzY2 OCw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9jb2xvcmtleShzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAq b3ZlcmxheSwKIAlpZiAob3ZlcmxheS0+Y29sb3Jfa2V5X2VuYWJsZWQpCiAJCWZsYWdzIHw9IERT VF9LRVlfRU5BQkxFOwogCi0JaWYgKHN0YXRlLT5iYXNlLnZpc2libGUpCisJaWYgKHN0YXRlLT51 YXBpLnZpc2libGUpCiAJCWZvcm1hdCA9IHN0YXRlLT5ody5mYi0+Zm9ybWF0LT5mb3JtYXQ7CiAK IAlzd2l0Y2ggKGZvcm1hdCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf c3ByaXRlLmMKaW5kZXggMjQ1MjYzMDMxMjk5Li4wMGY4M2QzN2FiY2YgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYwpAQCAtMjQwLDcgKzI0MCw3IEBAIHZv aWQgaW50ZWxfcGlwZV91cGRhdGVfZW5kKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0 Y19zdGF0ZSkKIAogaW50IGludGVsX3BsYW5lX2NoZWNrX3N0cmlkZShjb25zdCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxh bmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGlu dGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5l KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5m YjsKIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247CiAJ dTMyIHN0cmlkZSwgbWF4X3N0cmlkZTsKQEAgLTI1Miw3ICsyNTIsNyBAQCBpbnQgaW50ZWxfcGxh bmVfY2hlY2tfc3RyaWRlKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUpCiAJICoga2ljayBpbiBkdWUgdGhlIHBsYW5lIGJlaW5nIGludmlzaWJsZS4KIAkgKi8KIAlp ZiAoaW50ZWxfcGxhbmVfY2FuX3JlbWFwKHBsYW5lX3N0YXRlKSAmJgotCSAgICAhcGxhbmVfc3Rh dGUtPmJhc2UudmlzaWJsZSkKKwkgICAgIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCXJl dHVybiAwOwogCiAJLyogRklYTUUgb3RoZXIgY29sb3IgcGxhbmVzPyAqLwpAQCAtMjczLDcgKzI3 Myw3IEBAIGludCBpbnRlbF9wbGFuZV9jaGVja19zdHJpZGUoY29uc3Qgc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIGludCBpbnRlbF9wbGFuZV9jaGVja19zcmNfY29vcmRp bmF0ZXMoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKIAljb25zdCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKLQlzdHJ1Y3Qg ZHJtX3JlY3QgKnNyYyA9ICZwbGFuZV9zdGF0ZS0+YmFzZS5zcmM7CisJc3RydWN0IGRybV9yZWN0 ICpzcmMgPSAmcGxhbmVfc3RhdGUtPnVhcGkuc3JjOwogCXUzMiBzcmNfeCwgc3JjX3ksIHNyY193 LCBzcmNfaCwgaHN1YiwgdnN1YjsKIAlib29sIHJvdGF0ZWQgPSBkcm1fcm90YXRpb25fOTBfb3Jf MjcwKHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbik7CiAKQEAgLTM1MiwxOSArMzUyLDE5IEBAIHNr bF9wcm9ncmFtX3NjYWxlcihzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCWludCBzY2FsZXJf aWQgPSBwbGFuZV9zdGF0ZS0+c2NhbGVyX2lkOwogCWNvbnN0IHN0cnVjdCBpbnRlbF9zY2FsZXIg KnNjYWxlciA9CiAJCSZjcnRjX3N0YXRlLT5zY2FsZXJfc3RhdGUuc2NhbGVyc1tzY2FsZXJfaWRd OwotCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7Ci0JaW50IGNydGNfeSA9 IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC55MTsKLQl1MzIgY3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgo JnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Ci0JdTMyIGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgm cGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKKwlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPnVhcGku ZHN0LngxOworCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueTE7CisJdTMyIGNy dGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOworCXUzMiBjcnRj X2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7CiAJdTE2IHlfaHBo YXNlLCB1dl9yZ2JfaHBoYXNlOwogCXUxNiB5X3ZwaGFzZSwgdXZfcmdiX3ZwaGFzZTsKIAlpbnQg aHNjYWxlLCB2c2NhbGU7CiAKLQloc2NhbGUgPSBkcm1fcmVjdF9jYWxjX2hzY2FsZSgmcGxhbmVf c3RhdGUtPmJhc2Uuc3JjLAotCQkJCSAgICAgICZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QsCisJaHNj YWxlID0gZHJtX3JlY3RfY2FsY19oc2NhbGUoJnBsYW5lX3N0YXRlLT51YXBpLnNyYywKKwkJCQkg ICAgICAmcGxhbmVfc3RhdGUtPnVhcGkuZHN0LAogCQkJCSAgICAgIDAsIElOVF9NQVgpOwotCXZz Y2FsZSA9IGRybV9yZWN0X2NhbGNfdnNjYWxlKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMsCi0JCQkJ ICAgICAgJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCwKKwl2c2NhbGUgPSBkcm1fcmVjdF9jYWxjX3Zz Y2FsZSgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjLAorCQkJCSAgICAgICZwbGFuZV9zdGF0ZS0+dWFw aS5kc3QsCiAJCQkJICAgICAgMCwgSU5UX01BWCk7CiAKIAkvKiBUT0RPOiBoYW5kbGUgc3ViLXBp eGVsIGNvb3JkaW5hdGVzICovCkBAIC01MzUsMTIgKzUzNSwxMiBAQCBza2xfcHJvZ3JhbV9wbGFu ZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCXUzMiBzdXJmX2FkZHIgPSBwbGFuZV9zdGF0 ZS0+Y29sb3JfcGxhbmVbY29sb3JfcGxhbmVdLm9mZnNldDsKIAl1MzIgc3RyaWRlID0gc2tsX3Bs YW5lX3N0cmlkZShwbGFuZV9zdGF0ZSwgY29sb3JfcGxhbmUpOwogCXUzMiBhdXhfc3RyaWRlID0g c2tsX3BsYW5lX3N0cmlkZShwbGFuZV9zdGF0ZSwgMSk7Ci0JaW50IGNydGNfeCA9IHBsYW5lX3N0 YXRlLT5iYXNlLmRzdC54MTsKLQlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0Lnkx OworCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDE7CisJaW50IGNydGNfeSA9 IHBsYW5lX3N0YXRlLT51YXBpLmRzdC55MTsKIAl1MzIgeCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9w bGFuZVtjb2xvcl9wbGFuZV0ueDsKIAl1MzIgeSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVtj b2xvcl9wbGFuZV0ueTsKLQl1MzIgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PmJhc2Uuc3JjKSA+PiAxNjsKLQl1MzIgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0 YXRlLT5iYXNlLnNyYykgPj4gMTY7CisJdTMyIHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5l X3N0YXRlLT51YXBpLnNyYykgPj4gMTY7CisJdTMyIHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZw bGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2OwogCXN0cnVjdCBpbnRlbF9wbGFuZSAqbGlua2Vk ID0gcGxhbmVfc3RhdGUtPnBsYW5hcl9saW5rZWRfcGxhbmU7CiAJY29uc3Qgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJdTggYWxwaGEgPSBwbGFuZV9z dGF0ZS0+aHcuYWxwaGEgPj4gODsKQEAgLTcxNyw3ICs3MTcsNyBAQCBzdGF0aWMgdm9pZCBpOXh4 X3BsYW5lX2xpbmVhcl9nYW1tYSh1MTYgZ2FtbWFbOF0pCiBzdGF0aWMgdm9pZAogY2h2X3VwZGF0 ZV9jc2MoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJh c2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShw bGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwogCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQg PSBwbGFuZS0+aWQ7CkBAIC03NzYsNyArNzc2LDcgQEAgY2h2X3VwZGF0ZV9jc2MoY29uc3Qgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHN0YXRpYyB2b2lkCiB2bHZfdXBk YXRlX2NscmMoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsK LQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUt PmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwogCWNvbnN0IHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwogCWVudW0gcGlwZSBwaXBlID0gcGxh bmUtPnBpcGU7CkBAIC04OTEsNyArODkxLDcgQEAgc3RhdGljIHUzMiB2bHZfc3ByaXRlX2N0bChj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAogc3RhdGljIHZvaWQg dmx2X3VwZGF0ZV9nYW1tYShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlKQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFu ZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2lu dGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7CiAJY29uc3Qgc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJZW51bSBwaXBlIHBp cGUgPSBwbGFuZS0+cGlwZTsKQEAgLTkyNSwxMCArOTI1LDEwIEBAIHZsdl91cGRhdGVfcGxhbmUo c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKIAl1MzIgc3Byc3VyZl9vZmZzZXQgPSBwbGFuZV9z dGF0ZS0+Y29sb3JfcGxhbmVbMF0ub2Zmc2V0OwogCXUzMiBsaW5lYXJfb2Zmc2V0OwogCWNvbnN0 IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNr ZXk7Ci0JaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC54MTsKLQlpbnQgY3J0Y195 ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LnkxOwotCXUzMiBjcnRjX3cgPSBkcm1fcmVjdF93aWR0 aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKLQl1MzIgY3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0 KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOworCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+dWFw aS5kc3QueDE7CisJaW50IGNydGNfeSA9IHBsYW5lX3N0YXRlLT51YXBpLmRzdC55MTsKKwl1MzIg Y3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7CisJdTMyIGNy dGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKIAl1MzIgeCA9 IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS54OwogCXUzMiB5ID0gcGxhbmVfc3RhdGUtPmNv bG9yX3BsYW5lWzBdLnk7CiAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKQEAgLTEwMzUsNyArMTAz NSw3IEBAIHN0YXRpYyB1MzIgaXZiX3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCiAJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KLQkJ dG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKKwkJdG9faTkxNShwbGFuZV9z dGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9z dGF0ZS0+aHcucm90YXRpb247CiAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3Jr ZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKQEAgLTExMDUsNyArMTEwNSw3IEBAIHN0YXRp YyB2b2lkIGl2Yl9zcHJpdGVfbGluZWFyX2dhbW1hKHUxNiBnYW1tYVsxOF0pCiAKIHN0YXRpYyB2 b2lkIGl2Yl91cGRhdGVfZ2FtbWEoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUo cGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0 b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwogCWVudW0gcGlw ZSBwaXBlID0gcGxhbmUtPnBpcGU7CiAJdTE2IGdhbW1hWzE4XTsKQEAgLTExNDEsMTQgKzExNDEs MTQgQEAgaXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCXUzMiBz cHJzdXJmX29mZnNldCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS5vZmZzZXQ7CiAJdTMy IGxpbmVhcl9vZmZzZXQ7CiAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkg KmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKLQlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPmJh c2UuZHN0LngxOwotCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueTE7Ci0JdTMy IGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwotCXUzMiBj cnRjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7CisJaW50IGNy dGNfeCA9IHBsYW5lX3N0YXRlLT51YXBpLmRzdC54MTsKKwlpbnQgY3J0Y195ID0gcGxhbmVfc3Rh dGUtPnVhcGkuZHN0LnkxOworCXUzMiBjcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3Rh dGUtPnVhcGkuZHN0KTsKKwl1MzIgY3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0 ZS0+dWFwaS5kc3QpOwogCXUzMiB4ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLng7CiAJ dTMyIHkgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ueTsKLQl1MzIgc3JjX3cgPSBkcm1f cmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKLQl1MzIgc3JjX2ggPSBk cm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7CisJdTMyIHNyY193 ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7CisJdTMyIHNy Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2OwogCXUz MiBzcHJjdGwsIHNwcnNjYWxlID0gMDsKIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwogCkBAIC0x MjY5LDcgKzEyNjksNyBAQCBzdGF0aWMgdTMyIGc0eF9zcHJpdGVfY3RsKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9Ci0JCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7CisJCXRvX2k5 MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJdW5zaWduZWQgaW50IHJvdGF0aW9u ID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwogCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3By aXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7CkBAIC0xMzI2LDcgKzEzMjYs NyBAQCBzdGF0aWMgdTMyIGc0eF9zcHJpdGVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAogCiBzdGF0aWMgdm9pZCBnNHhfdXBkYXRlX2dhbW1hKGNvbnN0IHN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVh cGkucGxhbmUpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo cGxhbmUtPmJhc2UuZGV2KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBs YW5lX3N0YXRlLT5ody5mYjsKIAllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwpAQCAtMTM1 OCw3ICsxMzU4LDcgQEAgc3RhdGljIHZvaWQgaWxrX3Nwcml0ZV9saW5lYXJfZ2FtbWEodTE2IGdh bW1hWzE3XSkKIAogc3RhdGljIHZvaWQgaWxrX3VwZGF0ZV9nYW1tYShjb25zdCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxh bmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGlu dGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5l KTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5i YXNlLmRldik7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0 ZS0+aHcuZmI7CiAJZW51bSBwaXBlIHBpcGUgPSBwbGFuZS0+cGlwZTsKQEAgLTEzOTQsMTQgKzEz OTQsMTQgQEAgZzR4X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCXUz MiBkdnNzdXJmX29mZnNldCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS5vZmZzZXQ7CiAJ dTMyIGxpbmVhcl9vZmZzZXQ7CiAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3Jr ZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKLQlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUt PmJhc2UuZHN0LngxOwotCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueTE7Ci0J dTMyIGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwotCXUz MiBjcnRjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7CisJaW50 IGNydGNfeCA9IHBsYW5lX3N0YXRlLT51YXBpLmRzdC54MTsKKwlpbnQgY3J0Y195ID0gcGxhbmVf c3RhdGUtPnVhcGkuZHN0LnkxOworCXUzMiBjcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVf c3RhdGUtPnVhcGkuZHN0KTsKKwl1MzIgY3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9z dGF0ZS0+dWFwaS5kc3QpOwogCXUzMiB4ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLng7 CiAJdTMyIHkgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ueTsKLQl1MzIgc3JjX3cgPSBk cm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKLQl1MzIgc3JjX2gg PSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7CisJdTMyIHNy Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7CisJdTMy IHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owog CXUzMiBkdnNjbnRyLCBkdnNzY2FsZSA9IDA7CiAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKIApA QCAtMTUxMCw4ICsxNTEwLDggQEAgZzR4X3Nwcml0ZV9jaGVja19zY2FsaW5nKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCiB7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFu ZV9zdGF0ZS0+aHcuZmI7Ci0JY29uc3Qgc3RydWN0IGRybV9yZWN0ICpzcmMgPSAmcGxhbmVfc3Rh dGUtPmJhc2Uuc3JjOwotCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqZHN0ID0gJnBsYW5lX3N0YXRl LT5iYXNlLmRzdDsKKwljb25zdCBzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9ICZwbGFuZV9zdGF0ZS0+ dWFwaS5zcmM7CisJY29uc3Qgc3RydWN0IGRybV9yZWN0ICpkc3QgPSAmcGxhbmVfc3RhdGUtPnVh cGkuZHN0OwogCWludCBzcmNfeCwgc3JjX3csIHNyY19oLCBjcnRjX3csIGNydGNfaDsKIAljb25z dCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9CiAJCSZjcnRjX3N0YXRl LT5ody5hZGp1c3RlZF9tb2RlOwpAQCAtMTU3MCw3ICsxNTcwLDcgQEAgc3RhdGljIGludAogZzR4 X3Nwcml0ZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJIHN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVh cGkucGxhbmUpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo cGxhbmUtPmJhc2UuZGV2KTsKIAlpbnQgbWluX3NjYWxlID0gRFJNX1BMQU5FX0hFTFBFUl9OT19T Q0FMSU5HOwogCWludCBtYXhfc2NhbGUgPSBEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkc7CkBA IC0xNTg2LDcgKzE1ODYsNyBAQCBnNHhfc3ByaXRlX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAogCQl9CiAJfQogCi0JcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hl Y2tfcGxhbmVfc3RhdGUoJnBsYW5lX3N0YXRlLT5iYXNlLAorCXJldCA9IGRybV9hdG9taWNfaGVs cGVyX2NoZWNrX3BsYW5lX3N0YXRlKCZwbGFuZV9zdGF0ZS0+dWFwaSwKIAkJCQkJCSAgJmNydGNf c3RhdGUtPnVhcGksCiAJCQkJCQkgIG1pbl9zY2FsZSwgbWF4X3NjYWxlLAogCQkJCQkJICB0cnVl LCB0cnVlKTsKQEAgLTE1OTcsNyArMTU5Nyw3IEBAIGc0eF9zcHJpdGVfY2hlY2soc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAot CWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBp LnZpc2libGUpCiAJCXJldHVybiAwOwogCiAJcmV0ID0gaW50ZWxfcGxhbmVfY2hlY2tfc3JjX2Nv b3JkaW5hdGVzKHBsYW5lX3N0YXRlKTsKQEAgLTE2MTgsNyArMTYxOCw3IEBAIGc0eF9zcHJpdGVf Y2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAKIGludCBjaHZfcGxh bmVfY2hlY2tfcm90YXRpb24oY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9z dGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxh bmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19p bnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwogCXVuc2lnbmVkIGlu dCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKIApAQCAtMTY0Myw3ICsxNjQz LDcgQEAgdmx2X3Nwcml0ZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0ID0gZHJtX2F0b21pY19oZWxwZXJf Y2hlY2tfcGxhbmVfc3RhdGUoJnBsYW5lX3N0YXRlLT5iYXNlLAorCXJldCA9IGRybV9hdG9taWNf aGVscGVyX2NoZWNrX3BsYW5lX3N0YXRlKCZwbGFuZV9zdGF0ZS0+dWFwaSwKIAkJCQkJCSAgJmNy dGNfc3RhdGUtPnVhcGksCiAJCQkJCQkgIERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywKIAkJ CQkJCSAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLApAQCAtMTY1NSw3ICsxNjU1LDcgQEAg dmx2X3Nwcml0ZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlp ZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxl KQorCWlmICghcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKIAkJcmV0dXJuIDA7CiAKIAlyZXQg PSBpbnRlbF9wbGFuZV9jaGVja19zcmNfY29vcmRpbmF0ZXMocGxhbmVfc3RhdGUpOwpAQCAtMTY3 MCw3ICsxNjcwLDcgQEAgdmx2X3Nwcml0ZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKIHN0YXRpYyBpbnQgc2tsX3BsYW5lX2NoZWNrX2ZiKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJICAgICAgY29uc3Qgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l ID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFz ZS5kZXYpOwogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUt Pmh3LmZiOwogCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlv bjsKQEAgLTE3NDUsOSArMTc0NSw5IEBAIHN0YXRpYyBpbnQgc2tsX3BsYW5lX2NoZWNrX2RzdF9j b29yZGluYXRlcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zCiAJCQkJCSAg IGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7CiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFz ZS5wbGFuZS0+ZGV2KTsKLQlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LngxOwot CWludCBjcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKKwkJ dG9faTkxNShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKKwlpbnQgY3J0Y194ID0gcGxh bmVfc3RhdGUtPnVhcGkuZHN0LngxOworCWludCBjcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxh bmVfc3RhdGUtPnVhcGkuZHN0KTsKIAlpbnQgcGlwZV9zcmNfdyA9IGNydGNfc3RhdGUtPnBpcGVf c3JjX3c7CiAKIAkvKgpAQCAtMTc3NSw3ICsxNzc1LDcgQEAgc3RhdGljIGludCBza2xfcGxhbmVf Y2hlY2tfbnYxMl9yb3RhdGlvbihjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5l X3MKIHsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5o dy5mYjsKIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247 Ci0JaW50IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4g MTY7CisJaW50IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykg Pj4gMTY7CiAKIAkvKiBEaXNwbGF5IFdBICMxMTA2ICovCiAJaWYgKGRybV9mb3JtYXRfaW5mb19p c195dXZfc2VtaXBsYW5hcihmYi0+Zm9ybWF0KSAmJiBzcmNfdyAmIDMgJiYKQEAgLTE3OTEsNyAr MTc5MSw3IEBAIHN0YXRpYyBpbnQgc2tsX3BsYW5lX2NoZWNrX252MTJfcm90YXRpb24oY29uc3Qg c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zCiBzdGF0aWMgaW50IHNrbF9wbGFuZV9j aGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCSAgIHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxh bmUpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUt PmJhc2UuZGV2KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0 YXRlLT5ody5mYjsKIAlpbnQgbWluX3NjYWxlID0gRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5H OwpAQCAtMTgwOCw3ICsxODA4LDcgQEAgc3RhdGljIGludCBza2xfcGxhbmVfY2hlY2soc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCW1heF9zY2FsZSA9IHNrbF9tYXhfc2Nh bGUoY3J0Y19zdGF0ZSwgZmItPmZvcm1hdCk7CiAJfQogCi0JcmV0ID0gZHJtX2F0b21pY19oZWxw ZXJfY2hlY2tfcGxhbmVfc3RhdGUoJnBsYW5lX3N0YXRlLT5iYXNlLAorCXJldCA9IGRybV9hdG9t aWNfaGVscGVyX2NoZWNrX3BsYW5lX3N0YXRlKCZwbGFuZV9zdGF0ZS0+dWFwaSwKIAkJCQkJCSAg JmNydGNfc3RhdGUtPnVhcGksCiAJCQkJCQkgIG1pbl9zY2FsZSwgbWF4X3NjYWxlLAogCQkJCQkJ ICB0cnVlLCB0cnVlKTsKQEAgLTE4MTksNyArMTgxOSw3IEBAIHN0YXRpYyBpbnQgc2tsX3BsYW5l X2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCWlmIChyZXQpCiAJ CXJldHVybiByZXQ7CiAKLQlpZiAoIXBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCisJaWYgKCFw bGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQogCQlyZXR1cm4gMDsKIAogCXJldCA9IHNrbF9wbGFu ZV9jaGVja19kc3RfY29vcmRpbmF0ZXMoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUpOwpAQCAtMTgz Niw3ICsxODM2LDcgQEAgc3RhdGljIGludCBza2xfcGxhbmVfY2hlY2soc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCiAKIAkvKiBIVyBvbmx5IGhhcyA4IGJpdHMgcGl4ZWwgcHJl Y2lzaW9uLCBkaXNhYmxlIHBsYW5lIGlmIGludmlzaWJsZSAqLwogCWlmICghKHBsYW5lX3N0YXRl LT5ody5hbHBoYSA+PiA4KSkKLQkJcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSA9IGZhbHNlOwor CQlwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlID0gZmFsc2U7CiAKIAlwbGFuZV9zdGF0ZS0+Y3Rs ID0gc2tsX3BsYW5lX2N0bChjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSk7CiAKQEAgLTE4NTUsNyAr MTg1NSw3IEBAIHN0YXRpYyBib29sIGhhc19kc3Rfa2V5X2luX3ByaW1hcnlfcGxhbmUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogc3RhdGljIHZvaWQgaW50ZWxfcGxhbmVfc2V0 X2NrZXkoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKIAkJCQkgY29uc3Qg c3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKnNldCkKIHsKLQlzdHJ1Y3QgaW50ZWxf cGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwor CXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+ dWFwaS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShwbGFuZS0+YmFzZS5kZXYpOwogCXN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICpr ZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDEx ZjM2YmFmMTAyMS4uMjA4YWI5MDViN2ViIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTc5 Niw3ICs3OTYsNyBAQCBzdGF0aWMgaW50IGludGVsX3dtX251bV9sZXZlbHMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogc3RhdGljIGJvb2wgaW50ZWxfd21fcGxhbmVfdmlzaWJs ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCQkgICBjb25z dCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7 CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRl LT51YXBpLnBsYW5lKTsKIAogCS8qIEZJWE1FIGNoZWNrIHRoZSAnZW5hYmxlJyBpbnN0ZWFkICov CiAJaWYgKCFjcnRjX3N0YXRlLT5ody5hY3RpdmUpCkBAIC04MTMsNyArODEzLDcgQEAgc3RhdGlj IGJvb2wgaW50ZWxfd21fcGxhbmVfdmlzaWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKIAlpZiAocGxhbmUtPmlkID09IFBMQU5FX0NVUlNPUikKIAkJcmV0dXJu IHBsYW5lX3N0YXRlLT5ody5mYiAhPSBOVUxMOwogCWVsc2UKLQkJcmV0dXJuIHBsYW5lX3N0YXRl LT5iYXNlLnZpc2libGU7CisJCXJldHVybiBwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlOwogfQog CiBzdGF0aWMgc3RydWN0IGludGVsX2NydGMgKnNpbmdsZV9lbmFibGVkX2NydGMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgc3RhdGljIHUx NiBnNHhfY29tcHV0ZV93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKIAkJCSAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKIAkJ CSAgaW50IGxldmVsKQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9w bGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7CiAJY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQogCQkmY3J0Y19zdGF0 ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKQEAgLTExMTgsNyArMTExOCw3IEBAIHN0YXRpYyB1MTYgZzR4 X2NvbXB1dGVfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJ Y2xvY2sgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrOwogCWh0b3RhbCA9IGFkanVzdGVkX21v ZGUtPmNydGNfaHRvdGFsOwogCi0Jd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PmJhc2UuZHN0KTsKKwl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5k c3QpOwogCiAJaWYgKHBsYW5lLT5pZCA9PSBQTEFORV9DVVJTT1IpIHsKIAkJd20gPSBpbnRlbF93 bV9tZXRob2QyKGNsb2NrLCBodG90YWwsIHdpZHRoLCBjcHAsIGxhdGVuY3kpOwpAQCAtMTE4NCw3 ICsxMTg0LDcgQEAgc3RhdGljIHUzMiBpbGtfY29tcHV0ZV9mYmNfd20oY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiBzdGF0aWMgYm9vbCBnNHhfcmF3X3BsYW5lX3dt X2NvbXB1dGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkJICAgICBj b25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBp bnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFu ZSk7CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0 YXRlLT51YXBpLnBsYW5lKTsKIAlpbnQgbnVtX2xldmVscyA9IGludGVsX3dtX251bV9sZXZlbHMo dG9faTkxNShwbGFuZS0+YmFzZS5kZXYpKTsKIAllbnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gcGxh bmUtPmlkOwogCWJvb2wgZGlydHkgPSBmYWxzZTsKQEAgLTE1OTEsNyArMTU5MSw3IEBAIHN0YXRp YyB1MTYgdmx2X2NvbXB1dGVfd21fbGV2ZWwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCiAJCQkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9z dGF0ZSwKIAkJCQlpbnQgbGV2ZWwpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRv X2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2 KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9CiAJCSZj cnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwpAQCAtMTc2MSw3ICsxNzYxLDcgQEAgc3RhdGlj IGJvb2wgdmx2X3Jhd19wbGFuZV93bV9zZXQoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCiBzdGF0aWMgYm9vbCB2bHZfcmF3X3BsYW5lX3dtX2NvbXB1dGUoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0 b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAll bnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gcGxhbmUtPmlkOwogCWludCBudW1fbGV2ZWxzID0gaW50 ZWxfd21fbnVtX2xldmVscyh0b19pOTE1KHBsYW5lLT5iYXNlLmRldikpOwogCWludCBsZXZlbDsK QEAgLTI0OTQsNyArMjQ5NCw3IEBAIHN0YXRpYyB1MzIgaWxrX2NvbXB1dGVfcHJpX3dtKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCiAJbWV0aG9kMiA9IGlsa193 bV9tZXRob2QyKGNydGNfc3RhdGUtPnBpeGVsX3JhdGUsCiAJCQkJIGNydGNfc3RhdGUtPmh3LmFk anVzdGVkX21vZGUuY3J0Y19odG90YWwsCi0JCQkJIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0 ZS0+YmFzZS5kc3QpLAorCQkJCSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0 KSwKIAkJCQkgY3BwLCBtZW1fdmFsdWUpOwogCiAJcmV0dXJuIG1pbihtZXRob2QxLCBtZXRob2Qy KTsKQEAgLTI1MjIsNyArMjUyMiw3IEBAIHN0YXRpYyB1MzIgaWxrX2NvbXB1dGVfc3ByX3dtKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCW1ldGhvZDEgPSBpbGtf d21fbWV0aG9kMShjcnRjX3N0YXRlLT5waXhlbF9yYXRlLCBjcHAsIG1lbV92YWx1ZSk7CiAJbWV0 aG9kMiA9IGlsa193bV9tZXRob2QyKGNydGNfc3RhdGUtPnBpeGVsX3JhdGUsCiAJCQkJIGNydGNf c3RhdGUtPmh3LmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwsCi0JCQkJIGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpLAorCQkJCSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3Rh dGUtPnVhcGkuZHN0KSwKIAkJCQkgY3BwLCBtZW1fdmFsdWUpOwogCXJldHVybiBtaW4obWV0aG9k MSwgbWV0aG9kMik7CiB9CkBAIC0yNTQ3LDcgKzI1NDcsNyBAQCBzdGF0aWMgdTMyIGlsa19jb21w dXRlX2N1cl93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAog CXJldHVybiBpbGtfd21fbWV0aG9kMihjcnRjX3N0YXRlLT5waXhlbF9yYXRlLAogCQkJICAgICAg Y3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCwKLQkJCSAgICAgIGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpLAorCQkJICAgICAgZHJtX3JlY3Rfd2lk dGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCksCiAJCQkgICAgICBjcHAsIG1lbV92YWx1ZSk7CiB9 CiAKQEAgLTI1NjMsNyArMjU2Myw4IEBAIHN0YXRpYyB1MzIgaWxrX2NvbXB1dGVfZmJjX3dtKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCiAJY3BwID0gcGxhbmVf c3RhdGUtPmh3LmZiLT5mb3JtYXQtPmNwcFswXTsKIAotCXJldHVybiBpbGtfd21fZmJjKHByaV92 YWwsIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpLCBjcHApOworCXJldHVy biBpbGtfd21fZmJjKHByaV92YWwsIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5k c3QpLAorCQkJICBjcHApOwogfQogCiBzdGF0aWMgdW5zaWduZWQgaW50CkBAIC0zMTA3LDEwICsz MTA4LDEwIEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAogCXBpcGVfd20tPnBpcGVfZW5hYmxlZCA9IGNydGNfc3Rh dGUtPmh3LmFjdGl2ZTsKIAlpZiAoc3Byc3RhdGUpIHsKLQkJcGlwZV93bS0+c3ByaXRlc19lbmFi bGVkID0gc3Byc3RhdGUtPmJhc2UudmlzaWJsZTsKLQkJcGlwZV93bS0+c3ByaXRlc19zY2FsZWQg PSBzcHJzdGF0ZS0+YmFzZS52aXNpYmxlICYmCi0JCQkoZHJtX3JlY3Rfd2lkdGgoJnNwcnN0YXRl LT5iYXNlLmRzdCkgIT0gZHJtX3JlY3Rfd2lkdGgoJnNwcnN0YXRlLT5iYXNlLnNyYykgPj4gMTYg fHwKLQkJCSBkcm1fcmVjdF9oZWlnaHQoJnNwcnN0YXRlLT5iYXNlLmRzdCkgIT0gZHJtX3JlY3Rf aGVpZ2h0KCZzcHJzdGF0ZS0+YmFzZS5zcmMpID4+IDE2KTsKKwkJcGlwZV93bS0+c3ByaXRlc19l bmFibGVkID0gc3Byc3RhdGUtPnVhcGkudmlzaWJsZTsKKwkJcGlwZV93bS0+c3ByaXRlc19zY2Fs ZWQgPSBzcHJzdGF0ZS0+dWFwaS52aXNpYmxlICYmCisJCQkoZHJtX3JlY3Rfd2lkdGgoJnNwcnN0 YXRlLT51YXBpLmRzdCkgIT0gZHJtX3JlY3Rfd2lkdGgoJnNwcnN0YXRlLT51YXBpLnNyYykgPj4g MTYgfHwKKwkJCSBkcm1fcmVjdF9oZWlnaHQoJnNwcnN0YXRlLT51YXBpLmRzdCkgIT0gZHJtX3Jl Y3RfaGVpZ2h0KCZzcHJzdGF0ZS0+dWFwaS5zcmMpID4+IDE2KTsKIAl9CiAKIAl1c2FibGVfbGV2 ZWwgPSBtYXhfbGV2ZWw7CkBAIC00MDgyLDEwICs0MDgzLDEwIEBAIHNrbF9wbGFuZV9kb3duc2Nh bGVfYW1vdW50KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCSAq CiAJICogbi5iLiwgc3JjIGlzIDE2LjE2IGZpeGVkIHBvaW50LCBkc3QgaXMgd2hvbGUgaW50ZWdl ci4KIAkgKi8KLQlzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMp ID4+IDE2OwotCXNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMp ID4+IDE2OwotCWRzdF93ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7 Ci0JZHN0X2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7CisJc3Jj X3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKKwlzcmNf aCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKKwlkc3Rf dyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOworCWRzdF9oID0gZHJt X3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwogCiAJZnBfd19yYXRpbyA9IGRp dl9maXhlZDE2KHNyY193LCBkc3Rfdyk7CiAJZnBfaF9yYXRpbyA9IGRpdl9maXhlZDE2KHNyY19o LCBkc3RfaCk7CkBAIC00MTg3LDE0ICs0MTg4LDE0IEBAIHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRh X3JhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkgICAg IGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCiAJCQkgICAgIGlu dCBjb2xvcl9wbGFuZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxf cGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxh bmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJY29uc3Qgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJdTMyIGRhdGFf cmF0ZTsKIAl1MzIgd2lkdGggPSAwLCBoZWlnaHQgPSAwOwogCXVpbnRfZml4ZWRfMTZfMTZfdCBk b3duX3NjYWxlX2Ftb3VudDsKIAl1NjQgcmF0ZTsKIAotCWlmICghcGxhbmVfc3RhdGUtPmJhc2Uu dmlzaWJsZSkKKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCXJldHVybiAwOwog CiAJaWYgKHBsYW5lLT5pZCA9PSBQTEFORV9DVVJTT1IpCkBAIC00MjA5LDggKzQyMTAsOCBAQCBz a2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAogCSAqIHRoZSA5MC8yNzAgZGVncmVlIHBsYW5lIHJvdGF0aW9uIGNhc2Vz ICh0byBtYXRjaCB0aGUKIAkgKiBHVFQgbWFwcGluZyksIGhlbmNlIG5vIG5lZWQgdG8gYWNjb3Vu dCBmb3Igcm90YXRpb24gaGVyZS4KIAkgKi8KLQl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFu ZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwotCWhlaWdodCA9IGRybV9yZWN0X2hlaWdodCgmcGxh bmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKKwl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFu ZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2OworCWhlaWdodCA9IGRybV9yZWN0X2hlaWdodCgmcGxh bmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKIAogCS8qIFVWIHBsYW5lIGRvZXMgMS8yIHBpeGVs IHN1Yi1zYW1wbGluZyAqLwogCWlmIChjb2xvcl9wbGFuZSA9PSAxKSB7CkBAIC00NzE3LDcgKzQ3 MTgsNyBAQCBza2xfY29tcHV0ZV9wbGFuZV93bV9wYXJhbXMoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJICogdGhlIDkwLzI3MCBkZWdyZWUgcGxhbmUgcm90YXRp b24gY2FzZXMgKHRvIG1hdGNoIHRoZQogCSAqIEdUVCBtYXBwaW5nKSwgaGVuY2Ugbm8gbmVlZCB0 byBhY2NvdW50IGZvciByb3RhdGlvbiBoZXJlLgogCSAqLwotCXdpZHRoID0gZHJtX3JlY3Rfd2lk dGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7CisJd2lkdGggPSBkcm1fcmVjdF93aWR0 aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKIAogCXJldHVybiBza2xfY29tcHV0ZV93 bV9wYXJhbXMoY3J0Y19zdGF0ZSwgd2lkdGgsCiAJCQkJICAgICBmYi0+Zm9ybWF0LCBmYi0+bW9k aWZpZXIsCkBAIC00OTk5LDcgKzUwMDAsNyBAQCBzdGF0aWMgaW50IHNrbF9idWlsZF9wbGFuZV93 bV91dihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIHN0YXRpYyBpbnQgc2ts X2J1aWxkX3BsYW5lX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJ ICAgICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJh c2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShw bGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5l LT5pZDsKIAlpbnQgcmV0OwpAQCAtNTAyNSw3ICs1MDI2LDcgQEAgc3RhdGljIGludCBza2xfYnVp bGRfcGxhbmVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiBzdGF0aWMg aW50IGljbF9idWlsZF9wbGFuZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp CiB7Ci0JZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRl LT5iYXNlLnBsYW5lKS0+aWQ7CisJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHRvX2ludGVsX3Bs YW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKS0+aWQ7CiAJaW50IHJldDsKIAogCS8qIFdhdGVy bWFya3MgY2FsY3VsYXRlZCBpbiBtYXN0ZXIgKi8KQEAgLTYwMjcsNyArNjAyOCw3IEBAIHZvaWQg ZzR4X3dtX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJZW51 bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKIAkJaW50IGxldmVsOwogCi0JCWlmIChw bGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCQlpZiAocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJs ZSkKIAkJCWNvbnRpbnVlOwogCiAJCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8IDM7IGxldmVsKysp IHsKQEAgLTYxODIsNyArNjE4Myw3IEBAIHZvaWQgdmx2X3dtX3Nhbml0aXplKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5l LT5pZDsKIAkJaW50IGxldmVsOwogCi0JCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQor CQlpZiAocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKIAkJCWNvbnRpbnVlOwogCiAJCWZvciAo bGV2ZWwgPSAwOyBsZXZlbCA8IHdtX3N0YXRlLT5udW1fbGV2ZWxzOyBsZXZlbCsrKSB7Ci0tIAoy LjIzLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==