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, 17 Oct 2019 15:21:03 +0200 Message-ID: <20191017132105.15528-12-maarten.lankhorst@linux.intel.com> References: <20191017132105.15528-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 [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5487D6EA90 for ; Thu, 17 Oct 2019 13:21:11 +0000 (UTC) In-Reply-To: <20191017132105.15528-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 aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jICB8IDI5MCArKysrKysr KystLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmJjLmMgICAg ICB8ICAxMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9vdmVybGF5LmMg IHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jICAg fCAxMTQgKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgICAg ICAgIHwgIDU3ICsrLS0KIDcgZmlsZXMgY2hhbmdlZCwgMjU0IGluc2VydGlvbnMoKyksIDI1MSBk 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 aXNwbGF5LmMKaW5kZXggOTFlOWZiMmI0ZGY4Li5hMDkwMzRhMTI0MWYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCkBAIC0yMDU2LDcgKzIwNTYsNyBA QCBzdGF0aWMgdW5zaWduZWQgaW50IGludGVsX3N1cmZfYWxpZ25tZW50KGNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiLAogCiBzdGF0aWMgYm9vbCBpbnRlbF9wbGFuZV91c2VzX2ZlbmNl KGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0 IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBs YW5lKTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVf c3RhdGUtPnVhcGkucGxhbmUpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKIAogCXJldHVybiBJTlRFTF9HRU4oZGV2X3ByaXYp IDwgNCB8fApAQCAtMjM2NSw3ICsyMzY1LDcgQEAgc3RhdGljIHUzMiBpbnRlbF9wbGFuZV9jb21w dXRlX2FsaWduZWRfb2Zmc2V0KGludCAqeCwgaW50ICp5LAogCQkJCQkgICAgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlLAogCQkJCQkgICAgICBpbnQgY29sb3JfcGxhbmUp CiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHN0 YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9f aW50ZWxfcGxhbmUoc3RhdGUtPnVhcGkucGxhbmUpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfcGxhbmUtPmJhc2UuZGV2KTsKIAljb25zdCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5ody5mYjsKIAl1bnNpZ25lZCBpbnQgcm90 YXRpb24gPSBzdGF0ZS0+aHcucm90YXRpb247CkBAIC0yNTUzLDcgKzI1NTMsNyBAQCBpbnRlbF9m Yl9zdHJpZGVfYWxpZ25tZW50KGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQg Y29sb3JfcGxhbmUpCiAKIGJvb2wgaW50ZWxfcGxhbmVfY2FuX3JlbWFwKGNvbnN0IHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxh bmUpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUt PmJhc2UuZGV2KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0 YXRlLT5ody5mYjsKIAlpbnQgaTsKQEAgLTI1OTMsNyArMjU5Myw3IEBAIGJvb2wgaW50ZWxfcGxh bmVfY2FuX3JlbWFwKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp CiAKIHN0YXRpYyBib29sIGludGVsX3BsYW5lX25lZWRzX3JlbWFwKGNvbnN0IHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3QgaW50 ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUp OwogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZi OwogCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKIAl1 MzIgc3RyaWRlLCBtYXhfc3RyaWRlOwpAQCAtMjYwMiw3ICsyNjAyLDcgQEAgc3RhdGljIGJvb2wg aW50ZWxfcGxhbmVfbmVlZHNfcmVtYXAoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZSkKIAkgKiBObyByZW1hcHBpbmcgZm9yIGludmlzaWJsZSBwbGFuZXMgc2luY2Ug d2UgZG9uJ3QgaGF2ZQogCSAqIGFuIGFjdHVhbCBzb3VyY2Ugdmlld3BvcnQgdG8gcmVtYXAuCiAJ ICovCi0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCWlmICghcGxhbmVfc3RhdGUt PnVhcGkudmlzaWJsZSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJaWYgKCFpbnRlbF9wbGFuZV9jYW5f cmVtYXAocGxhbmVfc3RhdGUpKQpAQCAtMjc4NSw3ICsyNzg1LDcgQEAgc3RhdGljIHZvaWQKIGlu dGVsX3BsYW5lX3JlbWFwX2d0dChzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRl KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Ci0JCXRvX2k5MTUocGxh bmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7CisJCXRvX2k5MTUocGxhbmVfc3RhdGUtPnVhcGku cGxhbmUtPmRldik7CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+ aHcuZmI7CiAJc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYiA9IHRvX2ludGVsX2Zy YW1lYnVmZmVyKGZiKTsKIAlzdHJ1Y3QgaW50ZWxfcm90YXRpb25faW5mbyAqaW5mbyA9ICZwbGFu ZV9zdGF0ZS0+dmlldy5yb3RhdGVkOwpAQCAtMjgwMCwyMCArMjgwMCwyMCBAQCBpbnRlbF9wbGFu 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 VEVfMjcwKTsKIApAQCAtMjkzMyw3ICsyOTMzLDcgQEAgaW50ZWxfcGxhbmVfY29tcHV0ZV9ndHQo c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIAogCS8qIFJvdGF0ZSBzcmMg Y29vcmRpbmF0ZXMgdG8gbWF0Y2ggcm90YXRlZCBHVFQgdmlldyAqLwogCWlmIChkcm1fcm90YXRp b25fOTBfb3JfMjcwKHJvdGF0aW9uKSkKLQkJZHJtX3JlY3Rfcm90YXRlKCZwbGFuZV9zdGF0ZS0+ YmFzZS5zcmMsCisJCWRybV9yZWN0X3JvdGF0ZSgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjLAogCQkJ CWZiLT5iYXNlLndpZHRoIDw8IDE2LCBmYi0+YmFzZS5oZWlnaHQgPDwgMTYsCiAJCQkJRFJNX01P REVfUk9UQVRFXzI3MCk7CiAKQEAgLTMwOTksOSArMzA5OSw5IEBAIGludGVsX3NldF9wbGFuZV92 aXNpYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJc3RydWN0IGlu dGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKIAkJCWJvb2wgdmlzaWJsZSkKIHsKLQlzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2Uu cGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFu ZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAKLQlwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlID0gdmlz aWJsZTsKKwlwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlID0gdmlzaWJsZTsKIAogCWlmICh2aXNp YmxlKQogCQljcnRjX3N0YXRlLT51YXBpLnBsYW5lX21hc2sgfD0gZHJtX3BsYW5lX21hc2soJnBs YW5lLT5iYXNlKTsKQEAgLTMyNDYsOCArMzI0Niw4IEBAIGludGVsX2ZpbmRfaW5pdGlhbF9wbGFu ZV9vYmooc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCiAJcGxhbmVfc3RhdGUtPmNydGNf dyA9IGZiLT53aWR0aDsKIAlwbGFuZV9zdGF0ZS0+Y3J0Y19oID0gZmItPmhlaWdodDsKIAotCWlu dGVsX3N0YXRlLT5iYXNlLnNyYyA9IGRybV9wbGFuZV9zdGF0ZV9zcmMocGxhbmVfc3RhdGUpOwot CWludGVsX3N0YXRlLT5iYXNlLmRzdCA9IGRybV9wbGFuZV9zdGF0ZV9kZXN0KHBsYW5lX3N0YXRl KTsKKwlpbnRlbF9zdGF0ZS0+dWFwaS5zcmMgPSBkcm1fcGxhbmVfc3RhdGVfc3JjKHBsYW5lX3N0 YXRlKTsKKwlpbnRlbF9zdGF0ZS0+dWFwaS5kc3QgPSBkcm1fcGxhbmVfc3RhdGVfZGVzdChwbGFu ZV9zdGF0ZSk7CiAKIAlpZiAocGxhbmVfY29uZmlnLT50aWxpbmcpCiAJCWRldl9wcml2LT5wcmVz ZXJ2ZV9iaW9zX3N3aXp6bGUgPSB0cnVlOwpAQCAtMzM4MiwxMyArMzM4MiwxMyBAQCBzdGF0aWMg Ym9vbCBza2xfY2hlY2tfbWFpbl9jY3NfY29vcmRpbmF0ZXMoc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZQogCiBzdGF0aWMgaW50IHNrbF9jaGVja19tYWluX3N1cmZhY2Uoc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYp OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmVfc3Rh dGUtPnVhcGkucGxhbmUtPmRldik7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIg PSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3Rh dGUtPmh3LnJvdGF0aW9uOwotCWludCB4ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLngxID4+IDE2 OwotCWludCB5ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLnkxID4+IDE2OwotCWludCB3ID0gZHJt X3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Ci0JaW50IGggPSBkcm1f cmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7CisJaW50IHggPSBwbGFu ZV9zdGF0ZS0+dWFwaS5zcmMueDEgPj4gMTY7CisJaW50IHkgPSBwbGFuZV9zdGF0ZS0+dWFwaS5z cmMueTEgPj4gMTY7CisJaW50IHcgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGku c3JjKSA+PiAxNjsKKwlpbnQgaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGku c3JjKSA+PiAxNjsKIAlpbnQgbWF4X3dpZHRoOwogCWludCBtYXhfaGVpZ2h0OwogCXUzMiBhbGln bm1lbnQsIG9mZnNldCwgYXV4X29mZnNldCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVsxXS5v ZmZzZXQ7CkBAIC0zNDcxLDcgKzM0NzEsNyBAQCBzdGF0aWMgaW50IHNrbF9jaGVja19tYWluX3N1 cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIAkgKiBQdXQgdGhl IGZpbmFsIGNvb3JkaW5hdGVzIGJhY2sgc28gdGhhdCB0aGUgc3JjCiAJICogY29vcmRpbmF0ZSBj aGVja3Mgd2lsbCBzZWUgdGhlIHJpZ2h0IHZhbHVlcy4KIAkgKi8KLQlkcm1fcmVjdF90cmFuc2xh dGVfdG8oJnBsYW5lX3N0YXRlLT5iYXNlLnNyYywKKwlkcm1fcmVjdF90cmFuc2xhdGVfdG8oJnBs YW5lX3N0YXRlLT51YXBpLnNyYywKIAkJCSAgICAgIHggPDwgMTYsIHkgPDwgMTYpOwogCiAJcmV0 dXJuIDA7CkBAIC0zNDgzLDEwICszNDgzLDEwIEBAIHN0YXRpYyBpbnQgc2tsX2NoZWNrX252MTJf YXV4X3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIAl1bnNp Z25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247CiAJaW50IG1heF93 aWR0aCA9IHNrbF9tYXhfcGxhbmVfd2lkdGgoZmIsIDEsIHJvdGF0aW9uKTsKIAlpbnQgbWF4X2hl aWdodCA9IDQwOTY7Ci0JaW50IHggPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueDEgPj4gMTc7Ci0J aW50IHkgPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueTEgPj4gMTc7Ci0JaW50IHcgPSBkcm1fcmVj dF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNzsKLQlpbnQgaCA9IGRybV9yZWN0 X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNzsKKwlpbnQgeCA9IHBsYW5lX3N0 YXRlLT51YXBpLnNyYy54MSA+PiAxNzsKKwlpbnQgeSA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy55 MSA+PiAxNzsKKwlpbnQgdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMp ID4+IDE3OworCWludCBoID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMp ID4+IDE3OwogCXUzMiBvZmZzZXQ7CiAKIAlpbnRlbF9hZGRfZmJfb2Zmc2V0cygmeCwgJnksIHBs YW5lX3N0YXRlLCAxKTsKQEAgLTM1MDksOCArMzUwOSw4IEBAIHN0YXRpYyBpbnQgc2tsX2NoZWNr X252MTJfYXV4X3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkK IHN0YXRpYyBpbnQgc2tsX2NoZWNrX2Njc19hdXhfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnBsYW5lX3N0YXRlKQogewogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi ID0gcGxhbmVfc3RhdGUtPmh3LmZiOwotCWludCBzcmNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLnNy Yy54MSA+PiAxNjsKLQlpbnQgc3JjX3kgPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueTEgPj4gMTY7 CisJaW50IHNyY194ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLngxID4+IDE2OworCWludCBzcmNf eSA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy55MSA+PiAxNjsKIAlpbnQgaHN1YiA9IGZiLT5mb3Jt YXQtPmhzdWI7CiAJaW50IHZzdWIgPSBmYi0+Zm9ybWF0LT52c3ViOwogCWludCB4ID0gc3JjX3gg LyBoc3ViOwpAQCAtMzUzNiw3ICszNTM2LDcgQEAgaW50IHNrbF9jaGVja19wbGFuZV9zdXJmYWNl KHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiAJaWYgKHJldCkKIAkJcmV0 dXJuIHJldDsKIAotCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKKwlpZiAoIXBsYW5l X3N0YXRlLT51YXBpLnZpc2libGUpCiAJCXJldHVybiAwOwogCiAJLyoKQEAgLTM2MTMsNyArMzYx Myw3IEBAIHN0YXRpYyB1MzIgaTl4eF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCiAJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KLQkJ dG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKKwkJdG9faTkxNShwbGFuZV9z dGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9z dGF0ZS0+aHcucm90YXRpb247CiAJdTMyIGRzcGNudHI7CkBAIC0zNjY3LDcgKzM2NjcsNyBAQCBz dGF0aWMgdTMyIGk5eHhfcGxhbmVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAogaW50IGk5eHhfY2hlY2tfcGxhbmVfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9Ci0JCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7CisJCXRvX2k5 MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7CiAJaW50IHNyY194LCBzcmNfeTsKIAl1 MzIgb2Zmc2V0OwogCWludCByZXQ7CkBAIC0zNjc2LDExICszNjc2LDExIEBAIGludCBpOXh4X2No ZWNrX3BsYW5lX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkK IAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNp YmxlKQorCWlmICghcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKIAkJcmV0dXJuIDA7CiAKLQlz cmNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy54MSA+PiAxNjsKLQlzcmNfeSA9IHBsYW5lX3N0 YXRlLT5iYXNlLnNyYy55MSA+PiAxNjsKKwlzcmNfeCA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy54 MSA+PiAxNjsKKwlzcmNfeSA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy55MSA+PiAxNjsKIAogCWlu dGVsX2FkZF9mYl9vZmZzZXRzKCZzcmNfeCwgJnNyY195LCBwbGFuZV9zdGF0ZSwgMCk7CiAKQEAg LTM2OTQsMTQgKzM2OTQsMTQgQEAgaW50IGk5eHhfY2hlY2tfcGxhbmVfc3VyZmFjZShzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogCSAqIFB1dCB0aGUgZmluYWwgY29vcmRp bmF0ZXMgYmFjayBzbyB0aGF0IHRoZSBzcmMKIAkgKiBjb29yZGluYXRlIGNoZWNrcyB3aWxsIHNl ZSB0aGUgcmlnaHQgdmFsdWVzLgogCSAqLwotCWRybV9yZWN0X3RyYW5zbGF0ZV90bygmcGxhbmVf c3RhdGUtPmJhc2Uuc3JjLAorCWRybV9yZWN0X3RyYW5zbGF0ZV90bygmcGxhbmVfc3RhdGUtPnVh cGkuc3JjLAogCQkJICAgICAgc3JjX3ggPDwgMTYsIHNyY195IDw8IDE2KTsKIAogCS8qIEhTVy9C RFcgZG8gdGhpcyBhdXRvbWFnaWNhbGx5IGluIGhhcmR3YXJlICovCiAJaWYgKCFJU19IQVNXRUxM KGRldl9wcml2KSAmJiAhSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewogCQl1bnNpZ25lZCBpbnQg cm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Ci0JCWludCBzcmNfdyA9IGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwotCQlpbnQgc3JjX2ggPSBk cm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7CisJCWludCBzcmNf dyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2OworCQlpbnQg c3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7CiAK IAkJaWYgKHJvdGF0aW9uICYgRFJNX01PREVfUk9UQVRFXzE4MCkgewogCQkJc3JjX3ggKz0gc3Jj X3cgLSAxOwpAQCAtMzczOCwxNCArMzczOCwxNCBAQCBzdGF0aWMgaW50CiBpOXh4X3BsYW5lX2No ZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l ID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7 CiAJaW50IHJldDsKIAogCXJldCA9IGNodl9wbGFuZV9jaGVja19yb3RhdGlvbihwbGFuZV9zdGF0 ZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldCA9IGRybV9hdG9taWNfaGVscGVy X2NoZWNrX3BsYW5lX3N0YXRlKCZwbGFuZV9zdGF0ZS0+YmFzZSwKKwlyZXQgPSBkcm1fYXRvbWlj X2hlbHBlcl9jaGVja19wbGFuZV9zdGF0ZSgmcGxhbmVfc3RhdGUtPnVhcGksCiAJCQkJCQkgICZj cnRjX3N0YXRlLT51YXBpLAogCQkJCQkJICBEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkcsCiAJ CQkJCQkgIERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywKQEAgLTM3NTgsNyArMzc1OCw3IEBA IGk5eHhfcGxhbmVfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJs ZSkKKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCXJldHVybiAwOwogCiAJcmV0 ID0gaW50ZWxfcGxhbmVfY2hlY2tfc3JjX2Nvb3JkaW5hdGVzKHBsYW5lX3N0YXRlKTsKQEAgLTM3 NzksMTAgKzM3NzksMTAgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcGxhbmUoc3RydWN0IGlu dGVsX3BsYW5lICpwbGFuZSwKIAl1MzIgbGluZWFyX29mZnNldDsKIAlpbnQgeCA9IHBsYW5lX3N0 YXRlLT5jb2xvcl9wbGFuZVswXS54OwogCWludCB5ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5l WzBdLnk7Ci0JaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC54MTsKLQlpbnQgY3J0 Y195ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LnkxOwotCWludCBjcnRjX3cgPSBkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKLQlpbnQgY3J0Y19oID0gZHJtX3JlY3RfaGVp Z2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOworCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+ dWFwaS5kc3QueDE7CisJaW50IGNydGNfeSA9IHBsYW5lX3N0YXRlLT51YXBpLmRzdC55MTsKKwlp bnQgY3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7CisJaW50 IGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKIAl1bnNp Z25lZCBsb25nIGlycWZsYWdzOwogCXUzMiBkc3BhZGRyX29mZnNldDsKIAl1MzIgZHNwY250cjsK QEAgLTQxMzYsNyArNDEzNiw3IEBAIHUzMiBza2xfcGxhbmVfY3RsKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqcGxhbmVfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0KLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKKwkJdG9faTkxNShw bGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBw bGFuZV9zdGF0ZS0+aHcucm90YXRpb247CiAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVf Y29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKQEAgLTQxOTIsOSArNDE5Miw5IEBA IHUzMiBnbGtfcGxhbmVfY29sb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAogCQkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQotCQl0b19pOTE1KHBs YW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOworCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBp LnBsYW5lLT5kZXYpOwogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVf c3RhdGUtPmh3LmZiOwotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9 IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAl1MzIgcGxhbmVfY29s b3JfY3RsID0gMDsKIAogCXBsYW5lX2NvbG9yX2N0bCB8PSBQTEFORV9DT0xPUl9QTEFORV9HQU1N QV9ESVNBQkxFOwpAQCAtNTQ4OSwxMSArNTQ4OSwxMSBAQCBzdGF0aWMgaW50IHNrbF91cGRhdGVf c2NhbGVyX3BsYW5lKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJCSAg IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7CiAJc3RydWN0IGludGVs X3BsYW5lICppbnRlbF9wbGFuZSA9Ci0JCXRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNl LnBsYW5lKTsKKwkJdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfcGxhbmUtPmJh c2UuZGV2KTsKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5m YjsKIAlpbnQgcmV0OwotCWJvb2wgZm9yY2VfZGV0YWNoID0gIWZiIHx8ICFwbGFuZV9zdGF0ZS0+ YmFzZS52aXNpYmxlOworCWJvb2wgZm9yY2VfZGV0YWNoID0gIWZiIHx8ICFwbGFuZV9zdGF0ZS0+ dWFwaS52aXNpYmxlOwogCWJvb2wgbmVlZF9zY2FsZXIgPSBmYWxzZTsKIAogCS8qIFByZS1nZW4x MSBhbmQgU0RSIHBsYW5lcyBhbHdheXMgbmVlZCBhIHNjYWxlciBmb3IgcGxhbmFyIGZvcm1hdHMu ICovCkBAIC01NTA0LDEwICs1NTA0LDEwIEBAIHN0YXRpYyBpbnQgc2tsX3VwZGF0ZV9zY2FsZXJf cGxhbmUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJcmV0ID0gc2tsX3Vw ZGF0ZV9zY2FsZXIoY3J0Y19zdGF0ZSwgZm9yY2VfZGV0YWNoLAogCQkJCWRybV9wbGFuZV9pbmRl eCgmaW50ZWxfcGxhbmUtPmJhc2UpLAogCQkJCSZwbGFuZV9zdGF0ZS0+c2NhbGVyX2lkLAotCQkJ CWRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2LAotCQkJCWRybV9y ZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNiwKLQkJCQlkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSwKLQkJCQlkcm1fcmVjdF9oZWlnaHQoJnBsYW5l X3N0YXRlLT5iYXNlLmRzdCksCisJCQkJZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBp LnNyYykgPj4gMTYsCisJCQkJZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMp ID4+IDE2LAorCQkJCWRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpLAorCQkJ CWRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSwKIAkJCQlmYiA/IGZiLT5m b3JtYXQgOiBOVUxMLCBuZWVkX3NjYWxlcik7CiAKIAlpZiAocmV0IHx8IHBsYW5lX3N0YXRlLT5z Y2FsZXJfaWQgPCAwKQpAQCAtNTkyMCw3ICs1OTIwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJl X3BsYW5lX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCiAJ CSAqIFNvIGRpc2FibGUgdW5kZXJydW4gcmVwb3J0aW5nIGJlZm9yZSBhbGwgdGhlIHBsYW5lcyBn ZXQgZGlzYWJsZWQuCiAJCSAqLwogCQlpZiAoSVNfR0VOKGRldl9wcml2LCAyKSAmJiBvbGRfcHJp bWFyeV9zdGF0ZS0+dmlzaWJsZSAmJgotCQkgICAgKG1vZGVzZXQgfHwgIW5ld19wcmltYXJ5X3N0 YXRlLT5iYXNlLnZpc2libGUpKQorCQkgICAgKG1vZGVzZXQgfHwgIW5ld19wcmltYXJ5X3N0YXRl LT51YXBpLnZpc2libGUpKQogCQkJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGlu ZyhkZXZfcHJpdiwgY3J0Yy0+cGlwZSwgZmFsc2UpOwogCX0KIApAQCAtNjAwNyw3ICs2MDA3LDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19kaXNhYmxlX3BsYW5lcyhzdHJ1Y3QgaW50ZWxfYXRv bWljX3N0YXRlICpzdGF0ZSwKIAogCQlpbnRlbF9kaXNhYmxlX3BsYW5lKHBsYW5lLCBuZXdfY3J0 Y19zdGF0ZSk7CiAKLQkJaWYgKG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCQlpZiAo b2xkX3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCQlmYl9iaXRzIHw9IHBsYW5lLT5mcm9u dGJ1ZmZlcl9iaXQ7CiAJfQogCkBAIC03MDEwLDcgKzcwMTAsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9jcnRjX2Rpc2FibGVfbm9hdG9taWMoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQljb25zdCBz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0KIAkJCXRvX2ludGVsX3BsYW5l X3N0YXRlKHBsYW5lLT5iYXNlLnN0YXRlKTsKIAotCQlpZiAocGxhbmVfc3RhdGUtPmJhc2Uudmlz aWJsZSkKKwkJaWYgKHBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCQlpbnRlbF9wbGFuZV9k aXNhYmxlX25vYXRvbWljKGludGVsX2NydGMsIHBsYW5lKTsKIAl9CiAKQEAgLTEwNTIyLDcgKzEw NTIyLDcgQEAgc3RhdGljIGJvb2wgaGFzd2VsbF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVs X2NydGMgKmNydGMsCiBzdGF0aWMgdTMyIGludGVsX2N1cnNvcl9iYXNlKGNvbnN0IHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0KLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsK KwkJdG9faTkxNShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKIAljb25zdCBzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAljb25zdCBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKIAl1MzIgYmFzZTsK QEAgLTEwNTM3LDE2ICsxMDUzNywxNiBAQCBzdGF0aWMgdTMyIGludGVsX2N1cnNvcl9iYXNlKGNv bnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiAJLyogSUxLKyBkbyB0 aGlzIGF1dG9tYWdpY2FsbHkgKi8KIAlpZiAoSEFTX0dNQ0goZGV2X3ByaXYpICYmCiAJICAgIHBs YW5lX3N0YXRlLT5ody5yb3RhdGlvbiAmIERSTV9NT0RFX1JPVEFURV8xODApCi0JCWJhc2UgKz0g KGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSAqCi0JCQkgZHJtX3JlY3Rf d2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCkgLSAxKSAqIGZiLT5mb3JtYXQtPmNwcFswXTsK KwkJYmFzZSArPSAoZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpICoKKwkJ CSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSAtIDEpICogZmItPmZvcm1h dC0+Y3BwWzBdOwogCiAJcmV0dXJuIGJhc2U7CiB9CiAKIHN0YXRpYyB1MzIgaW50ZWxfY3Vyc29y X3Bvc2l0aW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7 Ci0JaW50IHggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7Ci0JaW50IHkgPSBwbGFuZV9zdGF0 ZS0+YmFzZS5kc3QueTE7CisJaW50IHggPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDE7CisJaW50 IHkgPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueTE7CiAJdTMyIHBvcyA9IDA7CiAKIAlpZiAoeCA8 IDApIHsKQEAgLTEwNTY3LDkgKzEwNTY3LDkgQEAgc3RhdGljIHUzMiBpbnRlbF9jdXJzb3JfcG9z aXRpb24oY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHN0YXRp YyBib29sIGludGVsX2N1cnNvcl9zaXplX29rKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUpCiB7CiAJY29uc3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZyAqY29uZmln ID0KLQkJJnBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYtPm1vZGVfY29uZmlnOwotCWludCB3 aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwotCWludCBoZWln aHQgPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7CisJCSZwbGFuZV9z dGF0ZS0+dWFwaS5wbGFuZS0+ZGV2LT5tb2RlX2NvbmZpZzsKKwlpbnQgd2lkdGggPSBkcm1fcmVj dF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKKwlpbnQgaGVpZ2h0ID0gZHJtX3JlY3Rf aGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwogCiAJcmV0dXJuIHdpZHRoID4gMCAmJiB3 aWR0aCA8PSBjb25maWctPmN1cnNvcl93aWR0aCAmJgogCQloZWlnaHQgPiAwICYmIGhlaWdodCA8 PSBjb25maWctPmN1cnNvcl9oZWlnaHQ7CkBAIC0xMDU4NSwxMSArMTA1ODUsMTEgQEAgc3RhdGlj IGludCBpbnRlbF9jdXJzb3JfY2hlY2tfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3N0YXRlKQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpZiAoIXBsYW5lX3N0 YXRlLT5iYXNlLnZpc2libGUpCisJaWYgKCFwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQogCQly ZXR1cm4gMDsKIAotCXNyY194ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLngxID4+IDE2OwotCXNy Y195ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLnkxID4+IDE2OworCXNyY194ID0gcGxhbmVfc3Rh dGUtPnVhcGkuc3JjLngxID4+IDE2OworCXNyY195ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLnkx ID4+IDE2OwogCiAJaW50ZWxfYWRkX2ZiX29mZnNldHMoJnNyY194LCAmc3JjX3ksIHBsYW5lX3N0 YXRlLCAwKTsKIAlvZmZzZXQgPSBpbnRlbF9wbGFuZV9jb21wdXRlX2FsaWduZWRfb2Zmc2V0KCZz cmNfeCwgJnNyY195LApAQCAtMTA2MTYsNyArMTA2MTYsNyBAQCBzdGF0aWMgaW50IGludGVsX2No ZWNrX2N1cnNvcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJcmV0dXJu IC1FSU5WQUw7CiAJfQogCi0JcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxhbmVfc3Rh dGUoJnBsYW5lX3N0YXRlLT5iYXNlLAorCXJldCA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3Bs YW5lX3N0YXRlKCZwbGFuZV9zdGF0ZS0+dWFwaSwKIAkJCQkJCSAgJmNydGNfc3RhdGUtPnVhcGks CiAJCQkJCQkgIERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywKIAkJCQkJCSAgRFJNX1BMQU5F X0hFTFBFUl9OT19TQ0FMSU5HLApAQCAtMTA2MjUsMTQgKzEwNjI1LDE0IEBAIHN0YXRpYyBpbnQg aW50ZWxfY2hlY2tfY3Vyc29yKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAog CQlyZXR1cm4gcmV0OwogCiAJLyogVXNlIHRoZSB1bmNsaXBwZWQgc3JjL2RzdCByZWN0YW5nbGVz LCB3aGljaCB3ZSBwcm9ncmFtIHRvIGh3ICovCi0JcGxhbmVfc3RhdGUtPmJhc2Uuc3JjID0gZHJt X3BsYW5lX3N0YXRlX3NyYygmcGxhbmVfc3RhdGUtPmJhc2UpOwotCXBsYW5lX3N0YXRlLT5iYXNl LmRzdCA9IGRybV9wbGFuZV9zdGF0ZV9kZXN0KCZwbGFuZV9zdGF0ZS0+YmFzZSk7CisJcGxhbmVf c3RhdGUtPnVhcGkuc3JjID0gZHJtX3BsYW5lX3N0YXRlX3NyYygmcGxhbmVfc3RhdGUtPnVhcGkp OworCXBsYW5lX3N0YXRlLT51YXBpLmRzdCA9IGRybV9wbGFuZV9zdGF0ZV9kZXN0KCZwbGFuZV9z dGF0ZS0+dWFwaSk7CiAKIAlyZXQgPSBpbnRlbF9jdXJzb3JfY2hlY2tfc3VyZmFjZShwbGFuZV9z dGF0ZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWlmICghcGxhbmVfc3RhdGUtPmJh c2UudmlzaWJsZSkKKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCXJldHVybiAw OwogCiAJcmV0ID0gaW50ZWxfcGxhbmVfY2hlY2tfc3JjX2Nvb3JkaW5hdGVzKHBsYW5lX3N0YXRl KTsKQEAgLTEwNjcwLDcgKzEwNjcwLDcgQEAgc3RhdGljIHUzMiBpODQ1X2N1cnNvcl9jdGwoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAKIHN0YXRpYyBib29sIGk4 NDVfY3Vyc29yX3NpemVfb2soY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9z dGF0ZSkKIHsKLQlpbnQgd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uu ZHN0KTsKKwlpbnQgd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0 KTsKIAogCS8qCiAJICogODQ1Zy84NjVnIGFyZSBvbmx5IGxpbWl0ZWQgYnkgdGhlIHdpZHRoIG9m IHRoZWlyIGN1cnNvcnMsCkBAIC0xMDY5NiwxMiArMTA2OTYsMTIgQEAgc3RhdGljIGludCBpODQ1 X2NoZWNrX2N1cnNvcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkvKiBD aGVjayBmb3Igd2hpY2ggY3Vyc29yIHR5cGVzIHdlIHN1cHBvcnQgKi8KIAlpZiAoIWk4NDVfY3Vy c29yX3NpemVfb2socGxhbmVfc3RhdGUpKSB7CiAJCURSTV9ERUJVRygiQ3Vyc29yIGRpbWVuc2lv biAlZHglZCBub3Qgc3VwcG9ydGVkXG4iLAotCQkJICBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3Rh dGUtPmJhc2UuZHN0KSwKLQkJCSAgZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5k c3QpKTsKKwkJCSAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCksCisJCQkg IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSk7CiAJCXJldHVybiAtRUlO VkFMOwogCX0KIAotCVdBUk5fT04ocGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSAmJgorCVdBUk5f T04ocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSAmJgogCQlwbGFuZV9zdGF0ZS0+Y29sb3JfcGxh bmVbMF0uc3RyaWRlICE9IGZiLT5waXRjaGVzWzBdKTsKIAogCXN3aXRjaCAoZmItPnBpdGNoZXNb MF0pIHsKQEAgLTEwNzI5LDkgKzEwNzI5LDkgQEAgc3RhdGljIHZvaWQgaTg0NV91cGRhdGVfY3Vy c29yKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCiAJdTMyIGNudGwgPSAwLCBiYXNlID0gMCwg cG9zID0gMCwgc2l6ZSA9IDA7CiAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKIAotCWlmIChwbGFu ZV9zdGF0ZSAmJiBwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKSB7Ci0JCXVuc2lnbmVkIGludCB3 aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpOwotCQl1bnNpZ25l ZCBpbnQgaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwor CWlmIChwbGFuZV9zdGF0ZSAmJiBwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKSB7CisJCXVuc2ln bmVkIGludCB3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpOwor CQl1bnNpZ25lZCBpbnQgaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFw aS5kc3QpOwogCiAJCWNudGwgPSBwbGFuZV9zdGF0ZS0+Y3RsIHwKIAkJCWk4NDVfY3Vyc29yX2N0 bF9jcnRjKGNydGNfc3RhdGUpOwpAQCAtMTA4MjcsMTMgKzEwODI3LDEzIEBAIHN0YXRpYyB1MzIg aTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LAogCQkJICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQotCQl0b19pOTE1KHBsYW5lX3N0 YXRlLT5iYXNlLnBsYW5lLT5kZXYpOworCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5l LT5kZXYpOwogCXUzMiBjbnRsID0gMDsKIAogCWlmIChJU19HRU4oZGV2X3ByaXYsIDYpIHx8IElT X0lWWUJSSURHRShkZXZfcHJpdikpCiAJCWNudGwgfD0gTUNVUlNPUl9UUklDS0xFX0ZFRURfRElT QUJMRTsKIAotCXN3aXRjaCAoZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCkp IHsKKwlzd2l0Y2ggKGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpKSB7CiAJ Y2FzZSA2NDoKIAkJY250bCB8PSBNQ1VSU09SX01PREVfNjRfQVJHQl9BWDsKIAkJYnJlYWs7CkBA IC0xMDg0NCw3ICsxMDg0NCw3IEBAIHN0YXRpYyB1MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQljbnRsIHw9IE1DVVJTT1JfTU9E RV8yNTZfQVJHQl9BWDsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJTUlTU0lOR19DQVNFKGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpKTsKKwkJTUlTU0lOR19DQVNFKGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpKTsKIAkJcmV0dXJuIDA7CiAJfQogCkBA IC0xMDg1Nyw5ICsxMDg1Nyw5IEBAIHN0YXRpYyB1MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogc3RhdGljIGJvb2wgaTl4eF9jdXJz b3Jfc2l6ZV9vayhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQog ewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Ci0JCXRvX2k5MTUocGxhbmVf c3RhdGUtPmJhc2UucGxhbmUtPmRldik7Ci0JaW50IHdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBs YW5lX3N0YXRlLT5iYXNlLmRzdCk7Ci0JaW50IGhlaWdodCA9IGRybV9yZWN0X2hlaWdodCgmcGxh bmVfc3RhdGUtPmJhc2UuZHN0KTsKKwkJdG9faTkxNShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ ZGV2KTsKKwlpbnQgd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0 KTsKKwlpbnQgaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3Qp OwogCiAJaWYgKCFpbnRlbF9jdXJzb3Jfc2l6ZV9vayhwbGFuZV9zdGF0ZSkpCiAJCXJldHVybiBm YWxzZTsKQEAgLTEwODk1LDcgKzEwODk1LDcgQEAgc3RhdGljIGJvb2wgaTl4eF9jdXJzb3Jfc2l6 ZV9vayhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogc3RhdGlj IGludCBpOXh4X2NoZWNrX2N1cnNvcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKIAkJCSAgICAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJh c2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShw bGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwogCWVudW0gcGlwZSBwaXBlID0gcGxhbmUt PnBpcGU7CkBAIC0xMDkxMiwxOSArMTA5MTIsMTkgQEAgc3RhdGljIGludCBpOXh4X2NoZWNrX2N1 cnNvcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkvKiBDaGVjayBmb3Ig d2hpY2ggY3Vyc29yIHR5cGVzIHdlIHN1cHBvcnQgKi8KIAlpZiAoIWk5eHhfY3Vyc29yX3NpemVf b2socGxhbmVfc3RhdGUpKSB7CiAJCURSTV9ERUJVRygiQ3Vyc29yIGRpbWVuc2lvbiAlZHglZCBu b3Qgc3VwcG9ydGVkXG4iLAotCQkJICBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uu ZHN0KSwKLQkJCSAgZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpKTsKKwkJ CSAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCksCisJCQkgIGRybV9yZWN0 X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0K IAotCVdBUk5fT04ocGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSAmJgorCVdBUk5fT04ocGxhbmVf c3RhdGUtPnVhcGkudmlzaWJsZSAmJgogCQlwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0uc3Ry aWRlICE9IGZiLT5waXRjaGVzWzBdKTsKIAogCWlmIChmYi0+cGl0Y2hlc1swXSAhPQotCSAgICBk cm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSAqIGZiLT5mb3JtYXQtPmNwcFsw XSkgeworCSAgICBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSAqIGZiLT5m b3JtYXQtPmNwcFswXSkgewogCQlEUk1fREVCVUdfS01TKCJJbnZhbGlkIGN1cnNvciBzdHJpZGUg KCV1KSAoY3Vyc29yIHdpZHRoICVkKVxuIiwKIAkJCSAgICAgIGZiLT5waXRjaGVzWzBdLAotCQkJ ICAgICAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCkpOworCQkJICAgICAg ZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCkpOwogCQlyZXR1cm4gLUVJTlZB TDsKIAl9CiAKQEAgLTEwOTM5LDcgKzEwOTM5LDcgQEAgc3RhdGljIGludCBpOXh4X2NoZWNrX2N1 cnNvcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkgKiBSZWZ1c2UgdGhl IHB1dCB0aGUgY3Vyc29yIGludG8gdGhhdCBjb21wcm9taXNlZCBwb3NpdGlvbi4KIAkgKi8KIAlp ZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikgJiYgcGlwZSA9PSBQSVBFX0MgJiYKLQkgICAgcGxh bmVfc3RhdGUtPmJhc2UudmlzaWJsZSAmJiBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDEgPCAwKSB7 CisJICAgIHBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUgJiYgcGxhbmVfc3RhdGUtPnVhcGkuZHN0 LngxIDwgMCkgewogCQlEUk1fREVCVUdfS01TKCJDSFYgY3Vyc29yIEMgbm90IGFsbG93ZWQgdG8g c3RyYWRkbGUgdGhlIGxlZnQgc2NyZWVuIGVkZ2VcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9 CkBAIC0xMDk1OCw5ICsxMDk1OCw5IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX2N1cnNvcihz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCXUzMiBjbnRsID0gMCwgYmFzZSA9IDAsIHBvcyA9 IDAsIGZiY19jdGwgPSAwOwogCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7CiAKLQlpZiAocGxhbmVf c3RhdGUgJiYgcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkgewotCQl1bnNpZ25lZCB3aWR0aCA9 IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwotCQl1bnNpZ25lZCBoZWln aHQgPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7CisJaWYgKHBsYW5l X3N0YXRlICYmIHBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpIHsKKwkJdW5zaWduZWQgd2lkdGgg PSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKKwkJdW5zaWduZWQgaGVp Z2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwogCiAJCWNudGwg PSBwbGFuZV9zdGF0ZS0+Y3RsIHwKIAkJCWk5eHhfY3Vyc29yX2N0bF9jcnRjKGNydGNfc3RhdGUp OwpAQCAtMTE0OTgsNyArMTE0OTgsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF93bV9uZWVkX3VwZGF0 ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmN1ciwKIAkJCQkgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpuZXcpCiB7CiAJLyogVXBkYXRlIHdhdGVybWFya3Mgb24gdGlsaW5nIG9y IHNpemUgY2hhbmdlcy4gKi8KLQlpZiAobmV3LT5iYXNlLnZpc2libGUgIT0gY3VyLT5iYXNlLnZp c2libGUpCisJaWYgKG5ldy0+dWFwaS52aXNpYmxlICE9IGN1ci0+dWFwaS52aXNpYmxlKQogCQly ZXR1cm4gdHJ1ZTsKIAogCWlmICghY3VyLT5ody5mYiB8fCAhbmV3LT5ody5mYikKQEAgLTExNTA2 LDEwICsxMTUwNiwxMCBAQCBzdGF0aWMgYm9vbCBpbnRlbF93bV9uZWVkX3VwZGF0ZShjb25zdCBz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmN1ciwKIAogCWlmIChjdXItPmh3LmZiLT5tb2RpZmll ciAhPSBuZXctPmh3LmZiLT5tb2RpZmllciB8fAogCSAgICBjdXItPmh3LnJvdGF0aW9uICE9IG5l dy0+aHcucm90YXRpb24gfHwKLQkgICAgZHJtX3JlY3Rfd2lkdGgoJm5ldy0+YmFzZS5zcmMpICE9 IGRybV9yZWN0X3dpZHRoKCZjdXItPmJhc2Uuc3JjKSB8fAotCSAgICBkcm1fcmVjdF9oZWlnaHQo Jm5ldy0+YmFzZS5zcmMpICE9IGRybV9yZWN0X2hlaWdodCgmY3VyLT5iYXNlLnNyYykgfHwKLQkg ICAgZHJtX3JlY3Rfd2lkdGgoJm5ldy0+YmFzZS5kc3QpICE9IGRybV9yZWN0X3dpZHRoKCZjdXIt PmJhc2UuZHN0KSB8fAotCSAgICBkcm1fcmVjdF9oZWlnaHQoJm5ldy0+YmFzZS5kc3QpICE9IGRy bV9yZWN0X2hlaWdodCgmY3VyLT5iYXNlLmRzdCkpCisJICAgIGRybV9yZWN0X3dpZHRoKCZuZXct PnVhcGkuc3JjKSAhPSBkcm1fcmVjdF93aWR0aCgmY3VyLT51YXBpLnNyYykgfHwKKwkgICAgZHJt X3JlY3RfaGVpZ2h0KCZuZXctPnVhcGkuc3JjKSAhPSBkcm1fcmVjdF9oZWlnaHQoJmN1ci0+dWFw aS5zcmMpIHx8CisJICAgIGRybV9yZWN0X3dpZHRoKCZuZXctPnVhcGkuZHN0KSAhPSBkcm1fcmVj dF93aWR0aCgmY3VyLT51YXBpLmRzdCkgfHwKKwkgICAgZHJtX3JlY3RfaGVpZ2h0KCZuZXctPnVh cGkuZHN0KSAhPSBkcm1fcmVjdF9oZWlnaHQoJmN1ci0+dWFwaS5kc3QpKQogCQlyZXR1cm4gdHJ1 ZTsKIAogCXJldHVybiBmYWxzZTsKQEAgLTExNTE3LDEwICsxMTUxNywxMCBAQCBzdGF0aWMgYm9v bCBpbnRlbF93bV9uZWVkX3VwZGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmN1 ciwKIAogc3RhdGljIGJvb2wgbmVlZHNfc2NhbGluZyhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnN0YXRlKQogewotCWludCBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZzdGF0ZS0+YmFz ZS5zcmMpID4+IDE2OwotCWludCBzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmc3RhdGUtPmJhc2Uu c3JjKSA+PiAxNjsKLQlpbnQgZHN0X3cgPSBkcm1fcmVjdF93aWR0aCgmc3RhdGUtPmJhc2UuZHN0 KTsKLQlpbnQgZHN0X2ggPSBkcm1fcmVjdF9oZWlnaHQoJnN0YXRlLT5iYXNlLmRzdCk7CisJaW50 IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnN0YXRlLT51YXBpLnNyYykgPj4gMTY7CisJaW50IHNy Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZzdGF0ZS0+dWFwaS5zcmMpID4+IDE2OworCWludCBkc3Rf dyA9IGRybV9yZWN0X3dpZHRoKCZzdGF0ZS0+dWFwaS5kc3QpOworCWludCBkc3RfaCA9IGRybV9y ZWN0X2hlaWdodCgmc3RhdGUtPnVhcGkuZHN0KTsKIAogCXJldHVybiAoc3JjX3cgIT0gZHN0X3cg fHwgc3JjX2ggIT0gZHN0X2gpOwogfQpAQCAtMTE1MzEsNyArMTE1MzEsNyBAQCBpbnQgaW50ZWxf cGxhbmVfYXRvbWljX2NhbGNfY2hhbmdlcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq b2xkX2NydGNfc3RhdAogCQkJCSAgICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlKQogewogCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0 YXRlLT51YXBpLmNydGMpOwotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9w bGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKIAlib29s IG1vZGVfY2hhbmdlZCA9IG5lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSk7CiAJYm9vbCB3YXNfY3J0 Y19lbmFibGVkID0gb2xkX2NydGNfc3RhdGUtPmh3LmFjdGl2ZTsKQEAgLTExNTQ1LDggKzExNTQ1 LDggQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5nZXMoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXQKIAkJCXJldHVybiByZXQ7CiAJfQogCi0Jd2Fz X3Zpc2libGUgPSBvbGRfcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZTsKLQl2aXNpYmxlID0gcGxh bmVfc3RhdGUtPmJhc2UudmlzaWJsZTsKKwl3YXNfdmlzaWJsZSA9IG9sZF9wbGFuZV9zdGF0ZS0+ dWFwaS52aXNpYmxlOworCXZpc2libGUgPSBwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlOwogCiAJ aWYgKCF3YXNfY3J0Y19lbmFibGVkICYmIFdBUk5fT04od2FzX3Zpc2libGUpKQogCQl3YXNfdmlz aWJsZSA9IGZhbHNlOwpAQCAtMTE1NjIsNyArMTE1NjIsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRv bWljX2NhbGNfY2hhbmdlcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNf c3RhdAogCSAqIG9ubHkgY29tYmluZSB0aGUgcmVzdWx0cyBmcm9tIGFsbCBwbGFuZXMgaW4gdGhl IGN1cnJlbnQgcGxhY2U/CiAJICovCiAJaWYgKCFpc19jcnRjX2VuYWJsZWQpIHsKLQkJcGxhbmVf c3RhdGUtPmJhc2UudmlzaWJsZSA9IHZpc2libGUgPSBmYWxzZTsKKwkJcGxhbmVfc3RhdGUtPnVh cGkudmlzaWJsZSA9IHZpc2libGUgPSBmYWxzZTsKIAkJY3J0Y19zdGF0ZS0+YWN0aXZlX3BsYW5l cyAmPSB+QklUKHBsYW5lLT5pZCk7CiAJCWNydGNfc3RhdGUtPmRhdGFfcmF0ZVtwbGFuZS0+aWRd ID0gMDsKIAl9CkBAIC0xMTcyMSw3ICsxMTcyMSw3IEBAIHN0YXRpYyBpbnQgaWNsX2NoZWNrX252 MTJfcGxhbmVzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCQkJY29udGlu dWU7CiAKIAkJcGxhbmVfc3RhdGUtPnBsYW5hcl9saW5rZWRfcGxhbmUgPSBOVUxMOwotCQlpZiAo cGxhbmVfc3RhdGUtPnBsYW5hcl9zbGF2ZSAmJiAhcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkg eworCQlpZiAocGxhbmVfc3RhdGUtPnBsYW5hcl9zbGF2ZSAmJiAhcGxhbmVfc3RhdGUtPnVhcGku dmlzaWJsZSkgewogCQkJY3J0Y19zdGF0ZS0+YWN0aXZlX3BsYW5lcyAmPSB+QklUKHBsYW5lLT5p ZCk7CiAJCQljcnRjX3N0YXRlLT51cGRhdGVfcGxhbmVzIHw9IEJJVChwbGFuZS0+aWQpOwogCQl9 CkBAIC0xMjA1NSwxNCArMTIwNTUsMTQgQEAgc3RhdGljIGNvbnN0IGNoYXIgKm91dHB1dF9mb3Jt YXRzKGVudW0gaW50ZWxfb3V0cHV0X2Zvcm1hdCBmb3JtYXQpCiAKIHN0YXRpYyB2b2lkIGludGVs X2R1bXBfcGxhbmVfc3RhdGUoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9z dGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxh bmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19p bnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJY29uc3Qgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJc3RydWN0IGRybV9mb3JtYXRf bmFtZV9idWYgZm9ybWF0X25hbWU7CiAKIAlpZiAoIWZiKSB7CiAJCURSTV9ERUJVR19LTVMoIltQ TEFORTolZDolc10gZmI6IFtOT0ZCXSwgdmlzaWJsZTogJXNcbiIsCiAJCQkgICAgICBwbGFuZS0+ YmFzZS5iYXNlLmlkLCBwbGFuZS0+YmFzZS5uYW1lLAotCQkJICAgICAgeWVzbm8ocGxhbmVfc3Rh dGUtPmJhc2UudmlzaWJsZSkpOworCQkJICAgICAgeWVzbm8ocGxhbmVfc3RhdGUtPnVhcGkudmlz aWJsZSkpOwogCQlyZXR1cm47CiAJfQogCkBAIC0xMjA3MCwxMyArMTIwNzAsMTMgQEAgc3RhdGlj IHZvaWQgaW50ZWxfZHVtcF9wbGFuZV9zdGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlKQogCQkgICAgICBwbGFuZS0+YmFzZS5iYXNlLmlkLCBwbGFuZS0+YmFz ZS5uYW1lLAogCQkgICAgICBmYi0+YmFzZS5pZCwgZmItPndpZHRoLCBmYi0+aGVpZ2h0LAogCQkg ICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKGZiLT5mb3JtYXQtPmZvcm1hdCwgJmZvcm1hdF9uYW1l KSwKLQkJICAgICAgeWVzbm8ocGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkpOworCQkgICAgICB5 ZXNubyhwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKSk7CiAJRFJNX0RFQlVHX0tNUygiXHRyb3Rh dGlvbjogMHgleCwgc2NhbGVyOiAlZFxuIiwKIAkJICAgICAgcGxhbmVfc3RhdGUtPmh3LnJvdGF0 aW9uLCBwbGFuZV9zdGF0ZS0+c2NhbGVyX2lkKTsKLQlpZiAocGxhbmVfc3RhdGUtPmJhc2Uudmlz aWJsZSkKKwlpZiAocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKIAkJRFJNX0RFQlVHX0tNUygi XHRzcmM6ICIgRFJNX1JFQ1RfRlBfRk1UICIgZHN0OiAiIERSTV9SRUNUX0ZNVCAiXG4iLAotCQkJ ICAgICAgRFJNX1JFQ1RfRlBfQVJHKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpLAotCQkJICAgICAg RFJNX1JFQ1RfQVJHKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpKTsKKwkJCSAgICAgIERSTV9SRUNU X0ZQX0FSRygmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSwKKwkJCSAgICAgIERSTV9SRUNUX0FSRygm cGxhbmVfc3RhdGUtPnVhcGkuZHN0KSk7CiB9CiAKIHN0YXRpYyB2b2lkIGludGVsX2R1bXBfcGlw ZV9jb25maWcoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLApAQCAt MTMxOTcsNyArMTMxOTcsNyBAQCBpbnRlbF92ZXJpZnlfcGxhbmVzKHN0cnVjdCBpbnRlbF9hdG9t aWNfc3RhdGUgKnN0YXRlKQogCWZvcl9lYWNoX25ld19pbnRlbF9wbGFuZV9pbl9zdGF0ZShzdGF0 ZSwgcGxhbmUsCiAJCQkJCSAgcGxhbmVfc3RhdGUsIGkpCiAJCWFzc2VydF9wbGFuZShwbGFuZSwg cGxhbmVfc3RhdGUtPnBsYW5hcl9zbGF2ZSB8fAotCQkJICAgICBwbGFuZV9zdGF0ZS0+YmFzZS52 aXNpYmxlKTsKKwkJCSAgICAgcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSk7CiB9CiAKIHN0YXRp YyB2b2lkCkBAIC0xNDM5Niw3ICsxNDM5Niw3IEBAIHN0YXRpYyB2b2lkIGFkZF9ycHNfYm9vc3Rf YWZ0ZXJfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAogc3RhdGljIGludCBpbnRlbF9w bGFuZV9waW5fZmIoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJh c2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShw bGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwpAQCAtMTQ0 NjEsNyArMTQ0NjEsNyBAQCBpbnRlbF9wcmVwYXJlX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAogCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqbmV3X3BsYW5lX3N0YXRlID0KIAkJ dG9faW50ZWxfcGxhbmVfc3RhdGUoX25ld19wbGFuZV9zdGF0ZSk7CiAJc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPQotCQl0b19pbnRlbF9hdG9taWNfc3RhdGUobmV3X3Bs YW5lX3N0YXRlLT5iYXNlLnN0YXRlKTsKKwkJdG9faW50ZWxfYXRvbWljX3N0YXRlKG5ld19wbGFu ZV9zdGF0ZS0+dWFwaS5zdGF0ZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShwbGFuZS0+ZGV2KTsKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IG5l d19wbGFuZV9zdGF0ZS0+aHcuZmI7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9 IGludGVsX2ZiX29iaihmYik7CkBAIC0xNDQ5NCw5ICsxNDQ5NCw5IEBAIGludGVsX3ByZXBhcmVf cGxhbmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCX0KIAl9CiAKLQlpZiAobmV3X3Bs YW5lX3N0YXRlLT5iYXNlLmZlbmNlKSB7IC8qIGV4cGxpY2l0IGZlbmNpbmcgKi8KKwlpZiAobmV3 X3BsYW5lX3N0YXRlLT51YXBpLmZlbmNlKSB7IC8qIGV4cGxpY2l0IGZlbmNpbmcgKi8KIAkJcmV0 ID0gaTkxNV9zd19mZW5jZV9hd2FpdF9kbWFfZmVuY2UoJmludGVsX3N0YXRlLT5jb21taXRfcmVh ZHksCi0JCQkJCQkgICAgbmV3X3BsYW5lX3N0YXRlLT5iYXNlLmZlbmNlLAorCQkJCQkJICAgIG5l d19wbGFuZV9zdGF0ZS0+dWFwaS5mZW5jZSwKIAkJCQkJCSAgICBJOTE1X0ZFTkNFX1RJTUVPVVQs CiAJCQkJCQkgICAgR0ZQX0tFUk5FTCk7CiAJCWlmIChyZXQgPCAwKQpAQCAtMTQ1MTksNyArMTQ1 MTksNyBAQCBpbnRlbF9wcmVwYXJlX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAog CWZiX29ial9idW1wX3JlbmRlcl9wcmlvcml0eShvYmopOwogCWludGVsX2Zyb250YnVmZmVyX2Zs dXNoKG9iai0+ZnJvbnRidWZmZXIsIE9SSUdJTl9ESVJUWUZCKTsKIAotCWlmICghbmV3X3BsYW5l X3N0YXRlLT5iYXNlLmZlbmNlKSB7IC8qIGltcGxpY2l0IGZlbmNpbmcgKi8KKwlpZiAoIW5ld19w bGFuZV9zdGF0ZS0+dWFwaS5mZW5jZSkgeyAvKiBpbXBsaWNpdCBmZW5jaW5nICovCiAJCXN0cnVj dCBkbWFfZmVuY2UgKmZlbmNlOwogCiAJCXJldCA9IGk5MTVfc3dfZmVuY2VfYXdhaXRfcmVzZXJ2 YXRpb24oJmludGVsX3N0YXRlLT5jb21taXRfcmVhZHksCkBAIC0xNDUzNyw3ICsxNDUzNyw3IEBA IGludGVsX3ByZXBhcmVfcGxhbmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCX0KIAl9 IGVsc2UgewogCQlhZGRfcnBzX2Jvb3N0X2FmdGVyX3ZibGFuayhuZXdfcGxhbmVfc3RhdGUtPmh3 LmNydGMsCi0JCQkJCSAgIG5ld19wbGFuZV9zdGF0ZS0+YmFzZS5mZW5jZSk7CisJCQkJCSAgIG5l d19wbGFuZV9zdGF0ZS0+dWFwaS5mZW5jZSk7CiAJfQogCiAJLyoKQEAgLTE0NTcwLDcgKzE0NTcw LDcgQEAgaW50ZWxfY2xlYW51cF9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZSA9CiAJCXRvX2ludGVsX3Bs YW5lX3N0YXRlKF9vbGRfcGxhbmVfc3RhdGUpOwogCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUg KmludGVsX3N0YXRlID0KLQkJdG9faW50ZWxfYXRvbWljX3N0YXRlKG9sZF9wbGFuZV9zdGF0ZS0+ YmFzZS5zdGF0ZSk7CisJCXRvX2ludGVsX2F0b21pY19zdGF0ZShvbGRfcGxhbmVfc3RhdGUtPnVh cGkuc3RhdGUpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo cGxhbmUtPmRldik7CiAKIAlpZiAoaW50ZWxfc3RhdGUtPnJwc19pbnRlcmFjdGl2ZSkgewpAQCAt MTQ3MzksOCArMTQ3MzksOCBAQCBpbnRlbF9sZWdhY3lfY3Vyc29yX3VwZGF0ZShzdHJ1Y3QgZHJt X3BsYW5lICpfcGxhbmUsCiAJICogdGhlIHBsYW5lLiAgVGhpcyBwcmV2ZW50cyBvdXIgYXN5bmMg dXBkYXRlJ3MgY2hhbmdlcyBmcm9tIGdldHRpbmcKIAkgKiBvdmVycmlkZGVuIGJ5IGEgcHJldmlv dXMgc3luY2hyb25vdXMgdXBkYXRlJ3Mgc3RhdGUuCiAJICovCi0JaWYgKG9sZF9wbGFuZV9zdGF0 ZS0+YmFzZS5jb21taXQgJiYKLQkgICAgIXRyeV93YWl0X2Zvcl9jb21wbGV0aW9uKCZvbGRfcGxh bmVfc3RhdGUtPmJhc2UuY29tbWl0LT5od19kb25lKSkKKwlpZiAob2xkX3BsYW5lX3N0YXRlLT51 YXBpLmNvbW1pdCAmJgorCSAgICAhdHJ5X3dhaXRfZm9yX2NvbXBsZXRpb24oJm9sZF9wbGFuZV9z dGF0ZS0+dWFwaS5jb21taXQtPmh3X2RvbmUpKQogCQlnb3RvIHNsb3c7CiAKIAkvKgpAQCAtMTQ3 NDksMTAgKzE0NzQ5LDEwIEBAIGludGVsX2xlZ2FjeV9jdXJzb3JfdXBkYXRlKHN0cnVjdCBkcm1f cGxhbmUgKl9wbGFuZSwKIAkgKiBpbiB0aGUgZmFzdHBhdGguCiAJICovCiAJaWYgKG9sZF9wbGFu ZV9zdGF0ZS0+dWFwaS5jcnRjICE9ICZjcnRjLT5iYXNlIHx8Ci0JICAgIG9sZF9wbGFuZV9zdGF0 ZS0+YmFzZS5zcmNfdyAhPSBzcmNfdyB8fAotCSAgICBvbGRfcGxhbmVfc3RhdGUtPmJhc2Uuc3Jj X2ggIT0gc3JjX2ggfHwKLQkgICAgb2xkX3BsYW5lX3N0YXRlLT5iYXNlLmNydGNfdyAhPSBjcnRj X3cgfHwKLQkgICAgb2xkX3BsYW5lX3N0YXRlLT5iYXNlLmNydGNfaCAhPSBjcnRjX2ggfHwKKwkg ICAgb2xkX3BsYW5lX3N0YXRlLT51YXBpLnNyY193ICE9IHNyY193IHx8CisJICAgIG9sZF9wbGFu ZV9zdGF0ZS0+dWFwaS5zcmNfaCAhPSBzcmNfaCB8fAorCSAgICBvbGRfcGxhbmVfc3RhdGUtPnVh cGkuY3J0Y193ICE9IGNydGNfdyB8fAorCSAgICBvbGRfcGxhbmVfc3RhdGUtPnVhcGkuY3J0Y19o ICE9IGNydGNfaCB8fAogCSAgICAhb2xkX3BsYW5lX3N0YXRlLT51YXBpLmZiICE9ICFmYikKIAkJ Z290byBzbG93OwogCkBAIC0xNDc2NiwxNiArMTQ3NjYsMTYgQEAgaW50ZWxfbGVnYWN5X2N1cnNv cl91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqX3BsYW5lLAogCQlnb3RvIG91dF9mcmVlOwogCX0K IAotCWRybV9hdG9taWNfc2V0X2ZiX2Zvcl9wbGFuZSgmbmV3X3BsYW5lX3N0YXRlLT5iYXNlLCBm Yik7CisJZHJtX2F0b21pY19zZXRfZmJfZm9yX3BsYW5lKCZuZXdfcGxhbmVfc3RhdGUtPnVhcGks IGZiKTsKIAotCW5ld19wbGFuZV9zdGF0ZS0+YmFzZS5zcmNfeCA9IHNyY194OwotCW5ld19wbGFu ZV9zdGF0ZS0+YmFzZS5zcmNfeSA9IHNyY195OwotCW5ld19wbGFuZV9zdGF0ZS0+YmFzZS5zcmNf dyA9IHNyY193OwotCW5ld19wbGFuZV9zdGF0ZS0+YmFzZS5zcmNfaCA9IHNyY19oOwotCW5ld19w bGFuZV9zdGF0ZS0+YmFzZS5jcnRjX3ggPSBjcnRjX3g7Ci0JbmV3X3BsYW5lX3N0YXRlLT5iYXNl LmNydGNfeSA9IGNydGNfeTsKLQluZXdfcGxhbmVfc3RhdGUtPmJhc2UuY3J0Y193ID0gY3J0Y193 OwotCW5ld19wbGFuZV9zdGF0ZS0+YmFzZS5jcnRjX2ggPSBjcnRjX2g7CisJbmV3X3BsYW5lX3N0 YXRlLT51YXBpLnNyY194ID0gc3JjX3g7CisJbmV3X3BsYW5lX3N0YXRlLT51YXBpLnNyY195ID0g c3JjX3k7CisJbmV3X3BsYW5lX3N0YXRlLT51YXBpLnNyY193ID0gc3JjX3c7CisJbmV3X3BsYW5l X3N0YXRlLT51YXBpLnNyY19oID0gc3JjX2g7CisJbmV3X3BsYW5lX3N0YXRlLT51YXBpLmNydGNf eCA9IGNydGNfeDsKKwluZXdfcGxhbmVfc3RhdGUtPnVhcGkuY3J0Y195ID0gY3J0Y195OworCW5l d19wbGFuZV9zdGF0ZS0+dWFwaS5jcnRjX3cgPSBjcnRjX3c7CisJbmV3X3BsYW5lX3N0YXRlLT51 YXBpLmNydGNfaCA9IGNydGNfaDsKIAogCXJldCA9IGludGVsX3BsYW5lX2F0b21pY19jaGVja193 aXRoX3N0YXRlKGNydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLAogCQkJCQkJICBvbGRfcGxhbmVf c3RhdGUsIG5ld19wbGFuZV9zdGF0ZSk7CkBAIC0xNDc5Myw3ICsxNDc5Myw3IEBAIGludGVsX2xl Z2FjeV9jdXJzb3JfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKl9wbGFuZSwKIAkJCQlwbGFuZS0+ ZnJvbnRidWZmZXJfYml0KTsKIAogCS8qIFN3YXAgcGxhbmUgc3RhdGUgKi8KLQlwbGFuZS0+YmFz ZS5zdGF0ZSA9ICZuZXdfcGxhbmVfc3RhdGUtPmJhc2U7CisJcGxhbmUtPmJhc2Uuc3RhdGUgPSAm bmV3X3BsYW5lX3N0YXRlLT51YXBpOwogCiAJLyoKIAkgKiBXZSBjYW5ub3Qgc3dhcCBjcnRjX3N0 YXRlIGFzIGl0IG1heSBiZSBpbiB1c2UgYnkgYW4gYXRvbWljIGNvbW1pdCBvcgpAQCAtMTQ4MDcs NyArMTQ4MDcsNyBAQCBpbnRlbF9sZWdhY3lfY3Vyc29yX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5l ICpfcGxhbmUsCiAJICovCiAJY3J0Y19zdGF0ZS0+YWN0aXZlX3BsYW5lcyA9IG5ld19jcnRjX3N0 YXRlLT5hY3RpdmVfcGxhbmVzOwogCi0JaWYgKG5ld19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxl KQorCWlmIChuZXdfcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKIAkJaW50ZWxfdXBkYXRlX3Bs YW5lKHBsYW5lLCBjcnRjX3N0YXRlLCBuZXdfcGxhbmVfc3RhdGUpOwogCWVsc2UKIAkJaW50ZWxf ZGlzYWJsZV9wbGFuZShwbGFuZSwgY3J0Y19zdGF0ZSk7CkBAIC0xNDgxOCw5ICsxNDgxOCwxMSBA QCBpbnRlbF9sZWdhY3lfY3Vyc29yX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCiAJ aWYgKG5ld19jcnRjX3N0YXRlKQogCQlpbnRlbF9jcnRjX2Rlc3Ryb3lfc3RhdGUoJmNydGMtPmJh c2UsICZuZXdfY3J0Y19zdGF0ZS0+dWFwaSk7CiAJaWYgKHJldCkKLQkJaW50ZWxfcGxhbmVfZGVz dHJveV9zdGF0ZSgmcGxhbmUtPmJhc2UsICZuZXdfcGxhbmVfc3RhdGUtPmJhc2UpOworCQlpbnRl bF9wbGFuZV9kZXN0cm95X3N0YXRlKCZwbGFuZS0+YmFzZSwKKwkJCQkJICAmbmV3X3BsYW5lX3N0 YXRlLT51YXBpKTsKIAllbHNlCi0JCWludGVsX3BsYW5lX2Rlc3Ryb3lfc3RhdGUoJnBsYW5lLT5i YXNlLCAmb2xkX3BsYW5lX3N0YXRlLT5iYXNlKTsKKwkJaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0 ZSgmcGxhbmUtPmJhc2UsCisJCQkJCSAgJm9sZF9wbGFuZV9zdGF0ZS0+dWFwaSk7CiAJcmV0dXJu IHJldDsKIAogc2xvdzoKQEAgLTE2NTA1LDcgKzE2NTA3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf c2FuaXRpemVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCWNvbnN0IHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUgPQogCQkJCXRvX2ludGVsX3BsYW5lX3N0YXRl KHBsYW5lLT5iYXNlLnN0YXRlKTsKIAotCQkJaWYgKHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUg JiYKKwkJCWlmIChwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlICYmCiAJCQkgICAgcGxhbmUtPmJh c2UudHlwZSAhPSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKQogCQkJCWludGVsX3BsYW5lX2Rpc2Fi bGVfbm9hdG9taWMoY3J0YywgcGxhbmUpOwogCQl9CkBAIC0xNjg0NCw3ICsxNjg0Niw3IEBAIHN0 YXRpYyB2b2lkIGludGVsX21vZGVzZXRfcmVhZG91dF9od19zdGF0ZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQogCQkJICogRklYTUUgZG9uJ3QgaGF2ZSB0aGUgZmIgeWV0LCBzbyBjYW4ndAogCQkJ ICogdXNlIGludGVsX3BsYW5lX2RhdGFfcmF0ZSgpIDooCiAJCQkgKi8KLQkJCWlmIChwbGFuZV9z dGF0ZS0+YmFzZS52aXNpYmxlKQorCQkJaWYgKHBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJ CQkJY3J0Y19zdGF0ZS0+ZGF0YV9yYXRlW3BsYW5lLT5pZF0gPQogCQkJCQk0ICogY3J0Y19zdGF0 ZS0+cGl4ZWxfcmF0ZTsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9mYmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmJj LmMKaW5kZXggM2VhOGQwMTBkYjZjLi45MmM3ZWIyNDM1NTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9mYmMuYwpAQCAtNDMwLDcgKzQzMCw3IEBAIHN0YXRpYyBib29sIG11 bHRpcGxlX3BpcGVzX29rKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCWlmICghbm9fZmJjX29u X211bHRpcGxlX3BpcGVzKGRldl9wcml2KSkKIAkJcmV0dXJuIHRydWU7CiAKLQlpZiAocGxhbmVf c3RhdGUtPmJhc2UudmlzaWJsZSkKKwlpZiAocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKIAkJ ZmJjLT52aXNpYmxlX3BpcGVzX21hc2sgfD0gKDEgPDwgcGlwZSk7CiAJZWxzZQogCQlmYmMtPnZp c2libGVfcGlwZXNfbWFzayAmPSB+KDEgPDwgcGlwZSk7CkBAIC02NzcsMTIgKzY3NywxMiBAQCBz dGF0aWMgdm9pZCBpbnRlbF9mYmNfdXBkYXRlX3N0YXRlX2NhY2hlKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjLAogCSAqIHRoZSA5MC8yNzAgZGVncmVlIHBsYW5lIHJvdGF0aW9uIGNhc2VzICh0byBt YXRjaCB0aGUKIAkgKiBHVFQgbWFwcGluZyksIGhlbmNlIG5vIG5lZWQgdG8gYWNjb3VudCBmb3Ig cm90YXRpb24gaGVyZS4KIAkgKi8KLQljYWNoZS0+cGxhbmUuc3JjX3cgPSBkcm1fcmVjdF93aWR0 aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKLQljYWNoZS0+cGxhbmUuc3JjX2ggPSBk cm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Ci0JY2FjaGUtPnBs YW5lLnZpc2libGUgPSBwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlOworCWNhY2hlLT5wbGFuZS5z cmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2OworCWNh Y2hlLT5wbGFuZS5zcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuc3Jj KSA+PiAxNjsKKwljYWNoZS0+cGxhbmUudmlzaWJsZSA9IHBsYW5lX3N0YXRlLT51YXBpLnZpc2li bGU7CiAJY2FjaGUtPnBsYW5lLmFkanVzdGVkX3ggPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVb MF0ueDsKIAljYWNoZS0+cGxhbmUuYWRqdXN0ZWRfeSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFu ZVswXS55OwotCWNhY2hlLT5wbGFuZS55ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLnkxID4+IDE2 OworCWNhY2hlLT5wbGFuZS55ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLnkxID4+IDE2OwogCiAJ Y2FjaGUtPnBsYW5lLnBpeGVsX2JsZW5kX21vZGUgPSBwbGFuZV9zdGF0ZS0+aHcucGl4ZWxfYmxl bmRfbW9kZTsKIApAQCAtMTA1Miw3ICsxMDUyLDcgQEAgdm9pZCBpbnRlbF9mYmNfY2hvb3NlX2Ny dGMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlpZiAoIXBsYW5lLT5oYXNf ZmJjKQogCQkJY29udGludWU7CiAKLQkJaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQor CQlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCQljb250aW51ZTsKIAogCQljcnRj X3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX292ZXJsYXkuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfb3ZlcmxheS5jCmluZGV4IGI1ZjEw NWUzNDZiNC4uNTAyYjM3ZWU2ZDI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX292ZXJsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX292ZXJsYXkuYwpAQCAtNjY3LDcgKzY2Nyw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9j b2xvcmtleShzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwKIAlpZiAob3ZlcmxheS0+Y29s b3Jfa2V5X2VuYWJsZWQpCiAJCWZsYWdzIHw9IERTVF9LRVlfRU5BQkxFOwogCi0JaWYgKHN0YXRl LT5iYXNlLnZpc2libGUpCisJaWYgKHN0YXRlLT51YXBpLnZpc2libGUpCiAJCWZvcm1hdCA9IHN0 YXRlLT5ody5mYi0+Zm9ybWF0LT5mb3JtYXQ7CiAKIAlzd2l0Y2ggKGZvcm1hdCkgewpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMKaW5kZXggMjQ1MjYzMDMxMjk5 Li4wMGY4M2QzN2FiY2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfc3ByaXRlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9z cHJpdGUuYwpAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgaW50ZWxfcGlwZV91cGRhdGVfZW5kKHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKIAogaW50IGludGVsX3BsYW5l X2NoZWNrX3N0cmlkZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRl KQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9z dGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVs X3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAl1bnNpZ25lZCBpbnQgcm90YXRpb24g PSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247CiAJdTMyIHN0cmlkZSwgbWF4X3N0cmlkZTsKQEAg LTI1Miw3ICsyNTIsNyBAQCBpbnQgaW50ZWxfcGxhbmVfY2hlY2tfc3RyaWRlKGNvbnN0IHN0cnVj dCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiAJICoga2ljayBpbiBkdWUgdGhlIHBs YW5lIGJlaW5nIGludmlzaWJsZS4KIAkgKi8KIAlpZiAoaW50ZWxfcGxhbmVfY2FuX3JlbWFwKHBs YW5lX3N0YXRlKSAmJgotCSAgICAhcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKKwkgICAgIXBs YW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCXJldHVybiAwOwogCiAJLyogRklYTUUgb3RoZXIg Y29sb3IgcGxhbmVzPyAqLwpAQCAtMjczLDcgKzI3Myw3IEBAIGludCBpbnRlbF9wbGFuZV9jaGVj a19zdHJpZGUoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIGlu dCBpbnRlbF9wbGFuZV9jaGVja19zcmNfY29vcmRpbmF0ZXMoc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZSkKIHsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9 IHBsYW5lX3N0YXRlLT5ody5mYjsKLQlzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9ICZwbGFuZV9zdGF0 ZS0+YmFzZS5zcmM7CisJc3RydWN0IGRybV9yZWN0ICpzcmMgPSAmcGxhbmVfc3RhdGUtPnVhcGku c3JjOwogCXUzMiBzcmNfeCwgc3JjX3ksIHNyY193LCBzcmNfaCwgaHN1YiwgdnN1YjsKIAlib29s IHJvdGF0ZWQgPSBkcm1fcm90YXRpb25fOTBfb3JfMjcwKHBsYW5lX3N0YXRlLT5ody5yb3RhdGlv bik7CiAKQEAgLTM1MiwxOSArMzUyLDE5IEBAIHNrbF9wcm9ncmFtX3NjYWxlcihzdHJ1Y3QgaW50 ZWxfcGxhbmUgKnBsYW5lLAogCWludCBzY2FsZXJfaWQgPSBwbGFuZV9zdGF0ZS0+c2NhbGVyX2lk OwogCWNvbnN0IHN0cnVjdCBpbnRlbF9zY2FsZXIgKnNjYWxlciA9CiAJCSZjcnRjX3N0YXRlLT5z Y2FsZXJfc3RhdGUuc2NhbGVyc1tzY2FsZXJfaWRdOwotCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0 ZS0+YmFzZS5kc3QueDE7Ci0JaW50IGNydGNfeSA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC55MTsK LQl1MzIgY3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Ci0J dTMyIGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKKwlp bnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPnVhcGkuZHN0LngxOworCWludCBjcnRjX3kgPSBwbGFu ZV9zdGF0ZS0+dWFwaS5kc3QueTE7CisJdTMyIGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFu ZV9zdGF0ZS0+dWFwaS5kc3QpOworCXUzMiBjcnRjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5l X3N0YXRlLT51YXBpLmRzdCk7CiAJdTE2IHlfaHBoYXNlLCB1dl9yZ2JfaHBoYXNlOwogCXUxNiB5 X3ZwaGFzZSwgdXZfcmdiX3ZwaGFzZTsKIAlpbnQgaHNjYWxlLCB2c2NhbGU7CiAKLQloc2NhbGUg PSBkcm1fcmVjdF9jYWxjX2hzY2FsZSgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLAotCQkJCSAgICAg ICZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QsCisJaHNjYWxlID0gZHJtX3JlY3RfY2FsY19oc2NhbGUo JnBsYW5lX3N0YXRlLT51YXBpLnNyYywKKwkJCQkgICAgICAmcGxhbmVfc3RhdGUtPnVhcGkuZHN0 LAogCQkJCSAgICAgIDAsIElOVF9NQVgpOwotCXZzY2FsZSA9IGRybV9yZWN0X2NhbGNfdnNjYWxl KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMsCi0JCQkJICAgICAgJnBsYW5lX3N0YXRlLT5iYXNlLmRz dCwKKwl2c2NhbGUgPSBkcm1fcmVjdF9jYWxjX3ZzY2FsZSgmcGxhbmVfc3RhdGUtPnVhcGkuc3Jj LAorCQkJCSAgICAgICZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QsCiAJCQkJICAgICAgMCwgSU5UX01B WCk7CiAKIAkvKiBUT0RPOiBoYW5kbGUgc3ViLXBpeGVsIGNvb3JkaW5hdGVzICovCkBAIC01MzUs MTIgKzUzNSwxMiBAQCBza2xfcHJvZ3JhbV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l LAogCXUzMiBzdXJmX2FkZHIgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbY29sb3JfcGxhbmVd Lm9mZnNldDsKIAl1MzIgc3RyaWRlID0gc2tsX3BsYW5lX3N0cmlkZShwbGFuZV9zdGF0ZSwgY29s b3JfcGxhbmUpOwogCXUzMiBhdXhfc3RyaWRlID0gc2tsX3BsYW5lX3N0cmlkZShwbGFuZV9zdGF0 ZSwgMSk7Ci0JaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC54MTsKLQlpbnQgY3J0 Y195ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LnkxOworCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0 ZS0+dWFwaS5kc3QueDE7CisJaW50IGNydGNfeSA9IHBsYW5lX3N0YXRlLT51YXBpLmRzdC55MTsK IAl1MzIgeCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVtjb2xvcl9wbGFuZV0ueDsKIAl1MzIg eSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVtjb2xvcl9wbGFuZV0ueTsKLQl1MzIgc3JjX3cg PSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKLQl1MzIgc3Jj X2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7CisJdTMy IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7CisJ dTMyIHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2 OwogCXN0cnVjdCBpbnRlbF9wbGFuZSAqbGlua2VkID0gcGxhbmVfc3RhdGUtPnBsYW5hcl9saW5r ZWRfcGxhbmU7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0 ZS0+aHcuZmI7CiAJdTggYWxwaGEgPSBwbGFuZV9zdGF0ZS0+aHcuYWxwaGEgPj4gODsKQEAgLTcx Nyw3ICs3MTcsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3BsYW5lX2xpbmVhcl9nYW1tYSh1MTYgZ2Ft bWFbOF0pCiBzdGF0aWMgdm9pZAogY2h2X3VwZGF0ZV9jc2MoY29uc3Qgc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0g dG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9w bGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5k ZXYpOwogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3 LmZiOwogCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSBwbGFuZS0+aWQ7CkBAIC03NzYsNyArNzc2 LDcgQEAgY2h2X3VwZGF0ZV9jc2MoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZSkKIHN0YXRpYyB2b2lkCiB2bHZfdXBkYXRlX2NscmMoY29uc3Qgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l ID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFz ZS5kZXYpOwogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUt Pmh3LmZiOwogCWVudW0gcGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7CkBAIC04OTEsNyArODkxLDcg QEAgc3RhdGljIHUzMiB2bHZfc3ByaXRlX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKIAogc3RhdGljIHZvaWQgdmx2X3VwZGF0ZV9nYW1tYShjb25zdCBzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBpbnRlbF9wbGFu ZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3Ry dWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBp LnBsYW5lKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBs YW5lLT5iYXNlLmRldik7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFu ZV9zdGF0ZS0+aHcuZmI7CiAJZW51bSBwaXBlIHBpcGUgPSBwbGFuZS0+cGlwZTsKQEAgLTkyNSwx MCArOTI1LDEwIEBAIHZsdl91cGRhdGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwK IAl1MzIgc3Byc3VyZl9vZmZzZXQgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ub2Zmc2V0 OwogCXUzMiBsaW5lYXJfb2Zmc2V0OwogCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2Nv bG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7Ci0JaW50IGNydGNfeCA9IHBsYW5lX3N0 YXRlLT5iYXNlLmRzdC54MTsKLQlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0Lnkx OwotCXUzMiBjcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsK LQl1MzIgY3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwor CWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDE7CisJaW50IGNydGNfeSA9IHBs YW5lX3N0YXRlLT51YXBpLmRzdC55MTsKKwl1MzIgY3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBs YW5lX3N0YXRlLT51YXBpLmRzdCk7CisJdTMyIGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxh bmVfc3RhdGUtPnVhcGkuZHN0KTsKIAl1MzIgeCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVsw XS54OwogCXUzMiB5ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLnk7CiAJdW5zaWduZWQg bG9uZyBpcnFmbGFnczsKQEAgLTEwMzUsNyArMTAzNSw3IEBAIHN0YXRpYyB1MzIgaXZiX3Nwcml0 ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkgIGNv bnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7CiAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5w bGFuZS0+ZGV2KTsKKwkJdG9faTkxNShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKIAlj b25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAl1 bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247CiAJY29uc3Qg c3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tl eTsKQEAgLTExMDUsNyArMTEwNSw3IEBAIHN0YXRpYyB2b2lkIGl2Yl9zcHJpdGVfbGluZWFyX2dh bW1hKHUxNiBnYW1tYVsxOF0pCiAKIHN0YXRpYyB2b2lkIGl2Yl91cGRhdGVfZ2FtbWEoY29uc3Qg c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxf cGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwor CXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+ dWFwaS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShwbGFuZS0+YmFzZS5kZXYpOwogCWVudW0gcGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7CiAJdTE2 IGdhbW1hWzE4XTsKQEAgLTExNDEsMTQgKzExNDEsMTQgQEAgaXZiX3VwZGF0ZV9wbGFuZShzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCXUzMiBzcHJzdXJmX29mZnNldCA9IHBsYW5lX3N0YXRl LT5jb2xvcl9wbGFuZVswXS5vZmZzZXQ7CiAJdTMyIGxpbmVhcl9vZmZzZXQ7CiAJY29uc3Qgc3Ry dWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsK LQlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LngxOwotCWludCBjcnRjX3kgPSBw bGFuZV9zdGF0ZS0+YmFzZS5kc3QueTE7Ci0JdTMyIGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZw bGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwotCXUzMiBjcnRjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBs YW5lX3N0YXRlLT5iYXNlLmRzdCk7CisJaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT51YXBpLmRz dC54MTsKKwlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPnVhcGkuZHN0LnkxOworCXUzMiBjcnRj X3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKKwl1MzIgY3J0Y19o ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwogCXUzMiB4ID0gcGxh bmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLng7CiAJdTMyIHkgPSBwbGFuZV9zdGF0ZS0+Y29sb3Jf cGxhbmVbMF0ueTsKLQl1MzIgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJh c2Uuc3JjKSA+PiAxNjsKLQl1MzIgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRl LT5iYXNlLnNyYykgPj4gMTY7CisJdTMyIHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0 YXRlLT51YXBpLnNyYykgPj4gMTY7CisJdTMyIHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFu ZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2OwogCXUzMiBzcHJjdGwsIHNwcnNjYWxlID0gMDsKIAl1 bnNpZ25lZCBsb25nIGlycWZsYWdzOwogCkBAIC0xMjY5LDcgKzEyNjksNyBAQCBzdGF0aWMgdTMy IGc0eF9zcHJpdGVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LAogCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewog CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Ci0JCXRvX2k5MTUocGxhbmVfc3Rh dGUtPmJhc2UucGxhbmUtPmRldik7CisJCXRvX2k5MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUt PmRldik7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+ aHcuZmI7CiAJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9u OwogCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVf c3RhdGUtPmNrZXk7CkBAIC0xMzI2LDcgKzEzMjYsNyBAQCBzdGF0aWMgdTMyIGc0eF9zcHJpdGVf Y3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCiBzdGF0aWMg dm9pZCBnNHhfdXBkYXRlX2dhbW1hKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5l KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0g dG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKIAljb25zdCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAllbnVtIHBp cGUgcGlwZSA9IHBsYW5lLT5waXBlOwpAQCAtMTM1OCw3ICsxMzU4LDcgQEAgc3RhdGljIHZvaWQg aWxrX3Nwcml0ZV9saW5lYXJfZ2FtbWEodTE2IGdhbW1hWzE3XSkKIAogc3RhdGljIHZvaWQgaWxr X3VwZGF0ZV9nYW1tYShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRl KQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9z dGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVs X3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7CiAJY29uc3Qgc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJZW51bSBwaXBlIHBpcGUg PSBwbGFuZS0+cGlwZTsKQEAgLTEzOTQsMTQgKzEzOTQsMTQgQEAgZzR4X3VwZGF0ZV9wbGFuZShz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCXUzMiBkdnNzdXJmX29mZnNldCA9IHBsYW5lX3N0 YXRlLT5jb2xvcl9wbGFuZVswXS5vZmZzZXQ7CiAJdTMyIGxpbmVhcl9vZmZzZXQ7CiAJY29uc3Qg c3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tl eTsKLQlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LngxOwotCWludCBjcnRjX3kg PSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueTE7Ci0JdTMyIGNydGNfdyA9IGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwotCXUzMiBjcnRjX2ggPSBkcm1fcmVjdF9oZWlnaHQo JnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7CisJaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT51YXBp LmRzdC54MTsKKwlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPnVhcGkuZHN0LnkxOworCXUzMiBj cnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKKwl1MzIgY3J0 Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwogCXUzMiB4ID0g cGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLng7CiAJdTMyIHkgPSBwbGFuZV9zdGF0ZS0+Y29s b3JfcGxhbmVbMF0ueTsKLQl1MzIgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PmJhc2Uuc3JjKSA+PiAxNjsKLQl1MzIgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0 YXRlLT5iYXNlLnNyYykgPj4gMTY7CisJdTMyIHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5l X3N0YXRlLT51YXBpLnNyYykgPj4gMTY7CisJdTMyIHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZw bGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2OwogCXUzMiBkdnNjbnRyLCBkdnNzY2FsZSA9IDA7 CiAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKIApAQCAtMTUxMCw4ICsxNTEwLDggQEAgZzR4X3Nw cml0ZV9jaGVja19zY2FsaW5nKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAog CQkJIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7CiAJY29uc3Qgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Ci0JY29uc3Qgc3Ry dWN0IGRybV9yZWN0ICpzcmMgPSAmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjOwotCWNvbnN0IHN0cnVj dCBkcm1fcmVjdCAqZHN0ID0gJnBsYW5lX3N0YXRlLT5iYXNlLmRzdDsKKwljb25zdCBzdHJ1Y3Qg ZHJtX3JlY3QgKnNyYyA9ICZwbGFuZV9zdGF0ZS0+dWFwaS5zcmM7CisJY29uc3Qgc3RydWN0IGRy bV9yZWN0ICpkc3QgPSAmcGxhbmVfc3RhdGUtPnVhcGkuZHN0OwogCWludCBzcmNfeCwgc3JjX3cs IHNyY19oLCBjcnRjX3csIGNydGNfaDsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq YWRqdXN0ZWRfbW9kZSA9CiAJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwpAQCAtMTU3 MCw3ICsxNTcwLDcgQEAgc3RhdGljIGludAogZzR4X3Nwcml0ZV9jaGVjayhzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5l KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0g dG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKIAlpbnQgbWlu X3NjYWxlID0gRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HOwogCWludCBtYXhfc2NhbGUgPSBE Uk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkc7CkBAIC0xNTg2LDcgKzE1ODYsNyBAQCBnNHhfc3By aXRlX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQl9CiAJfQog Ci0JcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxhbmVfc3RhdGUoJnBsYW5lX3N0YXRl LT5iYXNlLAorCXJldCA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lX3N0YXRlKCZwbGFu ZV9zdGF0ZS0+dWFwaSwKIAkJCQkJCSAgJmNydGNfc3RhdGUtPnVhcGksCiAJCQkJCQkgIG1pbl9z Y2FsZSwgbWF4X3NjYWxlLAogCQkJCQkJICB0cnVlLCB0cnVlKTsKQEAgLTE1OTcsNyArMTU5Nyw3 IEBAIGc0eF9zcHJpdGVfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWlmICghcGxhbmVfc3RhdGUtPmJhc2Uudmlz aWJsZSkKKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCiAJCXJldHVybiAwOwogCiAJ cmV0ID0gaW50ZWxfcGxhbmVfY2hlY2tfc3JjX2Nvb3JkaW5hdGVzKHBsYW5lX3N0YXRlKTsKQEAg LTE2MTgsNyArMTYxOCw3IEBAIGc0eF9zcHJpdGVfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCiAKIGludCBjaHZfcGxhbmVfY2hlY2tfcm90YXRpb24oY29uc3Qgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0 cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFw aS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShw bGFuZS0+YmFzZS5kZXYpOwogCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5o dy5yb3RhdGlvbjsKIApAQCAtMTY0Myw3ICsxNjQzLDcgQEAgdmx2X3Nwcml0ZV9jaGVjayhzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0 OwogCi0JcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxhbmVfc3RhdGUoJnBsYW5lX3N0 YXRlLT5iYXNlLAorCXJldCA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lX3N0YXRlKCZw bGFuZV9zdGF0ZS0+dWFwaSwKIAkJCQkJCSAgJmNydGNfc3RhdGUtPnVhcGksCiAJCQkJCQkgIERS TV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywKIAkJCQkJCSAgRFJNX1BMQU5FX0hFTFBFUl9OT19T Q0FMSU5HLApAQCAtMTY1NSw3ICsxNjU1LDcgQEAgdmx2X3Nwcml0ZV9jaGVjayhzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0J aWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCWlmICghcGxhbmVfc3RhdGUtPnVhcGku dmlzaWJsZSkKIAkJcmV0dXJuIDA7CiAKIAlyZXQgPSBpbnRlbF9wbGFuZV9jaGVja19zcmNfY29v cmRpbmF0ZXMocGxhbmVfc3RhdGUpOwpAQCAtMTY3MCw3ICsxNjcwLDcgQEAgdmx2X3Nwcml0ZV9j aGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIHN0YXRpYyBpbnQgc2ts X3BsYW5lX2NoZWNrX2ZiKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LAogCQkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkK IHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3Rh dGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9w bGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwogCWNvbnN0IHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwogCXVuc2lnbmVkIGludCByb3Rh dGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKQEAgLTE3NDUsOSArMTc0NSw5IEBAIHN0 YXRpYyBpbnQgc2tsX3BsYW5lX2NoZWNrX2RzdF9jb29yZGluYXRlcyhjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zCiAJCQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqcGxhbmVfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0KLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKLQlpbnQgY3J0Y194 ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LngxOwotCWludCBjcnRjX3cgPSBkcm1fcmVjdF93aWR0 aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKKwkJdG9faTkxNShwbGFuZV9zdGF0ZS0+dWFwaS5w bGFuZS0+ZGV2KTsKKwlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPnVhcGkuZHN0LngxOworCWlu dCBjcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKIAlpbnQg cGlwZV9zcmNfdyA9IGNydGNfc3RhdGUtPnBpcGVfc3JjX3c7CiAKIAkvKgpAQCAtMTc3NSw3ICsx Nzc1LDcgQEAgc3RhdGljIGludCBza2xfcGxhbmVfY2hlY2tfbnYxMl9yb3RhdGlvbihjb25zdCBz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3MKIHsKIAljb25zdCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAl1bnNpZ25lZCBpbnQgcm90YXRp b24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Ci0JaW50IHNyY193ID0gZHJtX3JlY3Rfd2lk dGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7CisJaW50IHNyY193ID0gZHJtX3JlY3Rf d2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7CiAKIAkvKiBEaXNwbGF5IFdBICMx MTA2ICovCiAJaWYgKGRybV9mb3JtYXRfaW5mb19pc195dXZfc2VtaXBsYW5hcihmYi0+Zm9ybWF0 KSAmJiBzcmNfdyAmIDMgJiYKQEAgLTE3OTEsNyArMTc5MSw3IEBAIHN0YXRpYyBpbnQgc2tsX3Bs YW5lX2NoZWNrX252MTJfcm90YXRpb24oY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpw bGFuZV9zCiBzdGF0aWMgaW50IHNrbF9wbGFuZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKIAkJCSAgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUpCiB7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5l X3N0YXRlLT5iYXNlLnBsYW5lKTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50 ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKIAljb25zdCBzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAlpbnQgbWluX3NjYWxl ID0gRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HOwpAQCAtMTgwOCw3ICsxODA4LDcgQEAgc3Rh dGljIGludCBza2xfcGxhbmVfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCiAJCW1heF9zY2FsZSA9IHNrbF9tYXhfc2NhbGUoY3J0Y19zdGF0ZSwgZmItPmZvcm1hdCk7 CiAJfQogCi0JcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxhbmVfc3RhdGUoJnBsYW5l X3N0YXRlLT5iYXNlLAorCXJldCA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lX3N0YXRl KCZwbGFuZV9zdGF0ZS0+dWFwaSwKIAkJCQkJCSAgJmNydGNfc3RhdGUtPnVhcGksCiAJCQkJCQkg IG1pbl9zY2FsZSwgbWF4X3NjYWxlLAogCQkJCQkJICB0cnVlLCB0cnVlKTsKQEAgLTE4MTksNyAr MTgxOSw3IEBAIHN0YXRpYyBpbnQgc2tsX3BsYW5lX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlpZiAoIXBsYW5l X3N0YXRlLT5iYXNlLnZpc2libGUpCisJaWYgKCFwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQog CQlyZXR1cm4gMDsKIAogCXJldCA9IHNrbF9wbGFuZV9jaGVja19kc3RfY29vcmRpbmF0ZXMoY3J0 Y19zdGF0ZSwgcGxhbmVfc3RhdGUpOwpAQCAtMTgzNiw3ICsxODM2LDcgQEAgc3RhdGljIGludCBz a2xfcGxhbmVfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAKIAkv KiBIVyBvbmx5IGhhcyA4IGJpdHMgcGl4ZWwgcHJlY2lzaW9uLCBkaXNhYmxlIHBsYW5lIGlmIGlu dmlzaWJsZSAqLwogCWlmICghKHBsYW5lX3N0YXRlLT5ody5hbHBoYSA+PiA4KSkKLQkJcGxhbmVf c3RhdGUtPmJhc2UudmlzaWJsZSA9IGZhbHNlOworCQlwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxl ID0gZmFsc2U7CiAKIAlwbGFuZV9zdGF0ZS0+Y3RsID0gc2tsX3BsYW5lX2N0bChjcnRjX3N0YXRl LCBwbGFuZV9zdGF0ZSk7CiAKQEAgLTE4NTUsNyArMTg1NSw3IEBAIHN0YXRpYyBib29sIGhhc19k c3Rfa2V5X2luX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogc3RhdGljIHZvaWQgaW50ZWxfcGxhbmVfc2V0X2NrZXkoc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZSwKIAkJCQkgY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29s b3JrZXkgKnNldCkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxh bmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUg PSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwogCXN0cnVj dCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDUwMjBmNmVmNGQwOC4uN2NjMjUxN2I4MGYyIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTc5NSw3ICs3OTUsNyBAQCBzdGF0aWMgaW50IGlu dGVsX3dtX251bV9sZXZlbHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogc3Rh dGljIGJvb2wgaW50ZWxfd21fcGxhbmVfdmlzaWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9w bGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAogCS8qIEZJWE1F IGNoZWNrIHRoZSAnZW5hYmxlJyBpbnN0ZWFkICovCiAJaWYgKCFjcnRjX3N0YXRlLT5ody5hY3Rp dmUpCkBAIC04MTIsNyArODEyLDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfd21fcGxhbmVfdmlzaWJs ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlpZiAocGxhbmUt PmlkID09IFBMQU5FX0NVUlNPUikKIAkJcmV0dXJuIHBsYW5lX3N0YXRlLT5ody5mYiAhPSBOVUxM OwogCWVsc2UKLQkJcmV0dXJuIHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGU7CisJCXJldHVybiBw bGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlOwogfQogCiBzdGF0aWMgc3RydWN0IGludGVsX2NydGMg KnNpbmdsZV9lbmFibGVkX2NydGMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpA QCAtMTA4NCw3ICsxMDg0LDcgQEAgc3RhdGljIHUxNiBnNHhfY29tcHV0ZV93bShjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCSAgY29uc3Qgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKIAkJCSAgaW50IGxldmVsKQogewotCXN0cnVjdCBp bnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFu ZSk7CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0 YXRlLT51YXBpLnBsYW5lKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KHBsYW5lLT5iYXNlLmRldik7CiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg KmFkanVzdGVkX21vZGUgPQogCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKQEAgLTEx MTcsNyArMTExNyw3IEBAIHN0YXRpYyB1MTYgZzR4X2NvbXB1dGVfd20oY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJY2xvY2sgPSBhZGp1c3RlZF9tb2RlLT5jcnRj X2Nsb2NrOwogCWh0b3RhbCA9IGFkanVzdGVkX21vZGUtPmNydGNfaHRvdGFsOwogCi0Jd2lkdGgg PSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKKwl3aWR0aCA9IGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwogCiAJaWYgKHBsYW5lLT5pZCA9PSBQ TEFORV9DVVJTT1IpIHsKIAkJd20gPSBpbnRlbF93bV9tZXRob2QyKGNsb2NrLCBodG90YWwsIHdp ZHRoLCBjcHAsIGxhdGVuY3kpOwpAQCAtMTE4Myw3ICsxMTgzLDcgQEAgc3RhdGljIHUzMiBpbGtf Y29tcHV0ZV9mYmNfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs CiBzdGF0aWMgYm9vbCBnNHhfcmF3X3BsYW5lX3dtX2NvbXB1dGUoc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCiAJCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRl bF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAlpbnQgbnVt X2xldmVscyA9IGludGVsX3dtX251bV9sZXZlbHModG9faTkxNShwbGFuZS0+YmFzZS5kZXYpKTsK IAllbnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gcGxhbmUtPmlkOwogCWJvb2wgZGlydHkgPSBmYWxz ZTsKQEAgLTE1OTAsNyArMTU5MCw3IEBAIHN0YXRpYyB1MTYgdmx2X2NvbXB1dGVfd21fbGV2ZWwo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkJY29uc3Qgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKIAkJCQlpbnQgbGV2ZWwpCiB7Ci0J c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5i YXNlLnBsYW5lKTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUo cGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9CiAJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2Rl OwpAQCAtMTc2MCw3ICsxNzYwLDcgQEAgc3RhdGljIGJvb2wgdmx2X3Jhd19wbGFuZV93bV9zZXQo c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiBzdGF0aWMgYm9vbCB2bHZfcmF3 X3BsYW5lX3dtX2NvbXB1dGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJ CQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewot CXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+ YmFzZS5wbGFuZSk7CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5l KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKIAllbnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gcGxh bmUtPmlkOwogCWludCBudW1fbGV2ZWxzID0gaW50ZWxfd21fbnVtX2xldmVscyh0b19pOTE1KHBs YW5lLT5iYXNlLmRldikpOwogCWludCBsZXZlbDsKQEAgLTI0OTMsNyArMjQ5Myw3IEBAIHN0YXRp YyB1MzIgaWxrX2NvbXB1dGVfcHJpX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAogCiAJbWV0aG9kMiA9IGlsa193bV9tZXRob2QyKGNydGNfc3RhdGUtPnBpeGVs X3JhdGUsCiAJCQkJIGNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwsCi0J CQkJIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpLAorCQkJCSBkcm1fcmVj dF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSwKIAkJCQkgY3BwLCBtZW1fdmFsdWUpOwog CiAJcmV0dXJuIG1pbihtZXRob2QxLCBtZXRob2QyKTsKQEAgLTI1MjEsNyArMjUyMSw3IEBAIHN0 YXRpYyB1MzIgaWxrX2NvbXB1dGVfc3ByX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAogCW1ldGhvZDEgPSBpbGtfd21fbWV0aG9kMShjcnRjX3N0YXRlLT5waXhl bF9yYXRlLCBjcHAsIG1lbV92YWx1ZSk7CiAJbWV0aG9kMiA9IGlsa193bV9tZXRob2QyKGNydGNf c3RhdGUtPnBpeGVsX3JhdGUsCiAJCQkJIGNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUuY3J0 Y19odG90YWwsCi0JCQkJIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpLAor CQkJCSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSwKIAkJCQkgY3BwLCBt ZW1fdmFsdWUpOwogCXJldHVybiBtaW4obWV0aG9kMSwgbWV0aG9kMik7CiB9CkBAIC0yNTQ2LDcg KzI1NDYsNyBAQCBzdGF0aWMgdTMyIGlsa19jb21wdXRlX2N1cl93bShjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAogCXJldHVybiBpbGtfd21fbWV0aG9kMihjcnRj X3N0YXRlLT5waXhlbF9yYXRlLAogCQkJICAgICAgY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9k ZS5jcnRjX2h0b3RhbCwKLQkJCSAgICAgIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFz ZS5kc3QpLAorCQkJICAgICAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCks CiAJCQkgICAgICBjcHAsIG1lbV92YWx1ZSk7CiB9CiAKQEAgLTI1NjIsNyArMjU2Miw4IEBAIHN0 YXRpYyB1MzIgaWxrX2NvbXB1dGVfZmJjX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAogCiAJY3BwID0gcGxhbmVfc3RhdGUtPmh3LmZiLT5mb3JtYXQtPmNwcFsw XTsKIAotCXJldHVybiBpbGtfd21fZmJjKHByaV92YWwsIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+YmFzZS5kc3QpLCBjcHApOworCXJldHVybiBpbGtfd21fZmJjKHByaV92YWwsIGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpLAorCQkJICBjcHApOwogfQogCiBzdGF0 aWMgdW5zaWduZWQgaW50CkBAIC0zMTA2LDEwICszMTA3LDEwIEBAIHN0YXRpYyBpbnQgaWxrX2Nv bXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAogCXBp cGVfd20tPnBpcGVfZW5hYmxlZCA9IGNydGNfc3RhdGUtPmh3LmFjdGl2ZTsKIAlpZiAoc3Byc3Rh dGUpIHsKLQkJcGlwZV93bS0+c3ByaXRlc19lbmFibGVkID0gc3Byc3RhdGUtPmJhc2UudmlzaWJs ZTsKLQkJcGlwZV93bS0+c3ByaXRlc19zY2FsZWQgPSBzcHJzdGF0ZS0+YmFzZS52aXNpYmxlICYm Ci0JCQkoZHJtX3JlY3Rfd2lkdGgoJnNwcnN0YXRlLT5iYXNlLmRzdCkgIT0gZHJtX3JlY3Rfd2lk dGgoJnNwcnN0YXRlLT5iYXNlLnNyYykgPj4gMTYgfHwKLQkJCSBkcm1fcmVjdF9oZWlnaHQoJnNw cnN0YXRlLT5iYXNlLmRzdCkgIT0gZHJtX3JlY3RfaGVpZ2h0KCZzcHJzdGF0ZS0+YmFzZS5zcmMp ID4+IDE2KTsKKwkJcGlwZV93bS0+c3ByaXRlc19lbmFibGVkID0gc3Byc3RhdGUtPnVhcGkudmlz aWJsZTsKKwkJcGlwZV93bS0+c3ByaXRlc19zY2FsZWQgPSBzcHJzdGF0ZS0+dWFwaS52aXNpYmxl ICYmCisJCQkoZHJtX3JlY3Rfd2lkdGgoJnNwcnN0YXRlLT51YXBpLmRzdCkgIT0gZHJtX3JlY3Rf d2lkdGgoJnNwcnN0YXRlLT51YXBpLnNyYykgPj4gMTYgfHwKKwkJCSBkcm1fcmVjdF9oZWlnaHQo JnNwcnN0YXRlLT51YXBpLmRzdCkgIT0gZHJtX3JlY3RfaGVpZ2h0KCZzcHJzdGF0ZS0+dWFwaS5z cmMpID4+IDE2KTsKIAl9CiAKIAl1c2FibGVfbGV2ZWwgPSBtYXhfbGV2ZWw7CkBAIC00MDgxLDEw ICs0MDgyLDEwIEBAIHNrbF9wbGFuZV9kb3duc2NhbGVfYW1vdW50KGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCSAqCiAJICogbi5iLiwgc3JjIGlzIDE2LjE2IGZp eGVkIHBvaW50LCBkc3QgaXMgd2hvbGUgaW50ZWdlci4KIAkgKi8KLQlzcmNfdyA9IGRybV9yZWN0 X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwotCXNyY19oID0gZHJtX3JlY3Rf aGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwotCWRzdF93ID0gZHJtX3JlY3Rf d2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Ci0JZHN0X2ggPSBkcm1fcmVjdF9oZWlnaHQo JnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7CisJc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVf c3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKKwlzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVf c3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKKwlkc3RfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+dWFwaS5kc3QpOworCWRzdF9oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+ dWFwaS5kc3QpOwogCiAJZnBfd19yYXRpbyA9IGRpdl9maXhlZDE2KHNyY193LCBkc3Rfdyk7CiAJ ZnBfaF9yYXRpbyA9IGRpdl9maXhlZDE2KHNyY19oLCBkc3RfaCk7CkBAIC00MTg2LDE0ICs0MTg3 LDE0IEBAIHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqcGxhbmVfc3RhdGUsCiAJCQkgICAgIGludCBjb2xvcl9wbGFuZSkKIHsKLQlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxh bmUpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9z dGF0ZS0+dWFwaS5wbGFuZSk7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBw bGFuZV9zdGF0ZS0+aHcuZmI7CiAJdTMyIGRhdGFfcmF0ZTsKIAl1MzIgd2lkdGggPSAwLCBoZWln aHQgPSAwOwogCXVpbnRfZml4ZWRfMTZfMTZfdCBkb3duX3NjYWxlX2Ftb3VudDsKIAl1NjQgcmF0 ZTsKIAotCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKKwlpZiAoIXBsYW5lX3N0YXRl LT51YXBpLnZpc2libGUpCiAJCXJldHVybiAwOwogCiAJaWYgKHBsYW5lLT5pZCA9PSBQTEFORV9D VVJTT1IpCkBAIC00MjA4LDggKzQyMDksOCBAQCBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRl KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCSAqIHRoZSA5MC8y NzAgZGVncmVlIHBsYW5lIHJvdGF0aW9uIGNhc2VzICh0byBtYXRjaCB0aGUKIAkgKiBHVFQgbWFw cGluZyksIGhlbmNlIG5vIG5lZWQgdG8gYWNjb3VudCBmb3Igcm90YXRpb24gaGVyZS4KIAkgKi8K LQl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owot CWhlaWdodCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsK Kwl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owor CWhlaWdodCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsK IAogCS8qIFVWIHBsYW5lIGRvZXMgMS8yIHBpeGVsIHN1Yi1zYW1wbGluZyAqLwogCWlmIChjb2xv cl9wbGFuZSA9PSAxKSB7CkBAIC00NzE2LDcgKzQ3MTcsNyBAQCBza2xfY29tcHV0ZV9wbGFuZV93 bV9wYXJhbXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJICog dGhlIDkwLzI3MCBkZWdyZWUgcGxhbmUgcm90YXRpb24gY2FzZXMgKHRvIG1hdGNoIHRoZQogCSAq IEdUVCBtYXBwaW5nKSwgaGVuY2Ugbm8gbmVlZCB0byBhY2NvdW50IGZvciByb3RhdGlvbiBoZXJl LgogCSAqLwotCXdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykg Pj4gMTY7CisJd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+ PiAxNjsKIAogCXJldHVybiBza2xfY29tcHV0ZV93bV9wYXJhbXMoY3J0Y19zdGF0ZSwgd2lkdGgs CiAJCQkJICAgICBmYi0+Zm9ybWF0LCBmYi0+bW9kaWZpZXIsCkBAIC00OTk4LDcgKzQ5OTksNyBA QCBzdGF0aWMgaW50IHNrbF9idWlsZF9wbGFuZV93bV91dihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BsYW5lX3dtKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0g dG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOworCXN0cnVjdCBpbnRlbF9w bGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7CiAJ Y29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJ ZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKIAlpbnQgcmV0OwpAQCAtNTAyNCw3 ICs1MDI1LDcgQEAgc3RhdGljIGludCBza2xfYnVpbGRfcGxhbmVfd20oc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCiBzdGF0aWMgaW50IGljbF9idWlsZF9wbGFuZV93bShzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0JZW51bSBwbGFuZV9pZCBwbGFuZV9p ZCA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKS0+aWQ7CisJZW51bSBw bGFuZV9pZCBwbGFuZV9pZCA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5l KS0+aWQ7CiAJaW50IHJldDsKIAogCS8qIFdhdGVybWFya3MgY2FsY3VsYXRlZCBpbiBtYXN0ZXIg Ki8KQEAgLTYwNTcsNyArNjA1OCw3IEBAIHZvaWQgZzR4X3dtX3Nhbml0aXplKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5l LT5pZDsKIAkJaW50IGxldmVsOwogCi0JCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQor CQlpZiAocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKIAkJCWNvbnRpbnVlOwogCiAJCWZvciAo bGV2ZWwgPSAwOyBsZXZlbCA8IDM7IGxldmVsKyspIHsKQEAgLTYyMTIsNyArNjIxMyw3IEBAIHZv aWQgdmx2X3dtX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJ ZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKIAkJaW50IGxldmVsOwogCi0JCWlm IChwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCQlpZiAocGxhbmVfc3RhdGUtPnVhcGkudmlz aWJsZSkKIAkJCWNvbnRpbnVlOwogCiAJCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8IHdtX3N0YXRl LT5udW1fbGV2ZWxzOyBsZXZlbCsrKSB7Ci0tIAoyLjIzLjAKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==