From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 31/33] drm/i915/execlists: Preempt-to-busy Date: Mon, 20 May 2019 09:01:25 +0100 Message-ID: <20190520080127.18255-31-chris@chris-wilson.co.uk> References: <20190520080127.18255-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 23257891F4 for ; Mon, 20 May 2019 08:02:04 +0000 (UTC) In-Reply-To: <20190520080127.18255-1-chris@chris-wilson.co.uk> 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 V2hlbiB1c2luZyBhIGdsb2JhbCBzZXFubywgd2UgcmVxdWlyZWQgYSBwcmVjaXNlIHN0b3AtdGhl LXdvcmtkIGV2ZW50IHRvCmhhbmRsZSBwcmVlbXB0aW9uIGFuZCB1bndpbmQgdGhlIGdsb2JhbCBz ZXFubyBjb3VudGVyLiBUbyBhY2NvbXBsaXNoCnRoaXMsIHdlIHdvdWxkIHByZWVtcHQgdG8gYSBz cGVjaWFsIG91dC1vZi1iYW5kIGNvbnRleHQgYW5kIHdhaXQgZm9yIHRoZQptYWNoaW5lIHRvIHJl cG9ydCB0aGF0IGl0IHdhcyBpZGxlLiBHaXZlbiBhbiBpZGxlIG1hY2hpbmUsIHdlIGNvdWxkIHZl cnkKcHJlY2lzZWx5IHNlZSB3aGljaCByZXF1ZXN0cyBoYWQgY29tcGxldGVkIGFuZCB3aGljaCB3 ZSBuZWVkZWQgdG8gZmVlZApiYWNrIGludG8gdGhlIHJ1biBxdWV1ZS4KCkhvd2V2ZXIsIG5vdyB0 aGF0IHdlIGhhdmUgc2NyYXBwZWQgdGhlIGdsb2JhbCBzZXFubywgd2Ugbm8gbG9uZ2VyIG5lZWQK dG8gcHJlY2lzZWx5IHVud2luZCB0aGUgZ2xvYmFsIGNvdW50ZXIgYW5kIG9ubHkgdHJhY2sgcmVx dWVzdHMgYnkgdGhlaXIKcGVyLWNvbnRleHQgc2Vxbm8uIFRoaXMgYWxsb3dzIHVzIHRvIGxvb3Nl bHkgdW53aW5kIGluZmxpZ2h0IHJlcXVlc3RzCndoaWxlIHNjaGVkdWxpbmcgYSBwcmVlbXB0aW9u LCB3aXRoIHRoZSBlbm9ybW91cyBjYXZlYXQgdGhhdCB0aGUKcmVxdWVzdHMgd2UgcHV0IGJhY2sg b24gdGhlIHJ1biBxdWV1ZSBhcmUgc3RpbGwgX2luZmxpZ2h0XyAodW50aWwgdGhlCnByZWVtcHRp b24gcmVxdWVzdCBpcyBjb21wbGV0ZSkuIFRoaXMgbWFrZXMgcmVxdWVzdCB0cmFja2luZyBtdWNo IG1vcmUKbWVzc3ksIGFzIGF0IGFueSBwb2ludCB0aGVuIHdlIGNhbiBzZWUgYSBjb21wbGV0ZWQg cmVxdWVzdCB0aGF0IHdlCmJlbGlldmUgaXMgbm90IGN1cnJlbnRseSBzY2hlZHVsZWQgZm9yIGV4 ZWN1dGlvbi4gV2UgYWxzbyBoYXZlIHRvIGJlCmNhcmVmdWwgbm90IHRvIHJld2luZCBSSU5HX1RB SUwgcGFzdCBSSU5HX0hFQUQgb24gcHJlZW1wdGluZyB0byB0aGUKcnVubmluZyBjb250ZXh0LCBh bmQgZm9yIHRoaXMgd2UgdXNlIGEgc2VtYXBob3JlIHRvIHByZXZlbnQgY29tcGxldGlvbgpvZiB0 aGUgcmVxdWVzdCBiZWZvcmUgY29udGludWluZy4KClRvIGFjY29tcGxpc2ggdGhpcyBmZWF0LCB3 ZSBjaGFuZ2UgaG93IHdlIHRyYWNrIHJlcXVlc3RzIHNjaGVkdWxlZCB0bwp0aGUgSFcuIEluc3Rl YWQgb2YgYXBwZW5kaW5nIG91ciByZXF1ZXN0cyBvbnRvIGEgc2luZ2xlIGxpc3QgYXMgd2UKc3Vi bWl0LCB3ZSB0cmFjayBlYWNoIHN1Ym1pc3Npb24gdG8gRUxTUCBhcyBpdHMgb3duIGJsb2NrLiBU aGVuIHVwb24KcmVjZWl2aW5nIHRoZSBDUyBwcmVlbXB0aW9uIGV2ZW50LCB3ZSBwcm9tb3RlIHRo ZSBwZW5kaW5nIGJsb2NrIHRvIHRoZQppbmZsaWdodCBibG9jayAoZGlzY2FyZGluZyB3aGF0IHdh cyBwcmV2aW91c2x5IGJlaW5nIHRyYWNrZWQpLiBBcyBub3JtYWwKQ1MgY29tcGxldGlvbiBldmVu dHMgYXJyaXZlLCB3ZSB0aGVuIHJlbW92ZSBzdGFsZSBlbnRyaWVzIGZyb20gdGhlCmluZmxpZ2h0 IHRyYWNrZXIuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNv bi5jby51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5j ICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHRfdHlwZXMu aCB8ICAgNSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaCAgICAgICAg fCAgNjEgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jICAgICB8 ICA2MSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmggIHwg IDUyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyAgICAgICAgICAgfCA2 NzEgKysrKysrKystLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJv ci5jICAgICAgICAgfCAgMTkgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5j ICAgICAgICAgICB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCAg ICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuYyAg ICAgICAgIHwgICAzICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3V0aWxzLmggICAgICAg ICAgICAgfCAgMTIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24u YyAgIHwgMTc1ICsrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1 ZXN0LmMgfCAgIDggKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDQ2NSBpbnNlcnRpb25zKCspLCA2MTEg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVf Z2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0 LmMKaW5kZXggYWEyYmQxZDZjZWI2Li4wZjExYzU3MWJiMDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtNjQyLDcgKzY0Miw3IEBAIHN0YXRpYyB2 b2lkIGluaXRfY29udGV4dHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAKIHN0YXRp YyBib29sIG5lZWRzX3ByZWVtcHRfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKIHsKLQlyZXR1cm4gSEFTX0VYRUNMSVNUUyhpOTE1KTsKKwlyZXR1cm4gVVNFU19HVUNfU1VC TUlTU0lPTihpOTE1KTsKIH0KIAogaW50IGk5MTVfZ2VtX2NvbnRleHRzX2luaXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfY29udGV4dF90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfY29udGV4dF90eXBlcy5oCmluZGV4IGU5NWJlNGJlOTYxMi4uYjU2NWMzZmY0Mzc4IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5cGVzLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dF90eXBlcy5oCkBAIC0xMyw2 ICsxMyw3IEBACiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KIAogI2luY2x1ZGUgImk5MTVfYWN0 aXZlX3R5cGVzLmgiCisjaW5jbHVkZSAiaTkxNV91dGlscy5oIgogI2luY2x1ZGUgImludGVsX2Vu Z2luZV90eXBlcy5oIgogI2luY2x1ZGUgImludGVsX3NzZXUuaCIKIApAQCAtMzgsNiArMzksMTAg QEAgc3RydWN0IGludGVsX2NvbnRleHQgewogCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpnZW1f Y29udGV4dDsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CiAJc3RydWN0IGludGVs X2VuZ2luZV9jcyAqaW5mbGlnaHQ7CisjZGVmaW5lIGludGVsX2NvbnRleHRfaW5mbGlnaHQoY2Up IHB0cl9tYXNrX2JpdHMoKGNlKS0+aW5mbGlnaHQsIDIpCisjZGVmaW5lIGludGVsX2NvbnRleHRf aW5mbGlnaHRfY291bnQoY2UpICBwdHJfdW5tYXNrX2JpdHMoKGNlKS0+aW5mbGlnaHQsIDIpCisj ZGVmaW5lIGludGVsX2NvbnRleHRfaW5mbGlnaHRfaW5jKGNlKSBwdHJfY291bnRfaW5jKCYoY2Up LT5pbmZsaWdodCkKKyNkZWZpbmUgaW50ZWxfY29udGV4dF9pbmZsaWdodF9kZWMoY2UpIHB0cl9j b3VudF9kZWMoJihjZSktPmluZmxpZ2h0KQogCiAJc3RydWN0IGxpc3RfaGVhZCBzaWduYWxfbGlu azsKIAlzdHJ1Y3QgbGlzdF9oZWFkIHNpZ25hbHM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2VuZ2luZS5oCmluZGV4IGI4ZjVjNGUxZDM5ZS4uMTJiMTliMTdlOWIwIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaApAQCAtMTA2LDcxICsxMDYsMjYgQEAgaGFuZ2NoZWNr X2FjdGlvbl90b19zdHIoY29uc3QgZW51bSBpbnRlbF9lbmdpbmVfaGFuZ2NoZWNrX2FjdGlvbiBh KQogCiB2b2lkIGludGVsX2VuZ2luZXNfc2V0X3NjaGVkdWxlcl9jYXBzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KTsKIAotc3RhdGljIGlubGluZSB2b2lkCi1leGVjbGlzdHNfc2V0X2Fj dGl2ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZXhlY2xpc3RzLAotCQkgICAgIHVu c2lnbmVkIGludCBiaXQpCi17Ci0JX19zZXRfYml0KGJpdCwgKHVuc2lnbmVkIGxvbmcgKikmZXhl Y2xpc3RzLT5hY3RpdmUpOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wKLWV4ZWNsaXN0c19zZXRf YWN0aXZlX29uY2Uoc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0cywKLQkJ CSAgdW5zaWduZWQgaW50IGJpdCkKLXsKLQlyZXR1cm4gIV9fdGVzdF9hbmRfc2V0X2JpdChiaXQs ICh1bnNpZ25lZCBsb25nICopJmV4ZWNsaXN0cy0+YWN0aXZlKTsKLX0KLQotc3RhdGljIGlubGlu ZSB2b2lkCi1leGVjbGlzdHNfY2xlYXJfYWN0aXZlKHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xp c3RzICpleGVjbGlzdHMsCi0JCSAgICAgICB1bnNpZ25lZCBpbnQgYml0KQotewotCV9fY2xlYXJf Yml0KGJpdCwgKHVuc2lnbmVkIGxvbmcgKikmZXhlY2xpc3RzLT5hY3RpdmUpOwotfQotCi1zdGF0 aWMgaW5saW5lIHZvaWQKLWV4ZWNsaXN0c19jbGVhcl9hbGxfYWN0aXZlKHN0cnVjdCBpbnRlbF9l bmdpbmVfZXhlY2xpc3RzICpleGVjbGlzdHMpCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludAor ZXhlY2xpc3RzX251bV9wb3J0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAq IGNvbnN0IGV4ZWNsaXN0cykKIHsKLQlleGVjbGlzdHMtPmFjdGl2ZSA9IDA7CisJcmV0dXJuIGV4 ZWNsaXN0cy0+cG9ydF9tYXNrICsgMTsKIH0KIAotc3RhdGljIGlubGluZSBib29sCi1leGVjbGlz dHNfaXNfYWN0aXZlKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICpleGVjbGlz dHMsCi0JCSAgICB1bnNpZ25lZCBpbnQgYml0KQorc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICoKK2V4ZWNsaXN0c19hY3RpdmUoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9leGVj bGlzdHMgKmV4ZWNsaXN0cykKIHsKLQlyZXR1cm4gdGVzdF9iaXQoYml0LCAodW5zaWduZWQgbG9u ZyAqKSZleGVjbGlzdHMtPmFjdGl2ZSk7CisJR0VNX0JVR19PTihleGVjbGlzdHMtPmFjdGl2ZSAt IGV4ZWNsaXN0cy0+aW5mbGlnaHQgPgorCQkgICBleGVjbGlzdHNfbnVtX3BvcnRzKGV4ZWNsaXN0 cykpOworCXJldHVybiBSRUFEX09OQ0UoKmV4ZWNsaXN0cy0+YWN0aXZlKTsKIH0KIAotdm9pZCBl eGVjbGlzdHNfdXNlcl9iZWdpbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZXhlY2xp c3RzLAotCQkJICBjb25zdCBzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9ydCk7Ci12b2lkIGV4ZWNs aXN0c191c2VyX2VuZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZXhlY2xpc3RzKTsK LQogdm9pZAogZXhlY2xpc3RzX2NhbmNlbF9wb3J0X3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdp bmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzKTsKIAogc3RydWN0IGk5MTVfcmVxdWVzdCAq CiBleGVjbGlzdHNfdW53aW5kX2luY29tcGxldGVfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2lu ZV9leGVjbGlzdHMgKmV4ZWNsaXN0cyk7CiAKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50Ci1l eGVjbGlzdHNfbnVtX3BvcnRzKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICog Y29uc3QgZXhlY2xpc3RzKQotewotCXJldHVybiBleGVjbGlzdHMtPnBvcnRfbWFzayArIDE7Ci19 Ci0KLXN0YXRpYyBpbmxpbmUgc3RydWN0IGV4ZWNsaXN0X3BvcnQgKgotZXhlY2xpc3RzX3BvcnRf Y29tcGxldGUoc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMs Ci0JCQlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqIGNvbnN0IHBvcnQpCi17Ci0JY29uc3QgdW5zaWdu ZWQgaW50IG0gPSBleGVjbGlzdHMtPnBvcnRfbWFzazsKLQotCUdFTV9CVUdfT04ocG9ydF9pbmRl eChwb3J0LCBleGVjbGlzdHMpICE9IDApOwotCUdFTV9CVUdfT04oIWV4ZWNsaXN0c19pc19hY3Rp dmUoZXhlY2xpc3RzLCBFWEVDTElTVFNfQUNUSVZFX1VTRVIpKTsKLQotCW1lbW1vdmUocG9ydCwg cG9ydCArIDEsIG0gKiBzaXplb2Yoc3RydWN0IGV4ZWNsaXN0X3BvcnQpKTsKLQltZW1zZXQocG9y dCArIG0sIDAsIHNpemVvZihzdHJ1Y3QgZXhlY2xpc3RfcG9ydCkpOwotCi0JcmV0dXJuIHBvcnQ7 Ci19Ci0KIHN0YXRpYyBpbmxpbmUgdTMyCiBpbnRlbF9yZWFkX3N0YXR1c19wYWdlKGNvbnN0IHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgaW50IHJlZykKIHsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKaW5kZXggMTIwZjc3YWY0YzM4Li44ZjdiNzMzNjA3 NzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCkBAIC00Njgs NiArNDY4LDEwIEBAIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfZXhlY2xpc3RzKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlHRU1fQlVHX09OKCFpc19wb3dlcl9vZl8yKGV4ZWNsaXN0 c19udW1fcG9ydHMoZXhlY2xpc3RzKSkpOwogCUdFTV9CVUdfT04oZXhlY2xpc3RzX251bV9wb3J0 cyhleGVjbGlzdHMpID4gRVhFQ0xJU1RfTUFYX1BPUlRTKTsKIAorCW1lbXNldChleGVjbGlzdHMt PnBlbmRpbmcsIDAsIHNpemVvZihleGVjbGlzdHMtPnBlbmRpbmcpKTsKKwlleGVjbGlzdHMtPmFj dGl2ZSA9CisJCW1lbXNldChleGVjbGlzdHMtPmluZmxpZ2h0LCAwLCBzaXplb2YoZXhlY2xpc3Rz LT5pbmZsaWdodCkpOworCiAJZXhlY2xpc3RzLT5xdWV1ZV9wcmlvcml0eV9oaW50ID0gSU5UX01J TjsKIAlleGVjbGlzdHMtPnF1ZXVlID0gUkJfUk9PVF9DQUNIRUQ7CiB9CkBAIC0xMTExLDcgKzEx MTUsNyBAQCBib29sIGludGVsX2VuZ2luZV9pc19pZGxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKIAkJcmV0dXJuIHRydWU7CiAKIAkvKiBXYWl0aW5nIHRvIGRyYWluIEVMU1A/ICov Ci0JaWYgKFJFQURfT05DRShlbmdpbmUtPmV4ZWNsaXN0cy5hY3RpdmUpKSB7CisJaWYgKGV4ZWNs aXN0c19hY3RpdmUoJmVuZ2luZS0+ZXhlY2xpc3RzKSkgewogCQlzdHJ1Y3QgdGFza2xldF9zdHJ1 Y3QgKnQgPSAmZW5naW5lLT5leGVjbGlzdHMudGFza2xldDsKIAogCQlzeW5jaHJvbml6ZV9oYXJk aXJxKGVuZ2luZS0+aTkxNS0+ZHJtLmlycSk7CkBAIC0xMTI4LDcgKzExMzIsNyBAQCBib29sIGlu dGVsX2VuZ2luZV9pc19pZGxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJLyog T3RoZXJ3aXNlIGZsdXNoIHRoZSB0YXNrbGV0IGlmIGl0IHdhcyBvbiBhbm90aGVyIGNwdSAqLwog CQl0YXNrbGV0X3VubG9ja193YWl0KHQpOwogCi0JCWlmIChSRUFEX09OQ0UoZW5naW5lLT5leGVj bGlzdHMuYWN0aXZlKSkKKwkJaWYgKGV4ZWNsaXN0c19hY3RpdmUoJmVuZ2luZS0+ZXhlY2xpc3Rz KSkKIAkJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTEzMjUsNiArMTMyOSw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX2VuZ2luZV9wcmludF9yZWdpc3RlcnMoY29uc3Qgc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLAogCX0KIAogCWlmIChIQVNfRVhFQ0xJU1RTKGRldl9wcml2KSkgeworCQlz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICogY29uc3QgKnBvcnQsICpycTsKIAkJY29uc3QgdTMyICpod3Mg PQogCQkJJmVuZ2luZS0+c3RhdHVzX3BhZ2UuYWRkcltJOTE1X0hXU19DU0JfQlVGMF9JTkRFWF07 CiAJCWNvbnN0IHU4IG51bV9lbnRyaWVzID0gZXhlY2xpc3RzLT5jc2Jfc2l6ZTsKQEAgLTEzNTcs MjYgKzEzNjIsMjggQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5naW5lX3ByaW50X3JlZ2lzdGVycyhj b25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJCX0KIAogCQlyY3VfcmVhZF9s b2NrKCk7Ci0JCWZvciAoaWR4ID0gMDsgaWR4IDwgZXhlY2xpc3RzX251bV9wb3J0cyhleGVjbGlz dHMpOyBpZHgrKykgewotCQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Ci0JCQl1bnNpZ25lZCBp bnQgY291bnQ7Ci0KLQkJCXJxID0gcG9ydF91bnBhY2soJmV4ZWNsaXN0cy0+cG9ydFtpZHhdLCAm Y291bnQpOwotCQkJaWYgKHJxKSB7Ci0JCQkJY2hhciBoZHJbODBdOwotCi0JCQkJc25wcmludGYo aGRyLCBzaXplb2YoaGRyKSwKLQkJCQkJICJcdFx0RUxTUFslZF0gY291bnQ9JWQsIHJpbmc6e3N0 YXJ0OiUwOHgsIGh3c3A6JTA4eCwgc2Vxbm86JTA4eH0sIHJxOiAiLAotCQkJCQkgaWR4LCBjb3Vu dCwKLQkJCQkJIGk5MTVfZ2d0dF9vZmZzZXQocnEtPnJpbmctPnZtYSksCi0JCQkJCSBycS0+dGlt ZWxpbmUtPmh3c3Bfb2Zmc2V0LAotCQkJCQkgaHdzcF9zZXFubyhycSkpOwotCQkJCXByaW50X3Jl cXVlc3QobSwgcnEsIGhkcik7Ci0JCQl9IGVsc2UgewotCQkJCWRybV9wcmludGYobSwgIlx0XHRF TFNQWyVkXSBpZGxlXG4iLCBpZHgpOwotCQkJfQorCQlmb3IgKHBvcnQgPSBleGVjbGlzdHMtPmFj dGl2ZTsgKHJxID0gKnBvcnQpOyBwb3J0KyspIHsKKwkJCWNoYXIgaGRyWzgwXTsKKworCQkJc25w cmludGYoaGRyLCBzaXplb2YoaGRyKSwKKwkJCQkgIlx0XHRBY3RpdmVbJWRdIHJpbmc6e3N0YXJ0 OiUwOHgsIGh3c3A6JTA4eCwgc2Vxbm86JTA4eH0sIHJxOiAiLAorCQkJCSAoaW50KShwb3J0IC0g ZXhlY2xpc3RzLT5hY3RpdmUpLAorCQkJCSBpOTE1X2dndHRfb2Zmc2V0KHJxLT5yaW5nLT52bWEp LAorCQkJCSBycS0+dGltZWxpbmUtPmh3c3Bfb2Zmc2V0LAorCQkJCSBod3NwX3NlcW5vKHJxKSk7 CisJCQlwcmludF9yZXF1ZXN0KG0sIHJxLCBoZHIpOworCQl9CisJCWZvciAocG9ydCA9IGV4ZWNs aXN0cy0+cGVuZGluZzsgKHJxID0gKnBvcnQpOyBwb3J0KyspIHsKKwkJCWNoYXIgaGRyWzgwXTsK KworCQkJc25wcmludGYoaGRyLCBzaXplb2YoaGRyKSwKKwkJCQkgIlx0XHRQZW5kaW5nWyVkXSBy aW5nOntzdGFydDolMDh4LCBod3NwOiUwOHgsIHNlcW5vOiUwOHh9LCBycTogIiwKKwkJCQkgKGlu dCkocG9ydCAtIGV4ZWNsaXN0cy0+cGVuZGluZyksCisJCQkJIGk5MTVfZ2d0dF9vZmZzZXQocnEt PnJpbmctPnZtYSksCisJCQkJIHJxLT50aW1lbGluZS0+aHdzcF9vZmZzZXQsCisJCQkJIGh3c3Bf c2Vxbm8ocnEpKTsKKwkJCXByaW50X3JlcXVlc3QobSwgcnEsIGhkcik7CiAJCX0KLQkJZHJtX3By aW50ZihtLCAiXHRcdEhXIGFjdGl2ZT8gMHgleFxuIiwgZXhlY2xpc3RzLT5hY3RpdmUpOwogCQly Y3VfcmVhZF91bmxvY2soKTsKIAl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPiA2KSB7 CiAJCWRybV9wcmludGYobSwgIlx0UFBfRElSX0JBU0U6IDB4JTA4eFxuIiwKQEAgLTE1NDAsMTUg KzE1NDcsMTkgQEAgaW50IGludGVsX2VuYWJsZV9lbmdpbmVfc3RhdHMoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogCX0KIAogCWlmIChlbmdpbmUtPnN0YXRzLmVuYWJsZWQrKyA9PSAw KSB7Ci0JCWNvbnN0IHN0cnVjdCBleGVjbGlzdF9wb3J0ICpwb3J0ID0gZXhlY2xpc3RzLT5wb3J0 OwotCQl1bnNpZ25lZCBpbnQgbnVtX3BvcnRzID0gZXhlY2xpc3RzX251bV9wb3J0cyhleGVjbGlz dHMpOworCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICogY29uc3QgKnBvcnQ7CisJCXN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxOwogCiAJCWVuZ2luZS0+c3RhdHMuZW5hYmxlZF9hdCA9IGt0aW1lX2dldCgp OwogCiAJCS8qIFhYWCBzdWJtaXNzaW9uIG1ldGhvZCBvYmxpdmlvdXM/ICovCi0JCXdoaWxlIChu dW1fcG9ydHMtLSAmJiBwb3J0X2lzc2V0KHBvcnQpKSB7CisJCWZvciAocG9ydCA9IGV4ZWNsaXN0 cy0+YWN0aXZlOyAocnEgPSAqcG9ydCk7IHBvcnQrKykKIAkJCWVuZ2luZS0+c3RhdHMuYWN0aXZl Kys7Ci0JCQlwb3J0Kys7CisKKwkJZm9yIChwb3J0ID0gZXhlY2xpc3RzLT5wZW5kaW5nOyAocnEg PSAqcG9ydCk7IHBvcnQrKykgeworCQkJLyogRXhjbHVkZSBhbnkgY29udGV4dHMgYWxyZWFkeSBj b3VudGVkIGluIGFjdGl2ZSAqLworCQkJaWYgKGludGVsX2NvbnRleHRfaW5mbGlnaHRfY291bnQo cnEtPmh3X2NvbnRleHQpID09IDEpCisJCQkJZW5naW5lLT5zdGF0cy5hY3RpdmUrKzsKIAkJfQog CiAJCWlmIChlbmdpbmUtPnN0YXRzLmFjdGl2ZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZW5naW5lX3R5cGVzLmgKaW5kZXggZTAwNDQzZjUzYjU5Li5kZTQzYmI2MmMyNGEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oCkBAIC0xNjAs NTEgKzE2MCwxMCBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyB7CiAJICovCiAJdTMy IF9faW9tZW0gKmN0cmxfcmVnOwogCi0JLyoqCi0JICogQHBvcnQ6IGV4ZWNsaXN0IHBvcnQgc3Rh dGVzCi0JICoKLQkgKiBGb3IgZWFjaCBoYXJkd2FyZSBFTFNQIChFeGVjTGlzdCBTdWJtaXNzaW9u IFBvcnQpIHdlIGtlZXAKLQkgKiB0cmFjayBvZiB0aGUgbGFzdCByZXF1ZXN0IGFuZCB0aGUgbnVt YmVyIG9mIHRpbWVzIHdlIHN1Ym1pdHRlZAotCSAqIHRoYXQgcG9ydCB0byBody4gV2UgdGhlbiBj b3VudCB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBodyByZXBvcnRzCi0JICogYSBjb250ZXh0IGNv bXBsZXRpb24gb3IgcHJlZW1wdGlvbi4gQXMgb25seSBvbmUgY29udGV4dCBjYW4KLQkgKiBiZSBh Y3RpdmUgb24gaHcsIHdlIGxpbWl0IHJlc3VibWlzc2lvbiBvZiBjb250ZXh0IHRvIHBvcnRbMF0u IFRoaXMKLQkgKiBpcyBjYWxsZWQgTGl0ZSBSZXN0b3JlLCBvZiB0aGUgY29udGV4dC4KLQkgKi8K LQlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCB7Ci0JCS8qKgotCQkgKiBAcmVxdWVzdF9jb3VudDogY29t YmluZWQgcmVxdWVzdCBhbmQgc3VibWlzc2lvbiBjb3VudAotCQkgKi8KLQkJc3RydWN0IGk5MTVf cmVxdWVzdCAqcmVxdWVzdF9jb3VudDsKLSNkZWZpbmUgRVhFQ0xJU1RfQ09VTlRfQklUUyAyCi0j ZGVmaW5lIHBvcnRfcmVxdWVzdChwKSBwdHJfbWFza19iaXRzKChwKS0+cmVxdWVzdF9jb3VudCwg RVhFQ0xJU1RfQ09VTlRfQklUUykKLSNkZWZpbmUgcG9ydF9jb3VudChwKSBwdHJfdW5tYXNrX2Jp dHMoKHApLT5yZXF1ZXN0X2NvdW50LCBFWEVDTElTVF9DT1VOVF9CSVRTKQotI2RlZmluZSBwb3J0 X3BhY2socnEsIGNvdW50KSBwdHJfcGFja19iaXRzKHJxLCBjb3VudCwgRVhFQ0xJU1RfQ09VTlRf QklUUykKLSNkZWZpbmUgcG9ydF91bnBhY2socCwgY291bnQpIHB0cl91bnBhY2tfYml0cygocCkt PnJlcXVlc3RfY291bnQsIGNvdW50LCBFWEVDTElTVF9DT1VOVF9CSVRTKQotI2RlZmluZSBwb3J0 X3NldChwLCBwYWNrZWQpICgocCktPnJlcXVlc3RfY291bnQgPSAocGFja2VkKSkKLSNkZWZpbmUg cG9ydF9pc3NldChwKSAoKHApLT5yZXF1ZXN0X2NvdW50KQotI2RlZmluZSBwb3J0X2luZGV4KHAs IGV4ZWNsaXN0cykgKChwKSAtIChleGVjbGlzdHMpLT5wb3J0KQotCi0JCS8qKgotCQkgKiBAY29u dGV4dF9pZDogY29udGV4dCBJRCBmb3IgcG9ydAotCQkgKi8KLQkJR0VNX0RFQlVHX0RFQ0wodTMy IGNvbnRleHRfaWQpOwotCiAjZGVmaW5lIEVYRUNMSVNUX01BWF9QT1JUUyAyCi0JfSBwb3J0W0VY RUNMSVNUX01BWF9QT1JUU107Ci0KLQkvKioKLQkgKiBAYWN0aXZlOiBpcyB0aGUgSFcgYWN0aXZl PyBXZSBjb25zaWRlciB0aGUgSFcgYXMgYWN0aXZlIGFmdGVyCi0JICogc3VibWl0dGluZyBhbnkg Y29udGV4dCBmb3IgZXhlY3V0aW9uIGFuZCB1bnRpbCB3ZSBoYXZlIHNlZW4gdGhlCi0JICogbGFz dCBjb250ZXh0IGNvbXBsZXRpb24gZXZlbnQuIEFmdGVyIHRoYXQsIHdlIGRvIG5vdCBleHBlY3Qg YW55Ci0JICogbW9yZSBldmVudHMgdW50aWwgd2Ugc3VibWl0LCBhbmQgc28gY2FuIHBhcmsgdGhl IEhXLgotCSAqCi0JICogQXMgd2UgaGF2ZSBhIHNtYWxsIG51bWJlciBvZiBkaWZmZXJlbnQgc291 cmNlcyBmcm9tIHdoaWNoIHdlIGZlZWQKLQkgKiB0aGUgSFcsIHdlIHRyYWNrIHRoZSBzdGF0ZSBv ZiBlYWNoIGluc2lkZSBhIHNpbmdsZSBiaXRmaWVsZC4KLQkgKi8KLQl1bnNpZ25lZCBpbnQgYWN0 aXZlOwotI2RlZmluZSBFWEVDTElTVFNfQUNUSVZFX1VTRVIgMAotI2RlZmluZSBFWEVDTElTVFNf QUNUSVZFX1BSRUVNUFQgMQotI2RlZmluZSBFWEVDTElTVFNfQUNUSVZFX0hXQUNLIDIKKwlzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICogY29uc3QgKmFjdGl2ZTsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpp bmZsaWdodFtFWEVDTElTVF9NQVhfUE9SVFMgKyAxIC8qIHNlbnRpbmVsICovXTsKKwlzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpwZW5kaW5nW0VYRUNMSVNUX01BWF9QT1JUUyArIDFdOwogCiAJLyoqCiAJ ICogQHBvcnRfbWFzazogbnVtYmVyIG9mIGV4ZWNsaXN0IHBvcnRzIC0gMQpAQCAtMjQ1LDExICsy MDQsNiBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyB7CiAJICovCiAJdTMyICpjc2Jf c3RhdHVzOwogCi0JLyoqCi0JICogQHByZWVtcHRfY29tcGxldGVfc3RhdHVzOiBleHBlY3RlZCBD U0IgdXBvbiBjb21wbGV0aW5nIHByZWVtcHRpb24KLQkgKi8KLQl1MzIgcHJlZW1wdF9jb21wbGV0 ZV9zdGF0dXM7Ci0KIAkvKioKIAkgKiBAY3NiX3NpemU6IGNvbnRleHQgc3RhdHVzIGJ1ZmZlciBG SUZPIHNpemUKIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKaW5kZXggZWNhOTk3 ZTg3ZmU0Li4xMzc5NDg5MjdjNjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCkBA IC0xNjEsNiArMTYxLDggQEAKICNkZWZpbmUgR0VOOF9DVFhfU1RBVFVTX0NPTVBMRVRFRF9NQVNL IFwKIAkgKEdFTjhfQ1RYX1NUQVRVU19DT01QTEVURSB8IEdFTjhfQ1RYX1NUQVRVU19QUkVFTVBU RUQpCiAKKyNkZWZpbmUgQ1RYX0RFU0NfRk9SQ0VfUkVTVE9SRSBCSVRfVUxMKDIpCisKIC8qIFR5 cGljYWwgc2l6ZSBvZiB0aGUgYXZlcmFnZSByZXF1ZXN0ICgyIHBpcGVjb250cm9scyBhbmQgYSBN SV9CQikgKi8KICNkZWZpbmUgRVhFQ0xJU1RTX1JFUVVFU1RfU0laRSA2NCAvKiBieXRlcyAqLwog I2RlZmluZSBXQV9UQUlMX0RXT1JEUyAyCkBAIC0yMjEsNiArMjIzLDE0IEBAIHN0YXRpYyB2b2lk IGV4ZWNsaXN0c19pbml0X3JlZ19zdGF0ZSh1MzIgKnJlZ19zdGF0ZSwKIAkJCQkgICAgIHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCQkgICAgIHN0cnVjdCBpbnRlbF9yaW5nICpy aW5nKTsKIAorc3RhdGljIGlubGluZSB1MzIgaW50ZWxfaHdzX3ByZWVtcHRfYWRkcmVzcyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJcmV0dXJuIChpOTE1X2dndHRfb2Zmc2V0 KGVuZ2luZS0+c3RhdHVzX3BhZ2Uudm1hKSArCisJCUk5MTVfR0VNX0hXU19QUkVFTVBUX0FERFIp OworfQorCisjZGVmaW5lIHJpbmdfcGF1c2UoRSkgKChFKS0+c3RhdHVzX3BhZ2UuYWRkcltJOTE1 X0dFTV9IV1NfUFJFRU1QVF0pCisKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfcHJpb2xpc3Qg KnRvX3ByaW9saXN0KHN0cnVjdCByYl9ub2RlICpyYikKIHsKIAlyZXR1cm4gcmJfZW50cnkocmIs IHN0cnVjdCBpOTE1X3ByaW9saXN0LCBub2RlKTsKQEAgLTI3MSwxMiArMjgxLDYgQEAgc3RhdGlj IGlubGluZSBib29sIG5lZWRfcHJlZW1wdChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCiB7CiAJaW50IGxhc3RfcHJpbzsKIAotCWlmICghZW5naW5lLT5wcmVlbXB0X2NvbnRl eHQpCi0JCXJldHVybiBmYWxzZTsKLQotCWlmIChpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSkK LQkJcmV0dXJuIGZhbHNlOwotCiAJLyoKIAkgKiBDaGVjayBpZiB0aGUgY3VycmVudCBwcmlvcml0 eSBoaW50IG1lcml0cyBhIHByZWVtcHRpb24gYXR0ZW1wdC4KIAkgKgpAQCAtMzM4LDkgKzM0Miw2 IEBAIF9fbWF5YmVfdW51c2VkIHN0YXRpYyBpbmxpbmUgYm9vbAogYXNzZXJ0X3ByaW9yaXR5X3F1 ZXVlKGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnByZXYsCiAJCSAgICAgIGNvbnN0IHN0cnVj dCBpOTE1X3JlcXVlc3QgKm5leHQpCiB7Ci0JY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9leGVj bGlzdHMgKmV4ZWNsaXN0cyA9Ci0JCSZwcmV2LT5lbmdpbmUtPmV4ZWNsaXN0czsKLQogCS8qCiAJ ICogV2l0aG91dCBwcmVlbXB0aW9uLCB0aGUgcHJldiBtYXkgcmVmZXIgdG8gdGhlIHN0aWxsIGFj dGl2ZSBlbGVtZW50CiAJICogd2hpY2ggd2UgcmVmdXNlIHRvIGxldCBnby4KQEAgLTM0OCw3ICsz NDksNyBAQCBhc3NlcnRfcHJpb3JpdHlfcXVldWUoY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAq cHJldiwKIAkgKiBFdmVuIHdpdGggcHJlZW1wdGlvbiwgdGhlcmUgYXJlIHRpbWVzIHdoZW4gd2Ug dGhpbmsgaXQgaXMgYmV0dGVyIG5vdAogCSAqIHRvIHByZWVtcHQgYW5kIGxlYXZlIGFuIG9zdGVu c2libHkgbG93ZXIgcHJpb3JpdHkgcmVxdWVzdCBpbiBmbGlnaHQuCiAJICovCi0JaWYgKHBvcnRf cmVxdWVzdChleGVjbGlzdHMtPnBvcnQpID09IHByZXYpCisJaWYgKGk5MTVfcmVxdWVzdF9pc19h Y3RpdmUocHJldikpCiAJCXJldHVybiB0cnVlOwogCiAJcmV0dXJuIHJxX3ByaW8ocHJldikgPj0g cnFfcHJpbyhuZXh0KTsKQEAgLTQ0MiwxMyArNDQzLDExIEBAIF9fdW53aW5kX2luY29tcGxldGVf cmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpvd25lcjsKIAogCQlpZiAoaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpCi0J CQlicmVhazsKKwkJCWNvbnRpbnVlOyAvKiBYWFggKi8KIAogCQlfX2k5MTVfcmVxdWVzdF91bnN1 Ym1pdChycSk7CiAJCXVud2luZF93YV90YWlsKHJxKTsKIAotCQlHRU1fQlVHX09OKHJxLT5od19j b250ZXh0LT5pbmZsaWdodCk7Ci0KIAkJLyoKIAkJICogUHVzaCB0aGUgcmVxdWVzdCBiYWNrIGlu dG8gdGhlIHF1ZXVlIGZvciBsYXRlciByZXN1Ym1pc3Npb24uCiAJCSAqIElmIHRoaXMgcmVxdWVz dCBpcyBub3QgbmF0aXZlIHRvIHRoaXMgcGh5c2ljYWwgZW5naW5lIChpLmUuCkBAIC01MDAsMzIg KzQ5OSwzMiBAQCBleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxLCB1bnNpZ25lZCBsb25nIHN0YXR1cykKIAkJCQkgICBzdGF0dXMsIHJxKTsKIH0K IAotaW5saW5lIHZvaWQKLWV4ZWNsaXN0c191c2VyX2JlZ2luKHN0cnVjdCBpbnRlbF9lbmdpbmVf ZXhlY2xpc3RzICpleGVjbGlzdHMsCi0JCSAgICAgY29uc3Qgc3RydWN0IGV4ZWNsaXN0X3BvcnQg KnBvcnQpCitzdGF0aWMgaW5saW5lIHN0cnVjdCBpOTE1X3JlcXVlc3QgKgorZXhlY2xpc3RzX3Nj aGVkdWxlX2luKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBpbnQgaWR4KQogewotCWV4ZWNsaXN0 c19zZXRfYWN0aXZlX29uY2UoZXhlY2xpc3RzLCBFWEVDTElTVFNfQUNUSVZFX1VTRVIpOwotfQor CXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IHJxLT5od19jb250ZXh0OworCWludCBjb3VudDsK IAotaW5saW5lIHZvaWQKLWV4ZWNsaXN0c191c2VyX2VuZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4 ZWNsaXN0cyAqZXhlY2xpc3RzKQotewotCWV4ZWNsaXN0c19jbGVhcl9hY3RpdmUoZXhlY2xpc3Rz LCBFWEVDTElTVFNfQUNUSVZFX1VTRVIpOwotfQorCXRyYWNlX2k5MTVfcmVxdWVzdF9pbihycSwg aWR4KTsKIAotc3RhdGljIGlubGluZSB2b2lkCi1leGVjbGlzdHNfY29udGV4dF9zY2hlZHVsZV9p bihzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKLXsKLQlHRU1fQlVHX09OKHJxLT5od19jb250ZXh0 LT5pbmZsaWdodCk7CisJY291bnQgPSBpbnRlbF9jb250ZXh0X2luZmxpZ2h0X2NvdW50KGNlKTsK KwlpZiAoIWNvdW50KSB7CisJCWludGVsX2NvbnRleHRfZ2V0KGNlKTsKKwkJY2UtPmluZmxpZ2h0 ID0gcnEtPmVuZ2luZTsKKworCQlleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHJxLCBJ TlRFTF9DT05URVhUX1NDSEVEVUxFX0lOKTsKKwkJaW50ZWxfZW5naW5lX2NvbnRleHRfaW4oY2Ut PmluZmxpZ2h0KTsKKwl9CisKKwlpbnRlbF9jb250ZXh0X2luZmxpZ2h0X2luYyhjZSk7CisJR0VN X0JVR19PTihpbnRlbF9jb250ZXh0X2luZmxpZ2h0KGNlKSAhPSBycS0+ZW5naW5lKTsKIAotCWV4 ZWNsaXN0c19jb250ZXh0X3N0YXR1c19jaGFuZ2UocnEsIElOVEVMX0NPTlRFWFRfU0NIRURVTEVf SU4pOwotCWludGVsX2VuZ2luZV9jb250ZXh0X2luKHJxLT5lbmdpbmUpOwotCXJxLT5od19jb250 ZXh0LT5pbmZsaWdodCA9IHJxLT5lbmdpbmU7CisJcmV0dXJuIGk5MTVfcmVxdWVzdF9nZXQocnEp OwogfQogCi1zdGF0aWMgdm9pZCBraWNrX3NpYmxpbmdzKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx KQorc3RhdGljIHZvaWQga2lja19zaWJsaW5ncyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgc3Ry dWN0IGludGVsX2NvbnRleHQgKmNlKQogewotCXN0cnVjdCB2aXJ0dWFsX2VuZ2luZSAqdmUgPSB0 b192aXJ0dWFsX2VuZ2luZShycS0+aHdfY29udGV4dC0+ZW5naW5lKTsKKwlzdHJ1Y3QgdmlydHVh bF9lbmdpbmUgKnZlID0gY29udGFpbmVyX29mKGNlLCB0eXBlb2YoKnZlKSwgY29udGV4dCk7CiAJ c3RydWN0IGk5MTVfcmVxdWVzdCAqbmV4dCA9IFJFQURfT05DRSh2ZS0+cmVxdWVzdCk7CiAKIAlp ZiAobmV4dCAmJiBuZXh0LT5leGVjdXRpb25fbWFzayAmIH5ycS0+ZXhlY3V0aW9uX21hc2spCkBA IC01MzMsMjkgKzUzMiw0MiBAQCBzdGF0aWMgdm9pZCBraWNrX3NpYmxpbmdzKHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxKQogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQKLWV4ZWNsaXN0c19jb250ZXh0 X3NjaGVkdWxlX291dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdW5zaWduZWQgbG9uZyBzdGF0 dXMpCitleGVjbGlzdHNfc2NoZWR1bGVfb3V0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQogewot CXJxLT5od19jb250ZXh0LT5pbmZsaWdodCA9IE5VTEw7Ci0JaW50ZWxfZW5naW5lX2NvbnRleHRf b3V0KHJxLT5lbmdpbmUpOwotCWV4ZWNsaXN0c19jb250ZXh0X3N0YXR1c19jaGFuZ2UocnEsIHN0 YXR1cyk7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gcnEtPmh3X2NvbnRleHQ7CisKKwlH RU1fQlVHX09OKCFpbnRlbF9jb250ZXh0X2luZmxpZ2h0X2NvdW50KGNlKSk7CisKIAl0cmFjZV9p OTE1X3JlcXVlc3Rfb3V0KHJxKTsKIAotCS8qCi0JICogSWYgdGhpcyBpcyBwYXJ0IG9mIGEgdmly dHVhbCBlbmdpbmUsIGl0cyBuZXh0IHJlcXVlc3QgbWF5IGhhdmUKLQkgKiBiZWVuIGJsb2NrZWQg d2FpdGluZyBmb3IgYWNjZXNzIHRvIHRoZSBhY3RpdmUgY29udGV4dC4gV2UgaGF2ZQotCSAqIHRv IGtpY2sgYWxsIHRoZSBzaWJsaW5ncyBhZ2FpbiBpbiBjYXNlIHdlIG5lZWQgdG8gc3dpdGNoIChl LmcuCi0JICogdGhlIG5leHQgcmVxdWVzdCBpcyBub3QgcnVubmFibGUgb24gdGhpcyBlbmdpbmUp LiBIb3BlZnVsbHksCi0JICogd2Ugd2lsbCBhbHJlYWR5IGhhdmUgc3VibWl0dGVkIHRoZSBuZXh0 IHJlcXVlc3QgYmVmb3JlIHRoZQotCSAqIHRhc2tsZXQgcnVucyBhbmQgZG8gbm90IG5lZWQgdG8g cmVidWlsZCBlYWNoIHZpcnR1YWwgdHJlZQotCSAqIGFuZCBraWNrIGV2ZXJ5b25lIGFnYWluLgot CSAqLwotCWlmIChycS0+ZW5naW5lICE9IHJxLT5od19jb250ZXh0LT5lbmdpbmUpCi0JCWtpY2tf c2libGluZ3MocnEpOworCWludGVsX2NvbnRleHRfaW5mbGlnaHRfZGVjKGNlKTsKKwlpZiAoIWlu dGVsX2NvbnRleHRfaW5mbGlnaHRfY291bnQoY2UpKSB7CisJCWludGVsX2VuZ2luZV9jb250ZXh0 X291dChjZS0+aW5mbGlnaHQpOworCQlleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHJx LCBJTlRFTF9DT05URVhUX1NDSEVEVUxFX09VVCk7CisKKwkJY2UtPmluZmxpZ2h0ID0gTlVMTDsK KwkJaW50ZWxfY29udGV4dF9wdXQoY2UpOworCisJCS8qCisJCSAqIElmIHRoaXMgaXMgcGFydCBv ZiBhIHZpcnR1YWwgZW5naW5lLCBpdHMgbmV4dCByZXF1ZXN0IG1heQorCQkgKiBoYXZlIGJlZW4g YmxvY2tlZCB3YWl0aW5nIGZvciBhY2Nlc3MgdG8gdGhlIGFjdGl2ZSBjb250ZXh0LgorCQkgKiBX ZSBoYXZlIHRvIGtpY2sgYWxsIHRoZSBzaWJsaW5ncyBhZ2FpbiBpbiBjYXNlIHdlIG5lZWQgdG8K KwkJICogc3dpdGNoIChlLmcuIHRoZSBuZXh0IHJlcXVlc3QgaXMgbm90IHJ1bm5hYmxlIG9uIHRo aXMKKwkJICogZW5naW5lKS4gSG9wZWZ1bGx5LCB3ZSB3aWxsIGFscmVhZHkgaGF2ZSBzdWJtaXR0 ZWQgdGhlIG5leHQKKwkJICogcmVxdWVzdCBiZWZvcmUgdGhlIHRhc2tsZXQgcnVucyBhbmQgZG8g bm90IG5lZWQgdG8gcmVidWlsZAorCQkgKiBlYWNoIHZpcnR1YWwgdHJlZSBhbmQga2ljayBldmVy eW9uZSBhZ2Fpbi4KKwkJICovCisJCWlmIChycS0+ZW5naW5lICE9IGNlLT5lbmdpbmUpCisJCQlr aWNrX3NpYmxpbmdzKHJxLCBjZSk7CisJfQorCisJaTkxNV9yZXF1ZXN0X3B1dChycSk7CiB9CiAK LXN0YXRpYyB1NjQgZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0KHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxKQorc3RhdGljIHU2NCBleGVjbGlzdHNfdXBkYXRlX2NvbnRleHQoY29uc3Qgc3RydWN0IGk5 MTVfcmVxdWVzdCAqcnEpCiB7CiAJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gcnEtPmh3X2Nv bnRleHQ7CisJdTY0IGRlc2M7CiAKIAljZS0+bHJjX3JlZ19zdGF0ZVtDVFhfUklOR19UQUlMICsg MV0gPQogCQlpbnRlbF9yaW5nX3NldF90YWlsKHJxLT5yaW5nLCBycS0+dGFpbCk7CkBAIC01NzYs NyArNTg4LDExIEBAIHN0YXRpYyB1NjQgZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0KHN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxKQogCSAqIHdtYikuCiAJICovCiAJbWIoKTsKLQlyZXR1cm4gY2UtPmxy Y19kZXNjOworCisJZGVzYyA9IGNlLT5scmNfZGVzYzsKKwljZS0+bHJjX2Rlc2MgJj0gfkNUWF9E RVNDX0ZPUkNFX1JFU1RPUkU7CisKKwlyZXR1cm4gZGVzYzsKIH0KIAogc3RhdGljIGlubGluZSB2 b2lkIHdyaXRlX2Rlc2Moc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0cywg dTY0IGRlc2MsIHUzMiBwb3J0KQpAQCAtNTkwLDEyICs2MDYsNTQgQEAgc3RhdGljIGlubGluZSB2 b2lkIHdyaXRlX2Rlc2Moc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0cywg dTY0IGRlc2MKIAl9CiB9CiAKK3N0YXRpYyBfX21heWJlX3VudXNlZCB2b2lkCit0cmFjZV9wb3J0 cyhjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZXhlY2xpc3RzLAorCSAgICBj b25zdCBjaGFyICptc2csCisJICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKiBjb25zdCAqcG9ydHMp Cit7CisJY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0KKwkJY29udGFpbmVy X29mKGV4ZWNsaXN0cywgdHlwZW9mKCplbmdpbmUpLCBleGVjbGlzdHMpOworCisJR0VNX1RSQUNF KCIlczogJXMgeyAlbGx4OiVsbGQlcywgJWxseDolbGxkIH1cbiIsCisJCSAgZW5naW5lLT5uYW1l LCBtc2csCisJCSAgcG9ydHNbMF0tPmZlbmNlLmNvbnRleHQsCisJCSAgcG9ydHNbMF0tPmZlbmNl LnNlcW5vLAorCQkgIGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocG9ydHNbMF0pID8gIiEiIDoKKwkJ ICBpOTE1X3JlcXVlc3Rfc3RhcnRlZChwb3J0c1swXSkgPyAiKiIgOgorCQkgICIiLAorCQkgIHBv cnRzWzFdID8gcG9ydHNbMV0tPmZlbmNlLmNvbnRleHQgOiAwLAorCQkgIHBvcnRzWzFdID8gcG9y dHNbMV0tPmZlbmNlLnNlcW5vIDogMCk7Cit9CisKK3N0YXRpYyBfX21heWJlX3VudXNlZCBib29s Cithc3NlcnRfcGVuZGluZ192YWxpZChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0 cyAqZXhlY2xpc3RzLAorCQkgICAgIGNvbnN0IGNoYXIgKm1zZykKK3sKKwlzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICogY29uc3QgKnBvcnQsICpycTsKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBO VUxMOworCisJdHJhY2VfcG9ydHMoZXhlY2xpc3RzLCBtc2csIGV4ZWNsaXN0cy0+cGVuZGluZyk7 CisKKwlpZiAoZXhlY2xpc3RzLT5wZW5kaW5nW2V4ZWNsaXN0c19udW1fcG9ydHMoZXhlY2xpc3Rz KV0pCisJCXJldHVybiBmYWxzZTsKKworCWZvciAocG9ydCA9IGV4ZWNsaXN0cy0+cGVuZGluZzsg KHJxID0gKnBvcnQpOyBwb3J0KyspIHsKKwkJaWYgKGNlID09IHJxLT5od19jb250ZXh0KQorCQkJ cmV0dXJuIGZhbHNlOworCisJCWNlID0gcnEtPmh3X2NvbnRleHQ7CisJfQorCisJcmV0dXJuIGNl OworfQorCiBzdGF0aWMgdm9pZCBleGVjbGlzdHNfc3VibWl0X3BvcnRzKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZXhl Y2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOwotCXN0cnVjdCBleGVjbGlzdF9wb3J0ICpwb3J0 ID0gZXhlY2xpc3RzLT5wb3J0OwogCXVuc2lnbmVkIGludCBuOwogCisJR0VNX0JVR19PTighYXNz ZXJ0X3BlbmRpbmdfdmFsaWQoZXhlY2xpc3RzLCAic3VibWl0IikpOworCiAJLyoKIAkgKiBXZSBj YW4gc2tpcCBhY3F1aXJpbmcgaW50ZWxfcnVudGltZV9wbV9nZXQoKSBoZXJlIGFzIGl0IHdhcyB0 YWtlbgogCSAqIG9uIG91ciBiZWhhbGYgYnkgdGhlIHJlcXVlc3QgKHNlZSBpOTE1X2dlbV9tYXJr X2J1c3koKSkgYW5kIGl0IHdpbGwKQEAgLTYxMywzOCArNjcxLDE2IEBAIHN0YXRpYyB2b2lkIGV4 ZWNsaXN0c19zdWJtaXRfcG9ydHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCSAq IG9mIGVsc3EgZW50cmllcywga2VlcCB0aGlzIGluIG1pbmQgYmVmb3JlIGNoYW5naW5nIHRoZSBs b29wIGJlbG93LgogCSAqLwogCWZvciAobiA9IGV4ZWNsaXN0c19udW1fcG9ydHMoZXhlY2xpc3Rz KTsgbi0tOyApIHsKLQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Ci0JCXVuc2lnbmVkIGludCBj b3VudDsKLQkJdTY0IGRlc2M7CisJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxID0gZXhlY2xpc3Rz LT5wZW5kaW5nW25dOwogCi0JCXJxID0gcG9ydF91bnBhY2soJnBvcnRbbl0sICZjb3VudCk7Ci0J CWlmIChycSkgewotCQkJR0VNX0JVR19PTihjb3VudCA+ICFuKTsKLQkJCWlmICghY291bnQrKykK LQkJCQlleGVjbGlzdHNfY29udGV4dF9zY2hlZHVsZV9pbihycSk7Ci0JCQlwb3J0X3NldCgmcG9y dFtuXSwgcG9ydF9wYWNrKHJxLCBjb3VudCkpOwotCQkJZGVzYyA9IGV4ZWNsaXN0c191cGRhdGVf Y29udGV4dChycSk7Ci0JCQlHRU1fREVCVUdfRVhFQyhwb3J0W25dLmNvbnRleHRfaWQgPSB1cHBl cl8zMl9iaXRzKGRlc2MpKTsKLQotCQkJR0VNX1RSQUNFKCIlcyBpblslZF06ICBjdHg9JWQuJWQs IGZlbmNlICVsbHg6JWxsZCAoY3VycmVudCAlZCksIHByaW89JWRcbiIsCi0JCQkJICBlbmdpbmUt Pm5hbWUsIG4sCi0JCQkJICBwb3J0W25dLmNvbnRleHRfaWQsIGNvdW50LAotCQkJCSAgcnEtPmZl bmNlLmNvbnRleHQsIHJxLT5mZW5jZS5zZXFubywKLQkJCQkgIGh3c3Bfc2Vxbm8ocnEpLAotCQkJ CSAgcnFfcHJpbyhycSkpOwotCQl9IGVsc2UgewotCQkJR0VNX0JVR19PTighbik7Ci0JCQlkZXNj ID0gMDsKLQkJfQotCi0JCXdyaXRlX2Rlc2MoZXhlY2xpc3RzLCBkZXNjLCBuKTsKKwkJd3JpdGVf ZGVzYyhleGVjbGlzdHMsCisJCQkgICBycSA/IGV4ZWNsaXN0c191cGRhdGVfY29udGV4dChycSkg OiAwLAorCQkJICAgbik7CiAJfQogCiAJLyogd2UgbmVlZCB0byBtYW51YWxseSBsb2FkIHRoZSBz dWJtaXQgcXVldWUgKi8KIAlpZiAoZXhlY2xpc3RzLT5jdHJsX3JlZykKIAkJd3JpdGVsKEVMX0NU UkxfTE9BRCwgZXhlY2xpc3RzLT5jdHJsX3JlZyk7Ci0KLQlleGVjbGlzdHNfY2xlYXJfYWN0aXZl KGV4ZWNsaXN0cywgRVhFQ0xJU1RTX0FDVElWRV9IV0FDSyk7CiB9CiAKIHN0YXRpYyBib29sIGN0 eF9zaW5nbGVfcG9ydF9zdWJtaXNzaW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkK QEAgLTY2OCw2ICs3MDQsNyBAQCBzdGF0aWMgYm9vbCBjYW5fbWVyZ2VfY3R4KGNvbnN0IHN0cnVj dCBpbnRlbF9jb250ZXh0ICpwcmV2LAogc3RhdGljIGJvb2wgY2FuX21lcmdlX3JxKGNvbnN0IHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnByZXYsCiAJCQkgY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAq bmV4dCkKIHsKKwlHRU1fQlVHX09OKHByZXYgPT0gbmV4dCk7CiAJR0VNX0JVR19PTighYXNzZXJ0 X3ByaW9yaXR5X3F1ZXVlKHByZXYsIG5leHQpKTsKIAogCWlmICghY2FuX21lcmdlX2N0eChwcmV2 LT5od19jb250ZXh0LCBuZXh0LT5od19jb250ZXh0KSkKQEAgLTY3Niw1OCArNzEzLDYgQEAgc3Rh dGljIGJvb2wgY2FuX21lcmdlX3JxKGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnByZXYsCiAJ cmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIHBvcnRfYXNzaWduKHN0cnVjdCBleGVjbGlz dF9wb3J0ICpwb3J0LCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKLXsKLQlHRU1fQlVHX09OKHJx ID09IHBvcnRfcmVxdWVzdChwb3J0KSk7Ci0KLQlpZiAocG9ydF9pc3NldChwb3J0KSkKLQkJaTkx NV9yZXF1ZXN0X3B1dChwb3J0X3JlcXVlc3QocG9ydCkpOwotCi0JcG9ydF9zZXQocG9ydCwgcG9y dF9wYWNrKGk5MTVfcmVxdWVzdF9nZXQocnEpLCBwb3J0X2NvdW50KHBvcnQpKSk7Ci19Ci0KLXN0 YXRpYyB2b2lkIGluamVjdF9wcmVlbXB0X2NvbnRleHQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQotewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICpleGVjbGlzdHMgPSAm ZW5naW5lLT5leGVjbGlzdHM7Ci0Jc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gZW5naW5lLT5w cmVlbXB0X2NvbnRleHQ7Ci0JdW5zaWduZWQgaW50IG47Ci0KLQlHRU1fQlVHX09OKGV4ZWNsaXN0 cy0+cHJlZW1wdF9jb21wbGV0ZV9zdGF0dXMgIT0KLQkJICAgdXBwZXJfMzJfYml0cyhjZS0+bHJj X2Rlc2MpKTsKLQotCS8qCi0JICogU3dpdGNoIHRvIG91ciBlbXB0eSBwcmVlbXB0IGNvbnRleHQg c28KLQkgKiB0aGUgc3RhdGUgb2YgdGhlIEdQVSBpcyBrbm93biAoaWRsZSkuCi0JICovCi0JR0VN X1RSQUNFKCIlc1xuIiwgZW5naW5lLT5uYW1lKTsKLQlmb3IgKG4gPSBleGVjbGlzdHNfbnVtX3Bv cnRzKGV4ZWNsaXN0cyk7IC0tbjsgKQotCQl3cml0ZV9kZXNjKGV4ZWNsaXN0cywgMCwgbik7Ci0K LQl3cml0ZV9kZXNjKGV4ZWNsaXN0cywgY2UtPmxyY19kZXNjLCBuKTsKLQotCS8qIHdlIG5lZWQg dG8gbWFudWFsbHkgbG9hZCB0aGUgc3VibWl0IHF1ZXVlICovCi0JaWYgKGV4ZWNsaXN0cy0+Y3Ry bF9yZWcpCi0JCXdyaXRlbChFTF9DVFJMX0xPQUQsIGV4ZWNsaXN0cy0+Y3RybF9yZWcpOwotCi0J ZXhlY2xpc3RzX2NsZWFyX2FjdGl2ZShleGVjbGlzdHMsIEVYRUNMSVNUU19BQ1RJVkVfSFdBQ0sp OwotCWV4ZWNsaXN0c19zZXRfYWN0aXZlKGV4ZWNsaXN0cywgRVhFQ0xJU1RTX0FDVElWRV9QUkVF TVBUKTsKLQotCSh2b2lkKUk5MTVfU0VMRlRFU1RfT05MWShleGVjbGlzdHMtPnByZWVtcHRfaGFu Zy5jb3VudCsrKTsKLX0KLQotc3RhdGljIHZvaWQgY29tcGxldGVfcHJlZW1wdF9jb250ZXh0KHN0 cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICpleGVjbGlzdHMpCi17Ci0JR0VNX0JVR19PTigh ZXhlY2xpc3RzX2lzX2FjdGl2ZShleGVjbGlzdHMsIEVYRUNMSVNUU19BQ1RJVkVfUFJFRU1QVCkp OwotCi0JaWYgKGluamVjdF9wcmVlbXB0X2hhbmcoZXhlY2xpc3RzKSkKLQkJcmV0dXJuOwotCi0J ZXhlY2xpc3RzX2NhbmNlbF9wb3J0X3JlcXVlc3RzKGV4ZWNsaXN0cyk7Ci0JX191bndpbmRfaW5j b21wbGV0ZV9yZXF1ZXN0cyhjb250YWluZXJfb2YoZXhlY2xpc3RzLAotCQkJCQkJICBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzLAotCQkJCQkJICBleGVjbGlzdHMpKTsKLX0KLQogc3RhdGljIHZvaWQg dmlydHVhbF91cGRhdGVfcmVnaXN0ZXJfb2Zmc2V0cyh1MzIgKnJlZ3MsCiAJCQkJCSAgICBzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CkBAIC03OTIsNyArNzc3LDcgQEAgc3RhdGlj IGJvb2wgdmlydHVhbF9tYXRjaGVzKGNvbnN0IHN0cnVjdCB2aXJ0dWFsX2VuZ2luZSAqdmUsCiAJ ICogd2UgcmV1c2UgdGhlIHJlZ2lzdGVyIG9mZnNldHMpLiBUaGlzIGlzIGEgdmVyeSBzbWFsbAog CSAqIGh5c3RlcnNpcyBvbiB0aGUgZ3JlZWR5IHNlZWxjdGlvbiBhbGdvcml0aG0uCiAJICovCi0J aW5mbGlnaHQgPSBSRUFEX09OQ0UodmUtPmNvbnRleHQuaW5mbGlnaHQpOworCWluZmxpZ2h0ID0g aW50ZWxfY29udGV4dF9pbmZsaWdodCgmdmUtPmNvbnRleHQpOwogCWlmIChpbmZsaWdodCAmJiBp bmZsaWdodCAhPSBlbmdpbmUpCiAJCXJldHVybiBmYWxzZTsKIApAQCAtODE1LDEzICs4MDAsMjMg QEAgc3RhdGljIHZvaWQgdmlydHVhbF94ZmVyX2JyZWFkY3J1bWJzKHN0cnVjdCB2aXJ0dWFsX2Vu Z2luZSAqdmUsCiAJc3Bpbl91bmxvY2soJm9sZC0+YnJlYWRjcnVtYnMuaXJxX2xvY2spOwogfQog CitzdGF0aWMgc3RydWN0IGk5MTVfcmVxdWVzdCAqCitsYXN0X2FjdGl2ZShjb25zdCBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZXhlY2xpc3RzKQoreworCXN0cnVjdCBpOTE1X3JlcXVl c3QgKiBjb25zdCAqbGFzdCA9IGV4ZWNsaXN0cy0+YWN0aXZlOworCisJd2hpbGUgKCpsYXN0ICYm IGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQoKmxhc3QpKQorCQlsYXN0Kys7CisKKwlyZXR1cm4gKmxh c3Q7Cit9CisKIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0 IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKLQlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAq cG9ydCA9IGV4ZWNsaXN0cy0+cG9ydDsKLQljb25zdCBzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqIGNv bnN0IGxhc3RfcG9ydCA9Ci0JCSZleGVjbGlzdHMtPnBvcnRbZXhlY2xpc3RzLT5wb3J0X21hc2td OwotCXN0cnVjdCBpOTE1X3JlcXVlc3QgKmxhc3QgPSBwb3J0X3JlcXVlc3QocG9ydCk7CisJc3Ry dWN0IGk5MTVfcmVxdWVzdCAqKnBvcnQgPSBleGVjbGlzdHMtPnBlbmRpbmc7CisJc3RydWN0IGk5 MTVfcmVxdWVzdCAqKiBjb25zdCBsYXN0X3BvcnQgPSBwb3J0ICsgZXhlY2xpc3RzLT5wb3J0X21h c2s7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqbGFzdDsKIAlzdHJ1Y3QgcmJfbm9kZSAqcmI7CiAJ Ym9vbCBzdWJtaXQgPSBmYWxzZTsKIApAQCAtODY3LDY1ICs4NjIsNzIgQEAgc3RhdGljIHZvaWQg ZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQlicmVh azsKIAl9CiAKKwkvKgorCSAqIElmIHRoZSBxdWV1ZSBpcyBoaWdoZXIgcHJpb3JpdHkgdGhhbiB0 aGUgbGFzdAorCSAqIHJlcXVlc3QgaW4gdGhlIGN1cnJlbnRseSBhY3RpdmUgY29udGV4dCwgc3Vi bWl0IGFmcmVzaC4KKwkgKiBXZSB3aWxsIHJlc3VibWl0IGFnYWluIGFmdGVyd2FyZHMgaW4gY2Fz ZSB3ZSBuZWVkIHRvIHNwbGl0CisJICogdGhlIGFjdGl2ZSBjb250ZXh0IHRvIGludGVyamVjdCB0 aGUgcHJlZW1wdGlvbiByZXF1ZXN0LAorCSAqIGkuZS4gd2Ugd2lsbCByZXRyaWdnZXIgcHJlZW1w dGlvbiBmb2xsb3dpbmcgdGhlIGFjayBpbiBjYXNlCisJICogb2YgdHJvdWJsZS4KKwkgKi8KKwls YXN0ID0gbGFzdF9hY3RpdmUoZXhlY2xpc3RzKTsKIAlpZiAobGFzdCkgewotCQkvKgotCQkgKiBE b24ndCByZXN1Ym1pdCBvciBzd2l0Y2ggdW50aWwgYWxsIG91dHN0YW5kaW5nCi0JCSAqIHByZWVt cHRpb25zIChsaXRlLXJlc3RvcmUpIGFyZSBzZWVuLiBUaGVuIHdlCi0JCSAqIGtub3cgdGhlIG5l eHQgcHJlZW1wdGlvbiBzdGF0dXMgd2Ugc2VlIGNvcnJlc3BvbmRzCi0JCSAqIHRvIHRoaXMgRUxT UCB1cGRhdGUuCi0JCSAqLwotCQlHRU1fQlVHX09OKCFleGVjbGlzdHNfaXNfYWN0aXZlKGV4ZWNs aXN0cywKLQkJCQkJCUVYRUNMSVNUU19BQ1RJVkVfVVNFUikpOwotCQlHRU1fQlVHX09OKCFwb3J0 X2NvdW50KCZwb3J0WzBdKSk7Ci0KLQkJLyoKLQkJICogSWYgd2Ugd3JpdGUgdG8gRUxTUCBhIHNl Y29uZCB0aW1lIGJlZm9yZSB0aGUgSFcgaGFzIGhhZAotCQkgKiBhIGNoYW5jZSB0byByZXNwb25k IHRvIHRoZSBwcmV2aW91cyB3cml0ZSwgd2UgY2FuIGNvbmZ1c2UKLQkJICogdGhlIEhXIGFuZCBo aXQgInVuZGVmaW5lZCBiZWhhdmlvdXIiLiBBZnRlciB3cml0aW5nIHRvIEVMU1AsCi0JCSAqIHdl IG11c3QgdGhlbiB3YWl0IHVudGlsIHdlIHNlZSBhIGNvbnRleHQtc3dpdGNoIGV2ZW50IGZyb20K LQkJICogdGhlIEhXIHRvIGluZGljYXRlIHRoYXQgaXQgaGFzIGhhZCBhIGNoYW5jZSB0byByZXNw b25kLgotCQkgKi8KLQkJaWYgKCFleGVjbGlzdHNfaXNfYWN0aXZlKGV4ZWNsaXN0cywgRVhFQ0xJ U1RTX0FDVElWRV9IV0FDSykpCi0JCQlyZXR1cm47Ci0KIAkJaWYgKG5lZWRfcHJlZW1wdChlbmdp bmUsIGxhc3QsIHJiKSkgewotCQkJaW5qZWN0X3ByZWVtcHRfY29udGV4dChlbmdpbmUpOwotCQkJ cmV0dXJuOwotCQl9CisJCQlHRU1fVFJBQ0UoIiVzOiBwcmVlbXB0aW5nIGxhc3Q9JWxseDolbGxk LCBwcmlvPSVkLCBoaW50PSVkXG4iLAorCQkJCSAgZW5naW5lLT5uYW1lLAorCQkJCSAgbGFzdC0+ ZmVuY2UuY29udGV4dCwKKwkJCQkgIGxhc3QtPmZlbmNlLnNlcW5vLAorCQkJCSAgbGFzdC0+c2No ZWQuYXR0ci5wcmlvcml0eSwKKwkJCQkgIGV4ZWNsaXN0cy0+cXVldWVfcHJpb3JpdHlfaGludCk7 CisJCQkvKgorCQkJICogRG9uJ3QgbGV0IHRoZSBSSU5HX0hFQUQgYWR2YW5jZSBwYXN0IHRoZSBi cmVhZGNydW1iCisJCQkgKiBhcyB3ZSB1bndpbmQgKGFuZCB1bnRpbCB3ZSByZXN1Ym1pdCkgc28g dGhhdCB3ZSBkbworCQkJICogbm90IGFjY2lkZW50YWxseSB0ZWxsIGl0IHRvIGdvIGJhY2t3YXJk cy4KKwkJCSAqLworCQkJcmluZ19wYXVzZShlbmdpbmUpID0gMTsKIAotCQkvKgotCQkgKiBJbiB0 aGVvcnksIHdlIGNvdWxkIGNvYWxlc2NlIG1vcmUgcmVxdWVzdHMgb250bwotCQkgKiB0aGUgc2Vj b25kIHBvcnQgKHRoZSBmaXJzdCBwb3J0IGlzIGFjdGl2ZSwgd2l0aAotCQkgKiBubyBwcmVlbXB0 aW9ucyBwZW5kaW5nKS4gSG93ZXZlciwgdGhhdCBtZWFucyB3ZQotCQkgKiB0aGVuIGhhdmUgdG8g ZGVhbCB3aXRoIHRoZSBwb3NzaWJsZSBsaXRlLXJlc3RvcmUKLQkJICogb2YgdGhlIHNlY29uZCBw b3J0IChhcyB3ZSBzdWJtaXQgdGhlIEVMU1AsIHRoZXJlCi0JCSAqIG1heSBiZSBhIGNvbnRleHQt c3dpdGNoKSBidXQgYWxzbyB3ZSBtYXkgY29tcGxldGUKLQkJICogdGhlIHJlc3VibWlzc2lvbiBi ZWZvcmUgdGhlIGNvbnRleHQtc3dpdGNoLiBFcmdvLAotCQkgKiBjb2FsZXNjaW5nIG9udG8gdGhl IHNlY29uZCBwb3J0IHdpbGwgY2F1c2UgYQotCQkgKiBwcmVlbXB0aW9uIGV2ZW50LCBidXQgd2Ug Y2Fubm90IHByZWRpY3Qgd2hldGhlcgotCQkgKiB0aGF0IHdpbGwgYWZmZWN0IHBvcnRbMF0gb3Ig cG9ydFsxXS4KLQkJICoKLQkJICogSWYgdGhlIHNlY29uZCBwb3J0IGlzIGFscmVhZHkgYWN0aXZl LCB3ZSBjYW4gd2FpdAotCQkgKiB1bnRpbCB0aGUgbmV4dCBjb250ZXh0LXN3aXRjaCBiZWZvcmUg Y29udGVtcGxhdGluZwotCQkgKiBuZXcgcmVxdWVzdHMuIFRoZSBHUFUgd2lsbCBiZSBidXN5IGFu ZCB3ZSBzaG91bGQgYmUKLQkJICogYWJsZSB0byByZXN1Ym1pdCB0aGUgbmV3IEVMU1AgYmVmb3Jl IGl0IGlkbGVzLAotCQkgKiBhdm9pZGluZyBwaXBlbGluZSBidWJibGVzIChtb21lbnRhcnkgcGF1 c2VzIHdoZXJlCi0JCSAqIHRoZSBkcml2ZXIgaXMgdW5hYmxlIHRvIGtlZXAgdXAgdGhlIHN1cHBs eSBvZiBuZXcKLQkJICogd29yaykuIEhvd2V2ZXIsIHdlIGhhdmUgdG8gZG91YmxlIGNoZWNrIHRo YXQgdGhlCi0JCSAqIHByaW9yaXRpZXMgb2YgdGhlIHBvcnRzIGhhdmVuJ3QgYmVlbiBzd2l0Y2gu Ci0JCSAqLwotCQlpZiAocG9ydF9jb3VudCgmcG9ydFsxXSkpCi0JCQlyZXR1cm47CisJCQkvKgor CQkJICogTm90ZSB0aGF0IHdlIGhhdmUgbm90IHN0b3BwZWQgdGhlIEdQVSBhdCB0aGlzIHBvaW50 LAorCQkJICogc28gd2UgYXJlIHVud2luZGluZyB0aGUgaW5jb21wbGV0ZSByZXF1ZXN0cyBhcyB0 aGV5CisJCQkgKiByZW1haW4gaW5mbGlnaHQgYW5kIHNvIGJ5IHRoZSB0aW1lIHdlIGRvIGNvbXBs ZXRlCisJCQkgKiB0aGUgcHJlZW1wdGlvbiwgc29tZSBvZiB0aGUgdW53b3VuZCByZXF1ZXN0cyBt YXkKKwkJCSAqIGNvbXBsZXRlIQorCQkJICovCisJCQlfX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVl c3RzKGVuZ2luZSk7CiAKLQkJLyoKLQkJICogV2FJZGxlTGl0ZVJlc3RvcmU6YmR3LHNrbAotCQkg KiBBcHBseSB0aGUgd2EgTk9PUHMgdG8gcHJldmVudAotCQkgKiByaW5nOkhFQUQgPT0gcnE6VEFJ TCBhcyB3ZSByZXN1Ym1pdCB0aGUKLQkJICogcmVxdWVzdC4gU2VlIGdlbjhfZW1pdF9maW5pX2Jy ZWFkY3J1bWIoKSBmb3IKLQkJICogd2hlcmUgd2UgcHJlcGFyZSB0aGUgcGFkZGluZyBhZnRlciB0 aGUKLQkJICogZW5kIG9mIHRoZSByZXF1ZXN0LgotCQkgKi8KLQkJbGFzdC0+dGFpbCA9IGxhc3Qt PndhX3RhaWw7CisJCQkvKgorCQkJICogSWYgd2UgbmVlZCB0byByZXR1cm4gdG8gdGhlIHByZWVt cHRlZCBjb250ZXh0LCB3ZQorCQkJICogbmVlZCB0byBza2lwIHRoZSBsaXRlLXJlc3RvcmUgYW5k IGZvcmNlIGl0IHRvCisJCQkgKiByZWxvYWQgdGhlIFJJTkdfVEFJTC4gT3RoZXJ3aXNlLCB0aGUg SFcgaGFzIGEKKwkJCSAqIHRlbmRlbmN5IHRvIGlnbm9yZSB1cyByZXdpbmRpbmcgdGhlIFRBSUwg dG8gdGhlCisJCQkgKiBlbmQgb2YgYW4gZWFybGllciByZXF1ZXN0LgorCQkJICovCisJCQlsYXN0 LT5od19jb250ZXh0LT5scmNfZGVzYyB8PSBDVFhfREVTQ19GT1JDRV9SRVNUT1JFOworCQkJbGFz dCA9IE5VTEw7CisJCX0gZWxzZSB7CisJCQkvKgorCQkJICogT3RoZXJ3aXNlIGlmIHdlIGFscmVh ZHkgaGF2ZSBhIHJlcXVlc3QgcGVuZGluZworCQkJICogZm9yIGV4ZWN1dGlvbiBhZnRlciB0aGUg Y3VycmVudCBvbmUsIHdlIGNhbgorCQkJICoganVzdCB3YWl0IHVudGlsIHRoZSBuZXh0IENTIGV2 ZW50IGJlZm9yZQorCQkJICogcXVldWluZyBtb3JlLiBJbiBlaXRoZXIgY2FzZSB3ZSB3aWxsIGZv cmNlIGEKKwkJCSAqIGxpdGUtcmVzdG9yZSBwcmVlbXB0aW9uIGV2ZW50LCBidXQgaWYgd2Ugd2Fp dAorCQkJICogd2UgaG9wZWZ1bGx5IGNvYWxlc2NlIHNldmVyYWwgdXBkYXRlcyBpbnRvIGEgc2lu Z2xlCisJCQkgKiBzdWJtaXNzaW9uLgorCQkJICovCisJCQlpZiAoIWxpc3RfaXNfbGFzdCgmbGFz dC0+c2NoZWQubGluaywKKwkJCQkJICAmZW5naW5lLT5hY3RpdmUucmVxdWVzdHMpKQorCQkJCXJl dHVybjsKKworCQkJLyoKKwkJCSAqIFdhSWRsZUxpdGVSZXN0b3JlOmJkdyxza2wKKwkJCSAqIEFw cGx5IHRoZSB3YSBOT09QcyB0byBwcmV2ZW50CisJCQkgKiByaW5nOkhFQUQgPT0gcnE6VEFJTCBh cyB3ZSByZXN1Ym1pdCB0aGUKKwkJCSAqIHJlcXVlc3QuIFNlZSBnZW44X2VtaXRfZmluaV9icmVh ZGNydW1iKCkgZm9yCisJCQkgKiB3aGVyZSB3ZSBwcmVwYXJlIHRoZSBwYWRkaW5nIGFmdGVyIHRo ZQorCQkJICogZW5kIG9mIHRoZSByZXF1ZXN0LgorCQkJICovCisJCQlsYXN0LT50YWlsID0gbGFz dC0+d2FfdGFpbDsKKwkJfQogCX0KIAogCXdoaWxlIChyYikgeyAvKiBYWFggdmlydHVhbCBpcyBh bHdheXMgdGFraW5nIHByZWNlZGVuY2UgKi8KQEAgLTk1NSw5ICs5NTcsMjQgQEAgc3RhdGljIHZv aWQgZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQkJ CWNvbnRpbnVlOwogCQkJfQogCisJCQlpZiAoaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpIHsK KwkJCQl2ZS0+cmVxdWVzdCA9IE5VTEw7CisJCQkJdmUtPmJhc2UuZXhlY2xpc3RzLnF1ZXVlX3By aW9yaXR5X2hpbnQgPSBJTlRfTUlOOworCQkJCXJiX2VyYXNlX2NhY2hlZChyYiwgJmV4ZWNsaXN0 cy0+dmlydHVhbCk7CisJCQkJUkJfQ0xFQVJfTk9ERShyYik7CisKKwkJCQlycS0+ZW5naW5lID0g ZW5naW5lOworCQkJCV9faTkxNV9yZXF1ZXN0X3N1Ym1pdChycSk7CisKKwkJCQlzcGluX3VubG9j aygmdmUtPmJhc2UuYWN0aXZlLmxvY2spOworCisJCQkJcmIgPSByYl9maXJzdF9jYWNoZWQoJmV4 ZWNsaXN0cy0+dmlydHVhbCk7CisJCQkJY29udGludWU7CisJCQl9CisKIAkJCWlmIChsYXN0ICYm ICFjYW5fbWVyZ2VfcnEobGFzdCwgcnEpKSB7CiAJCQkJc3Bpbl91bmxvY2soJnZlLT5iYXNlLmFj dGl2ZS5sb2NrKTsKLQkJCQlyZXR1cm47IC8qIGxlYXZlIHRoaXMgcnEgZm9yIGFub3RoZXIgZW5n aW5lICovCisJCQkJcmV0dXJuOyAvKiBsZWF2ZSB0aGlzIGZvciBhbm90aGVyICovCiAJCQl9CiAK IAkJCUdFTV9UUkFDRSgiJXM6IHZpcnR1YWwgcnE9JWxseDolbGxkJXMsIG5ldyBlbmdpbmU/ICVz XG4iLApAQCAtMTAwNiw5ICsxMDIzLDEwIEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVl KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJCX0KIAogCQkJX19pOTE1X3JlcXVl c3Rfc3VibWl0KHJxKTsKLQkJCXRyYWNlX2k5MTVfcmVxdWVzdF9pbihycSwgcG9ydF9pbmRleChw b3J0LCBleGVjbGlzdHMpKTsKLQkJCXN1Ym1pdCA9IHRydWU7Ci0JCQlsYXN0ID0gcnE7CisJCQlp ZiAoIWk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEpKSB7CisJCQkJc3VibWl0ID0gdHJ1ZTsKKwkJ CQlsYXN0ID0gcnE7CisJCQl9CiAJCX0KIAogCQlzcGluX3VubG9jaygmdmUtPmJhc2UuYWN0aXZl LmxvY2spOwpAQCAtMTAyMSw2ICsxMDM5LDkgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2RlcXVl dWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQlpbnQgaTsKIAogCQlwcmlvbGlz dF9mb3JfZWFjaF9yZXF1ZXN0X2NvbnN1bWUocnEsIHJuLCBwLCBpKSB7CisJCQlpZiAoaTkxNV9y ZXF1ZXN0X2NvbXBsZXRlZChycSkpCisJCQkJZ290byBza2lwOworCiAJCQkvKgogCQkJICogQ2Fu IHdlIGNvbWJpbmUgdGhpcyByZXF1ZXN0IHdpdGggdGhlIGN1cnJlbnQgcG9ydD8KIAkJCSAqIEl0 IGhhcyB0byBiZSB0aGUgc2FtZSBjb250ZXh0L3JpbmdidWZmZXIgYW5kIG5vdApAQCAtMTA2MCwx OSArMTA4MSwxNCBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiAJCQkJICAgIGN0eF9zaW5nbGVfcG9ydF9zdWJtaXNzaW9uKHJx LT5od19jb250ZXh0KSkKIAkJCQkJZ290byBkb25lOwogCi0KLQkJCQlpZiAoc3VibWl0KQotCQkJ CQlwb3J0X2Fzc2lnbihwb3J0LCBsYXN0KTsKKwkJCQkqcG9ydCA9IGV4ZWNsaXN0c19zY2hlZHVs ZV9pbihsYXN0LCBwb3J0IC0gZXhlY2xpc3RzLT5wZW5kaW5nKTsKIAkJCQlwb3J0Kys7Ci0KLQkJ CQlHRU1fQlVHX09OKHBvcnRfaXNzZXQocG9ydCkpOwogCQkJfQogCi0JCQlfX2k5MTVfcmVxdWVz dF9zdWJtaXQocnEpOwotCQkJdHJhY2VfaTkxNV9yZXF1ZXN0X2luKHJxLCBwb3J0X2luZGV4KHBv cnQsIGV4ZWNsaXN0cykpOwotCiAJCQlsYXN0ID0gcnE7CiAJCQlzdWJtaXQgPSB0cnVlOworc2tp cDoKKwkJCV9faTkxNV9yZXF1ZXN0X3N1Ym1pdChycSk7CiAJCX0KIAogCQlyYl9lcmFzZV9jYWNo ZWQoJnAtPm5vZGUsICZleGVjbGlzdHMtPnF1ZXVlKTsKQEAgLTEwOTcsNTQgKzExMTMsMzAgQEAg c3RhdGljIHZvaWQgZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQogCSAqIGludGVycnVwdCBmb3Igc2Vjb25kYXJ5IHBvcnRzKS4KIAkgKi8KIAlleGVjbGlz dHMtPnF1ZXVlX3ByaW9yaXR5X2hpbnQgPSBxdWV1ZV9wcmlvKGV4ZWNsaXN0cyk7CisJR0VNX1RS QUNFKCIlczogcXVldWVfcHJpb3JpdHlfaGludDolZCwgc3VibWl0OiVzXG4iLAorCQkgIGVuZ2lu ZS0+bmFtZSwgZXhlY2xpc3RzLT5xdWV1ZV9wcmlvcml0eV9oaW50LAorCQkgIHllc25vKHN1Ym1p dCkpOwogCiAJaWYgKHN1Ym1pdCkgewotCQlwb3J0X2Fzc2lnbihwb3J0LCBsYXN0KTsKKwkJKnBv cnQgPSBleGVjbGlzdHNfc2NoZWR1bGVfaW4obGFzdCwgcG9ydCAtIGV4ZWNsaXN0cy0+cGVuZGlu Zyk7CisJCW1lbXNldChwb3J0ICsgMSwgMCwgKGxhc3RfcG9ydCAtIHBvcnQpICogc2l6ZW9mKCpw b3J0KSk7CiAJCWV4ZWNsaXN0c19zdWJtaXRfcG9ydHMoZW5naW5lKTsKIAl9Ci0KLQkvKiBXZSBt dXN0IGFsd2F5cyBrZWVwIHRoZSBiZWFzdCBmZWQgaWYgd2UgaGF2ZSB3b3JrIHBpbGVkIHVwICov Ci0JR0VNX0JVR19PTihyYl9maXJzdF9jYWNoZWQoJmV4ZWNsaXN0cy0+cXVldWUpICYmCi0JCSAg ICFwb3J0X2lzc2V0KGV4ZWNsaXN0cy0+cG9ydCkpOwotCi0JLyogUmUtZXZhbHVhdGUgdGhlIGV4 ZWN1dGluZyBjb250ZXh0IHNldHVwIGFmdGVyIGVhY2ggcHJlZW1wdGl2ZSBraWNrICovCi0JaWYg KGxhc3QpCi0JCWV4ZWNsaXN0c191c2VyX2JlZ2luKGV4ZWNsaXN0cywgZXhlY2xpc3RzLT5wb3J0 KTsKLQotCS8qIElmIHRoZSBlbmdpbmUgaXMgbm93IGlkbGUsIHNvIHNob3VsZCBiZSB0aGUgZmxh ZzsgYW5kIHZpY2UgdmVyc2EuICovCi0JR0VNX0JVR19PTihleGVjbGlzdHNfaXNfYWN0aXZlKCZl bmdpbmUtPmV4ZWNsaXN0cywKLQkJCQkgICAgICAgRVhFQ0xJU1RTX0FDVElWRV9VU0VSKSA9PQot CQkgICAhcG9ydF9pc3NldChlbmdpbmUtPmV4ZWNsaXN0cy5wb3J0KSk7CiB9CiAKIHZvaWQKIGV4 ZWNsaXN0c19jYW5jZWxfcG9ydF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0 cyAqIGNvbnN0IGV4ZWNsaXN0cykKIHsKLQlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9ydCA9IGV4 ZWNsaXN0cy0+cG9ydDsKLQl1bnNpZ25lZCBpbnQgbnVtX3BvcnRzID0gZXhlY2xpc3RzX251bV9w b3J0cyhleGVjbGlzdHMpOwotCi0Jd2hpbGUgKG51bV9wb3J0cy0tICYmIHBvcnRfaXNzZXQocG9y dCkpIHsKLQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEgPSBwb3J0X3JlcXVlc3QocG9ydCk7Ci0K LQkJR0VNX1RSQUNFKCIlczpwb3J0JXUgZmVuY2UgJWxseDolbGxkLCAoY3VycmVudCAlZClcbiIs Ci0JCQkgIHJxLT5lbmdpbmUtPm5hbWUsCi0JCQkgICh1bnNpZ25lZCBpbnQpKHBvcnQgLSBleGVj bGlzdHMtPnBvcnQpLAotCQkJICBycS0+ZmVuY2UuY29udGV4dCwgcnEtPmZlbmNlLnNlcW5vLAot CQkJICBod3NwX3NlcW5vKHJxKSk7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqIGNvbnN0ICpwb3J0 LCAqcnE7CiAKLQkJR0VNX0JVR19PTighZXhlY2xpc3RzLT5hY3RpdmUpOwotCQlleGVjbGlzdHNf Y29udGV4dF9zY2hlZHVsZV9vdXQocnEsCi0JCQkJCSAgICAgICBpOTE1X3JlcXVlc3RfY29tcGxl dGVkKHJxKSA/Ci0JCQkJCSAgICAgICBJTlRFTF9DT05URVhUX1NDSEVEVUxFX09VVCA6Ci0JCQkJ CSAgICAgICBJTlRFTF9DT05URVhUX1NDSEVEVUxFX1BSRUVNUFRFRCk7CisJZm9yIChwb3J0ID0g ZXhlY2xpc3RzLT5wZW5kaW5nOyAocnEgPSAqcG9ydCk7IHBvcnQrKykKKwkJZXhlY2xpc3RzX3Nj aGVkdWxlX291dChycSk7CisJbWVtc2V0KGV4ZWNsaXN0cy0+cGVuZGluZywgMCwgc2l6ZW9mKGV4 ZWNsaXN0cy0+cGVuZGluZykpOwogCi0JCWk5MTVfcmVxdWVzdF9wdXQocnEpOwotCi0JCW1lbXNl dChwb3J0LCAwLCBzaXplb2YoKnBvcnQpKTsKLQkJcG9ydCsrOwotCX0KLQotCWV4ZWNsaXN0c19j bGVhcl9hbGxfYWN0aXZlKGV4ZWNsaXN0cyk7CisJZm9yIChwb3J0ID0gZXhlY2xpc3RzLT5hY3Rp dmU7IChycSA9ICpwb3J0KTsgcG9ydCsrKQorCQlleGVjbGlzdHNfc2NoZWR1bGVfb3V0KHJxKTsK KwlleGVjbGlzdHMtPmFjdGl2ZSA9CisJCW1lbXNldChleGVjbGlzdHMtPmluZmxpZ2h0LCAwLCBz aXplb2YoZXhlY2xpc3RzLT5pbmZsaWdodCkpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQKQEAg LTExNjMsNyArMTE1NSw2IEBAIHJlc2V0X2luX3Byb2dyZXNzKGNvbnN0IHN0cnVjdCBpbnRlbF9l bmdpbmVfZXhlY2xpc3RzICpleGVjbGlzdHMpCiBzdGF0aWMgdm9pZCBwcm9jZXNzX2NzYihzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGludGVsX2VuZ2luZV9leGVj bGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7Ci0Jc3RydWN0IGV4 ZWNsaXN0X3BvcnQgKnBvcnQgPSBleGVjbGlzdHMtPnBvcnQ7CiAJY29uc3QgdTMyICogY29uc3Qg YnVmID0gZXhlY2xpc3RzLT5jc2Jfc3RhdHVzOwogCWNvbnN0IHU4IG51bV9lbnRyaWVzID0gZXhl Y2xpc3RzLT5jc2Jfc2l6ZTsKIAl1OCBoZWFkLCB0YWlsOwpAQCAtMTE5Nyw5ICsxMTg4LDcgQEAg c3RhdGljIHZvaWQgcHJvY2Vzc19jc2Ioc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog CXJtYigpOwogCiAJZG8gewotCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKIAkJdW5zaWduZWQg aW50IHN0YXR1czsKLQkJdW5zaWduZWQgaW50IGNvdW50OwogCiAJCWlmICgrK2hlYWQgPT0gbnVt X2VudHJpZXMpCiAJCQloZWFkID0gMDsKQEAgLTEyMjIsNjggKzEyMTEsMzcgQEAgc3RhdGljIHZv aWQgcHJvY2Vzc19jc2Ioc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQkgKiBzdGF0 dXMgbm90aWZpZXIuCiAJCSAqLwogCi0JCUdFTV9UUkFDRSgiJXMgY3NiWyVkXTogc3RhdHVzPTB4 JTA4eDoweCUwOHgsIGFjdGl2ZT0weCV4XG4iLAorCQlHRU1fVFJBQ0UoIiVzIGNzYlslZF06IHN0 YXR1cz0weCUwOHg6MHglMDh4XG4iLAogCQkJICBlbmdpbmUtPm5hbWUsIGhlYWQsCi0JCQkgIGJ1 ZlsyICogaGVhZCArIDBdLCBidWZbMiAqIGhlYWQgKyAxXSwKLQkJCSAgZXhlY2xpc3RzLT5hY3Rp dmUpOworCQkJICBidWZbMiAqIGhlYWQgKyAwXSwgYnVmWzIgKiBoZWFkICsgMV0pOwogCiAJCXN0 YXR1cyA9IGJ1ZlsyICogaGVhZF07Ci0JCWlmIChzdGF0dXMgJiAoR0VOOF9DVFhfU1RBVFVTX0lE TEVfQUNUSVZFIHwKLQkJCSAgICAgIEdFTjhfQ1RYX1NUQVRVU19QUkVFTVBURUQpKQotCQkJZXhl Y2xpc3RzX3NldF9hY3RpdmUoZXhlY2xpc3RzLAotCQkJCQkgICAgIEVYRUNMSVNUU19BQ1RJVkVf SFdBQ0spOwotCQlpZiAoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX0FDVElWRV9JRExFKQotCQkJ ZXhlY2xpc3RzX2NsZWFyX2FjdGl2ZShleGVjbGlzdHMsCi0JCQkJCSAgICAgICBFWEVDTElTVFNf QUNUSVZFX0hXQUNLKTsKLQotCQlpZiAoIShzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfQ09NUExF VEVEX01BU0spKQotCQkJY29udGludWU7Ci0KLQkJLyogV2Ugc2hvdWxkIG5ldmVyIGdldCBhIENP TVBMRVRFRCB8IElETEVfQUNUSVZFISAqLwotCQlHRU1fQlVHX09OKHN0YXR1cyAmIEdFTjhfQ1RY X1NUQVRVU19JRExFX0FDVElWRSk7CisJCWlmIChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfSURM RV9BQ1RJVkUpIHsKK3Byb21vdGU6CisJCQlHRU1fQlVHX09OKCFhc3NlcnRfcGVuZGluZ192YWxp ZChleGVjbGlzdHMsICJwcm9tb3RlIikpOworCQkJZXhlY2xpc3RzLT5hY3RpdmUgPQorCQkJCW1l bWNweShleGVjbGlzdHMtPmluZmxpZ2h0LAorCQkJCSAgICAgICBleGVjbGlzdHMtPnBlbmRpbmcs CisJCQkJICAgICAgIGV4ZWNsaXN0c19udW1fcG9ydHMoZXhlY2xpc3RzKSAqCisJCQkJICAgICAg IHNpemVvZigqZXhlY2xpc3RzLT5wZW5kaW5nKSk7CisJCQlleGVjbGlzdHMtPnBlbmRpbmdbMF0g PSBOVUxMOwogCi0JCWlmIChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfQ09NUExFVEUgJiYKLQkJ ICAgIGJ1ZlsyKmhlYWQgKyAxXSA9PSBleGVjbGlzdHMtPnByZWVtcHRfY29tcGxldGVfc3RhdHVz KSB7Ci0JCQlHRU1fVFJBQ0UoIiVzIHByZWVtcHQtaWRsZVxuIiwgZW5naW5lLT5uYW1lKTsKLQkJ CWNvbXBsZXRlX3ByZWVtcHRfY29udGV4dChleGVjbGlzdHMpOwotCQkJY29udGludWU7Ci0JCX0K KwkJCWlmICghaW5qZWN0X3ByZWVtcHRfaGFuZyhleGVjbGlzdHMpKQorCQkJCXJpbmdfcGF1c2Uo ZW5naW5lKSA9IDA7CisJCX0gZWxzZSBpZiAoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX1BSRUVN UFRFRCkgeworCQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqIGNvbnN0ICpwb3J0ID0gZXhlY2xpc3Rz LT5hY3RpdmU7CiAKLQkJaWYgKHN0YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19QUkVFTVBURUQgJiYK LQkJICAgIGV4ZWNsaXN0c19pc19hY3RpdmUoZXhlY2xpc3RzLAotCQkJCQlFWEVDTElTVFNfQUNU SVZFX1BSRUVNUFQpKQotCQkJY29udGludWU7CisJCQl0cmFjZV9wb3J0cyhleGVjbGlzdHMsICJw cmVlbXB0ZWQiLCBleGVjbGlzdHMtPmFjdGl2ZSk7CiAKLQkJR0VNX0JVR19PTighZXhlY2xpc3Rz X2lzX2FjdGl2ZShleGVjbGlzdHMsCi0JCQkJCQlFWEVDTElTVFNfQUNUSVZFX1VTRVIpKTsKKwkJ CXdoaWxlICgqcG9ydCkKKwkJCQlleGVjbGlzdHNfc2NoZWR1bGVfb3V0KCpwb3J0KyspOwogCi0J CXJxID0gcG9ydF91bnBhY2socG9ydCwgJmNvdW50KTsKLQkJR0VNX1RSQUNFKCIlcyBvdXRbMF06 IGN0eD0lZC4lZCwgZmVuY2UgJWxseDolbGxkIChjdXJyZW50ICVkKSwgcHJpbz0lZFxuIiwKLQkJ CSAgZW5naW5lLT5uYW1lLAotCQkJICBwb3J0LT5jb250ZXh0X2lkLCBjb3VudCwKLQkJCSAgcnEg PyBycS0+ZmVuY2UuY29udGV4dCA6IDAsCi0JCQkgIHJxID8gcnEtPmZlbmNlLnNlcW5vIDogMCwK LQkJCSAgcnEgPyBod3NwX3NlcW5vKHJxKSA6IDAsCi0JCQkgIHJxID8gcnFfcHJpbyhycSkgOiAw KTsKKwkJCWdvdG8gcHJvbW90ZTsKKwkJfSBlbHNlIGlmICgqZXhlY2xpc3RzLT5hY3RpdmUpIHsK KwkJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxID0gKmV4ZWNsaXN0cy0+YWN0aXZlKys7CiAKLQkJ LyogQ2hlY2sgdGhlIGNvbnRleHQvZGVzYyBpZCBmb3IgdGhpcyBldmVudCBtYXRjaGVzICovCi0J CUdFTV9ERUJVR19CVUdfT04oYnVmWzIgKiBoZWFkICsgMV0gIT0gcG9ydC0+Y29udGV4dF9pZCk7 Ci0KLQkJR0VNX0JVR19PTihjb3VudCA9PSAwKTsKLQkJaWYgKC0tY291bnQgPT0gMCkgewotCQkJ LyoKLQkJCSAqIE9uIHRoZSBmaW5hbCBldmVudCBjb3JyZXNwb25kaW5nIHRvIHRoZQotCQkJICog c3VibWlzc2lvbiBvZiB0aGlzIGNvbnRleHQsIHdlIGV4cGVjdCBlaXRoZXIKLQkJCSAqIGFuIGVs ZW1lbnQtc3dpdGNoIGV2ZW50IG9yIGEgY29tcGxldGlvbgotCQkJICogZXZlbnQgKGFuZCBvbiBj b21wbGV0aW9uLCB0aGUgYWN0aXZlLWlkbGUKLQkJCSAqIG1hcmtlcikuIE5vIG1vcmUgcHJlZW1w dGlvbnMsIGxpdGUtcmVzdG9yZQotCQkJICogb3Igb3RoZXJ3aXNlLgotCQkJICovCi0JCQlHRU1f QlVHX09OKHN0YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19QUkVFTVBURUQpOwotCQkJR0VNX0JVR19P Tihwb3J0X2lzc2V0KCZwb3J0WzFdKSAmJgotCQkJCSAgICEoc3RhdHVzICYgR0VOOF9DVFhfU1RB VFVTX0VMRU1FTlRfU1dJVENIKSk7Ci0JCQlHRU1fQlVHX09OKCFwb3J0X2lzc2V0KCZwb3J0WzFd KSAmJgotCQkJCSAgICEoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX0FDVElWRV9JRExFKSk7CisJ CQl0cmFjZV9wb3J0cyhleGVjbGlzdHMsICJjb21wbGV0ZWQiLAorCQkJCSAgICBleGVjbGlzdHMt PmFjdGl2ZSAtIDEpOwogCiAJCQkvKgogCQkJICogV2UgcmVseSBvbiB0aGUgaGFyZHdhcmUgYmVp bmcgc3Ryb25nbHkKQEAgLTEyOTIsMjEgKzEyNTAsMTAgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19j c2Ioc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQkJICogdXNlciBpbnRlcnJ1cHQg YW5kIENTQiBpcyBwcm9jZXNzZWQuCiAJCQkgKi8KIAkJCUdFTV9CVUdfT04oIWk5MTVfcmVxdWVz dF9jb21wbGV0ZWQocnEpKTsKKwkJCWV4ZWNsaXN0c19zY2hlZHVsZV9vdXQocnEpOwogCi0JCQll eGVjbGlzdHNfY29udGV4dF9zY2hlZHVsZV9vdXQocnEsCi0JCQkJCQkgICAgICAgSU5URUxfQ09O VEVYVF9TQ0hFRFVMRV9PVVQpOwotCQkJaTkxNV9yZXF1ZXN0X3B1dChycSk7Ci0KLQkJCUdFTV9U UkFDRSgiJXMgY29tcGxldGVkIGN0eD0lZFxuIiwKLQkJCQkgIGVuZ2luZS0+bmFtZSwgcG9ydC0+ Y29udGV4dF9pZCk7Ci0KLQkJCXBvcnQgPSBleGVjbGlzdHNfcG9ydF9jb21wbGV0ZShleGVjbGlz dHMsIHBvcnQpOwotCQkJaWYgKHBvcnRfaXNzZXQocG9ydCkpCi0JCQkJZXhlY2xpc3RzX3VzZXJf YmVnaW4oZXhlY2xpc3RzLCBwb3J0KTsKLQkJCWVsc2UKLQkJCQlleGVjbGlzdHNfdXNlcl9lbmQo ZXhlY2xpc3RzKTsKLQkJfSBlbHNlIHsKLQkJCXBvcnRfc2V0KHBvcnQsIHBvcnRfcGFjayhycSwg Y291bnQpKTsKKwkJCUdFTV9CVUdfT04oZXhlY2xpc3RzLT5hY3RpdmUgLSBleGVjbGlzdHMtPmlu ZmxpZ2h0ID4KKwkJCQkgICBleGVjbGlzdHNfbnVtX3BvcnRzKGV4ZWNsaXN0cykpOwogCQl9CiAJ fSB3aGlsZSAoaGVhZCAhPSB0YWlsKTsKIApAQCAtMTMzMSw3ICsxMjc4LDcgQEAgc3RhdGljIHZv aWQgX19leGVjbGlzdHNfc3VibWlzc2lvbl90YXNrbGV0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmNvbnN0IGVuZ2luZSkKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZlbmdpbmUtPmFjdGl2ZS5sb2Nr KTsKIAogCXByb2Nlc3NfY3NiKGVuZ2luZSk7Ci0JaWYgKCFleGVjbGlzdHNfaXNfYWN0aXZlKCZl bmdpbmUtPmV4ZWNsaXN0cywgRVhFQ0xJU1RTX0FDVElWRV9QUkVFTVBUKSkKKwlpZiAoIWVuZ2lu ZS0+ZXhlY2xpc3RzLnBlbmRpbmdbMF0pCiAJCWV4ZWNsaXN0c19kZXF1ZXVlKGVuZ2luZSk7CiB9 CiAKQEAgLTEzNDQsMTEgKzEyOTEsNiBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfc3VibWlzc2lv bl90YXNrbGV0KHVuc2lnbmVkIGxvbmcgZGF0YSkKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICog Y29uc3QgZW5naW5lID0gKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKilkYXRhOwogCXVuc2lnbmVk IGxvbmcgZmxhZ3M7CiAKLQlHRU1fVFJBQ0UoIiVzIGF3YWtlPz0lZCwgYWN0aXZlPSV4XG4iLAot CQkgIGVuZ2luZS0+bmFtZSwKLQkJICAhIWludGVsX3dha2VyZWZfYWN0aXZlKCZlbmdpbmUtPndh a2VyZWYpLAotCQkgIGVuZ2luZS0+ZXhlY2xpc3RzLmFjdGl2ZSk7Ci0KIAlzcGluX2xvY2tfaXJx c2F2ZSgmZW5naW5lLT5hY3RpdmUubG9jaywgZmxhZ3MpOwogCV9fZXhlY2xpc3RzX3N1Ym1pc3Np b25fdGFza2xldChlbmdpbmUpOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+YWN0 aXZlLmxvY2ssIGZsYWdzKTsKQEAgLTEzNzUsMTIgKzEzMTcsMTYgQEAgc3RhdGljIHZvaWQgX19z dWJtaXRfcXVldWVfaW1tKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJdGFza2xl dF9oaV9zY2hlZHVsZSgmZXhlY2xpc3RzLT50YXNrbGV0KTsKIH0KIAotc3RhdGljIHZvaWQgc3Vi bWl0X3F1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgaW50IHByaW8pCitzdGF0 aWMgdm9pZCBzdWJtaXRfcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkJ IGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQogewotCWlmIChwcmlvID4gZW5naW5lLT5l eGVjbGlzdHMucXVldWVfcHJpb3JpdHlfaGludCkgewotCQllbmdpbmUtPmV4ZWNsaXN0cy5xdWV1 ZV9wcmlvcml0eV9oaW50ID0gcHJpbzsKLQkJX19zdWJtaXRfcXVldWVfaW1tKGVuZ2luZSk7Ci0J fQorCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICpleGVjbGlzdHMgPSAmZW5naW5lLT5l eGVjbGlzdHM7CisKKwlpZiAocnFfcHJpbyhycSkgPD0gZXhlY2xpc3RzLT5xdWV1ZV9wcmlvcml0 eV9oaW50KQorCQlyZXR1cm47CisKKwlleGVjbGlzdHMtPnF1ZXVlX3ByaW9yaXR5X2hpbnQgPSBy cV9wcmlvKHJxKTsKKwlfX3N1Ym1pdF9xdWV1ZV9pbW0oZW5naW5lKTsKIH0KIAogc3RhdGljIHZv aWQgZXhlY2xpc3RzX3N1Ym1pdF9yZXF1ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3Qp CkBAIC0xMzk2LDcgKzEzNDIsNyBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfc3VibWl0X3JlcXVl c3Qoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKIAlHRU1fQlVHX09OKFJCX0VNUFRZX1JP T1QoJmVuZ2luZS0+ZXhlY2xpc3RzLnF1ZXVlLnJiX3Jvb3QpKTsKIAlHRU1fQlVHX09OKGxpc3Rf ZW1wdHkoJnJlcXVlc3QtPnNjaGVkLmxpbmspKTsKIAotCXN1Ym1pdF9xdWV1ZShlbmdpbmUsIHJx X3ByaW8ocmVxdWVzdCkpOworCXN1Ym1pdF9xdWV1ZShlbmdpbmUsIHJlcXVlc3QpOwogCiAJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5hY3RpdmUubG9jaywgZmxhZ3MpOwogfQpAQCAt MjA1MywyNyArMTk5OSwxMyBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfcmVzZXRfcHJlcGFyZShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm ZW5naW5lLT5hY3RpdmUubG9jaywgZmxhZ3MpOwogfQogCi1zdGF0aWMgYm9vbCBscmNfcmVnc19v ayhjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKLXsKLQljb25zdCBzdHJ1Y3QgaW50ZWxf cmluZyAqcmluZyA9IHJxLT5yaW5nOwotCWNvbnN0IHUzMiAqcmVncyA9IHJxLT5od19jb250ZXh0 LT5scmNfcmVnX3N0YXRlOwotCi0JLyogUXVpY2sgc3BvdCBjaGVjayBmb3IgdGhlIGNvbW1vbiBz aWducyBvZiBjb250ZXh0IGNvcnJ1cHRpb24gKi8KLQotCWlmIChyZWdzW0NUWF9SSU5HX0JVRkZF Ul9DT05UUk9MICsgMV0gIT0KLQkgICAgKFJJTkdfQ1RMX1NJWkUocmluZy0+c2l6ZSkgfCBSSU5H X1ZBTElEKSkKLQkJcmV0dXJuIGZhbHNlOwotCi0JaWYgKHJlZ3NbQ1RYX1JJTkdfQlVGRkVSX1NU QVJUICsgMV0gIT0gaTkxNV9nZ3R0X29mZnNldChyaW5nLT52bWEpKQotCQlyZXR1cm4gZmFsc2U7 Ci0KLQlyZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQgcmVzZXRfY3NiX3BvaW50ZXJzKHN0 cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICpleGVjbGlzdHMpCitzdGF0aWMgdm9pZCByZXNl dF9jc2JfcG9pbnRlcnMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogeworCXN0cnVj dCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhl Y2xpc3RzOwogCWNvbnN0IHVuc2lnbmVkIGludCByZXNldF92YWx1ZSA9IGV4ZWNsaXN0cy0+Y3Ni X3NpemUgLSAxOwogCisJcmluZ19wYXVzZShlbmdpbmUpID0gMDsKKwogCS8qCiAJICogQWZ0ZXIg YSByZXNldCwgdGhlIEhXIHN0YXJ0cyB3cml0aW5nIGludG8gQ1NCIGVudHJ5IFswXS4gV2UKIAkg KiB0aGVyZWZvcmUgaGF2ZSB0byBzZXQgb3VyIEhFQUQgcG9pbnRlciBiYWNrIG9uZSBlbnRyeSBz byB0aGF0CkBAIC0yMTIwLDE4ICsyMDUyLDE5IEBAIHN0YXRpYyB2b2lkIF9fZXhlY2xpc3RzX3Jl c2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgYm9vbCBzdGFsbGVkKQogCXByb2Nl c3NfY3NiKGVuZ2luZSk7IC8qIGRyYWluIHByZWVtcHRpb24gZXZlbnRzICovCiAKIAkvKiBGb2xs b3dpbmcgdGhlIHJlc2V0LCB3ZSBuZWVkIHRvIHJlbG9hZCB0aGUgQ1NCIHJlYWQvd3JpdGUgcG9p bnRlcnMgKi8KLQlyZXNldF9jc2JfcG9pbnRlcnMoJmVuZ2luZS0+ZXhlY2xpc3RzKTsKKwlyZXNl dF9jc2JfcG9pbnRlcnMoZW5naW5lKTsKIAogCS8qCiAJICogU2F2ZSB0aGUgY3VycmVudGx5IGV4 ZWN1dGluZyBjb250ZXh0LCBldmVuIGlmIHdlIGNvbXBsZXRlZAogCSAqIGl0cyByZXF1ZXN0LCBp dCB3YXMgc3RpbGwgcnVubmluZyBhdCB0aGUgdGltZSBvZiB0aGUKIAkgKiByZXNldCBhbmQgd2ls bCBoYXZlIGJlZW4gY2xvYmJlcmVkLgogCSAqLwotCWlmICghcG9ydF9pc3NldChleGVjbGlzdHMt PnBvcnQpKQotCQlnb3RvIG91dF9jbGVhcjsKKwlycSA9IGV4ZWNsaXN0c19hY3RpdmUoZXhlY2xp c3RzKTsKKwlpZiAoIXJxKQorCQlyZXR1cm47CiAKLQlycSA9IHBvcnRfcmVxdWVzdChleGVjbGlz dHMtPnBvcnQpOwogCWNlID0gcnEtPmh3X2NvbnRleHQ7CisJcnEgPSBhY3RpdmVfcmVxdWVzdChy cSk7CiAKIAkvKgogCSAqIENhdGNoIHVwIHdpdGggYW55IG1pc3NlZCBjb250ZXh0LXN3aXRjaCBp bnRlcnJ1cHRzLgpAQCAtMjE0NCw5ICsyMDc3LDEyIEBAIHN0YXRpYyB2b2lkIF9fZXhlY2xpc3Rz X3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgYm9vbCBzdGFsbGVkKQogCSAq LwogCWV4ZWNsaXN0c19jYW5jZWxfcG9ydF9yZXF1ZXN0cyhleGVjbGlzdHMpOwogCi0JcnEgPSBh Y3RpdmVfcmVxdWVzdChycSk7Ci0JaWYgKCFycSkKKwlpZiAoIXJxKSB7CisJCWNlLT5yaW5nLT5o ZWFkID0gY2UtPnJpbmctPnRhaWw7CiAJCWdvdG8gb3V0X3JlcGxheTsKKwl9CisKKwljZS0+cmlu Zy0+aGVhZCA9IGludGVsX3Jpbmdfd3JhcChjZS0+cmluZywgcnEtPmhlYWQpOwogCiAJLyoKIAkg KiBJZiB0aGlzIHJlcXVlc3QgaGFzbid0IHN0YXJ0ZWQgeWV0LCBlLmcuIGl0IGlzIHdhaXRpbmcg b24gYQpAQCAtMjE2MCw3ICsyMDk2LDcgQEAgc3RhdGljIHZvaWQgX19leGVjbGlzdHNfcmVzZXQo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBib29sIHN0YWxsZWQpCiAJICogT3RoZXJ3 aXNlLCBpZiB3ZSBoYXZlIG5vdCBzdGFydGVkIHlldCwgdGhlIHJlcXVlc3Qgc2hvdWxkIHJlcGxh eQogCSAqIHBlcmZlY3RseSBhbmQgd2UgZG8gbm90IG5lZWQgdG8gZmxhZyB0aGUgcmVzdWx0IGFz IGJlaW5nIGVycm9uZW91cy4KIAkgKi8KLQlpZiAoIWk5MTVfcmVxdWVzdF9zdGFydGVkKHJxKSAm JiBscmNfcmVnc19vayhycSkpCisJaWYgKCFpOTE1X3JlcXVlc3Rfc3RhcnRlZChycSkpCiAJCWdv dG8gb3V0X3JlcGxheTsKIAogCS8qCkBAIC0yMTc1LDcgKzIxMTEsNyBAQCBzdGF0aWMgdm9pZCBf X2V4ZWNsaXN0c19yZXNldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGJvb2wgc3Rh bGxlZCkKIAkgKiBpbWFnZSBiYWNrIHRvIHRoZSBleHBlY3RlZCB2YWx1ZXMgdG8gc2tpcCBvdmVy IHRoZSBndWlsdHkgcmVxdWVzdC4KIAkgKi8KIAlpOTE1X3Jlc2V0X3JlcXVlc3QocnEsIHN0YWxs ZWQpOwotCWlmICghc3RhbGxlZCAmJiBscmNfcmVnc19vayhycSkpCisJaWYgKCFzdGFsbGVkKQog CQlnb3RvIG91dF9yZXBsYXk7CiAKIAkvKgpAQCAtMjE5NSwxNyArMjEzMSwxMyBAQCBzdGF0aWMg dm9pZCBfX2V4ZWNsaXN0c19yZXNldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGJv b2wgc3RhbGxlZCkKIAlleGVjbGlzdHNfaW5pdF9yZWdfc3RhdGUocmVncywgY2UsIGVuZ2luZSwg Y2UtPnJpbmcpOwogCiBvdXRfcmVwbGF5OgotCS8qIFJlcnVuIHRoZSByZXF1ZXN0OyBpdHMgcGF5 bG9hZCBoYXMgYmVlbiBuZXV0ZXJlZCAoaWYgZ3VpbHR5KS4gKi8KLQljZS0+cmluZy0+aGVhZCA9 Ci0JCXJxID8gaW50ZWxfcmluZ193cmFwKGNlLT5yaW5nLCBycS0+aGVhZCkgOiBjZS0+cmluZy0+ dGFpbDsKKwlHRU1fVFJBQ0UoIiVzIHJlcGxheSB7aGVhZDolMDR4LCB0YWlsOiUwNHhcbiIsCisJ CSAgZW5naW5lLT5uYW1lLCBjZS0+cmluZy0+aGVhZCwgY2UtPnJpbmctPnRhaWwpOwogCWludGVs X3JpbmdfdXBkYXRlX3NwYWNlKGNlLT5yaW5nKTsKIAlfX2V4ZWNsaXN0c191cGRhdGVfcmVnX3N0 YXRlKGNlLCBlbmdpbmUpOwogCiAJLyogUHVzaCBiYWNrIGFueSBpbmNvbXBsZXRlIHJlcXVlc3Rz IGZvciByZXBsYXkgYWZ0ZXIgdGhlIHJlc2V0LiAqLwogCV9fdW53aW5kX2luY29tcGxldGVfcmVx dWVzdHMoZW5naW5lKTsKLQotb3V0X2NsZWFyOgotCWV4ZWNsaXN0c19jbGVhcl9hbGxfYWN0aXZl KGV4ZWNsaXN0cyk7CiB9CiAKIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19yZXNldChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsIGJvb2wgc3RhbGxlZCkKQEAgLTIzMDEsNyArMjIzMyw2IEBA IHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19jYW5jZWxfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQogCiAJZXhlY2xpc3RzLT5xdWV1ZV9wcmlvcml0eV9oaW50ID0gSU5UX01J TjsKIAlleGVjbGlzdHMtPnF1ZXVlID0gUkJfUk9PVF9DQUNIRUQ7Ci0JR0VNX0JVR19PTihwb3J0 X2lzc2V0KGV4ZWNsaXN0cy0+cG9ydCkpOwogCiAJR0VNX0JVR19PTihfX3Rhc2tsZXRfaXNfZW5h YmxlZCgmZXhlY2xpc3RzLT50YXNrbGV0KSk7CiAJZXhlY2xpc3RzLT50YXNrbGV0LmZ1bmMgPSBu b3Bfc3VibWlzc2lvbl90YXNrbGV0OwpAQCAtMjUxOSwxNSArMjQ1MCwyOSBAQCBzdGF0aWMgdTMy ICpnZW44X2VtaXRfd2FfdGFpbChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0LCB1MzIgKmNz KQogCXJldHVybiBjczsKIH0KIAorc3RhdGljIHUzMiAqZW1pdF9wcmVlbXB0X2J1c3l3YWl0KHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QsIHUzMiAqY3MpCit7CisJKmNzKysgPSBNSV9TRU1B UEhPUkVfV0FJVCB8CisJCU1JX1NFTUFQSE9SRV9HTE9CQUxfR1RUIHwKKwkJTUlfU0VNQVBIT1JF X1BPTEwgfAorCQlNSV9TRU1BUEhPUkVfU0FEX0VRX1NERDsKKwkqY3MrKyA9IDA7CisJKmNzKysg PSBpbnRlbF9od3NfcHJlZW1wdF9hZGRyZXNzKHJlcXVlc3QtPmVuZ2luZSk7CisJKmNzKysgPSAw OworCisJcmV0dXJuIGNzOworfQorCiBzdGF0aWMgdTMyICpnZW44X2VtaXRfZmluaV9icmVhZGNy dW1iKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QsIHUzMiAqY3MpCiB7CiAJY3MgPSBnZW44 X2VtaXRfZ2d0dF93cml0ZShjcywKIAkJCQkgIHJlcXVlc3QtPmZlbmNlLnNlcW5vLAogCQkJCSAg cmVxdWVzdC0+dGltZWxpbmUtPmh3c3Bfb2Zmc2V0LAogCQkJCSAgMCk7Ci0KIAkqY3MrKyA9IE1J X1VTRVJfSU5URVJSVVBUOworCiAJKmNzKysgPSBNSV9BUkJfT05fT0ZGIHwgTUlfQVJCX0VOQUJM RTsKKwljcyA9IGVtaXRfcHJlZW1wdF9idXN5d2FpdChyZXF1ZXN0LCBjcyk7CiAKIAlyZXF1ZXN0 LT50YWlsID0gaW50ZWxfcmluZ19vZmZzZXQocmVxdWVzdCwgY3MpOwogCWFzc2VydF9yaW5nX3Rh aWxfdmFsaWQocmVxdWVzdC0+cmluZywgcmVxdWVzdC0+dGFpbCk7CkBAIC0yNTQ4LDkgKzI0OTMs MTAgQEAgc3RhdGljIHUzMiAqZ2VuOF9lbWl0X2ZpbmlfYnJlYWRjcnVtYl9yY3Moc3RydWN0IGk5 MTVfcmVxdWVzdCAqcmVxdWVzdCwgdTMyICpjcykKIAkJCQkgICAgUElQRV9DT05UUk9MX0ZMVVNI X0VOQUJMRSB8CiAJCQkJICAgIFBJUEVfQ09OVFJPTF9DU19TVEFMTCwKIAkJCQkgICAgMCk7Ci0K IAkqY3MrKyA9IE1JX1VTRVJfSU5URVJSVVBUOworCiAJKmNzKysgPSBNSV9BUkJfT05fT0ZGIHwg TUlfQVJCX0VOQUJMRTsKKwljcyA9IGVtaXRfcHJlZW1wdF9idXN5d2FpdChyZXF1ZXN0LCBjcyk7 CiAKIAlyZXF1ZXN0LT50YWlsID0gaW50ZWxfcmluZ19vZmZzZXQocmVxdWVzdCwgY3MpOwogCWFz c2VydF9yaW5nX3RhaWxfdmFsaWQocmVxdWVzdC0+cmluZywgcmVxdWVzdC0+dGFpbCk7CkBAIC0y NTk5LDggKzI1NDUsNyBAQCB2b2lkIGludGVsX2V4ZWNsaXN0c19zZXRfZGVmYXVsdF9zdWJtaXNz aW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAllbmdpbmUtPmZsYWdzIHw9IEk5 MTVfRU5HSU5FX1NVUFBPUlRTX1NUQVRTOwogCWlmICghaW50ZWxfdmdwdV9hY3RpdmUoZW5naW5l LT5pOTE1KSkKIAkJZW5naW5lLT5mbGFncyB8PSBJOTE1X0VOR0lORV9IQVNfU0VNQVBIT1JFUzsK LQlpZiAoZW5naW5lLT5wcmVlbXB0X2NvbnRleHQgJiYKLQkgICAgSEFTX0xPR0lDQUxfUklOR19Q UkVFTVBUSU9OKGVuZ2luZS0+aTkxNSkpCisJaWYgKEhBU19MT0dJQ0FMX1JJTkdfUFJFRU1QVElP TihlbmdpbmUtPmk5MTUpKQogCQllbmdpbmUtPmZsYWdzIHw9IEk5MTVfRU5HSU5FX0hBU19QUkVF TVBUSU9OOwogfQogCkBAIC0yNzIyLDExICsyNjY3LDYgQEAgaW50IGludGVsX2V4ZWNsaXN0c19z dWJtaXNzaW9uX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQkJaTkxNV9t bWlvX3JlZ19vZmZzZXQoUklOR19FTFNQKGJhc2UpKTsKIAl9CiAKLQlleGVjbGlzdHMtPnByZWVt cHRfY29tcGxldGVfc3RhdHVzID0gfjB1OwotCWlmIChlbmdpbmUtPnByZWVtcHRfY29udGV4dCkK LQkJZXhlY2xpc3RzLT5wcmVlbXB0X2NvbXBsZXRlX3N0YXR1cyA9Ci0JCQl1cHBlcl8zMl9iaXRz KGVuZ2luZS0+cHJlZW1wdF9jb250ZXh0LT5scmNfZGVzYyk7Ci0KIAlleGVjbGlzdHMtPmNzYl9z dGF0dXMgPQogCQkmZW5naW5lLT5zdGF0dXNfcGFnZS5hZGRyW0k5MTVfSFdTX0NTQl9CVUYwX0lO REVYXTsKIApAQCAtMjczOCw3ICsyNjc4LDcgQEAgaW50IGludGVsX2V4ZWNsaXN0c19zdWJtaXNz aW9uX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCWVsc2UKIAkJZXhlY2xp c3RzLT5jc2Jfc2l6ZSA9IEdFTjExX0NTQl9FTlRSSUVTOwogCi0JcmVzZXRfY3NiX3BvaW50ZXJz KGV4ZWNsaXN0cyk7CisJcmVzZXRfY3NiX3BvaW50ZXJzKGVuZ2luZSk7CiAKIAlyZXR1cm4gMDsK IH0KQEAgLTI5MjEsMTEgKzI4NjEsNiBAQCBwb3B1bGF0ZV9scl9jb250ZXh0KHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSwKIAlpZiAoIWVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSkKIAkJcmVnc1tDVFhf Q09OVEVYVF9DT05UUk9MICsgMV0gfD0KIAkJCV9NQVNLRURfQklUX0VOQUJMRShDVFhfQ1RSTF9F TkdJTkVfQ1RYX1JFU1RPUkVfSU5ISUJJVCk7Ci0JaWYgKGNlLT5nZW1fY29udGV4dCA9PSBlbmdp bmUtPmk5MTUtPnByZWVtcHRfY29udGV4dCAmJgotCSAgICBJTlRFTF9HRU4oZW5naW5lLT5pOTE1 KSA8IDExKQotCQlyZWdzW0NUWF9DT05URVhUX0NPTlRST0wgKyAxXSB8PQotCQkJX01BU0tFRF9C SVRfRU5BQkxFKENUWF9DVFJMX0VOR0lORV9DVFhfUkVTVE9SRV9JTkhJQklUIHwKLQkJCQkJICAg Q1RYX0NUUkxfRU5HSU5FX0NUWF9TQVZFX0lOSElCSVQpOwogCiAJcmV0ID0gMDsKIGVycl91bnBp bl9jdHg6CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwppbmRleCA0Y2M5MDBlNDMy ZTIuLjY3ZjU2YjRhNGUzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n cHVfZXJyb3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCkBA IC0xMjQxLDEwICsxMjQxLDEwIEBAIHN0YXRpYyB2b2lkIGVycm9yX3JlY29yZF9lbmdpbmVfcmVn aXN0ZXJzKHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3IsCiAJfQogfQogCi1zdGF0aWMgdm9p ZCByZWNvcmRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0LAorc3RhdGljIHZv aWQgcmVjb3JkX3JlcXVlc3QoY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCwKIAkJ CSAgIHN0cnVjdCBkcm1faTkxNV9lcnJvcl9yZXF1ZXN0ICplcnEpCiB7Ci0Jc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eCA9IHJlcXVlc3QtPmdlbV9jb250ZXh0OworCWNvbnN0IHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHggPSByZXF1ZXN0LT5nZW1fY29udGV4dDsKIAogCWVycS0+Zmxh Z3MgPSByZXF1ZXN0LT5mZW5jZS5mbGFnczsKIAllcnEtPmNvbnRleHQgPSByZXF1ZXN0LT5mZW5j ZS5jb250ZXh0OwpAQCAtMTMwOCwyMCArMTMwOCwxNSBAQCBzdGF0aWMgdm9pZCBlbmdpbmVfcmVj b3JkX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAllZS0+bnVtX3Jl cXVlc3RzID0gY291bnQ7CiB9CiAKLXN0YXRpYyB2b2lkIGVycm9yX3JlY29yZF9lbmdpbmVfZXhl Y2xpc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKK3N0YXRpYyB2b2lkIGVycm9y X3JlY29yZF9lbmdpbmVfZXhlY2xpc3RzKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwKIAkJCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZXJyb3JfZW5naW5lICplZSkKIHsKIAljb25z dCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGV4ZWNsaXN0cyA9ICZlbmdp bmUtPmV4ZWNsaXN0czsKLQl1bnNpZ25lZCBpbnQgbjsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICog Y29uc3QgKnBvcnQgPSBleGVjbGlzdHMtPmFjdGl2ZTsKKwl1bnNpZ25lZCBpbnQgbiA9IDA7CiAK LQlmb3IgKG4gPSAwOyBuIDwgZXhlY2xpc3RzX251bV9wb3J0cyhleGVjbGlzdHMpOyBuKyspIHsK LQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEgPSBwb3J0X3JlcXVlc3QoJmV4ZWNsaXN0cy0+cG9y dFtuXSk7Ci0KLQkJaWYgKCFycSkKLQkJCWJyZWFrOwotCi0JCXJlY29yZF9yZXF1ZXN0KHJxLCAm ZWUtPmV4ZWNsaXN0W25dKTsKLQl9CisJd2hpbGUgKCpwb3J0KQorCQlyZWNvcmRfcmVxdWVzdCgq cG9ydCsrLCAmZWUtPmV4ZWNsaXN0W24rK10pOwogCiAJZWUtPm51bV9wb3J0cyA9IG47CiB9CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCmluZGV4IGFjMzBlZDM5ZDNhNS4uMTY0YjJjZDUy NjE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwpAQCAtMjc2LDYgKzI3NiwxMiBA QCBzdGF0aWMgYm9vbCBpOTE1X3JlcXVlc3RfcmV0aXJlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx KQogCiAJbG9jYWxfaXJxX2Rpc2FibGUoKTsKIAorCS8qCisJICogV2Ugb25seSBsb29zZWx5IHRy YWNrIGluZmxpZ2h0IHJlcXVlc3RzIGFjcm9zcyBwcmVlbXB0aW9uLAorCSAqIGFuZCBzbyB3ZSBt YXkgZmluZCBvdXJzZWx2ZXMgYXR0ZW1wdGluZyB0byByZXRpcmUgYSBfY29tcGxldGVkXworCSAq IHJlcXVlc3QgdGhhdCB3ZSBoYXZlIHJlbW92ZWQgZnJvbSB0aGUgSFcgYW5kIHB1dCBiYWNrIG9u IGEgcnVuCisJICogcXVldWUuCisJICovCiAJc3Bpbl9sb2NrKCZycS0+ZW5naW5lLT5hY3RpdmUu bG9jayk7CiAJbGlzdF9kZWwoJnJxLT5zY2hlZC5saW5rKTsKIAlzcGluX3VubG9jaygmcnEtPmVu Z2luZS0+YWN0aXZlLmxvY2spOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXF1ZXN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAppbmRleCBl ZGJiZGZlYzI0YWIuLmJlYmMxZTliNGE1ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZXF1ZXN0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0 LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxsaW51eC9kbWEtZmVuY2UuaD4KICNpbmNs dWRlIDxsaW51eC9sb2NrZGVwLmg+CiAKKyNpbmNsdWRlICJndC9pbnRlbF9jb250ZXh0X3R5cGVz LmgiCiAjaW5jbHVkZSAiZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgiCiAKICNpbmNsdWRlICJpOTE1 X2dlbS5oIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMKaW5kZXggMmU5YjM4YmRj MzNjLi5iMWJhM2U2NWNkNTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf c2NoZWR1bGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuYwpA QCAtMTc5LDggKzE3OSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJxX3ByaW8oY29uc3Qgc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEpCiAKIHN0YXRpYyB2b2lkIGtpY2tfc3VibWlzc2lvbihzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGludCBwcmlvKQogewotCWNvbnN0IHN0cnVjdCBpOTE1 X3JlcXVlc3QgKmluZmxpZ2h0ID0KLQkJcG9ydF9yZXF1ZXN0KGVuZ2luZS0+ZXhlY2xpc3RzLnBv cnQpOworCWNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKmluZmxpZ2h0ID0gKmVuZ2luZS0+ZXhl Y2xpc3RzLmFjdGl2ZTsKIAogCS8qCiAJICogSWYgd2UgYXJlIGFscmVhZHkgdGhlIGN1cnJlbnRs eSBleGVjdXRpbmcgY29udGV4dCwgZG9uJ3QKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfdXRpbHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdXRpbHMuaAppbmRl eCAyOTg3MjE5YTYzMDAuLjQ5MjBmZjlhYmE2MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV91dGlscy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdXRpbHMu aApAQCAtMTMxLDYgKzEzMSwxOCBAQCBfX2NoZWNrX3N0cnVjdF9zaXplKHNpemVfdCBiYXNlLCBz aXplX3QgYXJyLCBzaXplX3QgY291bnQsIHNpemVfdCAqc2l6ZSkKIAkoKHR5cGVvZihwdHIpKSgo dW5zaWduZWQgbG9uZykocHRyKSB8IF9fYml0cykpOwkJCVwKIH0pCiAKKyNkZWZpbmUgcHRyX2Nv dW50X2RlYyhwX3B0cikgZG8gewkJCQkJXAorCXR5cGVvZihwX3B0cikgX19wID0gKHBfcHRyKTsJ CQkJCVwKKwl1bnNpZ25lZCBsb25nIF9fdiA9ICh1bnNpZ25lZCBsb25nKSgqX19wKTsJCQlcCisJ Kl9fcCA9ICh0eXBlb2YoKnBfcHRyKSkoLS1fX3YpOwkJCQkJXAorfSB3aGlsZSAoMCkKKworI2Rl ZmluZSBwdHJfY291bnRfaW5jKHBfcHRyKSBkbyB7CQkJCQlcCisJdHlwZW9mKHBfcHRyKSBfX3Ag PSAocF9wdHIpOwkJCQkJXAorCXVuc2lnbmVkIGxvbmcgX192ID0gKHVuc2lnbmVkIGxvbmcpKCpf X3ApOwkJCVwKKwkqX19wID0gKHR5cGVvZigqcF9wdHIpKSgrK19fdik7CQkJCQlcCit9IHdoaWxl ICgwKQorCiAjZGVmaW5lIHBhZ2VfbWFza19iaXRzKHB0cikgcHRyX21hc2tfYml0cyhwdHIsIFBB R0VfU0hJRlQpCiAjZGVmaW5lIHBhZ2VfdW5tYXNrX2JpdHMocHRyKSBwdHJfdW5tYXNrX2JpdHMo cHRyLCBQQUdFX1NISUZUKQogI2RlZmluZSBwYWdlX3BhY2tfYml0cyhwdHIsIGJpdHMpIHB0cl9w YWNrX2JpdHMocHRyLCBiaXRzLCBQQUdFX1NISUZUKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d1Y19zdWJtaXNzaW9uLmMKaW5kZXggMjQwYzhhMmFhYmMyLi4zMmIzMzZkNWQ4OTcgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwpAQCAtMzIsNyAr MzIsMTEgQEAKICNpbmNsdWRlICJpbnRlbF9ndWNfc3VibWlzc2lvbi5oIgogI2luY2x1ZGUgImk5 MTVfZHJ2LmgiCiAKLSNkZWZpbmUgR1VDX1BSRUVNUFRfRklOSVNIRUQJCTB4MQorZW51bSB7CisJ R1VDX1BSRUVNUFRfTk9ORSA9IDAsCisJR1VDX1BSRUVNUFRfSU5QUk9HUkVTUywKKwlHVUNfUFJF RU1QVF9GSU5JU0hFRCwKK307CiAjZGVmaW5lIEdVQ19QUkVFTVBUX0JSRUFEQ1JVTUJfRFdPUkRT CTB4OAogI2RlZmluZSBHVUNfUFJFRU1QVF9CUkVBRENSVU1CX0JZVEVTCVwKIAkoc2l6ZW9mKHUz MikgKiBHVUNfUFJFRU1QVF9CUkVBRENSVU1CX0RXT1JEUykKQEAgLTUzNywxNSArNTQxLDExIEBA IHN0YXRpYyB2b2lkIGd1Y19hZGRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHN0cnVj dCBpOTE1X3JlcXVlc3QgKnJxKQogCXUzMiBjdHhfZGVzYyA9IGxvd2VyXzMyX2JpdHMocnEtPmh3 X2NvbnRleHQtPmxyY19kZXNjKTsKIAl1MzIgcmluZ190YWlsID0gaW50ZWxfcmluZ19zZXRfdGFp bChycS0+cmluZywgcnEtPnRhaWwpIC8gc2l6ZW9mKHU2NCk7CiAKLQlzcGluX2xvY2soJmNsaWVu dC0+d3FfbG9jayk7Ci0KIAlndWNfd3FfaXRlbV9hcHBlbmQoY2xpZW50LCBlbmdpbmUtPmd1Y19p ZCwgY3R4X2Rlc2MsCiAJCQkgICByaW5nX3RhaWwsIHJxLT5mZW5jZS5zZXFubyk7CiAJZ3VjX3Jp bmdfZG9vcmJlbGwoY2xpZW50KTsKIAogCWNsaWVudC0+c3VibWlzc2lvbnNbZW5naW5lLT5pZF0g Kz0gMTsKLQotCXNwaW5fdW5sb2NrKCZjbGllbnQtPndxX2xvY2spOwogfQogCiAvKgpAQCAtNjMx LDggKzYzMSw5IEBAIHN0YXRpYyB2b2lkIGluamVjdF9wcmVlbXB0X2NvbnRleHQoc3RydWN0IHdv cmtfc3RydWN0ICp3b3JrKQogCWRhdGFbNl0gPSBpbnRlbF9ndWNfZ2d0dF9vZmZzZXQoZ3VjLCBn dWMtPnNoYXJlZF9kYXRhKTsKIAogCWlmIChXQVJOX09OKGludGVsX2d1Y19zZW5kKGd1YywgZGF0 YSwgQVJSQVlfU0laRShkYXRhKSkpKSB7Ci0JCWV4ZWNsaXN0c19jbGVhcl9hY3RpdmUoJmVuZ2lu ZS0+ZXhlY2xpc3RzLAotCQkJCSAgICAgICBFWEVDTElTVFNfQUNUSVZFX1BSRUVNUFQpOworCQlp bnRlbF93cml0ZV9zdGF0dXNfcGFnZShlbmdpbmUsCisJCQkJCUk5MTVfR0VNX0hXU19QUkVFTVBU LAorCQkJCQlHVUNfUFJFRU1QVF9OT05FKTsKIAkJdGFza2xldF9zY2hlZHVsZSgmZW5naW5lLT5l eGVjbGlzdHMudGFza2xldCk7CiAJfQogCkBAIC02NzIsOCArNjczLDYgQEAgc3RhdGljIHZvaWQg Y29tcGxldGVfcHJlZW1wdF9jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK IHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZXhlY2xpc3RzID0gJmVuZ2luZS0+ ZXhlY2xpc3RzOwogCi0JR0VNX0JVR19PTighZXhlY2xpc3RzX2lzX2FjdGl2ZShleGVjbGlzdHMs IEVYRUNMSVNUU19BQ1RJVkVfUFJFRU1QVCkpOwotCiAJaWYgKGluamVjdF9wcmVlbXB0X2hhbmco ZXhlY2xpc3RzKSkKIAkJcmV0dXJuOwogCkBAIC02ODEsODkgKzY4MCw5MCBAQCBzdGF0aWMgdm9p ZCBjb21wbGV0ZV9wcmVlbXB0X2NvbnRleHQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQogCWV4ZWNsaXN0c191bndpbmRfaW5jb21wbGV0ZV9yZXF1ZXN0cyhleGVjbGlzdHMpOwogCiAJ d2FpdF9mb3JfZ3VjX3ByZWVtcHRfcmVwb3J0KGVuZ2luZSk7Ci0JaW50ZWxfd3JpdGVfc3RhdHVz X3BhZ2UoZW5naW5lLCBJOTE1X0dFTV9IV1NfUFJFRU1QVCwgMCk7CisJaW50ZWxfd3JpdGVfc3Rh dHVzX3BhZ2UoZW5naW5lLCBJOTE1X0dFTV9IV1NfUFJFRU1QVCwgR1VDX1BSRUVNUFRfTk9ORSk7 CiB9CiAKLS8qKgotICogZ3VjX3N1Ym1pdCgpIC0gU3VibWl0IGNvbW1hbmRzIHRocm91Z2ggR3VD Ci0gKiBAZW5naW5lOiBlbmdpbmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb21tYW5kcwotICoKLSAq IFRoZSBvbmx5IGVycm9yIGhlcmUgYXJpc2VzIGlmIHRoZSBkb29yYmVsbCBoYXJkd2FyZSBpc24n dCBmdW5jdGlvbmluZwotICogYXMgZXhwZWN0ZWQsIHdoaWNoIHJlYWxseSBzaG91bG4ndCBoYXBw ZW4uCi0gKi8KLXN0YXRpYyB2b2lkIGd1Y19zdWJtaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQorc3RhdGljIHZvaWQgZ3VjX3N1Ym1pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCisJCSAgICAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoqb3V0LAorCQkgICAgICAgc3Ry dWN0IGk5MTVfcmVxdWVzdCAqKmVuZCkKIHsKIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZW5n aW5lLT5pOTE1LT5ndWM7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBl eGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7Ci0Jc3RydWN0IGV4ZWNsaXN0X3BvcnQgKnBv cnQgPSBleGVjbGlzdHMtPnBvcnQ7Ci0JdW5zaWduZWQgaW50IG47CisJc3RydWN0IGludGVsX2d1 Y19jbGllbnQgKmNsaWVudCA9IGd1Yy0+ZXhlY2J1Zl9jbGllbnQ7CiAKLQlmb3IgKG4gPSAwOyBu IDwgZXhlY2xpc3RzX251bV9wb3J0cyhleGVjbGlzdHMpOyBuKyspIHsKLQkJc3RydWN0IGk5MTVf cmVxdWVzdCAqcnE7Ci0JCXVuc2lnbmVkIGludCBjb3VudDsKKwlzcGluX2xvY2soJmNsaWVudC0+ d3FfbG9jayk7CiAKLQkJcnEgPSBwb3J0X3VucGFjaygmcG9ydFtuXSwgJmNvdW50KTsKLQkJaWYg KHJxICYmIGNvdW50ID09IDApIHsKLQkJCXBvcnRfc2V0KCZwb3J0W25dLCBwb3J0X3BhY2socnEs ICsrY291bnQpKTsKKwlkbyB7CisJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxID0gKm91dCsrOwog Ci0JCQlmbHVzaF9nZ3R0X3dyaXRlcyhycS0+cmluZy0+dm1hKTsKKwkJZmx1c2hfZ2d0dF93cml0 ZXMocnEtPnJpbmctPnZtYSk7CisJCWd1Y19hZGRfcmVxdWVzdChndWMsIHJxKTsKKwl9IHdoaWxl IChvdXQgIT0gZW5kKTsKIAotCQkJZ3VjX2FkZF9yZXF1ZXN0KGd1YywgcnEpOwotCQl9Ci0JfQor CXNwaW5fdW5sb2NrKCZjbGllbnQtPndxX2xvY2spOwogfQogCi1zdGF0aWMgdm9pZCBwb3J0X2Fz c2lnbihzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9ydCwgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEp CitzdGF0aWMgaW5saW5lIGludCBycV9wcmlvKGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx KQogewotCUdFTV9CVUdfT04ocG9ydF9pc3NldChwb3J0KSk7Ci0KLQlwb3J0X3NldChwb3J0LCBp OTE1X3JlcXVlc3RfZ2V0KHJxKSk7CisJcmV0dXJuIHJxLT5zY2hlZC5hdHRyLnByaW9yaXR5IHwg X19OT19QUkVFTVBUSU9OOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBycV9wcmlvKGNvbnN0IHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQorc3RhdGljIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnNjaGVk dWxlX2luKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBpbnQgaWR4KQogewotCXJldHVybiBycS0+ c2NoZWQuYXR0ci5wcmlvcml0eTsKKwl0cmFjZV9pOTE1X3JlcXVlc3RfaW4ocnEsIGlkeCk7CisK KwlpZiAoIXJxLT5od19jb250ZXh0LT5pbmZsaWdodCkKKwkJcnEtPmh3X2NvbnRleHQtPmluZmxp Z2h0ID0gcnEtPmVuZ2luZTsKKwlpbnRlbF9jb250ZXh0X2luZmxpZ2h0X2luYyhycS0+aHdfY29u dGV4dCk7CisKKwlyZXR1cm4gaTkxNV9yZXF1ZXN0X2dldChycSk7CiB9CiAKLXN0YXRpYyBpbmxp bmUgaW50IHBvcnRfcHJpbyhjb25zdCBzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9ydCkKK3N0YXRp YyB2b2lkIHNjaGVkdWxlX291dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIHsKLQlyZXR1cm4g cnFfcHJpbyhwb3J0X3JlcXVlc3QocG9ydCkpIHwgX19OT19QUkVFTVBUSU9OOworCXRyYWNlX2k5 MTVfcmVxdWVzdF9vdXQocnEpOworCisJaW50ZWxfY29udGV4dF9pbmZsaWdodF9kZWMocnEtPmh3 X2NvbnRleHQpOworCWlmICghaW50ZWxfY29udGV4dF9pbmZsaWdodF9jb3VudChycS0+aHdfY29u dGV4dCkpCisJCXJxLT5od19jb250ZXh0LT5pbmZsaWdodCA9IE5VTEw7CisKKwlpOTE1X3JlcXVl c3RfcHV0KHJxKTsKIH0KIAotc3RhdGljIGJvb2wgX19ndWNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCitzdGF0aWMgdm9pZCBfX2d1Y19kZXF1ZXVlKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAq IGNvbnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKLQlzdHJ1Y3QgZXhlY2xpc3Rf cG9ydCAqcG9ydCA9IGV4ZWNsaXN0cy0+cG9ydDsKLQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpsYXN0 ID0gTlVMTDsKLQljb25zdCBzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqIGNvbnN0IGxhc3RfcG9ydCA9 Ci0JCSZleGVjbGlzdHMtPnBvcnRbZXhlY2xpc3RzLT5wb3J0X21hc2tdOworCXN0cnVjdCBpOTE1 X3JlcXVlc3QgKipmaXJzdCA9IGV4ZWNsaXN0cy0+aW5mbGlnaHQ7CisJc3RydWN0IGk5MTVfcmVx dWVzdCAqKiBjb25zdCBsYXN0X3BvcnQgPSBmaXJzdCArIGV4ZWNsaXN0cy0+cG9ydF9tYXNrOwor CXN0cnVjdCBpOTE1X3JlcXVlc3QgKmxhc3QgPSBmaXJzdFswXTsKKwlzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICoqcG9ydDsKIAlib29sIHN1Ym1pdCA9IGZhbHNlOwogCXN0cnVjdCByYl9ub2RlICpyYjsK IAogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmVuZ2luZS0+YWN0aXZlLmxvY2spOwogCi0JaWYgKHBv cnRfaXNzZXQocG9ydCkpIHsKKwlpZiAobGFzdCkgewogCQlpZiAoaW50ZWxfZW5naW5lX2hhc19w cmVlbXB0aW9uKGVuZ2luZSkpIHsKIAkJCXN0cnVjdCBndWNfcHJlZW1wdF93b3JrICpwcmVlbXB0 X3dvcmsgPQogCQkJCSZlbmdpbmUtPmk5MTUtPmd1Yy5wcmVlbXB0X3dvcmtbZW5naW5lLT5pZF07 CiAJCQlpbnQgcHJpbyA9IGV4ZWNsaXN0cy0+cXVldWVfcHJpb3JpdHlfaGludDsKIAotCQkJaWYg KGk5MTVfc2NoZWR1bGVyX25lZWRfcHJlZW1wdChwcmlvLAotCQkJCQkJCXBvcnRfcHJpbyhwb3J0 KSkpIHsKLQkJCQlleGVjbGlzdHNfc2V0X2FjdGl2ZShleGVjbGlzdHMsCi0JCQkJCQkgICAgIEVY RUNMSVNUU19BQ1RJVkVfUFJFRU1QVCk7CisJCQlpZiAoaTkxNV9zY2hlZHVsZXJfbmVlZF9wcmVl bXB0KHByaW8sIHJxX3ByaW8obGFzdCkpKSB7CisJCQkJaW50ZWxfd3JpdGVfc3RhdHVzX3BhZ2Uo ZW5naW5lLAorCQkJCQkJCUk5MTVfR0VNX0hXU19QUkVFTVBULAorCQkJCQkJCUdVQ19QUkVFTVBU X0lOUFJPR1JFU1MpOwogCQkJCXF1ZXVlX3dvcmsoZW5naW5lLT5pOTE1LT5ndWMucHJlZW1wdF93 cSwKIAkJCQkJICAgJnByZWVtcHRfd29yay0+d29yayk7Ci0JCQkJcmV0dXJuIGZhbHNlOworCQkJ CXJldHVybjsKIAkJCX0KIAkJfQogCi0JCXBvcnQrKzsKLQkJaWYgKHBvcnRfaXNzZXQocG9ydCkp Ci0JCQlyZXR1cm4gZmFsc2U7CisJCWlmICgqKytmaXJzdCkKKwkJCXJldHVybjsKKworCQlsYXN0 ID0gTlVMTDsKIAl9Ci0JR0VNX0JVR19PTihwb3J0X2lzc2V0KHBvcnQpKTsKIAorCXBvcnQgPSBm aXJzdDsKIAl3aGlsZSAoKHJiID0gcmJfZmlyc3RfY2FjaGVkKCZleGVjbGlzdHMtPnF1ZXVlKSkp IHsKIAkJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnAgPSB0b19wcmlvbGlzdChyYik7CiAJCXN0cnVj dCBpOTE1X3JlcXVlc3QgKnJxLCAqcm47CkBAIC03NzQsMTggKzc3NCwxNSBAQCBzdGF0aWMgYm9v bCBfX2d1Y19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJCQlpZiAo cG9ydCA9PSBsYXN0X3BvcnQpCiAJCQkJCWdvdG8gZG9uZTsKIAotCQkJCWlmIChzdWJtaXQpCi0J CQkJCXBvcnRfYXNzaWduKHBvcnQsIGxhc3QpOworCQkJCSpwb3J0ID0gc2NoZWR1bGVfaW4obGFz dCwKKwkJCQkJCSAgICBwb3J0IC0gZXhlY2xpc3RzLT5pbmZsaWdodCk7CiAJCQkJcG9ydCsrOwog CQkJfQogCiAJCQlsaXN0X2RlbF9pbml0KCZycS0+c2NoZWQubGluayk7Ci0KIAkJCV9faTkxNV9y ZXF1ZXN0X3N1Ym1pdChycSk7Ci0JCQl0cmFjZV9pOTE1X3JlcXVlc3RfaW4ocnEsIHBvcnRfaW5k ZXgocG9ydCwgZXhlY2xpc3RzKSk7Ci0KLQkJCWxhc3QgPSBycTsKIAkJCXN1Ym1pdCA9IHRydWU7 CisJCQlsYXN0ID0gcnE7CiAJCX0KIAogCQlyYl9lcmFzZV9jYWNoZWQoJnAtPm5vZGUsICZleGVj bGlzdHMtPnF1ZXVlKTsKQEAgLTc5NCw1OCArNzkxLDQxIEBAIHN0YXRpYyBib29sIF9fZ3VjX2Rl cXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogZG9uZToKIAlleGVjbGlzdHMt PnF1ZXVlX3ByaW9yaXR5X2hpbnQgPQogCQlyYiA/IHRvX3ByaW9saXN0KHJiKS0+cHJpb3JpdHkg OiBJTlRfTUlOOwotCWlmIChzdWJtaXQpCi0JCXBvcnRfYXNzaWduKHBvcnQsIGxhc3QpOwotCWlm IChsYXN0KQotCQlleGVjbGlzdHNfdXNlcl9iZWdpbihleGVjbGlzdHMsIGV4ZWNsaXN0cy0+cG9y dCk7Ci0KLQkvKiBXZSBtdXN0IGFsd2F5cyBrZWVwIHRoZSBiZWFzdCBmZWQgaWYgd2UgaGF2ZSB3 b3JrIHBpbGVkIHVwICovCi0JR0VNX0JVR19PTihwb3J0X2lzc2V0KGV4ZWNsaXN0cy0+cG9ydCkg JiYKLQkJICAgIWV4ZWNsaXN0c19pc19hY3RpdmUoZXhlY2xpc3RzLCBFWEVDTElTVFNfQUNUSVZF X1VTRVIpKTsKLQlHRU1fQlVHX09OKHJiX2ZpcnN0X2NhY2hlZCgmZXhlY2xpc3RzLT5xdWV1ZSkg JiYKLQkJICAgIXBvcnRfaXNzZXQoZXhlY2xpc3RzLT5wb3J0KSk7Ci0KLQlyZXR1cm4gc3VibWl0 OwotfQotCi1zdGF0aWMgdm9pZCBndWNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCi17Ci0JaWYgKF9fZ3VjX2RlcXVldWUoZW5naW5lKSkKLQkJZ3VjX3N1Ym1pdChlbmdp bmUpOworCWlmIChzdWJtaXQpIHsKKwkJKnBvcnQgPSBzY2hlZHVsZV9pbihsYXN0LCBwb3J0IC0g ZXhlY2xpc3RzLT5pbmZsaWdodCk7CisJCSorK3BvcnQgPSBOVUxMOworCQlndWNfc3VibWl0KGVu Z2luZSwgZmlyc3QsIHBvcnQpOworCX0KKwlleGVjbGlzdHMtPmFjdGl2ZSA9IGV4ZWNsaXN0cy0+ aW5mbGlnaHQ7CiB9CiAKIHN0YXRpYyB2b2lkIGd1Y19zdWJtaXNzaW9uX3Rhc2tsZXQodW5zaWdu ZWQgbG9uZyBkYXRhKQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKiBjb25zdCBlbmdpbmUg PSAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqKWRhdGE7CiAJc3RydWN0IGludGVsX2VuZ2luZV9l eGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7Ci0Jc3RydWN0 IGV4ZWNsaXN0X3BvcnQgKnBvcnQgPSBleGVjbGlzdHMtPnBvcnQ7Ci0Jc3RydWN0IGk5MTVfcmVx dWVzdCAqcnE7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqKnBvcnQsICpycTsKIAl1bnNpZ25lZCBs b25nIGZsYWdzOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+YWN0aXZlLmxvY2ssIGZs YWdzKTsKIAotCXJxID0gcG9ydF9yZXF1ZXN0KHBvcnQpOwotCXdoaWxlIChycSAmJiBpOTE1X3Jl cXVlc3RfY29tcGxldGVkKHJxKSkgewotCQl0cmFjZV9pOTE1X3JlcXVlc3Rfb3V0KHJxKTsKLQkJ aTkxNV9yZXF1ZXN0X3B1dChycSk7CisJZm9yIChwb3J0ID0gZXhlY2xpc3RzLT5pbmZsaWdodDsg KHJxID0gKnBvcnQpOyBwb3J0KyspIHsKKwkJaWYgKCFpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJx KSkKKwkJCWJyZWFrOwogCi0JCXBvcnQgPSBleGVjbGlzdHNfcG9ydF9jb21wbGV0ZShleGVjbGlz dHMsIHBvcnQpOwotCQlpZiAocG9ydF9pc3NldChwb3J0KSkgewotCQkJZXhlY2xpc3RzX3VzZXJf YmVnaW4oZXhlY2xpc3RzLCBwb3J0KTsKLQkJCXJxID0gcG9ydF9yZXF1ZXN0KHBvcnQpOwotCQl9 IGVsc2UgewotCQkJZXhlY2xpc3RzX3VzZXJfZW5kKGV4ZWNsaXN0cyk7Ci0JCQlycSA9IE5VTEw7 Ci0JCX0KKwkJc2NoZWR1bGVfb3V0KHJxKTsKKwl9CisJaWYgKHBvcnQgIT0gZXhlY2xpc3RzLT5p bmZsaWdodCkgeworCQlpbnQgaWR4ID0gcG9ydCAtIGV4ZWNsaXN0cy0+aW5mbGlnaHQ7CisJCWlu dCByZW0gPSBBUlJBWV9TSVpFKGV4ZWNsaXN0cy0+aW5mbGlnaHQpIC0gaWR4OworCQltZW1tb3Zl KGV4ZWNsaXN0cy0+aW5mbGlnaHQsIHBvcnQsIHJlbSAqIHNpemVvZigqcG9ydCkpOwogCX0KIAot CWlmIChleGVjbGlzdHNfaXNfYWN0aXZlKGV4ZWNsaXN0cywgRVhFQ0xJU1RTX0FDVElWRV9QUkVF TVBUKSAmJgotCSAgICBpbnRlbF9yZWFkX3N0YXR1c19wYWdlKGVuZ2luZSwgSTkxNV9HRU1fSFdT X1BSRUVNUFQpID09CisJaWYgKGludGVsX3JlYWRfc3RhdHVzX3BhZ2UoZW5naW5lLCBJOTE1X0dF TV9IV1NfUFJFRU1QVCkgPT0KIAkgICAgR1VDX1BSRUVNUFRfRklOSVNIRUQpCiAJCWNvbXBsZXRl X3ByZWVtcHRfY29udGV4dChlbmdpbmUpOwogCi0JaWYgKCFleGVjbGlzdHNfaXNfYWN0aXZlKGV4 ZWNsaXN0cywgRVhFQ0xJU1RTX0FDVElWRV9QUkVFTVBUKSkKLQkJZ3VjX2RlcXVldWUoZW5naW5l KTsKKwlpZiAoIWludGVsX3JlYWRfc3RhdHVzX3BhZ2UoZW5naW5lLCBJOTE1X0dFTV9IV1NfUFJF RU1QVCkpCisJCV9fZ3VjX2RlcXVldWUoZW5naW5lKTsKIAogCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmVuZ2luZS0+YWN0aXZlLmxvY2ssIGZsYWdzKTsKIH0KQEAgLTk1OSw3ICs5MzksNiBAQCBz dGF0aWMgdm9pZCBndWNfY2FuY2VsX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIAogCWV4ZWNsaXN0cy0+cXVldWVfcHJpb3JpdHlfaGludCA9IElOVF9NSU47CiAJZXhl Y2xpc3RzLT5xdWV1ZSA9IFJCX1JPT1RfQ0FDSEVEOwotCUdFTV9CVUdfT04ocG9ydF9pc3NldChl eGVjbGlzdHMtPnBvcnQpKTsKIAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+YWN0 aXZlLmxvY2ssIGZsYWdzKTsKIH0KQEAgLTE0MjIsNyArMTQwMSw3IEBAIGludCBpbnRlbF9ndWNf c3VibWlzc2lvbl9lbmFibGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCSAqIGFuZCBpdCBpcyBn dWFyYW50ZWVkIHRoYXQgaXQgd2lsbCByZW1vdmUgdGhlIHdvcmsgaXRlbSBmcm9tIHRoZQogCSAq IHF1ZXVlIGJlZm9yZSBvdXIgcmVxdWVzdCBpcyBjb21wbGV0ZWQuCiAJICovCi0JQlVJTERfQlVH X09OKEFSUkFZX1NJWkUoZW5naW5lLT5leGVjbGlzdHMucG9ydCkgKgorCUJVSUxEX0JVR19PTihB UlJBWV9TSVpFKGVuZ2luZS0+ZXhlY2xpc3RzLmluZmxpZ2h0KSAqCiAJCSAgICAgc2l6ZW9mKHN0 cnVjdCBndWNfd3FfaXRlbSkgKgogCQkgICAgIEk5MTVfTlVNX0VOR0lORVMgPiBHVUNfV1FfU0la RSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3Jl cXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYwpp bmRleCA2OTNlYTA5N2MwNWYuLjIxODY3MWIyNTBkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYwpAQCAtMzY3LDEzICszNjcsMTUgQEAgc3RhdGlj IGludCBfX2lndF9icmVhZGNydW1ic19zbW9rZXRlc3Qodm9pZCAqYXJnKQogCiAJCWlmICghd2Fp dF9ldmVudF90aW1lb3V0KHdhaXQtPndhaXQsCiAJCQkJCWk5MTVfc3dfZmVuY2VfZG9uZSh3YWl0 KSwKLQkJCQkJSFogLyAyKSkgeworCQkJCQk1ICogSFopKSB7CiAJCQlzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSA9IHJlcXVlc3RzW2NvdW50IC0gMV07CiAKLQkJCXByX2Vycigid2FpdGluZyBmb3Ig JWQgZmVuY2VzIChsYXN0ICVsbHg6JWxsZCkgb24gJXMgdGltZWQgb3V0IVxuIiwKLQkJCSAgICAg ICBjb3VudCwKKwkJCXByX2Vycigid2FpdGluZyBmb3IgJWQvJWQgZmVuY2VzIChsYXN0ICVsbHg6 JWxsZCkgb24gJXMgdGltZWQgb3V0IVxuIiwKKwkJCSAgICAgICBhdG9taWNfcmVhZCgmd2FpdC0+ cGVuZGluZyksIGNvdW50LAogCQkJICAgICAgIHJxLT5mZW5jZS5jb250ZXh0LCBycS0+ZmVuY2Uu c2Vxbm8sCiAJCQkgICAgICAgdC0+ZW5naW5lLT5uYW1lKTsKKwkJCUdFTV9UUkFDRV9EVU1QKCk7 CisKIAkJCWk5MTVfZ2VtX3NldF93ZWRnZWQodC0+ZW5naW5lLT5pOTE1KTsKIAkJCUdFTV9CVUdf T04oIWk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEpKTsKIAkJCWk5MTVfc3dfZmVuY2Vfd2FpdCh3 YWl0KTsKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4