From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ankur Arora Subject: [RFC PATCH 09/16] xen/evtchn: support evtchn in xenhost_t Date: Thu, 9 May 2019 10:25:33 -0700 Message-ID: <20190509172540.12398-10-ankur.a.arora__12801.2626942777$1557422821$gmane$org@oracle.com> References: <20190509172540.12398-1-ankur.a.arora@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hOmno-0000jW-B2 for xen-devel@lists.xenproject.org; Thu, 09 May 2019 17:25:52 +0000 In-Reply-To: <20190509172540.12398-1-ankur.a.arora@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org Cc: jgross@suse.com, sstabellini@kernel.org, konrad.wilk@oracle.com, ankur.a.arora@oracle.com, pbonzini@redhat.com, boris.ostrovsky@oracle.com, joao.m.martins@oracle.com List-Id: xen-devel@lists.xenproject.org TGFyZ2VseSBtZWNoYW5pY2FsIHBhdGNoIHRoYXQgYWRkcyBhIG5ldyBwYXJhbSwgeGVuaG9zdF90 ICogdG8gdGhlCmV2dGNobiBpbnRlcmZhY2VzLiBUaGUgZXZ0Y2huIHBvcnQgaW5zdGVhZCBvZiBi ZWluZyBkb21haW4gdW5pcXVlLCBpcwpub3cgc2NvcGVkIHRvIHhlbmhvc3RfdC4KCkFzIHBhcnQg b2YgdXBjYWxsIGhhbmRsaW5nIHdlIG5vdyBsb29rIGF0IGFsbCB0aGUgeGVuaG9zdHMgYW5kLCBm b3IKZXZ0Y2huXzJsLCB0aGUgeGVuaG9zdCdzIHNoYXJlZF9pbmZvIGFuZCB2Y3B1X2luZm8uIE90 aGVyIHRoYW4gdGhpcwpldmVudCBoYW5kbGluZyBpcyBsYXJnbGV5IHVuY2hhbmdlZC4KCk5vdGUg dGhhdCB0aGUgSVBJLCB0aW1lciwgVklSUSwgRlVOQ1RJT04sIFBNVSBldGMgdmVjdG9ycyByZW1h aW4KYXR0YWNoZWQgdG8geGhfZGVmYXVsdC4gT25seSBpbnRlcmRvbWFpbiBldnRjaG5zIGFyZSBh bGxvd2FibGUgYXMKeGhfcmVtb3RlLgoKVE9ETzoKICAtIHRvIG1pbmltaXplIHRoZSBjaGFuZ2Vz LCBldnRjaG4gRklGTyBpcyBkaXNhYmxlZCBmb3Igbm93LgoKU2lnbmVkLW9mZi1ieTogQW5rdXIg QXJvcmEgPGFua3VyLmEuYXJvcmFAb3JhY2xlLmNvbT4KLS0tCiBhcmNoL3g4Ni9wY2kveGVuLmMg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTYgKy0KIGFyY2gveDg2L3hlbi9lbmxpZ2h0ZW5f aHZtLmMgICAgICAgICAgICAgICB8ICAgMiArLQogYXJjaC94ODYveGVuL2lycS5jICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAyICstCiBhcmNoL3g4Ni94ZW4vc21wLmMgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgMTYgKy0KIGFyY2gveDg2L3hlbi9zbXBfcHYuYyAgICAgICAgICAgICAg ICAgICAgICB8ICAgNCArLQogYXJjaC94ODYveGVuL3RpbWUuYyAgICAgICAgICAgICAgICAgICAg ICAgIHwgICA1ICstCiBhcmNoL3g4Ni94ZW4veGVuLW9wcy5oICAgICAgICAgICAgICAgICAgICAg fCAgIDEgKwogYXJjaC94ODYveGVuL3hlbmhvc3QuYyAgICAgICAgICAgICAgICAgICAgIHwgIDE2 ICsKIGRyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2sveGVuYnVzLmMgICAgICAgICB8ICAgMiArLQog ZHJpdmVycy9ibG9jay94ZW4tYmxrZnJvbnQuYyAgICAgICAgICAgICAgIHwgICAyICstCiBkcml2 ZXJzL2lucHV0L21pc2MveGVuLWtiZGZyb250LmMgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMv bmV0L3hlbi1uZXRiYWNrL2ludGVyZmFjZS5jICAgICAgICB8ICAgOCArLQogZHJpdmVycy9uZXQv eGVuLW5ldGZyb250LmMgICAgICAgICAgICAgICAgIHwgICA2ICstCiBkcml2ZXJzL3BjaS94ZW4t cGNpZnJvbnQuYyAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMveGVuL2FjcGkuYyAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBkcml2ZXJzL3hlbi9iYWxsb29uLmMgICAg ICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMveGVuL2V2ZW50cy9NYWtlZmlsZSAg ICAgICAgICAgICAgICB8ICAgMSAtCiBkcml2ZXJzL3hlbi9ldmVudHMvZXZlbnRzXzJsLmMgICAg ICAgICAgICAgfCAxODggKysrKystLS0tLQogZHJpdmVycy94ZW4vZXZlbnRzL2V2ZW50c19iYXNl LmMgICAgICAgICAgIHwgMzc5ICsrKysrKysrKysrKy0tLS0tLS0tLQogZHJpdmVycy94ZW4vZXZl bnRzL2V2ZW50c19maWZvLmMgICAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL3hlbi9ldmVudHMv ZXZlbnRzX2ludGVybmFsLmggICAgICAgfCAgNzggKystLS0KIGRyaXZlcnMveGVuL2V2dGNobi5j ICAgICAgICAgICAgICAgICAgICAgICB8ICAyMiArLQogZHJpdmVycy94ZW4vZmFsbGJhY2suYyAg ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMveGVuL2dudGFsbG9jLmMgICAgICAg ICAgICAgICAgICAgICB8ICAgOCArLQogZHJpdmVycy94ZW4vZ250ZGV2LmMgICAgICAgICAgICAg ICAgICAgICAgIHwgICA4ICstCiBkcml2ZXJzL3hlbi9tY2Vsb2cuYyAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDIgKy0KIGRyaXZlcnMveGVuL3BjcHUuYyAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMiArLQogZHJpdmVycy94ZW4vcHJlZW1wdC5jICAgICAgICAgICAgICAgICAgICAgIHwg ICAxICsKIGRyaXZlcnMveGVuL3ByaXZjbWQuYyAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAr CiBkcml2ZXJzL3hlbi9zeXMtaHlwZXJ2aXNvci5jICAgICAgICAgICAgICAgfCAgIDIgKy0KIGRy aXZlcnMveGVuL3RpbWUuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogZHJpdmVy cy94ZW4veGVuLXBjaWJhY2sveGVuYnVzLmMgICAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL3hl bi94ZW4tc2NzaWJhY2suYyAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIGRyaXZlcnMveGVuL3hl bmJ1cy94ZW5idXNfY2xpZW50LmMgICAgICAgICB8ICAgMiArLQogZHJpdmVycy94ZW4veGVuYnVz L3hlbmJ1c19jb21tcy5jICAgICAgICAgIHwgICA2ICstCiBkcml2ZXJzL3hlbi94ZW5idXMveGVu YnVzX3Byb2JlLmMgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1c19w cm9iZV9iYWNrZW5kLmMgIHwgICAxICsKIGRyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfcHJvYmVf ZnJvbnRlbmQuYyB8ICAgMSArCiBkcml2ZXJzL3hlbi94ZW5idXMveGVuYnVzX3hzLmMgICAgICAg ICAgICAgfCAgIDEgKwogaW5jbHVkZS94ZW4vZXZlbnRzLmggICAgICAgICAgICAgICAgICAgICAg IHwgIDQ1ICstLQogaW5jbHVkZS94ZW4veGVuaG9zdC5oICAgICAgICAgICAgICAgICAgICAgIHwg IDE3ICsKIDQxIGZpbGVzIGNoYW5nZWQsIDQ4MyBpbnNlcnRpb25zKCspLCAzODMgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvcGNpL3hlbi5jIGIvYXJjaC94ODYvcGNpL3hlbi5j CmluZGV4IGQxYTNiOWYwODI4OS4uOWFhNTkxYjVmYTNiIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9w Y2kveGVuLmMKKysrIGIvYXJjaC94ODYvcGNpL3hlbi5jCkBAIC0xOSw2ICsxOSw4IEBACiAjaW5j bHVkZSA8YXNtL3BjaV94ODYuaD4KIAogI2luY2x1ZGUgPGFzbS94ZW4vaHlwZXJ2aXNvci5oPgor I2luY2x1ZGUgPHhlbi9pbnRlcmZhY2UveGVuLmg+CisjaW5jbHVkZSA8eGVuL3hlbmhvc3QuaD4K IAogI2luY2x1ZGUgPHhlbi9mZWF0dXJlcy5oPgogI2luY2x1ZGUgPHhlbi9ldmVudHMuaD4KQEAg LTQ2LDcgKzQ4LDcgQEAgc3RhdGljIGludCB4ZW5fcGNpZnJvbnRfZW5hYmxlX2lycShzdHJ1Y3Qg cGNpX2RldiAqZGV2KQogCWlmIChnc2kgPCBucl9sZWdhY3lfaXJxcygpKQogCQlzaGFyZSA9IDA7 CiAKLQlyYyA9IHhlbl9iaW5kX3BpcnFfZ3NpX3RvX2lycShnc2ksIHBpcnEsIHNoYXJlLCAicGNp ZnJvbnQiKTsKKwlyYyA9IHhlbl9iaW5kX3BpcnFfZ3NpX3RvX2lycSh4aF9kZWZhdWx0LCBnc2ks IHBpcnEsIHNoYXJlLCAicGNpZnJvbnQiKTsKIAlpZiAocmMgPCAwKSB7CiAJCWRldl93YXJuKCZk ZXYtPmRldiwgIlhlbiBQQ0k6IGZhaWxlZCB0byBiaW5kIEdTSSVkIChQSVJRJWQpIHRvIElSUTog JWRcbiIsCiAJCQkgZ3NpLCBwaXJxLCByYyk7CkBAIC05Niw3ICs5OCw3IEBAIHN0YXRpYyBpbnQg eGVuX3JlZ2lzdGVyX3BpcnEodTMyIGdzaSwgaW50IGdzaV9vdmVycmlkZSwgaW50IHRyaWdnZXJp bmcsCiAJaWYgKGdzaV9vdmVycmlkZSA+PSAwKQogCQlnc2kgPSBnc2lfb3ZlcnJpZGU7CiAKLQlp cnEgPSB4ZW5fYmluZF9waXJxX2dzaV90b19pcnEoZ3NpLCBtYXBfaXJxLnBpcnEsIHNoYXJlYWJs ZSwgbmFtZSk7CisJaXJxID0geGVuX2JpbmRfcGlycV9nc2lfdG9faXJxKHhoX2RlZmF1bHQsIGdz aSwgbWFwX2lycS5waXJxLCBzaGFyZWFibGUsIG5hbWUpOwogCWlmIChpcnEgPCAwKQogCQlnb3Rv IG91dDsKIApAQCAtMTgwLDcgKzE4Miw3IEBAIHN0YXRpYyBpbnQgeGVuX3NldHVwX21zaV9pcnFz KHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCBudmVjLCBpbnQgdHlwZSkKIAkJZ290byBlcnJvcjsK IAlpID0gMDsKIAlmb3JfZWFjaF9wY2lfbXNpX2VudHJ5KG1zaWRlc2MsIGRldikgewotCQlpcnEg PSB4ZW5fYmluZF9waXJxX21zaV90b19pcnEoZGV2LCBtc2lkZXNjLCB2W2ldLAorCQlpcnEgPSB4 ZW5fYmluZF9waXJxX21zaV90b19pcnEoeGhfZGVmYXVsdCwgZGV2LCBtc2lkZXNjLCB2W2ldLAog CQkJCQkgICAgICAgKHR5cGUgPT0gUENJX0NBUF9JRF9NU0kpID8gbnZlYyA6IDEsCiAJCQkJCSAg ICAgICAodHlwZSA9PSBQQ0lfQ0FQX0lEX01TSVgpID8KIAkJCQkJICAgICAgICJwY2lmcm9udC1t c2kteCIgOgpAQCAtMjM0LDcgKzIzNiw3IEBAIHN0YXRpYyBpbnQgeGVuX2h2bV9zZXR1cF9tc2lf aXJxcyhzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgbnZlYywgaW50IHR5cGUpCiAJCXJldHVybiAx OwogCiAJZm9yX2VhY2hfcGNpX21zaV9lbnRyeShtc2lkZXNjLCBkZXYpIHsKLQkJcGlycSA9IHhl bl9hbGxvY2F0ZV9waXJxX21zaShkZXYsIG1zaWRlc2MpOworCQlwaXJxID0geGVuX2FsbG9jYXRl X3BpcnFfbXNpKHhoX2RlZmF1bHQsIGRldiwgbXNpZGVzYyk7CiAJCWlmIChwaXJxIDwgMCkgewog CQkJaXJxID0gLUVOT0RFVjsKIAkJCWdvdG8gZXJyb3I7CkBAIC0yNDIsNyArMjQ0LDcgQEAgc3Rh dGljIGludCB4ZW5faHZtX3NldHVwX21zaV9pcnFzKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCBu dmVjLCBpbnQgdHlwZSkKIAkJeGVuX21zaV9jb21wb3NlX21zZyhkZXYsIHBpcnEsICZtc2cpOwog CQlfX3BjaV93cml0ZV9tc2lfbXNnKG1zaWRlc2MsICZtc2cpOwogCQlkZXZfZGJnKCZkZXYtPmRl diwgInhlbjogbXNpIGJvdW5kIHRvIHBpcnE9JWRcbiIsIHBpcnEpOwotCQlpcnEgPSB4ZW5fYmlu ZF9waXJxX21zaV90b19pcnEoZGV2LCBtc2lkZXNjLCBwaXJxLAorCQlpcnEgPSB4ZW5fYmluZF9w aXJxX21zaV90b19pcnEoeGhfZGVmYXVsdCwgZGV2LCBtc2lkZXNjLCBwaXJxLAogCQkJCQkgICAg ICAgKHR5cGUgPT0gUENJX0NBUF9JRF9NU0kpID8gbnZlYyA6IDEsCiAJCQkJCSAgICAgICAodHlw ZSA9PSBQQ0lfQ0FQX0lEX01TSVgpID8KIAkJCQkJICAgICAgICJtc2kteCIgOiAibXNpIiwKQEAg LTMzNyw3ICszMzksNyBAQCBzdGF0aWMgaW50IHhlbl9pbml0ZG9tX3NldHVwX21zaV9pcnFzKHN0 cnVjdCBwY2lfZGV2ICpkZXYsIGludCBudmVjLCBpbnQgdHlwZSkKIAkJCWdvdG8gb3V0OwogCQl9 CiAKLQkJcmV0ID0geGVuX2JpbmRfcGlycV9tc2lfdG9faXJxKGRldiwgbXNpZGVzYywgbWFwX2ly cS5waXJxLAorCQlyZXQgPSB4ZW5fYmluZF9waXJxX21zaV90b19pcnEoeGhfZGVmYXVsdCwgZGV2 LCBtc2lkZXNjLCBtYXBfaXJxLnBpcnEsCiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAodHlwZSA9PSBQQ0lfQ0FQX0lEX01TSSkgPyBudmVjIDogMSwKIAkJICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh0eXBlID09IFBDSV9DQVBfSURfTVNJWCkgPyAibXNpLXgiIDogIm1z aSIsCiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21pZCk7CkBAIC00OTYsNyAr NDk4LDcgQEAgaW50IF9faW5pdCBwY2lfeGVuX2luaXRpYWxfZG9tYWluKHZvaWQpCiAJfQogCWlm ICgwID09IG5yX2lvYXBpY3MpIHsKIAkJZm9yIChpcnEgPSAwOyBpcnEgPCBucl9sZWdhY3lfaXJx cygpOyBpcnErKykKLQkJCXhlbl9iaW5kX3BpcnFfZ3NpX3RvX2lycShpcnEsIGlycSwgMCwgInh0 LXBpYyIpOworCQkJeGVuX2JpbmRfcGlycV9nc2lfdG9faXJxKHhoX2RlZmF1bHQsIGlycSwgaXJx LCAwLCAieHQtcGljIik7CiAJfQogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYv eGVuL2VubGlnaHRlbl9odm0uYyBiL2FyY2gveDg2L3hlbi9lbmxpZ2h0ZW5faHZtLmMKaW5kZXgg YzE5ODFhM2U0OTg5Li5lZmU0ODNjZWViOWEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L3hlbi9lbmxp Z2h0ZW5faHZtLmMKKysrIGIvYXJjaC94ODYveGVuL2VubGlnaHRlbl9odm0uYwpAQCAtMjY2LDcg KzI2Niw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCB4ZW5faHZtX2d1ZXN0X2luaXQodm9pZCkKIAl4 ZW5faHZtX3NtcF9pbml0KCk7CiAJV0FSTl9PTih4ZW5fY3B1aHBfc2V0dXAoeGVuX2NwdV91cF9w cmVwYXJlX2h2bSwgeGVuX2NwdV9kZWFkX2h2bSkpOwogCXhlbl91bnBsdWdfZW11bGF0ZWRfZGV2 aWNlcygpOwotCXg4Nl9pbml0LmlycXMuaW50cl9pbml0ID0geGVuX2luaXRfSVJROworCXg4Nl9p bml0LmlycXMuaW50cl9pbml0ID0geGVuaG9zdF9pbml0X0lSUTsKIAl4ZW5faHZtX2luaXRfdGlt ZV9vcHMoKTsKIAl4ZW5faHZtX2luaXRfbW11X29wcygpOwogCmRpZmYgLS1naXQgYS9hcmNoL3g4 Ni94ZW4vaXJxLmMgYi9hcmNoL3g4Ni94ZW4vaXJxLmMKaW5kZXggZjc2MGE2YWJmYjFlLi4zMjY3 YzM1MDVhNjQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L3hlbi9pcnEuYworKysgYi9hcmNoL3g4Ni94 ZW4vaXJxLmMKQEAgLTE3MCw1ICsxNzAsNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHB2X2lycV9v cHMgeGVuX2lycV9vcHMgX19pbml0Y29uc3QgPSB7CiB2b2lkIF9faW5pdCB4ZW5faW5pdF9pcnFf b3BzKHZvaWQpCiB7CiAJcHZfb3BzLmlycSA9IHhlbl9pcnFfb3BzOwotCXg4Nl9pbml0LmlycXMu aW50cl9pbml0ID0geGVuX2luaXRfSVJROworCXg4Nl9pbml0LmlycXMuaW50cl9pbml0ID0geGVu aG9zdF9pbml0X0lSUTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L3hlbi9zbXAuYyBiL2FyY2gv eDg2L3hlbi9zbXAuYwppbmRleCA4Njc1MjRiZTAwNjUuLmMxODZkODY4ZGM1YyAxMDA2NDQKLS0t IGEvYXJjaC94ODYveGVuL3NtcC5jCisrKyBiL2FyY2gveDg2L3hlbi9zbXAuYwpAQCAtNjYsNyAr NjYsNyBAQCBpbnQgeGVuX3NtcF9pbnRyX2luaXQodW5zaWduZWQgaW50IGNwdSkKIAljaGFyICpy ZXNjaGVkX25hbWUsICpjYWxsZnVuY19uYW1lLCAqZGVidWdfbmFtZTsKIAogCXJlc2NoZWRfbmFt ZSA9IGthc3ByaW50ZihHRlBfS0VSTkVMLCAicmVzY2hlZCVkIiwgY3B1KTsKLQlyYyA9IGJpbmRf aXBpX3RvX2lycWhhbmRsZXIoWEVOX1JFU0NIRURVTEVfVkVDVE9SLAorCXJjID0gYmluZF9pcGlf dG9faXJxaGFuZGxlcih4aF9kZWZhdWx0LCBYRU5fUkVTQ0hFRFVMRV9WRUNUT1IsCiAJCQkJICAg IGNwdSwKIAkJCQkgICAgeGVuX3Jlc2NoZWR1bGVfaW50ZXJydXB0LAogCQkJCSAgICBJUlFGX1BF UkNQVXxJUlFGX05PQkFMQU5DSU5HLApAQCAtNzgsNyArNzgsNyBAQCBpbnQgeGVuX3NtcF9pbnRy X2luaXQodW5zaWduZWQgaW50IGNwdSkKIAlwZXJfY3B1KHhlbl9yZXNjaGVkX2lycSwgY3B1KS5u YW1lID0gcmVzY2hlZF9uYW1lOwogCiAJY2FsbGZ1bmNfbmFtZSA9IGthc3ByaW50ZihHRlBfS0VS TkVMLCAiY2FsbGZ1bmMlZCIsIGNwdSk7Ci0JcmMgPSBiaW5kX2lwaV90b19pcnFoYW5kbGVyKFhF Tl9DQUxMX0ZVTkNUSU9OX1ZFQ1RPUiwKKwlyYyA9IGJpbmRfaXBpX3RvX2lycWhhbmRsZXIoeGhf ZGVmYXVsdCwgWEVOX0NBTExfRlVOQ1RJT05fVkVDVE9SLAogCQkJCSAgICBjcHUsCiAJCQkJICAg IHhlbl9jYWxsX2Z1bmN0aW9uX2ludGVycnVwdCwKIAkJCQkgICAgSVJRRl9QRVJDUFV8SVJRRl9O T0JBTEFOQ0lORywKQEAgLTkwLDcgKzkwLDcgQEAgaW50IHhlbl9zbXBfaW50cl9pbml0KHVuc2ln bmVkIGludCBjcHUpCiAJcGVyX2NwdSh4ZW5fY2FsbGZ1bmNfaXJxLCBjcHUpLm5hbWUgPSBjYWxs ZnVuY19uYW1lOwogCiAJZGVidWdfbmFtZSA9IGthc3ByaW50ZihHRlBfS0VSTkVMLCAiZGVidWcl ZCIsIGNwdSk7Ci0JcmMgPSBiaW5kX3ZpcnFfdG9faXJxaGFuZGxlcihWSVJRX0RFQlVHLCBjcHUs IHhlbl9kZWJ1Z19pbnRlcnJ1cHQsCisJcmMgPSBiaW5kX3ZpcnFfdG9faXJxaGFuZGxlcih4aF9k ZWZhdWx0LCBWSVJRX0RFQlVHLCBjcHUsIHhlbl9kZWJ1Z19pbnRlcnJ1cHQsCiAJCQkJICAgICBJ UlFGX1BFUkNQVSB8IElSUUZfTk9CQUxBTkNJTkcsCiAJCQkJICAgICBkZWJ1Z19uYW1lLCBOVUxM KTsKIAlpZiAocmMgPCAwKQpAQCAtOTksNyArOTksNyBAQCBpbnQgeGVuX3NtcF9pbnRyX2luaXQo dW5zaWduZWQgaW50IGNwdSkKIAlwZXJfY3B1KHhlbl9kZWJ1Z19pcnEsIGNwdSkubmFtZSA9IGRl YnVnX25hbWU7CiAKIAljYWxsZnVuY19uYW1lID0ga2FzcHJpbnRmKEdGUF9LRVJORUwsICJjYWxs ZnVuY3NpbmdsZSVkIiwgY3B1KTsKLQlyYyA9IGJpbmRfaXBpX3RvX2lycWhhbmRsZXIoWEVOX0NB TExfRlVOQ1RJT05fU0lOR0xFX1ZFQ1RPUiwKKwlyYyA9IGJpbmRfaXBpX3RvX2lycWhhbmRsZXIo eGhfZGVmYXVsdCwgWEVOX0NBTExfRlVOQ1RJT05fU0lOR0xFX1ZFQ1RPUiwKIAkJCQkgICAgY3B1 LAogCQkJCSAgICB4ZW5fY2FsbF9mdW5jdGlvbl9zaW5nbGVfaW50ZXJydXB0LAogCQkJCSAgICBJ UlFGX1BFUkNQVXxJUlFGX05PQkFMQU5DSU5HLApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgX19p bml0IHhlbl9zbXBfY3B1c19kb25lKHVuc2lnbmVkIGludCBtYXhfY3B1cykKIAogdm9pZCB4ZW5f c21wX3NlbmRfcmVzY2hlZHVsZShpbnQgY3B1KQogewotCXhlbl9zZW5kX0lQSV9vbmUoY3B1LCBY RU5fUkVTQ0hFRFVMRV9WRUNUT1IpOworCXhlbl9zZW5kX0lQSV9vbmUoeGhfZGVmYXVsdCwgY3B1 LCBYRU5fUkVTQ0hFRFVMRV9WRUNUT1IpOwogfQogCiBzdGF0aWMgdm9pZCBfX3hlbl9zZW5kX0lQ SV9tYXNrKGNvbnN0IHN0cnVjdCBjcHVtYXNrICptYXNrLApAQCAtMTY0LDcgKzE2NCw3IEBAIHN0 YXRpYyB2b2lkIF9feGVuX3NlbmRfSVBJX21hc2soY29uc3Qgc3RydWN0IGNwdW1hc2sgKm1hc2ss CiAJdW5zaWduZWQgY3B1OwogCiAJZm9yX2VhY2hfY3B1X2FuZChjcHUsIG1hc2ssIGNwdV9vbmxp bmVfbWFzaykKLQkJeGVuX3NlbmRfSVBJX29uZShjcHUsIHZlY3Rvcik7CisJCXhlbl9zZW5kX0lQ SV9vbmUoeGhfZGVmYXVsdCwgY3B1LCB2ZWN0b3IpOwogfQogCiB2b2lkIHhlbl9zbXBfc2VuZF9j YWxsX2Z1bmN0aW9uX2lwaShjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbWFzaykKQEAgLTI0Miw3ICsy NDIsNyBAQCB2b2lkIHhlbl9zZW5kX0lQSV9zZWxmKGludCB2ZWN0b3IpCiAJaW50IHhlbl92ZWN0 b3IgPSB4ZW5fbWFwX3ZlY3Rvcih2ZWN0b3IpOwogCiAJaWYgKHhlbl92ZWN0b3IgPj0gMCkKLQkJ eGVuX3NlbmRfSVBJX29uZShzbXBfcHJvY2Vzc29yX2lkKCksIHhlbl92ZWN0b3IpOworCQl4ZW5f c2VuZF9JUElfb25lKHhoX2RlZmF1bHQsIHNtcF9wcm9jZXNzb3JfaWQoKSwgeGVuX3ZlY3Rvcik7 CiB9CiAKIHZvaWQgeGVuX3NlbmRfSVBJX21hc2tfYWxsYnV0c2VsZihjb25zdCBzdHJ1Y3QgY3B1 bWFzayAqbWFzaywKQEAgLTI1OSw3ICsyNTksNyBAQCB2b2lkIHhlbl9zZW5kX0lQSV9tYXNrX2Fs bGJ1dHNlbGYoY29uc3Qgc3RydWN0IGNwdW1hc2sgKm1hc2ssCiAJCWlmICh0aGlzX2NwdSA9PSBj cHUpCiAJCQljb250aW51ZTsKIAotCQl4ZW5fc2VuZF9JUElfb25lKGNwdSwgeGVuX3ZlY3Rvcik7 CisJCXhlbl9zZW5kX0lQSV9vbmUoeGhfZGVmYXVsdCwgY3B1LCB4ZW5fdmVjdG9yKTsKIAl9CiB9 CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L3hlbi9zbXBfcHYuYyBiL2FyY2gveDg2L3hlbi9zbXBf cHYuYwppbmRleCBmNGVhOWVhYzhiNmEuLmY4MjkyYmUyNWQ1MiAxMDA2NDQKLS0tIGEvYXJjaC94 ODYveGVuL3NtcF9wdi5jCisrKyBiL2FyY2gveDg2L3hlbi9zbXBfcHYuYwpAQCAtMTE2LDcgKzEx Niw3IEBAIGludCB4ZW5fc21wX2ludHJfaW5pdF9wdih1bnNpZ25lZCBpbnQgY3B1KQogCWNoYXIg KmNhbGxmdW5jX25hbWUsICpwbXVfbmFtZTsKIAogCWNhbGxmdW5jX25hbWUgPSBrYXNwcmludGYo R0ZQX0tFUk5FTCwgImlycXdvcmslZCIsIGNwdSk7Ci0JcmMgPSBiaW5kX2lwaV90b19pcnFoYW5k bGVyKFhFTl9JUlFfV09SS19WRUNUT1IsCisJcmMgPSBiaW5kX2lwaV90b19pcnFoYW5kbGVyKHho X2RlZmF1bHQsIFhFTl9JUlFfV09SS19WRUNUT1IsCiAJCQkJICAgIGNwdSwKIAkJCQkgICAgeGVu X2lycV93b3JrX2ludGVycnVwdCwKIAkJCQkgICAgSVJRRl9QRVJDUFV8SVJRRl9OT0JBTEFOQ0lO RywKQEAgLTEyOSw3ICsxMjksNyBAQCBpbnQgeGVuX3NtcF9pbnRyX2luaXRfcHYodW5zaWduZWQg aW50IGNwdSkKIAogCWlmIChpc194ZW5fcG11KGNwdSkpIHsKIAkJcG11X25hbWUgPSBrYXNwcmlu dGYoR0ZQX0tFUk5FTCwgInBtdSVkIiwgY3B1KTsKLQkJcmMgPSBiaW5kX3ZpcnFfdG9faXJxaGFu ZGxlcihWSVJRX1hFTlBNVSwgY3B1LAorCQlyYyA9IGJpbmRfdmlycV90b19pcnFoYW5kbGVyKHho X2RlZmF1bHQsIFZJUlFfWEVOUE1VLCBjcHUsCiAJCQkJCSAgICAgeGVuX3BtdV9pcnFfaGFuZGxl ciwKIAkJCQkJICAgICBJUlFGX1BFUkNQVXxJUlFGX05PQkFMQU5DSU5HLAogCQkJCQkgICAgIHBt dV9uYW1lLCBOVUxMKTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L3hlbi90aW1lLmMgYi9hcmNoL3g4 Ni94ZW4vdGltZS5jCmluZGV4IDIxN2JjNGRlMDdlZS4uMmY3ZmYzMjcyZDVkIDEwMDY0NAotLS0g YS9hcmNoL3g4Ni94ZW4vdGltZS5jCisrKyBiL2FyY2gveDg2L3hlbi90aW1lLmMKQEAgLTM0MCwx MSArMzQwLDEyIEBAIHZvaWQgeGVuX3NldHVwX3RpbWVyKGludCBjcHUpCiAKIAlzbnByaW50Zih4 ZXZ0LT5uYW1lLCBzaXplb2YoeGV2dC0+bmFtZSksICJ0aW1lciVkIiwgY3B1KTsKIAotCWlycSA9 IGJpbmRfdmlycV90b19pcnFoYW5kbGVyKFZJUlFfVElNRVIsIGNwdSwgeGVuX3RpbWVyX2ludGVy cnVwdCwKKwlpcnEgPSBiaW5kX3ZpcnFfdG9faXJxaGFuZGxlcih4aF9kZWZhdWx0LAorCQkJCSAg ICAgIFZJUlFfVElNRVIsIGNwdSwgeGVuX3RpbWVyX2ludGVycnVwdCwKIAkJCQkgICAgICBJUlFG X1BFUkNQVXxJUlFGX05PQkFMQU5DSU5HfElSUUZfVElNRVJ8CiAJCQkJICAgICAgSVJRRl9GT1JD RV9SRVNVTUV8SVJRRl9FQVJMWV9SRVNVTUUsCiAJCQkJICAgICAgeGV2dC0+bmFtZSwgTlVMTCk7 Ci0JKHZvaWQpeGVuX3NldF9pcnFfcHJpb3JpdHkoaXJxLCBYRU5fSVJRX1BSSU9SSVRZX01BWCk7 CisJKHZvaWQpeGVuX3NldF9pcnFfcHJpb3JpdHkoeGhfZGVmYXVsdCwgaXJxLCBYRU5fSVJRX1BS SU9SSVRZX01BWCk7CiAKIAltZW1jcHkoZXZ0LCB4ZW5fY2xvY2tldmVudCwgc2l6ZW9mKCpldnQp KTsKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYveGVuL3hlbi1vcHMuaCBiL2FyY2gveDg2L3hlbi94 ZW4tb3BzLmgKaW5kZXggOTZmZDdlZGVhN2U5Li40NjE5ODA4ZjE2NDAgMTAwNjQ0Ci0tLSBhL2Fy Y2gveDg2L3hlbi94ZW4tb3BzLmgKKysrIGIvYXJjaC94ODYveGVuL3hlbi1vcHMuaApAQCAtNzgs NiArNzgsNyBAQCBleHRlcm4gaW50IHhlbl9oYXZlX3ZjcHVfaW5mb19wbGFjZW1lbnQ7CiBpbnQg eGVuX3ZjcHVfc2V0dXAoeGVuaG9zdF90ICp4aCwgaW50IGNwdSk7CiB2b2lkIHhlbl92Y3B1X2lu Zm9fcmVzZXQoeGVuaG9zdF90ICp4aCwgaW50IGNwdSk7CiB2b2lkIHhlbl9zZXR1cF92Y3B1X2lu Zm9fcGxhY2VtZW50KHZvaWQpOwordm9pZCB4ZW5ob3N0X2luaXRfSVJRKHZvaWQpOwogCiAjaWZk ZWYgQ09ORklHX1NNUAogdm9pZCB4ZW5fc21wX2luaXQodm9pZCk7CmRpZmYgLS1naXQgYS9hcmNo L3g4Ni94ZW4veGVuaG9zdC5jIGIvYXJjaC94ODYveGVuL3hlbmhvc3QuYwppbmRleCAzZDhjY2Vm ODlkY2QuLjNiYmZkMDY1NDgzMyAxMDA2NDQKLS0tIGEvYXJjaC94ODYveGVuL3hlbmhvc3QuYwor KysgYi9hcmNoL3g4Ni94ZW4veGVuaG9zdC5jCkBAIC0yLDYgKzIsNyBAQAogI2luY2x1ZGUgPGxp bnV4L2J1Zy5oPgogI2luY2x1ZGUgPHhlbi94ZW4uaD4KICNpbmNsdWRlIDx4ZW4veGVuaG9zdC5o PgorI2luY2x1ZGUgPHhlbi9ldmVudHMuaD4KICNpbmNsdWRlICJ4ZW4tb3BzLmgiCiAKIC8qCkBA IC04NCwzICs4NSwxOCBAQCB2b2lkIF9feGVuaG9zdF91bnJlZ2lzdGVyKGVudW0geGVuaG9zdF90 eXBlIHR5cGUpCiAJCQlCVUcoKTsKIAl9CiB9CisKK3ZvaWQgeGVuaG9zdF9pbml0X0lSUSh2b2lk KQoreworCXhlbmhvc3RfdCAqKnhoOworCS8qCisJICogeGVuaG9zdF9pbml0X0lSUSBpcyBjYWxs ZWQgdmlhIHg4Nl9pbml0LmlycS5pbnRyX2luaXQoKS4KKwkgKiBGb3IgeGVuaG9zdF9yMSBhbmQg eGVuaG9zdF9yMiwgdGhlIHVuZGVybHlpbmcgc3RhdGUgaXMKKwkgKiByZWFkeSBzbyB3ZSBjYW4g Z28gYWhlYWQgYW5kIGluaXQgYm90aCB0aGUgdmFyaWFudHMuCisJICoKKwkgKiB4ZW5ob3N0X3Iw LCBtaWdodCBiZSBpbXBsZW1lbnRlZCB2aWEgYSBsb2FkYWJsZSBtb2R1bGUKKwkgKiBzbyB0aGF0 IHdvdWxkIGRvIHRoaXMgaW5pdGlhbGl6YXRpb24gZXhwbGljaXRseS4KKwkgKi8KKwlmb3JfZWFj aF94ZW5ob3N0KHhoKQorCQl4ZW5faW5pdF9JUlEoKnhoKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZl cnMvYmxvY2sveGVuLWJsa2JhY2sveGVuYnVzLmMgYi9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtiYWNr L3hlbmJ1cy5jCmluZGV4IGE0YmM3NGU3MmMzOS4uYmVlYTQyNzJjZmQzIDEwMDY0NAotLS0gYS9k cml2ZXJzL2Jsb2NrL3hlbi1ibGtiYWNrL3hlbmJ1cy5jCisrKyBiL2RyaXZlcnMvYmxvY2sveGVu LWJsa2JhY2sveGVuYnVzLmMKQEAgLTIyOCw3ICsyMjgsNyBAQCBzdGF0aWMgaW50IHhlbl9ibGtp Zl9tYXAoc3RydWN0IHhlbl9ibGtpZl9yaW5nICpyaW5nLCBncmFudF9yZWZfdCAqZ3JlZiwKIAkJ QlVHKCk7CiAJfQogCi0JZXJyID0gYmluZF9pbnRlcmRvbWFpbl9ldnRjaG5fdG9faXJxaGFuZGxl cihibGtpZi0+ZG9taWQsIGV2dGNobiwKKwllcnIgPSBiaW5kX2ludGVyZG9tYWluX2V2dGNobl90 b19pcnFoYW5kbGVyKHhoX2RlZmF1bHQsIGJsa2lmLT5kb21pZCwgZXZ0Y2huLAogCQkJCQkJICAg IHhlbl9ibGtpZl9iZV9pbnQsIDAsCiAJCQkJCQkgICAgImJsa2lmLWJhY2tlbmQiLCByaW5nKTsK IAlpZiAoZXJyIDwgMCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay94ZW4tYmxrZnJvbnQu YyBiL2RyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMKaW5kZXggMGVkNGIyMDBmYTU4Li5hMDY3 MTY0MjQwMjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMKKysrIGIv ZHJpdmVycy9ibG9jay94ZW4tYmxrZnJvbnQuYwpAQCAtMTcwMCw3ICsxNzAwLDcgQEAgc3RhdGlj IGludCBzZXR1cF9ibGtyaW5nKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYsCiAJaWYgKGVycikK IAkJZ290byBmYWlsOwogCi0JZXJyID0gYmluZF9ldnRjaG5fdG9faXJxaGFuZGxlcihyaW5mby0+ ZXZ0Y2huLCBibGtpZl9pbnRlcnJ1cHQsIDAsCisJZXJyID0gYmluZF9ldnRjaG5fdG9faXJxaGFu ZGxlcih4aF9kZWZhdWx0LCByaW5mby0+ZXZ0Y2huLCBibGtpZl9pbnRlcnJ1cHQsIDAsCiAJCQkJ CSJibGtpZiIsIHJpbmZvKTsKIAlpZiAoZXJyIDw9IDApIHsKIAkJeGVuYnVzX2Rldl9mYXRhbChk ZXYsIGVyciwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvbWlzYy94ZW4ta2JkZnJvbnQuYyBi L2RyaXZlcnMvaW5wdXQvbWlzYy94ZW4ta2JkZnJvbnQuYwppbmRleCAyNGJjNWM1ZDg3NmYuLjQ3 YzZlNDk5ZmUzMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9taXNjL3hlbi1rYmRmcm9udC5j CisrKyBiL2RyaXZlcnMvaW5wdXQvbWlzYy94ZW4ta2JkZnJvbnQuYwpAQCAtNDM1LDcgKzQzNSw3 IEBAIHN0YXRpYyBpbnQgeGVua2JkX2Nvbm5lY3RfYmFja2VuZChzdHJ1Y3QgeGVuYnVzX2Rldmlj ZSAqZGV2LAogCXJldCA9IHhlbmJ1c19hbGxvY19ldnRjaG4oZGV2LCAmZXZ0Y2huKTsKIAlpZiAo cmV0KQogCQlnb3RvIGVycm9yX2dyYW50OwotCXJldCA9IGJpbmRfZXZ0Y2huX3RvX2lycWhhbmRs ZXIoZXZ0Y2huLCBpbnB1dF9oYW5kbGVyLAorCXJldCA9IGJpbmRfZXZ0Y2huX3RvX2lycWhhbmRs ZXIoeGhfZGVmYXVsdCwgZXZ0Y2huLCBpbnB1dF9oYW5kbGVyLAogCQkJCQkwLCBkZXYtPmRldmlj ZXR5cGUsIGluZm8pOwogCWlmIChyZXQgPCAwKSB7CiAJCXhlbmJ1c19kZXZfZmF0YWwoZGV2LCBy ZXQsICJiaW5kX2V2dGNobl90b19pcnFoYW5kbGVyIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC94ZW4tbmV0YmFjay9pbnRlcmZhY2UuYyBiL2RyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL2ludGVy ZmFjZS5jCmluZGV4IDE4MmQ2NzcwZjEwMi4uNTNkNGU2MzUxZjFlIDEwMDY0NAotLS0gYS9kcml2 ZXJzL25ldC94ZW4tbmV0YmFjay9pbnRlcmZhY2UuYworKysgYi9kcml2ZXJzL25ldC94ZW4tbmV0 YmFjay9pbnRlcmZhY2UuYwpAQCAtNTg4LDcgKzU4OCw3IEBAIGludCB4ZW52aWZfY29ubmVjdF9j dHJsKHN0cnVjdCB4ZW52aWYgKnZpZiwgZ3JhbnRfcmVmX3QgcmluZ19yZWYsCiAJc2hhcmVkID0g KHN0cnVjdCB4ZW5fbmV0aWZfY3RybF9zcmluZyAqKWFkZHI7CiAJQkFDS19SSU5HX0lOSVQoJnZp Zi0+Y3RybCwgc2hhcmVkLCBYRU5fUEFHRV9TSVpFKTsKIAotCWVyciA9IGJpbmRfaW50ZXJkb21h aW5fZXZ0Y2huX3RvX2lycSh2aWYtPmRvbWlkLCBldnRjaG4pOworCWVyciA9IGJpbmRfaW50ZXJk b21haW5fZXZ0Y2huX3RvX2lycSh4aF9kZWZhdWx0LCB2aWYtPmRvbWlkLCBldnRjaG4pOwogCWlm IChlcnIgPCAwKQogCQlnb3RvIGVycl91bm1hcDsKIApAQCAtNjQ2LDcgKzY0Niw3IEBAIGludCB4 ZW52aWZfY29ubmVjdF9kYXRhKHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlLAogCiAJaWYgKHR4 X2V2dGNobiA9PSByeF9ldnRjaG4pIHsKIAkJLyogZmVhdHVyZS1zcGxpdC1ldmVudC1jaGFubmVs cyA9PSAwICovCi0JCWVyciA9IGJpbmRfaW50ZXJkb21haW5fZXZ0Y2huX3RvX2lycWhhbmRsZXIo CisJCWVyciA9IGJpbmRfaW50ZXJkb21haW5fZXZ0Y2huX3RvX2lycWhhbmRsZXIoeGhfZGVmYXVs dCwKIAkJCXF1ZXVlLT52aWYtPmRvbWlkLCB0eF9ldnRjaG4sIHhlbnZpZl9pbnRlcnJ1cHQsIDAs CiAJCQlxdWV1ZS0+bmFtZSwgcXVldWUpOwogCQlpZiAoZXJyIDwgMCkKQEAgLTY1Nyw3ICs2NTcs NyBAQCBpbnQgeGVudmlmX2Nvbm5lY3RfZGF0YShzdHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSwK IAkJLyogZmVhdHVyZS1zcGxpdC1ldmVudC1jaGFubmVscyA9PSAxICovCiAJCXNucHJpbnRmKHF1 ZXVlLT50eF9pcnFfbmFtZSwgc2l6ZW9mKHF1ZXVlLT50eF9pcnFfbmFtZSksCiAJCQkgIiVzLXR4 IiwgcXVldWUtPm5hbWUpOwotCQllcnIgPSBiaW5kX2ludGVyZG9tYWluX2V2dGNobl90b19pcnFo YW5kbGVyKAorCQllcnIgPSBiaW5kX2ludGVyZG9tYWluX2V2dGNobl90b19pcnFoYW5kbGVyKHho X2RlZmF1bHQsCiAJCQlxdWV1ZS0+dmlmLT5kb21pZCwgdHhfZXZ0Y2huLCB4ZW52aWZfdHhfaW50 ZXJydXB0LCAwLAogCQkJcXVldWUtPnR4X2lycV9uYW1lLCBxdWV1ZSk7CiAJCWlmIChlcnIgPCAw KQpAQCAtNjY3LDcgKzY2Nyw3IEBAIGludCB4ZW52aWZfY29ubmVjdF9kYXRhKHN0cnVjdCB4ZW52 aWZfcXVldWUgKnF1ZXVlLAogCiAJCXNucHJpbnRmKHF1ZXVlLT5yeF9pcnFfbmFtZSwgc2l6ZW9m KHF1ZXVlLT5yeF9pcnFfbmFtZSksCiAJCQkgIiVzLXJ4IiwgcXVldWUtPm5hbWUpOwotCQllcnIg PSBiaW5kX2ludGVyZG9tYWluX2V2dGNobl90b19pcnFoYW5kbGVyKAorCQllcnIgPSBiaW5kX2lu dGVyZG9tYWluX2V2dGNobl90b19pcnFoYW5kbGVyKHhoX2RlZmF1bHQsCiAJCQlxdWV1ZS0+dmlm LT5kb21pZCwgcnhfZXZ0Y2huLCB4ZW52aWZfcnhfaW50ZXJydXB0LCAwLAogCQkJcXVldWUtPnJ4 X2lycV9uYW1lLCBxdWV1ZSk7CiAJCWlmIChlcnIgPCAwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQveGVuLW5ldGZyb250LmMgYi9kcml2ZXJzL25ldC94ZW4tbmV0ZnJvbnQuYwppbmRleCBjOTE0 YzI0Zjg4MGIuLjFjZDBhMmQyYmE1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQveGVuLW5ldGZy b250LmMKKysrIGIvZHJpdmVycy9uZXQveGVuLW5ldGZyb250LmMKQEAgLTE0NjgsNyArMTQ2OCw3 IEBAIHN0YXRpYyBpbnQgc2V0dXBfbmV0ZnJvbnRfc2luZ2xlKHN0cnVjdCBuZXRmcm9udF9xdWV1 ZSAqcXVldWUpCiAJaWYgKGVyciA8IDApCiAJCWdvdG8gZmFpbDsKIAotCWVyciA9IGJpbmRfZXZ0 Y2huX3RvX2lycWhhbmRsZXIocXVldWUtPnR4X2V2dGNobiwKKwllcnIgPSBiaW5kX2V2dGNobl90 b19pcnFoYW5kbGVyKHhoX2RlZmF1bHQsIHF1ZXVlLT50eF9ldnRjaG4sCiAJCQkJCXhlbm5ldF9p bnRlcnJ1cHQsCiAJCQkJCTAsIHF1ZXVlLT5pbmZvLT5uZXRkZXYtPm5hbWUsIHF1ZXVlKTsKIAlp ZiAoZXJyIDwgMCkKQEAgLTE0OTgsNyArMTQ5OCw3IEBAIHN0YXRpYyBpbnQgc2V0dXBfbmV0ZnJv bnRfc3BsaXQoc3RydWN0IG5ldGZyb250X3F1ZXVlICpxdWV1ZSkKIAogCXNucHJpbnRmKHF1ZXVl LT50eF9pcnFfbmFtZSwgc2l6ZW9mKHF1ZXVlLT50eF9pcnFfbmFtZSksCiAJCSAiJXMtdHgiLCBx dWV1ZS0+bmFtZSk7Ci0JZXJyID0gYmluZF9ldnRjaG5fdG9faXJxaGFuZGxlcihxdWV1ZS0+dHhf ZXZ0Y2huLAorCWVyciA9IGJpbmRfZXZ0Y2huX3RvX2lycWhhbmRsZXIoeGhfZGVmYXVsdCwgcXVl dWUtPnR4X2V2dGNobiwKIAkJCQkJeGVubmV0X3R4X2ludGVycnVwdCwKIAkJCQkJMCwgcXVldWUt PnR4X2lycV9uYW1lLCBxdWV1ZSk7CiAJaWYgKGVyciA8IDApCkBAIC0xNTA3LDcgKzE1MDcsNyBA QCBzdGF0aWMgaW50IHNldHVwX25ldGZyb250X3NwbGl0KHN0cnVjdCBuZXRmcm9udF9xdWV1ZSAq cXVldWUpCiAKIAlzbnByaW50ZihxdWV1ZS0+cnhfaXJxX25hbWUsIHNpemVvZihxdWV1ZS0+cnhf aXJxX25hbWUpLAogCQkgIiVzLXJ4IiwgcXVldWUtPm5hbWUpOwotCWVyciA9IGJpbmRfZXZ0Y2hu X3RvX2lycWhhbmRsZXIocXVldWUtPnJ4X2V2dGNobiwKKwllcnIgPSBiaW5kX2V2dGNobl90b19p cnFoYW5kbGVyKHhoX2RlZmF1bHQsIHF1ZXVlLT5yeF9ldnRjaG4sCiAJCQkJCXhlbm5ldF9yeF9p bnRlcnJ1cHQsCiAJCQkJCTAsIHF1ZXVlLT5yeF9pcnFfbmFtZSwgcXVldWUpOwogCWlmIChlcnIg PCAwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kveGVuLXBjaWZyb250LmMgYi9kcml2ZXJzL3Bj aS94ZW4tcGNpZnJvbnQuYwppbmRleCBlYmE2ZTMzMTQ3YTIuLmY4OTQyOTBlOGIzYSAxMDA2NDQK LS0tIGEvZHJpdmVycy9wY2kveGVuLXBjaWZyb250LmMKKysrIGIvZHJpdmVycy9wY2kveGVuLXBj aWZyb250LmMKQEAgLTgwMCw3ICs4MDAsNyBAQCBzdGF0aWMgaW50IHBjaWZyb250X3B1Ymxpc2hf aW5mbyhzdHJ1Y3QgcGNpZnJvbnRfZGV2aWNlICpwZGV2KQogCWlmIChlcnIpCiAJCWdvdG8gb3V0 OwogCi0JZXJyID0gYmluZF9ldnRjaG5fdG9faXJxaGFuZGxlcihwZGV2LT5ldnRjaG4sIHBjaWZy b250X2hhbmRsZXJfYWVyLAorCWVyciA9IGJpbmRfZXZ0Y2huX3RvX2lycWhhbmRsZXIoeGhfZGVm YXVsdCwgcGRldi0+ZXZ0Y2huLCBwY2lmcm9udF9oYW5kbGVyX2FlciwKIAkJMCwgInBjaWZyb250 IiwgcGRldik7CiAKIAlpZiAoZXJyIDwgMCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2FjcGku YyBiL2RyaXZlcnMveGVuL2FjcGkuYwppbmRleCA2ODkzYzc5ZmQyYTEuLmE5NTlmY2UxNzVmOCAx MDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vYWNwaS5jCisrKyBiL2RyaXZlcnMveGVuL2FjcGkuYwpA QCAtMzAsNiArMzAsOCBAQAogICogSU4gVEhFIFNPRlRXQVJFLgogICovCiAKKyNpbmNsdWRlIDxs aW51eC90eXBlcy5oPgorI2luY2x1ZGUgPHhlbi9pbnRlcmZhY2UveGVuLmg+CiAjaW5jbHVkZSA8 eGVuL2FjcGkuaD4KICNpbmNsdWRlIDx4ZW4vaW50ZXJmYWNlL3BsYXRmb3JtLmg+CiAjaW5jbHVk ZSA8YXNtL3hlbi9oeXBlcmNhbGwuaD4KZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2JhbGxvb24u YyBiL2RyaXZlcnMveGVuL2JhbGxvb24uYwppbmRleCBjZWI1MDQ4ZGU5YTcuLjVlZjRkNmFkOTIw ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vYmFsbG9vbi5jCisrKyBiL2RyaXZlcnMveGVuL2Jh bGxvb24uYwpAQCAtNjIsMTEgKzYyLDExIEBACiAjaW5jbHVkZSA8YXNtL3BndGFibGUuaD4KICNp bmNsdWRlIDxhc20vdGxiLmg+CiAKKyNpbmNsdWRlIDx4ZW4vaW50ZXJmYWNlL3hlbi5oPgogI2lu Y2x1ZGUgPGFzbS94ZW4vaHlwZXJ2aXNvci5oPgogI2luY2x1ZGUgPGFzbS94ZW4vaHlwZXJjYWxs Lmg+CiAKICNpbmNsdWRlIDx4ZW4veGVuLmg+Ci0jaW5jbHVkZSA8eGVuL2ludGVyZmFjZS94ZW4u aD4KICNpbmNsdWRlIDx4ZW4vaW50ZXJmYWNlL21lbW9yeS5oPgogI2luY2x1ZGUgPHhlbi9iYWxs b29uLmg+CiAjaW5jbHVkZSA8eGVuL2ZlYXR1cmVzLmg+CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hl bi9ldmVudHMvTWFrZWZpbGUgYi9kcml2ZXJzL3hlbi9ldmVudHMvTWFrZWZpbGUKaW5kZXggNjJi ZTU1Y2Q5ODFkLi4wODE3OWZlMDQ2MTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2V2ZW50cy9N YWtlZmlsZQorKysgYi9kcml2ZXJzL3hlbi9ldmVudHMvTWFrZWZpbGUKQEAgLTIsNCArMiwzIEBA IG9iai15ICs9IGV2ZW50cy5vCiAKIGV2ZW50cy15ICs9IGV2ZW50c19iYXNlLm8KIGV2ZW50cy15 ICs9IGV2ZW50c18ybC5vCi1ldmVudHMteSArPSBldmVudHNfZmlmby5vCmRpZmYgLS1naXQgYS9k cml2ZXJzL3hlbi9ldmVudHMvZXZlbnRzXzJsLmMgYi9kcml2ZXJzL3hlbi9ldmVudHMvZXZlbnRz XzJsLmMKaW5kZXggZjA5ZGJlNGU5YzMzLi5jNjlkN2E1YjNkZmYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMveGVuL2V2ZW50cy9ldmVudHNfMmwuYworKysgYi9kcml2ZXJzL3hlbi9ldmVudHMvZXZlbnRz XzJsLmMKQEAgLTQwLDUwICs0MCw1MiBAQAogCiAjZGVmaW5lIEVWVENITl9NQVNLX1NJWkUgKEVW VENITl8yTF9OUl9DSEFOTkVMUy9CSVRTX1BFUl9FVlRDSE5fV09SRCkKIAotc3RhdGljIERFRklO RV9QRVJfQ1BVKHhlbl91bG9uZ190IFtFVlRDSE5fTUFTS19TSVpFXSwgY3B1X2V2dGNobl9tYXNr KTsKK3N0YXRpYyBERUZJTkVfUEVSX0NQVSh4ZW5fdWxvbmdfdCBbMl1bRVZUQ0hOX01BU0tfU0la RV0sIGNwdV9ldnRjaG5fbWFzayk7CiAKLXN0YXRpYyB1bnNpZ25lZCBldnRjaG5fMmxfbWF4X2No YW5uZWxzKHZvaWQpCitzdGF0aWMgdW5zaWduZWQgZXZ0Y2huXzJsX21heF9jaGFubmVscyh4ZW5o b3N0X3QgKnhoKQogewogCXJldHVybiBFVlRDSE5fMkxfTlJfQ0hBTk5FTFM7CiB9CiAKIHN0YXRp YyB2b2lkIGV2dGNobl8ybF9iaW5kX3RvX2NwdShzdHJ1Y3QgaXJxX2luZm8gKmluZm8sIHVuc2ln bmVkIGNwdSkKIHsKLQljbGVhcl9iaXQoaW5mby0+ZXZ0Y2huLCBCTShwZXJfY3B1KGNwdV9ldnRj aG5fbWFzaywgaW5mby0+Y3B1KSkpOwotCXNldF9iaXQoaW5mby0+ZXZ0Y2huLCBCTShwZXJfY3B1 KGNwdV9ldnRjaG5fbWFzaywgY3B1KSkpOworCWNsZWFyX2JpdChpbmZvLT5ldnRjaG4sCisJCUJN KHBlcl9jcHUoY3B1X2V2dGNobl9tYXNrLCBpbmZvLT5jcHUpKVtpbmZvLT54aCAtIHhlbmhvc3Rz XSk7CisJc2V0X2JpdChpbmZvLT5ldnRjaG4sCisJCUJNKHBlcl9jcHUoY3B1X2V2dGNobl9tYXNr LCBjcHUpKVtpbmZvLT54aCAtIHhlbmhvc3RzXSk7CiB9CiAKLXN0YXRpYyB2b2lkIGV2dGNobl8y bF9jbGVhcl9wZW5kaW5nKHVuc2lnbmVkIHBvcnQpCitzdGF0aWMgdm9pZCBldnRjaG5fMmxfY2xl YXJfcGVuZGluZyh4ZW5ob3N0X3QgKnhoLCB1bnNpZ25lZCBwb3J0KQogewogCXN0cnVjdCBzaGFy ZWRfaW5mbyAqcyA9IHhoX2RlZmF1bHQtPkhZUEVSVklTT1Jfc2hhcmVkX2luZm87CiAJc3luY19j bGVhcl9iaXQocG9ydCwgQk0oJnMtPmV2dGNobl9wZW5kaW5nWzBdKSk7CiB9CiAKLXN0YXRpYyB2 b2lkIGV2dGNobl8ybF9zZXRfcGVuZGluZyh1bnNpZ25lZCBwb3J0KQorc3RhdGljIHZvaWQgZXZ0 Y2huXzJsX3NldF9wZW5kaW5nKHhlbmhvc3RfdCAqeGgsIHVuc2lnbmVkIHBvcnQpCiB7CiAJc3Ry dWN0IHNoYXJlZF9pbmZvICpzID0geGhfZGVmYXVsdC0+SFlQRVJWSVNPUl9zaGFyZWRfaW5mbzsK IAlzeW5jX3NldF9iaXQocG9ydCwgQk0oJnMtPmV2dGNobl9wZW5kaW5nWzBdKSk7CiB9CiAKLXN0 YXRpYyBib29sIGV2dGNobl8ybF9pc19wZW5kaW5nKHVuc2lnbmVkIHBvcnQpCitzdGF0aWMgYm9v bCBldnRjaG5fMmxfaXNfcGVuZGluZyh4ZW5ob3N0X3QgKnhoLCB1bnNpZ25lZCBwb3J0KQogewot CXN0cnVjdCBzaGFyZWRfaW5mbyAqcyA9IHhoX2RlZmF1bHQtPkhZUEVSVklTT1Jfc2hhcmVkX2lu Zm87CisJc3RydWN0IHNoYXJlZF9pbmZvICpzID0geGgtPkhZUEVSVklTT1Jfc2hhcmVkX2luZm87 CiAJcmV0dXJuIHN5bmNfdGVzdF9iaXQocG9ydCwgQk0oJnMtPmV2dGNobl9wZW5kaW5nWzBdKSk7 CiB9CiAKLXN0YXRpYyBib29sIGV2dGNobl8ybF90ZXN0X2FuZF9zZXRfbWFzayh1bnNpZ25lZCBw b3J0KQorc3RhdGljIGJvb2wgZXZ0Y2huXzJsX3Rlc3RfYW5kX3NldF9tYXNrKHhlbmhvc3RfdCAq eGgsIHVuc2lnbmVkIHBvcnQpCiB7Ci0Jc3RydWN0IHNoYXJlZF9pbmZvICpzID0geGhfZGVmYXVs dC0+SFlQRVJWSVNPUl9zaGFyZWRfaW5mbzsKKwlzdHJ1Y3Qgc2hhcmVkX2luZm8gKnMgPSB4aC0+ SFlQRVJWSVNPUl9zaGFyZWRfaW5mbzsKIAlyZXR1cm4gc3luY190ZXN0X2FuZF9zZXRfYml0KHBv cnQsIEJNKCZzLT5ldnRjaG5fbWFza1swXSkpOwogfQogCi1zdGF0aWMgdm9pZCBldnRjaG5fMmxf bWFzayh1bnNpZ25lZCBwb3J0KQorc3RhdGljIHZvaWQgZXZ0Y2huXzJsX21hc2soeGVuaG9zdF90 ICp4aCwgdW5zaWduZWQgcG9ydCkKIHsKIAlzdHJ1Y3Qgc2hhcmVkX2luZm8gKnMgPSB4aF9kZWZh dWx0LT5IWVBFUlZJU09SX3NoYXJlZF9pbmZvOwogCXN5bmNfc2V0X2JpdChwb3J0LCBCTSgmcy0+ ZXZ0Y2huX21hc2tbMF0pKTsKIH0KIAotc3RhdGljIHZvaWQgZXZ0Y2huXzJsX3VubWFzayh1bnNp Z25lZCBwb3J0KQorc3RhdGljIHZvaWQgZXZ0Y2huXzJsX3VubWFzayh4ZW5ob3N0X3QgKnhoLCB1 bnNpZ25lZCBwb3J0KQogewogCXN0cnVjdCBzaGFyZWRfaW5mbyAqcyA9IHhoX2RlZmF1bHQtPkhZ UEVSVklTT1Jfc2hhcmVkX2luZm87CiAJdW5zaWduZWQgaW50IGNwdSA9IGdldF9jcHUoKTsKQEAg LTkxLDcgKzkzLDcgQEAgc3RhdGljIHZvaWQgZXZ0Y2huXzJsX3VubWFzayh1bnNpZ25lZCBwb3J0 KQogCiAJQlVHX09OKCFpcnFzX2Rpc2FibGVkKCkpOwogCi0JaWYgKHVubGlrZWx5KChjcHUgIT0g Y3B1X2Zyb21fZXZ0Y2huKHBvcnQpKSkpCisJaWYgKHVubGlrZWx5KChjcHUgIT0gY3B1X2Zyb21f ZXZ0Y2huKHhoLCBwb3J0KSkpKQogCQlkb19oeXBlcmNhbGwgPSAxOwogCWVsc2UgewogCQkvKgpA QCAtMTE2LDkgKzExOCw5IEBAIHN0YXRpYyB2b2lkIGV2dGNobl8ybF91bm1hc2sodW5zaWduZWQg cG9ydCkKIAkgKiB0aGVpciBvd24gaW1wbGVtZW50YXRpb24gb2YgaXJxX2VuYWJsZSkuICovCiAJ aWYgKGRvX2h5cGVyY2FsbCkgewogCQlzdHJ1Y3QgZXZ0Y2huX3VubWFzayB1bm1hc2sgPSB7IC5w b3J0ID0gcG9ydCB9OwotCQkodm9pZClIWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3AoRVZUQ0hO T1BfdW5tYXNrLCAmdW5tYXNrKTsKKwkJKHZvaWQpaHlwZXJ2aXNvcl9ldmVudF9jaGFubmVsX29w KHhoLCBFVlRDSE5PUF91bm1hc2ssICZ1bm1hc2spOwogCX0gZWxzZSB7Ci0JCXN0cnVjdCB2Y3B1 X2luZm8gKnZjcHVfaW5mbyA9IF9fdGhpc19jcHVfcmVhZCh4ZW5fdmNwdSk7CisJCXN0cnVjdCB2 Y3B1X2luZm8gKnZjcHVfaW5mbyA9IHhoLT54ZW5fdmNwdVtjcHVdOwogCiAJCS8qCiAJCSAqIFRo ZSBmb2xsb3dpbmcgaXMgYmFzaWNhbGx5IHRoZSBlcXVpdmFsZW50IG9mCkBAIC0xMzQsOCArMTM2 LDggQEAgc3RhdGljIHZvaWQgZXZ0Y2huXzJsX3VubWFzayh1bnNpZ25lZCBwb3J0KQogCXB1dF9j cHUoKTsKIH0KIAotc3RhdGljIERFRklORV9QRVJfQ1BVKHVuc2lnbmVkIGludCwgY3VycmVudF93 b3JkX2lkeCk7Ci1zdGF0aWMgREVGSU5FX1BFUl9DUFUodW5zaWduZWQgaW50LCBjdXJyZW50X2Jp dF9pZHgpOworc3RhdGljIERFRklORV9QRVJfQ1BVKHVuc2lnbmVkIGludCBbMl0sIGN1cnJlbnRf d29yZF9pZHgpOworc3RhdGljIERFRklORV9QRVJfQ1BVKHVuc2lnbmVkIGludCBbMl0sIGN1cnJl bnRfYml0X2lkeCk7CiAKIC8qCiAgKiBNYXNrIG91dCB0aGUgaSBsZWFzdCBzaWduaWZpY2FudCBi aXRzIG9mIHcKQEAgLTE0MywxMSArMTQ1LDEyIEBAIHN0YXRpYyBERUZJTkVfUEVSX0NQVSh1bnNp Z25lZCBpbnQsIGN1cnJlbnRfYml0X2lkeCk7CiAjZGVmaW5lIE1BU0tfTFNCUyh3LCBpKSAodyAm ICgofigoeGVuX3Vsb25nX3QpMFVMKSkgPDwgaSkpCiAKIHN0YXRpYyBpbmxpbmUgeGVuX3Vsb25n X3QgYWN0aXZlX2V2dGNobnModW5zaWduZWQgaW50IGNwdSwKKwkJCQkJIHhlbmhvc3RfdCAqeGgs CiAJCQkJCSBzdHJ1Y3Qgc2hhcmVkX2luZm8gKnNoLAogCQkJCQkgdW5zaWduZWQgaW50IGlkeCkK IHsKIAlyZXR1cm4gc2gtPmV2dGNobl9wZW5kaW5nW2lkeF0gJgotCQlwZXJfY3B1KGNwdV9ldnRj aG5fbWFzaywgY3B1KVtpZHhdICYKKwkJcGVyX2NwdShjcHVfZXZ0Y2huX21hc2ssIGNwdSlbeGgg LSB4ZW5ob3N0c11baWR4XSAmCiAJCX5zaC0+ZXZ0Y2huX21hc2tbaWR4XTsKIH0KIApAQCAtMTU5 LDcgKzE2Miw3IEBAIHN0YXRpYyBpbmxpbmUgeGVuX3Vsb25nX3QgYWN0aXZlX2V2dGNobnModW5z aWduZWQgaW50IGNwdSwKICAqIGEgYml0c2V0IG9mIHdvcmRzIHdoaWNoIGNvbnRhaW4gcGVuZGlu ZyBldmVudCBiaXRzLiAgVGhlIHNlY29uZAogICogbGV2ZWwgaXMgYSBiaXRzZXQgb2YgcGVuZGlu ZyBldmVudHMgdGhlbXNlbHZlcy4KICAqLwotc3RhdGljIHZvaWQgZXZ0Y2huXzJsX2hhbmRsZV9l dmVudHModW5zaWduZWQgY3B1KQorc3RhdGljIHZvaWQgZXZ0Y2huXzJsX2hhbmRsZV9ldmVudHMo eGVuaG9zdF90ICp4aCwgdW5zaWduZWQgY3B1KQogewogCWludCBpcnE7CiAJeGVuX3Vsb25nX3Qg cGVuZGluZ193b3JkczsKQEAgLTE2Nyw4ICsxNzAsOCBAQCBzdGF0aWMgdm9pZCBldnRjaG5fMmxf aGFuZGxlX2V2ZW50cyh1bnNpZ25lZCBjcHUpCiAJaW50IHN0YXJ0X3dvcmRfaWR4LCBzdGFydF9i aXRfaWR4OwogCWludCB3b3JkX2lkeCwgYml0X2lkeDsKIAlpbnQgaTsKLQlzdHJ1Y3Qgc2hhcmVk X2luZm8gKnMgPSB4aF9kZWZhdWx0LT5IWVBFUlZJU09SX3NoYXJlZF9pbmZvOwotCXN0cnVjdCB2 Y3B1X2luZm8gKnZjcHVfaW5mbyA9IF9fdGhpc19jcHVfcmVhZCh4ZW5fdmNwdSk7CisJc3RydWN0 IHNoYXJlZF9pbmZvICpzID0geGgtPkhZUEVSVklTT1Jfc2hhcmVkX2luZm87CisJc3RydWN0IHZj cHVfaW5mbyAqdmNwdV9pbmZvID0geGgtPnhlbl92Y3B1W2NwdV07CiAKIAkvKiBUaW1lciBpbnRl cnJ1cHQgaGFzIGhpZ2hlc3QgcHJpb3JpdHkuICovCiAJaXJxID0gaXJxX2Zyb21fdmlycShjcHUs IFZJUlFfVElNRVIpOwpAQCAtMTc2LDcgKzE3OSw3IEBAIHN0YXRpYyB2b2lkIGV2dGNobl8ybF9o YW5kbGVfZXZlbnRzKHVuc2lnbmVkIGNwdSkKIAkJdW5zaWduZWQgaW50IGV2dGNobiA9IGV2dGNo bl9mcm9tX2lycShpcnEpOwogCQl3b3JkX2lkeCA9IGV2dGNobiAvIEJJVFNfUEVSX0xPTkc7CiAJ CWJpdF9pZHggPSBldnRjaG4gJSBCSVRTX1BFUl9MT05HOwotCQlpZiAoYWN0aXZlX2V2dGNobnMo Y3B1LCBzLCB3b3JkX2lkeCkgJiAoMVVMTCA8PCBiaXRfaWR4KSkKKwkJaWYgKGFjdGl2ZV9ldnRj aG5zKGNwdSwgeGgsIHMsIHdvcmRfaWR4KSAmICgxVUxMIDw8IGJpdF9pZHgpKQogCQkJZ2VuZXJp Y19oYW5kbGVfaXJxKGlycSk7CiAJfQogCkBAIC0xODcsOCArMTkwLDggQEAgc3RhdGljIHZvaWQg ZXZ0Y2huXzJsX2hhbmRsZV9ldmVudHModW5zaWduZWQgY3B1KQogCSAqLwogCXBlbmRpbmdfd29y ZHMgPSB4Y2hnX3hlbl91bG9uZygmdmNwdV9pbmZvLT5ldnRjaG5fcGVuZGluZ19zZWwsIDApOwog Ci0Jc3RhcnRfd29yZF9pZHggPSBfX3RoaXNfY3B1X3JlYWQoY3VycmVudF93b3JkX2lkeCk7Ci0J c3RhcnRfYml0X2lkeCA9IF9fdGhpc19jcHVfcmVhZChjdXJyZW50X2JpdF9pZHgpOworCXN0YXJ0 X3dvcmRfaWR4ID0gX190aGlzX2NwdV9yZWFkKGN1cnJlbnRfd29yZF9pZHhbeGggLSB4ZW5ob3N0 c10pOworCXN0YXJ0X2JpdF9pZHggPSBfX3RoaXNfY3B1X3JlYWQoY3VycmVudF9iaXRfaWR4W3ho IC0geGVuaG9zdHNdKTsKIAogCXdvcmRfaWR4ID0gc3RhcnRfd29yZF9pZHg7CiAKQEAgLTIwNyw3 ICsyMTAsNyBAQCBzdGF0aWMgdm9pZCBldnRjaG5fMmxfaGFuZGxlX2V2ZW50cyh1bnNpZ25lZCBj cHUpCiAJCX0KIAkJd29yZF9pZHggPSBFVlRDSE5fRklSU1RfQklUKHdvcmRzKTsKIAotCQlwZW5k aW5nX2JpdHMgPSBhY3RpdmVfZXZ0Y2hucyhjcHUsIHMsIHdvcmRfaWR4KTsKKwkJcGVuZGluZ19i aXRzID0gYWN0aXZlX2V2dGNobnMoY3B1LCB4aCwgcywgd29yZF9pZHgpOwogCQliaXRfaWR4ID0g MDsgLyogdXN1YWxseSBzY2FuIGVudGlyZSB3b3JkIGZyb20gc3RhcnQgKi8KIAkJLyoKIAkJICog V2Ugc2NhbiB0aGUgc3RhcnRpbmcgd29yZCBpbiB0d28gcGFydHMuCkBAIC0yNDAsNyArMjQzLDcg QEAgc3RhdGljIHZvaWQgZXZ0Y2huXzJsX2hhbmRsZV9ldmVudHModW5zaWduZWQgY3B1KQogCiAJ CQkvKiBQcm9jZXNzIHBvcnQuICovCiAJCQlwb3J0ID0gKHdvcmRfaWR4ICogQklUU19QRVJfRVZU Q0hOX1dPUkQpICsgYml0X2lkeDsKLQkJCWlycSA9IGdldF9ldnRjaG5fdG9faXJxKHBvcnQpOwor CQkJaXJxID0gZ2V0X2V2dGNobl90b19pcnEoeGgsIHBvcnQpOwogCiAJCQlpZiAoaXJxICE9IC0x KQogCQkJCWdlbmVyaWNfaGFuZGxlX2lycShpcnEpOwpAQCAtMjQ4LDEwICsyNTEsMTAgQEAgc3Rh dGljIHZvaWQgZXZ0Y2huXzJsX2hhbmRsZV9ldmVudHModW5zaWduZWQgY3B1KQogCQkJYml0X2lk eCA9IChiaXRfaWR4ICsgMSkgJSBCSVRTX1BFUl9FVlRDSE5fV09SRDsKIAogCQkJLyogTmV4dCBj YWxsZXIgc3RhcnRzIGF0IGxhc3QgcHJvY2Vzc2VkICsgMSAqLwotCQkJX190aGlzX2NwdV93cml0 ZShjdXJyZW50X3dvcmRfaWR4LAorCQkJX190aGlzX2NwdV93cml0ZShjdXJyZW50X3dvcmRfaWR4 W3hoIC0geGVuaG9zdHNdLAogCQkJCQkgYml0X2lkeCA/IHdvcmRfaWR4IDoKIAkJCQkJICh3b3Jk X2lkeCsxKSAlIEJJVFNfUEVSX0VWVENITl9XT1JEKTsKLQkJCV9fdGhpc19jcHVfd3JpdGUoY3Vy cmVudF9iaXRfaWR4LCBiaXRfaWR4KTsKKwkJCV9fdGhpc19jcHVfd3JpdGUoY3VycmVudF9iaXRf aWR4W3hoIC0geGVuaG9zdHNdLCBiaXRfaWR4KTsKIAkJfSB3aGlsZSAoYml0X2lkeCAhPSAwKTsK IAogCQkvKiBTY2FuIHN0YXJ0X2wxaSB0d2ljZTsgYWxsIG90aGVycyBvbmNlLiAqLwpAQCAtMjY2 LDc4ICsyNjksODEgQEAgaXJxcmV0dXJuX3QgeGVuX2RlYnVnX2ludGVycnVwdChpbnQgaXJxLCB2 b2lkICpkZXZfaWQpCiB7CiAJc3RydWN0IHNoYXJlZF9pbmZvICpzaCA9IHhoX2RlZmF1bHQtPkhZ UEVSVklTT1Jfc2hhcmVkX2luZm87CiAJaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKLQl4 ZW5fdWxvbmdfdCAqY3B1X2V2dGNobiA9IHBlcl9jcHUoY3B1X2V2dGNobl9tYXNrLCBjcHUpOwor CXhlbl91bG9uZ190ICpjcHVfZXZ0Y2huOwogCWludCBpOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7 CiAJc3RhdGljIERFRklORV9TUElOTE9DSyhkZWJ1Z19sb2NrKTsKIAlzdHJ1Y3QgdmNwdV9pbmZv ICp2OworCXhlbmhvc3RfdCAqKnhoOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmRlYnVnX2xvY2ss IGZsYWdzKTsKIAogCXByaW50aygiXG52Y3B1ICVkXG4gICIsIGNwdSk7CiAKLQlmb3JfZWFjaF9v bmxpbmVfY3B1KGkpIHsKLQkJaW50IHBlbmRpbmc7Ci0JCXYgPSBwZXJfY3B1KHhlbl92Y3B1LCBp KTsKLQkJcGVuZGluZyA9IChnZXRfaXJxX3JlZ3MoKSAmJiBpID09IGNwdSkKLQkJCT8geGVuX2ly cXNfZGlzYWJsZWQoZ2V0X2lycV9yZWdzKCkpCi0JCQk6IHYtPmV2dGNobl91cGNhbGxfbWFzazsK LQkJcHJpbnRrKCIlZDogbWFza2VkPSVkIHBlbmRpbmc9JWQgZXZlbnRfc2VsICUwKiJQUklfeGVu X3Vsb25nIlxuICAiLCBpLAotCQkgICAgICAgcGVuZGluZywgdi0+ZXZ0Y2huX3VwY2FsbF9wZW5k aW5nLAotCQkgICAgICAgKGludCkoc2l6ZW9mKHYtPmV2dGNobl9wZW5kaW5nX3NlbCkqMiksCi0J CSAgICAgICB2LT5ldnRjaG5fcGVuZGluZ19zZWwpOwotCX0KLQl2ID0gcGVyX2NwdSh4ZW5fdmNw dSwgY3B1KTsKKwlmb3JfZWFjaF94ZW5ob3N0KHhoKSB7CisJCWNwdV9ldnRjaG4gPSBwZXJfY3B1 KGNwdV9ldnRjaG5fbWFzaywgY3B1KVsoKnhoKSAtIHhlbmhvc3RzXTsKKwkJZm9yX2VhY2hfb25s aW5lX2NwdShpKSB7CisJCQlpbnQgcGVuZGluZzsKKwkJCXYgPSAoKnhoKS0+eGVuX3ZjcHVbaV07 CisJCQlwZW5kaW5nID0gKGdldF9pcnFfcmVncygpICYmIGkgPT0gY3B1KQorCQkJCT8geGVuX2ly cXNfZGlzYWJsZWQoZ2V0X2lycV9yZWdzKCkpCisJCQkJOiB2LT5ldnRjaG5fdXBjYWxsX21hc2s7 CisJCQlwcmludGsoIiVkOiBtYXNrZWQ9JWQgcGVuZGluZz0lZCBldmVudF9zZWwgJTAqIlBSSV94 ZW5fdWxvbmciXG4gICIsIGksCisJCQkgICAgICAgcGVuZGluZywgdi0+ZXZ0Y2huX3VwY2FsbF9w ZW5kaW5nLAorCQkJICAgICAgIChpbnQpKHNpemVvZih2LT5ldnRjaG5fcGVuZGluZ19zZWwpKjIp LAorCQkJICAgICAgIHYtPmV2dGNobl9wZW5kaW5nX3NlbCk7CisJCX0KKwkJdiA9ICgqeGgpLT54 ZW5fdmNwdVtjcHVdOwogCi0JcHJpbnRrKCJcbnBlbmRpbmc6XG4gICAiKTsKLQlmb3IgKGkgPSBB UlJBWV9TSVpFKHNoLT5ldnRjaG5fcGVuZGluZyktMTsgaSA+PSAwOyBpLS0pCi0JCXByaW50aygi JTAqIlBSSV94ZW5fdWxvbmciJXMiLAotCQkgICAgICAgKGludClzaXplb2Yoc2gtPmV2dGNobl9w ZW5kaW5nWzBdKSoyLAotCQkgICAgICAgc2gtPmV2dGNobl9wZW5kaW5nW2ldLAotCQkgICAgICAg aSAlIDggPT0gMCA/ICJcbiAgICIgOiAiICIpOwotCXByaW50aygiXG5nbG9iYWwgbWFzazpcbiAg ICIpOwotCWZvciAoaSA9IEFSUkFZX1NJWkUoc2gtPmV2dGNobl9tYXNrKS0xOyBpID49IDA7IGkt LSkKLQkJcHJpbnRrKCIlMCoiUFJJX3hlbl91bG9uZyIlcyIsCi0JCSAgICAgICAoaW50KShzaXpl b2Yoc2gtPmV2dGNobl9tYXNrWzBdKSoyKSwKLQkJICAgICAgIHNoLT5ldnRjaG5fbWFza1tpXSwK LQkJICAgICAgIGkgJSA4ID09IDAgPyAiXG4gICAiIDogIiAiKTsKKwkJcHJpbnRrKCJcbnBlbmRp bmc6XG4gICAiKTsKKwkJZm9yIChpID0gQVJSQVlfU0laRShzaC0+ZXZ0Y2huX3BlbmRpbmcpLTE7 IGkgPj0gMDsgaS0tKQorCQkJcHJpbnRrKCIlMCoiUFJJX3hlbl91bG9uZyIlcyIsCisJCQkgICAg ICAgKGludClzaXplb2Yoc2gtPmV2dGNobl9wZW5kaW5nWzBdKSoyLAorCQkJICAgICAgIHNoLT5l dnRjaG5fcGVuZGluZ1tpXSwKKwkJCSAgICAgICBpICUgOCA9PSAwID8gIlxuICAgIiA6ICIgIik7 CisJCXByaW50aygiXG5nbG9iYWwgbWFzazpcbiAgICIpOworCQlmb3IgKGkgPSBBUlJBWV9TSVpF KHNoLT5ldnRjaG5fbWFzayktMTsgaSA+PSAwOyBpLS0pCisJCQlwcmludGsoIiUwKiJQUklfeGVu X3Vsb25nIiVzIiwKKwkJCSAgICAgICAoaW50KShzaXplb2Yoc2gtPmV2dGNobl9tYXNrWzBdKSoy KSwKKwkJCSAgICAgICBzaC0+ZXZ0Y2huX21hc2tbaV0sCisJCQkgICAgICAgaSAlIDggPT0gMCA/ ICJcbiAgICIgOiAiICIpOwogCi0JcHJpbnRrKCJcbmdsb2JhbGx5IHVubWFza2VkOlxuICAgIik7 Ci0JZm9yIChpID0gQVJSQVlfU0laRShzaC0+ZXZ0Y2huX21hc2spLTE7IGkgPj0gMDsgaS0tKQot CQlwcmludGsoIiUwKiJQUklfeGVuX3Vsb25nIiVzIiwKLQkJICAgICAgIChpbnQpKHNpemVvZihz aC0+ZXZ0Y2huX21hc2tbMF0pKjIpLAotCQkgICAgICAgc2gtPmV2dGNobl9wZW5kaW5nW2ldICYg fnNoLT5ldnRjaG5fbWFza1tpXSwKLQkJICAgICAgIGkgJSA4ID09IDAgPyAiXG4gICAiIDogIiAi KTsKKwkJcHJpbnRrKCJcbmdsb2JhbGx5IHVubWFza2VkOlxuICAgIik7CisJCWZvciAoaSA9IEFS UkFZX1NJWkUoc2gtPmV2dGNobl9tYXNrKS0xOyBpID49IDA7IGktLSkKKwkJCXByaW50aygiJTAq IlBSSV94ZW5fdWxvbmciJXMiLAorCQkJICAgICAgIChpbnQpKHNpemVvZihzaC0+ZXZ0Y2huX21h c2tbMF0pKjIpLAorCQkJICAgICAgIHNoLT5ldnRjaG5fcGVuZGluZ1tpXSAmIH5zaC0+ZXZ0Y2hu X21hc2tbaV0sCisJCQkgICAgICAgaSAlIDggPT0gMCA/ICJcbiAgICIgOiAiICIpOworCQlwcmlu dGsoIlxubG9jYWwgY3B1JWQgbWFzazpcbiAgICIsIGNwdSk7CisJCWZvciAoaSA9IChFVlRDSE5f MkxfTlJfQ0hBTk5FTFMvQklUU19QRVJfRVZUQ0hOX1dPUkQpLTE7IGkgPj0gMDsgaS0tKQorCQkJ cHJpbnRrKCIlMCoiUFJJX3hlbl91bG9uZyIlcyIsIChpbnQpKHNpemVvZihjcHVfZXZ0Y2huWzBd KSoyKSwKKwkJCSAgICAgICBjcHVfZXZ0Y2huW2ldLAorCQkJICAgICAgIGkgJSA4ID09IDAgPyAi XG4gICAiIDogIiAiKTsKIAotCXByaW50aygiXG5sb2NhbCBjcHUlZCBtYXNrOlxuICAgIiwgY3B1 KTsKLQlmb3IgKGkgPSAoRVZUQ0hOXzJMX05SX0NIQU5ORUxTL0JJVFNfUEVSX0VWVENITl9XT1JE KS0xOyBpID49IDA7IGktLSkKLQkJcHJpbnRrKCIlMCoiUFJJX3hlbl91bG9uZyIlcyIsIChpbnQp KHNpemVvZihjcHVfZXZ0Y2huWzBdKSoyKSwKLQkJICAgICAgIGNwdV9ldnRjaG5baV0sCi0JCSAg ICAgICBpICUgOCA9PSAwID8gIlxuICAgIiA6ICIgIik7CisJCXByaW50aygiXG5sb2NhbGx5IHVu bWFza2VkOlxuICAgIik7CisJCWZvciAoaSA9IEFSUkFZX1NJWkUoc2gtPmV2dGNobl9tYXNrKS0x OyBpID49IDA7IGktLSkgeworCQkJeGVuX3Vsb25nX3QgcGVuZGluZyA9IHNoLT5ldnRjaG5fcGVu ZGluZ1tpXQorCQkJCSYgfnNoLT5ldnRjaG5fbWFza1tpXQorCQkJCSYgY3B1X2V2dGNobltpXTsK KwkJCXByaW50aygiJTAqIlBSSV94ZW5fdWxvbmciJXMiLAorCQkJICAgICAgIChpbnQpKHNpemVv ZihzaC0+ZXZ0Y2huX21hc2tbMF0pKjIpLAorCQkJICAgICAgIHBlbmRpbmcsIGkgJSA4ID09IDAg PyAiXG4gICAiIDogIiAiKTsKKwkJfQogCi0JcHJpbnRrKCJcbmxvY2FsbHkgdW5tYXNrZWQ6XG4g ICAiKTsKLQlmb3IgKGkgPSBBUlJBWV9TSVpFKHNoLT5ldnRjaG5fbWFzayktMTsgaSA+PSAwOyBp LS0pIHsKLQkJeGVuX3Vsb25nX3QgcGVuZGluZyA9IHNoLT5ldnRjaG5fcGVuZGluZ1tpXQotCQkJ JiB+c2gtPmV2dGNobl9tYXNrW2ldCi0JCQkmIGNwdV9ldnRjaG5baV07Ci0JCXByaW50aygiJTAq IlBSSV94ZW5fdWxvbmciJXMiLAotCQkgICAgICAgKGludCkoc2l6ZW9mKHNoLT5ldnRjaG5fbWFz a1swXSkqMiksCi0JCSAgICAgICBwZW5kaW5nLCBpICUgOCA9PSAwID8gIlxuICAgIiA6ICIgIik7 Ci0JfQotCi0JcHJpbnRrKCJcbnBlbmRpbmcgbGlzdDpcbiIpOwotCWZvciAoaSA9IDA7IGkgPCBF VlRDSE5fMkxfTlJfQ0hBTk5FTFM7IGkrKykgewotCQlpZiAoc3luY190ZXN0X2JpdChpLCBCTShz aC0+ZXZ0Y2huX3BlbmRpbmcpKSkgewotCQkJaW50IHdvcmRfaWR4ID0gaSAvIEJJVFNfUEVSX0VW VENITl9XT1JEOwotCQkJcHJpbnRrKCIgICVkOiBldmVudCAlZCAtPiBpcnEgJWQlcyVzJXNcbiIs Ci0JCQkgICAgICAgY3B1X2Zyb21fZXZ0Y2huKGkpLCBpLAotCQkJICAgICAgIGdldF9ldnRjaG5f dG9faXJxKGkpLAotCQkJICAgICAgIHN5bmNfdGVzdF9iaXQod29yZF9pZHgsIEJNKCZ2LT5ldnRj aG5fcGVuZGluZ19zZWwpKQotCQkJICAgICAgID8gIiIgOiAiIGwyLWNsZWFyIiwKLQkJCSAgICAg ICAhc3luY190ZXN0X2JpdChpLCBCTShzaC0+ZXZ0Y2huX21hc2spKQotCQkJICAgICAgID8gIiIg OiAiIGdsb2JhbGx5LW1hc2tlZCIsCi0JCQkgICAgICAgc3luY190ZXN0X2JpdChpLCBCTShjcHVf ZXZ0Y2huKSkKLQkJCSAgICAgICA/ICIiIDogIiBsb2NhbGx5LW1hc2tlZCIpOworCQlwcmludGso IlxucGVuZGluZyBsaXN0OlxuIik7CisJCWZvciAoaSA9IDA7IGkgPCBFVlRDSE5fMkxfTlJfQ0hB Tk5FTFM7IGkrKykgeworCQkJaWYgKHN5bmNfdGVzdF9iaXQoaSwgQk0oc2gtPmV2dGNobl9wZW5k aW5nKSkpIHsKKwkJCQlpbnQgd29yZF9pZHggPSBpIC8gQklUU19QRVJfRVZUQ0hOX1dPUkQ7CisJ CQkJcHJpbnRrKCIgICVkOiBldmVudCAlZCAtPiBpcnEgJWQlcyVzJXNcbiIsCisJCQkJICAgICAg IGNwdV9mcm9tX2V2dGNobigqeGgsIGkpLCBpLAorCQkJCSAgICAgICBnZXRfZXZ0Y2huX3RvX2ly cSgqeGgsIGkpLAorCQkJCSAgICAgICBzeW5jX3Rlc3RfYml0KHdvcmRfaWR4LCBCTSgmdi0+ZXZ0 Y2huX3BlbmRpbmdfc2VsKSkKKwkJCQkgICAgICAgPyAiIiA6ICIgbDItY2xlYXIiLAorCQkJCSAg ICAgICAhc3luY190ZXN0X2JpdChpLCBCTShzaC0+ZXZ0Y2huX21hc2spKQorCQkJCSAgICAgICA/ ICIiIDogIiBnbG9iYWxseS1tYXNrZWQiLAorCQkJCSAgICAgICBzeW5jX3Rlc3RfYml0KGksIEJN KGNwdV9ldnRjaG4pKQorCQkJCSAgICAgICA/ICIiIDogIiBsb2NhbGx5LW1hc2tlZCIpOworCQkJ fQogCQl9CiAJfQogCkBAIC0zNDYsMTIgKzM1MiwxMiBAQCBpcnFyZXR1cm5fdCB4ZW5fZGVidWdf aW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pZCkKIAlyZXR1cm4gSVJRX0hBTkRMRUQ7CiB9 CiAKLXN0YXRpYyB2b2lkIGV2dGNobl8ybF9yZXN1bWUodm9pZCkKK3N0YXRpYyB2b2lkIGV2dGNo bl8ybF9yZXN1bWUoeGVuaG9zdF90ICp4aCkKIHsKIAlpbnQgaTsKIAogCWZvcl9lYWNoX29ubGlu ZV9jcHUoaSkKLQkJbWVtc2V0KHBlcl9jcHUoY3B1X2V2dGNobl9tYXNrLCBpKSwgMCwgc2l6ZW9m KHhlbl91bG9uZ190KSAqCisJCW1lbXNldChwZXJfY3B1KGNwdV9ldnRjaG5fbWFzaywgaSlbeGgg LSB4ZW5ob3N0c10sIDAsIHNpemVvZih4ZW5fdWxvbmdfdCkgKgogCQkJCUVWVENITl8yTF9OUl9D SEFOTkVMUy9CSVRTX1BFUl9FVlRDSE5fV09SRCk7CiB9CiAKQEAgLTM2OSw4ICszNzUsOCBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGV2dGNobl9vcHMgZXZ0Y2huX29wc18ybCA9IHsKIAkucmVzdW1l CSAgICAgICAgICAgPSBldnRjaG5fMmxfcmVzdW1lLAogfTsKIAotdm9pZCBfX2luaXQgeGVuX2V2 dGNobl8ybF9pbml0KHZvaWQpCit2b2lkIHhlbl9ldnRjaG5fMmxfaW5pdCh4ZW5ob3N0X3QgKnho KQogewogCXByX2luZm8oIlVzaW5nIDItbGV2ZWwgQUJJXG4iKTsKLQlldnRjaG5fb3BzID0gJmV2 dGNobl9vcHNfMmw7CisJeGgtPmV2dGNobl9vcHMgPSAmZXZ0Y2huX29wc18ybDsKIH0KZGlmZiAt LWdpdCBhL2RyaXZlcnMveGVuL2V2ZW50cy9ldmVudHNfYmFzZS5jIGIvZHJpdmVycy94ZW4vZXZl bnRzL2V2ZW50c19iYXNlLmMKaW5kZXggYWU0OTc4NzZmZTQxLi45OWI2YjJjNTdkMjMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMveGVuL2V2ZW50cy9ldmVudHNfYmFzZS5jCisrKyBiL2RyaXZlcnMveGVu L2V2ZW50cy9ldmVudHNfYmFzZS5jCkBAIC03NywxNSArNzcsMTQgQEAgc3RhdGljIERFRklORV9Q RVJfQ1BVKGludCBbTlJfVklSUVNdLCB2aXJxX3RvX2lycSkgPSB7WzAgLi4uIE5SX1ZJUlFTLTFd ID0gLTF9OwogLyogSVJRIDwtPiBJUEkgbWFwcGluZyAqLwogc3RhdGljIERFRklORV9QRVJfQ1BV KGludCBbWEVOX05SX0lQSVNdLCBpcGlfdG9faXJxKSA9IHtbMCAuLi4gWEVOX05SX0lQSVMtMV0g PSAtMX07CiAKLWludCAqKmV2dGNobl90b19pcnE7CiAjaWZkZWYgQ09ORklHX1g4Ngogc3RhdGlj IHVuc2lnbmVkIGxvbmcgKnBpcnFfZW9pX21hcDsKICNlbmRpZgogc3RhdGljIGJvb2wgKCpwaXJx X25lZWRzX2VvaSkodW5zaWduZWQgaXJxKTsKIAotI2RlZmluZSBFVlRDSE5fUk9XKGUpICAoZSAv IChQQUdFX1NJWkUvc2l6ZW9mKCoqZXZ0Y2huX3RvX2lycSkpKQotI2RlZmluZSBFVlRDSE5fQ09M KGUpICAoZSAlIChQQUdFX1NJWkUvc2l6ZW9mKCoqZXZ0Y2huX3RvX2lycSkpKQotI2RlZmluZSBF VlRDSE5fUEVSX1JPVyAoUEFHRV9TSVpFIC8gc2l6ZW9mKCoqZXZ0Y2huX3RvX2lycSkpCisjZGVm aW5lIEVWVENITl9ST1coeGgsIGUpICAoZSAvIChQQUdFX1NJWkUvc2l6ZW9mKCoqKCh4aCktPmV2 dGNobl90b19pcnEpKSkpCisjZGVmaW5lIEVWVENITl9DT0woeGgsIGUpICAoZSAlIChQQUdFX1NJ WkUvc2l6ZW9mKCoqKCh4aCktPmV2dGNobl90b19pcnEpKSkpCisjZGVmaW5lIEVWVENITl9QRVJf Uk9XKHhoKSAoUEFHRV9TSVpFIC8gc2l6ZW9mKCoqKCh4aCktPmV2dGNobl90b19pcnEpKSkKIAog LyogWGVuIHdpbGwgbmV2ZXIgYWxsb2NhdGUgcG9ydCB6ZXJvIGZvciBhbnkgcHVycG9zZS4gKi8K ICNkZWZpbmUgVkFMSURfRVZUQ0hOKGNobikJKChjaG4pICE9IDApCkBAIC05Niw1OSArOTUsNjIg QEAgc3RhdGljIHN0cnVjdCBpcnFfY2hpcCB4ZW5fcGlycV9jaGlwOwogc3RhdGljIHZvaWQgZW5h YmxlX2R5bmlycShzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEpOwogc3RhdGljIHZvaWQgZGlzYWJsZV9k eW5pcnEoc3RydWN0IGlycV9kYXRhICpkYXRhKTsKIAotc3RhdGljIHZvaWQgY2xlYXJfZXZ0Y2hu X3RvX2lycV9yb3codW5zaWduZWQgcm93KQorc3RhdGljIHZvaWQgY2xlYXJfZXZ0Y2huX3RvX2ly cV9yb3coeGVuaG9zdF90ICp4aCwgdW5zaWduZWQgcm93KQogewogCXVuc2lnbmVkIGNvbDsKIAot CWZvciAoY29sID0gMDsgY29sIDwgRVZUQ0hOX1BFUl9ST1c7IGNvbCsrKQotCQlldnRjaG5fdG9f aXJxW3Jvd11bY29sXSA9IC0xOworCWZvciAoY29sID0gMDsgY29sIDwgRVZUQ0hOX1BFUl9ST1co eGgpOyBjb2wrKykKKwkJeGgtPmV2dGNobl90b19pcnFbcm93XVtjb2xdID0gLTE7CiB9CiAKIHN0 YXRpYyB2b2lkIGNsZWFyX2V2dGNobl90b19pcnFfYWxsKHZvaWQpCiB7CiAJdW5zaWduZWQgcm93 OworCXhlbmhvc3RfdCAqKnhoOwogCi0JZm9yIChyb3cgPSAwOyByb3cgPCBFVlRDSE5fUk9XKHhl bl9ldnRjaG5fbWF4X2NoYW5uZWxzKCkpOyByb3crKykgewotCQlpZiAoZXZ0Y2huX3RvX2lycVty b3ddID09IE5VTEwpCi0JCQljb250aW51ZTsKLQkJY2xlYXJfZXZ0Y2huX3RvX2lycV9yb3cocm93 KTsKKwlmb3JfZWFjaF94ZW5ob3N0KHhoKSB7CisJCWZvciAocm93ID0gMDsgcm93IDwgRVZUQ0hO X1JPVygqeGgsIHhlbl9ldnRjaG5fbWF4X2NoYW5uZWxzKCp4aCkpOyByb3crKykgeworCQkJaWYg KCgqeGgpLT5ldnRjaG5fdG9faXJxW3Jvd10gPT0gTlVMTCkKKwkJCQljb250aW51ZTsKKwkJCWNs ZWFyX2V2dGNobl90b19pcnFfcm93KCp4aCwgcm93KTsKKwkJfQogCX0KIH0KIAotc3RhdGljIGlu dCBzZXRfZXZ0Y2huX3RvX2lycSh1bnNpZ25lZCBldnRjaG4sIHVuc2lnbmVkIGlycSkKK3N0YXRp YyBpbnQgc2V0X2V2dGNobl90b19pcnEoeGVuaG9zdF90ICp4aCwgdW5zaWduZWQgZXZ0Y2huLCB1 bnNpZ25lZCBpcnEpCiB7CiAJdW5zaWduZWQgcm93OwogCXVuc2lnbmVkIGNvbDsKIAotCWlmIChl dnRjaG4gPj0geGVuX2V2dGNobl9tYXhfY2hhbm5lbHMoKSkKKwlpZiAoZXZ0Y2huID49IHhlbl9l dnRjaG5fbWF4X2NoYW5uZWxzKHhoKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlyb3cgPSBFVlRD SE5fUk9XKGV2dGNobik7Ci0JY29sID0gRVZUQ0hOX0NPTChldnRjaG4pOworCXJvdyA9IEVWVENI Tl9ST1coeGgsIGV2dGNobik7CisJY29sID0gRVZUQ0hOX0NPTCh4aCwgZXZ0Y2huKTsKIAotCWlm IChldnRjaG5fdG9faXJxW3Jvd10gPT0gTlVMTCkgeworCWlmICh4aC0+ZXZ0Y2huX3RvX2lycVty b3ddID09IE5VTEwpIHsKIAkJLyogVW5hbGxvY2F0ZWQgaXJxIGVudHJpZXMgcmV0dXJuIC0xIGFu eXdheSAqLwogCQlpZiAoaXJxID09IC0xKQogCQkJcmV0dXJuIDA7CiAKLQkJZXZ0Y2huX3RvX2ly cVtyb3ddID0gKGludCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMKTsKLQkJaWYgKGV2dGNo bl90b19pcnFbcm93XSA9PSBOVUxMKQorCQl4aC0+ZXZ0Y2huX3RvX2lycVtyb3ddID0gKGludCAq KWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMKTsKKwkJaWYgKHhoLT5ldnRjaG5fdG9faXJxW3Jv d10gPT0gTlVMTCkKIAkJCXJldHVybiAtRU5PTUVNOwogCi0JCWNsZWFyX2V2dGNobl90b19pcnFf cm93KHJvdyk7CisJCWNsZWFyX2V2dGNobl90b19pcnFfcm93KHhoLCByb3cpOwogCX0KIAotCWV2 dGNobl90b19pcnFbcm93XVtjb2xdID0gaXJxOworCXhoLT5ldnRjaG5fdG9faXJxW3Jvd11bY29s XSA9IGlycTsKIAlyZXR1cm4gMDsKIH0KIAotaW50IGdldF9ldnRjaG5fdG9faXJxKHVuc2lnbmVk IGV2dGNobikKK2ludCBnZXRfZXZ0Y2huX3RvX2lycSh4ZW5ob3N0X3QgKnhoLCB1bnNpZ25lZCBl dnRjaG4pCiB7Ci0JaWYgKGV2dGNobiA+PSB4ZW5fZXZ0Y2huX21heF9jaGFubmVscygpKQorCWlm IChldnRjaG4gPj0geGVuX2V2dGNobl9tYXhfY2hhbm5lbHMoeGgpKQogCQlyZXR1cm4gLTE7Ci0J aWYgKGV2dGNobl90b19pcnFbRVZUQ0hOX1JPVyhldnRjaG4pXSA9PSBOVUxMKQorCWlmICh4aC0+ ZXZ0Y2huX3RvX2lycVtFVlRDSE5fUk9XKHhoLCBldnRjaG4pXSA9PSBOVUxMKQogCQlyZXR1cm4g LTE7Ci0JcmV0dXJuIGV2dGNobl90b19pcnFbRVZUQ0hOX1JPVyhldnRjaG4pXVtFVlRDSE5fQ09M KGV2dGNobildOworCXJldHVybiB4aC0+ZXZ0Y2huX3RvX2lycVtFVlRDSE5fUk9XKHhoLCBldnRj aG4pXVtFVlRDSE5fQ09MKHhoLCBldnRjaG4pXTsKIH0KIAogLyogR2V0IGluZm8gZm9yIElSUSAq LwpAQCAtMTU5LDYgKzE2MSw3IEBAIHN0cnVjdCBpcnFfaW5mbyAqaW5mb19mb3JfaXJxKHVuc2ln bmVkIGlycSkKIAogLyogQ29uc3RydWN0b3JzIGZvciBwYWNrZWQgSVJRIGluZm9ybWF0aW9uLiAq Lwogc3RhdGljIGludCB4ZW5faXJxX2luZm9fY29tbW9uX3NldHVwKHN0cnVjdCBpcnFfaW5mbyAq aW5mbywKKwkJCQkgICAgIHhlbmhvc3RfdCAqeGgsCiAJCQkJICAgICB1bnNpZ25lZCBpcnEsCiAJ CQkJICAgICBlbnVtIHhlbl9pcnFfdHlwZSB0eXBlLAogCQkJCSAgICAgdW5zaWduZWQgZXZ0Y2hu LApAQCAtMTczLDcgKzE3Niw3IEBAIHN0YXRpYyBpbnQgeGVuX2lycV9pbmZvX2NvbW1vbl9zZXR1 cChzdHJ1Y3QgaXJxX2luZm8gKmluZm8sCiAJaW5mby0+ZXZ0Y2huID0gZXZ0Y2huOwogCWluZm8t PmNwdSA9IGNwdTsKIAotCXJldCA9IHNldF9ldnRjaG5fdG9faXJxKGV2dGNobiwgaXJxKTsKKwly ZXQgPSBzZXRfZXZ0Y2huX3RvX2lycSh4aCwgZXZ0Y2huLCBpcnEpOwogCWlmIChyZXQgPCAwKQog CQlyZXR1cm4gcmV0OwogCkBAIC0xODIsMjkgKzE4NSwzNCBAQCBzdGF0aWMgaW50IHhlbl9pcnFf aW5mb19jb21tb25fc2V0dXAoc3RydWN0IGlycV9pbmZvICppbmZvLAogCXJldHVybiB4ZW5fZXZ0 Y2huX3BvcnRfc2V0dXAoaW5mbyk7CiB9CiAKLXN0YXRpYyBpbnQgeGVuX2lycV9pbmZvX2V2dGNo bl9zZXR1cCh1bnNpZ25lZCBpcnEsCitzdGF0aWMgaW50IHhlbl9pcnFfaW5mb19ldnRjaG5fc2V0 dXAoeGVuaG9zdF90ICp4aCwKKwkJCQkgICAgIHVuc2lnbmVkIGlycSwKIAkJCQkgICAgIHVuc2ln bmVkIGV2dGNobikKIHsKIAlzdHJ1Y3QgaXJxX2luZm8gKmluZm8gPSBpbmZvX2Zvcl9pcnEoaXJx KTsKIAotCXJldHVybiB4ZW5faXJxX2luZm9fY29tbW9uX3NldHVwKGluZm8sIGlycSwgSVJRVF9F VlRDSE4sIGV2dGNobiwgMCk7CisJcmV0dXJuIHhlbl9pcnFfaW5mb19jb21tb25fc2V0dXAoaW5m bywgeGgsIGlycSwgSVJRVF9FVlRDSE4sIGV2dGNobiwgMCk7CiB9CiAKLXN0YXRpYyBpbnQgeGVu X2lycV9pbmZvX2lwaV9zZXR1cCh1bnNpZ25lZCBjcHUsCitzdGF0aWMgaW50IHhlbl9pcnFfaW5m b19pcGlfc2V0dXAoeGVuaG9zdF90ICp4aCwKKwkJCQkgIHVuc2lnbmVkIGNwdSwKIAkJCQkgIHVu c2lnbmVkIGlycSwKIAkJCQkgIHVuc2lnbmVkIGV2dGNobiwKIAkJCQkgIGVudW0gaXBpX3ZlY3Rv ciBpcGkpCiB7CiAJc3RydWN0IGlycV9pbmZvICppbmZvID0gaW5mb19mb3JfaXJxKGlycSk7CiAK KwlCVUdfT04oeGgtPnR5cGUgIT0geGVuaG9zdF9yMSk7CisKIAlpbmZvLT51LmlwaSA9IGlwaTsK IAogCXBlcl9jcHUoaXBpX3RvX2lycSwgY3B1KVtpcGldID0gaXJxOwogCi0JcmV0dXJuIHhlbl9p cnFfaW5mb19jb21tb25fc2V0dXAoaW5mbywgaXJxLCBJUlFUX0lQSSwgZXZ0Y2huLCAwKTsKKwly ZXR1cm4geGVuX2lycV9pbmZvX2NvbW1vbl9zZXR1cChpbmZvLCB4aCwgaXJxLCBJUlFUX0lQSSwg ZXZ0Y2huLCAwKTsKIH0KIAotc3RhdGljIGludCB4ZW5faXJxX2luZm9fdmlycV9zZXR1cCh1bnNp Z25lZCBjcHUsCitzdGF0aWMgaW50IHhlbl9pcnFfaW5mb192aXJxX3NldHVwKHhlbmhvc3RfdCAq eGgsCisJCQkJICAgdW5zaWduZWQgY3B1LAogCQkJCSAgIHVuc2lnbmVkIGlycSwKIAkJCQkgICB1 bnNpZ25lZCBldnRjaG4sCiAJCQkJICAgdW5zaWduZWQgdmlycSkKQEAgLTIxNSwxMCArMjIzLDEx IEBAIHN0YXRpYyBpbnQgeGVuX2lycV9pbmZvX3ZpcnFfc2V0dXAodW5zaWduZWQgY3B1LAogCiAJ cGVyX2NwdSh2aXJxX3RvX2lycSwgY3B1KVt2aXJxXSA9IGlycTsKIAotCXJldHVybiB4ZW5faXJx X2luZm9fY29tbW9uX3NldHVwKGluZm8sIGlycSwgSVJRVF9WSVJRLCBldnRjaG4sIDApOworCXJl dHVybiB4ZW5faXJxX2luZm9fY29tbW9uX3NldHVwKGluZm8sIHhoLCBpcnEsIElSUVRfVklSUSwg ZXZ0Y2huLCAwKTsKIH0KIAotc3RhdGljIGludCB4ZW5faXJxX2luZm9fcGlycV9zZXR1cCh1bnNp Z25lZCBpcnEsCitzdGF0aWMgaW50IHhlbl9pcnFfaW5mb19waXJxX3NldHVwKHhlbmhvc3RfdCAq eGgsCisJCQkJICAgdW5zaWduZWQgaXJxLAogCQkJCSAgIHVuc2lnbmVkIGV2dGNobiwKIAkJCQkg ICB1bnNpZ25lZCBwaXJxLAogCQkJCSAgIHVuc2lnbmVkIGdzaSwKQEAgLTIzMiwxMiArMjQxLDEy IEBAIHN0YXRpYyBpbnQgeGVuX2lycV9pbmZvX3BpcnFfc2V0dXAodW5zaWduZWQgaXJxLAogCWlu Zm8tPnUucGlycS5kb21pZCA9IGRvbWlkOwogCWluZm8tPnUucGlycS5mbGFncyA9IGZsYWdzOwog Ci0JcmV0dXJuIHhlbl9pcnFfaW5mb19jb21tb25fc2V0dXAoaW5mbywgaXJxLCBJUlFUX1BJUlEs IGV2dGNobiwgMCk7CisJcmV0dXJuIHhlbl9pcnFfaW5mb19jb21tb25fc2V0dXAoaW5mbywgeGgs IGlycSwgSVJRVF9QSVJRLCBldnRjaG4sIDApOwogfQogCiBzdGF0aWMgdm9pZCB4ZW5faXJxX2lu Zm9fY2xlYW51cChzdHJ1Y3QgaXJxX2luZm8gKmluZm8pCiB7Ci0Jc2V0X2V2dGNobl90b19pcnEo aW5mby0+ZXZ0Y2huLCAtMSk7CisJc2V0X2V2dGNobl90b19pcnEoaW5mby0+eGgsIGluZm8tPmV2 dGNobiwgLTEpOwogCWluZm8tPmV2dGNobiA9IDA7CiB9CiAKQEAgLTI1Miw5ICsyNjEsOSBAQCB1 bnNpZ25lZCBpbnQgZXZ0Y2huX2Zyb21faXJxKHVuc2lnbmVkIGlycSkKIAlyZXR1cm4gaW5mb19m b3JfaXJxKGlycSktPmV2dGNobjsKIH0KIAotdW5zaWduZWQgaXJxX2Zyb21fZXZ0Y2huKHVuc2ln bmVkIGludCBldnRjaG4pCit1bnNpZ25lZCBpcnFfZnJvbV9ldnRjaG4oeGVuaG9zdF90ICp4aCwg dW5zaWduZWQgaW50IGV2dGNobikKIHsKLQlyZXR1cm4gZ2V0X2V2dGNobl90b19pcnEoZXZ0Y2hu KTsKKwlyZXR1cm4gZ2V0X2V2dGNobl90b19pcnEoeGgsIGV2dGNobik7CiB9CiBFWFBPUlRfU1lN Qk9MX0dQTChpcnFfZnJvbV9ldnRjaG4pOwogCkBAIC0zMDMsOSArMzEyLDkgQEAgdW5zaWduZWQg Y3B1X2Zyb21faXJxKHVuc2lnbmVkIGlycSkKIAlyZXR1cm4gaW5mb19mb3JfaXJxKGlycSktPmNw dTsKIH0KIAotdW5zaWduZWQgaW50IGNwdV9mcm9tX2V2dGNobih1bnNpZ25lZCBpbnQgZXZ0Y2hu KQordW5zaWduZWQgaW50IGNwdV9mcm9tX2V2dGNobih4ZW5ob3N0X3QgKnhoLCB1bnNpZ25lZCBp bnQgZXZ0Y2huKQogewotCWludCBpcnEgPSBnZXRfZXZ0Y2huX3RvX2lycShldnRjaG4pOworCWlu dCBpcnEgPSBnZXRfZXZ0Y2huX3RvX2lycSh4aCwgZXZ0Y2huKTsKIAl1bnNpZ25lZCByZXQgPSAw OwogCiAJaWYgKGlycSAhPSAtMSkKQEAgLTMyOSw5ICszMzgsOSBAQCBzdGF0aWMgYm9vbCBwaXJx X25lZWRzX2VvaV9mbGFnKHVuc2lnbmVkIGlycSkKIAlyZXR1cm4gaW5mby0+dS5waXJxLmZsYWdz ICYgUElSUV9ORUVEU19FT0k7CiB9CiAKLXN0YXRpYyB2b2lkIGJpbmRfZXZ0Y2huX3RvX2NwdSh1 bnNpZ25lZCBpbnQgY2huLCB1bnNpZ25lZCBpbnQgY3B1KQorc3RhdGljIHZvaWQgYmluZF9ldnRj aG5fdG9fY3B1KHhlbmhvc3RfdCAqeGgsIHVuc2lnbmVkIGludCBjaG4sIHVuc2lnbmVkIGludCBj cHUpCiB7Ci0JaW50IGlycSA9IGdldF9ldnRjaG5fdG9faXJxKGNobik7CisJaW50IGlycSA9IGdl dF9ldnRjaG5fdG9faXJxKHhoLCBjaG4pOwogCXN0cnVjdCBpcnFfaW5mbyAqaW5mbyA9IGluZm9f Zm9yX2lycShpcnEpOwogCiAJQlVHX09OKGlycSA9PSAtMSk7CkBAIC0zNTYsMTEgKzM2NSwxMSBA QCB2b2lkIG5vdGlmeV9yZW1vdGVfdmlhX2lycShpbnQgaXJxKQogCWludCBldnRjaG4gPSBldnRj aG5fZnJvbV9pcnEoaXJxKTsKIAogCWlmIChWQUxJRF9FVlRDSE4oZXZ0Y2huKSkKLQkJbm90aWZ5 X3JlbW90ZV92aWFfZXZ0Y2huKGV2dGNobik7CisJCW5vdGlmeV9yZW1vdGVfdmlhX2V2dGNobihp bmZvX2Zvcl9pcnEoaXJxKS0+eGgsIGV2dGNobik7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChub3Rp ZnlfcmVtb3RlX3ZpYV9pcnEpOwogCi1zdGF0aWMgdm9pZCB4ZW5faXJxX2luaXQodW5zaWduZWQg aXJxKQorc3RhdGljIHZvaWQgeGVuX2lycV9pbml0KHhlbmhvc3RfdCAqeGgsIHVuc2lnbmVkIGly cSkKIHsKIAlzdHJ1Y3QgaXJxX2luZm8gKmluZm87CiAjaWZkZWYgQ09ORklHX1NNUApAQCAtMzc0 LDMxICszODMsMzIgQEAgc3RhdGljIHZvaWQgeGVuX2lycV9pbml0KHVuc2lnbmVkIGlycSkKIAog CWluZm8tPnR5cGUgPSBJUlFUX1VOQk9VTkQ7CiAJaW5mby0+cmVmY250ID0gLTE7CisJaW5mby0+ eGggPSB4aDsKIAogCWlycV9zZXRfaGFuZGxlcl9kYXRhKGlycSwgaW5mbyk7CiAKIAlsaXN0X2Fk ZF90YWlsKCZpbmZvLT5saXN0LCAmeGVuX2lycV9saXN0X2hlYWQpOwogfQogCi1zdGF0aWMgaW50 IF9fbXVzdF9jaGVjayB4ZW5fYWxsb2NhdGVfaXJxc19keW5hbWljKGludCBudmVjKQorc3RhdGlj IGludCBfX211c3RfY2hlY2sgeGVuX2FsbG9jYXRlX2lycXNfZHluYW1pYyh4ZW5ob3N0X3QgKnho LCBpbnQgbnZlYykKIHsKIAlpbnQgaSwgaXJxID0gaXJxX2FsbG9jX2Rlc2NzKC0xLCAwLCBudmVj LCAtMSk7CiAKIAlpZiAoaXJxID49IDApIHsKIAkJZm9yIChpID0gMDsgaSA8IG52ZWM7IGkrKykK LQkJCXhlbl9pcnFfaW5pdChpcnEgKyBpKTsKKwkJCXhlbl9pcnFfaW5pdCh4aCwgaXJxICsgaSk7 CiAJfQogCiAJcmV0dXJuIGlycTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgX19tdXN0X2NoZWNr IHhlbl9hbGxvY2F0ZV9pcnFfZHluYW1pYyh2b2lkKQorc3RhdGljIGlubGluZSBpbnQgX19tdXN0 X2NoZWNrIHhlbl9hbGxvY2F0ZV9pcnFfZHluYW1pYyh4ZW5ob3N0X3QgKnhoKQogewogCi0JcmV0 dXJuIHhlbl9hbGxvY2F0ZV9pcnFzX2R5bmFtaWMoMSk7CisJcmV0dXJuIHhlbl9hbGxvY2F0ZV9p cnFzX2R5bmFtaWMoeGgsIDEpOwogfQogCi1zdGF0aWMgaW50IF9fbXVzdF9jaGVjayB4ZW5fYWxs b2NhdGVfaXJxX2dzaSh1bnNpZ25lZCBnc2kpCitzdGF0aWMgaW50IF9fbXVzdF9jaGVjayB4ZW5f YWxsb2NhdGVfaXJxX2dzaSh4ZW5ob3N0X3QgKnhoLCB1bnNpZ25lZCBnc2kpCiB7CiAJaW50IGly cTsKIApAQCAtNDA5LDcgKzQxOSw3IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIHhlbl9hbGxv Y2F0ZV9pcnFfZ3NpKHVuc2lnbmVkIGdzaSkKIAkgKiBzcGFjZS4KIAkgKi8KIAlpZiAoeGVuX3B2 X2RvbWFpbigpICYmICF4ZW5faW5pdGlhbF9kb21haW4oKSkKLQkJcmV0dXJuIHhlbl9hbGxvY2F0 ZV9pcnFfZHluYW1pYygpOworCQlyZXR1cm4geGVuX2FsbG9jYXRlX2lycV9keW5hbWljKHhoKTsK IAogCS8qIExlZ2FjeSBJUlEgZGVzY3JpcHRvcnMgYXJlIGFscmVhZHkgYWxsb2NhdGVkIGJ5IHRo ZSBhcmNoLiAqLwogCWlmIChnc2kgPCBucl9sZWdhY3lfaXJxcygpKQpAQCAtNDE3LDcgKzQyNyw3 IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIHhlbl9hbGxvY2F0ZV9pcnFfZ3NpKHVuc2lnbmVk IGdzaSkKIAllbHNlCiAJCWlycSA9IGlycV9hbGxvY19kZXNjX2F0KGdzaSwgLTEpOwogCi0JeGVu X2lycV9pbml0KGlycSk7CisJeGVuX2lycV9pbml0KHhoLCBpcnEpOwogCiAJcmV0dXJuIGlycTsK IH0KQEAgLTQ0NCwxMiArNDU0LDEyIEBAIHN0YXRpYyB2b2lkIHhlbl9mcmVlX2lycSh1bnNpZ25l ZCBpcnEpCiAJaXJxX2ZyZWVfZGVzYyhpcnEpOwogfQogCi1zdGF0aWMgdm9pZCB4ZW5fZXZ0Y2hu X2Nsb3NlKHVuc2lnbmVkIGludCBwb3J0KQorc3RhdGljIHZvaWQgeGVuX2V2dGNobl9jbG9zZSh4 ZW5ob3N0X3QgKnhoLCB1bnNpZ25lZCBpbnQgcG9ydCkKIHsKIAlzdHJ1Y3QgZXZ0Y2huX2Nsb3Nl IGNsb3NlOwogCiAJY2xvc2UucG9ydCA9IHBvcnQ7Ci0JaWYgKEhZUEVSVklTT1JfZXZlbnRfY2hh bm5lbF9vcChFVlRDSE5PUF9jbG9zZSwgJmNsb3NlKSAhPSAwKQorCWlmIChoeXBlcnZpc29yX2V2 ZW50X2NoYW5uZWxfb3AoeGgsIEVWVENITk9QX2Nsb3NlLCAmY2xvc2UpICE9IDApCiAJCUJVRygp OwogfQogCkBAIC00NzMsNiArNDgzLDcgQEAgc3RhdGljIHZvaWQgZW9pX3BpcnEoc3RydWN0IGly cV9kYXRhICpkYXRhKQogewogCWludCBldnRjaG4gPSBldnRjaG5fZnJvbV9pcnEoZGF0YS0+aXJx KTsKIAlzdHJ1Y3QgcGh5c2Rldl9lb2kgZW9pID0geyAuaXJxID0gcGlycV9mcm9tX2lycShkYXRh LT5pcnEpIH07CisJeGVuaG9zdF90ICp4aCA9IGluZm9fZm9yX2lycShkYXRhLT5pcnEpLT54aDsK IAlpbnQgcmMgPSAwOwogCiAJaWYgKCFWQUxJRF9FVlRDSE4oZXZ0Y2huKSkKQEAgLTQ4MCwxNiAr NDkxLDE2IEBAIHN0YXRpYyB2b2lkIGVvaV9waXJxKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSkKIAog CWlmICh1bmxpa2VseShpcnFkX2lzX3NldGFmZmluaXR5X3BlbmRpbmcoZGF0YSkpICYmCiAJICAg IGxpa2VseSghaXJxZF9pcnFfZGlzYWJsZWQoZGF0YSkpKSB7Ci0JCWludCBtYXNrZWQgPSB0ZXN0 X2FuZF9zZXRfbWFzayhldnRjaG4pOworCQlpbnQgbWFza2VkID0gdGVzdF9hbmRfc2V0X21hc2so eGgsIGV2dGNobik7CiAKLQkJY2xlYXJfZXZ0Y2huKGV2dGNobik7CisJCWNsZWFyX2V2dGNobih4 aCwgZXZ0Y2huKTsKIAogCQlpcnFfbW92ZV9tYXNrZWRfaXJxKGRhdGEpOwogCiAJCWlmICghbWFz a2VkKQotCQkJdW5tYXNrX2V2dGNobihldnRjaG4pOworCQkJdW5tYXNrX2V2dGNobih4aCwgZXZ0 Y2huKTsKIAl9IGVsc2UKLQkJY2xlYXJfZXZ0Y2huKGV2dGNobik7CisJCWNsZWFyX2V2dGNobih4 aCwgZXZ0Y2huKTsKIAogCWlmIChwaXJxX25lZWRzX2VvaShkYXRhLT5pcnEpKSB7CiAJCXJjID0g SFlQRVJWSVNPUl9waHlzZGV2X29wKFBIWVNERVZPUF9lb2ksICZlb2kpOwpAQCAtNTE5LDcgKzUz MCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgX19zdGFydHVwX3BpcnEodW5zaWduZWQgaW50IGly cSkKIAkvKiBOQi4gV2UgYXJlIGhhcHB5IHRvIHNoYXJlIHVubGVzcyB3ZSBhcmUgcHJvYmluZy4g Ki8KIAliaW5kX3BpcnEuZmxhZ3MgPSBpbmZvLT51LnBpcnEuZmxhZ3MgJiBQSVJRX1NIQVJFQUJM RSA/CiAJCQkJCUJJTkRfUElSUV9fV0lMTF9TSEFSRSA6IDA7Ci0JcmMgPSBIWVBFUlZJU09SX2V2 ZW50X2NoYW5uZWxfb3AoRVZUQ0hOT1BfYmluZF9waXJxLCAmYmluZF9waXJxKTsKKwlyYyA9IGh5 cGVydmlzb3JfZXZlbnRfY2hhbm5lbF9vcChpbmZvLT54aCwgRVZUQ0hOT1BfYmluZF9waXJxLCAm YmluZF9waXJxKTsKIAlpZiAocmMgIT0gMCkgewogCQlwcl93YXJuKCJGYWlsZWQgdG8gb2J0YWlu IHBoeXNpY2FsIElSUSAlZFxuIiwgaXJxKTsKIAkJcmV0dXJuIDA7CkBAIC01MjgsMjYgKzUzOSwy NiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IF9fc3RhcnR1cF9waXJxKHVuc2lnbmVkIGludCBpcnEp CiAKIAlwaXJxX3F1ZXJ5X3VubWFzayhpcnEpOwogCi0JcmMgPSBzZXRfZXZ0Y2huX3RvX2lycShl dnRjaG4sIGlycSk7CisJcmMgPSBzZXRfZXZ0Y2huX3RvX2lycShpbmZvLT54aCwgZXZ0Y2huLCBp cnEpOwogCWlmIChyYykKIAkJZ290byBlcnI7CiAKIAlpbmZvLT5ldnRjaG4gPSBldnRjaG47Ci0J YmluZF9ldnRjaG5fdG9fY3B1KGV2dGNobiwgMCk7CisJYmluZF9ldnRjaG5fdG9fY3B1KGluZm8t PnhoLCBldnRjaG4sIDApOwogCiAJcmMgPSB4ZW5fZXZ0Y2huX3BvcnRfc2V0dXAoaW5mbyk7CiAJ aWYgKHJjKQogCQlnb3RvIGVycjsKIAogb3V0OgotCXVubWFza19ldnRjaG4oZXZ0Y2huKTsKKwl1 bm1hc2tfZXZ0Y2huKGluZm8tPnhoLCBldnRjaG4pOwogCWVvaV9waXJxKGlycV9nZXRfaXJxX2Rh dGEoaXJxKSk7CiAKIAlyZXR1cm4gMDsKIAogZXJyOgogCXByX2VycigiaXJxJWQ6IEZhaWxlZCB0 byBzZXQgcG9ydCB0byBpcnEgbWFwcGluZyAoJWQpXG4iLCBpcnEsIHJjKTsKLQl4ZW5fZXZ0Y2hu X2Nsb3NlKGV2dGNobik7CisJeGVuX2V2dGNobl9jbG9zZShpbmZvLT54aCwgZXZ0Y2huKTsKIAly ZXR1cm4gMDsKIH0KIApAQCAtNTY3LDggKzU3OCw4IEBAIHN0YXRpYyB2b2lkIHNodXRkb3duX3Bp cnEoc3RydWN0IGlycV9kYXRhICpkYXRhKQogCWlmICghVkFMSURfRVZUQ0hOKGV2dGNobikpCiAJ CXJldHVybjsKIAotCW1hc2tfZXZ0Y2huKGV2dGNobik7Ci0JeGVuX2V2dGNobl9jbG9zZShldnRj aG4pOworCW1hc2tfZXZ0Y2huKGluZm8tPnhoLCBldnRjaG4pOworCXhlbl9ldnRjaG5fY2xvc2Uo aW5mby0+eGgsIGV2dGNobik7CiAJeGVuX2lycV9pbmZvX2NsZWFudXAoaW5mbyk7CiB9CiAKQEAg LTYxMiw3ICs2MjMsNyBAQCBzdGF0aWMgdm9pZCBfX3VuYmluZF9mcm9tX2lycSh1bnNpZ25lZCBp bnQgaXJxKQogCWlmIChWQUxJRF9FVlRDSE4oZXZ0Y2huKSkgewogCQl1bnNpZ25lZCBpbnQgY3B1 ID0gY3B1X2Zyb21faXJxKGlycSk7CiAKLQkJeGVuX2V2dGNobl9jbG9zZShldnRjaG4pOworCQl4 ZW5fZXZ0Y2huX2Nsb3NlKGluZm8tPnhoLCBldnRjaG4pOwogCiAJCXN3aXRjaCAodHlwZV9mcm9t X2lycShpcnEpKSB7CiAJCWNhc2UgSVJRVF9WSVJROgpAQCAtNjQxLDEzICs2NTIsMTUgQEAgc3Rh dGljIHZvaWQgX191bmJpbmRfZnJvbV9pcnEodW5zaWduZWQgaW50IGlycSkKICAqIFNoYXJlYWJs ZSBpbXBsaWVzIGxldmVsIHRyaWdnZXJlZCwgbm90IHNoYXJlYWJsZSBpbXBsaWVzIGVkZ2UKICAq IHRyaWdnZXJlZCBoZXJlLgogICovCi1pbnQgeGVuX2JpbmRfcGlycV9nc2lfdG9faXJxKHVuc2ln bmVkIGdzaSwKK2ludCB4ZW5fYmluZF9waXJxX2dzaV90b19pcnEoeGVuaG9zdF90ICp4aCwgdW5z aWduZWQgZ3NpLAogCQkJICAgICB1bnNpZ25lZCBwaXJxLCBpbnQgc2hhcmVhYmxlLCBjaGFyICpu YW1lKQogewogCWludCBpcnEgPSAtMTsKIAlzdHJ1Y3QgcGh5c2Rldl9pcnEgaXJxX29wOwogCWlu dCByZXQ7CiAKKwlCVUdfT04oeGgtPnR5cGUgIT0geGVuaG9zdF9yMSk7CisKIAltdXRleF9sb2Nr KCZpcnFfbWFwcGluZ191cGRhdGVfbG9jayk7CiAKIAlpcnEgPSB4ZW5faXJxX2Zyb21fZ3NpKGdz aSk7CkBAIC02NTcsNyArNjcwLDcgQEAgaW50IHhlbl9iaW5kX3BpcnFfZ3NpX3RvX2lycSh1bnNp Z25lZCBnc2ksCiAJCWdvdG8gb3V0OwogCX0KIAotCWlycSA9IHhlbl9hbGxvY2F0ZV9pcnFfZ3Np KGdzaSk7CisJaXJxID0geGVuX2FsbG9jYXRlX2lycV9nc2koeGgsIGdzaSk7CiAJaWYgKGlycSA8 IDApCiAJCWdvdG8gb3V0OwogCkBAIC02NjgsMTMgKzY4MSwxMyBAQCBpbnQgeGVuX2JpbmRfcGly cV9nc2lfdG9faXJxKHVuc2lnbmVkIGdzaSwKIAkgKiBkcml2ZXIgcHJvdmlkZXMgYSBQQ0kgYnVz IHRoYXQgZG9lcyB0aGUgY2FsbCB0byBkbyBleGFjdGx5CiAJICogdGhpcyBpbiB0aGUgcHJpdiBk b21haW4uICovCiAJaWYgKHhlbl9pbml0aWFsX2RvbWFpbigpICYmCi0JICAgIEhZUEVSVklTT1Jf cGh5c2Rldl9vcChQSFlTREVWT1BfYWxsb2NfaXJxX3ZlY3RvciwgJmlycV9vcCkpIHsKKwkgICAg aHlwZXJ2aXNvcl9waHlzZGV2X29wKHhoLCBQSFlTREVWT1BfYWxsb2NfaXJxX3ZlY3RvciwgJmly cV9vcCkpIHsKIAkJeGVuX2ZyZWVfaXJxKGlycSk7CiAJCWlycSA9IC1FTk9TUEM7CiAJCWdvdG8g b3V0OwogCX0KIAotCXJldCA9IHhlbl9pcnFfaW5mb19waXJxX3NldHVwKGlycSwgMCwgcGlycSwg Z3NpLCBET01JRF9TRUxGLAorCXJldCA9IHhlbl9pcnFfaW5mb19waXJxX3NldHVwKHhoLCBpcnEs IDAsIHBpcnEsIGdzaSwgRE9NSURfU0VMRiwKIAkJCSAgICAgICBzaGFyZWFibGUgPyBQSVJRX1NI QVJFQUJMRSA6IDApOwogCWlmIChyZXQgPCAwKSB7CiAJCV9fdW5iaW5kX2Zyb21faXJxKGlycSk7 CkBAIC03MTIsMTMgKzcyNSwxMyBAQCBpbnQgeGVuX2JpbmRfcGlycV9nc2lfdG9faXJxKHVuc2ln bmVkIGdzaSwKIH0KIAogI2lmZGVmIENPTkZJR19QQ0lfTVNJCi1pbnQgeGVuX2FsbG9jYXRlX3Bp cnFfbXNpKHN0cnVjdCBwY2lfZGV2ICpkZXYsIHN0cnVjdCBtc2lfZGVzYyAqbXNpZGVzYykKK2lu dCB4ZW5fYWxsb2NhdGVfcGlycV9tc2koeGVuaG9zdF90ICp4aCwgc3RydWN0IHBjaV9kZXYgKmRl diwgc3RydWN0IG1zaV9kZXNjICptc2lkZXNjKQogewogCWludCByYzsKIAlzdHJ1Y3QgcGh5c2Rl dl9nZXRfZnJlZV9waXJxIG9wX2dldF9mcmVlX3BpcnE7CiAKIAlvcF9nZXRfZnJlZV9waXJxLnR5 cGUgPSBNQVBfUElSUV9UWVBFX01TSTsKLQlyYyA9IEhZUEVSVklTT1JfcGh5c2Rldl9vcChQSFlT REVWT1BfZ2V0X2ZyZWVfcGlycSwgJm9wX2dldF9mcmVlX3BpcnEpOworCXJjID0gaHlwZXJ2aXNv cl9waHlzZGV2X29wKHhoLCBQSFlTREVWT1BfZ2V0X2ZyZWVfcGlycSwgJm9wX2dldF9mcmVlX3Bp cnEpOwogCiAJV0FSTl9PTkNFKHJjID09IC1FTk9TWVMsCiAJCSAgImh5cGVydmlzb3IgZG9lcyBu b3Qgc3VwcG9ydCB0aGUgUEhZU0RFVk9QX2dldF9mcmVlX3BpcnEgaW50ZXJmYWNlXG4iKTsKQEAg LTcyNiwyMSArNzM5LDIxIEBAIGludCB4ZW5fYWxsb2NhdGVfcGlycV9tc2koc3RydWN0IHBjaV9k ZXYgKmRldiwgc3RydWN0IG1zaV9kZXNjICptc2lkZXNjKQogCXJldHVybiByYyA/IC0xIDogb3Bf Z2V0X2ZyZWVfcGlycS5waXJxOwogfQogCi1pbnQgeGVuX2JpbmRfcGlycV9tc2lfdG9faXJxKHN0 cnVjdCBwY2lfZGV2ICpkZXYsIHN0cnVjdCBtc2lfZGVzYyAqbXNpZGVzYywKK2ludCB4ZW5fYmlu ZF9waXJxX21zaV90b19pcnEoeGVuaG9zdF90ICp4aCwgc3RydWN0IHBjaV9kZXYgKmRldiwgc3Ry dWN0IG1zaV9kZXNjICptc2lkZXNjLAogCQkJICAgICBpbnQgcGlycSwgaW50IG52ZWMsIGNvbnN0 IGNoYXIgKm5hbWUsIGRvbWlkX3QgZG9taWQpCiB7CiAJaW50IGksIGlycSwgcmV0OwogCiAJbXV0 ZXhfbG9jaygmaXJxX21hcHBpbmdfdXBkYXRlX2xvY2spOwogCi0JaXJxID0geGVuX2FsbG9jYXRl X2lycXNfZHluYW1pYyhudmVjKTsKKwlpcnEgPSB4ZW5fYWxsb2NhdGVfaXJxc19keW5hbWljKHho LCBudmVjKTsKIAlpZiAoaXJxIDwgMCkKIAkJZ290byBvdXQ7CiAKIAlmb3IgKGkgPSAwOyBpIDwg bnZlYzsgaSsrKSB7CiAJCWlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcl9uYW1lKGlycSArIGksICZ4 ZW5fcGlycV9jaGlwLCBoYW5kbGVfZWRnZV9pcnEsIG5hbWUpOwogCi0JCXJldCA9IHhlbl9pcnFf aW5mb19waXJxX3NldHVwKGlycSArIGksIDAsIHBpcnEgKyBpLCAwLCBkb21pZCwKKwkJcmV0ID0g eGVuX2lycV9pbmZvX3BpcnFfc2V0dXAoeGgsIGlycSArIGksIDAsIHBpcnEgKyBpLCAwLCBkb21p ZCwKIAkJCQkJICAgICAgaSA9PSAwID8gMCA6IFBJUlFfTVNJX0dST1VQKTsKIAkJaWYgKHJldCA8 IDApCiAJCQlnb3RvIGVycm9yX2lycTsKQEAgLTc3Niw3ICs3ODksNyBAQCBpbnQgeGVuX2Rlc3Ry b3lfaXJxKGludCBpcnEpCiAJaWYgKHhlbl9pbml0aWFsX2RvbWFpbigpICYmICEoaW5mby0+dS5w aXJxLmZsYWdzICYgUElSUV9NU0lfR1JPVVApKSB7CiAJCXVubWFwX2lycS5waXJxID0gaW5mby0+ dS5waXJxLnBpcnE7CiAJCXVubWFwX2lycS5kb21pZCA9IGluZm8tPnUucGlycS5kb21pZDsKLQkJ cmMgPSBIWVBFUlZJU09SX3BoeXNkZXZfb3AoUEhZU0RFVk9QX3VubWFwX3BpcnEsICZ1bm1hcF9p cnEpOworCQlyYyA9IGh5cGVydmlzb3JfcGh5c2Rldl9vcChpbmZvLT54aCwgUEhZU0RFVk9QX3Vu bWFwX3BpcnEsICZ1bm1hcF9pcnEpOwogCQkvKiBJZiBhbm90aGVyIGRvbWFpbiBxdWl0cyB3aXRo b3V0IG1ha2luZyB0aGUgcGNpX2Rpc2FibGVfbXNpeAogCQkgKiBjYWxsLCB0aGUgWGVuIGh5cGVy dmlzb3IgdGFrZXMgY2FyZSBvZiBmcmVlaW5nIHRoZSBQSVJRcwogCQkgKiAoZnJlZV9kb21haW5f cGlycXMpLgpAQCAtODI2LDM0ICs4MzksMzQgQEAgaW50IHhlbl9waXJxX2Zyb21faXJxKHVuc2ln bmVkIGlycSkKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHhlbl9waXJxX2Zyb21faXJxKTsKIAotaW50 IGJpbmRfZXZ0Y2huX3RvX2lycSh1bnNpZ25lZCBpbnQgZXZ0Y2huKQoraW50IGJpbmRfZXZ0Y2hu X3RvX2lycSh4ZW5ob3N0X3QgKnhoLCB1bnNpZ25lZCBpbnQgZXZ0Y2huKQogewogCWludCBpcnE7 CiAJaW50IHJldDsKIAotCWlmIChldnRjaG4gPj0geGVuX2V2dGNobl9tYXhfY2hhbm5lbHMoKSkK KwlpZiAoZXZ0Y2huID49IHhlbl9ldnRjaG5fbWF4X2NoYW5uZWxzKHhoKSkKIAkJcmV0dXJuIC1F Tk9NRU07CiAKIAltdXRleF9sb2NrKCZpcnFfbWFwcGluZ191cGRhdGVfbG9jayk7CiAKLQlpcnEg PSBnZXRfZXZ0Y2huX3RvX2lycShldnRjaG4pOworCWlycSA9IGdldF9ldnRjaG5fdG9faXJxKHho LCBldnRjaG4pOwogCiAJaWYgKGlycSA9PSAtMSkgewotCQlpcnEgPSB4ZW5fYWxsb2NhdGVfaXJx X2R5bmFtaWMoKTsKKwkJaXJxID0geGVuX2FsbG9jYXRlX2lycV9keW5hbWljKHhoKTsKIAkJaWYg KGlycSA8IDApCiAJCQlnb3RvIG91dDsKIAogCQlpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXJfbmFt ZShpcnEsICZ4ZW5fZHluYW1pY19jaGlwLAogCQkJCQkgICAgICBoYW5kbGVfZWRnZV9pcnEsICJl dmVudCIpOwogCi0JCXJldCA9IHhlbl9pcnFfaW5mb19ldnRjaG5fc2V0dXAoaXJxLCBldnRjaG4p OworCQlyZXQgPSB4ZW5faXJxX2luZm9fZXZ0Y2huX3NldHVwKHhoLCBpcnEsIGV2dGNobik7CiAJ CWlmIChyZXQgPCAwKSB7CiAJCQlfX3VuYmluZF9mcm9tX2lycShpcnEpOwogCQkJaXJxID0gcmV0 OwogCQkJZ290byBvdXQ7CiAJCX0KIAkJLyogTmV3IGludGVyZG9tYWluIGV2ZW50cyBhcmUgYm91 bmQgdG8gVkNQVSAwLiAqLwotCQliaW5kX2V2dGNobl90b19jcHUoZXZ0Y2huLCAwKTsKKwkJYmlu ZF9ldnRjaG5fdG9fY3B1KHhoLCBldnRjaG4sIDApOwogCX0gZWxzZSB7CiAJCXN0cnVjdCBpcnFf aW5mbyAqaW5mbyA9IGluZm9fZm9yX2lycShpcnEpOwogCQlXQVJOX09OKGluZm8gPT0gTlVMTCB8 fCBpbmZvLT50eXBlICE9IElSUVRfRVZUQ0hOKTsKQEAgLTg2NiwzNyArODc5LDM5IEBAIGludCBi aW5kX2V2dGNobl90b19pcnEodW5zaWduZWQgaW50IGV2dGNobikKIH0KIEVYUE9SVF9TWU1CT0xf R1BMKGJpbmRfZXZ0Y2huX3RvX2lycSk7CiAKLXN0YXRpYyBpbnQgYmluZF9pcGlfdG9faXJxKHVu c2lnbmVkIGludCBpcGksIHVuc2lnbmVkIGludCBjcHUpCitzdGF0aWMgaW50IGJpbmRfaXBpX3Rv X2lycSh4ZW5ob3N0X3QgKnhoLCB1bnNpZ25lZCBpbnQgaXBpLCB1bnNpZ25lZCBpbnQgY3B1KQog ewogCXN0cnVjdCBldnRjaG5fYmluZF9pcGkgYmluZF9pcGk7CiAJaW50IGV2dGNobiwgaXJxOwog CWludCByZXQ7CiAKKwlCVUdfT04oeGgtPnR5cGUgPT0geGVuaG9zdF9yMik7CisKIAltdXRleF9s b2NrKCZpcnFfbWFwcGluZ191cGRhdGVfbG9jayk7CiAKIAlpcnEgPSBwZXJfY3B1KGlwaV90b19p cnEsIGNwdSlbaXBpXTsKIAogCWlmIChpcnEgPT0gLTEpIHsKLQkJaXJxID0geGVuX2FsbG9jYXRl X2lycV9keW5hbWljKCk7CisJCWlycSA9IHhlbl9hbGxvY2F0ZV9pcnFfZHluYW1pYyh4aCk7CiAJ CWlmIChpcnEgPCAwKQogCQkJZ290byBvdXQ7CiAKIAkJaXJxX3NldF9jaGlwX2FuZF9oYW5kbGVy X25hbWUoaXJxLCAmeGVuX3BlcmNwdV9jaGlwLAogCQkJCQkgICAgICBoYW5kbGVfcGVyY3B1X2ly cSwgImlwaSIpOwogCi0JCWJpbmRfaXBpLnZjcHUgPSB4ZW5fdmNwdV9ucih4aF9kZWZhdWx0LCBj cHUpOwotCQlpZiAoSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wKEVWVENITk9QX2JpbmRfaXBp LAorCQliaW5kX2lwaS52Y3B1ID0geGVuX3ZjcHVfbnIoeGgsIGNwdSk7CisJCWlmIChoeXBlcnZp c29yX2V2ZW50X2NoYW5uZWxfb3AoeGgsIEVWVENITk9QX2JpbmRfaXBpLAogCQkJCQkJJmJpbmRf aXBpKSAhPSAwKQogCQkJQlVHKCk7CiAJCWV2dGNobiA9IGJpbmRfaXBpLnBvcnQ7CiAKLQkJcmV0 ID0geGVuX2lycV9pbmZvX2lwaV9zZXR1cChjcHUsIGlycSwgZXZ0Y2huLCBpcGkpOworCQlyZXQg PSB4ZW5faXJxX2luZm9faXBpX3NldHVwKHhoLCBjcHUsIGlycSwgZXZ0Y2huLCBpcGkpOwogCQlp ZiAocmV0IDwgMCkgewogCQkJX191bmJpbmRfZnJvbV9pcnEoaXJxKTsKIAkJCWlycSA9IHJldDsK IAkJCWdvdG8gb3V0OwogCQl9Ci0JCWJpbmRfZXZ0Y2huX3RvX2NwdShldnRjaG4sIGNwdSk7CisJ CWJpbmRfZXZ0Y2huX3RvX2NwdSh4aCwgZXZ0Y2huLCBjcHUpOwogCX0gZWxzZSB7CiAJCXN0cnVj dCBpcnFfaW5mbyAqaW5mbyA9IGluZm9fZm9yX2lycShpcnEpOwogCQlXQVJOX09OKGluZm8gPT0g TlVMTCB8fCBpbmZvLT50eXBlICE9IElSUVRfSVBJKTsKQEAgLTkwNyw3ICs5MjIsNyBAQCBzdGF0 aWMgaW50IGJpbmRfaXBpX3RvX2lycSh1bnNpZ25lZCBpbnQgaXBpLCB1bnNpZ25lZCBpbnQgY3B1 KQogCXJldHVybiBpcnE7CiB9CiAKLWludCBiaW5kX2ludGVyZG9tYWluX2V2dGNobl90b19pcnEo dW5zaWduZWQgaW50IHJlbW90ZV9kb21haW4sCitpbnQgYmluZF9pbnRlcmRvbWFpbl9ldnRjaG5f dG9faXJxKHhlbmhvc3RfdCAqeGgsIHVuc2lnbmVkIGludCByZW1vdGVfZG9tYWluLAogCQkJCSAg IHVuc2lnbmVkIGludCByZW1vdGVfcG9ydCkKIHsKIAlzdHJ1Y3QgZXZ0Y2huX2JpbmRfaW50ZXJk b21haW4gYmluZF9pbnRlcmRvbWFpbjsKQEAgLTkxNiwyOCArOTMxLDI4IEBAIGludCBiaW5kX2lu dGVyZG9tYWluX2V2dGNobl90b19pcnEodW5zaWduZWQgaW50IHJlbW90ZV9kb21haW4sCiAJYmlu ZF9pbnRlcmRvbWFpbi5yZW1vdGVfZG9tICA9IHJlbW90ZV9kb21haW47CiAJYmluZF9pbnRlcmRv bWFpbi5yZW1vdGVfcG9ydCA9IHJlbW90ZV9wb3J0OwogCi0JZXJyID0gSFlQRVJWSVNPUl9ldmVu dF9jaGFubmVsX29wKEVWVENITk9QX2JpbmRfaW50ZXJkb21haW4sCisJZXJyID0gaHlwZXJ2aXNv cl9ldmVudF9jaGFubmVsX29wKHhoLCBFVlRDSE5PUF9iaW5kX2ludGVyZG9tYWluLAogCQkJCQkg ICZiaW5kX2ludGVyZG9tYWluKTsKIAotCXJldHVybiBlcnIgPyA6IGJpbmRfZXZ0Y2huX3RvX2ly cShiaW5kX2ludGVyZG9tYWluLmxvY2FsX3BvcnQpOworCXJldHVybiBlcnIgPyA6IGJpbmRfZXZ0 Y2huX3RvX2lycSh4aCwgYmluZF9pbnRlcmRvbWFpbi5sb2NhbF9wb3J0KTsKIH0KIEVYUE9SVF9T WU1CT0xfR1BMKGJpbmRfaW50ZXJkb21haW5fZXZ0Y2huX3RvX2lycSk7CiAKLXN0YXRpYyBpbnQg ZmluZF92aXJxKHVuc2lnbmVkIGludCB2aXJxLCB1bnNpZ25lZCBpbnQgY3B1KQorc3RhdGljIGlu dCBmaW5kX3ZpcnEoeGVuaG9zdF90ICp4aCwgdW5zaWduZWQgaW50IHZpcnEsIHVuc2lnbmVkIGlu dCBjcHUpCiB7CiAJc3RydWN0IGV2dGNobl9zdGF0dXMgc3RhdHVzOwogCWludCBwb3J0LCByYyA9 IC1FTk9FTlQ7CiAKIAltZW1zZXQoJnN0YXR1cywgMCwgc2l6ZW9mKHN0YXR1cykpOwotCWZvciAo cG9ydCA9IDA7IHBvcnQgPCB4ZW5fZXZ0Y2huX21heF9jaGFubmVscygpOyBwb3J0KyspIHsKKwlm b3IgKHBvcnQgPSAwOyBwb3J0IDwgeGVuX2V2dGNobl9tYXhfY2hhbm5lbHMoeGgpOyBwb3J0Kysp IHsKIAkJc3RhdHVzLmRvbSA9IERPTUlEX1NFTEY7CiAJCXN0YXR1cy5wb3J0ID0gcG9ydDsKLQkJ cmMgPSBIWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3AoRVZUQ0hOT1Bfc3RhdHVzLCAmc3RhdHVz KTsKKwkJcmMgPSBoeXBlcnZpc29yX2V2ZW50X2NoYW5uZWxfb3AoeGgsIEVWVENITk9QX3N0YXR1 cywgJnN0YXR1cyk7CiAJCWlmIChyYyA8IDApCiAJCQljb250aW51ZTsKIAkJaWYgKHN0YXR1cy5z dGF0dXMgIT0gRVZUQ0hOU1RBVF92aXJxKQogCQkJY29udGludWU7Ci0JCWlmIChzdGF0dXMudS52 aXJxID09IHZpcnEgJiYgc3RhdHVzLnZjcHUgPT0geGVuX3ZjcHVfbnIoeGhfZGVmYXVsdCwgY3B1 KSkgeworCQlpZiAoc3RhdHVzLnUudmlycSA9PSB2aXJxICYmIHN0YXR1cy52Y3B1ID09IHhlbl92 Y3B1X25yKHhoLCBjcHUpKSB7CiAJCQlyYyA9IHBvcnQ7CiAJCQlicmVhazsKIAkJfQpAQCAtOTUy LDEzICs5NjcsMTMgQEAgc3RhdGljIGludCBmaW5kX3ZpcnEodW5zaWduZWQgaW50IHZpcnEsIHVu c2lnbmVkIGludCBjcHUpCiAgKiBoeXBlcnZpc29yIEFCSS4gVXNlIHhlbl9ldnRjaG5fbWF4X2No YW5uZWxzKCkgZm9yIHRoZSBtYXhpbXVtCiAgKiBzdXBwb3J0ZWQuCiAgKi8KLXVuc2lnbmVkIHhl bl9ldnRjaG5fbnJfY2hhbm5lbHModm9pZCkKK3Vuc2lnbmVkIHhlbl9ldnRjaG5fbnJfY2hhbm5l bHMoeGVuaG9zdF90ICp4aCkKIHsKLSAgICAgICAgcmV0dXJuIGV2dGNobl9vcHMtPm5yX2NoYW5u ZWxzKCk7CisgICAgICAgIHJldHVybiBldnRjaG5fb3BzLT5ucl9jaGFubmVscyh4aCk7CiB9CiBF WFBPUlRfU1lNQk9MX0dQTCh4ZW5fZXZ0Y2huX25yX2NoYW5uZWxzKTsKIAotaW50IGJpbmRfdmly cV90b19pcnEodW5zaWduZWQgaW50IHZpcnEsIHVuc2lnbmVkIGludCBjcHUsIGJvb2wgcGVyY3B1 KQoraW50IGJpbmRfdmlycV90b19pcnEoeGVuaG9zdF90ICp4aCwgdW5zaWduZWQgaW50IHZpcnEs IHVuc2lnbmVkIGludCBjcHUsIGJvb2wgcGVyY3B1KQogewogCXN0cnVjdCBldnRjaG5fYmluZF92 aXJxIGJpbmRfdmlycTsKIAlpbnQgZXZ0Y2huLCBpcnEsIHJldDsKQEAgLTk2OCw3ICs5ODMsNyBA QCBpbnQgYmluZF92aXJxX3RvX2lycSh1bnNpZ25lZCBpbnQgdmlycSwgdW5zaWduZWQgaW50IGNw dSwgYm9vbCBwZXJjcHUpCiAJaXJxID0gcGVyX2NwdSh2aXJxX3RvX2lycSwgY3B1KVt2aXJxXTsK IAogCWlmIChpcnEgPT0gLTEpIHsKLQkJaXJxID0geGVuX2FsbG9jYXRlX2lycV9keW5hbWljKCk7 CisJCWlycSA9IHhlbl9hbGxvY2F0ZV9pcnFfZHluYW1pYyh4aCk7CiAJCWlmIChpcnEgPCAwKQog CQkJZ290byBvdXQ7CiAKQEAgLTk4MCwyNiArOTk1LDI2IEBAIGludCBiaW5kX3ZpcnFfdG9faXJx KHVuc2lnbmVkIGludCB2aXJxLCB1bnNpZ25lZCBpbnQgY3B1LCBib29sIHBlcmNwdSkKIAkJCQkJ CSAgICAgIGhhbmRsZV9lZGdlX2lycSwgInZpcnEiKTsKIAogCQliaW5kX3ZpcnEudmlycSA9IHZp cnE7Ci0JCWJpbmRfdmlycS52Y3B1ID0geGVuX3ZjcHVfbnIoeGhfZGVmYXVsdCwgY3B1KTsKLQkJ cmV0ID0gSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wKEVWVENITk9QX2JpbmRfdmlycSwKKwkJ YmluZF92aXJxLnZjcHUgPSB4ZW5fdmNwdV9ucih4aCwgY3B1KTsKKwkJcmV0ID0gaHlwZXJ2aXNv cl9ldmVudF9jaGFubmVsX29wKHhoLCBFVlRDSE5PUF9iaW5kX3ZpcnEsCiAJCQkJCQkmYmluZF92 aXJxKTsKIAkJaWYgKHJldCA9PSAwKQogCQkJZXZ0Y2huID0gYmluZF92aXJxLnBvcnQ7CiAJCWVs c2UgewogCQkJaWYgKHJldCA9PSAtRUVYSVNUKQotCQkJCXJldCA9IGZpbmRfdmlycSh2aXJxLCBj cHUpOworCQkJCXJldCA9IGZpbmRfdmlycSh4aCwgdmlycSwgY3B1KTsKIAkJCUJVR19PTihyZXQg PCAwKTsKIAkJCWV2dGNobiA9IHJldDsKIAkJfQogCi0JCXJldCA9IHhlbl9pcnFfaW5mb192aXJx X3NldHVwKGNwdSwgaXJxLCBldnRjaG4sIHZpcnEpOworCQlyZXQgPSB4ZW5faXJxX2luZm9fdmly cV9zZXR1cCh4aCwgY3B1LCBpcnEsIGV2dGNobiwgdmlycSk7CiAJCWlmIChyZXQgPCAwKSB7CiAJ CQlfX3VuYmluZF9mcm9tX2lycShpcnEpOwogCQkJaXJxID0gcmV0OwogCQkJZ290byBvdXQ7CiAJ CX0KIAotCQliaW5kX2V2dGNobl90b19jcHUoZXZ0Y2huLCBjcHUpOworCQliaW5kX2V2dGNobl90 b19jcHUoeGgsIGV2dGNobiwgY3B1KTsKIAl9IGVsc2UgewogCQlzdHJ1Y3QgaXJxX2luZm8gKmlu Zm8gPSBpbmZvX2Zvcl9pcnEoaXJxKTsKIAkJV0FSTl9PTihpbmZvID09IE5VTEwgfHwgaW5mby0+ dHlwZSAhPSBJUlFUX1ZJUlEpOwpAQCAtMTAxOCwxNCArMTAzMywxNSBAQCBzdGF0aWMgdm9pZCB1 bmJpbmRfZnJvbV9pcnEodW5zaWduZWQgaW50IGlycSkKIAltdXRleF91bmxvY2soJmlycV9tYXBw aW5nX3VwZGF0ZV9sb2NrKTsKIH0KIAotaW50IGJpbmRfZXZ0Y2huX3RvX2lycWhhbmRsZXIodW5z aWduZWQgaW50IGV2dGNobiwKK2ludCBiaW5kX2V2dGNobl90b19pcnFoYW5kbGVyKHhlbmhvc3Rf dCAqeGgsCisJCQkgICAgICB1bnNpZ25lZCBpbnQgZXZ0Y2huLAogCQkJICAgICAgaXJxX2hhbmRs ZXJfdCBoYW5kbGVyLAogCQkJICAgICAgdW5zaWduZWQgbG9uZyBpcnFmbGFncywKIAkJCSAgICAg IGNvbnN0IGNoYXIgKmRldm5hbWUsIHZvaWQgKmRldl9pZCkKIHsKIAlpbnQgaXJxLCByZXR2YWw7 CiAKLQlpcnEgPSBiaW5kX2V2dGNobl90b19pcnEoZXZ0Y2huKTsKKwlpcnEgPSBiaW5kX2V2dGNo bl90b19pcnEoeGgsIGV2dGNobik7CiAJaWYgKGlycSA8IDApCiAJCXJldHVybiBpcnE7CiAJcmV0 dmFsID0gcmVxdWVzdF9pcnEoaXJxLCBoYW5kbGVyLCBpcnFmbGFncywgZGV2bmFtZSwgZGV2X2lk KTsKQEAgLTEwMzgsNyArMTA1NCw4IEBAIGludCBiaW5kX2V2dGNobl90b19pcnFoYW5kbGVyKHVu c2lnbmVkIGludCBldnRjaG4sCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChiaW5kX2V2dGNobl90b19p cnFoYW5kbGVyKTsKIAotaW50IGJpbmRfaW50ZXJkb21haW5fZXZ0Y2huX3RvX2lycWhhbmRsZXIo dW5zaWduZWQgaW50IHJlbW90ZV9kb21haW4sCitpbnQgYmluZF9pbnRlcmRvbWFpbl9ldnRjaG5f dG9faXJxaGFuZGxlcih4ZW5ob3N0X3QgKnhoLAorCQkJCQkgIHVuc2lnbmVkIGludCByZW1vdGVf ZG9tYWluLAogCQkJCQkgIHVuc2lnbmVkIGludCByZW1vdGVfcG9ydCwKIAkJCQkJICBpcnFfaGFu ZGxlcl90IGhhbmRsZXIsCiAJCQkJCSAgdW5zaWduZWQgbG9uZyBpcnFmbGFncywKQEAgLTEwNDcs NyArMTA2NCw3IEBAIGludCBiaW5kX2ludGVyZG9tYWluX2V2dGNobl90b19pcnFoYW5kbGVyKHVu c2lnbmVkIGludCByZW1vdGVfZG9tYWluLAogewogCWludCBpcnEsIHJldHZhbDsKIAotCWlycSA9 IGJpbmRfaW50ZXJkb21haW5fZXZ0Y2huX3RvX2lycShyZW1vdGVfZG9tYWluLCByZW1vdGVfcG9y dCk7CisJaXJxID0gYmluZF9pbnRlcmRvbWFpbl9ldnRjaG5fdG9faXJxKHhoLCByZW1vdGVfZG9t YWluLCByZW1vdGVfcG9ydCk7CiAJaWYgKGlycSA8IDApCiAJCXJldHVybiBpcnE7CiAKQEAgLTEw NjEsMTMgKzEwNzgsMTQgQEAgaW50IGJpbmRfaW50ZXJkb21haW5fZXZ0Y2huX3RvX2lycWhhbmRs ZXIodW5zaWduZWQgaW50IHJlbW90ZV9kb21haW4sCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChiaW5k X2ludGVyZG9tYWluX2V2dGNobl90b19pcnFoYW5kbGVyKTsKIAotaW50IGJpbmRfdmlycV90b19p cnFoYW5kbGVyKHVuc2lnbmVkIGludCB2aXJxLCB1bnNpZ25lZCBpbnQgY3B1LAoraW50IGJpbmRf dmlycV90b19pcnFoYW5kbGVyKHhlbmhvc3RfdCAqeGgsCisJCQkgICAgdW5zaWduZWQgaW50IHZp cnEsIHVuc2lnbmVkIGludCBjcHUsCiAJCQkgICAgaXJxX2hhbmRsZXJfdCBoYW5kbGVyLAogCQkJ ICAgIHVuc2lnbmVkIGxvbmcgaXJxZmxhZ3MsIGNvbnN0IGNoYXIgKmRldm5hbWUsIHZvaWQgKmRl dl9pZCkKIHsKIAlpbnQgaXJxLCByZXR2YWw7CiAKLQlpcnEgPSBiaW5kX3ZpcnFfdG9faXJxKHZp cnEsIGNwdSwgaXJxZmxhZ3MgJiBJUlFGX1BFUkNQVSk7CisJaXJxID0gYmluZF92aXJxX3RvX2ly cSh4aCwgdmlycSwgY3B1LCBpcnFmbGFncyAmIElSUUZfUEVSQ1BVKTsKIAlpZiAoaXJxIDwgMCkK IAkJcmV0dXJuIGlycTsKIAlyZXR2YWwgPSByZXF1ZXN0X2lycShpcnEsIGhhbmRsZXIsIGlycWZs YWdzLCBkZXZuYW1lLCBkZXZfaWQpOwpAQCAtMTA4MCw3ICsxMDk4LDggQEAgaW50IGJpbmRfdmly cV90b19pcnFoYW5kbGVyKHVuc2lnbmVkIGludCB2aXJxLCB1bnNpZ25lZCBpbnQgY3B1LAogfQog RVhQT1JUX1NZTUJPTF9HUEwoYmluZF92aXJxX3RvX2lycWhhbmRsZXIpOwogCi1pbnQgYmluZF9p cGlfdG9faXJxaGFuZGxlcihlbnVtIGlwaV92ZWN0b3IgaXBpLAoraW50IGJpbmRfaXBpX3RvX2ly cWhhbmRsZXIoeGVuaG9zdF90ICp4aCwKKwkJCSAgIGVudW0gaXBpX3ZlY3RvciBpcGksCiAJCQkg ICB1bnNpZ25lZCBpbnQgY3B1LAogCQkJICAgaXJxX2hhbmRsZXJfdCBoYW5kbGVyLAogCQkJICAg dW5zaWduZWQgbG9uZyBpcnFmbGFncywKQEAgLTEwODksNyArMTEwOCw3IEBAIGludCBiaW5kX2lw aV90b19pcnFoYW5kbGVyKGVudW0gaXBpX3ZlY3RvciBpcGksCiB7CiAJaW50IGlycSwgcmV0dmFs OwogCi0JaXJxID0gYmluZF9pcGlfdG9faXJxKGlwaSwgY3B1KTsKKwlpcnEgPSBiaW5kX2lwaV90 b19pcnEoeGgsIGlwaSwgY3B1KTsKIAlpZiAoaXJxIDwgMCkKIAkJcmV0dXJuIGlycTsKIApAQCAt MTExOSwyMSArMTEzOCwyMSBAQCBFWFBPUlRfU1lNQk9MX0dQTCh1bmJpbmRfZnJvbV9pcnFoYW5k bGVyKTsKICAqIEBpcnE6aXJxIGJvdW5kIHRvIGFuIGV2ZW50IGNoYW5uZWwuCiAgKiBAcHJpb3Jp dHk6IHByaW9yaXR5IGJldHdlZW4gWEVOX0lSUV9QUklPUklUWV9NQVggYW5kIFhFTl9JUlFfUFJJ T1JJVFlfTUlOLgogICovCi1pbnQgeGVuX3NldF9pcnFfcHJpb3JpdHkodW5zaWduZWQgaXJxLCB1 bnNpZ25lZCBwcmlvcml0eSkKK2ludCB4ZW5fc2V0X2lycV9wcmlvcml0eSh4ZW5ob3N0X3QgKnho LCB1bnNpZ25lZCBpcnEsIHVuc2lnbmVkIHByaW9yaXR5KQogewogCXN0cnVjdCBldnRjaG5fc2V0 X3ByaW9yaXR5IHNldF9wcmlvcml0eTsKIAogCXNldF9wcmlvcml0eS5wb3J0ID0gZXZ0Y2huX2Zy b21faXJxKGlycSk7CiAJc2V0X3ByaW9yaXR5LnByaW9yaXR5ID0gcHJpb3JpdHk7CiAKLQlyZXR1 cm4gSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wKEVWVENITk9QX3NldF9wcmlvcml0eSwKKwly ZXR1cm4gaHlwZXJ2aXNvcl9ldmVudF9jaGFubmVsX29wKHhoLCBFVlRDSE5PUF9zZXRfcHJpb3Jp dHksCiAJCQkJCSAgICZzZXRfcHJpb3JpdHkpOwogfQogRVhQT1JUX1NZTUJPTF9HUEwoeGVuX3Nl dF9pcnFfcHJpb3JpdHkpOwogCi1pbnQgZXZ0Y2huX21ha2VfcmVmY291bnRlZCh1bnNpZ25lZCBp bnQgZXZ0Y2huKQoraW50IGV2dGNobl9tYWtlX3JlZmNvdW50ZWQoeGVuaG9zdF90ICp4aCwgdW5z aWduZWQgaW50IGV2dGNobikKIHsKLQlpbnQgaXJxID0gZ2V0X2V2dGNobl90b19pcnEoZXZ0Y2hu KTsKKwlpbnQgaXJxID0gZ2V0X2V2dGNobl90b19pcnEoeGgsIGV2dGNobik7CiAJc3RydWN0IGly cV9pbmZvICppbmZvOwogCiAJaWYgKGlycSA9PSAtMSkKQEAgLTExNTIsMTggKzExNzEsMTggQEAg aW50IGV2dGNobl9tYWtlX3JlZmNvdW50ZWQodW5zaWduZWQgaW50IGV2dGNobikKIH0KIEVYUE9S VF9TWU1CT0xfR1BMKGV2dGNobl9tYWtlX3JlZmNvdW50ZWQpOwogCi1pbnQgZXZ0Y2huX2dldCh1 bnNpZ25lZCBpbnQgZXZ0Y2huKQoraW50IGV2dGNobl9nZXQoeGVuaG9zdF90ICp4aCwgdW5zaWdu ZWQgaW50IGV2dGNobikKIHsKIAlpbnQgaXJxOwogCXN0cnVjdCBpcnFfaW5mbyAqaW5mbzsKIAlp bnQgZXJyID0gLUVOT0VOVDsKIAotCWlmIChldnRjaG4gPj0geGVuX2V2dGNobl9tYXhfY2hhbm5l bHMoKSkKKwlpZiAoZXZ0Y2huID49IHhlbl9ldnRjaG5fbWF4X2NoYW5uZWxzKHhoKSkKIAkJcmV0 dXJuIC1FSU5WQUw7CiAKIAltdXRleF9sb2NrKCZpcnFfbWFwcGluZ191cGRhdGVfbG9jayk7CiAK LQlpcnEgPSBnZXRfZXZ0Y2huX3RvX2lycShldnRjaG4pOworCWlycSA9IGdldF9ldnRjaG5fdG9f aXJxKHhoLCBldnRjaG4pOwogCWlmIChpcnEgPT0gLTEpCiAJCWdvdG8gZG9uZTsKIApAQCAtMTE4 NSwyMiArMTIwNCwyMiBAQCBpbnQgZXZ0Y2huX2dldCh1bnNpZ25lZCBpbnQgZXZ0Y2huKQogfQog RVhQT1JUX1NZTUJPTF9HUEwoZXZ0Y2huX2dldCk7CiAKLXZvaWQgZXZ0Y2huX3B1dCh1bnNpZ25l ZCBpbnQgZXZ0Y2huKQordm9pZCBldnRjaG5fcHV0KHhlbmhvc3RfdCAqeGgsIHVuc2lnbmVkIGlu dCBldnRjaG4pCiB7Ci0JaW50IGlycSA9IGdldF9ldnRjaG5fdG9faXJxKGV2dGNobik7CisJaW50 IGlycSA9IGdldF9ldnRjaG5fdG9faXJxKHhoLCBldnRjaG4pOwogCWlmIChXQVJOX09OKGlycSA9 PSAtMSkpCiAJCXJldHVybjsKIAl1bmJpbmRfZnJvbV9pcnEoaXJxKTsKIH0KIEVYUE9SVF9TWU1C T0xfR1BMKGV2dGNobl9wdXQpOwogCi12b2lkIHhlbl9zZW5kX0lQSV9vbmUodW5zaWduZWQgaW50 IGNwdSwgZW51bSBpcGlfdmVjdG9yIHZlY3RvcikKK3ZvaWQgeGVuX3NlbmRfSVBJX29uZSh4ZW5o b3N0X3QgKnhoLCB1bnNpZ25lZCBpbnQgY3B1LCBlbnVtIGlwaV92ZWN0b3IgdmVjdG9yKQogewog CWludCBpcnE7CiAKICNpZmRlZiBDT05GSUdfWDg2CiAJaWYgKHVubGlrZWx5KHZlY3RvciA9PSBY RU5fTk1JX1ZFQ1RPUikpIHsKLQkJaW50IHJjID0gIEhZUEVSVklTT1JfdmNwdV9vcChWQ1BVT1Bf c2VuZF9ubWksIHhlbl92Y3B1X25yKHhoX2RlZmF1bHQsIGNwdSksCisJCWludCByYyA9ICBoeXBl cnZpc29yX3ZjcHVfb3AoeGgsIFZDUFVPUF9zZW5kX25taSwgeGVuX3ZjcHVfbnIoeGgsIGNwdSks CiAJCQkJCSAgICAgTlVMTCk7CiAJCWlmIChyYyA8IDApCiAJCQlwcmludGsoS0VSTl9XQVJOSU5H ICJTZW5kaW5nIG5taSB0byBDUFUlZCBmYWlsZWQgKHJjOiVkKVxuIiwgY3B1LCByYyk7CkBAIC0x MjE2LDIzICsxMjM1LDI2IEBAIHN0YXRpYyBERUZJTkVfUEVSX0NQVSh1bnNpZ25lZCwgeGVkX25l c3RpbmdfY291bnQpOwogCiBzdGF0aWMgdm9pZCBfX3hlbl9ldnRjaG5fZG9fdXBjYWxsKHZvaWQp CiB7Ci0Jc3RydWN0IHZjcHVfaW5mbyAqdmNwdV9pbmZvID0gX190aGlzX2NwdV9yZWFkKHhlbl92 Y3B1KTsKIAlpbnQgY3B1ID0gZ2V0X2NwdSgpOwogCXVuc2lnbmVkIGNvdW50OworCXhlbmhvc3Rf dCAqKnhoOwogCi0JZG8gewotCQl2Y3B1X2luZm8tPmV2dGNobl91cGNhbGxfcGVuZGluZyA9IDA7 CisJZm9yX2VhY2hfeGVuaG9zdCh4aCkgeworCQlzdHJ1Y3QgdmNwdV9pbmZvICp2Y3B1X2luZm8g PSAoKnhoKS0+eGVuX3ZjcHVbY3B1XTsKKwkJZG8geworCQkJdmNwdV9pbmZvLT5ldnRjaG5fdXBj YWxsX3BlbmRpbmcgPSAwOwogCi0JCWlmIChfX3RoaXNfY3B1X2luY19yZXR1cm4oeGVkX25lc3Rp bmdfY291bnQpIC0gMSkKLQkJCWdvdG8gb3V0OworCQkJaWYgKF9fdGhpc19jcHVfaW5jX3JldHVy bih4ZWRfbmVzdGluZ19jb3VudCkgLSAxKQorCQkJCWdvdG8gb3V0OwogCi0JCXhlbl9ldnRjaG5f aGFuZGxlX2V2ZW50cyhjcHUpOworCQkJeGVuX2V2dGNobl9oYW5kbGVfZXZlbnRzKCp4aCwgY3B1 KTsKIAotCQlCVUdfT04oIWlycXNfZGlzYWJsZWQoKSk7CisJCQlCVUdfT04oIWlycXNfZGlzYWJs ZWQoKSk7CiAKLQkJY291bnQgPSBfX3RoaXNfY3B1X3JlYWQoeGVkX25lc3RpbmdfY291bnQpOwot CQlfX3RoaXNfY3B1X3dyaXRlKHhlZF9uZXN0aW5nX2NvdW50LCAwKTsKLQl9IHdoaWxlIChjb3Vu dCAhPSAxIHx8IHZjcHVfaW5mby0+ZXZ0Y2huX3VwY2FsbF9wZW5kaW5nKTsKKwkJCWNvdW50ID0g X190aGlzX2NwdV9yZWFkKHhlZF9uZXN0aW5nX2NvdW50KTsKKwkJCV9fdGhpc19jcHVfd3JpdGUo eGVkX25lc3RpbmdfY291bnQsIDApOworCQl9IHdoaWxlIChjb3VudCAhPSAxIHx8IHZjcHVfaW5m by0+ZXZ0Y2huX3VwY2FsbF9wZW5kaW5nKTsKKwl9CiAKIG91dDoKIApAQCAtMTI3NSwxNiArMTI5 NywxNiBAQCB2b2lkIHJlYmluZF9ldnRjaG5faXJxKGludCBldnRjaG4sIGludCBpcnEpCiAJbXV0 ZXhfbG9jaygmaXJxX21hcHBpbmdfdXBkYXRlX2xvY2spOwogCiAJLyogQWZ0ZXIgcmVzdW1lIHRo ZSBpcnE8LT5ldnRjaG4gbWFwcGluZ3MgYXJlIGFsbCBjbGVhcmVkIG91dCAqLwotCUJVR19PTihn ZXRfZXZ0Y2huX3RvX2lycShldnRjaG4pICE9IC0xKTsKKwlCVUdfT04oZ2V0X2V2dGNobl90b19p cnEoaW5mby0+eGgsIGV2dGNobikgIT0gLTEpOwogCS8qIEV4cGVjdCBpcnEgdG8gaGF2ZSBiZWVu IGJvdW5kIGJlZm9yZSwKIAkgICBzbyB0aGVyZSBzaG91bGQgYmUgYSBwcm9wZXIgdHlwZSAqLwog CUJVR19PTihpbmZvLT50eXBlID09IElSUVRfVU5CT1VORCk7CiAKLQkodm9pZCl4ZW5faXJxX2lu Zm9fZXZ0Y2huX3NldHVwKGlycSwgZXZ0Y2huKTsKKwkodm9pZCl4ZW5faXJxX2luZm9fZXZ0Y2hu X3NldHVwKGluZm8tPnhoLCBpcnEsIGV2dGNobik7CiAKIAltdXRleF91bmxvY2soJmlycV9tYXBw aW5nX3VwZGF0ZV9sb2NrKTsKIAotICAgICAgICBiaW5kX2V2dGNobl90b19jcHUoZXZ0Y2huLCBp bmZvLT5jcHUpOworICAgICAgICBiaW5kX2V2dGNobl90b19jcHUoaW5mby0+eGgsIGV2dGNobiwg aW5mby0+Y3B1KTsKIAkvKiBUaGlzIHdpbGwgYmUgZGVmZXJyZWQgdW50aWwgaW50ZXJydXB0IGlz IHByb2Nlc3NlZCAqLwogCWlycV9zZXRfYWZmaW5pdHkoaXJxLCBjcHVtYXNrX29mKGluZm8tPmNw dSkpOwogCkBAIC0xMjkzLDcgKzEzMTUsNyBAQCB2b2lkIHJlYmluZF9ldnRjaG5faXJxKGludCBl dnRjaG4sIGludCBpcnEpCiB9CiAKIC8qIFJlYmluZCBhbiBldnRjaG4gc28gdGhhdCBpdCBnZXRz IGRlbGl2ZXJlZCB0byBhIHNwZWNpZmljIGNwdSAqLwotaW50IHhlbl9yZWJpbmRfZXZ0Y2huX3Rv X2NwdShpbnQgZXZ0Y2huLCB1bnNpZ25lZCB0Y3B1KQoraW50IHhlbl9yZWJpbmRfZXZ0Y2huX3Rv X2NwdSh4ZW5ob3N0X3QgKnhoLCBpbnQgZXZ0Y2huLCB1bnNpZ25lZCB0Y3B1KQogewogCXN0cnVj dCBldnRjaG5fYmluZF92Y3B1IGJpbmRfdmNwdTsKIAlpbnQgbWFza2VkOwpAQCAtMTMwNiwyNCAr MTMyOCwyNCBAQCBpbnQgeGVuX3JlYmluZF9ldnRjaG5fdG9fY3B1KGludCBldnRjaG4sIHVuc2ln bmVkIHRjcHUpCiAKIAkvKiBTZW5kIGZ1dHVyZSBpbnN0YW5jZXMgb2YgdGhpcyBpbnRlcnJ1cHQg dG8gb3RoZXIgdmNwdS4gKi8KIAliaW5kX3ZjcHUucG9ydCA9IGV2dGNobjsKLQliaW5kX3ZjcHUu dmNwdSA9IHhlbl92Y3B1X25yKHhoX2RlZmF1bHQsIHRjcHUpOworCWJpbmRfdmNwdS52Y3B1ID0g eGVuX3ZjcHVfbnIoeGgsIHRjcHUpOwogCiAJLyoKIAkgKiBNYXNrIHRoZSBldmVudCB3aGlsZSBj aGFuZ2luZyB0aGUgVkNQVSBiaW5kaW5nIHRvIHByZXZlbnQKIAkgKiBpdCBiZWluZyBkZWxpdmVy ZWQgb24gYW4gdW5leHBlY3RlZCBWQ1BVLgogCSAqLwotCW1hc2tlZCA9IHRlc3RfYW5kX3NldF9t YXNrKGV2dGNobik7CisJbWFza2VkID0gdGVzdF9hbmRfc2V0X21hc2soeGgsIGV2dGNobik7CiAK IAkvKgogCSAqIElmIHRoaXMgZmFpbHMsIGl0IHVzdWFsbHkganVzdCBpbmRpY2F0ZXMgdGhhdCB3 ZSdyZSBkZWFsaW5nIHdpdGggYQogCSAqIHZpcnEgb3IgSVBJIGNoYW5uZWwsIHdoaWNoIGRvbid0 IGFjdHVhbGx5IG5lZWQgdG8gYmUgcmVib3VuZC4gSWdub3JlCiAJICogaXQsIGJ1dCBkb24ndCBk byB0aGUgeGVubGludXgtbGV2ZWwgcmViaW5kIGluIHRoYXQgY2FzZS4KIAkgKi8KLQlpZiAoSFlQ RVJWSVNPUl9ldmVudF9jaGFubmVsX29wKEVWVENITk9QX2JpbmRfdmNwdSwgJmJpbmRfdmNwdSkg Pj0gMCkKLQkJYmluZF9ldnRjaG5fdG9fY3B1KGV2dGNobiwgdGNwdSk7CisJaWYgKGh5cGVydmlz b3JfZXZlbnRfY2hhbm5lbF9vcCh4aCwgRVZUQ0hOT1BfYmluZF92Y3B1LCAmYmluZF92Y3B1KSA+ PSAwKQorCQliaW5kX2V2dGNobl90b19jcHUoeGgsIGV2dGNobiwgdGNwdSk7CiAKIAlpZiAoIW1h c2tlZCkKLQkJdW5tYXNrX2V2dGNobihldnRjaG4pOworCQl1bm1hc2tfZXZ0Y2huKHhoLCBldnRj aG4pOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xMzMzLDcgKzEzNTUsMTAgQEAgc3RhdGljIGludCBz ZXRfYWZmaW5pdHlfaXJxKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSwgY29uc3Qgc3RydWN0IGNwdW1h c2sgKmRlc3QsCiAJCQkgICAgYm9vbCBmb3JjZSkKIHsKIAl1bnNpZ25lZCB0Y3B1ID0gY3B1bWFz a19maXJzdF9hbmQoZGVzdCwgY3B1X29ubGluZV9tYXNrKTsKLQlpbnQgcmV0ID0geGVuX3JlYmlu ZF9ldnRjaG5fdG9fY3B1KGV2dGNobl9mcm9tX2lycShkYXRhLT5pcnEpLCB0Y3B1KTsKKwl4ZW5o b3N0X3QgKnhoID0gaW5mb19mb3JfaXJxKGRhdGEtPmlycSktPnhoOworCWludCByZXQ7CisKKwly ZXQgPSB4ZW5fcmViaW5kX2V2dGNobl90b19jcHUoeGgsIGV2dGNobl9mcm9tX2lycShkYXRhLT5p cnEpLCB0Y3B1KTsKIAogCWlmICghcmV0KQogCQlpcnFfZGF0YV91cGRhdGVfZWZmZWN0aXZlX2Fm ZmluaXR5KGRhdGEsIGNwdW1hc2tfb2YodGNwdSkpOwpAQCAtMTM0NCwzOCArMTM2OSw0MSBAQCBz dGF0aWMgaW50IHNldF9hZmZpbml0eV9pcnEoc3RydWN0IGlycV9kYXRhICpkYXRhLCBjb25zdCBz dHJ1Y3QgY3B1bWFzayAqZGVzdCwKIHN0YXRpYyB2b2lkIGVuYWJsZV9keW5pcnEoc3RydWN0IGly cV9kYXRhICpkYXRhKQogewogCWludCBldnRjaG4gPSBldnRjaG5fZnJvbV9pcnEoZGF0YS0+aXJx KTsKKwl4ZW5ob3N0X3QgKnhoID0gaW5mb19mb3JfaXJxKGRhdGEtPmlycSktPnhoOwogCiAJaWYg KFZBTElEX0VWVENITihldnRjaG4pKQotCQl1bm1hc2tfZXZ0Y2huKGV2dGNobik7CisJCXVubWFz a19ldnRjaG4oeGgsIGV2dGNobik7CiB9CiAKIHN0YXRpYyB2b2lkIGRpc2FibGVfZHluaXJxKHN0 cnVjdCBpcnFfZGF0YSAqZGF0YSkKIHsKIAlpbnQgZXZ0Y2huID0gZXZ0Y2huX2Zyb21faXJxKGRh dGEtPmlycSk7CisJeGVuaG9zdF90ICp4aCA9IGluZm9fZm9yX2lycShkYXRhLT5pcnEpLT54aDsK IAogCWlmIChWQUxJRF9FVlRDSE4oZXZ0Y2huKSkKLQkJbWFza19ldnRjaG4oZXZ0Y2huKTsKKwkJ bWFza19ldnRjaG4oeGgsIGV2dGNobik7CiB9CiAKIHN0YXRpYyB2b2lkIGFja19keW5pcnEoc3Ry dWN0IGlycV9kYXRhICpkYXRhKQogewogCWludCBldnRjaG4gPSBldnRjaG5fZnJvbV9pcnEoZGF0 YS0+aXJxKTsKKwl4ZW5ob3N0X3QgKnhoID0gaW5mb19mb3JfaXJxKGRhdGEtPmlycSktPnhoOwog CiAJaWYgKCFWQUxJRF9FVlRDSE4oZXZ0Y2huKSkKIAkJcmV0dXJuOwogCiAJaWYgKHVubGlrZWx5 KGlycWRfaXNfc2V0YWZmaW5pdHlfcGVuZGluZyhkYXRhKSkgJiYKIAkgICAgbGlrZWx5KCFpcnFk X2lycV9kaXNhYmxlZChkYXRhKSkpIHsKLQkJaW50IG1hc2tlZCA9IHRlc3RfYW5kX3NldF9tYXNr KGV2dGNobik7CisJCWludCBtYXNrZWQgPSB0ZXN0X2FuZF9zZXRfbWFzayh4aCwgZXZ0Y2huKTsK IAotCQljbGVhcl9ldnRjaG4oZXZ0Y2huKTsKKwkJY2xlYXJfZXZ0Y2huKHhoLCBldnRjaG4pOwog CiAJCWlycV9tb3ZlX21hc2tlZF9pcnEoZGF0YSk7CiAKIAkJaWYgKCFtYXNrZWQpCi0JCQl1bm1h c2tfZXZ0Y2huKGV2dGNobik7CisJCQl1bm1hc2tfZXZ0Y2huKHhoLCBldnRjaG4pOwogCX0gZWxz ZQotCQljbGVhcl9ldnRjaG4oZXZ0Y2huKTsKKwkJY2xlYXJfZXZ0Y2huKHhoLCBldnRjaG4pOwog fQogCiBzdGF0aWMgdm9pZCBtYXNrX2Fja19keW5pcnEoc3RydWN0IGlycV9kYXRhICpkYXRhKQpA QCAtMTM4NywxNSArMTQxNSwxNiBAQCBzdGF0aWMgdm9pZCBtYXNrX2Fja19keW5pcnEoc3RydWN0 IGlycV9kYXRhICpkYXRhKQogc3RhdGljIGludCByZXRyaWdnZXJfZHluaXJxKHN0cnVjdCBpcnFf ZGF0YSAqZGF0YSkKIHsKIAl1bnNpZ25lZCBpbnQgZXZ0Y2huID0gZXZ0Y2huX2Zyb21faXJxKGRh dGEtPmlycSk7CisJeGVuaG9zdF90ICp4aCA9IGluZm9fZm9yX2lycShkYXRhLT5pcnEpLT54aDsK IAlpbnQgbWFza2VkOwogCiAJaWYgKCFWQUxJRF9FVlRDSE4oZXZ0Y2huKSkKIAkJcmV0dXJuIDA7 CiAKLQltYXNrZWQgPSB0ZXN0X2FuZF9zZXRfbWFzayhldnRjaG4pOwotCXNldF9ldnRjaG4oZXZ0 Y2huKTsKKwltYXNrZWQgPSB0ZXN0X2FuZF9zZXRfbWFzayh4aCwgZXZ0Y2huKTsKKwlzZXRfZXZ0 Y2huKHhoLCBldnRjaG4pOwogCWlmICghbWFza2VkKQotCQl1bm1hc2tfZXZ0Y2huKGV2dGNobik7 CisJCXVubWFza19ldnRjaG4oeGgsIGV2dGNobik7CiAKIAlyZXR1cm4gMTsKIH0KQEAgLTE0NDIs MjQgKzE0NzEsMjYgQEAgc3RhdGljIHZvaWQgcmVzdG9yZV9jcHVfdmlycXModW5zaWduZWQgaW50 IGNwdSkKIHsKIAlzdHJ1Y3QgZXZ0Y2huX2JpbmRfdmlycSBiaW5kX3ZpcnE7CiAJaW50IHZpcnEs IGlycSwgZXZ0Y2huOworCXhlbmhvc3RfdCAqeGg7CiAKIAlmb3IgKHZpcnEgPSAwOyB2aXJxIDwg TlJfVklSUVM7IHZpcnErKykgewogCQlpZiAoKGlycSA9IHBlcl9jcHUodmlycV90b19pcnEsIGNw dSlbdmlycV0pID09IC0xKQogCQkJY29udGludWU7CisJCXhoID0gaW5mb19mb3JfaXJxKGlycSkt PnhoOwogCiAJCUJVR19PTih2aXJxX2Zyb21faXJxKGlycSkgIT0gdmlycSk7CiAKIAkJLyogR2V0 IGEgbmV3IGJpbmRpbmcgZnJvbSBYZW4uICovCiAJCWJpbmRfdmlycS52aXJxID0gdmlycTsKIAkJ YmluZF92aXJxLnZjcHUgPSB4ZW5fdmNwdV9ucih4aF9kZWZhdWx0LCBjcHUpOwotCQlpZiAoSFlQ RVJWSVNPUl9ldmVudF9jaGFubmVsX29wKEVWVENITk9QX2JpbmRfdmlycSwKKwkJaWYgKGh5cGVy dmlzb3JfZXZlbnRfY2hhbm5lbF9vcCh4aCwgRVZUQ0hOT1BfYmluZF92aXJxLAogCQkJCQkJJmJp bmRfdmlycSkgIT0gMCkKIAkJCUJVRygpOwogCQlldnRjaG4gPSBiaW5kX3ZpcnEucG9ydDsKIAog CQkvKiBSZWNvcmQgdGhlIG5ldyBtYXBwaW5nLiAqLwotCQkodm9pZCl4ZW5faXJxX2luZm9fdmly cV9zZXR1cChjcHUsIGlycSwgZXZ0Y2huLCB2aXJxKTsKLQkJYmluZF9ldnRjaG5fdG9fY3B1KGV2 dGNobiwgY3B1KTsKKwkJKHZvaWQpeGVuX2lycV9pbmZvX3ZpcnFfc2V0dXAoeGgsIGNwdSwgaXJx LCBldnRjaG4sIHZpcnEpOworCQliaW5kX2V2dGNobl90b19jcHUoeGgsIGV2dGNobiwgY3B1KTsK IAl9CiB9CiAKQEAgLTE0NjcsMjMgKzE0OTgsMjUgQEAgc3RhdGljIHZvaWQgcmVzdG9yZV9jcHVf aXBpcyh1bnNpZ25lZCBpbnQgY3B1KQogewogCXN0cnVjdCBldnRjaG5fYmluZF9pcGkgYmluZF9p cGk7CiAJaW50IGlwaSwgaXJxLCBldnRjaG47CisJeGVuaG9zdF90ICp4aDsKIAogCWZvciAoaXBp ID0gMDsgaXBpIDwgWEVOX05SX0lQSVM7IGlwaSsrKSB7CiAJCWlmICgoaXJxID0gcGVyX2NwdShp cGlfdG9faXJxLCBjcHUpW2lwaV0pID09IC0xKQogCQkJY29udGludWU7CisJCXhoID0gaW5mb19m b3JfaXJxKGlycSktPnhoOwogCiAJCUJVR19PTihpcGlfZnJvbV9pcnEoaXJxKSAhPSBpcGkpOwog CiAJCS8qIEdldCBhIG5ldyBiaW5kaW5nIGZyb20gWGVuLiAqLwotCQliaW5kX2lwaS52Y3B1ID0g eGVuX3ZjcHVfbnIoeGhfZGVmYXVsdCwgY3B1KTsKLQkJaWYgKEhZUEVSVklTT1JfZXZlbnRfY2hh bm5lbF9vcChFVlRDSE5PUF9iaW5kX2lwaSwKKwkJYmluZF9pcGkudmNwdSA9IHhlbl92Y3B1X25y KHhoLCBjcHUpOworCQlpZiAoaHlwZXJ2aXNvcl9ldmVudF9jaGFubmVsX29wKHhoLCBFVlRDSE5P UF9iaW5kX2lwaSwKIAkJCQkJCSZiaW5kX2lwaSkgIT0gMCkKIAkJCUJVRygpOwogCQlldnRjaG4g PSBiaW5kX2lwaS5wb3J0OwogCiAJCS8qIFJlY29yZCB0aGUgbmV3IG1hcHBpbmcuICovCi0JCSh2 b2lkKXhlbl9pcnFfaW5mb19pcGlfc2V0dXAoY3B1LCBpcnEsIGV2dGNobiwgaXBpKTsKLQkJYmlu ZF9ldnRjaG5fdG9fY3B1KGV2dGNobiwgY3B1KTsKKwkJKHZvaWQpeGVuX2lycV9pbmZvX2lwaV9z ZXR1cCh4aCwgY3B1LCBpcnEsIGV2dGNobiwgaXBpKTsKKwkJYmluZF9ldnRjaG5fdG9fY3B1KHho LCBldnRjaG4sIGNwdSk7CiAJfQogfQogCkBAIC0xNDkxLDI2ICsxNTI0LDI5IEBAIHN0YXRpYyB2 b2lkIHJlc3RvcmVfY3B1X2lwaXModW5zaWduZWQgaW50IGNwdSkKIHZvaWQgeGVuX2NsZWFyX2ly cV9wZW5kaW5nKGludCBpcnEpCiB7CiAJaW50IGV2dGNobiA9IGV2dGNobl9mcm9tX2lycShpcnEp OworCXhlbmhvc3RfdCAqeGggPSBpbmZvX2Zvcl9pcnEoaXJxKS0+eGg7CiAKIAlpZiAoVkFMSURf RVZUQ0hOKGV2dGNobikpCi0JCWNsZWFyX2V2dGNobihldnRjaG4pOworCQljbGVhcl9ldnRjaG4o eGgsIGV2dGNobik7CiB9CiBFWFBPUlRfU1lNQk9MKHhlbl9jbGVhcl9pcnFfcGVuZGluZyk7CiB2 b2lkIHhlbl9zZXRfaXJxX3BlbmRpbmcoaW50IGlycSkKIHsKIAlpbnQgZXZ0Y2huID0gZXZ0Y2hu X2Zyb21faXJxKGlycSk7CisJeGVuaG9zdF90ICp4aCA9IGluZm9fZm9yX2lycShpcnEpLT54aDsK IAogCWlmIChWQUxJRF9FVlRDSE4oZXZ0Y2huKSkKLQkJc2V0X2V2dGNobihldnRjaG4pOworCQlz ZXRfZXZ0Y2huKHhoLCBldnRjaG4pOwogfQogCiBib29sIHhlbl90ZXN0X2lycV9wZW5kaW5nKGlu dCBpcnEpCiB7CiAJaW50IGV2dGNobiA9IGV2dGNobl9mcm9tX2lycShpcnEpOworCXhlbmhvc3Rf dCAqeGggPSBpbmZvX2Zvcl9pcnEoaXJxKS0+eGg7CiAJYm9vbCByZXQgPSBmYWxzZTsKIAogCWlm IChWQUxJRF9FVlRDSE4oZXZ0Y2huKSkKLQkJcmV0ID0gdGVzdF9ldnRjaG4oZXZ0Y2huKTsKKwkJ cmV0ID0gdGVzdF9ldnRjaG4oeGgsIGV2dGNobik7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtMTUy MCwxMCArMTU1NiwxMyBAQCBib29sIHhlbl90ZXN0X2lycV9wZW5kaW5nKGludCBpcnEpCiB2b2lk IHhlbl9wb2xsX2lycV90aW1lb3V0KGludCBpcnEsIHU2NCB0aW1lb3V0KQogewogCWV2dGNobl9w b3J0X3QgZXZ0Y2huID0gZXZ0Y2huX2Zyb21faXJxKGlycSk7CisJeGVuaG9zdF90ICp4aCA9IGlu Zm9fZm9yX2lycShpcnEpLT54aDsKIAogCWlmIChWQUxJRF9FVlRDSE4oZXZ0Y2huKSkgewogCQlz dHJ1Y3Qgc2NoZWRfcG9sbCBwb2xsOwogCisJCUJVR19PTih4aC0+dHlwZSAhPSB4ZW5ob3N0X3Ix KTsKKwogCQlwb2xsLm5yX3BvcnRzID0gMTsKIAkJcG9sbC50aW1lb3V0ID0gdGltZW91dDsKIAkJ c2V0X3hlbl9ndWVzdF9oYW5kbGUocG9sbC5wb3J0cywgJmV2dGNobik7CkBAIC0xNjY1LDI2ICsx NzA0LDMwIEBAIHZvaWQgeGVuX2NhbGxiYWNrX3ZlY3Rvcih2b2lkKSB7fQogc3RhdGljIGJvb2wg Zmlmb19ldmVudHMgPSB0cnVlOwogbW9kdWxlX3BhcmFtKGZpZm9fZXZlbnRzLCBib29sLCAwKTsK IAotdm9pZCBfX2luaXQgeGVuX2luaXRfSVJRKHZvaWQpCit2b2lkIHhlbl9pbml0X0lSUSh4ZW5o b3N0X3QgKnhoKQogewogCWludCByZXQgPSAtRUlOVkFMOwogCXVuc2lnbmVkIGludCBldnRjaG47 CiAKLQlpZiAoZmlmb19ldmVudHMpCi0JCXJldCA9IHhlbl9ldnRjaG5fZmlmb19pbml0KCk7CiAJ aWYgKHJldCA8IDApCi0JCXhlbl9ldnRjaG5fMmxfaW5pdCgpOworCQl4ZW5fZXZ0Y2huXzJsX2lu aXQoeGgpOwogCi0JZXZ0Y2huX3RvX2lycSA9IGtjYWxsb2MoRVZUQ0hOX1JPVyh4ZW5fZXZ0Y2hu X21heF9jaGFubmVscygpKSwKLQkJCQlzaXplb2YoKmV2dGNobl90b19pcnEpLCBHRlBfS0VSTkVM KTsKLQlCVUdfT04oIWV2dGNobl90b19pcnEpOworCXhoLT5ldnRjaG5fdG9faXJxID0ga2NhbGxv YyhFVlRDSE5fUk9XKHhoLCB4ZW5fZXZ0Y2huX21heF9jaGFubmVscyh4aCkpLAorCQkJCXNpemVv ZigqKHhoLT5ldnRjaG5fdG9faXJxKSksIEdGUF9LRVJORUwpOworCUJVR19PTigheGgtPmV2dGNo bl90b19pcnEpOwogCiAJLyogTm8gZXZlbnQgY2hhbm5lbHMgYXJlICdsaXZlJyByaWdodCBub3cu ICovCi0JZm9yIChldnRjaG4gPSAwOyBldnRjaG4gPCB4ZW5fZXZ0Y2huX25yX2NoYW5uZWxzKCk7 IGV2dGNobisrKQotCQltYXNrX2V2dGNobihldnRjaG4pOworCWZvciAoZXZ0Y2huID0gMDsgZXZ0 Y2huIDwgeGVuX2V2dGNobl9ucl9jaGFubmVscyh4aCk7IGV2dGNobisrKQorCQltYXNrX2V2dGNo bih4aCwgZXZ0Y2huKTsKIAogCXBpcnFfbmVlZHNfZW9pID0gcGlycV9uZWVkc19lb2lfZmxhZzsK IAorCS8qCisJICogQ2FsbGJhY2sgdmVjdG9ycywgSFcgaXJxcyBhcmUgb25seSBmb3IgeGVuaG9z dF9yMQorCSAqLworCWlmICh4aC0+dHlwZSAhPSB4ZW5ob3N0X3IxKQorCQlyZXR1cm47CisKICNp ZmRlZiBDT05GSUdfWDg2CiAJaWYgKHhlbl9wdl9kb21haW4oKSkgewogCQlpcnFfY3R4X2luaXQo c21wX3Byb2Nlc3Nvcl9pZCgpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2V2ZW50cy9ldmVu dHNfZmlmby5jIGIvZHJpdmVycy94ZW4vZXZlbnRzL2V2ZW50c19maWZvLmMKaW5kZXggZWVkNzY2 MjE5ZGQwLi4zOGNlOThmOTZmYmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2V2ZW50cy9ldmVu dHNfZmlmby5jCisrKyBiL2RyaXZlcnMveGVuL2V2ZW50cy9ldmVudHNfZmlmby5jCkBAIC0zMjQs NyArMzI0LDcgQEAgc3RhdGljIHZvaWQgY29uc3VtZV9vbmVfZXZlbnQodW5zaWduZWQgY3B1LAog CXEtPmhlYWRbcHJpb3JpdHldID0gaGVhZDsKIH0KIAotc3RhdGljIHZvaWQgX19ldnRjaG5fZmlm b19oYW5kbGVfZXZlbnRzKHVuc2lnbmVkIGNwdSwgYm9vbCBkcm9wKQorc3RhdGljIHZvaWQgX19l dnRjaG5fZmlmb19oYW5kbGVfZXZlbnRzKHhlbmhvc3RfdCAqeGgsIHVuc2lnbmVkIGNwdSwgYm9v bCBkcm9wKQogewogCXN0cnVjdCBldnRjaG5fZmlmb19jb250cm9sX2Jsb2NrICpjb250cm9sX2Js b2NrOwogCXVuc2lnbmVkIGxvbmcgcmVhZHk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9ldmVu dHMvZXZlbnRzX2ludGVybmFsLmggYi9kcml2ZXJzL3hlbi9ldmVudHMvZXZlbnRzX2ludGVybmFs LmgKaW5kZXggNTBjMjA1MGExZTMyLi45MjkzYzI1OTM4NDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv eGVuL2V2ZW50cy9ldmVudHNfaW50ZXJuYWwuaAorKysgYi9kcml2ZXJzL3hlbi9ldmVudHMvZXZl bnRzX2ludGVybmFsLmgKQEAgLTIxLDYgKzIxLDcgQEAgZW51bSB4ZW5faXJxX3R5cGUgewogLyoK ICAqIFBhY2tlZCBJUlEgaW5mb3JtYXRpb246CiAgKiB0eXBlIC0gZW51bSB4ZW5faXJxX3R5cGUK KyAqIHhoIC0geGVuaG9zdF90ICoKICAqIGV2ZW50IGNoYW5uZWwgLSBpcnEtPmV2ZW50IGNoYW5u ZWwgbWFwcGluZwogICogY3B1IC0gY3B1IHRoaXMgZXZlbnQgY2hhbm5lbCBpcyBib3VuZCB0bwog ICogaW5kZXggLSB0eXBlLXNwZWNpZmljIGluZm9ybWF0aW9uOgpAQCAtMzIsNiArMzMsNyBAQCBl bnVtIHhlbl9pcnFfdHlwZSB7CiAgKi8KIHN0cnVjdCBpcnFfaW5mbyB7CiAJc3RydWN0IGxpc3Rf aGVhZCBsaXN0OworCXhlbmhvc3RfdCAqeGg7CiAJaW50IHJlZmNudDsKIAllbnVtIHhlbl9pcnFf dHlwZSB0eXBlOwkvKiB0eXBlICovCiAJdW5zaWduZWQgaXJxOwpAQCAtNTYsMzUgKzU4LDMyIEBA IHN0cnVjdCBpcnFfaW5mbyB7CiAjZGVmaW5lIFBJUlFfTVNJX0dST1VQCSgxIDw8IDIpCiAKIHN0 cnVjdCBldnRjaG5fb3BzIHsKLQl1bnNpZ25lZCAoKm1heF9jaGFubmVscykodm9pZCk7Ci0JdW5z aWduZWQgKCpucl9jaGFubmVscykodm9pZCk7CisJdW5zaWduZWQgKCptYXhfY2hhbm5lbHMpKHhl bmhvc3RfdCAqeGgpOworCXVuc2lnbmVkICgqbnJfY2hhbm5lbHMpKHhlbmhvc3RfdCAqeGgpOwog CiAJaW50ICgqc2V0dXApKHN0cnVjdCBpcnFfaW5mbyAqaW5mbyk7CiAJdm9pZCAoKmJpbmRfdG9f Y3B1KShzdHJ1Y3QgaXJxX2luZm8gKmluZm8sIHVuc2lnbmVkIGNwdSk7CiAKLQl2b2lkICgqY2xl YXJfcGVuZGluZykodW5zaWduZWQgcG9ydCk7Ci0Jdm9pZCAoKnNldF9wZW5kaW5nKSh1bnNpZ25l ZCBwb3J0KTsKLQlib29sICgqaXNfcGVuZGluZykodW5zaWduZWQgcG9ydCk7Ci0JYm9vbCAoKnRl c3RfYW5kX3NldF9tYXNrKSh1bnNpZ25lZCBwb3J0KTsKLQl2b2lkICgqbWFzaykodW5zaWduZWQg cG9ydCk7Ci0Jdm9pZCAoKnVubWFzaykodW5zaWduZWQgcG9ydCk7CisJdm9pZCAoKmNsZWFyX3Bl bmRpbmcpKHhlbmhvc3RfdCAqeGgsIHVuc2lnbmVkIHBvcnQpOworCXZvaWQgKCpzZXRfcGVuZGlu ZykoeGVuaG9zdF90ICp4aCwgdW5zaWduZWQgcG9ydCk7CisJYm9vbCAoKmlzX3BlbmRpbmcpKHhl bmhvc3RfdCAqeGgsIHVuc2lnbmVkIHBvcnQpOworCWJvb2wgKCp0ZXN0X2FuZF9zZXRfbWFzayko eGVuaG9zdF90ICp4aCwgdW5zaWduZWQgcG9ydCk7CisJdm9pZCAoKm1hc2spKHhlbmhvc3RfdCAq eGgsIHVuc2lnbmVkIHBvcnQpOworCXZvaWQgKCp1bm1hc2spKHhlbmhvc3RfdCAqeGgsIHVuc2ln bmVkIHBvcnQpOwogCi0Jdm9pZCAoKmhhbmRsZV9ldmVudHMpKHVuc2lnbmVkIGNwdSk7Ci0Jdm9p ZCAoKnJlc3VtZSkodm9pZCk7CisJdm9pZCAoKmhhbmRsZV9ldmVudHMpKHhlbmhvc3RfdCAqeGgs IHVuc2lnbmVkIGNwdSk7CisJdm9pZCAoKnJlc3VtZSkoeGVuaG9zdF90ICp4aCk7CiB9OwogCi1l eHRlcm4gY29uc3Qgc3RydWN0IGV2dGNobl9vcHMgKmV2dGNobl9vcHM7Ci0KLWV4dGVybiBpbnQg KipldnRjaG5fdG9faXJxOwotaW50IGdldF9ldnRjaG5fdG9faXJxKHVuc2lnbmVkIGludCBldnRj aG4pOworaW50IGdldF9ldnRjaG5fdG9faXJxKHhlbmhvc3RfdCAqeGgsIHVuc2lnbmVkIGludCBl dnRjaG4pOwogCiBzdHJ1Y3QgaXJxX2luZm8gKmluZm9fZm9yX2lycSh1bnNpZ25lZCBpcnEpOwog dW5zaWduZWQgY3B1X2Zyb21faXJxKHVuc2lnbmVkIGlycSk7Ci11bnNpZ25lZCBjcHVfZnJvbV9l dnRjaG4odW5zaWduZWQgaW50IGV2dGNobik7Cit1bnNpZ25lZCBjcHVfZnJvbV9ldnRjaG4oeGVu aG9zdF90ICp4aCwgdW5zaWduZWQgaW50IGV2dGNobik7CiAKLXN0YXRpYyBpbmxpbmUgdW5zaWdu ZWQgeGVuX2V2dGNobl9tYXhfY2hhbm5lbHModm9pZCkKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQg eGVuX2V2dGNobl9tYXhfY2hhbm5lbHMoeGVuaG9zdF90ICp4aCkKIHsKLQlyZXR1cm4gZXZ0Y2hu X29wcy0+bWF4X2NoYW5uZWxzKCk7CisJcmV0dXJuIHhoLT5ldnRjaG5fb3BzLT5tYXhfY2hhbm5l bHMoeGgpOwogfQogCiAvKgpAQCAtOTMsNTkgKzkyLDYyIEBAIHN0YXRpYyBpbmxpbmUgdW5zaWdu ZWQgeGVuX2V2dGNobl9tYXhfY2hhbm5lbHModm9pZCkKICAqLwogc3RhdGljIGlubGluZSBpbnQg eGVuX2V2dGNobl9wb3J0X3NldHVwKHN0cnVjdCBpcnFfaW5mbyAqaW5mbykKIHsKLQlpZiAoZXZ0 Y2huX29wcy0+c2V0dXApCi0JCXJldHVybiBldnRjaG5fb3BzLT5zZXR1cChpbmZvKTsKKwlpZiAo aW5mby0+eGgtPmV2dGNobl9vcHMtPnNldHVwKQorCQlyZXR1cm4gaW5mby0+eGgtPmV2dGNobl9v cHMtPnNldHVwKGluZm8pOwogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgeGVu X2V2dGNobl9wb3J0X2JpbmRfdG9fY3B1KHN0cnVjdCBpcnFfaW5mbyAqaW5mbywKIAkJCQkJICAg ICAgIHVuc2lnbmVkIGNwdSkKIHsKLQlldnRjaG5fb3BzLT5iaW5kX3RvX2NwdShpbmZvLCBjcHUp OworCWluZm8tPnhoLT5ldnRjaG5fb3BzLT5iaW5kX3RvX2NwdShpbmZvLCBjcHUpOwogfQogCi1z dGF0aWMgaW5saW5lIHZvaWQgY2xlYXJfZXZ0Y2huKHVuc2lnbmVkIHBvcnQpCitzdGF0aWMgaW5s aW5lIHZvaWQgY2xlYXJfZXZ0Y2huKHhlbmhvc3RfdCAqeGgsIHVuc2lnbmVkIHBvcnQpCiB7Ci0J ZXZ0Y2huX29wcy0+Y2xlYXJfcGVuZGluZyhwb3J0KTsKKwl4aC0+ZXZ0Y2huX29wcy0+Y2xlYXJf cGVuZGluZyh4aCwgcG9ydCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZXZ0Y2huKHVu c2lnbmVkIHBvcnQpCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2V2dGNobih4ZW5ob3N0X3QgKnho LCB1bnNpZ25lZCBwb3J0KQogewotCWV2dGNobl9vcHMtPnNldF9wZW5kaW5nKHBvcnQpOworCXho LT5ldnRjaG5fb3BzLT5zZXRfcGVuZGluZyh4aCwgcG9ydCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg Ym9vbCB0ZXN0X2V2dGNobih1bnNpZ25lZCBwb3J0KQorc3RhdGljIGlubGluZSBib29sIHRlc3Rf ZXZ0Y2huKHhlbmhvc3RfdCAqeGgsIHVuc2lnbmVkIHBvcnQpCiB7Ci0JcmV0dXJuIGV2dGNobl9v cHMtPmlzX3BlbmRpbmcocG9ydCk7CisJcmV0dXJuIHhoLT5ldnRjaG5fb3BzLT5pc19wZW5kaW5n KHhoLCBwb3J0KTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHRlc3RfYW5kX3NldF9tYXNrKHVu c2lnbmVkIHBvcnQpCitzdGF0aWMgaW5saW5lIGJvb2wgdGVzdF9hbmRfc2V0X21hc2soeGVuaG9z dF90ICp4aCwgdW5zaWduZWQgcG9ydCkKIHsKLQlyZXR1cm4gZXZ0Y2huX29wcy0+dGVzdF9hbmRf c2V0X21hc2socG9ydCk7CisJcmV0dXJuIHhoLT5ldnRjaG5fb3BzLT50ZXN0X2FuZF9zZXRfbWFz ayh4aCwgcG9ydCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBtYXNrX2V2dGNobih1bnNpZ25l ZCBwb3J0KQorc3RhdGljIGlubGluZSB2b2lkIG1hc2tfZXZ0Y2huKHhlbmhvc3RfdCAqeGgsIHVu c2lnbmVkIHBvcnQpCiB7Ci0JcmV0dXJuIGV2dGNobl9vcHMtPm1hc2socG9ydCk7CisJcmV0dXJu IHhoLT5ldnRjaG5fb3BzLT5tYXNrKHhoLCBwb3J0KTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lk IHVubWFza19ldnRjaG4odW5zaWduZWQgcG9ydCkKK3N0YXRpYyBpbmxpbmUgdm9pZCB1bm1hc2tf ZXZ0Y2huKHhlbmhvc3RfdCAqeGgsIHVuc2lnbmVkIHBvcnQpCiB7Ci0JcmV0dXJuIGV2dGNobl9v cHMtPnVubWFzayhwb3J0KTsKKwlyZXR1cm4geGgtPmV2dGNobl9vcHMtPnVubWFzayh4aCwgcG9y dCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCB4ZW5fZXZ0Y2huX2hhbmRsZV9ldmVudHModW5z aWduZWQgY3B1KQorc3RhdGljIGlubGluZSB2b2lkIHhlbl9ldnRjaG5faGFuZGxlX2V2ZW50cyh4 ZW5ob3N0X3QgKnhoLCB1bnNpZ25lZCBjcHUpCiB7Ci0JcmV0dXJuIGV2dGNobl9vcHMtPmhhbmRs ZV9ldmVudHMoY3B1KTsKKwlyZXR1cm4geGgtPmV2dGNobl9vcHMtPmhhbmRsZV9ldmVudHMoeGgs IGNwdSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCB4ZW5fZXZ0Y2huX3Jlc3VtZSh2b2lkKQog ewotCWlmIChldnRjaG5fb3BzLT5yZXN1bWUpCi0JCWV2dGNobl9vcHMtPnJlc3VtZSgpOworCXhl bmhvc3RfdCAqKnhoOworCisJZm9yX2VhY2hfeGVuaG9zdCh4aCkKKwkJaWYgKCgqeGgpLT5ldnRj aG5fb3BzLT5yZXN1bWUpCisJCQkoKnhoKS0+ZXZ0Y2huX29wcy0+cmVzdW1lKCp4aCk7CiB9CiAK LXZvaWQgeGVuX2V2dGNobl8ybF9pbml0KHZvaWQpOwotaW50IHhlbl9ldnRjaG5fZmlmb19pbml0 KHZvaWQpOwordm9pZCB4ZW5fZXZ0Y2huXzJsX2luaXQoeGVuaG9zdF90ICp4aCk7CitpbnQgeGVu X2V2dGNobl9maWZvX2luaXQoeGVuaG9zdF90ICp4aCk7CiAKICNlbmRpZiAvKiAjaWZuZGVmIF9f RVZFTlRTX0lOVEVSTkFMX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vZXZ0Y2huLmMg Yi9kcml2ZXJzL3hlbi9ldnRjaG4uYwppbmRleCA2NjYyMjEwOWYyYmUuLmI4Njg4MTY4NzRmZCAx MDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vZXZ0Y2huLmMKKysrIGIvZHJpdmVycy94ZW4vZXZ0Y2hu LmMKQEAgLTI5Miw3ICsyOTIsNyBAQCBzdGF0aWMgc3NpemVfdCBldnRjaG5fd3JpdGUoc3RydWN0 IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWYsCiAJCWV2dGNobiA9IGZpbmRfZXZ0 Y2huKHUsIHBvcnQpOwogCQlpZiAoZXZ0Y2huICYmICFldnRjaG4tPmVuYWJsZWQpIHsKIAkJCWV2 dGNobi0+ZW5hYmxlZCA9IHRydWU7Ci0JCQllbmFibGVfaXJxKGlycV9mcm9tX2V2dGNobihwb3J0 KSk7CisJCQllbmFibGVfaXJxKGlycV9mcm9tX2V2dGNobih4aF9kZWZhdWx0LCBwb3J0KSk7CiAJ CX0KIAl9CiAKQEAgLTM5MiwxOCArMzkyLDE4IEBAIHN0YXRpYyBpbnQgZXZ0Y2huX2JpbmRfdG9f dXNlcihzdHJ1Y3QgcGVyX3VzZXJfZGF0YSAqdSwgaW50IHBvcnQpCiAJaWYgKHJjIDwgMCkKIAkJ Z290byBlcnI7CiAKLQlyYyA9IGJpbmRfZXZ0Y2huX3RvX2lycWhhbmRsZXIocG9ydCwgZXZ0Y2hu X2ludGVycnVwdCwgMCwKKwlyYyA9IGJpbmRfZXZ0Y2huX3RvX2lycWhhbmRsZXIoeGhfZGVmYXVs dCwgcG9ydCwgZXZ0Y2huX2ludGVycnVwdCwgMCwKIAkJCQkgICAgICAgdS0+bmFtZSwgZXZ0Y2hu KTsKIAlpZiAocmMgPCAwKQogCQlnb3RvIGVycjsKIAotCXJjID0gZXZ0Y2huX21ha2VfcmVmY291 bnRlZChwb3J0KTsKKwlyYyA9IGV2dGNobl9tYWtlX3JlZmNvdW50ZWQoeGhfZGVmYXVsdCwgcG9y dCk7CiAJcmV0dXJuIHJjOwogCiBlcnI6CiAJLyogYmluZCBmYWlsZWQsIHNob3VsZCBjbG9zZSB0 aGUgcG9ydCBub3cgKi8KIAljbG9zZS5wb3J0ID0gcG9ydDsKLQlpZiAoSFlQRVJWSVNPUl9ldmVu dF9jaGFubmVsX29wKEVWVENITk9QX2Nsb3NlLCAmY2xvc2UpICE9IDApCisJaWYgKGh5cGVydmlz b3JfZXZlbnRfY2hhbm5lbF9vcCh4aF9kZWZhdWx0LCBFVlRDSE5PUF9jbG9zZSwgJmNsb3NlKSAh PSAwKQogCQlCVUcoKTsKIAlkZWxfZXZ0Y2huKHUsIGV2dGNobik7CiAJcmV0dXJuIHJjOwpAQCAt NDEyLDcgKzQxMiw3IEBAIHN0YXRpYyBpbnQgZXZ0Y2huX2JpbmRfdG9fdXNlcihzdHJ1Y3QgcGVy X3VzZXJfZGF0YSAqdSwgaW50IHBvcnQpCiBzdGF0aWMgdm9pZCBldnRjaG5fdW5iaW5kX2Zyb21f dXNlcihzdHJ1Y3QgcGVyX3VzZXJfZGF0YSAqdSwKIAkJCQkgICAgc3RydWN0IHVzZXJfZXZ0Y2hu ICpldnRjaG4pCiB7Ci0JaW50IGlycSA9IGlycV9mcm9tX2V2dGNobihldnRjaG4tPnBvcnQpOwor CWludCBpcnEgPSBpcnFfZnJvbV9ldnRjaG4oeGhfZGVmYXVsdCwgZXZ0Y2huLT5wb3J0KTsKIAog CUJVR19PTihpcnEgPCAwKTsKIApAQCAtNDI5LDcgKzQyOSw3IEBAIHN0YXRpYyB2b2lkIGV2dGNo bl9iaW5kX2ludGVyZG9tX25leHRfdmNwdShpbnQgZXZ0Y2huKQogCXN0cnVjdCBpcnFfZGVzYyAq ZGVzYzsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JaXJxID0gaXJxX2Zyb21fZXZ0Y2huKGV2 dGNobik7CisJaXJxID0gaXJxX2Zyb21fZXZ0Y2huKHhoX2RlZmF1bHQsIGV2dGNobik7CiAJZGVz YyA9IGlycV90b19kZXNjKGlycSk7CiAKIAlpZiAoIWRlc2MpCkBAIC00NDcsNyArNDQ3LDcgQEAg c3RhdGljIHZvaWQgZXZ0Y2huX2JpbmRfaW50ZXJkb21fbmV4dF92Y3B1KGludCBldnRjaG4pCiAJ dGhpc19jcHVfd3JpdGUoYmluZF9sYXN0X3NlbGVjdGVkX2NwdSwgc2VsZWN0ZWRfY3B1KTsKIAog CS8qIHVubWFzayBleHBlY3RzIGlycXMgdG8gYmUgZGlzYWJsZWQgKi8KLQl4ZW5fcmViaW5kX2V2 dGNobl90b19jcHUoZXZ0Y2huLCBzZWxlY3RlZF9jcHUpOworCXhlbl9yZWJpbmRfZXZ0Y2huX3Rv X2NwdSh4aF9kZWZhdWx0LCBldnRjaG4sIHNlbGVjdGVkX2NwdSk7CiAJcmF3X3NwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmRlc2MtPmxvY2ssIGZsYWdzKTsKIH0KIApAQCAtNTQ5LDcgKzU0OSw3IEBA IHN0YXRpYyBsb25nIGV2dGNobl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJCWJyZWFrOwog CiAJCXJjID0gLUVJTlZBTDsKLQkJaWYgKHVuYmluZC5wb3J0ID49IHhlbl9ldnRjaG5fbnJfY2hh bm5lbHMoKSkKKwkJaWYgKHVuYmluZC5wb3J0ID49IHhlbl9ldnRjaG5fbnJfY2hhbm5lbHMoeGhf ZGVmYXVsdCkpCiAJCQlicmVhazsKIAogCQlyYyA9IC1FTk9UQ09OTjsKQEAgLTU1Nyw3ICs1NTcs NyBAQCBzdGF0aWMgbG9uZyBldnRjaG5faW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsCiAJCWlmICgh ZXZ0Y2huKQogCQkJYnJlYWs7CiAKLQkJZGlzYWJsZV9pcnEoaXJxX2Zyb21fZXZ0Y2huKHVuYmlu ZC5wb3J0KSk7CisJCWRpc2FibGVfaXJxKGlycV9mcm9tX2V2dGNobih4aF9kZWZhdWx0LCB1bmJp bmQucG9ydCkpOwogCQlldnRjaG5fdW5iaW5kX2Zyb21fdXNlcih1LCBldnRjaG4pOwogCQlyYyA9 IDA7CiAJCWJyZWFrOwpAQCAtNTc0LDcgKzU3NCw3IEBAIHN0YXRpYyBsb25nIGV2dGNobl9pb2N0 bChzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJcmMgPSAtRU5PVENPTk47CiAJCWV2dGNobiA9IGZpbmRf ZXZ0Y2huKHUsIG5vdGlmeS5wb3J0KTsKIAkJaWYgKGV2dGNobikgewotCQkJbm90aWZ5X3JlbW90 ZV92aWFfZXZ0Y2huKG5vdGlmeS5wb3J0KTsKKwkJCW5vdGlmeV9yZW1vdGVfdmlhX2V2dGNobih4 aF9kZWZhdWx0LCBub3RpZnkucG9ydCk7CiAJCQlyYyA9IDA7CiAJCX0KIAkJYnJlYWs7CkBAIC02 NzYsNyArNjc2LDcgQEAgc3RhdGljIGludCBldnRjaG5fcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlu b2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCkKIAkJc3RydWN0IHVzZXJfZXZ0Y2huICpldnRjaG47CiAK IAkJZXZ0Y2huID0gcmJfZW50cnkobm9kZSwgc3RydWN0IHVzZXJfZXZ0Y2huLCBub2RlKTsKLQkJ ZGlzYWJsZV9pcnEoaXJxX2Zyb21fZXZ0Y2huKGV2dGNobi0+cG9ydCkpOworCQlkaXNhYmxlX2ly cShpcnFfZnJvbV9ldnRjaG4oeGhfZGVmYXVsdCwgZXZ0Y2huLT5wb3J0KSk7CiAJCWV2dGNobl91 bmJpbmRfZnJvbV91c2VyKHUsIGV2dGNobik7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3hl bi9mYWxsYmFjay5jIGIvZHJpdmVycy94ZW4vZmFsbGJhY2suYwppbmRleCBhZTgxY2Y3NWFlNWYu LjlmNTRmYjhjZjk2ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vZmFsbGJhY2suYworKysgYi9k cml2ZXJzL3hlbi9mYWxsYmFjay5jCkBAIC0yLDYgKzIsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3N0 cmluZy5oPgogI2luY2x1ZGUgPGxpbnV4L2J1Zy5oPgogI2luY2x1ZGUgPGxpbnV4L2V4cG9ydC5o PgorI2luY2x1ZGUgPHhlbi9pbnRlcmZhY2UveGVuLmg+CiAjaW5jbHVkZSA8YXNtL2h5cGVydmlz b3IuaD4KICNpbmNsdWRlIDxhc20veGVuL2h5cGVyY2FsbC5oPgogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL3hlbi9nbnRhbGxvYy5jIGIvZHJpdmVycy94ZW4vZ250YWxsb2MuYwppbmRleCAzZmE0MGM3 MjNlOGUuLmUwNzgyMzg4NmZhOCAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vZ250YWxsb2MuYwor KysgYi9kcml2ZXJzL3hlbi9nbnRhbGxvYy5jCkBAIC0xODksOCArMTg5LDggQEAgc3RhdGljIHZv aWQgX19kZWxfZ3JlZihzdHJ1Y3QgZ250YWxsb2NfZ3JlZiAqZ3JlZikKIAkJa3VubWFwKGdyZWYt PnBhZ2UpOwogCX0KIAlpZiAoZ3JlZi0+bm90aWZ5LmZsYWdzICYgVU5NQVBfTk9USUZZX1NFTkRf RVZFTlQpIHsKLQkJbm90aWZ5X3JlbW90ZV92aWFfZXZ0Y2huKGdyZWYtPm5vdGlmeS5ldmVudCk7 Ci0JCWV2dGNobl9wdXQoZ3JlZi0+bm90aWZ5LmV2ZW50KTsKKwkJbm90aWZ5X3JlbW90ZV92aWFf ZXZ0Y2huKHhoX2RlZmF1bHQsIGdyZWYtPm5vdGlmeS5ldmVudCk7CisJCWV2dGNobl9wdXQoeGhf ZGVmYXVsdCwgZ3JlZi0+bm90aWZ5LmV2ZW50KTsKIAl9CiAKIAlncmVmLT5ub3RpZnkuZmxhZ3Mg PSAwOwpAQCAtNDE4LDE0ICs0MTgsMTQgQEAgc3RhdGljIGxvbmcgZ250YWxsb2NfaW9jdGxfdW5t YXBfbm90aWZ5KHN0cnVjdCBnbnRhbGxvY19maWxlX3ByaXZhdGVfZGF0YSAqcHJpdiwKIAkgKiBy ZWZlcmVuY2UgdG8gdGhhdCBldmVudCBjaGFubmVsLgogCSAqLwogCWlmIChvcC5hY3Rpb24gJiBV Tk1BUF9OT1RJRllfU0VORF9FVkVOVCkgewotCQlpZiAoZXZ0Y2huX2dldChvcC5ldmVudF9jaGFu bmVsX3BvcnQpKSB7CisJCWlmIChldnRjaG5fZ2V0KHhoX2RlZmF1bHQsIG9wLmV2ZW50X2NoYW5u ZWxfcG9ydCkpIHsKIAkJCXJjID0gLUVJTlZBTDsKIAkJCWdvdG8gdW5sb2NrX291dDsKIAkJfQog CX0KIAogCWlmIChncmVmLT5ub3RpZnkuZmxhZ3MgJiBVTk1BUF9OT1RJRllfU0VORF9FVkVOVCkK LQkJZXZ0Y2huX3B1dChncmVmLT5ub3RpZnkuZXZlbnQpOworCQlldnRjaG5fcHV0KHhoX2RlZmF1 bHQsIGdyZWYtPm5vdGlmeS5ldmVudCk7CiAKIAlncmVmLT5ub3RpZnkuZmxhZ3MgPSBvcC5hY3Rp b247CiAJZ3JlZi0+bm90aWZ5LnBnb2ZmID0gcGdvZmY7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hl bi9nbnRkZXYuYyBiL2RyaXZlcnMveGVuL2dudGRldi5jCmluZGV4IDVlZmM1ZWVlOTU0NC4uMGYw Yzk1MWNkNWIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9nbnRkZXYuYworKysgYi9kcml2ZXJz L3hlbi9nbnRkZXYuYwpAQCAtMjQ3LDggKzI0Nyw4IEBAIHZvaWQgZ250ZGV2X3B1dF9tYXAoc3Ry dWN0IGdudGRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZ250ZGV2X2dyYW50X21hcCAqbWFwKQogCWF0 b21pY19zdWIobWFwLT5jb3VudCwgJnBhZ2VzX21hcHBlZCk7CiAKIAlpZiAobWFwLT5ub3RpZnku ZmxhZ3MgJiBVTk1BUF9OT1RJRllfU0VORF9FVkVOVCkgewotCQlub3RpZnlfcmVtb3RlX3ZpYV9l dnRjaG4obWFwLT5ub3RpZnkuZXZlbnQpOwotCQlldnRjaG5fcHV0KG1hcC0+bm90aWZ5LmV2ZW50 KTsKKwkJbm90aWZ5X3JlbW90ZV92aWFfZXZ0Y2huKHhoX2RlZmF1bHQsIG1hcC0+bm90aWZ5LmV2 ZW50KTsKKwkJZXZ0Y2huX3B1dCh4aF9kZWZhdWx0LCBtYXAtPm5vdGlmeS5ldmVudCk7CiAJfQog CiAJaWYgKHBvcHVsYXRlX2ZyZWVhYmxlX21hcHMgJiYgcHJpdikgewpAQCAtNzkwLDcgKzc5MCw3 IEBAIHN0YXRpYyBsb25nIGdudGRldl9pb2N0bF9ub3RpZnkoc3RydWN0IGdudGRldl9wcml2ICpw cml2LCB2b2lkIF9fdXNlciAqdSkKIAkgKiByZWZlcmVuY2UgdG8gdGhhdCBldmVudCBjaGFubmVs LgogCSAqLwogCWlmIChvcC5hY3Rpb24gJiBVTk1BUF9OT1RJRllfU0VORF9FVkVOVCkgewotCQlp ZiAoZXZ0Y2huX2dldChvcC5ldmVudF9jaGFubmVsX3BvcnQpKQorCQlpZiAoZXZ0Y2huX2dldCh4 aF9kZWZhdWx0LCBvcC5ldmVudF9jaGFubmVsX3BvcnQpKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAJ fQogCkBAIC04MjksNyArODI5LDcgQEAgc3RhdGljIGxvbmcgZ250ZGV2X2lvY3RsX25vdGlmeShz dHJ1Y3QgZ250ZGV2X3ByaXYgKnByaXYsIHZvaWQgX191c2VyICp1KQogCiAJLyogRHJvcCB0aGUg cmVmZXJlbmNlIHRvIHRoZSBldmVudCBjaGFubmVsIHdlIGRpZCBub3Qgc2F2ZSBpbiB0aGUgbWFw ICovCiAJaWYgKG91dF9mbGFncyAmIFVOTUFQX05PVElGWV9TRU5EX0VWRU5UKQotCQlldnRjaG5f cHV0KG91dF9ldmVudCk7CisJCWV2dGNobl9wdXQoeGhfZGVmYXVsdCwgb3V0X2V2ZW50KTsKIAog CXJldHVybiByYzsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL21jZWxvZy5jIGIvZHJpdmVy cy94ZW4vbWNlbG9nLmMKaW5kZXggYjhiZjYxYWJiNjViLi40NWJlODU5NjBmNTMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMveGVuL21jZWxvZy5jCisrKyBiL2RyaXZlcnMveGVuL21jZWxvZy5jCkBAIC0z NzgsNyArMzc4LDcgQEAgc3RhdGljIGludCBiaW5kX3ZpcnFfZm9yX21jZSh2b2lkKQogCQlyZXR1 cm4gcmV0OwogCX0KIAotCXJldCAgPSBiaW5kX3ZpcnFfdG9faXJxaGFuZGxlcihWSVJRX01DQSwg MCwKKwlyZXQgID0gYmluZF92aXJxX3RvX2lycWhhbmRsZXIoeGhfZGVmYXVsdCwgVklSUV9NQ0Es IDAsCiAJCQkJICAgICAgIHhlbl9tY2VfaW50ZXJydXB0LCAwLCAibWNlIiwgTlVMTCk7CiAJaWYg KHJldCA8IDApIHsKIAkJcHJfZXJyKCJGYWlsZWQgdG8gYmluZCB2aXJxXG4iKTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMveGVuL3BjcHUuYyBiL2RyaXZlcnMveGVuL3BjcHUuYwppbmRleCBjZGM2ZGFh N2E5ZjYuLmQwODA3ZjhmYmQ4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vcGNwdS5jCisrKyBi L2RyaXZlcnMveGVuL3BjcHUuYwpAQCAtMzg3LDcgKzM4Nyw3IEBAIHN0YXRpYyBpbnQgX19pbml0 IHhlbl9wY3B1X2luaXQodm9pZCkKIAlpZiAoIXhlbl9pbml0aWFsX2RvbWFpbigpKQogCQlyZXR1 cm4gLUVOT0RFVjsKIAotCWlycSA9IGJpbmRfdmlycV90b19pcnFoYW5kbGVyKFZJUlFfUENQVV9T VEFURSwgMCwKKwlpcnEgPSBiaW5kX3ZpcnFfdG9faXJxaGFuZGxlcih4aF9kZWZhdWx0LCBWSVJR X1BDUFVfU1RBVEUsIDAsCiAJCQkJICAgICAgeGVuX3BjcHVfaW50ZXJydXB0LCAwLAogCQkJCSAg ICAgICJ4ZW4tcGNwdSIsIE5VTEwpOwogCWlmIChpcnEgPCAwKSB7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL3hlbi9wcmVlbXB0LmMgYi9kcml2ZXJzL3hlbi9wcmVlbXB0LmMKaW5kZXggMDhjYjQxOWVi NGU2Li5iNWYxNmE5ODQxNGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL3ByZWVtcHQuYworKysg Yi9kcml2ZXJzL3hlbi9wcmVlbXB0LmMKQEAgLTEwLDYgKzEwLDcgQEAKICAqLwogCiAjaW5jbHVk ZSA8bGludXgvc2NoZWQuaD4KKyNpbmNsdWRlIDx4ZW4vaW50ZXJmYWNlL3hlbi5oPgogI2luY2x1 ZGUgPHhlbi94ZW4tb3BzLmg+CiAKICNpZm5kZWYgQ09ORklHX1BSRUVNUFQKZGlmZiAtLWdpdCBh L2RyaXZlcnMveGVuL3ByaXZjbWQuYyBiL2RyaXZlcnMveGVuL3ByaXZjbWQuYwppbmRleCBiMjRk ZGFjMTYwNGIuLmI1NTQxZjg2MjcyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vcHJpdmNtZC5j CisrKyBiL2RyaXZlcnMveGVuL3ByaXZjbWQuYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg PGFzbS9wZ2FsbG9jLmg+CiAjaW5jbHVkZSA8YXNtL3BndGFibGUuaD4KICNpbmNsdWRlIDxhc20v dGxiLmg+CisjaW5jbHVkZSA8eGVuL2ludGVyZmFjZS94ZW4uaD4KICNpbmNsdWRlIDxhc20veGVu L2h5cGVydmlzb3IuaD4KICNpbmNsdWRlIDxhc20veGVuL2h5cGVyY2FsbC5oPgogCmRpZmYgLS1n aXQgYS9kcml2ZXJzL3hlbi9zeXMtaHlwZXJ2aXNvci5jIGIvZHJpdmVycy94ZW4vc3lzLWh5cGVy dmlzb3IuYwppbmRleCA5ZDMxNGJiYTdjNGUuLjAwNWE4OThlN2EyMyAxMDA2NDQKLS0tIGEvZHJp dmVycy94ZW4vc3lzLWh5cGVydmlzb3IuYworKysgYi9kcml2ZXJzL3hlbi9zeXMtaHlwZXJ2aXNv ci5jCkBAIC0xMywxMiArMTMsMTIgQEAKICNpbmNsdWRlIDxsaW51eC9rb2JqZWN0Lmg+CiAjaW5j bHVkZSA8bGludXgvZXJyLmg+CiAKKyNpbmNsdWRlIDx4ZW4vaW50ZXJmYWNlL3hlbi5oPgogI2lu Y2x1ZGUgPGFzbS94ZW4vaHlwZXJ2aXNvci5oPgogI2luY2x1ZGUgPGFzbS94ZW4vaHlwZXJjYWxs Lmg+CiAKICNpbmNsdWRlIDx4ZW4veGVuLmg+CiAjaW5jbHVkZSA8eGVuL3hlbmJ1cy5oPgotI2lu Y2x1ZGUgPHhlbi9pbnRlcmZhY2UveGVuLmg+CiAjaW5jbHVkZSA8eGVuL2ludGVyZmFjZS92ZXJz aW9uLmg+CiAjaWZkZWYgQ09ORklHX1hFTl9IQVZFX1ZQTVUKICNpbmNsdWRlIDx4ZW4vaW50ZXJm YWNlL3hlbnBtdS5oPgpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vdGltZS5jIGIvZHJpdmVycy94 ZW4vdGltZS5jCmluZGV4IGZlZWU3NGJiYWIwYS4uNzM5MTY3NjZkY2FjIDEwMDY0NAotLS0gYS9k cml2ZXJzL3hlbi90aW1lLmMKKysrIGIvZHJpdmVycy94ZW4vdGltZS5jCkBAIC04LDEzICs4LDEz IEBACiAjaW5jbHVkZSA8bGludXgvZ2ZwLmg+CiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgogCisj aW5jbHVkZSA8eGVuL2ludGVyZmFjZS94ZW4uaD4KICNpbmNsdWRlIDxhc20vcGFyYXZpcnQuaD4K ICNpbmNsdWRlIDxhc20veGVuL2h5cGVydmlzb3IuaD4KICNpbmNsdWRlIDxhc20veGVuL2h5cGVy Y2FsbC5oPgogCiAjaW5jbHVkZSA8eGVuL2V2ZW50cy5oPgogI2luY2x1ZGUgPHhlbi9mZWF0dXJl cy5oPgotI2luY2x1ZGUgPHhlbi9pbnRlcmZhY2UveGVuLmg+CiAjaW5jbHVkZSA8eGVuL2ludGVy ZmFjZS92Y3B1Lmg+CiAjaW5jbHVkZSA8eGVuL3hlbi1vcHMuaD4KIApkaWZmIC0tZ2l0IGEvZHJp dmVycy94ZW4veGVuLXBjaWJhY2sveGVuYnVzLmMgYi9kcml2ZXJzL3hlbi94ZW4tcGNpYmFjay94 ZW5idXMuYwppbmRleCA1ODFjNGUxYThiODIuLmI5NWRkNjVmMzg3MiAxMDA2NDQKLS0tIGEvZHJp dmVycy94ZW4veGVuLXBjaWJhY2sveGVuYnVzLmMKKysrIGIvZHJpdmVycy94ZW4veGVuLXBjaWJh Y2sveGVuYnVzLmMKQEAgLTEyMyw3ICsxMjMsNyBAQCBzdGF0aWMgaW50IHhlbl9wY2lia19kb19h dHRhY2goc3RydWN0IHhlbl9wY2lia19kZXZpY2UgKnBkZXYsIGludCBnbnRfcmVmLAogCiAJcGRl di0+c2hfaW5mbyA9IHZhZGRyOwogCi0JZXJyID0gYmluZF9pbnRlcmRvbWFpbl9ldnRjaG5fdG9f aXJxaGFuZGxlcigKKwllcnIgPSBiaW5kX2ludGVyZG9tYWluX2V2dGNobl90b19pcnFoYW5kbGVy KHhoX2RlZmF1bHQsCiAJCXBkZXYtPnhkZXYtPm90aGVyZW5kX2lkLCByZW1vdGVfZXZ0Y2huLCB4 ZW5fcGNpYmtfaGFuZGxlX2V2ZW50LAogCQkwLCBEUlZfTkFNRSwgcGRldik7CiAJaWYgKGVyciA8 IDApIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL3hlbi1zY3NpYmFjay5jIGIvZHJpdmVycy94 ZW4veGVuLXNjc2liYWNrLmMKaW5kZXggYzllMjNhMTI2MjE4Li44NzAyYjFhYzkyYTggMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMveGVuL3hlbi1zY3NpYmFjay5jCisrKyBiL2RyaXZlcnMveGVuL3hlbi1z Y3NpYmFjay5jCkBAIC01NCw4ICs1NCw5IEBACiAjaW5jbHVkZSA8dGFyZ2V0L3RhcmdldF9jb3Jl X2Jhc2UuaD4KICNpbmNsdWRlIDx0YXJnZXQvdGFyZ2V0X2NvcmVfZmFicmljLmg+CiAKKworI2lu Y2x1ZGUgPHhlbi9pbnRlcmZhY2UveGVuLmg+CiAjaW5jbHVkZSA8YXNtL2h5cGVydmlzb3IuaD4K LQogI2luY2x1ZGUgPHhlbi94ZW4uaD4KICNpbmNsdWRlIDx4ZW4vYmFsbG9vbi5oPgogI2luY2x1 ZGUgPHhlbi9ldmVudHMuaD4KQEAgLTgyOSw3ICs4MzAsNyBAQCBzdGF0aWMgaW50IHNjc2liYWNr X2luaXRfc3Jpbmcoc3RydWN0IHZzY3NpYmtfaW5mbyAqaW5mbywgZ3JhbnRfcmVmX3QgcmluZ19y ZWYsCiAJc3JpbmcgPSAoc3RydWN0IHZzY3NpaWZfc3JpbmcgKilhcmVhOwogCUJBQ0tfUklOR19J TklUKCZpbmZvLT5yaW5nLCBzcmluZywgUEFHRV9TSVpFKTsKIAotCWVyciA9IGJpbmRfaW50ZXJk b21haW5fZXZ0Y2huX3RvX2lycShpbmZvLT5kb21pZCwgZXZ0Y2huKTsKKwllcnIgPSBiaW5kX2lu dGVyZG9tYWluX2V2dGNobl90b19pcnEoeGhfZGVmYXVsdCwgaW5mby0+ZG9taWQsIGV2dGNobik7 CiAJaWYgKGVyciA8IDApCiAJCWdvdG8gdW5tYXBfcGFnZTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy94ZW4veGVuYnVzL3hlbmJ1c19jbGllbnQuYyBiL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNf Y2xpZW50LmMKaW5kZXggZTE3Y2E4MTU2MTcxLi5mMGNmNDc3NjU3MjYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfY2xpZW50LmMKKysrIGIvZHJpdmVycy94ZW4veGVuYnVz L3hlbmJ1c19jbGllbnQuYwpAQCAtMzYsOSArMzYsOSBAQAogI2luY2x1ZGUgPGxpbnV4L3NwaW5s b2NrLmg+CiAjaW5jbHVkZSA8bGludXgvdm1hbGxvYy5oPgogI2luY2x1ZGUgPGxpbnV4L2V4cG9y dC5oPgotI2luY2x1ZGUgPGFzbS94ZW4vaHlwZXJ2aXNvci5oPgogI2luY2x1ZGUgPHhlbi9wYWdl Lmg+CiAjaW5jbHVkZSA8eGVuL2ludGVyZmFjZS94ZW4uaD4KKyNpbmNsdWRlIDxhc20veGVuL2h5 cGVydmlzb3IuaD4KICNpbmNsdWRlIDx4ZW4vaW50ZXJmYWNlL2V2ZW50X2NoYW5uZWwuaD4KICNp bmNsdWRlIDx4ZW4vYmFsbG9vbi5oPgogI2luY2x1ZGUgPHhlbi9ldmVudHMuaD4KZGlmZiAtLWdp dCBhL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfY29tbXMuYyBiL2RyaXZlcnMveGVuL3hlbmJ1 cy94ZW5idXNfY29tbXMuYwppbmRleCBkMjM5ZmMzYzVlM2QuLmFjYmMzNjZjMTcxNyAxMDA2NDQK LS0tIGEvZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1c19jb21tcy5jCisrKyBiL2RyaXZlcnMveGVu L3hlbmJ1cy94ZW5idXNfY29tbXMuYwpAQCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyBpbnQgeGJf d3JpdGUoY29uc3Qgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGxlbikKIAogCQkvKiBJbXBsaWVz IG1iKCk6IG90aGVyIHNpZGUgd2lsbCBzZWUgdGhlIHVwZGF0ZWQgcHJvZHVjZXIuICovCiAJCWlm IChwcm9kIDw9IGludGYtPnJlcV9jb25zKQotCQkJbm90aWZ5X3JlbW90ZV92aWFfZXZ0Y2huKHhl bl9zdG9yZV9ldnRjaG4pOworCQkJbm90aWZ5X3JlbW90ZV92aWFfZXZ0Y2huKHhoX2RlZmF1bHQs IHhlbl9zdG9yZV9ldnRjaG4pOwogCX0KIAogCXJldHVybiBieXRlczsKQEAgLTIwNCw3ICsyMDQs NyBAQCBzdGF0aWMgaW50IHhiX3JlYWQodm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGxlbikKIAog CQkvKiBJbXBsaWVzIG1iKCk6IG90aGVyIHNpZGUgd2lsbCBzZWUgdGhlIHVwZGF0ZWQgY29uc3Vt ZXIuICovCiAJCWlmIChpbnRmLT5yc3BfcHJvZCAtIGNvbnMgPj0gWEVOU1RPUkVfUklOR19TSVpF KQotCQkJbm90aWZ5X3JlbW90ZV92aWFfZXZ0Y2huKHhlbl9zdG9yZV9ldnRjaG4pOworCQkJbm90 aWZ5X3JlbW90ZV92aWFfZXZ0Y2huKHhoX2RlZmF1bHQsIHhlbl9zdG9yZV9ldnRjaG4pOwogCX0K IAogCXJldHVybiBieXRlczsKQEAgLTQ2MSw3ICs0NjEsNyBAQCBpbnQgeGJfaW5pdF9jb21tcyh2 b2lkKQogCX0gZWxzZSB7CiAJCWludCBlcnI7CiAKLQkJZXJyID0gYmluZF9ldnRjaG5fdG9faXJx aGFuZGxlcih4ZW5fc3RvcmVfZXZ0Y2huLCB3YWtlX3dhaXRpbmcsCisJCWVyciA9IGJpbmRfZXZ0 Y2huX3RvX2lycWhhbmRsZXIoeGhfZGVmYXVsdCwgeGVuX3N0b3JlX2V2dGNobiwgd2FrZV93YWl0 aW5nLAogCQkJCQkJMCwgInhlbmJ1cyIsICZ4Yl93YWl0cSk7CiAJCWlmIChlcnIgPCAwKSB7CiAJ CQlwcl9lcnIoInJlcXVlc3QgaXJxIGZhaWxlZCAlaVxuIiwgZXJyKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfcHJvYmUuYyBiL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5i dXNfcHJvYmUuYwppbmRleCA1YjQ3MTg4OWQ3MjMuLjA0OWJkNTExZjM2ZSAxMDA2NDQKLS0tIGEv ZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1c19wcm9iZS5jCisrKyBiL2RyaXZlcnMveGVuL3hlbmJ1 cy94ZW5idXNfcHJvYmUuYwpAQCAtNTIsNiArNTIsNyBAQAogCiAjaW5jbHVkZSA8YXNtL3BhZ2Uu aD4KICNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgorI2luY2x1ZGUgPHhlbi9pbnRlcmZhY2UveGVu Lmg+CiAjaW5jbHVkZSA8YXNtL3hlbi9oeXBlcnZpc29yLmg+CiAKICNpbmNsdWRlIDx4ZW4veGVu Lmg+CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi94ZW5idXMveGVuYnVzX3Byb2JlX2JhY2tlbmQu YyBiL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfcHJvYmVfYmFja2VuZC5jCmluZGV4IGIwYmVk NGZhZjQ0Yy4uZDNjNTNhOWRiNWUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi94ZW5idXMveGVu YnVzX3Byb2JlX2JhY2tlbmQuYworKysgYi9kcml2ZXJzL3hlbi94ZW5idXMveGVuYnVzX3Byb2Jl X2JhY2tlbmQuYwpAQCAtNDgsNiArNDgsNyBAQAogCiAjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KICNp bmNsdWRlIDxhc20vcGd0YWJsZS5oPgorI2luY2x1ZGUgPHhlbi9pbnRlcmZhY2UveGVuLmg+CiAj aW5jbHVkZSA8YXNtL3hlbi9oeXBlcnZpc29yLmg+CiAjaW5jbHVkZSA8YXNtL2h5cGVydmlzb3Iu aD4KICNpbmNsdWRlIDx4ZW4veGVuYnVzLmg+CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi94ZW5i dXMveGVuYnVzX3Byb2JlX2Zyb250ZW5kLmMgYi9kcml2ZXJzL3hlbi94ZW5idXMveGVuYnVzX3By b2JlX2Zyb250ZW5kLmMKaW5kZXggMDc4OTZmNGIyNzM2Li4zZWRhYjdjYzAzYzMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfcHJvYmVfZnJvbnRlbmQuYworKysgYi9kcml2 ZXJzL3hlbi94ZW5idXMveGVuYnVzX3Byb2JlX2Zyb250ZW5kLmMKQEAgLTE5LDYgKzE5LDcgQEAK IAogI2luY2x1ZGUgPGFzbS9wYWdlLmg+CiAjaW5jbHVkZSA8YXNtL3BndGFibGUuaD4KKyNpbmNs dWRlIDx4ZW4vaW50ZXJmYWNlL3hlbi5oPgogI2luY2x1ZGUgPGFzbS94ZW4vaHlwZXJ2aXNvci5o PgogI2luY2x1ZGUgPHhlbi94ZW5idXMuaD4KICNpbmNsdWRlIDx4ZW4vZXZlbnRzLmg+CmRpZmYg LS1naXQgYS9kcml2ZXJzL3hlbi94ZW5idXMveGVuYnVzX3hzLmMgYi9kcml2ZXJzL3hlbi94ZW5i dXMveGVuYnVzX3hzLmMKaW5kZXggMzIzNmQxYjFmYTAxLi43NGMyYjk0MTZiODggMTAwNjQ0Ci0t LSBhL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfeHMuYworKysgYi9kcml2ZXJzL3hlbi94ZW5i dXMveGVuYnVzX3hzLmMKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxsaW51eC9yZWJvb3Qu aD4KICNpbmNsdWRlIDxsaW51eC9yd3NlbS5oPgogI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+Cisj aW5jbHVkZSA8eGVuL2ludGVyZmFjZS94ZW4uaD4KICNpbmNsdWRlIDxhc20veGVuL2h5cGVydmlz b3IuaD4KICNpbmNsdWRlIDx4ZW4veGVuYnVzLmg+CiAjaW5jbHVkZSA8eGVuL3hlbi5oPgpkaWZm IC0tZ2l0IGEvaW5jbHVkZS94ZW4vZXZlbnRzLmggYi9pbmNsdWRlL3hlbi9ldmVudHMuaAppbmRl eCBhNDg4OTcxOTk5NzUuLjEzOGRiYmJlZmM2ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS94ZW4vZXZl bnRzLmgKKysrIGIvaW5jbHVkZS94ZW4vZXZlbnRzLmgKQEAgLTExLDI3ICsxMSwzMCBAQAogI2lu Y2x1ZGUgPGFzbS94ZW4vaHlwZXJjYWxsLmg+CiAjaW5jbHVkZSA8YXNtL3hlbi9ldmVudHMuaD4K IAotdW5zaWduZWQgeGVuX2V2dGNobl9ucl9jaGFubmVscyh2b2lkKTsKK3Vuc2lnbmVkIHhlbl9l dnRjaG5fbnJfY2hhbm5lbHMoeGVuaG9zdF90ICp4aCk7CiAKLWludCBiaW5kX2V2dGNobl90b19p cnEodW5zaWduZWQgaW50IGV2dGNobik7Ci1pbnQgYmluZF9ldnRjaG5fdG9faXJxaGFuZGxlcih1 bnNpZ25lZCBpbnQgZXZ0Y2huLAoraW50IGJpbmRfZXZ0Y2huX3RvX2lycSh4ZW5ob3N0X3QgKnho LCB1bnNpZ25lZCBpbnQgZXZ0Y2huKTsKK2ludCBiaW5kX2V2dGNobl90b19pcnFoYW5kbGVyKHhl bmhvc3RfdCAqeGgsIHVuc2lnbmVkIGludCBldnRjaG4sCiAJCQkgICAgICBpcnFfaGFuZGxlcl90 IGhhbmRsZXIsCiAJCQkgICAgICB1bnNpZ25lZCBsb25nIGlycWZsYWdzLCBjb25zdCBjaGFyICpk ZXZuYW1lLAogCQkJICAgICAgdm9pZCAqZGV2X2lkKTsKLWludCBiaW5kX3ZpcnFfdG9faXJxKHVu c2lnbmVkIGludCB2aXJxLCB1bnNpZ25lZCBpbnQgY3B1LCBib29sIHBlcmNwdSk7Ci1pbnQgYmlu ZF92aXJxX3RvX2lycWhhbmRsZXIodW5zaWduZWQgaW50IHZpcnEsIHVuc2lnbmVkIGludCBjcHUs CitpbnQgYmluZF92aXJxX3RvX2lycSh4ZW5ob3N0X3QgKnhoLCB1bnNpZ25lZCBpbnQgdmlycSwg dW5zaWduZWQgaW50IGNwdSwgYm9vbCBwZXJjcHUpOworaW50IGJpbmRfdmlycV90b19pcnFoYW5k bGVyKHhlbmhvc3RfdCAqeGgsIHVuc2lnbmVkIGludCB2aXJxLCB1bnNpZ25lZCBpbnQgY3B1LAog CQkJICAgIGlycV9oYW5kbGVyX3QgaGFuZGxlciwKIAkJCSAgICB1bnNpZ25lZCBsb25nIGlycWZs YWdzLCBjb25zdCBjaGFyICpkZXZuYW1lLAogCQkJICAgIHZvaWQgKmRldl9pZCk7Ci1pbnQgYmlu ZF9pcGlfdG9faXJxaGFuZGxlcihlbnVtIGlwaV92ZWN0b3IgaXBpLAoraW50IGJpbmRfaXBpX3Rv X2lycWhhbmRsZXIoeGVuaG9zdF90ICp4aCwKKwkJCSAgIGVudW0gaXBpX3ZlY3RvciBpcGksCiAJ CQkgICB1bnNpZ25lZCBpbnQgY3B1LAogCQkJICAgaXJxX2hhbmRsZXJfdCBoYW5kbGVyLAogCQkJ ICAgdW5zaWduZWQgbG9uZyBpcnFmbGFncywKIAkJCSAgIGNvbnN0IGNoYXIgKmRldm5hbWUsCiAJ CQkgICB2b2lkICpkZXZfaWQpOwotaW50IGJpbmRfaW50ZXJkb21haW5fZXZ0Y2huX3RvX2lycSh1 bnNpZ25lZCBpbnQgcmVtb3RlX2RvbWFpbiwKK2ludCBiaW5kX2ludGVyZG9tYWluX2V2dGNobl90 b19pcnEoeGVuaG9zdF90ICp4aCwKKwkJCQkgICB1bnNpZ25lZCBpbnQgcmVtb3RlX2RvbWFpbiwK IAkJCQkgICB1bnNpZ25lZCBpbnQgcmVtb3RlX3BvcnQpOwotaW50IGJpbmRfaW50ZXJkb21haW5f ZXZ0Y2huX3RvX2lycWhhbmRsZXIodW5zaWduZWQgaW50IHJlbW90ZV9kb21haW4sCitpbnQgYmlu ZF9pbnRlcmRvbWFpbl9ldnRjaG5fdG9faXJxaGFuZGxlcih4ZW5ob3N0X3QgKnhoLAorCQkJCQkg IHVuc2lnbmVkIGludCByZW1vdGVfZG9tYWluLAogCQkJCQkgIHVuc2lnbmVkIGludCByZW1vdGVf cG9ydCwKIAkJCQkJICBpcnFfaGFuZGxlcl90IGhhbmRsZXIsCiAJCQkJCSAgdW5zaWduZWQgbG9u ZyBpcnFmbGFncywKQEAgLTQ4LDIzICs1MSwyMyBAQCB2b2lkIHVuYmluZF9mcm9tX2lycWhhbmRs ZXIodW5zaWduZWQgaW50IGlycSwgdm9pZCAqZGV2X2lkKTsKICNkZWZpbmUgWEVOX0lSUV9QUklP UklUWV9NQVggICAgIEVWVENITl9GSUZPX1BSSU9SSVRZX01BWAogI2RlZmluZSBYRU5fSVJRX1BS SU9SSVRZX0RFRkFVTFQgRVZUQ0hOX0ZJRk9fUFJJT1JJVFlfREVGQVVMVAogI2RlZmluZSBYRU5f SVJRX1BSSU9SSVRZX01JTiAgICAgRVZUQ0hOX0ZJRk9fUFJJT1JJVFlfTUlOCi1pbnQgeGVuX3Nl dF9pcnFfcHJpb3JpdHkodW5zaWduZWQgaXJxLCB1bnNpZ25lZCBwcmlvcml0eSk7CitpbnQgeGVu X3NldF9pcnFfcHJpb3JpdHkoeGVuaG9zdF90ICp4aCwgdW5zaWduZWQgaXJxLCB1bnNpZ25lZCBw cmlvcml0eSk7CiAKIC8qCiAgKiBBbGxvdyBleHRyYSByZWZlcmVuY2VzIHRvIGV2ZW50IGNoYW5u ZWxzIGV4cG9zZWQgdG8gdXNlcnNwYWNlIGJ5IGV2dGNobgogICovCi1pbnQgZXZ0Y2huX21ha2Vf cmVmY291bnRlZCh1bnNpZ25lZCBpbnQgZXZ0Y2huKTsKLWludCBldnRjaG5fZ2V0KHVuc2lnbmVk IGludCBldnRjaG4pOwotdm9pZCBldnRjaG5fcHV0KHVuc2lnbmVkIGludCBldnRjaG4pOworaW50 IGV2dGNobl9tYWtlX3JlZmNvdW50ZWQoeGVuaG9zdF90ICp4aCwgdW5zaWduZWQgaW50IGV2dGNo bik7CitpbnQgZXZ0Y2huX2dldCh4ZW5ob3N0X3QgKnhoLCB1bnNpZ25lZCBpbnQgZXZ0Y2huKTsK K3ZvaWQgZXZ0Y2huX3B1dCh4ZW5ob3N0X3QgKnhoLCB1bnNpZ25lZCBpbnQgZXZ0Y2huKTsKIAot dm9pZCB4ZW5fc2VuZF9JUElfb25lKHVuc2lnbmVkIGludCBjcHUsIGVudW0gaXBpX3ZlY3RvciB2 ZWN0b3IpOwordm9pZCB4ZW5fc2VuZF9JUElfb25lKHhlbmhvc3RfdCAqeGgsIHVuc2lnbmVkIGlu dCBjcHUsIGVudW0gaXBpX3ZlY3RvciB2ZWN0b3IpOwogdm9pZCByZWJpbmRfZXZ0Y2huX2lycShp bnQgZXZ0Y2huLCBpbnQgaXJxKTsKLWludCB4ZW5fcmViaW5kX2V2dGNobl90b19jcHUoaW50IGV2 dGNobiwgdW5zaWduZWQgdGNwdSk7CitpbnQgeGVuX3JlYmluZF9ldnRjaG5fdG9fY3B1KHhlbmhv c3RfdCAqeGgsIGludCBldnRjaG4sIHVuc2lnbmVkIHRjcHUpOwogCi1zdGF0aWMgaW5saW5lIHZv aWQgbm90aWZ5X3JlbW90ZV92aWFfZXZ0Y2huKGludCBwb3J0KQorc3RhdGljIGlubGluZSB2b2lk IG5vdGlmeV9yZW1vdGVfdmlhX2V2dGNobih4ZW5ob3N0X3QgKnhoLCBpbnQgcG9ydCkKIHsKIAlz dHJ1Y3QgZXZ0Y2huX3NlbmQgc2VuZCA9IHsgLnBvcnQgPSBwb3J0IH07Ci0JKHZvaWQpSFlQRVJW SVNPUl9ldmVudF9jaGFubmVsX29wKEVWVENITk9QX3NlbmQsICZzZW5kKTsKKwkodm9pZCloeXBl cnZpc29yX2V2ZW50X2NoYW5uZWxfb3AoeGgsIEVWVENITk9QX3NlbmQsICZzZW5kKTsKIH0KIAog dm9pZCBub3RpZnlfcmVtb3RlX3ZpYV9pcnEoaW50IGlycSk7CkBAIC04NSw3ICs4OCw3IEBAIHZv aWQgeGVuX3BvbGxfaXJxKGludCBpcnEpOwogdm9pZCB4ZW5fcG9sbF9pcnFfdGltZW91dChpbnQg aXJxLCB1NjQgdGltZW91dCk7CiAKIC8qIERldGVybWluZSB0aGUgSVJRIHdoaWNoIGlzIGJvdW5k IHRvIGFuIGV2ZW50IGNoYW5uZWwgKi8KLXVuc2lnbmVkIGlycV9mcm9tX2V2dGNobih1bnNpZ25l ZCBpbnQgZXZ0Y2huKTsKK3Vuc2lnbmVkIGlycV9mcm9tX2V2dGNobih4ZW5ob3N0X3QgKnhoLHVu c2lnbmVkIGludCBldnRjaG4pOwogaW50IGlycV9mcm9tX3ZpcnEodW5zaWduZWQgaW50IGNwdSwg dW5zaWduZWQgaW50IHZpcnEpOwogdW5zaWduZWQgaW50IGV2dGNobl9mcm9tX2lycSh1bnNpZ25l ZCBpcnEpOwogCkBAIC0xMDEsMTQgKzEwNCwxNCBAQCB2b2lkIHhlbl9ldnRjaG5fZG9fdXBjYWxs KHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKIHZvaWQgeGVuX2h2bV9ldnRjaG5fZG9fdXBjYWxsKHZv aWQpOwogCiAvKiBCaW5kIGEgcGlycSBmb3IgYSBwaHlzaWNhbCBpbnRlcnJ1cHQgdG8gYW4gaXJx LiAqLwotaW50IHhlbl9iaW5kX3BpcnFfZ3NpX3RvX2lycSh1bnNpZ25lZCBnc2ksCitpbnQgeGVu X2JpbmRfcGlycV9nc2lfdG9faXJxKHhlbmhvc3RfdCAqeGgsIHVuc2lnbmVkIGdzaSwKIAkJCSAg ICAgdW5zaWduZWQgcGlycSwgaW50IHNoYXJlYWJsZSwgY2hhciAqbmFtZSk7CiAKICNpZmRlZiBD T05GSUdfUENJX01TSQogLyogQWxsb2NhdGUgYSBwaXJxIGZvciBhIE1TSSBzdHlsZSBwaHlzaWNh bCBpbnRlcnJ1cHQuICovCi1pbnQgeGVuX2FsbG9jYXRlX3BpcnFfbXNpKHN0cnVjdCBwY2lfZGV2 ICpkZXYsIHN0cnVjdCBtc2lfZGVzYyAqbXNpZGVzYyk7CitpbnQgeGVuX2FsbG9jYXRlX3BpcnFf bXNpKHhlbmhvc3RfdCAqeGgsIHN0cnVjdCBwY2lfZGV2ICpkZXYsIHN0cnVjdCBtc2lfZGVzYyAq bXNpZGVzYyk7CiAvKiBCaW5kIGFuIFBTSSBwaXJxIHRvIGFuIGlycS4gKi8KLWludCB4ZW5fYmlu ZF9waXJxX21zaV90b19pcnEoc3RydWN0IHBjaV9kZXYgKmRldiwgc3RydWN0IG1zaV9kZXNjICpt c2lkZXNjLAoraW50IHhlbl9iaW5kX3BpcnFfbXNpX3RvX2lycSh4ZW5ob3N0X3QgKnhoLCBzdHJ1 Y3QgcGNpX2RldiAqZGV2LCBzdHJ1Y3QgbXNpX2Rlc2MgKm1zaWRlc2MsCiAJCQkgICAgIGludCBw aXJxLCBpbnQgbnZlYywgY29uc3QgY2hhciAqbmFtZSwgZG9taWRfdCBkb21pZCk7CiAjZW5kaWYK IApAQCAtMTI4LDUgKzEzMSw1IEBAIGludCB4ZW5faXJxX2Zyb21fZ3NpKHVuc2lnbmVkIGdzaSk7 CiBpbnQgeGVuX3Rlc3RfaXJxX3NoYXJlZChpbnQgaXJxKTsKIAogLyogaW5pdGlhbGl6ZSBYZW4g SVJRIHN1YnN5c3RlbSAqLwotdm9pZCB4ZW5faW5pdF9JUlEodm9pZCk7Cit2b2lkIHhlbl9pbml0 X0lSUSh4ZW5ob3N0X3QgKnhoKTsKICNlbmRpZgkvKiBfWEVOX0VWRU5UU19IICovCmRpZmYgLS1n aXQgYS9pbmNsdWRlL3hlbi94ZW5ob3N0LmggYi9pbmNsdWRlL3hlbi94ZW5ob3N0LmgKaW5kZXgg ZjYwOTJhODk4N2YxLi5jOWRhYmY3MzlmZjggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUveGVuL3hlbmhv c3QuaAorKysgYi9pbmNsdWRlL3hlbi94ZW5ob3N0LmgKQEAgLTExMiw2ICsxMTIsMjMgQEAgdHlw ZWRlZiBzdHJ1Y3QgewogCQkgKi8KIAkJdWludDMyX3QgeGVuX3ZjcHVfaWRbTlJfQ1BVU107CiAJ fTsKKworCS8qCisJICogZXZ0Y2huOiBnZXQgaW5pdCdkIHZpYSB4ODZfaW5pdC5pcnFzLmludHJf aW5pdCAoeGVuX2luaXRfSVJRKCkpLgorCSAqCisJICogVGhlIGNvbW1vbiBmdW5jdGlvbmFsaXR5 IGZvciB4ZW5ob3N0XyogcHJvdmlkZWQgYnkgeGVuX2luaXRfSVJRKCkKKwkgKiBpcyB0aGUgbWFw cGluZyBiZXR3ZWVuIGV2dGNobiA8LT4gaXJxLgorCSAqCisJICogRm9yIGFsbCB0aHJlZSBvZiB4 ZW5ob3N0X3IwL3IxIGFuZCByMiwgcG9zdC1pbml0IHRoZSBldnRjaG4gbG9naWMKKwkgKiBzaG91 bGQganVzdCB3b3JrIHVzaW5nIHRoZSBldnRjaG5fdG9faXJxIG1hcHBpbmcgYW5kIHRoZSB2Y3B1 X2luZm8sCisJICogc2hhcmVkX2luZm8gc3RhdGUuCisJICogKFBsdXMgc29tZSBzdGF0ZSBwcml2 YXRlIHRvIGV2dGNobl8ybC9ldnRjaG5fZmlmbyB3aGljaCBmb3Igbm93CisJICogaXMgZGVmaW5l ZCBsb2NhbGx5LikKKwkgKi8KKwlzdHJ1Y3QgeworCQljb25zdCBzdHJ1Y3QgZXZ0Y2huX29wcyAq ZXZ0Y2huX29wczsKKwkJaW50ICoqZXZ0Y2huX3RvX2lycTsKKwl9OwogfSB4ZW5ob3N0X3Q7CiAK IHR5cGVkZWYgc3RydWN0IHhlbmhvc3Rfb3BzIHsKLS0gCjIuMjAuMQoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QK WGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v cmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=