From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753028AbdBPAFL (ORCPT ); Wed, 15 Feb 2017 19:05:11 -0500 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:54681 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755143AbdBPAEr (ORCPT ); Wed, 15 Feb 2017 19:04:47 -0500 Message-ID: <1487203475.21420.0.camel@decadent.org.uk> Subject: Re: [PATCH 3.16 000/306] 3.16.40-rc1 review From: Ben Hutchings To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: torvalds@linux-foundation.org, Guenter Roeck , akpm@linux-foundation.org Date: Thu, 16 Feb 2017 00:04:35 +0000 In-Reply-To: References: Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-YkAbV5QmiXt6Eb8CPES7" X-Mailer: Evolution 3.22.4-1 Mime-Version: 1.0 X-SA-Exim-Connect-IP: 2a02:8011:400e:2:6f00:88c8:c921:d332 X-SA-Exim-Mail-From: ben@decadent.org.uk X-SA-Exim-Scanned: No (on shadbolt.decadent.org.uk); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --=-YkAbV5QmiXt6Eb8CPES7 Content-Type: multipart/mixed; boundary="=-cM6RVI0KA3ms4QfUW2nW" --=-cM6RVI0KA3ms4QfUW2nW Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This is the combined diff for 3.16.40-rc1 relative to 3.16.39. Ben. --=20 Ben Hutchings The most exhausting thing in life is being insincere. - Anne Morrow Lindberg --=-cM6RVI0KA3ms4QfUW2nW Content-Disposition: attachment; filename="linux-3.16.40-rc1.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="linux-3.16.40-rc1.patch"; charset="UTF-8" ZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggOGE1Y2FlMGNhMjgx Li42NTc5MWMwODkxYTkgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJT CkBAIC0xMDA1NywxMiArMTAwNTcsMTEgQEAgRjoJYXJjaC94ODYveGVuLypzd2lvdGxiKgogRjoJ ZHJpdmVycy94ZW4vKnN3aW90bGIqCiAKIFhGUyBGSUxFU1lTVEVNCi1QOglTaWxpY29uIEdyYXBo aWNzIEluYwogTToJRGF2ZSBDaGlubmVyIDxkYXZpZEBmcm9tb3JiaXQuY29tPgotTToJeGZzQG9z cy5zZ2kuY29tCi1MOgl4ZnNAb3NzLnNnaS5jb20KLVc6CWh0dHA6Ly9vc3Muc2dpLmNvbS9wcm9q ZWN0cy94ZnMKLVQ6CWdpdCBnaXQ6Ly9vc3Muc2dpLmNvbS94ZnMveGZzLmdpdAorTToJbGludXgt eGZzQHZnZXIua2VybmVsLm9yZworTDoJbGludXgteGZzQHZnZXIua2VybmVsLm9yZworVzoJaHR0 cDovL3hmcy5vcmcvCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9r ZXJuZWwvZ2l0L2RnYy9saW51eC14ZnMuZ2l0CiBTOglTdXBwb3J0ZWQKIEY6CURvY3VtZW50YXRp b24vZmlsZXN5c3RlbXMveGZzLnR4dAogRjoJZnMveGZzLwpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUg Yi9NYWtlZmlsZQppbmRleCA0NDRkZGI2NjZlZjguLmVjMDA4NTJjODAzZSAxMDA2NDQKLS0tIGEv TWFrZWZpbGUKKysrIGIvTWFrZWZpbGUKQEAgLTEsNyArMSw3IEBACiBWRVJTSU9OID0gMwogUEFU Q0hMRVZFTCA9IDE2Ci1TVUJMRVZFTCA9IDM5Ci1FWFRSQVZFUlNJT04gPQorU1VCTEVWRUwgPSA0 MAorRVhUUkFWRVJTSU9OID0gLXJjMQogTkFNRSA9IE11c2V1bSBvZiBGaXNoaWVnb29kaWVzCiAK ICMgKkRPQ1VNRU5UQVRJT04qCkBAIC00MDcsMTEgKzQwNywxMiBAQCBLQlVJTERfQ0ZMQUdTICAg Oj0gLVdhbGwgLVd1bmRlZiAtV3N0cmljdC1wcm90b3R5cGVzIC1Xbm8tdHJpZ3JhcGhzIFwKIAkJ ICAgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1jb21tb24gXAogCQkgICAtV2Vycm9yLWltcGxp Y2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uIFwKIAkJICAgLVduby1mb3JtYXQtc2VjdXJpdHkgXAot CQkgICAtc3RkPWdudTg5CisJCSAgIC1zdGQ9Z251ODkgJChjYWxsIGNjLW9wdGlvbiwtZm5vLVBJ RSkKKwogCiBLQlVJTERfQUZMQUdTX0tFUk5FTCA6PQogS0JVSUxEX0NGTEFHU19LRVJORUwgOj0K LUtCVUlMRF9BRkxBR1MgICA6PSAtRF9fQVNTRU1CTFlfXworS0JVSUxEX0FGTEFHUyAgIDo9IC1E X19BU1NFTUJMWV9fICQoY2FsbCBjYy1vcHRpb24sLWZuby1QSUUpCiBLQlVJTERfQUZMQUdTX01P RFVMRSAgOj0gLURNT0RVTEUKIEtCVUlMRF9DRkxBR1NfTU9EVUxFICA6PSAtRE1PRFVMRQogS0JV SUxEX0xERkxBR1NfTU9EVUxFIDo9IC1UICQoc3JjdHJlZSkvc2NyaXB0cy9tb2R1bGUtY29tbW9u LmxkcwpkaWZmIC0tZ2l0IGEvYXJjaC9hcmMva2VybmVsL3NpZ25hbC5jIGIvYXJjaC9hcmMva2Vy bmVsL3NpZ25hbC5jCmluZGV4IGEwYzYzZmM0ODQ1Ny4uMDk0M2ZmODRmMjhmIDEwMDY0NAotLS0g YS9hcmNoL2FyYy9rZXJuZWwvc2lnbmFsLmMKKysrIGIvYXJjaC9hcmMva2VybmVsL3NpZ25hbC5j CkBAIC04MCwxMSArODAsMTIgQEAgc3RhdGljIGludCByZXN0b3JlX3Vzcl9yZWdzKHN0cnVjdCBw dF9yZWdzICpyZWdzLCBzdHJ1Y3QgcnRfc2lnZnJhbWUgX191c2VyICpzZikKIAlpbnQgZXJyOwog CiAJZXJyID0gX19jb3B5X2Zyb21fdXNlcigmc2V0LCAmc2YtPnVjLnVjX3NpZ21hc2ssIHNpemVv ZihzZXQpKTsKLQlpZiAoIWVycikKLQkJc2V0X2N1cnJlbnRfYmxvY2tlZCgmc2V0KTsKLQogCWVy ciB8PSBfX2NvcHlfZnJvbV91c2VyKHJlZ3MsICYoc2YtPnVjLnVjX21jb250ZXh0LnJlZ3Muc2Ny YXRjaCksCiAJCQkJc2l6ZW9mKHNmLT51Yy51Y19tY29udGV4dC5yZWdzLnNjcmF0Y2gpKTsKKwlp ZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJc2V0X2N1cnJlbnRfYmxvY2tlZCgmc2V0KTsKIAog CXJldHVybiBlcnI7CiB9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9ib290L2R0cy9leHlub3M0MjEw LXBpbmN0cmwuZHRzaSBiL2FyY2gvYXJtL2Jvb3QvZHRzL2V4eW5vczQyMTAtcGluY3RybC5kdHNp CmluZGV4IGE3YzIxMjg5MTY3NC4uMTYwZDZmMjEzZTM3IDEwMDY0NAotLS0gYS9hcmNoL2FybS9i b290L2R0cy9leHlub3M0MjEwLXBpbmN0cmwuZHRzaQorKysgYi9hcmNoL2FybS9ib290L2R0cy9l eHlub3M0MjEwLXBpbmN0cmwuZHRzaQpAQCAtNjQ3LDcgKzY0Nyw3IEBACiAJCXNkNF9idXM4OiBz ZDQtYnVzLXdpZHRoOCB7CiAJCQlzYW1zdW5nLHBpbnMgPSAiZ3BrMS0zIiwgImdwazEtNCIsICJn cGsxLTUiLCAiZ3BrMS02IjsKIAkJCXNhbXN1bmcscGluLWZ1bmN0aW9uID0gPDM+OwotCQkJc2Ft c3VuZyxwaW4tcHVkID0gPDQ+OworCQkJc2Ftc3VuZyxwaW4tcHVkID0gPDM+OwogCQkJc2Ftc3Vu ZyxwaW4tZHJ2ID0gPDM+OwogCQl9OwogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXB4YS9j b3JnaV9wbS5jIGIvYXJjaC9hcm0vbWFjaC1weGEvY29yZ2lfcG0uYwppbmRleCA3YTM5ZWZjNTA4 NjUuLjVkMDFhZjQ3YWZjMiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1weGEvY29yZ2lfcG0u YworKysgYi9hcmNoL2FybS9tYWNoLXB4YS9jb3JnaV9wbS5jCkBAIC0xMzEsMTYgKzEzMSwxMSBA QCBzdGF0aWMgaW50IGNvcmdpX3Nob3VsZF93YWtldXAodW5zaWduZWQgaW50IHJlc3VtZV9vbl9h bGFybSkKIAlyZXR1cm4gaXNfcmVzdW1lOwogfQogCi1zdGF0aWMgdW5zaWduZWQgbG9uZyBjb3Jn aV9jaGFyZ2VyX3dha2V1cCh2b2lkKQorc3RhdGljIGJvb2wgY29yZ2lfY2hhcmdlcl93YWtldXAo dm9pZCkKIHsKLQl1bnNpZ25lZCBsb25nIHJldDsKLQotCXJldCA9ICghZ3Bpb19nZXRfdmFsdWUo Q09SR0lfR1BJT19BQ19JTikgPDwgR1BJT19iaXQoQ09SR0lfR1BJT19BQ19JTikpCi0JCXwgKCFn cGlvX2dldF92YWx1ZShDT1JHSV9HUElPX0tFWV9JTlQpCi0JCTw8IEdQSU9fYml0KENPUkdJX0dQ SU9fS0VZX0lOVCkpCi0JCXwgKCFncGlvX2dldF92YWx1ZShDT1JHSV9HUElPX1dBS0VVUCkKLQkJ PDwgR1BJT19iaXQoQ09SR0lfR1BJT19XQUtFVVApKTsKLQlyZXR1cm4gcmV0OworCXJldHVybiAh Z3Bpb19nZXRfdmFsdWUoQ09SR0lfR1BJT19BQ19JTikgfHwKKwkJIWdwaW9fZ2V0X3ZhbHVlKENP UkdJX0dQSU9fS0VZX0lOVCkgfHwKKwkJIWdwaW9fZ2V0X3ZhbHVlKENPUkdJX0dQSU9fV0FLRVVQ KTsKIH0KIAogdW5zaWduZWQgbG9uZyBjb3JnaXBtX3JlYWRfZGV2ZGF0YShpbnQgdHlwZSkKZGlm ZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtcHhhL2luY2x1ZGUvbWFjaC9zaGFycHNsX3BtLmggYi9h cmNoL2FybS9tYWNoLXB4YS9pbmNsdWRlL21hY2gvc2hhcnBzbF9wbS5oCmluZGV4IDkwNWJlNjc1 NWYwNC4uZmE3NWI2ZGY4MTM0IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXB4YS9pbmNsdWRl L21hY2gvc2hhcnBzbF9wbS5oCisrKyBiL2FyY2gvYXJtL21hY2gtcHhhL2luY2x1ZGUvbWFjaC9z aGFycHNsX3BtLmgKQEAgLTM0LDcgKzM0LDcgQEAgc3RydWN0IHNoYXJwc2xfY2hhcmdlcl9tYWNo aW5mbyB7CiAjZGVmaW5lIFNIQVJQU0xfU1RBVFVTX0xPQ0sgICAgIDUKICNkZWZpbmUgU0hBUlBT TF9TVEFUVVNfQ0hSR0ZVTEwgNgogI2RlZmluZSBTSEFSUFNMX1NUQVRVU19GQVRBTCAgICA3Ci0J dW5zaWduZWQgbG9uZyAoKmNoYXJnZXJfd2FrZXVwKSh2b2lkKTsKKwlib29sICgqY2hhcmdlcl93 YWtldXApKHZvaWQpOwogCWludCAoKnNob3VsZF93YWtldXApKHVuc2lnbmVkIGludCByZXN1bWVf b25fYWxhcm0pOwogCXZvaWQgKCpiYWNrbGlnaHRfbGltaXQpKGludCk7CiAJaW50ICgqYmFja2xp Z2h0X2dldF9zdGF0dXMpICh2b2lkKTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtcHhhL3No YXJwc2xfcG0uYyBiL2FyY2gvYXJtL21hY2gtcHhhL3NoYXJwc2xfcG0uYwppbmRleCAwNTFhNjU1 NWNiZjkuLmI4YjMzNzlkMzJjYiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1weGEvc2hhcnBz bF9wbS5jCisrKyBiL2FyY2gvYXJtL21hY2gtcHhhL3NoYXJwc2xfcG0uYwpAQCAtNzQ0LDcgKzc0 NCw3IEBAIHN0YXRpYyBpbnQgc2hhcnBzbF9vZmZfY2hhcmdlX2JhdHRlcnkodm9pZCkKIAkJdGlt ZSA9IFJDTlI7CiAJCXdoaWxlICgxKSB7CiAJCQkvKiBDaGVjayBpZiBhbnkgd2FrZXVwIGV2ZW50 IGhhZCBvY2N1cnJlZCAqLwotCQkJaWYgKHNoYXJwc2xfcG0ubWFjaGluZm8tPmNoYXJnZXJfd2Fr ZXVwKCkgIT0gMCkKKwkJCWlmIChzaGFycHNsX3BtLm1hY2hpbmZvLT5jaGFyZ2VyX3dha2V1cCgp KQogCQkJCXJldHVybiAwOwogCQkJLyogQ2hlY2sgZm9yIHRpbWVvdXQgKi8KIAkJCWlmICgoUkNO UiAtIHRpbWUpID4gU0hBUlBTTF9XQUlUX0NPX1RJTUUpCmRpZmYgLS1naXQgYS9hcmNoL2FybS9t YWNoLXB4YS9zcGl0el9wbS5jIGIvYXJjaC9hcm0vbWFjaC1weGEvc3BpdHpfcG0uYwppbmRleCBl MTkxZjk5OTZiMjYuLjgyNTUzOWI2MzUzYiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1weGEv c3BpdHpfcG0uYworKysgYi9hcmNoL2FybS9tYWNoLXB4YS9zcGl0el9wbS5jCkBAIC0xNjUsMTMg KzE2NSwxMCBAQCBzdGF0aWMgaW50IHNwaXR6X3Nob3VsZF93YWtldXAodW5zaWduZWQgaW50IHJl c3VtZV9vbl9hbGFybSkKIAlyZXR1cm4gaXNfcmVzdW1lOwogfQogCi1zdGF0aWMgdW5zaWduZWQg bG9uZyBzcGl0el9jaGFyZ2VyX3dha2V1cCh2b2lkKQorc3RhdGljIGJvb2wgc3BpdHpfY2hhcmdl cl93YWtldXAodm9pZCkKIHsKLQl1bnNpZ25lZCBsb25nIHJldDsKLQlyZXQgPSAoKCFncGlvX2dl dF92YWx1ZShTUElUWl9HUElPX0tFWV9JTlQpCi0JCTw8IEdQSU9fYml0KFNQSVRaX0dQSU9fS0VZ X0lOVCkpCi0JCXwgZ3Bpb19nZXRfdmFsdWUoU1BJVFpfR1BJT19TWU5DKSk7Ci0JcmV0dXJuIHJl dDsKKwlyZXR1cm4gIWdwaW9fZ2V0X3ZhbHVlKFNQSVRaX0dQSU9fS0VZX0lOVCkgfHwKKwkJZ3Bp b19nZXRfdmFsdWUoU1BJVFpfR1BJT19TWU5DKTsKIH0KIAogdW5zaWduZWQgbG9uZyBzcGl0enBt X3JlYWRfZGV2ZGF0YShpbnQgdHlwZSkKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9h c20va3ZtX2VtdWxhdGUuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2VtdWxhdGUuaApp bmRleCBlZWFiNzFhODg0Y2IuLjJkOTlhNThmN2JmOCAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9p bmNsdWRlL2FzbS9rdm1fZW11bGF0ZS5oCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3Zt X2VtdWxhdGUuaApAQCAtMTM1LDExICsxMzUsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wga3ZtX3Zj cHVfZGFidF9pc3ZhbGlkKGNvbnN0IHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAlyZXR1cm4gISEo a3ZtX3ZjcHVfZ2V0X2hzcih2Y3B1KSAmIEVTUl9FTDJfSVNWKTsKIH0KIAotc3RhdGljIGlubGlu ZSBib29sIGt2bV92Y3B1X2RhYnRfaXN3cml0ZShjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUp Ci17Ci0JcmV0dXJuICEhKGt2bV92Y3B1X2dldF9oc3IodmNwdSkgJiBFU1JfRUwyX1dOUik7Ci19 Ci0KIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fdmNwdV9kYWJ0X2lzc2V4dChjb25zdCBzdHJ1Y3Qg a3ZtX3ZjcHUgKnZjcHUpCiB7CiAJcmV0dXJuICEhKGt2bV92Y3B1X2dldF9oc3IodmNwdSkgJiBF U1JfRUwyX1NTRSk7CkBAIC0xNjAsNiArMTU1LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1f dmNwdV9kYWJ0X2lzczF0dyhjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJcmV0dXJuICEh KGt2bV92Y3B1X2dldF9oc3IodmNwdSkgJiBFU1JfRUwyX1MxUFRXKTsKIH0KIAorc3RhdGljIGlu bGluZSBib29sIGt2bV92Y3B1X2RhYnRfaXN3cml0ZShjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUpCit7CisJcmV0dXJuICEhKGt2bV92Y3B1X2dldF9oc3IodmNwdSkgJiBFU1JfRUwyX1dOUikg fHwKKwkJa3ZtX3ZjcHVfZGFidF9pc3MxdHcodmNwdSk7IC8qIEFGL0RCTSB1cGRhdGUgKi8KK30K Kwogc3RhdGljIGlubGluZSBpbnQga3ZtX3ZjcHVfZGFidF9nZXRfYXMoY29uc3Qgc3RydWN0IGt2 bV92Y3B1ICp2Y3B1KQogewogCXJldHVybiAxIDw8ICgoa3ZtX3ZjcHVfZ2V0X2hzcih2Y3B1KSAm IEVTUl9FTDJfU0FTKSA+PiBFU1JfRUwyX1NBU19TSElGVCk7CmRpZmYgLS1naXQgYS9hcmNoL2Fy bTY0L2tlcm5lbC9kZWJ1Zy1tb25pdG9ycy5jIGIvYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9u aXRvcnMuYwppbmRleCBhMmRiNmYyMTliYmUuLjEwOGRiYmVkNTMyMiAxMDA2NDQKLS0tIGEvYXJj aC9hcm02NC9rZXJuZWwvZGVidWctbW9uaXRvcnMuYworKysgYi9hcmNoL2FybTY0L2tlcm5lbC9k ZWJ1Zy1tb25pdG9ycy5jCkBAIC00MjcsOCArNDI3LDEwIEBAIGludCBrZXJuZWxfYWN0aXZlX3Np bmdsZV9zdGVwKHZvaWQpCiAvKiBwdHJhY2UgQVBJICovCiB2b2lkIHVzZXJfZW5hYmxlX3Npbmds ZV9zdGVwKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykKIHsKLQlzZXRfdGlfdGhyZWFkX2ZsYWco dGFza190aHJlYWRfaW5mbyh0YXNrKSwgVElGX1NJTkdMRVNURVApOwotCXNldF9yZWdzX3Nwc3Jf c3ModGFza19wdF9yZWdzKHRhc2spKTsKKwlzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpID0gdGFza190 aHJlYWRfaW5mbyh0YXNrKTsKKworCWlmICghdGVzdF9hbmRfc2V0X3RpX3RocmVhZF9mbGFnKHRp LCBUSUZfU0lOR0xFU1RFUCkpCisJCXNldF9yZWdzX3Nwc3Jfc3ModGFza19wdF9yZWdzKHRhc2sp KTsKIH0KIAogdm9pZCB1c2VyX2Rpc2FibGVfc2luZ2xlX3N0ZXAoc3RydWN0IHRhc2tfc3RydWN0 ICp0YXNrKQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvaGVhZC5TIGIvYXJjaC9hcm02 NC9rZXJuZWwvaGVhZC5TCmluZGV4IGU2NzM5ZmUxZWZmYy4uY2I4M2MxYWFiYWU4IDEwMDY0NAot LS0gYS9hcmNoL2FybTY0L2tlcm5lbC9oZWFkLlMKKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvaGVh ZC5TCkBAIC0zMjIsOCArMzIyLDkgQEAgQ1BVX0xFKAltb3ZrCXgwLCAjMHgzMGQwLCBsc2wgIzE2 CSkJLy8gQ2xlYXIgRUUgYW5kIEUwRSBvbiBMRSBzeXN0ZW1zCiAJYi5sdAk0ZgkJCQkvLyBTa2lw IGlmIG5vIFBNVSBwcmVzZW50CiAJbXJzCXgwLCBwbWNyX2VsMAkJCS8vIERpc2FibGUgZGVidWcg YWNjZXNzIHRyYXBzCiAJdWJmeAl4MCwgeDAsICMxMSwgIzUJCQkvLyB0byBFTDIgYW5kIGFsbG93 IGFjY2VzcyB0bwotCW1zcgltZGNyX2VsMiwgeDAJCQkvLyBhbGwgUE1VIGNvdW50ZXJzIGZyb20g RUwxCiA0OgorCWNzZWwJeDAsIHh6ciwgeDAsIGx0CQkJLy8gYWxsIFBNVSBjb3VudGVycyBmcm9t IEVMMQorCW1zcgltZGNyX2VsMiwgeDAJCQkvLyAoaWYgdGhleSBleGlzdCkKIAogCS8qIFN0YWdl LTIgdHJhbnNsYXRpb24gKi8KIAltc3IJdnR0YnJfZWwyLCB4enIKZGlmZiAtLWdpdCBhL2FyY2gv bTY4ay9pbmNsdWRlL2FzbS9kZWxheS5oIGIvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2RlbGF5LmgK aW5kZXggZDI4ZmE4ZmUyNmZlLi5jNTk4ZDg0N2Q1NmIgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9p bmNsdWRlL2FzbS9kZWxheS5oCisrKyBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9kZWxheS5oCkBA IC0xMTQsNiArMTE0LDYgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fdWRlbGF5KHVuc2lnbmVkIGxv bmcgdXNlY3MpCiAgKi8KICNkZWZpbmUJSFpTQ0FMRQkJKDI2ODQzNTQ1NiAvICgxMDAwMDAwIC8g SFopKQogCi0jZGVmaW5lIG5kZWxheShuKSBfX2RlbGF5KERJVl9ST1VORF9VUCgobikgKiAoKCgo SFpTQ0FMRSkgPj4gMTEpICogKGxvb3BzX3Blcl9qaWZmeSA+PiAxMSkpID4+IDYpLCAxMDAwKSk7 CisjZGVmaW5lIG5kZWxheShuKSBfX2RlbGF5KERJVl9ST1VORF9VUCgobikgKiAoKCgoSFpTQ0FM RSkgPj4gMTEpICogKGxvb3BzX3Blcl9qaWZmeSA+PiAxMSkpID4+IDYpLCAxMDAwKSkKIAogI2Vu ZGlmIC8qIGRlZmluZWQoX002OEtfREVMQVlfSCkgKi8KZGlmZiAtLWdpdCBhL2FyY2gvbWV0YWcv aW5jbHVkZS9hc20vYXRvbWljLmggYi9hcmNoL21ldGFnL2luY2x1ZGUvYXNtL2F0b21pYy5oCmlu ZGV4IDQ3MGUzNjVmMDRlYS4uOGZmMGE3MDg2NWY2IDEwMDY0NAotLS0gYS9hcmNoL21ldGFnL2lu Y2x1ZGUvYXNtL2F0b21pYy5oCisrKyBiL2FyY2gvbWV0YWcvaW5jbHVkZS9hc20vYXRvbWljLmgK QEAgLTM5LDExICszOSwxMCBAQAogI2RlZmluZSBhdG9taWNfZGVjKHYpIGF0b21pY19zdWIoMSwg KHYpKQogCiAjZGVmaW5lIGF0b21pY19pbmNfbm90X3plcm8odikgYXRvbWljX2FkZF91bmxlc3Mo KHYpLCAxLCAwKQorI2RlZmluZSBhdG9taWNfZGVjX2lmX3Bvc2l0aXZlKHYpICAgICAgIGF0b21p Y19zdWJfaWZfcG9zaXRpdmUoMSwgdikKIAogI2VuZGlmCiAKLSNkZWZpbmUgYXRvbWljX2RlY19p Zl9wb3NpdGl2ZSh2KSAgICAgICBhdG9taWNfc3ViX2lmX3Bvc2l0aXZlKDEsIHYpCi0KICNpbmNs dWRlIDxhc20tZ2VuZXJpYy9hdG9taWM2NC5oPgogCiAjZW5kaWYgLyogX19BU01fTUVUQUdfQVRP TUlDX0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9jYXZpdW0tb2N0ZW9uL3NldHVwLmMgYi9h cmNoL21pcHMvY2F2aXVtLW9jdGVvbi9zZXR1cC5jCmluZGV4IGM5ZDljNjI3ZTI0NC4uMDM5MTU1 N2NlNDUyIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9zZXR1cC5jCisrKyBi L2FyY2gvbWlwcy9jYXZpdW0tb2N0ZW9uL3NldHVwLmMKQEAgLTI0Nyw2ICsyNDcsMTcgQEAgc3Rh dGljIHZvaWQgb2N0ZW9uX2NyYXNoX3NodXRkb3duKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogCWRl ZmF1bHRfbWFjaGluZV9jcmFzaF9zaHV0ZG93bihyZWdzKTsKIH0KIAorI2lmZGVmIENPTkZJR19T TVAKK3ZvaWQgb2N0ZW9uX2NyYXNoX3NtcF9zZW5kX3N0b3Aodm9pZCkKK3sKKwlpbnQgY3B1Owor CisJLyogZGlzYWJsZSB3YXRjaGRvZ3MgKi8KKwlmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkKKwkJ Y3ZteF93cml0ZV9jc3IoQ1ZNWF9DSVVfV0RPR1goY3B1X2xvZ2ljYWxfbWFwKGNwdSkpLCAwKTsK K30KKyNlbmRpZgorCiAjZW5kaWYgLyogQ09ORklHX0tFWEVDICovCiAKICNpZmRlZiBDT05GSUdf Q0FWSVVNX1JFU0VSVkUzMgpAQCAtODI3LDYgKzgzOCw5IEBAIHZvaWQgX19pbml0IHByb21faW5p dCh2b2lkKQogCV9tYWNoaW5lX2tleGVjX3NodXRkb3duID0gb2N0ZW9uX3NodXRkb3duOwogCV9t YWNoaW5lX2NyYXNoX3NodXRkb3duID0gb2N0ZW9uX2NyYXNoX3NodXRkb3duOwogCV9tYWNoaW5l X2tleGVjX3ByZXBhcmUgPSBvY3Rlb25fa2V4ZWNfcHJlcGFyZTsKKyNpZmRlZiBDT05GSUdfU01Q CisJX2NyYXNoX3NtcF9zZW5kX3N0b3AgPSBvY3Rlb25fY3Jhc2hfc21wX3NlbmRfc3RvcDsKKyNl bmRpZgogI2VuZGlmCiAKIAlvY3Rlb25fdXNlcl9pb19pbml0KCk7CmRpZmYgLS1naXQgYS9hcmNo L21pcHMvaW5jbHVkZS9hc20va2V4ZWMuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9rZXhlYy5o CmluZGV4IGVlMjVlYmJmMmEyOC4uNDkzYTNjYzdjMzlhIDEwMDY0NAotLS0gYS9hcmNoL21pcHMv aW5jbHVkZS9hc20va2V4ZWMuaAorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20va2V4ZWMuaApA QCAtNDUsNiArNDUsNyBAQCBleHRlcm4gY29uc3QgdW5zaWduZWQgY2hhciBrZXhlY19zbXBfd2Fp dFtdOwogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc2Vjb25kYXJ5X2tleGVjX2FyZ3NbNF07CiBleHRl cm4gdm9pZCAoKnJlbG9jYXRlZF9rZXhlY19zbXBfd2FpdCkgKHZvaWQgKik7CiBleHRlcm4gYXRv bWljX3Qga2V4ZWNfcmVhZHlfdG9fcmVib290OworZXh0ZXJuIHZvaWQgKCpfY3Jhc2hfc21wX3Nl bmRfc3RvcCkodm9pZCk7CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9hcmNoL21pcHMv aW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9rdm1faG9zdC5o CmluZGV4IDViZGRiYzYzZmMzYi4uZjhjZGMyNzQxNzNhIDEwMDY0NAotLS0gYS9hcmNoL21pcHMv aW5jbHVkZS9hc20va3ZtX2hvc3QuaAorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20va3ZtX2hv c3QuaApAQCAtNDAzLDcgKzQwMywxMCBAQCBzdHJ1Y3Qga3ZtX3ZjcHVfYXJjaCB7CiAJLyogSG9z dCBLU0VHMCBhZGRyZXNzIG9mIHRoZSBFSS9ESSBvZmZzZXQgKi8KIAl2b2lkICprc2VnMF9jb21t cGFnZTsKIAotCXUzMiBpb19ncHI7CQkvKiBHUFIgdXNlZCBhcyBJTyBzb3VyY2UvdGFyZ2V0ICov CisJLyogUmVzdW1lIFBDIGFmdGVyIE1NSU8gY29tcGxldGlvbiAqLworCXVuc2lnbmVkIGxvbmcg aW9fcGM7CisJLyogR1BSIHVzZWQgYXMgSU8gc291cmNlL3RhcmdldCAqLworCXUzMiBpb19ncHI7 CiAKIAlzdHJ1Y3QgaHJ0aW1lciBjb21wYXJlY291bnRfdGltZXI7CiAJLyogQ291bnQgdGltZXIg Y29udHJvbCBLVk0gcmVnaXN0ZXIgKi8KQEAgLTQyNSw4ICs0MjgsNiBAQCBzdHJ1Y3Qga3ZtX3Zj cHVfYXJjaCB7CiAJLyogQml0bWFzayBvZiBwZW5kaW5nIGV4Y2VwdGlvbnMgdG8gYmUgY2xlYXJl ZCAqLwogCXVuc2lnbmVkIGxvbmcgcGVuZGluZ19leGNlcHRpb25zX2NscjsKIAotCXVuc2lnbmVk IGxvbmcgcGVuZGluZ19sb2FkX2NhdXNlOwotCiAJLyogU2F2ZS9SZXN0b3JlIHRoZSBlbnRyeWhp IHJlZ2lzdGVyIHdoZW4gYXJlIGFyZSBwcmVlbXB0ZWQvc2NoZWR1bGVkIGJhY2sgaW4gKi8KIAl1 bnNpZ25lZCBsb25nIHByZWVtcHRfZW50cnloaTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2lu Y2x1ZGUvYXNtL3B0cmFjZS5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3B0cmFjZS5oCmluZGV4 IGMzMDFmYTliMTM5Zi4uMzZlYzYyNmI0MjlhIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVk ZS9hc20vcHRyYWNlLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3B0cmFjZS5oCkBAIC03 MCw3ICs3MCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGlzX3N5c2NhbGxfc3VjY2VzcyhzdHJ1Y3Qg cHRfcmVncyAqcmVncykKIAogc3RhdGljIGlubGluZSBsb25nIHJlZ3NfcmV0dXJuX3ZhbHVlKHN0 cnVjdCBwdF9yZWdzICpyZWdzKQogewotCWlmIChpc19zeXNjYWxsX3N1Y2Nlc3MocmVncykpCisJ aWYgKGlzX3N5c2NhbGxfc3VjY2VzcyhyZWdzKSB8fCAhdXNlcl9tb2RlKHJlZ3MpKQogCQlyZXR1 cm4gcmVncy0+cmVnc1syXTsKIAllbHNlCiAJCXJldHVybiAtcmVncy0+cmVnc1syXTsKZGlmZiAt LWdpdCBhL2FyY2gvbWlwcy9rZXJuZWwvY3Jhc2guYyBiL2FyY2gvbWlwcy9rZXJuZWwvY3Jhc2gu YwppbmRleCBkMjEyNjQ2ODFlOTcuLjViNTI3NWY4Y2MxZiAxMDA2NDQKLS0tIGEvYXJjaC9taXBz L2tlcm5lbC9jcmFzaC5jCisrKyBiL2FyY2gvbWlwcy9rZXJuZWwvY3Jhc2guYwpAQCAtMzcsOSAr MzcsMTQgQEAgc3RhdGljIHZvaWQgY3Jhc2hfc2h1dGRvd25fc2Vjb25kYXJ5KHZvaWQgKmlnbm9y ZSkKIAogc3RhdGljIHZvaWQgY3Jhc2hfa2V4ZWNfcHJlcGFyZV9jcHVzKHZvaWQpCiB7CisJc3Rh dGljIGludCBjcHVzX3N0b3BwZWQ7CiAJdW5zaWduZWQgaW50IG1zZWNzOworCXVuc2lnbmVkIGlu dCBuY3B1czsKIAotCXVuc2lnbmVkIGludCBuY3B1cyA9IG51bV9vbmxpbmVfY3B1cygpIC0gMTsv KiBFeGNsdWRpbmcgdGhlIHBhbmljIGNwdSAqLworCWlmIChjcHVzX3N0b3BwZWQpCisJCXJldHVy bjsKKworCW5jcHVzID0gbnVtX29ubGluZV9jcHVzKCkgLSAxOy8qIEV4Y2x1ZGluZyB0aGUgcGFu aWMgY3B1ICovCiAKIAlkdW1wX3NlbmRfaXBpKGNyYXNoX3NodXRkb3duX3NlY29uZGFyeSk7CiAJ c21wX3dtYigpOwpAQCAtNTQsNiArNTksMTcgQEAgc3RhdGljIHZvaWQgY3Jhc2hfa2V4ZWNfcHJl cGFyZV9jcHVzKHZvaWQpCiAJCWNwdV9yZWxheCgpOwogCQltZGVsYXkoMSk7CiAJfQorCisJY3B1 c19zdG9wcGVkID0gMTsKK30KKworLyogT3ZlcnJpZGUgdGhlIHdlYWsgZnVuY3Rpb24gaW4ga2Vy bmVsL3BhbmljLmMgKi8KK3ZvaWQgY3Jhc2hfc21wX3NlbmRfc3RvcCh2b2lkKQoreworCWlmIChf Y3Jhc2hfc21wX3NlbmRfc3RvcCkKKwkJX2NyYXNoX3NtcF9zZW5kX3N0b3AoKTsKKworCWNyYXNo X2tleGVjX3ByZXBhcmVfY3B1cygpOwogfQogCiAjZWxzZSAvKiAhZGVmaW5lZChDT05GSUdfU01Q KSAgKi8KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9rZXJuZWwvbWFjaGluZV9rZXhlYy5jIGIvYXJj aC9taXBzL2tlcm5lbC9tYWNoaW5lX2tleGVjLmMKaW5kZXggOTkyZTE4NDc0ZGE1Li40ZjlmMjI4 MDllNzcgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9rZXJuZWwvbWFjaGluZV9rZXhlYy5jCisrKyBi L2FyY2gvbWlwcy9rZXJuZWwvbWFjaGluZV9rZXhlYy5jCkBAIC0yNSw2ICsyNSw3IEBAIHZvaWQg KCpfbWFjaGluZV9jcmFzaF9zaHV0ZG93bikoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpID0gTlVMTDsK ICNpZmRlZiBDT05GSUdfU01QCiB2b2lkICgqcmVsb2NhdGVkX2tleGVjX3NtcF93YWl0KSAodm9p ZCAqKTsKIGF0b21pY190IGtleGVjX3JlYWR5X3RvX3JlYm9vdCA9IEFUT01JQ19JTklUKDApOwor dm9pZCAoKl9jcmFzaF9zbXBfc2VuZF9zdG9wKSh2b2lkKSA9IE5VTEw7CiAjZW5kaWYKIAogaW50 CmRpZmYgLS1naXQgYS9hcmNoL21pcHMva3ZtL2t2bV9taXBzX2VtdWwuYyBiL2FyY2gvbWlwcy9r dm0va3ZtX21pcHNfZW11bC5jCmluZGV4IGJhYzJiYmE0MWYzOC4uM2EwY2NkYzBkZmFjIDEwMDY0 NAotLS0gYS9hcmNoL21pcHMva3ZtL2t2bV9taXBzX2VtdWwuYworKysgYi9hcmNoL21pcHMva3Zt L2t2bV9taXBzX2VtdWwuYwpAQCAtNzYxLDE1ICs3NjEsMTUgQEAgZW51bSBlbXVsYXRpb25fcmVz dWx0IGt2bV9taXBzX2VtdWxfZXJldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJc3RydWN0IG1p cHNfY29wcm9jICpjb3AwID0gdmNwdS0+YXJjaC5jb3AwOwogCWVudW0gZW11bGF0aW9uX3Jlc3Vs dCBlciA9IEVNVUxBVEVfRE9ORTsKIAotCWlmIChrdm1fcmVhZF9jMF9ndWVzdF9zdGF0dXMoY29w MCkgJiBTVDBfRVhMKSB7CisJaWYgKGt2bV9yZWFkX2MwX2d1ZXN0X3N0YXR1cyhjb3AwKSAmIFNU MF9FUkwpIHsKKwkJa3ZtX2NsZWFyX2MwX2d1ZXN0X3N0YXR1cyhjb3AwLCBTVDBfRVJMKTsKKwkJ dmNwdS0+YXJjaC5wYyA9IGt2bV9yZWFkX2MwX2d1ZXN0X2Vycm9yZXBjKGNvcDApOworCX0gZWxz ZSBpZiAoa3ZtX3JlYWRfYzBfZ3Vlc3Rfc3RhdHVzKGNvcDApICYgU1QwX0VYTCkgewogCQlrdm1f ZGVidWcoIlslI2x4XSBFUkVUIHRvICUjbHhcbiIsIHZjcHUtPmFyY2gucGMsCiAJCQkgIGt2bV9y ZWFkX2MwX2d1ZXN0X2VwYyhjb3AwKSk7CiAJCWt2bV9jbGVhcl9jMF9ndWVzdF9zdGF0dXMoY29w MCwgU1QwX0VYTCk7CiAJCXZjcHUtPmFyY2gucGMgPSBrdm1fcmVhZF9jMF9ndWVzdF9lcGMoY29w MCk7CiAKLQl9IGVsc2UgaWYgKGt2bV9yZWFkX2MwX2d1ZXN0X3N0YXR1cyhjb3AwKSAmIFNUMF9F UkwpIHsKLQkJa3ZtX2NsZWFyX2MwX2d1ZXN0X3N0YXR1cyhjb3AwLCBTVDBfRVJMKTsKLQkJdmNw dS0+YXJjaC5wYyA9IGt2bV9yZWFkX2MwX2d1ZXN0X2Vycm9yZXBjKGNvcDApOwogCX0gZWxzZSB7 CiAJCXByaW50aygiWyUjbHhdIEVSRVQgd2hlbiBNSVBTX1NSX0VYTHxNSVBTX1NSX0VSTCA9PSAw XG4iLAogCQkgICAgICAgdmNwdS0+YXJjaC5wYyk7CkBAIC0xMzI4LDYgKzEzMjgsNyBAQCBrdm1f bWlwc19lbXVsYXRlX2xvYWQodWludDMyX3QgaW5zdCwgdWludDMyX3QgY2F1c2UsCiAJCSAgICAg IHN0cnVjdCBrdm1fcnVuICpydW4sIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKIAllbnVtIGVt dWxhdGlvbl9yZXN1bHQgZXIgPSBFTVVMQVRFX0RPX01NSU87CisJdW5zaWduZWQgbG9uZyBjdXJy X3BjOwogCWludDMyX3Qgb3AsIGJhc2UsIHJ0LCBvZmZzZXQ7CiAJdWludDMyX3QgYnl0ZXM7CiAK QEAgLTEzMzYsNyArMTMzNywxOCBAQCBrdm1fbWlwc19lbXVsYXRlX2xvYWQodWludDMyX3QgaW5z dCwgdWludDMyX3QgY2F1c2UsCiAJb2Zmc2V0ID0gaW5zdCAmIDB4ZmZmZjsKIAlvcCA9IChpbnN0 ID4+IDI2KSAmIDB4M2Y7CiAKLQl2Y3B1LT5hcmNoLnBlbmRpbmdfbG9hZF9jYXVzZSA9IGNhdXNl OworCS8qCisJICogRmluZCB0aGUgcmVzdW1lIFBDIG5vdyB3aGlsZSB3ZSBoYXZlIHNhZmUgYW5k IGVhc3kgYWNjZXNzIHRvIHRoZQorCSAqIHByaW9yIGJyYW5jaCBpbnN0cnVjdGlvbiwgYW5kIHNh dmUgaXQgZm9yCisJICoga3ZtX21pcHNfY29tcGxldGVfbW1pb19sb2FkKCkgdG8gcmVzdG9yZSBs YXRlci4KKwkgKi8KKwljdXJyX3BjID0gdmNwdS0+YXJjaC5wYzsKKwllciA9IHVwZGF0ZV9wYyh2 Y3B1LCBjYXVzZSk7CisJaWYgKGVyID09IEVNVUxBVEVfRkFJTCkKKwkJcmV0dXJuIGVyOworCXZj cHUtPmFyY2guaW9fcGMgPSB2Y3B1LT5hcmNoLnBjOworCXZjcHUtPmFyY2gucGMgPSBjdXJyX3Bj OworCiAJdmNwdS0+YXJjaC5pb19ncHIgPSBydDsKIAogCXN3aXRjaCAob3ApIHsKQEAgLTIxNzIs NyArMjE4NCw2IEBAIGt2bV9taXBzX2NvbXBsZXRlX21taW9fbG9hZChzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4pCiB7CiAJdW5zaWduZWQgbG9uZyAqZ3ByID0gJnZj cHUtPmFyY2guZ3Byc1t2Y3B1LT5hcmNoLmlvX2dwcl07CiAJZW51bSBlbXVsYXRpb25fcmVzdWx0 IGVyID0gRU1VTEFURV9ET05FOwotCXVuc2lnbmVkIGxvbmcgY3Vycl9wYzsKIAogCWlmIChydW4t Pm1taW8ubGVuID4gc2l6ZW9mKCpncHIpKSB7CiAJCXByaW50aygiQmFkIE1NSU8gbGVuZ3RoOiAl ZCIsIHJ1bi0+bW1pby5sZW4pOwpAQCAtMjE4MCwxNCArMjE5MSw4IEBAIGt2bV9taXBzX2NvbXBs ZXRlX21taW9fbG9hZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4p CiAJCWdvdG8gZG9uZTsKIAl9CiAKLQkvKgotCSAqIFVwZGF0ZSBQQyBhbmQgaG9sZCBvbnRvIGN1 cnJlbnQgUEMgaW4gY2FzZSB0aGVyZSBpcwotCSAqIGFuIGVycm9yIGFuZCB3ZSB3YW50IHRvIHJv bGxiYWNrIHRoZSBQQwotCSAqLwotCWN1cnJfcGMgPSB2Y3B1LT5hcmNoLnBjOwotCWVyID0gdXBk YXRlX3BjKHZjcHUsIHZjcHUtPmFyY2gucGVuZGluZ19sb2FkX2NhdXNlKTsKLQlpZiAoZXIgPT0g RU1VTEFURV9GQUlMKQotCQlyZXR1cm4gZXI7CisJLyogUmVzdG9yZSBzYXZlZCByZXN1bWUgUEMg Ki8KKwl2Y3B1LT5hcmNoLnBjID0gdmNwdS0+YXJjaC5pb19wYzsKIAogCXN3aXRjaCAocnVuLT5t bWlvLmxlbikgewogCWNhc2UgNDoKQEAgLTIyMDksMTIgKzIyMTQsNiBAQCBrdm1fbWlwc19jb21w bGV0ZV9tbWlvX2xvYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVu KQogCQlicmVhazsKIAl9CiAKLQlpZiAodmNwdS0+YXJjaC5wZW5kaW5nX2xvYWRfY2F1c2UgJiBD QVVTRUZfQkQpCi0JCWt2bV9kZWJ1ZwotCQkgICAgKCJbJSNseF0gQ29tcGxldGluZyAlZCBieXRl IEJEIExvYWQgdG8gZ3ByICVkICgweCUwOGx4KSB0eXBlICVkXG4iLAotCQkgICAgIHZjcHUtPmFy Y2gucGMsIHJ1bi0+bW1pby5sZW4sIHZjcHUtPmFyY2guaW9fZ3ByLCAqZ3ByLAotCQkgICAgIHZj cHUtPm1taW9fbmVlZGVkKTsKLQogZG9uZToKIAlyZXR1cm4gZXI7CiB9CmRpZmYgLS1naXQgYS9h cmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmggYi9hcmNoL3BhcmlzYy9pbmNsdWRlL2Fz bS9wZ3RhYmxlLmgKaW5kZXggMjJiODlkMWVkYmE3Li5iNjc2MmRmYmU0ZmUgMTAwNjQ0Ci0tLSBh L2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL3BndGFibGUuaAorKysgYi9hcmNoL3BhcmlzYy9pbmNs dWRlL2FzbS9wZ3RhYmxlLmgKQEAgLTQ4LDggKzQ4LDggQEAgZXh0ZXJuIHZvaWQgcHVyZ2VfdGxi X2VudHJpZXMoc3RydWN0IG1tX3N0cnVjdCAqLCB1bnNpZ25lZCBsb25nKTsKIAlkbyB7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIAkJdW5zaWdu ZWQgbG9uZyBmbGFnczsJCQkJXAogCQlzcGluX2xvY2tfaXJxc2F2ZSgmcGFfZGJpdF9sb2NrLCBm bGFncyk7CVwKLQkJc2V0X3B0ZShwdGVwLCBwdGV2YWwpOyAgICAgICAgICAgICAgICAgICAgICAg ICAgXAogCQlwdXJnZV90bGJfZW50cmllcyhtbSwgYWRkcik7ICAgICAgICAgICAgICAgICAgICBc CisJCXNldF9wdGUocHRlcCwgcHRldmFsKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIAkJ c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcGFfZGJpdF9sb2NrLCBmbGFncyk7CVwKIAl9IHdoaWxl ICgwKQogCkBAIC00NTIsOCArNDUyLDggQEAgc3RhdGljIGlubGluZSBpbnQgcHRlcF90ZXN0X2Fu ZF9jbGVhcl95b3VuZyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQKIAkJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmcGFfZGJpdF9sb2NrLCBmbGFncyk7CiAJCXJldHVybiAwOwog CX0KLQlzZXRfcHRlKHB0ZXAsIHB0ZV9ta29sZChwdGUpKTsKIAlwdXJnZV90bGJfZW50cmllcyh2 bWEtPnZtX21tLCBhZGRyKTsKKwlzZXRfcHRlKHB0ZXAsIHB0ZV9ta29sZChwdGUpKTsKIAlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZwYV9kYml0X2xvY2ssIGZsYWdzKTsKIAlyZXR1cm4gMTsKIH0K QEAgLTQ2Niw4ICs0NjYsOCBAQCBzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZXBfZ2V0X2FuZF9jbGVh cihzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLAogCiAJc3Bpbl9sb2Nr X2lycXNhdmUoJnBhX2RiaXRfbG9jaywgZmxhZ3MpOwogCW9sZF9wdGUgPSAqcHRlcDsKLQlwdGVf Y2xlYXIobW0sYWRkcixwdGVwKTsKIAlwdXJnZV90bGJfZW50cmllcyhtbSwgYWRkcik7CisJcHRl X2NsZWFyKG1tLGFkZHIscHRlcCk7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcGFfZGJpdF9s b2NrLCBmbGFncyk7CiAKIAlyZXR1cm4gb2xkX3B0ZTsKQEAgLTQ3Nyw4ICs0NzcsOCBAQCBzdGF0 aWMgaW5saW5lIHZvaWQgcHRlcF9zZXRfd3Jwcm90ZWN0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1 bnNpZ25lZCBsb25nIGFkZHIsCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlzcGluX2xvY2tf aXJxc2F2ZSgmcGFfZGJpdF9sb2NrLCBmbGFncyk7Ci0Jc2V0X3B0ZShwdGVwLCBwdGVfd3Jwcm90 ZWN0KCpwdGVwKSk7CiAJcHVyZ2VfdGxiX2VudHJpZXMobW0sIGFkZHIpOworCXNldF9wdGUocHRl cCwgcHRlX3dycHJvdGVjdCgqcHRlcCkpOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBhX2Ri aXRfbG9jaywgZmxhZ3MpOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9rZXJuZWwvcGFj YWNoZS5TIGIvYXJjaC9wYXJpc2Mva2VybmVsL3BhY2FjaGUuUwppbmRleCBiNzQzYTgwZWFiYTAu LmE0NzYxYjc3MjQwNiAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2Mva2VybmVsL3BhY2FjaGUuUwor KysgYi9hcmNoL3BhcmlzYy9rZXJuZWwvcGFjYWNoZS5TCkBAIC05Niw3ICs5Niw3IEBAIGZpdG1h bnlsb29wOgkJCQkJLyogTG9vcCBpZiBMT09QID49IDIgKi8KIAogZml0bWFueW1pZGRsZToJCQkJ CS8qIExvb3AgaWYgTE9PUCA+PSAyICovCiAJYWRkaWIsQ09ORCg+KQkJLTEsICVyMzEsIGZpdG1h bnltaWRkbGUJLyogQWRqdXN0ZWQgaW5uZXIgbG9vcCBkZWNyICovCi0JcGl0bGJlCQkwKCVzcjEs ICVyMjgpCisJcGl0bGJlCQklcjAoJXNyMSwgJXIyOCkKIAlwaXRsYmUsbQklYXJnMSglc3IxLCAl cjI4KQkvKiBMYXN0IHBpdGxiZSBhbmQgYWRkciBhZGp1c3QgKi8KIAlhZGRpYixDT05EKD4pCQkt MSwgJXIyOSwgZml0bWFueW1pZGRsZQkvKiBNaWRkbGUgbG9vcCBkZWNyICovCiAJY29weQkJJWFy ZzMsICVyMzEJCS8qIFJlLWluaXQgaW5uZXIgbG9vcCBjb3VudCAqLwpAQCAtMTM5LDcgKzEzOSw3 IEBAIGZkdG1hbnlsb29wOgkJCQkJLyogTG9vcCBpZiBMT09QID49IDIgKi8KIAogZmR0bWFueW1p ZGRsZToJCQkJCS8qIExvb3AgaWYgTE9PUCA+PSAyICovCiAJYWRkaWIsQ09ORCg+KQkJLTEsICVy MzEsIGZkdG1hbnltaWRkbGUJLyogQWRqdXN0ZWQgaW5uZXIgbG9vcCBkZWNyICovCi0JcGR0bGJl CQkwKCVzcjEsICVyMjgpCisJcGR0bGJlCQklcjAoJXNyMSwgJXIyOCkKIAlwZHRsYmUsbQklYXJn MSglc3IxLCAlcjI4KQkvKiBMYXN0IHBkdGxiZSBhbmQgYWRkciBhZGp1c3QgKi8KIAlhZGRpYixD T05EKD4pCQktMSwgJXIyOSwgZmR0bWFueW1pZGRsZQkvKiBNaWRkbGUgbG9vcCBkZWNyICovCiAJ Y29weQkJJWFyZzMsICVyMzEJCS8qIFJlLWluaXQgaW5uZXIgbG9vcCBjb3VudCAqLwpAQCAtNjIw LDEyICs2MjAsMTIgQEAgRU5UUlkoY29weV91c2VyX3BhZ2VfYXNtKQogCS8qIFB1cmdlIGFueSBv bGQgdHJhbnNsYXRpb25zICovCiAKICNpZmRlZiBDT05GSUdfUEEyMAotCXBkdGxiLGwJCTAoJXIy OCkKLQlwZHRsYixsCQkwKCVyMjkpCisJcGR0bGIsbAkJJXIwKCVyMjgpCisJcGR0bGIsbAkJJXIw KCVyMjkpCiAjZWxzZQogCXRsYl9sb2NrCSVyMjAsJXIyMSwlcjIyCi0JcGR0bGIJCTAoJXIyOCkK LQlwZHRsYgkJMCglcjI5KQorCXBkdGxiCQklcjAoJXIyOCkKKwlwZHRsYgkJJXIwKCVyMjkpCiAJ dGxiX3VubG9jawklcjIwLCVyMjEsJXIyMgogI2VuZGlmCiAKQEAgLTc2OCwxMCArNzY4LDEwIEBA IEVOVFJZKGNsZWFyX3VzZXJfcGFnZV9hc20pCiAJLyogUHVyZ2UgYW55IG9sZCB0cmFuc2xhdGlv biAqLwogCiAjaWZkZWYgQ09ORklHX1BBMjAKLQlwZHRsYixsCQkwKCVyMjgpCisJcGR0bGIsbAkJ JXIwKCVyMjgpCiAjZWxzZQogCXRsYl9sb2NrCSVyMjAsJXIyMSwlcjIyCi0JcGR0bGIJCTAoJXIy OCkKKwlwZHRsYgkJJXIwKCVyMjgpCiAJdGxiX3VubG9jawklcjIwLCVyMjEsJXIyMgogI2VuZGlm CiAKQEAgLTg1MiwxMCArODUyLDEwIEBAIEVOVFJZKGZsdXNoX2RjYWNoZV9wYWdlX2FzbSkKIAkv KiBQdXJnZSBhbnkgb2xkIHRyYW5zbGF0aW9uICovCiAKICNpZmRlZiBDT05GSUdfUEEyMAotCXBk dGxiLGwJCTAoJXIyOCkKKwlwZHRsYixsCQklcjAoJXIyOCkKICNlbHNlCiAJdGxiX2xvY2sJJXIy MCwlcjIxLCVyMjIKLQlwZHRsYgkJMCglcjI4KQorCXBkdGxiCQklcjAoJXIyOCkKIAl0bGJfdW5s b2NrCSVyMjAsJXIyMSwlcjIyCiAjZW5kaWYKIApAQCAtODg2LDE5ICs4ODYsMTAgQEAgRU5UUlko Zmx1c2hfZGNhY2hlX3BhZ2VfYXNtKQogCWZkYyxtCQlyMzEoJXIyOCkKIAlmZGMsbQkJcjMxKCVy MjgpCiAJZmRjLG0JCXIzMSglcjI4KQotCWNtcGIsQ09ORCg8PCkJCSVyMjgsICVyMjUsMWIKKwlj bXBiLENPTkQoPDwpCSVyMjgsICVyMjUsMWIKIAlmZGMsbQkJcjMxKCVyMjgpCiAKIAlzeW5jCi0K LSNpZmRlZiBDT05GSUdfUEEyMAotCXBkdGxiLGwJCTAoJXIyNSkKLSNlbHNlCi0JdGxiX2xvY2sJ JXIyMCwlcjIxLCVyMjIKLQlwZHRsYgkJMCglcjI1KQotCXRsYl91bmxvY2sJJXIyMCwlcjIxLCVy MjIKLSNlbmRpZgotCiAJYnYJCSVyMCglcjIpCiAJbm9wCiAJLmV4aXQKQEAgLTkyNSwxMyArOTE2 LDE4IEBAIEVOVFJZKGZsdXNoX2ljYWNoZV9wYWdlX2FzbSkKIAlkZXB3aQkJMCwgMzEsUEFHRV9T SElGVCwgJXIyOAkvKiBDbGVhciBhbnkgb2Zmc2V0IGJpdHMgKi8KICNlbmRpZgogCi0JLyogUHVy Z2UgYW55IG9sZCB0cmFuc2xhdGlvbiAqLworCS8qIFB1cmdlIGFueSBvbGQgdHJhbnNsYXRpb24u ICBOb3RlIHRoYXQgdGhlIEZJQyBpbnN0cnVjdGlvbgorCSAqIG1heSB1c2UgZWl0aGVyIHRoZSBp bnN0cnVjdGlvbiBvciBkYXRhIFRMQi4gIEdpdmVuIHRoYXQgd2UKKwkgKiBoYXZlIGEgZmxhdCBh ZGRyZXNzIHNwYWNlLCBpdCdzIG5vdCBjbGVhciB3aGljaCBUTEIgd2lsbCBiZQorCSAqIHVzZWQu ICBTbywgd2UgcHVyZ2UgYm90aCBlbnRyaWVzLiAgKi8KIAogI2lmZGVmIENPTkZJR19QQTIwCisJ cGR0bGIsbAkJJXIwKCVyMjgpCiAJcGl0bGIsbCAgICAgICAgICVyMCglc3I0LCVyMjgpCiAjZWxz ZQogCXRsYl9sb2NrICAgICAgICAlcjIwLCVyMjEsJXIyMgotCXBpdGxiICAgICAgICAgICAoJXNy NCwlcjI4KQorCXBkdGxiCQklcjAoJXIyOCkKKwlwaXRsYiAgICAgICAgICAgJXIwKCVzcjQsJXIy OCkKIAl0bGJfdW5sb2NrICAgICAgJXIyMCwlcjIxLCVyMjIKICNlbmRpZgogCkBAIC05NjgsMTUg Kzk2NCw2IEBAIEVOVFJZKGZsdXNoX2ljYWNoZV9wYWdlX2FzbSkKIAlmaWMsbQkJJXIzMSglc3I0 LCVyMjgpCiAKIAlzeW5jCi0KLSNpZmRlZiBDT05GSUdfUEEyMAotCXBpdGxiLGwgICAgICAgICAl cjAoJXNyNCwlcjI1KQotI2Vsc2UKLQl0bGJfbG9jayAgICAgICAgJXIyMCwlcjIxLCVyMjIKLQlw aXRsYiAgICAgICAgICAgKCVzcjQsJXIyNSkKLQl0bGJfdW5sb2NrICAgICAgJXIyMCwlcjIxLCVy MjIKLSNlbmRpZgotCiAJYnYJCSVyMCglcjIpCiAJbm9wCiAJLmV4aXQKZGlmZiAtLWdpdCBhL2Fy Y2gvcGFyaXNjL2tlcm5lbC9wY2ktZG1hLmMgYi9hcmNoL3BhcmlzYy9rZXJuZWwvcGNpLWRtYS5j CmluZGV4IGQ4N2QxYzQ3NmQ4NS4uMTNkN2IxODM4NjA5IDEwMDY0NAotLS0gYS9hcmNoL3Bhcmlz Yy9rZXJuZWwvcGNpLWRtYS5jCisrKyBiL2FyY2gvcGFyaXNjL2tlcm5lbC9wY2ktZG1hLmMKQEAg LTk1LDggKzk1LDggQEAgc3RhdGljIGlubGluZSBpbnQgbWFwX3B0ZV91bmNhY2hlZChwdGVfdCAq IHB0ZSwKIAogCQlpZiAoIXB0ZV9ub25lKCpwdGUpKQogCQkJcHJpbnRrKEtFUk5fRVJSICJtYXBf cHRlX3VuY2FjaGVkOiBwYWdlIGFscmVhZHkgZXhpc3RzXG4iKTsKLQkJc2V0X3B0ZShwdGUsIF9f bWtfcHRlKCpwYWRkcl9wdHIsIFBBR0VfS0VSTkVMX1VOQykpOwogCQlwdXJnZV90bGJfc3RhcnQo ZmxhZ3MpOworCQlzZXRfcHRlKHB0ZSwgX19ta19wdGUoKnBhZGRyX3B0ciwgUEFHRV9LRVJORUxf VU5DKSk7CiAJCXBkdGxiX2tlcm5lbChvcmlnX3ZhZGRyKTsKIAkJcHVyZ2VfdGxiX2VuZChmbGFn cyk7CiAJCXZhZGRyICs9IFBBR0VfU0laRTsKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2tlcm5l bC9zeXNjYWxsLlMgYi9hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbC5TCmluZGV4IDcxMDU2MTBh YzNmZC4uZjcxNmU5ZTY1YTQ5IDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2Fs bC5TCisrKyBiL2FyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxsLlMKQEAgLTEwNiw4ICsxMDYsNiBA QCBsaW51eF9nYXRld2F5X2VudHJ5OgogCW10c3AJJXIwLCVzcjQJCQkvKiBnZXQga2VybmVsIHNw YWNlIGludG8gc3I0ICovCiAJbXRzcAklcjAsJXNyNQkJCS8qIGdldCBrZXJuZWwgc3BhY2UgaW50 byBzcjUgKi8KIAltdHNwCSVyMCwlc3I2CQkJLyogZ2V0IGtlcm5lbCBzcGFjZSBpbnRvIHNyNiAq LwotCW1mc3AgICAgJXNyNywlcjEgICAgICAgICAgICAgICAgICAgICAgICAvKiBzYXZlIHVzZXIg c3I3ICovCi0JbXRzcCAgICAlcjEsJXNyMyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFuZCBz dG9yZSBpdCBpbiBzcjMgKi8KIAogI2lmZGVmIENPTkZJR182NEJJVAogCS8qIGZvciBub3cgd2Ug Y2FuICphbHdheXMqIHNldCB0aGUgVyBiaXQgb24gZW50cnkgdG8gdGhlIHN5c2NhbGwKQEAgLTEz Myw2ICsxMzEsMTQgQEAgbGludXhfZ2F0ZXdheV9lbnRyeToKIAlkZXBkaQkwLCAzMSwgMzIsICVy MjEKIDE6CQogI2VuZGlmCisKKwkvKiBXZSB1c2UgYSByc20vc3NtIHBhaXIgdG8gcHJldmVudCBz cjMgZnJvbSBiZWluZyBjbG9iYmVyZWQKKwkgKiBieSBleHRlcm5hbCBpbnRlcnJ1cHRzLgorCSAq LworCW1mc3AgICAgJXNyNywlcjEgICAgICAgICAgICAgICAgICAgICAgICAvKiBzYXZlIHVzZXIg c3I3ICovCisJcnNtCVBTV19TTV9JLCAlcjAJCQkvKiBkaXNhYmxlIGludGVycnVwdHMgKi8KKwlt dHNwICAgICVyMSwlc3IzICAgICAgICAgICAgICAgICAgICAgICAgLyogYW5kIHN0b3JlIGl0IGlu IHNyMyAqLworCiAJbWZjdGwgICAlY3IzMCwlcjEKIAl4b3IgICAgICVyMSwlcjMwLCVyMzAgICAg ICAgICAgICAgICAgICAgLyogeWUgb2xkZSB4b3IgdHJpY2sgKi8KIAl4b3IgICAgICVyMSwlcjMw LCVyMQpAQCAtMTQ3LDYgKzE1Myw3IEBAIGxpbnV4X2dhdGV3YXlfZW50cnk6CiAJICovCiAKIAlt dHNwCSVyMCwlc3I3CQkJLyogZ2V0IGtlcm5lbCBzcGFjZSBpbnRvIHNyNyAqLworCXNzbQlQU1df U01fSSwgJXIwCQkJLyogZW5hYmxlIGludGVycnVwdHMgKi8KIAlTVFJFR00JJXIxLEZSQU1FX1NJ WkUoJXIzMCkJCS8qIHNhdmUgcjEgKHVzcCkgaGVyZSBmb3Igbm93ICovCiAJbWZjdGwJJWNyMzAs JXIxCQkJLyogZ2V0IHRhc2sgcHRyIGluICVyMSAqLwogCUxEUkVHCVRJX1RBU0soJXIxKSwlcjEK ZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzLmggYi9hcmNo L3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2szcy5oCmluZGV4IGY1MmY2NTY5NDUyNy4uMDY4 OTA5MWY5NTA1IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3ZtX2Jvb2sz cy5oCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fYm9vazNzLmgKQEAgLTgzLDYg KzgzLDcgQEAgc3RydWN0IGt2bXBwY192Y3B1X2Jvb2szcyB7CiAJdTY0IHNkcjE7CiAJdTY0IGhp b3I7CiAJdTY0IG1zcl9tYXNrOworCXU2NCB2dGI7CiAJdTY0IHB1cnJfb2Zmc2V0OwogCXU2NCBz cHVycl9vZmZzZXQ7CiAjaWZkZWYgQ09ORklHX1BQQ19CT09LM1NfMzIKZGlmZiAtLWdpdCBhL2Fy Y2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUv YXNtL2t2bV9ob3N0LmgKaW5kZXggYmI2NmQ4YjhlZmRmLi4yMTQ5ZGJjZjg5MzEgMTAwNjQ0Ci0t LSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCisrKyBiL2FyY2gvcG93ZXJw Yy9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCkBAIC0zMDUsNiArMzA1LDcgQEAgc3RydWN0IGt2bXBw Y192Y29yZSB7CiAJdTMyIGFyY2hfY29tcGF0OwogCXVsb25nIHBjcjsKIAl1bG9uZyBkcGRlczsJ CS8qIGRvb3JiZWxsIHN0YXRlIChQT1dFUjgpICovCisJdWxvbmcgdnRiOwkJLyogdmlydHVhbCB0 aW1lYmFzZSAqLwogfTsKIAogI2RlZmluZSBWQ09SRV9FTlRSWV9DT1VOVCh2YykJKCh2YyktPmVu dHJ5X2V4aXRfY291bnQgJiAweGZmKQpAQCAtNDYyLDcgKzQ2Myw2IEBAIHN0cnVjdCBrdm1fdmNw dV9hcmNoIHsKIAl1bG9uZyBwdXJyOwogCXVsb25nIHNwdXJyOwogCXVsb25nIGljOwotCXVsb25n IHZ0YjsKIAl1bG9uZyBkc2NyOwogCXVsb25nIGFtcjsKIAl1bG9uZyB1YW1vcjsKZGlmZiAtLWdp dCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9yZWcuaCBiL2FyY2gvcG93ZXJwYy9pbmNsdWRl L2FzbS9yZWcuaAppbmRleCA1ZGY4ZTVjZGU0YTYuLmUwYjFiODQ4MjczNSAxMDA2NDQKLS0tIGEv YXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3JlZy5oCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRl L2FzbS9yZWcuaApAQCAtNzA1LDYgKzcwNSw3IEBACiAjZGVmaW5lICAgTU1DUjBfRkNIVgkweDAw MDAwMDAxVUwgLyogZnJlZXplIGNvbmRpdGlvbnMgaW4gaHlwZXJ2aXNvciBtb2RlICovCiAjZGVm aW5lIFNQUk5fTU1DUjEJNzk4CiAjZGVmaW5lIFNQUk5fTU1DUjIJNzg1CisjZGVmaW5lIFNQUk5f VU1NQ1IyCTc2OQogI2RlZmluZSBTUFJOX01NQ1JBCTB4MzEyCiAjZGVmaW5lICAgTU1DUkFfU0RT WU5DCTB4ODAwMDAwMDBVTCAvKiBTREFSIHN5bmNlZCB3aXRoIFNJQVIgKi8KICNkZWZpbmUgICBN TUNSQV9TREFSX0RDQUNIRV9NSVNTIDB4NDAwMDAwMDBVTApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dl cnBjL2tlcm5lbC9hc20tb2Zmc2V0cy5jIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20tb2Zmc2V0 cy5jCmluZGV4IGY1OTk1YTkxMjIxMy4uODhhYmVhODg5ODc2IDEwMDY0NAotLS0gYS9hcmNoL3Bv d2VycGMva2VybmVsL2FzbS1vZmZzZXRzLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9hc20t b2Zmc2V0cy5jCkBAIC01MDYsNyArNTA2LDYgQEAgaW50IG1haW4odm9pZCkKIAlERUZJTkUoVkNQ VV9QVVJSLCBvZmZzZXRvZihzdHJ1Y3Qga3ZtX3ZjcHUsIGFyY2gucHVycikpOwogCURFRklORShW Q1BVX1NQVVJSLCBvZmZzZXRvZihzdHJ1Y3Qga3ZtX3ZjcHUsIGFyY2guc3B1cnIpKTsKIAlERUZJ TkUoVkNQVV9JQywgb2Zmc2V0b2Yoc3RydWN0IGt2bV92Y3B1LCBhcmNoLmljKSk7Ci0JREVGSU5F KFZDUFVfVlRCLCBvZmZzZXRvZihzdHJ1Y3Qga3ZtX3ZjcHUsIGFyY2gudnRiKSk7CiAJREVGSU5F KFZDUFVfRFNDUiwgb2Zmc2V0b2Yoc3RydWN0IGt2bV92Y3B1LCBhcmNoLmRzY3IpKTsKIAlERUZJ TkUoVkNQVV9BTVIsIG9mZnNldG9mKHN0cnVjdCBrdm1fdmNwdSwgYXJjaC5hbXIpKTsKIAlERUZJ TkUoVkNQVV9VQU1PUiwgb2Zmc2V0b2Yoc3RydWN0IGt2bV92Y3B1LCBhcmNoLnVhbW9yKSk7CkBA IC01NjAsNiArNTU5LDcgQEAgaW50IG1haW4odm9pZCkKIAlERUZJTkUoVkNPUkVfTFBDUiwgb2Zm c2V0b2Yoc3RydWN0IGt2bXBwY192Y29yZSwgbHBjcikpOwogCURFRklORShWQ09SRV9QQ1IsIG9m ZnNldG9mKHN0cnVjdCBrdm1wcGNfdmNvcmUsIHBjcikpOwogCURFRklORShWQ09SRV9EUERFUywg b2Zmc2V0b2Yoc3RydWN0IGt2bXBwY192Y29yZSwgZHBkZXMpKTsKKwlERUZJTkUoVkNPUkVfVlRC LCBvZmZzZXRvZihzdHJ1Y3Qga3ZtcHBjX3Zjb3JlLCB2dGIpKTsKIAlERUZJTkUoVkNQVV9TTEJf RSwgb2Zmc2V0b2Yoc3RydWN0IGt2bXBwY19zbGIsIG9yaWdlKSk7CiAJREVGSU5FKFZDUFVfU0xC X1YsIG9mZnNldG9mKHN0cnVjdCBrdm1wcGNfc2xiLCBvcmlndikpOwogCURFRklORShWQ1BVX1NM Ql9TSVpFLCBzaXplb2Yoc3RydWN0IGt2bXBwY19zbGIpKTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93 ZXJwYy9rZXJuZWwvZWVoX2RyaXZlci5jIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9lZWhfZHJpdmVy LmMKaW5kZXggNDIwZGE2MWQ0Y2UwLi5lMjVlZTVkZTJmNmYgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93 ZXJwYy9rZXJuZWwvZWVoX2RyaXZlci5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvZWVoX2Ry aXZlci5jCkBAIC01NDEsOCArNTQxLDEwIEBAIHN0YXRpYyBpbnQgZWVoX3Jlc2V0X2RldmljZShz dHJ1Y3QgZWVoX3BlICpwZSwgc3RydWN0IHBjaV9idXMgKmJ1cykKIAogCS8qIENsZWFyIGZyb3pl biBzdGF0ZSAqLwogCXJjID0gZWVoX2NsZWFyX3BlX2Zyb3plbl9zdGF0ZShwZSk7Ci0JaWYgKHJj KQorCWlmIChyYykgeworCQlwY2lfdW5sb2NrX3Jlc2Nhbl9yZW1vdmUoKTsKIAkJcmV0dXJuIHJj OworCX0KIAogCS8qIEdpdmUgdGhlIHN5c3RlbSA1IHNlY29uZHMgdG8gZmluaXNoIHJ1bm5pbmcg dGhlIHVzZXItc3BhY2UKIAkgKiBob3RwbHVnIHNodXRkb3duIHNjcmlwdHMsIGUuZy4gaWZkb3du IGZvciBldGhlcm5ldC4gIFllcywKQEAgLTgyOCw2ICs4MzAsMTQgQEAgc3RhdGljIHZvaWQgZWVo X2hhbmRsZV9zcGVjaWFsX2V2ZW50KHZvaWQpCiAKIAkJCQkvKiBOb3RpZnkgYWxsIGRldmljZXMg dG8gYmUgZG93biAqLwogCQkJCWJ1cyA9IGVlaF9wZV9idXNfZ2V0KHBoYl9wZSk7CisJCQkJaWYg KCFidXMpIHsKKwkJCQkJcHJfZXJyKCIlczogQ2Fubm90IGZpbmQgUENJIGJ1cyBmb3IgIgorCQkJ CQkgICAgICAgIlBIQiMlZC1QRSMleFxuIiwKKwkJCQkJICAgICAgIF9fZnVuY19fLAorCQkJCQkg ICAgICAgcGUtPnBoYi0+Z2xvYmFsX251bWJlciwKKwkJCQkJICAgICAgIHBlLT5hZGRyKTsKKwkJ CQkJYnJlYWs7CisJCQkJfQogCQkJCWVlaF9wZV9kZXZfdHJhdmVyc2UocGUsCiAJCQkJCWVlaF9y ZXBvcnRfZmFpbHVyZSwgTlVMTCk7CiAJCQkJcGNpYmlvc19yZW1vdmVfcGNpX2RldmljZXMoYnVz KTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvaWRsZV9wb3dlcjcuUyBiL2FyY2gv cG93ZXJwYy9rZXJuZWwvaWRsZV9wb3dlcjcuUwppbmRleCBhMjlmNWIwZjlkM2UuLjA5OWU0MDU2 ODBjNCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9pZGxlX3Bvd2VyNy5TCisrKyBi L2FyY2gvcG93ZXJwYy9rZXJuZWwvaWRsZV9wb3dlcjcuUwpAQCAtMjgsNyArMjgsNyBAQAogCXN0 ZAlyMCwwKHIxKTsJCQkJCVwKIAlwdGVzeW5jOwkJCQkJCVwKIAlsZAlyMCwwKHIxKTsJCQkJCVwK LTE6CWNtcAljcjAscjAscjA7CQkJCQlcCisxOgljbXBkCWNyMCxyMCxyMDsJCQkJCVwKIAlibmUJ MWI7CQkJCQkJXAogCUlETEVfSU5TVDsJCQkJCQlcCiAJYgkuCmRpZmYgLS1naXQgYS9hcmNoL3Bv d2VycGMva2VybmVsL252cmFtXzY0LmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL252cmFtXzY0LmMK aW5kZXggMjhiODk4ZTY4MTg1Li5iNTVkNmU4M2ZiYjQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJw Yy9rZXJuZWwvbnZyYW1fNjQuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL252cmFtXzY0LmMK QEAgLTI5Miw3ICsyOTIsNyBAQCBpbnQgX19pbml0IG52cmFtX3JlbW92ZV9wYXJ0aXRpb24oY29u c3QgY2hhciAqbmFtZSwgaW50IHNpZywKIAogCQkvKiBNYWtlIHBhcnRpdGlvbiBhIGZyZWUgcGFy dGl0aW9uICovCiAJCXBhcnQtPmhlYWRlci5zaWduYXR1cmUgPSBOVlJBTV9TSUdfRlJFRTsKLQkJ c3RybmNweShwYXJ0LT5oZWFkZXIubmFtZSwgInd3d3d3d3d3d3d3dyIsIDEyKTsKKwkJbWVtc2V0 KHBhcnQtPmhlYWRlci5uYW1lLCAndycsIDEyKTsKIAkJcGFydC0+aGVhZGVyLmNoZWNrc3VtID0g bnZyYW1fY2hlY2tzdW0oJnBhcnQtPmhlYWRlcik7CiAJCXJjID0gbnZyYW1fd3JpdGVfaGVhZGVy KHBhcnQpOwogCQlpZiAocmMgPD0gMCkgewpAQCAtMzEwLDggKzMxMCw4IEBAIGludCBfX2luaXQg bnZyYW1fcmVtb3ZlX3BhcnRpdGlvbihjb25zdCBjaGFyICpuYW1lLCBpbnQgc2lnLAogCQl9CiAJ CWlmIChwcmV2KSB7CiAJCQlwcmV2LT5oZWFkZXIubGVuZ3RoICs9IHBhcnQtPmhlYWRlci5sZW5n dGg7Ci0JCQlwcmV2LT5oZWFkZXIuY2hlY2tzdW0gPSBudnJhbV9jaGVja3N1bSgmcGFydC0+aGVh ZGVyKTsKLQkJCXJjID0gbnZyYW1fd3JpdGVfaGVhZGVyKHBhcnQpOworCQkJcHJldi0+aGVhZGVy LmNoZWNrc3VtID0gbnZyYW1fY2hlY2tzdW0oJnByZXYtPmhlYWRlcik7CisJCQlyYyA9IG52cmFt X3dyaXRlX2hlYWRlcihwcmV2KTsKIAkJCWlmIChyYyA8PSAwKSB7CiAJCQkJcHJpbnRrKEtFUk5f RVJSICJudnJhbV9yZW1vdmVfcGFydGl0aW9uOiBudnJhbV93cml0ZSBmYWlsZWQgKCVkKVxuIiwg cmMpOwogCQkJCXJldHVybiByYzsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvdmRz bzY0L2RhdGFwYWdlLlMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3Zkc282NC9kYXRhcGFnZS5TCmlu ZGV4IDc5Nzk2ZGUxMTczNy4uMzI2M2VlMjMxNzBkIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMv a2VybmVsL3Zkc282NC9kYXRhcGFnZS5TCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvdmRzbzY0 L2RhdGFwYWdlLlMKQEAgLTU3LDcgKzU3LDcgQEAgVl9GVU5DVElPTl9CRUdJTihfX2tlcm5lbF9n ZXRfc3lzY2FsbF9tYXApCiAJYmwJVl9MT0NBTF9GVU5DKF9fZ2V0X2RhdGFwYWdlKQogCW10bHIJ cjEyCiAJYWRkaQlyMyxyMyxDRkdfU1lTQ0FMTF9NQVA2NAotCWNtcGxpCWNyMCxyNCwwCisJY21w bGRpCWNyMCxyNCwwCiAJY3JjbHIJY3IwKjQrc28KIAliZXFscgogCWxpCXIwLF9fTlJfc3lzY2Fs bHMKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvdmRzbzY0L2dldHRpbWVvZmRheS5T IGIvYXJjaC9wb3dlcnBjL2tlcm5lbC92ZHNvNjQvZ2V0dGltZW9mZGF5LlMKaW5kZXggYTc2YjRh ZjM3ZWYyLi4zODIwMjEzMjQ4ODMgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvdmRz bzY0L2dldHRpbWVvZmRheS5TCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvdmRzbzY0L2dldHRp bWVvZmRheS5TCkBAIC0xNDUsNyArMTQ1LDcgQEAgVl9GVU5DVElPTl9CRUdJTihfX2tlcm5lbF9j bG9ja19nZXRyZXMpCiAJYm5lCWNyMCw5OWYKIAogCWxpCXIzLDAKLQljbXBsaQljcjAscjQsMAor CWNtcGxkaQljcjAscjQsMAogCWNyY2xyCWNyMCo0K3NvCiAJYmVxbHIKIAlsaXMJcjUsQ0xPQ0tf UkVBTFRJTUVfUkVTQGgKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2VtdWxh dGUuYyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2VtdWxhdGUuYwppbmRleCAzZjI5NTI2OWFm MzcuLjcwYWI5NjhkYTJlNiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfZW11 bGF0ZS5jCisrKyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2VtdWxhdGUuYwpAQCAtNTAzLDYg KzUwMyw3IEBAIGludCBrdm1wcGNfY29yZV9lbXVsYXRlX210c3ByX3ByKHN0cnVjdCBrdm1fdmNw dSAqdmNwdSwgaW50IHNwcm4sIHVsb25nIHNwcl92YWwpCiAJY2FzZSBTUFJOX01NQ1IwOgogCWNh c2UgU1BSTl9NTUNSMToKIAljYXNlIFNQUk5fTU1DUjI6CisJY2FzZSBTUFJOX1VNTUNSMjoKICNl bmRpZgogCQlicmVhazsKIHVucHJpdmlsZWdlZDoKQEAgLTYzMyw2ICs2MzQsNyBAQCBpbnQga3Zt cHBjX2NvcmVfZW11bGF0ZV9tZnNwcl9wcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBzcHJu LCB1bG9uZyAqc3ByX3ZhbAogCWNhc2UgU1BSTl9NTUNSMDoKIAljYXNlIFNQUk5fTU1DUjE6CiAJ Y2FzZSBTUFJOX01NQ1IyOgorCWNhc2UgU1BSTl9VTU1DUjI6CiAJY2FzZSBTUFJOX1RJUjoKICNl bmRpZgogCQkqc3ByX3ZhbCA9IDA7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2sz c19odi5jIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYwppbmRleCA4OWQ0ZWJkODE1MmIu LmE0MTZiNmJiMGQ2YSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYwor KysgYi9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jCkBAIC05MDksNyArOTA5LDcgQEAgc3Rh dGljIGludCBrdm1wcGNfZ2V0X29uZV9yZWdfaHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQg aWQsCiAJCSp2YWwgPSBnZXRfcmVnX3ZhbChpZCwgdmNwdS0+YXJjaC5pYyk7CiAJCWJyZWFrOwog CWNhc2UgS1ZNX1JFR19QUENfVlRCOgotCQkqdmFsID0gZ2V0X3JlZ192YWwoaWQsIHZjcHUtPmFy Y2gudnRiKTsKKwkJKnZhbCA9IGdldF9yZWdfdmFsKGlkLCB2Y3B1LT5hcmNoLnZjb3JlLT52dGIp OwogCQlicmVhazsKIAljYXNlIEtWTV9SRUdfUFBDX0NTSUdSOgogCQkqdmFsID0gZ2V0X3JlZ192 YWwoaWQsIHZjcHUtPmFyY2guY3NpZ3IpOwpAQCAtMTExMCw3ICsxMTEwLDcgQEAgc3RhdGljIGlu dCBrdm1wcGNfc2V0X29uZV9yZWdfaHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgaWQsCiAJ CXZjcHUtPmFyY2guaWMgPSBzZXRfcmVnX3ZhbChpZCwgKnZhbCk7CiAJCWJyZWFrOwogCWNhc2Ug S1ZNX1JFR19QUENfVlRCOgotCQl2Y3B1LT5hcmNoLnZ0YiA9IHNldF9yZWdfdmFsKGlkLCAqdmFs KTsKKwkJdmNwdS0+YXJjaC52Y29yZS0+dnRiID0gc2V0X3JlZ192YWwoaWQsICp2YWwpOwogCQli cmVhazsKIAljYXNlIEtWTV9SRUdfUFBDX0NTSUdSOgogCQl2Y3B1LT5hcmNoLmNzaWdyID0gc2V0 X3JlZ192YWwoaWQsICp2YWwpOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3Nf aHZfcm1oYW5kbGVycy5TIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfcm1oYW5kbGVycy5T CmluZGV4IDJmMGMxMzk0ZWZhOC4uYWI2OWE1ZjI0MmQxIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2Vy cGMva3ZtL2Jvb2szc19odl9ybWhhbmRsZXJzLlMKKysrIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29r M3NfaHZfcm1oYW5kbGVycy5TCkBAIC00NTcsOSArNDU3LDExIEBAIEFMVF9GVFJfU0VDVElPTl9F TkRfSUZTRVQoQ1BVX0ZUUl9BUkNIXzIwN1MpCiAzODoKIAogQkVHSU5fRlRSX1NFQ1RJT04KLQkv KiBEUERFUyBpcyBzaGFyZWQgYmV0d2VlbiB0aHJlYWRzICovCisJLyogRFBERVMgYW5kIFZUQiBh cmUgc2hhcmVkIGJldHdlZW4gdGhyZWFkcyAqLwogCWxkCXI4LCBWQ09SRV9EUERFUyhyNSkKKwls ZAlyNywgVkNPUkVfVlRCKHI1KQogCW10c3ByCVNQUk5fRFBERVMsIHI4CisJbXRzcHIJU1BSTl9W VEIsIHI3CiBFTkRfRlRSX1NFQ1RJT05fSUZTRVQoQ1BVX0ZUUl9BUkNIXzIwN1MpCiAKIAlsaQly MCwxCkBAIC03MzYsMTAgKzczOCw4IEBAIEVORF9GVFJfU0VDVElPTl9JRkNMUihDUFVfRlRSX0FS Q0hfMjA3UykKIAltdHNwcglTUFJOX0NJQUJSLCByNwogCW10c3ByCVNQUk5fVEFSLCByOAogCWxk CXI1LCBWQ1BVX0lDKHI0KQotCWxkCXI2LCBWQ1BVX1ZUQihyNCkKLQltdHNwcglTUFJOX0lDLCBy NQotCW10c3ByCVNQUk5fVlRCLCByNgogCWxkCXI4LCBWQ1BVX0VCQkhSKHI0KQorCW10c3ByCVNQ Uk5fSUMsIHI1CiAJbXRzcHIJU1BSTl9FQkJIUiwgcjgKIAlsZAlyNSwgVkNQVV9FQkJSUihyNCkK IAlsZAlyNiwgVkNQVV9CRVNDUihyNCkKQEAgLTExNDcsMTAgKzExNDcsOCBAQCBFTkRfRlRSX1NF Q1RJT05fSUZDTFIoQ1BVX0ZUUl9BUkNIXzIwN1MpCiAJc3R3CXI2LCBWQ1BVX1BTUEIocjkpCiAJ c3RkCXI3LCBWQ1BVX0ZTQ1IocjkpCiAJbWZzcHIJcjUsIFNQUk5fSUMKLQltZnNwcglyNiwgU1BS Tl9WVEIKIAltZnNwcglyNywgU1BSTl9UQVIKIAlzdGQJcjUsIFZDUFVfSUMocjkpCi0Jc3RkCXI2 LCBWQ1BVX1ZUQihyOSkKIAlzdGQJcjcsIFZDUFVfVEFSKHI5KQogCW1mc3ByCXI4LCBTUFJOX0VC QkhSCiAJc3RkCXI4LCBWQ1BVX0VCQkhSKHI5KQpAQCAtMTQ0Miw5ICsxNDQwLDExIEBAIHNlY29u ZGFyeV90b29fbGF0ZToKIAlpc3luYwogCiBCRUdJTl9GVFJfU0VDVElPTgotCS8qIERQREVTIGlz IHNoYXJlZCBiZXR3ZWVuIHRocmVhZHMgKi8KKwkvKiBEUERFUyBhbmQgVlRCIGFyZSBzaGFyZWQg YmV0d2VlbiB0aHJlYWRzICovCiAJbWZzcHIJcjcsIFNQUk5fRFBERVMKKwltZnNwcglyOCwgU1BS Tl9WVEIKIAlzdGQJcjcsIFZDT1JFX0RQREVTKHI1KQorCXN0ZAlyOCwgVkNPUkVfVlRCKHI1KQog CS8qIGNsZWFyIERQREVTIHNvIHdlIGRvbid0IGdldCBndWVzdCBkb29yYmVsbHMgaW4gdGhlIGhv c3QgKi8KIAlsaQlyOCwgMAogCW10c3ByCVNQUk5fRFBERVMsIHI4CmRpZmYgLS1naXQgYS9hcmNo L3Bvd2VycGMva3ZtL2Jvb2szc19wci5jIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYwpp bmRleCA2NmI3YWZlYzI1MGYuLmU1ODcyNjRjMmU4YyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBj L2t2bS9ib29rM3NfcHIuYworKysgYi9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jCkBAIC0x MjMyLDYgKzEyMzIsOSBAQCBzdGF0aWMgaW50IGt2bXBwY19nZXRfb25lX3JlZ19wcihzdHJ1Y3Qg a3ZtX3ZjcHUgKnZjcHUsIHU2NCBpZCwKIAljYXNlIEtWTV9SRUdfUFBDX0hJT1I6CiAJCSp2YWwg PSBnZXRfcmVnX3ZhbChpZCwgdG9fYm9vazNzKHZjcHUpLT5oaW9yKTsKIAkJYnJlYWs7CisJY2Fz ZSBLVk1fUkVHX1BQQ19WVEI6CisJCSp2YWwgPSBnZXRfcmVnX3ZhbChpZCwgdG9fYm9vazNzKHZj cHUpLT52dGIpOworCQlicmVhazsKIAljYXNlIEtWTV9SRUdfUFBDX0xQQ1I6CiAJY2FzZSBLVk1f UkVHX1BQQ19MUENSXzY0OgogCQkvKgpAQCAtMTI2OCw2ICsxMjcxLDkgQEAgc3RhdGljIGludCBr dm1wcGNfc2V0X29uZV9yZWdfcHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgaWQsCiAJCXRv X2Jvb2szcyh2Y3B1KS0+aGlvciA9IHNldF9yZWdfdmFsKGlkLCAqdmFsKTsKIAkJdG9fYm9vazNz KHZjcHUpLT5oaW9yX2V4cGxpY2l0ID0gdHJ1ZTsKIAkJYnJlYWs7CisJY2FzZSBLVk1fUkVHX1BQ Q19WVEI6CisJCXRvX2Jvb2szcyh2Y3B1KS0+dnRiID0gc2V0X3JlZ192YWwoaWQsICp2YWwpOwor CQlicmVhazsKIAljYXNlIEtWTV9SRUdfUFBDX0xQQ1I6CiAJY2FzZSBLVk1fUkVHX1BQQ19MUENS XzY0OgogCQlrdm1wcGNfc2V0X2xwY3JfcHIodmNwdSwgc2V0X3JlZ192YWwoaWQsICp2YWwpKTsK ZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rdm0vYm9va2UuYyBiL2FyY2gvcG93ZXJwYy9rdm0v Ym9va2UuYwppbmRleCBhYjYyMTA5ZmRmYTMuLmRjZWMwOGVkMzVkYSAxMDA2NDQKLS0tIGEvYXJj aC9wb3dlcnBjL2t2bS9ib29rZS5jCisrKyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9va2UuYwpAQCAt MTg0MSw3ICsxODQxLDcgQEAgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2d1ZXN0X2RlYnVn KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKIAkJaWYgKHR5cGUgPT0gS1ZNUFBDX0RFQlVHX05PTkUp CiAJCQljb250aW51ZTsKIAotCQlpZiAodHlwZSAmICEoS1ZNUFBDX0RFQlVHX1dBVENIX1JFQUQg fAorCQlpZiAodHlwZSAmIH4oS1ZNUFBDX0RFQlVHX1dBVENIX1JFQUQgfAogCQkJICAgICBLVk1Q UENfREVCVUdfV0FUQ0hfV1JJVEUgfAogCQkJICAgICBLVk1QUENfREVCVUdfQlJFQUtQT0lOVCkp CiAJCQlyZXR1cm4gLUVJTlZBTDsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9saWIvY29weXVz ZXJfNjQuUyBiL2FyY2gvcG93ZXJwYy9saWIvY29weXVzZXJfNjQuUwppbmRleCAwODYwZWU0NjAx M2MuLjA2MzJkNTM5ODI3NyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2xpYi9jb3B5dXNlcl82 NC5TCisrKyBiL2FyY2gvcG93ZXJwYy9saWIvY29weXVzZXJfNjQuUwpAQCAtMzU5LDYgKzM1OSw3 IEBAIEVORF9GVFJfU0VDVElPTl9JRkNMUihDUFVfRlRSX1VOQUxJR05FRF9MRF9TVEQpCiAJYWRk aQlyMyxyMyw4CiAxNzE6CiAxNzc6CisxNzk6CiAJYWRkaQlyMyxyMyw4CiAzNzA6CiAzNzI6CkBA IC0zNzMsNyArMzc0LDYgQEAgRU5EX0ZUUl9TRUNUSU9OX0lGQ0xSKENQVV9GVFJfVU5BTElHTkVE X0xEX1NURCkKIDE3MzoKIDE3NDoKIDE3NToKLTE3OToKIDE4MToKIDE4NDoKIDE4NjoKZGlmZiAt LWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9lZWgtaW9kYS5jIGIvYXJjaC9w b3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L2VlaC1pb2RhLmMKaW5kZXggOGFkMGM1Yjg5MWY0Li40 OTFlNTExZjYzZTMgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9l ZWgtaW9kYS5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9lZWgtaW9kYS5j CkBAIC01NzgsNiArNTc4LDExIEBAIHN0YXRpYyBpbnQgaW9kYV9lZWhfcmVzZXQoc3RydWN0IGVl aF9wZSAqcGUsIGludCBvcHRpb24pCiAJCXJldCA9IGlvZGFfZWVoX3BoYl9yZXNldChob3NlLCBv cHRpb24pOwogCX0gZWxzZSB7CiAJCWJ1cyA9IGVlaF9wZV9idXNfZ2V0KHBlKTsKKwkJaWYgKCFi dXMpIHsKKwkJCXByX2VycigiJXM6IENhbm5vdCBmaW5kIFBDSSBidXMgZm9yIFBIQiMlZC1QRSMl eFxuIiwKKwkJCSAgICAgICBfX2Z1bmNfXywgcGUtPnBoYi0+Z2xvYmFsX251bWJlciwgcGUtPmFk ZHIpOworCQkJcmV0dXJuIC1FSU87CisJCX0KIAkJaWYgKHBjaV9pc19yb290X2J1cyhidXMpIHx8 CiAJCSAgICBwY2lfaXNfcm9vdF9idXMoYnVzLT5wYXJlbnQpKQogCQkJcmV0ID0gaW9kYV9lZWhf cm9vdF9yZXNldChob3NlLCBvcHRpb24pOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRm b3Jtcy9wb3dlcm52L3BjaS5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3BjaS5j CmluZGV4IGE2YzE2ZDFmMDZmNS4uOTFiYWE4ZDA0YzhmIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2Vy cGMvcGxhdGZvcm1zL3Bvd2VybnYvcGNpLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9w b3dlcm52L3BjaS5jCkBAIC0xODksOCArMTg5LDggQEAgc3RhdGljIHZvaWQgcG52X3BjaV9kdW1w X3A3aW9jX2RpYWdfZGF0YShzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKmhvc2UsCiAJCQlkYXRhLT5k bWExRXJyb3JMb2cwLCBkYXRhLT5kbWExRXJyb3JMb2cxKTsKIAogCWZvciAoaSA9IDA7IGkgPCBP UEFMX1A3SU9DX05VTV9QRVNUX1JFR1M7IGkrKykgewotCQlpZiAoKGRhdGEtPnBlc3RBW2ldID4+ IDYzKSA9PSAwICYmCi0JCSAgICAoZGF0YS0+cGVzdEJbaV0gPj4gNjMpID09IDApCisJCWlmICgo YmU2NF90b19jcHUoZGF0YS0+cGVzdEFbaV0pID4+IDYzKSA9PSAwICYmCisJCSAgICAoYmU2NF90 b19jcHUoZGF0YS0+cGVzdEJbaV0pID4+IDYzKSA9PSAwKQogCQkJY29udGludWU7CiAKIAkJcHJf aW5mbygiUEVbJTNkXSBBL0I6ICUwMTZsbHggJTAxNmxseFxuIiwKZGlmZiAtLWdpdCBhL2FyY2gv cG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9scGFyLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1z L3BzZXJpZXMvbHBhci5jCmluZGV4IGNjZjZmMTYyZjY5Yy4uZmM3ZTg5OGY0NmRhIDEwMDY0NAot LS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvbHBhci5jCisrKyBiL2FyY2gvcG93 ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9scGFyLmMKQEAgLTM5MSw3ICszOTEsNyBAQCBzdGF0aWMg dm9pZCBfX3BTZXJpZXNfbHBhcl9odWdlcGFnZV9pbnZhbGlkYXRlKHVuc2lnbmVkIGxvbmcgKnNs b3QsCiAJCQkJCSAgICAgdW5zaWduZWQgbG9uZyAqdnBuLCBpbnQgY291bnQsCiAJCQkJCSAgICAg aW50IHBzaXplLCBpbnQgc3NpemUpCiB7Ci0JdW5zaWduZWQgbG9uZyBwYXJhbVs4XTsKKwl1bnNp Z25lZCBsb25nIHBhcmFtW1BMUEFSX0hDQUxMOV9CVUZTSVpFXTsKIAlpbnQgaSA9IDAsIHBpeCA9 IDAsIHJjOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwOwogCWludCBsb2NrX3RsYmllID0gIW1t dV9oYXNfZmVhdHVyZShNTVVfRlRSX0xPQ0tMRVNTX1RMQklFKTsKQEAgLTUwOCw3ICs1MDgsNyBA QCBzdGF0aWMgdm9pZCBwU2VyaWVzX2xwYXJfZmx1c2hfaGFzaF9yYW5nZSh1bnNpZ25lZCBsb25n IG51bWJlciwgaW50IGxvY2FsKQogCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwOwogCXN0cnVjdCBw cGM2NF90bGJfYmF0Y2ggKmJhdGNoID0gJl9fZ2V0X2NwdV92YXIocHBjNjRfdGxiX2JhdGNoKTsK IAlpbnQgbG9ja190bGJpZSA9ICFtbXVfaGFzX2ZlYXR1cmUoTU1VX0ZUUl9MT0NLTEVTU19UTEJJ RSk7Ci0JdW5zaWduZWQgbG9uZyBwYXJhbVs5XTsKKwl1bnNpZ25lZCBsb25nIHBhcmFtW1BMUEFS X0hDQUxMOV9CVUZTSVpFXTsKIAl1bnNpZ25lZCBsb25nIGhhc2gsIGluZGV4LCBzaGlmdCwgaGlk eCwgc2xvdDsKIAlyZWFsX3B0ZV90IHB0ZTsKIAlpbnQgcHNpemUsIHNzaXplOwpkaWZmIC0tZ2l0 IGEvYXJjaC9zMzkwL2h5cGZzL2h5cGZzX2RpYWcuYyBiL2FyY2gvczM5MC9oeXBmcy9oeXBmc19k aWFnLmMKaW5kZXggNWVlZmZlZWZhZTA2Li5kNzMxMjRkZjVkMzIgMTAwNjQ0Ci0tLSBhL2FyY2gv czM5MC9oeXBmcy9oeXBmc19kaWFnLmMKKysrIGIvYXJjaC9zMzkwL2h5cGZzL2h5cGZzX2RpYWcu YwpAQCAtNTE3LDExICs1MTcsMTEgQEAgc3RhdGljIGludCBkaWFnMjI0KHZvaWQgKnB0cikKIHN0 YXRpYyBpbnQgZGlhZzIyNF9nZXRfbmFtZV90YWJsZSh2b2lkKQogewogCS8qIG1lbW9yeSBtdXN0 IGJlIGJlbG93IDJHQiAqLwotCWRpYWcyMjRfY3B1X25hbWVzID0ga21hbGxvYyhQQUdFX1NJWkUs IEdGUF9LRVJORUwgfCBHRlBfRE1BKTsKKwlkaWFnMjI0X2NwdV9uYW1lcyA9IChjaGFyICopIF9f Z2V0X2ZyZWVfcGFnZShHRlBfS0VSTkVMIHwgR0ZQX0RNQSk7CiAJaWYgKCFkaWFnMjI0X2NwdV9u YW1lcykKIAkJcmV0dXJuIC1FTk9NRU07CiAJaWYgKGRpYWcyMjQoZGlhZzIyNF9jcHVfbmFtZXMp KSB7Ci0JCWtmcmVlKGRpYWcyMjRfY3B1X25hbWVzKTsKKwkJZnJlZV9wYWdlKCh1bnNpZ25lZCBs b25nKSBkaWFnMjI0X2NwdV9uYW1lcyk7CiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAl9CiAJRUJD QVNDKGRpYWcyMjRfY3B1X25hbWVzICsgMTYsICgqZGlhZzIyNF9jcHVfbmFtZXMgKyAxKSAqIDE2 KTsKQEAgLTUzMCw3ICs1MzAsNyBAQCBzdGF0aWMgaW50IGRpYWcyMjRfZ2V0X25hbWVfdGFibGUo dm9pZCkKIAogc3RhdGljIHZvaWQgZGlhZzIyNF9kZWxldGVfbmFtZV90YWJsZSh2b2lkKQogewot CWtmcmVlKGRpYWcyMjRfY3B1X25hbWVzKTsKKwlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpIGRp YWcyMjRfY3B1X25hbWVzKTsKIH0KIAogc3RhdGljIGludCBkaWFnMjI0X2lkeDJuYW1lKGludCBp bmRleCwgY2hhciAqbmFtZSkKZGlmZiAtLWdpdCBhL2FyY2gvdGlsZS9rZXJuZWwvdGltZS5jIGIv YXJjaC90aWxlL2tlcm5lbC90aW1lLmMKaW5kZXggNDYyZGNkMGMxNzAwLi44OWY4N2JkNWRkYTMg MTAwNjQ0Ci0tLSBhL2FyY2gvdGlsZS9rZXJuZWwvdGltZS5jCisrKyBiL2FyY2gvdGlsZS9rZXJu ZWwvdGltZS5jCkBAIC0yMTYsOCArMjE2LDggQEAgdm9pZCBkb190aW1lcl9pbnRlcnJ1cHQoc3Ry dWN0IHB0X3JlZ3MgKnJlZ3MsIGludCBmYXVsdF9udW0pCiAgKi8KIHVuc2lnbmVkIGxvbmcgbG9u ZyBzY2hlZF9jbG9jayh2b2lkKQogewotCXJldHVybiBjbG9ja3NvdXJjZV9jeWMybnMoZ2V0X2N5 Y2xlcygpLAotCQkJCSAgc2NoZWRfY2xvY2tfbXVsdCwgU0NIRURfQ0xPQ0tfU0hJRlQpOworCXJl dHVybiBtdWx0X2ZyYWMoZ2V0X2N5Y2xlcygpLAorCQkJIHNjaGVkX2Nsb2NrX211bHQsIDFVTEwg PDwgU0NIRURfQ0xPQ0tfU0hJRlQpOwogfQogCiBpbnQgc2V0dXBfcHJvZmlsaW5nX3RpbWVyKHVu c2lnbmVkIGludCBtdWx0aXBsaWVyKQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20v a2V4ZWMuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2tleGVjLmgKaW5kZXggMTc0ODNhNDkyZjE4 Li4wYzU5ZGYzNjY0ZDUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2tleGVjLmgK KysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va2V4ZWMuaApAQCAtMTY1LDYgKzE2NSw3IEBAIHN0 cnVjdCBraW1hZ2VfYXJjaCB7CiAKIHR5cGVkZWYgdm9pZCBjcmFzaF92bWNsZWFyX2ZuKHZvaWQp OwogZXh0ZXJuIGNyYXNoX3ZtY2xlYXJfZm4gX19yY3UgKmNyYXNoX3ZtY2xlYXJfbG9hZGVkX3Zt Y3NzOworZXh0ZXJuIHZvaWQga2R1bXBfbm1pX3Nob290ZG93bl9jcHVzKHZvaWQpOwogCiAjZW5k aWYgLyogX19BU1NFTUJMWV9fICovCiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNt L3NtcC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vc21wLmgKaW5kZXggOGNkMjdlMDhlMjNjLi42 M2JhZjE2OTM0ZDAgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NtcC5oCisrKyBi L2FyY2gveDg2L2luY2x1ZGUvYXNtL3NtcC5oCkBAIC02OSw2ICs2OSw3IEBAIHN0cnVjdCBzbXBf b3BzIHsKIAl2b2lkICgqc21wX2NwdXNfZG9uZSkodW5zaWduZWQgbWF4X2NwdXMpOwogCiAJdm9p ZCAoKnN0b3Bfb3RoZXJfY3B1cykoaW50IHdhaXQpOworCXZvaWQgKCpjcmFzaF9zdG9wX290aGVy X2NwdXMpKHZvaWQpOwogCXZvaWQgKCpzbXBfc2VuZF9yZXNjaGVkdWxlKShpbnQgY3B1KTsKIAog CWludCAoKmNwdV91cCkodW5zaWduZWQgY3B1LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRpZGxlKTsK ZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCBiL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL3VhY2Nlc3MuaAppbmRleCAwZDU5MmUwYTViODQuLjQ2NTUwNDYwOTg2OSAxMDA2 NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCisrKyBiL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL3VhY2Nlc3MuaApAQCAtMzI5LDcgKzMyOSw3IEBAIGRvIHsJCQkJCQkJCQlcCiAj ZGVmaW5lIF9fZ2V0X3VzZXJfYXNtX3U2NCh4LCBwdHIsIHJldHZhbCwgZXJycmV0KSBcCiAJIF9f Z2V0X3VzZXJfYXNtKHgsIHB0ciwgcmV0dmFsLCAicSIsICIiLCAiPXIiLCBlcnJyZXQpCiAjZGVm aW5lIF9fZ2V0X3VzZXJfYXNtX2V4X3U2NCh4LCBwdHIpIFwKLQkgX19nZXRfdXNlcl9hc21fZXgo eCwgcHRyLCAicSIsICIiLCAiPXIiKQorCSBfX2dldF91c2VyX2FzbV9leCh4LCBwdHIsICJxIiwg IiIsICI9JnIiKQogI2VuZGlmCiAKICNkZWZpbmUgX19nZXRfdXNlcl9zaXplKHgsIHB0ciwgc2l6 ZSwgcmV0dmFsLCBlcnJyZXQpCQkJXApAQCAtMzcyLDEzICszNzIsMTMgQEAgZG8gewkJCQkJCQkJ CVwKIAlfX2Noa191c2VyX3B0cihwdHIpOwkJCQkJCVwKIAlzd2l0Y2ggKHNpemUpIHsJCQkJCQkJ XAogCWNhc2UgMToJCQkJCQkJCVwKLQkJX19nZXRfdXNlcl9hc21fZXgoeCwgcHRyLCAiYiIsICJi IiwgIj1xIik7CQlcCisJCV9fZ2V0X3VzZXJfYXNtX2V4KHgsIHB0ciwgImIiLCAiYiIsICI9JnEi KTsJCVwKIAkJYnJlYWs7CQkJCQkJCVwKIAljYXNlIDI6CQkJCQkJCQlcCi0JCV9fZ2V0X3VzZXJf YXNtX2V4KHgsIHB0ciwgInciLCAidyIsICI9ciIpOwkJXAorCQlfX2dldF91c2VyX2FzbV9leCh4 LCBwdHIsICJ3IiwgInciLCAiPSZyIik7CQlcCiAJCWJyZWFrOwkJCQkJCQlcCiAJY2FzZSA0OgkJ CQkJCQkJXAotCQlfX2dldF91c2VyX2FzbV9leCh4LCBwdHIsICJsIiwgImsiLCAiPXIiKTsJCVwK KwkJX19nZXRfdXNlcl9hc21fZXgoeCwgcHRyLCAibCIsICJrIiwgIj0mciIpOwkJXAogCQlicmVh azsJCQkJCQkJXAogCWNhc2UgODoJCQkJCQkJCVwKIAkJX19nZXRfdXNlcl9hc21fZXhfdTY0KHgs IHB0cik7CQkJCVwKQEAgLTM5Miw3ICszOTIsNyBAQCBkbyB7CQkJCQkJCQkJXAogCWFzbSB2b2xh dGlsZSgiMToJbW92Iml0eXBlIiAlMSwlInJ0eXBlIjBcbiIJCVwKIAkJICAgICAiMjpcbiIJCQkJ CQlcCiAJCSAgICAgX0FTTV9FWFRBQkxFX0VYKDFiLCAyYikJCQkJXAotCQkgICAgIDogbHR5cGUo eCkgOiAibSIgKF9fbShhZGRyKSkpCisJCSAgICAgOiBsdHlwZSh4KSA6ICJtIiAoX19tKGFkZHIp KSwgIjAiICgwKSkKIAogI2RlZmluZSBfX3B1dF91c2VyX25vY2hlY2soeCwgcHRyLCBzaXplKQkJ CVwKICh7CQkJCQkJCQlcCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvYXBpYy94MmFwaWNf dXZfeC5jIGIvYXJjaC94ODYva2VybmVsL2FwaWMveDJhcGljX3V2X3guYwppbmRleCAyOTNiNDFk ZjU0ZWYuLjRiZjRiMDE2OTZmMyAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2FwaWMveDJh cGljX3V2X3guYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvYXBpYy94MmFwaWNfdXZfeC5jCkBAIC02 MzMsOSArNjMzLDkgQEAgc3RhdGljIF9faW5pdCB2b2lkIG1hcF9tbWlvaF9oaWdoX3V2MyhpbnQg aW5kZXgsIGludCBtaW5fcG5vZGUsIGludCBtYXhfcG5vZGUpCiAJCQkJbCA9IGxpOwogCQkJfQog CQkJYWRkcjEgPSAoYmFzZSA8PCBzaGlmdCkgKwotCQkJCWYgKiAodW5zaWduZWQgbG9uZykoMSA8 PCBtX2lvKTsKKwkJCQlmICogKDFVTEwgPDwgbV9pbyk7CiAJCQlhZGRyMiA9IChiYXNlIDw8IHNo aWZ0KSArCi0JCQkJKGwgKyAxKSAqICh1bnNpZ25lZCBsb25nKSgxIDw8IG1faW8pOworCQkJCShs ICsgMSkgKiAoMVVMTCA8PCBtX2lvKTsKIAkJCXByX2luZm8oIlVWOiAlc1slMDNkLi4lMDNkXSBO QVNJRCAweCUwNHggQUREUiAweCUwMTZseCAtIDB4JTAxNmx4XG4iLAogCQkJCWlkLCBmaSwgbGks IGxuYXNpZCwgYWRkcjEsIGFkZHIyKTsKIAkJCWlmIChtYXhfaW8gPCBsKQpkaWZmIC0tZ2l0IGEv YXJjaC94ODYva2VybmVsL2NwdS9wZXJmX2V2ZW50LmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L3Bl cmZfZXZlbnQuYwppbmRleCA3MGY1ZWIyNDU1N2QuLjEwNTQ0YjlhZTNkMCAxMDA2NDQKLS0tIGEv YXJjaC94ODYva2VybmVsL2NwdS9wZXJmX2V2ZW50LmMKKysrIGIvYXJjaC94ODYva2VybmVsL2Nw dS9wZXJmX2V2ZW50LmMKQEAgLTY0LDcgKzY0LDcgQEAgdTY0IHg4Nl9wZXJmX2V2ZW50X3VwZGF0 ZShzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCiAJaW50IHNoaWZ0ID0gNjQgLSB4ODZfcG11LmNu dHZhbF9iaXRzOwogCXU2NCBwcmV2X3Jhd19jb3VudCwgbmV3X3Jhd19jb3VudDsKIAlpbnQgaWR4 ID0gaHdjLT5pZHg7Ci0JczY0IGRlbHRhOworCXU2NCBkZWx0YTsKIAogCWlmIChpZHggPT0gSU5U RUxfUE1DX0lEWF9GSVhFRF9CVFMpCiAJCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYv a2VybmVsL2NwdS9wZXJmX2V2ZW50X2ludGVsLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L3BlcmZf ZXZlbnRfaW50ZWwuYwppbmRleCAwZjU2ZjE1NTczZTkuLjU5ODYzNzMwMmRiOCAxMDA2NDQKLS0t IGEvYXJjaC94ODYva2VybmVsL2NwdS9wZXJmX2V2ZW50X2ludGVsLmMKKysrIGIvYXJjaC94ODYv a2VybmVsL2NwdS9wZXJmX2V2ZW50X2ludGVsLmMKQEAgLTI2NjksNyArMjY2OSw3IEBAIF9faW5p dCBpbnQgaW50ZWxfcG11X2luaXQodm9pZCkKIAogCS8qIFN1cHBvcnQgZnVsbCB3aWR0aCBjb3Vu dGVycyB1c2luZyBhbHRlcm5hdGl2ZSBNU1IgcmFuZ2UgKi8KIAlpZiAoeDg2X3BtdS5pbnRlbF9j YXAuZnVsbF93aWR0aF93cml0ZSkgewotCQl4ODZfcG11Lm1heF9wZXJpb2QgPSB4ODZfcG11LmNu dHZhbF9tYXNrOworCQl4ODZfcG11Lm1heF9wZXJpb2QgPSB4ODZfcG11LmNudHZhbF9tYXNrID4+ IDE7CiAJCXg4Nl9wbXUucGVyZmN0ciA9IE1TUl9JQTMyX1BNQzA7CiAJCXByX2NvbnQoImZ1bGwt d2lkdGggY291bnRlcnMsICIpOwogCX0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcmFz aC5jIGIvYXJjaC94ODYva2VybmVsL2NyYXNoLmMKaW5kZXggNTA3ZGU4MDY2NTk0Li4xOWYxMGRh YzhmZTYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcmFzaC5jCisrKyBiL2FyY2gveDg2 L2tlcm5lbC9jcmFzaC5jCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyB2b2lkIGtkdW1wX25taV9j YWxsYmFjayhpbnQgY3B1LCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKIAlkaXNhYmxlX2xvY2FsX0FQ SUMoKTsKIH0KIAotc3RhdGljIHZvaWQga2R1bXBfbm1pX3Nob290ZG93bl9jcHVzKHZvaWQpCit2 b2lkIGtkdW1wX25taV9zaG9vdGRvd25fY3B1cyh2b2lkKQogewogCWluX2NyYXNoX2tleGVjID0g MTsKIAlubWlfc2hvb3Rkb3duX2NwdXMoa2R1bXBfbm1pX2NhbGxiYWNrKTsKQEAgLTkwLDggKzkw LDI0IEBAIHN0YXRpYyB2b2lkIGtkdW1wX25taV9zaG9vdGRvd25fY3B1cyh2b2lkKQogCWRpc2Fi bGVfbG9jYWxfQVBJQygpOwogfQogCisvKiBPdmVycmlkZSB0aGUgd2VhayBmdW5jdGlvbiBpbiBr ZXJuZWwvcGFuaWMuYyAqLwordm9pZCBjcmFzaF9zbXBfc2VuZF9zdG9wKHZvaWQpCit7CisJc3Rh dGljIGludCBjcHVzX3N0b3BwZWQ7CisKKwlpZiAoY3B1c19zdG9wcGVkKQorCQlyZXR1cm47CisK KwlpZiAoc21wX29wcy5jcmFzaF9zdG9wX290aGVyX2NwdXMpCisJCXNtcF9vcHMuY3Jhc2hfc3Rv cF9vdGhlcl9jcHVzKCk7CisJZWxzZQorCQlzbXBfc2VuZF9zdG9wKCk7CisKKwljcHVzX3N0b3Bw ZWQgPSAxOworfQorCiAjZWxzZQotc3RhdGljIHZvaWQga2R1bXBfbm1pX3Nob290ZG93bl9jcHVz KHZvaWQpCit2b2lkIGNyYXNoX3NtcF9zZW5kX3N0b3Aodm9pZCkKIHsKIAkvKiBUaGVyZSBhcmUg bm8gY3B1cyB0byBzaG9vdGRvd24gKi8KIH0KQEAgLTExMCw3ICsxMjYsNyBAQCB2b2lkIG5hdGl2 ZV9tYWNoaW5lX2NyYXNoX3NodXRkb3duKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogCS8qIFRoZSBr ZXJuZWwgaXMgYnJva2VuIHNvIGRpc2FibGUgaW50ZXJydXB0cyAqLwogCWxvY2FsX2lycV9kaXNh YmxlKCk7CiAKLQlrZHVtcF9ubWlfc2hvb3Rkb3duX2NwdXMoKTsKKwljcmFzaF9zbXBfc2VuZF9z dG9wKCk7CiAKIAkvKgogCSAqIFZNQ0xFQVIgVk1DU3MgbG9hZGVkIG9uIHRoaXMgY3B1IGlmIG5l ZWRlZC4KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9oZWFkXzMyLlMgYi9hcmNoL3g4Ni9r ZXJuZWwvaGVhZF8zMi5TCmluZGV4IDMwYTJhYTM3ODJmYS4uODc5ZTY3YWNmNDYzIDEwMDY0NAot LS0gYS9hcmNoL3g4Ni9rZXJuZWwvaGVhZF8zMi5TCisrKyBiL2FyY2gveDg2L2tlcm5lbC9oZWFk XzMyLlMKQEAgLTU2NCw3ICs1NjQsNyBAQCBlYXJseV9pZHRfaGFuZGxlcl9jb21tb246CiAJbW92 bCAlZWF4LCVkcwogCW1vdmwgJWVheCwlZXMKIAotCWNtcGwgJChfX0tFUk5FTF9DUyksMzIoJWVz cCkKKwljbXB3ICQoX19LRVJORUxfQ1MpLDMyKCVlc3ApCiAJam5lIDEwZgogCiAJbGVhbCAyOCgl ZXNwKSwlZWF4CSMgUG9pbnRlciB0byAlZWlwCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwv cHRyYWNlLmMgYi9hcmNoL3g4Ni9rZXJuZWwvcHRyYWNlLmMKaW5kZXggYjFhNWRmYTI0Nzg5Li44 MDcyNjk2YWEyMGYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9wdHJhY2UuYworKysgYi9h cmNoL3g4Ni9rZXJuZWwvcHRyYWNlLmMKQEAgLTE5MCw4ICsxOTAsOCBAQCB1bnNpZ25lZCBsb25n IGtlcm5lbF9zdGFja19wb2ludGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogCQlyZXR1cm4gc3A7 CiAKIAlwcmV2X2VzcCA9ICh1MzIgKikoY29udGV4dCk7Ci0JaWYgKHByZXZfZXNwKQotCQlyZXR1 cm4gKHVuc2lnbmVkIGxvbmcpcHJldl9lc3A7CisJaWYgKCpwcmV2X2VzcCkKKwkJcmV0dXJuICh1 bnNpZ25lZCBsb25nKSpwcmV2X2VzcDsKIAogCXJldHVybiAodW5zaWduZWQgbG9uZylyZWdzOwog fQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL3NtcC5jIGIvYXJjaC94ODYva2VybmVsL3Nt cC5jCmluZGV4IGJlOGUxYmRlMDdhYS4uMDBlNjdkMDVjYmQwIDEwMDY0NAotLS0gYS9hcmNoL3g4 Ni9rZXJuZWwvc21wLmMKKysrIGIvYXJjaC94ODYva2VybmVsL3NtcC5jCkBAIC0zMSw2ICszMSw4 IEBACiAjaW5jbHVkZSA8YXNtL2FwaWMuaD4KICNpbmNsdWRlIDxhc20vbm1pLmg+CiAjaW5jbHVk ZSA8YXNtL3RyYWNlL2lycV92ZWN0b3JzLmg+CisjaW5jbHVkZSA8YXNtL2tleGVjLmg+CisKIC8q CiAgKglTb21lIG5vdGVzIG9uIHg4NiBwcm9jZXNzb3IgYnVncyBhZmZlY3RpbmcgU01QIG9wZXJh dGlvbjoKICAqCkBAIC0zNDcsNiArMzQ5LDkgQEAgc3RydWN0IHNtcF9vcHMgc21wX29wcyA9IHsK IAkuc21wX2NwdXNfZG9uZQkJPSBuYXRpdmVfc21wX2NwdXNfZG9uZSwKIAogCS5zdG9wX290aGVy X2NwdXMJPSBuYXRpdmVfc3RvcF9vdGhlcl9jcHVzLAorI2lmIGRlZmluZWQoQ09ORklHX0tFWEVD X0NPUkUpCisJLmNyYXNoX3N0b3Bfb3RoZXJfY3B1cwk9IGtkdW1wX25taV9zaG9vdGRvd25fY3B1 cywKKyNlbmRpZgogCS5zbXBfc2VuZF9yZXNjaGVkdWxlCT0gbmF0aXZlX3NtcF9zZW5kX3Jlc2No ZWR1bGUsCiAKIAkuY3B1X3VwCQkJPSBuYXRpdmVfY3B1X3VwLApkaWZmIC0tZ2l0IGEvYXJjaC94 ODYva3ZtL2VtdWxhdGUuYyBiL2FyY2gveDg2L2t2bS9lbXVsYXRlLmMKaW5kZXggNTc2MDRjMGU1 YTUzLi5mMGI3YmNlN2UwYmEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9lbXVsYXRlLmMKKysr IGIvYXJjaC94ODYva3ZtL2VtdWxhdGUuYwpAQCAtMTk4MSwxNiArMTk4MSwxMCBAQCBzdGF0aWMg aW50IGVtX2lyZXQoc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCiBzdGF0aWMgaW50IGVt X2ptcF9mYXIoc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCiB7CiAJaW50IHJjOwotCXVu c2lnbmVkIHNob3J0IHNlbCwgb2xkX3NlbDsKLQlzdHJ1Y3QgZGVzY19zdHJ1Y3Qgb2xkX2Rlc2Ms IG5ld19kZXNjOwotCWNvbnN0IHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMgKm9wcyA9IGN0eHQtPm9w czsKKwl1bnNpZ25lZCBzaG9ydCBzZWw7CisJc3RydWN0IGRlc2Nfc3RydWN0IG5ld19kZXNjOwog CXU4IGNwbCA9IGN0eHQtPm9wcy0+Y3BsKGN0eHQpOwogCi0JLyogQXNzaWdubWVudCBvZiBSSVAg bWF5IG9ubHkgZmFpbCBpbiA2NC1iaXQgbW9kZSAqLwotCWlmIChjdHh0LT5tb2RlID09IFg4NkVN VUxfTU9ERV9QUk9UNjQpCi0JCW9wcy0+Z2V0X3NlZ21lbnQoY3R4dCwgJm9sZF9zZWwsICZvbGRf ZGVzYywgTlVMTCwKLQkJCQkgVkNQVV9TUkVHX0NTKTsKLQogCW1lbWNweSgmc2VsLCBjdHh0LT5z cmMudmFscHRyICsgY3R4dC0+b3BfYnl0ZXMsIDIpOwogCiAJcmMgPSBfX2xvYWRfc2VnbWVudF9k ZXNjcmlwdG9yKGN0eHQsIHNlbCwgVkNQVV9TUkVHX0NTLCBjcGwsIGZhbHNlLApAQCAtMTk5OSwx MiArMTk5MywxMCBAQCBzdGF0aWMgaW50IGVtX2ptcF9mYXIoc3RydWN0IHg4Nl9lbXVsYXRlX2N0 eHQgKmN0eHQpCiAJCXJldHVybiByYzsKIAogCXJjID0gYXNzaWduX2VpcF9mYXIoY3R4dCwgY3R4 dC0+c3JjLnZhbCwgbmV3X2Rlc2MubCk7Ci0JaWYgKHJjICE9IFg4NkVNVUxfQ09OVElOVUUpIHsK LQkJV0FSTl9PTihjdHh0LT5tb2RlICE9IFg4NkVNVUxfTU9ERV9QUk9UNjQpOwotCQkvKiBhc3Np Z25pbmcgZWlwIGZhaWxlZDsgcmVzdG9yZSB0aGUgb2xkIGNzICovCi0JCW9wcy0+c2V0X3NlZ21l bnQoY3R4dCwgb2xkX3NlbCwgJm9sZF9kZXNjLCAwLCBWQ1BVX1NSRUdfQ1MpOwotCQlyZXR1cm4g cmM7Ci0JfQorCS8qIEVycm9yIGhhbmRsaW5nIGlzIG5vdCBpbXBsZW1lbnRlZC4gKi8KKwlpZiAo cmMgIT0gWDg2RU1VTF9DT05USU5VRSkKKwkJcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOwor CiAJcmV0dXJuIHJjOwogfQogCkBAIC0yMDcwLDE0ICsyMDYyLDggQEAgc3RhdGljIGludCBlbV9y ZXRfZmFyKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQogewogCWludCByYzsKIAl1bnNp Z25lZCBsb25nIGVpcCwgY3M7Ci0JdTE2IG9sZF9jczsKIAlpbnQgY3BsID0gY3R4dC0+b3BzLT5j cGwoY3R4dCk7Ci0Jc3RydWN0IGRlc2Nfc3RydWN0IG9sZF9kZXNjLCBuZXdfZGVzYzsKLQljb25z dCBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzICpvcHMgPSBjdHh0LT5vcHM7Ci0KLQlpZiAoY3R4dC0+ bW9kZSA9PSBYODZFTVVMX01PREVfUFJPVDY0KQotCQlvcHMtPmdldF9zZWdtZW50KGN0eHQsICZv bGRfY3MsICZvbGRfZGVzYywgTlVMTCwKLQkJCQkgVkNQVV9TUkVHX0NTKTsKKwlzdHJ1Y3QgZGVz Y19zdHJ1Y3QgbmV3X2Rlc2M7CiAKIAlyYyA9IGVtdWxhdGVfcG9wKGN0eHQsICZlaXAsIGN0eHQt Pm9wX2J5dGVzKTsKIAlpZiAocmMgIT0gWDg2RU1VTF9DT05USU5VRSkKQEAgLTIwOTMsMTAgKzIw NzksMTAgQEAgc3RhdGljIGludCBlbV9yZXRfZmFyKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpj dHh0KQogCWlmIChyYyAhPSBYODZFTVVMX0NPTlRJTlVFKQogCQlyZXR1cm4gcmM7CiAJcmMgPSBh c3NpZ25fZWlwX2ZhcihjdHh0LCBlaXAsIG5ld19kZXNjLmwpOwotCWlmIChyYyAhPSBYODZFTVVM X0NPTlRJTlVFKSB7Ci0JCVdBUk5fT04oY3R4dC0+bW9kZSAhPSBYODZFTVVMX01PREVfUFJPVDY0 KTsKLQkJb3BzLT5zZXRfc2VnbWVudChjdHh0LCBvbGRfY3MsICZvbGRfZGVzYywgMCwgVkNQVV9T UkVHX0NTKTsKLQl9CisJLyogRXJyb3IgaGFuZGxpbmcgaXMgbm90IGltcGxlbWVudGVkLiAqLwor CWlmIChyYyAhPSBYODZFTVVMX0NPTlRJTlVFKQorCQlyZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFC TEU7CisKIAlyZXR1cm4gcmM7CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBi L2FyY2gveDg2L2t2bS94ODYuYwppbmRleCA0MjI2ZDhmZDkzZDEuLmUwYTI3ZDY4NGQyOSAxMDA2 NDQKLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jCisrKyBiL2FyY2gveDg2L2t2bS94ODYuYwpAQCAt MTgwLDcgKzE4MCwxOCBAQCBzdGF0aWMgdm9pZCBrdm1fb25fdXNlcl9yZXR1cm4oc3RydWN0IHVz ZXJfcmV0dXJuX25vdGlmaWVyICp1cm4pCiAJc3RydWN0IGt2bV9zaGFyZWRfbXNycyAqbG9jYWxz CiAJCT0gY29udGFpbmVyX29mKHVybiwgc3RydWN0IGt2bV9zaGFyZWRfbXNycywgdXJuKTsKIAlz dHJ1Y3Qga3ZtX3NoYXJlZF9tc3JfdmFsdWVzICp2YWx1ZXM7CisJdW5zaWduZWQgbG9uZyBmbGFn czsKIAorCS8qCisJICogRGlzYWJsaW5nIGlycXMgYXQgdGhpcyBwb2ludCBzaW5jZSB0aGUgZm9s bG93aW5nIGNvZGUgY291bGQgYmUKKwkgKiBpbnRlcnJ1cHRlZCBhbmQgZXhlY3V0ZWQgdGhyb3Vn aCBrdm1fYXJjaF9oYXJkd2FyZV9kaXNhYmxlKCkKKwkgKi8KKwlsb2NhbF9pcnFfc2F2ZShmbGFn cyk7CisJaWYgKGxvY2Fscy0+cmVnaXN0ZXJlZCkgeworCQlsb2NhbHMtPnJlZ2lzdGVyZWQgPSBm YWxzZTsKKwkJdXNlcl9yZXR1cm5fbm90aWZpZXJfdW5yZWdpc3Rlcih1cm4pOworCX0KKwlsb2Nh bF9pcnFfcmVzdG9yZShmbGFncyk7CiAJZm9yIChzbG90ID0gMDsgc2xvdCA8IHNoYXJlZF9tc3Jz X2dsb2JhbC5ucjsgKytzbG90KSB7CiAJCXZhbHVlcyA9ICZsb2NhbHMtPnZhbHVlc1tzbG90XTsK IAkJaWYgKHZhbHVlcy0+aG9zdCAhPSB2YWx1ZXMtPmN1cnIpIHsKQEAgLTE4OCw4ICsxOTksNiBA QCBzdGF0aWMgdm9pZCBrdm1fb25fdXNlcl9yZXR1cm4oc3RydWN0IHVzZXJfcmV0dXJuX25vdGlm aWVyICp1cm4pCiAJCQl2YWx1ZXMtPmN1cnIgPSB2YWx1ZXMtPmhvc3Q7CiAJCX0KIAl9Ci0JbG9j YWxzLT5yZWdpc3RlcmVkID0gZmFsc2U7Ci0JdXNlcl9yZXR1cm5fbm90aWZpZXJfdW5yZWdpc3Rl cih1cm4pOwogfQogCiBzdGF0aWMgdm9pZCBzaGFyZWRfbXNyX3VwZGF0ZSh1bnNpZ25lZCBzbG90 LCB1MzIgbXNyKQpAQCAtMzI5Niw2ICszMzA1LDcgQEAgbG9uZyBrdm1fYXJjaF92Y3B1X2lvY3Rs KHN0cnVjdCBmaWxlICpmaWxwLAogCX07CiAJY2FzZSBLVk1fU0VUX1ZBUElDX0FERFI6IHsKIAkJ c3RydWN0IGt2bV92YXBpY19hZGRyIHZhOworCQlpbnQgaWR4OwogCiAJCXIgPSAtRUlOVkFMOwog CQlpZiAoIWlycWNoaXBfaW5fa2VybmVsKHZjcHUtPmt2bSkpCkBAIC0zMzAzLDcgKzMzMTMsOSBA QCBsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsCiAJCXIgPSAtRUZB VUxUOwogCQlpZiAoY29weV9mcm9tX3VzZXIoJnZhLCBhcmdwLCBzaXplb2YgdmEpKQogCQkJZ290 byBvdXQ7CisJCWlkeCA9IHNyY3VfcmVhZF9sb2NrKCZ2Y3B1LT5rdm0tPnNyY3UpOwogCQlyID0g a3ZtX2xhcGljX3NldF92YXBpY19hZGRyKHZjcHUsIHZhLnZhcGljX2FkZHIpOworCQlzcmN1X3Jl YWRfdW5sb2NrKCZ2Y3B1LT5rdm0tPnNyY3UsIGlkeCk7CiAJCWJyZWFrOwogCX0KIAljYXNlIEtW TV9YODZfU0VUVVBfTUNFOiB7CkBAIC02ODA5LDExICs2ODIxLDEzIEBAIHZvaWQga3ZtX3B1dF9n dWVzdF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCiB2b2lkIGt2bV9hcmNoX3ZjcHVfZnJl ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7CisJdm9pZCAqd2JpbnZkX2RpcnR5X21hc2sgPSB2 Y3B1LT5hcmNoLndiaW52ZF9kaXJ0eV9tYXNrOworCiAJa3ZtY2xvY2tfcmVzZXQodmNwdSk7CiAK LQlmcmVlX2NwdW1hc2tfdmFyKHZjcHUtPmFyY2gud2JpbnZkX2RpcnR5X21hc2spOwogCWZ4X2Zy ZWUodmNwdSk7CiAJa3ZtX3g4Nl9vcHMtPnZjcHVfZnJlZSh2Y3B1KTsKKwlmcmVlX2NwdW1hc2tf dmFyKHdiaW52ZF9kaXJ0eV9tYXNrKTsKIH0KIAogc3RydWN0IGt2bV92Y3B1ICprdm1fYXJjaF92 Y3B1X2NyZWF0ZShzdHJ1Y3Qga3ZtICprdm0sCmRpZmYgLS1naXQgYS9ibG9jay9ibGstY2dyb3Vw LmggYi9ibG9jay9ibGstY2dyb3VwLmgKaW5kZXggZDNmZDdhYTNkMmEzLi43NDg1YzU5ZmY2MjUg MTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1jZ3JvdXAuaAorKysgYi9ibG9jay9ibGstY2dyb3VwLmgK QEAgLTQ3LDcgKzQ3LDcgQEAgc3RydWN0IGJsa2NnIHsKIAlzcGlubG9ja190CQkJbG9jazsKIAog CXN0cnVjdCByYWRpeF90cmVlX3Jvb3QJCWJsa2dfdHJlZTsKLQlzdHJ1Y3QgYmxrY2dfZ3EJCQkq YmxrZ19oaW50OworCXN0cnVjdCBibGtjZ19ncQlfX3JjdQkJKmJsa2dfaGludDsKIAlzdHJ1Y3Qg aGxpc3RfaGVhZAkJYmxrZ19saXN0OwogCiAJLyogZm9yIHBvbGljaWVzIHRvIHRlc3Qgd2hldGhl ciBhc3NvY2lhdGVkIGJsa2NnIGhhcyBjaGFuZ2VkICovCmRpZmYgLS1naXQgYS9ibG9jay9ic2cu YyBiL2Jsb2NrL2JzZy5jCmluZGV4IGZmNDZhZGRkZTVkOC4uOGFmNDg4MGFiMmEyIDEwMDY0NAot LS0gYS9ibG9jay9ic2cuYworKysgYi9ibG9jay9ic2cuYwpAQCAtNjc2LDYgKzY3Niw5IEBAIGJz Z193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90 IGNvdW50LCBsb2ZmX3QgKnBwb3MpCiAKIAlkcHJpbnRrKCIlczogd3JpdGUgJVpkIGJ5dGVzXG4i LCBiZC0+bmFtZSwgY291bnQpOwogCisJaWYgKHVubGlrZWx5KHNlZ21lbnRfZXEoZ2V0X2ZzKCks IEtFUk5FTF9EUykpKQorCQlyZXR1cm4gLUVJTlZBTDsKKwogCWJzZ19zZXRfYmxvY2soYmQsIGZp bGUpOwogCiAJYnl0ZXNfd3JpdHRlbiA9IDA7CmRpZmYgLS1naXQgYS9jcnlwdG8vYXN5bmNfdHgv YXN5bmNfcHEuYyBiL2NyeXB0by9hc3luY190eC9hc3luY19wcS5jCmluZGV4IDdlYjI2NGU2NTI2 Ny4uMWNlMDNkMzhjODE3IDEwMDY0NAotLS0gYS9jcnlwdG8vYXN5bmNfdHgvYXN5bmNfcHEuYwor KysgYi9jcnlwdG8vYXN5bmNfdHgvYXN5bmNfcHEuYwpAQCAtMzU1LDggKzM1NSw2IEBAIGFzeW5j X3N5bmRyb21lX3ZhbChzdHJ1Y3QgcGFnZSAqKmJsb2NrcywgdW5zaWduZWQgaW50IG9mZnNldCwg aW50IGRpc2tzLAogCiAJCWRtYV9zZXRfdW5tYXAodHgsIHVubWFwKTsKIAkJYXN5bmNfdHhfc3Vi bWl0KGNoYW4sIHR4LCBzdWJtaXQpOwotCi0JCXJldHVybiB0eDsKIAl9IGVsc2UgewogCQlzdHJ1 Y3QgcGFnZSAqcF9zcmMgPSBQKGJsb2NrcywgZGlza3MpOwogCQlzdHJ1Y3QgcGFnZSAqcV9zcmMg PSBRKGJsb2NrcywgZGlza3MpOwpAQCAtNDExLDkgKzQwOSwxMSBAQCBhc3luY19zeW5kcm9tZV92 YWwoc3RydWN0IHBhZ2UgKipibG9ja3MsIHVuc2lnbmVkIGludCBvZmZzZXQsIGludCBkaXNrcywK IAkJc3VibWl0LT5jYl9wYXJhbSA9IGNiX3BhcmFtX29yaWc7CiAJCXN1Ym1pdC0+ZmxhZ3MgPSBm bGFnc19vcmlnOwogCQlhc3luY190eF9zeW5jX2VwaWxvZyhzdWJtaXQpOwotCi0JCXJldHVybiBO VUxMOworCQl0eCA9IE5VTEw7CiAJfQorCWRtYWVuZ2luZV91bm1hcF9wdXQodW5tYXApOworCisJ cmV0dXJuIHR4OwogfQogRVhQT1JUX1NZTUJPTF9HUEwoYXN5bmNfc3luZHJvbWVfdmFsKTsKIApk aWZmIC0tZ2l0IGEvY3J5cHRvL2djbS5jIGIvY3J5cHRvL2djbS5jCmluZGV4IGQyYTBmNzM3MWNm MC4uNDliNmZiMjBjY2ViIDEwMDY0NAotLS0gYS9jcnlwdG8vZ2NtLmMKKysrIGIvY3J5cHRvL2dj bS5jCkBAIC0xMDksNyArMTA5LDcgQEAgc3RhdGljIGludCBjcnlwdG9fZ2NtX3NldGtleShzdHJ1 Y3QgY3J5cHRvX2FlYWQgKmFlYWQsIGNvbnN0IHU4ICprZXksCiAJc3RydWN0IGNyeXB0b19hYmxr Y2lwaGVyICpjdHIgPSBjdHgtPmN0cjsKIAlzdHJ1Y3QgewogCQliZTEyOCBoYXNoOwotCQl1OCBp dls4XTsKKwkJdTggaXZbMTZdOwogCiAJCXN0cnVjdCBjcnlwdG9fZ2NtX3NldGtleV9yZXN1bHQg cmVzdWx0OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvYXBlaS9naGVzLmMgYi9kcml2ZXJz L2FjcGkvYXBlaS9naGVzLmMKaW5kZXggZGFiN2NiNzM0OWRmLi4yODJjMjFjMzdmYzQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvYWNwaS9hcGVpL2doZXMuYworKysgYi9kcml2ZXJzL2FjcGkvYXBlaS9n aGVzLmMKQEAgLTY3OSw3ICs2NzksNyBAQCBzdGF0aWMgaW50IGdoZXNfcHJvYyhzdHJ1Y3QgZ2hl cyAqZ2hlcykKIAlnaGVzX2RvX3Byb2MoZ2hlcywgZ2hlcy0+ZXN0YXR1cyk7CiBvdXQ6CiAJZ2hl c19jbGVhcl9lc3RhdHVzKGdoZXMpOwotCXJldHVybiAwOworCXJldHVybiByYzsKIH0KIAogc3Rh dGljIHZvaWQgZ2hlc19hZGRfdGltZXIoc3RydWN0IGdoZXMgKmdoZXMpCmRpZmYgLS1naXQgYS9k cml2ZXJzL2Jhc2UvcGxhdGZvcm0uYyBiL2RyaXZlcnMvYmFzZS9wbGF0Zm9ybS5jCmluZGV4IDkx MDZmMzA0NjU2OS4uNmU3Njk2ZGIxYjc2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jhc2UvcGxhdGZv cm0uYworKysgYi9kcml2ZXJzL2Jhc2UvcGxhdGZvcm0uYwpAQCAtOTMsNyArOTMsNyBAQCBpbnQg cGxhdGZvcm1fZ2V0X2lycShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGlu dCBudW0pCiAJCWludCByZXQ7CiAKIAkJcmV0ID0gb2ZfaXJxX2dldChkZXYtPmRldi5vZl9ub2Rl LCBudW0pOwotCQlpZiAocmV0ID49IDAgfHwgcmV0ID09IC1FUFJPQkVfREVGRVIpCisJCWlmIChy ZXQgPiAwIHx8IHJldCA9PSAtRVBST0JFX0RFRkVSKQogCQkJcmV0dXJuIHJldDsKIAl9CiAKQEAg LTE0Miw3ICsxNDIsNyBAQCBpbnQgcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqZGV2LCBjb25zdCBjaGFyICpuYW1lKQogCQlpbnQgcmV0OwogCiAJCXJldCA9 IG9mX2lycV9nZXRfYnluYW1lKGRldi0+ZGV2Lm9mX25vZGUsIG5hbWUpOwotCQlpZiAocmV0ID49 IDAgfHwgcmV0ID09IC1FUFJPQkVfREVGRVIpCisJCWlmIChyZXQgPiAwIHx8IHJldCA9PSAtRVBS T0JFX0RFRkVSKQogCQkJcmV0dXJuIHJldDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFz ZS9wb3dlci9tYWluLmMgYi9kcml2ZXJzL2Jhc2UvcG93ZXIvbWFpbi5jCmluZGV4IDBmNjMyOTU4 YTRkZC4uM2ZjNzg3YTAyZmEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jhc2UvcG93ZXIvbWFpbi5j CisrKyBiL2RyaXZlcnMvYmFzZS9wb3dlci9tYWluLmMKQEAgLTEwMTQsNiArMTAxNCw4IEBAIHN0 YXRpYyBpbnQgX19kZXZpY2Vfc3VzcGVuZF9ub2lycShzdHJ1Y3QgZGV2aWNlICpkZXYsIHBtX21l c3NhZ2VfdCBzdGF0ZSwgYm9vbCBhCiAJY2hhciAqaW5mbyA9IE5VTEw7CiAJaW50IGVycm9yID0g MDsKIAorCWRwbV93YWl0X2Zvcl9jaGlsZHJlbihkZXYsIGFzeW5jKTsKKwogCWlmIChhc3luY19l cnJvcikKIAkJZ290byBDb21wbGV0ZTsKIApAQCAtMTAyNSw4ICsxMDI3LDYgQEAgc3RhdGljIGlu dCBfX2RldmljZV9zdXNwZW5kX25vaXJxKHN0cnVjdCBkZXZpY2UgKmRldiwgcG1fbWVzc2FnZV90 IHN0YXRlLCBib29sIGEKIAlpZiAoZGV2LT5wb3dlci5zeXNjb3JlIHx8IGRldi0+cG93ZXIuZGly ZWN0X2NvbXBsZXRlKQogCQlnb3RvIENvbXBsZXRlOwogCi0JZHBtX3dhaXRfZm9yX2NoaWxkcmVu KGRldiwgYXN5bmMpOwotCiAJaWYgKGRldi0+cG1fZG9tYWluKSB7CiAJCWluZm8gPSAibm9pcnEg cG93ZXIgZG9tYWluICI7CiAJCWNhbGxiYWNrID0gcG1fbm9pcnFfb3AoJmRldi0+cG1fZG9tYWlu LT5vcHMsIHN0YXRlKTsKQEAgLTExNTUsNiArMTE1NSw4IEBAIHN0YXRpYyBpbnQgX19kZXZpY2Vf c3VzcGVuZF9sYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgcG1fbWVzc2FnZV90IHN0YXRlLCBib29s IGFzCiAKIAlfX3BtX3J1bnRpbWVfZGlzYWJsZShkZXYsIGZhbHNlKTsKIAorCWRwbV93YWl0X2Zv cl9jaGlsZHJlbihkZXYsIGFzeW5jKTsKKwogCWlmIChhc3luY19lcnJvcikKIAkJZ290byBDb21w bGV0ZTsKIApAQCAtMTE2Niw4ICsxMTY4LDYgQEAgc3RhdGljIGludCBfX2RldmljZV9zdXNwZW5k X2xhdGUoc3RydWN0IGRldmljZSAqZGV2LCBwbV9tZXNzYWdlX3Qgc3RhdGUsIGJvb2wgYXMKIAlp ZiAoZGV2LT5wb3dlci5zeXNjb3JlIHx8IGRldi0+cG93ZXIuZGlyZWN0X2NvbXBsZXRlKQogCQln b3RvIENvbXBsZXRlOwogCi0JZHBtX3dhaXRfZm9yX2NoaWxkcmVuKGRldiwgYXN5bmMpOwotCiAJ aWYgKGRldi0+cG1fZG9tYWluKSB7CiAJCWluZm8gPSAibGF0ZSBwb3dlciBkb21haW4gIjsKIAkJ Y2FsbGJhY2sgPSBwbV9sYXRlX2Vhcmx5X29wKCZkZXYtPnBtX2RvbWFpbi0+b3BzLCBzdGF0ZSk7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL252bWUtY29yZS5jIGIvZHJpdmVycy9ibG9jay9u dm1lLWNvcmUuYwppbmRleCAwMjM1MWUyMTcxNjUuLmI4MTViNDI1YTA5OSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ibG9jay9udm1lLWNvcmUuYworKysgYi9kcml2ZXJzL2Jsb2NrL252bWUtY29yZS5j CkBAIC0yMTk2LDcgKzIxOTYsNyBAQCBzdGF0aWMgaW50IG52bWVfc2V0dXBfaW9fcXVldWVzKHN0 cnVjdCBudm1lX2RldiAqZGV2KQogCXJlc3VsdCA9IHF1ZXVlX3JlcXVlc3RfaXJxKGRldiwgYWRt aW5xLCBhZG1pbnEtPmlycW5hbWUpOwogCWlmIChyZXN1bHQpIHsKIAkJYWRtaW5xLT5xX3N1c3Bl bmRlZCA9IDE7Ci0JCWdvdG8gZnJlZV9xdWV1ZXM7CisJCXJldHVybiByZXN1bHQ7CiAJfQogCiAJ LyogRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBxdWV1ZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIHVz YWJsZSAqLwpAQCAtMjIwNCwxMCArMjIwNCw2IEBAIHN0YXRpYyBpbnQgbnZtZV9zZXR1cF9pb19x dWV1ZXMoc3RydWN0IG52bWVfZGV2ICpkZXYpCiAJbnZtZV9hc3NpZ25faW9fcXVldWVzKGRldik7 CiAKIAlyZXR1cm4gMDsKLQotIGZyZWVfcXVldWVzOgotCW52bWVfZnJlZV9xdWV1ZXMoZGV2LCAx KTsKLQlyZXR1cm4gcmVzdWx0OwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL2h3 X3JhbmRvbS9jb3JlLmMgYi9kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2NvcmUuYwppbmRleCAyYTQ1 MWIxNGIzY2MuLmQ0NTYzMDNmNDYyNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL2h3X3JhbmRv bS9jb3JlLmMKKysrIGIvZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9jb3JlLmMKQEAgLTY1LDEyICs2 NSwxMiBAQCBzdGF0aWMgc2l6ZV90IHJuZ19idWZmZXJfc2l6ZSh2b2lkKQogCiBzdGF0aWMgdm9p ZCBhZGRfZWFybHlfcmFuZG9tbmVzcyhzdHJ1Y3QgaHdybmcgKnJuZykKIHsKLQl1bnNpZ25lZCBj aGFyIGJ5dGVzWzE2XTsKIAlpbnQgYnl0ZXNfcmVhZDsKKwlzaXplX3Qgc2l6ZSA9IG1pbl90KHNp emVfdCwgMTYsIHJuZ19idWZmZXJfc2l6ZSgpKTsKIAotCWJ5dGVzX3JlYWQgPSBybmdfZ2V0X2Rh dGEocm5nLCBieXRlcywgc2l6ZW9mKGJ5dGVzKSwgMSk7CisJYnl0ZXNfcmVhZCA9IHJuZ19nZXRf ZGF0YShybmcsIHJuZ19idWZmZXIsIHNpemUsIDEpOwogCWlmIChieXRlc19yZWFkID4gMCkKLQkJ YWRkX2RldmljZV9yYW5kb21uZXNzKGJ5dGVzLCBieXRlc19yZWFkKTsKKwkJYWRkX2RldmljZV9y YW5kb21uZXNzKHJuZ19idWZmZXIsIGJ5dGVzX3JlYWQpOwogfQogCiBzdGF0aWMgaW5saW5lIGlu dCBod3JuZ19pbml0KHN0cnVjdCBod3JuZyAqcm5nKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFy L3ZpcnRpb19jb25zb2xlLmMgYi9kcml2ZXJzL2NoYXIvdmlydGlvX2NvbnNvbGUuYwppbmRleCA3 MzI5NGIyNzBiOTMuLjdkNThiMjkxODEzOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL3ZpcnRp b19jb25zb2xlLmMKKysrIGIvZHJpdmVycy9jaGFyL3ZpcnRpb19jb25zb2xlLmMKQEAgLTE1MzIs MTkgKzE1MzIsMjkgQEAgc3RhdGljIHZvaWQgcmVtb3ZlX3BvcnRfZGF0YShzdHJ1Y3QgcG9ydCAq cG9ydCkKIAlzcGluX2xvY2tfaXJxKCZwb3J0LT5pbmJ1Zl9sb2NrKTsKIAkvKiBSZW1vdmUgdW51 c2VkIGRhdGEgdGhpcyBwb3J0IG1pZ2h0IGhhdmUgcmVjZWl2ZWQuICovCiAJZGlzY2FyZF9wb3J0 X2RhdGEocG9ydCk7CisJc3Bpbl91bmxvY2tfaXJxKCZwb3J0LT5pbmJ1Zl9sb2NrKTsKIAogCS8q IFJlbW92ZSBidWZmZXJzIHdlIHF1ZXVlZCB1cCBmb3IgdGhlIEhvc3QgdG8gc2VuZCB1cyBkYXRh IGluLiAqLwotCXdoaWxlICgoYnVmID0gdmlydHF1ZXVlX2RldGFjaF91bnVzZWRfYnVmKHBvcnQt PmluX3ZxKSkpCi0JCWZyZWVfYnVmKGJ1ZiwgdHJ1ZSk7Ci0Jc3Bpbl91bmxvY2tfaXJxKCZwb3J0 LT5pbmJ1Zl9sb2NrKTsKKwlkbyB7CisJCXNwaW5fbG9ja19pcnEoJnBvcnQtPmluYnVmX2xvY2sp OworCQlidWYgPSB2aXJ0cXVldWVfZGV0YWNoX3VudXNlZF9idWYocG9ydC0+aW5fdnEpOworCQlz cGluX3VubG9ja19pcnEoJnBvcnQtPmluYnVmX2xvY2spOworCQlpZiAoYnVmKQorCQkJZnJlZV9i dWYoYnVmLCB0cnVlKTsKKwl9IHdoaWxlIChidWYpOwogCiAJc3Bpbl9sb2NrX2lycSgmcG9ydC0+ b3V0dnFfbG9jayk7CiAJcmVjbGFpbV9jb25zdW1lZF9idWZmZXJzKHBvcnQpOworCXNwaW5fdW5s b2NrX2lycSgmcG9ydC0+b3V0dnFfbG9jayk7CiAKIAkvKiBGcmVlIHBlbmRpbmcgYnVmZmVycyBm cm9tIHRoZSBvdXQtcXVldWUuICovCi0Jd2hpbGUgKChidWYgPSB2aXJ0cXVldWVfZGV0YWNoX3Vu dXNlZF9idWYocG9ydC0+b3V0X3ZxKSkpCi0JCWZyZWVfYnVmKGJ1ZiwgdHJ1ZSk7Ci0Jc3Bpbl91 bmxvY2tfaXJxKCZwb3J0LT5vdXR2cV9sb2NrKTsKKwlkbyB7CisJCXNwaW5fbG9ja19pcnEoJnBv cnQtPm91dHZxX2xvY2spOworCQlidWYgPSB2aXJ0cXVldWVfZGV0YWNoX3VudXNlZF9idWYocG9y dC0+b3V0X3ZxKTsKKwkJc3Bpbl91bmxvY2tfaXJxKCZwb3J0LT5vdXR2cV9sb2NrKTsKKwkJaWYg KGJ1ZikKKwkJCWZyZWVfYnVmKGJ1ZiwgdHJ1ZSk7CisJfSB3aGlsZSAoYnVmKTsKIH0KIAogLyoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL2Nsay1kaXZpZGVyLmMgYi9kcml2ZXJzL2Nsay9jbGst ZGl2aWRlci5jCmluZGV4IGE1MjE1NGNhZjUyNi4uZmY5MWI2Y2NlZmY2IDEwMDY0NAotLS0gYS9k cml2ZXJzL2Nsay9jbGstZGl2aWRlci5jCisrKyBiL2RyaXZlcnMvY2xrL2Nsay1kaXZpZGVyLmMK QEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgaW50IGNsa19kaXZpZGVyX2Jlc3RkaXYoc3RydWN0 IGNsa19odyAqaHcsIHVuc2lnbmVkIGxvbmcgcmF0ZSwKIAogCS8qIGlmIHJlYWQgb25seSwganVz dCByZXR1cm4gY3VycmVudCB2YWx1ZSAqLwogCWlmIChkaXZpZGVyLT5mbGFncyAmIENMS19ESVZJ REVSX1JFQURfT05MWSkgewotCQliZXN0ZGl2ID0gcmVhZGwoZGl2aWRlci0+cmVnKSA+PiBkaXZp ZGVyLT5zaGlmdDsKKwkJYmVzdGRpdiA9IGNsa19yZWFkbChkaXZpZGVyLT5yZWcpID4+IGRpdmlk ZXItPnNoaWZ0OwogCQliZXN0ZGl2ICY9IGRpdl9tYXNrKGRpdmlkZXIpOwogCQliZXN0ZGl2ID0g X2dldF9kaXYoZGl2aWRlciwgYmVzdGRpdik7CiAJCXJldHVybiBiZXN0ZGl2OwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9maXJld2lyZS9uZXQuYyBiL2RyaXZlcnMvZmlyZXdpcmUvbmV0LmMKaW5kZXgg M2U4ZmNiZjUxMWUyLi4wNDIwNjgzYTEzMmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZmlyZXdpcmUv bmV0LmMKKysrIGIvZHJpdmVycy9maXJld2lyZS9uZXQuYwpAQCAtNzMsMTMgKzczLDEzIEBAIHN0 cnVjdCByZmMyNzM0X2hlYWRlciB7CiAKICNkZWZpbmUgZnduZXRfZ2V0X2hkcl9sZihoKQkJKCgo aCktPncwICYgMHhjMDAwMDAwMCkgPj4gMzApCiAjZGVmaW5lIGZ3bmV0X2dldF9oZHJfZXRoZXJf dHlwZShoKQkoKChoKS0+dzAgJiAweDAwMDBmZmZmKSkKLSNkZWZpbmUgZnduZXRfZ2V0X2hkcl9k Z19zaXplKGgpCSgoKGgpLT53MCAmIDB4MGZmZjAwMDApID4+IDE2KQorI2RlZmluZSBmd25ldF9n ZXRfaGRyX2RnX3NpemUoaCkJKCgoKGgpLT53MCAmIDB4MGZmZjAwMDApID4+IDE2KSArIDEpCiAj ZGVmaW5lIGZ3bmV0X2dldF9oZHJfZmdfb2ZmKGgpCQkoKChoKS0+dzAgJiAweDAwMDAwZmZmKSkK ICNkZWZpbmUgZnduZXRfZ2V0X2hkcl9kZ2woaCkJCSgoKGgpLT53MSAmIDB4ZmZmZjAwMDApID4+ IDE2KQogCi0jZGVmaW5lIGZ3bmV0X3NldF9oZHJfbGYobGYpCQkoKGxmKSAgPDwgMzApCisjZGVm aW5lIGZ3bmV0X3NldF9oZHJfbGYobGYpCQkoKGxmKSA8PCAzMCkKICNkZWZpbmUgZnduZXRfc2V0 X2hkcl9ldGhlcl90eXBlKGV0KQkoZXQpCi0jZGVmaW5lIGZ3bmV0X3NldF9oZHJfZGdfc2l6ZShk Z3MpCSgoZGdzKSA8PCAxNikKKyNkZWZpbmUgZnduZXRfc2V0X2hkcl9kZ19zaXplKGRncykJKCgo ZGdzKSAtIDEpIDw8IDE2KQogI2RlZmluZSBmd25ldF9zZXRfaGRyX2ZnX29mZihmZ28pCShmZ28p CiAKICNkZWZpbmUgZnduZXRfc2V0X2hkcl9kZ2woZGdsKQkJKChkZ2wpIDw8IDE2KQpAQCAtNjM1 LDcgKzYzNSw3IEBAIHN0YXRpYyBpbnQgZnduZXRfaW5jb21pbmdfcGFja2V0KHN0cnVjdCBmd25l dF9kZXZpY2UgKmRldiwgX19iZTMyICpidWYsIGludCBsZW4sCiAJCWZnX29mZiA9IGZ3bmV0X2dl dF9oZHJfZmdfb2ZmKCZoZHIpOwogCX0KIAlkYXRhZ3JhbV9sYWJlbCA9IGZ3bmV0X2dldF9oZHJf ZGdsKCZoZHIpOwotCWRnX3NpemUgPSBmd25ldF9nZXRfaGRyX2RnX3NpemUoJmhkcik7IC8qID8/ PyArIDEgKi8KKwlkZ19zaXplID0gZnduZXRfZ2V0X2hkcl9kZ19zaXplKCZoZHIpOwogCiAJaWYg KGZnX29mZiArIGxlbiA+IGRnX3NpemUpCiAJCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncGlvL2dwaW8tbXZlYnUuYyBiL2RyaXZlcnMvZ3Bpby9ncGlvLW12ZWJ1LmMKaW5kZXggYTkz ZGRiYzE5NDhlLi41MDM2Y2M3N2I0ZTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3Bpby9ncGlvLW12 ZWJ1LmMKKysrIGIvZHJpdmVycy9ncGlvL2dwaW8tbXZlYnUuYwpAQCAtMjk0LDEwICsyOTQsMTAg QEAgc3RhdGljIHZvaWQgbXZlYnVfZ3Bpb19pcnFfYWNrKHN0cnVjdCBpcnFfZGF0YSAqZCkKIHsK IAlzdHJ1Y3QgaXJxX2NoaXBfZ2VuZXJpYyAqZ2MgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0 YShkKTsKIAlzdHJ1Y3QgbXZlYnVfZ3Bpb19jaGlwICptdmNoaXAgPSBnYy0+cHJpdmF0ZTsKLQl1 MzIgbWFzayA9IH4oMSA8PCAoZC0+aXJxIC0gZ2MtPmlycV9iYXNlKSk7CisJdTMyIG1hc2sgPSBk LT5tYXNrOwogCiAJaXJxX2djX2xvY2soZ2MpOwotCXdyaXRlbF9yZWxheGVkKG1hc2ssIG12ZWJ1 X2dwaW9yZWdfZWRnZV9jYXVzZShtdmNoaXApKTsKKwl3cml0ZWxfcmVsYXhlZCh+bWFzaywgbXZl YnVfZ3Bpb3JlZ19lZGdlX2NhdXNlKG12Y2hpcCkpOwogCWlycV9nY191bmxvY2soZ2MpOwogfQog CkBAIC0zMDYsNyArMzA2LDcgQEAgc3RhdGljIHZvaWQgbXZlYnVfZ3Bpb19lZGdlX2lycV9tYXNr KHN0cnVjdCBpcnFfZGF0YSAqZCkKIAlzdHJ1Y3QgaXJxX2NoaXBfZ2VuZXJpYyAqZ2MgPSBpcnFf ZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTsKIAlzdHJ1Y3QgbXZlYnVfZ3Bpb19jaGlwICptdmNo aXAgPSBnYy0+cHJpdmF0ZTsKIAlzdHJ1Y3QgaXJxX2NoaXBfdHlwZSAqY3QgPSBpcnFfZGF0YV9n ZXRfY2hpcF90eXBlKGQpOwotCXUzMiBtYXNrID0gMSA8PCAoZC0+aXJxIC0gZ2MtPmlycV9iYXNl KTsKKwl1MzIgbWFzayA9IGQtPm1hc2s7CiAKIAlpcnFfZ2NfbG9jayhnYyk7CiAJY3QtPm1hc2tf Y2FjaGVfcHJpdiAmPSB+bWFzazsKQEAgLTMyMCw4ICszMjAsNyBAQCBzdGF0aWMgdm9pZCBtdmVi dV9ncGlvX2VkZ2VfaXJxX3VubWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpCiAJc3RydWN0IGlycV9j aGlwX2dlbmVyaWMgKmdjID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7CiAJc3RydWN0 IG12ZWJ1X2dwaW9fY2hpcCAqbXZjaGlwID0gZ2MtPnByaXZhdGU7CiAJc3RydWN0IGlycV9jaGlw X3R5cGUgKmN0ID0gaXJxX2RhdGFfZ2V0X2NoaXBfdHlwZShkKTsKLQotCXUzMiBtYXNrID0gMSA8 PCAoZC0+aXJxIC0gZ2MtPmlycV9iYXNlKTsKKwl1MzIgbWFzayA9IGQtPm1hc2s7CiAKIAlpcnFf Z2NfbG9jayhnYyk7CiAJY3QtPm1hc2tfY2FjaGVfcHJpdiB8PSBtYXNrOwpAQCAtMzM0LDggKzMz Myw3IEBAIHN0YXRpYyB2b2lkIG12ZWJ1X2dwaW9fbGV2ZWxfaXJxX21hc2soc3RydWN0IGlycV9k YXRhICpkKQogCXN0cnVjdCBpcnFfY2hpcF9nZW5lcmljICpnYyA9IGlycV9kYXRhX2dldF9pcnFf Y2hpcF9kYXRhKGQpOwogCXN0cnVjdCBtdmVidV9ncGlvX2NoaXAgKm12Y2hpcCA9IGdjLT5wcml2 YXRlOwogCXN0cnVjdCBpcnFfY2hpcF90eXBlICpjdCA9IGlycV9kYXRhX2dldF9jaGlwX3R5cGUo ZCk7Ci0KLQl1MzIgbWFzayA9IDEgPDwgKGQtPmlycSAtIGdjLT5pcnFfYmFzZSk7CisJdTMyIG1h c2sgPSBkLT5tYXNrOwogCiAJaXJxX2djX2xvY2soZ2MpOwogCWN0LT5tYXNrX2NhY2hlX3ByaXYg Jj0gfm1hc2s7CkBAIC0zNDgsOCArMzQ2LDcgQEAgc3RhdGljIHZvaWQgbXZlYnVfZ3Bpb19sZXZl bF9pcnFfdW5tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZCkKIAlzdHJ1Y3QgaXJxX2NoaXBfZ2VuZXJp YyAqZ2MgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTsKIAlzdHJ1Y3QgbXZlYnVfZ3Bp b19jaGlwICptdmNoaXAgPSBnYy0+cHJpdmF0ZTsKIAlzdHJ1Y3QgaXJxX2NoaXBfdHlwZSAqY3Qg PSBpcnFfZGF0YV9nZXRfY2hpcF90eXBlKGQpOwotCi0JdTMyIG1hc2sgPSAxIDw8IChkLT5pcnEg LSBnYy0+aXJxX2Jhc2UpOworCXUzMiBtYXNrID0gZC0+bWFzazsKIAogCWlycV9nY19sb2NrKGdj KTsKIAljdC0+bWFza19jYWNoZV9wcml2IHw9IG1hc2s7CkBAIC00NjQsNyArNDYxLDcgQEAgc3Rh dGljIHZvaWQgbXZlYnVfZ3Bpb19pcnFfaGFuZGxlcih1bnNpZ25lZCBpbnQgaXJxLCBzdHJ1Y3Qg aXJxX2Rlc2MgKmRlc2MpCiAJZm9yIChpID0gMDsgaSA8IG12Y2hpcC0+Y2hpcC5uZ3BpbzsgaSsr KSB7CiAJCWludCBpcnE7CiAKLQkJaXJxID0gbXZjaGlwLT5pcnFiYXNlICsgaTsKKwkJaXJxID0g aXJxX2ZpbmRfbWFwcGluZyhtdmNoaXAtPmRvbWFpbiwgaSk7CiAKIAkJaWYgKCEoY2F1c2UgJiAo MSA8PCBpKSkpCiAJCQljb250aW51ZTsKQEAgLTU3Miw4ICs1NjksMTAgQEAgc3RhdGljIGludCBt dmVidV9ncGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJc3RydWN0IGly cV9jaGlwX3R5cGUgKmN0OwogCXN0cnVjdCBjbGsgKmNsazsKIAl1bnNpZ25lZCBpbnQgbmdwaW9z OworCWJvb2wgaGF2ZV9pcnFzOwogCWludCBzb2NfdmFyaWFudDsKIAlpbnQgaSwgY3B1LCBpZDsK KwlpbnQgZXJyOwogCiAJbWF0Y2ggPSBvZl9tYXRjaF9kZXZpY2UobXZlYnVfZ3Bpb19vZl9tYXRj aCwgJnBkZXYtPmRldik7CiAJaWYgKG1hdGNoKQpAQCAtNTgxLDYgKzU4MCw5IEBAIHN0YXRpYyBp bnQgbXZlYnVfZ3Bpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCWVsc2UK IAkJc29jX3ZhcmlhbnQgPSBNVkVCVV9HUElPX1NPQ19WQVJJQU5UX09SSU9OOwogCisJLyogU29t ZSBncGlvIGNvbnRyb2xsZXJzIGRvIG5vdCBwcm92aWRlIGlycSBzdXBwb3J0ICovCisJaGF2ZV9p cnFzID0gb2ZfaXJxX2NvdW50KG5wKSAhPSAwOworCiAJbXZjaGlwID0gZGV2bV9remFsbG9jKCZw ZGV2LT5kZXYsIHNpemVvZihzdHJ1Y3QgbXZlYnVfZ3Bpb19jaGlwKSwgR0ZQX0tFUk5FTCk7CiAJ aWYgKCFtdmNoaXApCiAJCXJldHVybiAtRU5PTUVNOwpAQCAtNjEwLDcgKzYxMiw4IEBAIHN0YXRp YyBpbnQgbXZlYnVfZ3Bpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCW12 Y2hpcC0+Y2hpcC5nZXQgPSBtdmVidV9ncGlvX2dldDsKIAltdmNoaXAtPmNoaXAuZGlyZWN0aW9u X291dHB1dCA9IG12ZWJ1X2dwaW9fZGlyZWN0aW9uX291dHB1dDsKIAltdmNoaXAtPmNoaXAuc2V0 ID0gbXZlYnVfZ3Bpb19zZXQ7Ci0JbXZjaGlwLT5jaGlwLnRvX2lycSA9IG12ZWJ1X2dwaW9fdG9f aXJxOworCWlmIChoYXZlX2lycXMpCisJCW12Y2hpcC0+Y2hpcC50b19pcnEgPSBtdmVidV9ncGlv X3RvX2lycTsKIAltdmNoaXAtPmNoaXAuYmFzZSA9IGlkICogTVZFQlVfTUFYX0dQSU9fUEVSX0JB Tks7CiAJbXZjaGlwLT5jaGlwLm5ncGlvID0gbmdwaW9zOwogCW12Y2hpcC0+Y2hpcC5jYW5fc2xl ZXAgPSBmYWxzZTsKQEAgLTY3MSwzNCArNjc0LDMwIEBAIHN0YXRpYyBpbnQgbXZlYnVfZ3Bpb19w cm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCWdwaW9jaGlwX2FkZCgmbXZjaGlw LT5jaGlwKTsKIAogCS8qIFNvbWUgZ3BpbyBjb250cm9sbGVycyBkbyBub3QgcHJvdmlkZSBpcnEg c3VwcG9ydCAqLwotCWlmICghb2ZfaXJxX2NvdW50KG5wKSkKKwlpZiAoIWhhdmVfaXJxcykKIAkJ cmV0dXJuIDA7CiAKLQkvKiBTZXR1cCB0aGUgaW50ZXJydXB0IGhhbmRsZXJzLiBFYWNoIGNoaXAg Y2FuIGhhdmUgdXAgdG8gNAotCSAqIGludGVycnVwdCBoYW5kbGVycywgd2l0aCBlYWNoIGhhbmRs ZXIgZGVhbGluZyB3aXRoIDggR1BJTwotCSAqIHBpbnMuICovCi0JZm9yIChpID0gMDsgaSA8IDQ7 IGkrKykgewotCQlpbnQgaXJxOwotCQlpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIGkpOwot CQlpZiAoaXJxIDwgMCkKLQkJCWNvbnRpbnVlOwotCQlpcnFfc2V0X2hhbmRsZXJfZGF0YShpcnEs IG12Y2hpcCk7Ci0JCWlycV9zZXRfY2hhaW5lZF9oYW5kbGVyKGlycSwgbXZlYnVfZ3Bpb19pcnFf aGFuZGxlcik7Ci0JfQotCi0JbXZjaGlwLT5pcnFiYXNlID0gaXJxX2FsbG9jX2Rlc2NzKC0xLCAw LCBuZ3Bpb3MsIC0xKTsKLQlpZiAobXZjaGlwLT5pcnFiYXNlIDwgMCkgewotCQlkZXZfZXJyKCZw ZGV2LT5kZXYsICJubyBpcnFzXG4iKTsKLQkJcmV0dXJuIG12Y2hpcC0+aXJxYmFzZTsKKwltdmNo aXAtPmRvbWFpbiA9CisJICAgIGlycV9kb21haW5fYWRkX2xpbmVhcihucCwgbmdwaW9zLCAmaXJx X2dlbmVyaWNfY2hpcF9vcHMsIE5VTEwpOworCWlmICghbXZjaGlwLT5kb21haW4pIHsKKwkJZGV2 X2VycigmcGRldi0+ZGV2LCAiY291bGRuJ3QgYWxsb2NhdGUgaXJxIGRvbWFpbiAlcyAoRFQpLlxu IiwKKwkJCW12Y2hpcC0+Y2hpcC5sYWJlbCk7CisJCXJldHVybiAtRU5PREVWOwogCX0KIAotCWdj ID0gaXJxX2FsbG9jX2dlbmVyaWNfY2hpcCgibXZlYnVfZ3Bpb19pcnEiLCAyLCBtdmNoaXAtPmly cWJhc2UsCi0JCQkJICAgIG12Y2hpcC0+bWVtYmFzZSwgaGFuZGxlX2xldmVsX2lycSk7Ci0JaWYg KCFnYykgewotCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJDYW5ub3QgYWxsb2NhdGUgZ2VuZXJpYyBp cnFfY2hpcFxuIik7Ci0JCXJldHVybiAtRU5PTUVNOworCWVyciA9IGlycV9hbGxvY19kb21haW5f Z2VuZXJpY19jaGlwcygKKwkgICAgbXZjaGlwLT5kb21haW4sIG5ncGlvcywgMiwgbnAtPm5hbWUs IGhhbmRsZV9sZXZlbF9pcnEsCisJICAgIElSUV9OT1JFUVVFU1QgfCBJUlFfTk9QUk9CRSB8IElS UV9MRVZFTCwgMCwgMCk7CisJaWYgKGVycikgeworCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJjb3Vs ZG4ndCBhbGxvY2F0ZSBpcnEgY2hpcHMgJXMgKERUKS5cbiIsCisJCQltdmNoaXAtPmNoaXAubGFi ZWwpOworCQlnb3RvIGVycl9kb21haW47CiAJfQogCisJLyogTk9URTogVGhlIGNvbW1vbiBhY2Nl c3NvcnMgY2Fubm90IGJlIHVzZWQgYmVjYXVzZSBvZiB0aGUgcGVyY3B1CisJICogYWNjZXNzIHRv IHRoZSBtYXNrIHJlZ2lzdGVycworCSAqLworCWdjID0gaXJxX2dldF9kb21haW5fZ2VuZXJpY19j aGlwKG12Y2hpcC0+ZG9tYWluLCAwKTsKIAlnYy0+cHJpdmF0ZSA9IG12Y2hpcDsKIAljdCA9ICZn Yy0+Y2hpcF90eXBlc1swXTsKIAljdC0+dHlwZSA9IElSUV9UWVBFX0xFVkVMX0hJR0ggfCBJUlFf VFlQRV9MRVZFTF9MT1c7CkBAIC03MTYsMjQgKzcxNSwyNSBAQCBzdGF0aWMgaW50IG12ZWJ1X2dw aW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAljdC0+aGFuZGxlciA9IGhh bmRsZV9lZGdlX2lycTsKIAljdC0+Y2hpcC5uYW1lID0gbXZjaGlwLT5jaGlwLmxhYmVsOwogCi0J aXJxX3NldHVwX2dlbmVyaWNfY2hpcChnYywgSVJRX01TSyhuZ3Bpb3MpLCAwLAotCQkJICAgICAg IElSUV9OT1JFUVVFU1QsIElSUV9MRVZFTCB8IElSUV9OT1BST0JFKTsKKwkvKiBTZXR1cCB0aGUg aW50ZXJydXB0IGhhbmRsZXJzLiBFYWNoIGNoaXAgY2FuIGhhdmUgdXAgdG8gNAorCSAqIGludGVy cnVwdCBoYW5kbGVycywgd2l0aCBlYWNoIGhhbmRsZXIgZGVhbGluZyB3aXRoIDggR1BJTworCSAq IHBpbnMuCisJICovCisJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworCQlpbnQgaXJxID0gcGxh dGZvcm1fZ2V0X2lycShwZGV2LCBpKTsKIAotCS8qIFNldHVwIGlycSBkb21haW4gb24gdG9wIG9m IHRoZSBnZW5lcmljIGNoaXAuICovCi0JbXZjaGlwLT5kb21haW4gPSBpcnFfZG9tYWluX2FkZF9z aW1wbGUobnAsIG12Y2hpcC0+Y2hpcC5uZ3BpbywKLQkJCQkJICAgICAgIG12Y2hpcC0+aXJxYmFz ZSwKLQkJCQkJICAgICAgICZpcnFfZG9tYWluX3NpbXBsZV9vcHMsCi0JCQkJCSAgICAgICBtdmNo aXApOwotCWlmICghbXZjaGlwLT5kb21haW4pIHsKLQkJZGV2X2VycigmcGRldi0+ZGV2LCAiY291 bGRuJ3QgYWxsb2NhdGUgaXJxIGRvbWFpbiAlcyAoRFQpLlxuIiwKLQkJCW12Y2hpcC0+Y2hpcC5s YWJlbCk7Ci0JCWlycV9yZW1vdmVfZ2VuZXJpY19jaGlwKGdjLCBJUlFfTVNLKG5ncGlvcyksIElS UV9OT1JFUVVFU1QsCi0JCQkJCUlSUV9MRVZFTCB8IElSUV9OT1BST0JFKTsKLQkJa2ZyZWUoZ2Mp OwotCQlyZXR1cm4gLUVOT0RFVjsKKwkJaWYgKGlycSA8IDApCisJCQljb250aW51ZTsKKwkJaXJx X3NldF9oYW5kbGVyX2RhdGEoaXJxLCBtdmNoaXApOworCQlpcnFfc2V0X2NoYWluZWRfaGFuZGxl cihpcnEsIG12ZWJ1X2dwaW9faXJxX2hhbmRsZXIpOwogCX0KIAogCXJldHVybiAwOworCitlcnJf ZG9tYWluOgorCWlycV9kb21haW5fcmVtb3ZlKG12Y2hpcC0+ZG9tYWluKTsKKworCXJldHVybiBl cnI7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG12ZWJ1X2dwaW9fZHJpdmVy ID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYwppbmRleCA2MTE4M2MxNjQyYjIuLmJiM2E2MjA5 YjI0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKQEAgLTc0MiwxMSArNzQyLDExIEBAIHN0 YXRpYyBpbnQgaW50ZWxfY3J0X3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBpbnRlbF9jcnRfcmVzZXQoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3ZvaWQgaW50ZWxfY3J0X3Jlc2V0KHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29u bmVjdG9yLT5kZXY7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmRldjsKIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCXN0 cnVjdCBpbnRlbF9jcnQgKmNydCA9IGludGVsX2F0dGFjaGVkX2NydChjb25uZWN0b3IpOworCXN0 cnVjdCBpbnRlbF9jcnQgKmNydCA9IGludGVsX2VuY29kZXJfdG9fY3J0KHRvX2ludGVsX2VuY29k ZXIoZW5jb2RlcikpOwogCiAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUpIHsKIAkJdTMy IGFkcGE7CkBAIC03NjgsNyArNzY4LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0X3Jlc2V0KHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiAgKi8KIAogc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fY29ubmVjdG9yX2Z1bmNzIGludGVsX2NydF9jb25uZWN0b3JfZnVuY3MgPSB7Ci0JLnJl c2V0ID0gaW50ZWxfY3J0X3Jlc2V0LAogCS5kcG1zID0gaW50ZWxfY3J0X2RwbXMsCiAJLmRldGVj dCA9IGludGVsX2NydF9kZXRlY3QsCiAJLmZpbGxfbW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3Np bmdsZV9jb25uZWN0b3JfbW9kZXMsCkBAIC03ODMsNiArNzgyLDcgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyBpbnRlbF9jcnRfY29ubmVjdG9yX2hlbHBl cl9mdW5jcwogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyBpbnRl bF9jcnRfZW5jX2Z1bmNzID0geworCS5yZXNldCA9IGludGVsX2NydF9yZXNldCwKIAkuZGVzdHJv eSA9IGludGVsX2VuY29kZXJfZGVzdHJveSwKIH07CiAKQEAgLTkwMiw1ICs5MDIsNSBAQCB2b2lk IGludGVsX2NydF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCWRldl9wcml2LT5mZGlf cnhfY29uZmlnID0gSTkxNV9SRUFEKF9GRElfUlhBX0NUTCkgJiBmZGlfY29uZmlnOwogCX0KIAot CWludGVsX2NydF9yZXNldChjb25uZWN0b3IpOworCWludGVsX2NydF9yZXNldCgmY3J0LT5iYXNl LmJhc2UpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCBlMGY4OGEwNjY5YzEuLjRh MmRiY2JmMTNmMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTY5MCw3ICs2OTAsNyBA QCB2b2lkIGk5eHhfY2hlY2tfZmlmb191bmRlcnJ1bnMoc3RydWN0IGRybV9kZXZpY2UgKmRldik7 CiAKIC8qIGludGVsX2NydC5jICovCiB2b2lkIGludGVsX2NydF9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOwotCit2b2lkIGludGVsX2NydF9yZXNldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXIpOwogCiAvKiBpbnRlbF9kZGkuYyAqLwogdm9pZCBpbnRlbF9wcmVwYXJlX2RkaShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDcwMGE3ZDA2 ODIwNC4uNTAxMGUyYzMyYzIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTU4OTcsNiAr NTg5Nyw4IEBAIHN0YXRpYyBib29sIHZsdl9wb3dlcl93ZWxsX2VuYWJsZWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogc3RhdGljIHZvaWQgdmx2X2Rpc3BsYXlfcG93ZXJfd2Vs bF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCQkgIHN0cnVj dCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGwpCiB7CisJc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXI7CisKIAlXQVJOX09OX09OQ0UocG93ZXJfd2VsbC0+ZGF0YSAhPSBQVU5JVF9QT1dF Ul9XRUxMX0RJU1AyRCk7CiAKIAl2bHZfc2V0X3Bvd2VyX3dlbGwoZGV2X3ByaXYsIHBvd2VyX3dl bGwsIHRydWUpOwpAQCAtNTkxNCw2ICs1OTE2LDEzIEBAIHN0YXRpYyB2b2lkIHZsdl9kaXNwbGF5 X3Bvd2VyX3dlbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAog CWludGVsX2hwZF9pbml0KGRldl9wcml2LT5kZXYpOwogCisJLyogUmUtZW5hYmxlIHRoZSBBRFBB LCBpZiB3ZSBoYXZlIG9uZSAqLworCWxpc3RfZm9yX2VhY2hfZW50cnkoZW5jb2RlciwgJmRldl9w cml2LT5kZXYtPm1vZGVfY29uZmlnLmVuY29kZXJfbGlzdCwKKwkJCSAgICBiYXNlLmhlYWQpIHsK KwkJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0FOQUxPRykKKwkJCWludGVsX2Ny dF9yZXNldCgmZW5jb2Rlci0+YmFzZSk7CisJfQorCiAJaTkxNV9yZWRpc2FibGVfdmdhX3Bvd2Vy X29uKGRldl9wcml2LT5kZXYpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFk ZW9uL25pLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL25pLmMKaW5kZXggNDFkZGMxNGJmYWIz Li4yZWNiZjJlOTg0MjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vbmkuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL25pLmMKQEAgLTEzMzMsOSArMTMzMyw3IEBAIHN0 YXRpYyB2b2lkIGNheW1hbl9wY2llX2dhcnRfZmluaShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRl dikKIHZvaWQgY2F5bWFuX2NwX2ludF9jbnRsX3NldHVwKHN0cnVjdCByYWRlb25fZGV2aWNlICpy ZGV2LAogCQkJICAgICAgaW50IHJpbmcsIHUzMiBjcF9pbnRfY250bCkKIHsKLQl1MzIgc3JibV9n ZnhfY250bCA9IFJSRUczMihTUkJNX0dGWF9DTlRMKSAmIH4zOwotCi0JV1JFRzMyKFNSQk1fR0ZY X0NOVEwsIHNyYm1fZ2Z4X2NudGwgfCAocmluZyAmIDMpKTsKKwlXUkVHMzIoU1JCTV9HRlhfQ05U TCwgUklOR0lEKHJpbmcpKTsKIAlXUkVHMzIoQ1BfSU5UX0NOVEwsIGNwX2ludF9jbnRsKTsKIH0K IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwX2RwbS5jIGIvZHJpdmVy cy9ncHUvZHJtL3JhZGVvbi9yNjAwX2RwbS5jCmluZGV4IDhlYWIwZDIwZWRhZC4uYTk2MjE0N2Q2 ZWM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDBfZHBtLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwX2RwbS5jCkBAIC0xNTUsMTkgKzE1NSwyMCBAQCB1 MzIgcjYwMF9kcG1fZ2V0X3ZibGFua190aW1lKHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KQog CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByZGV2LT5kZGV2OwogCXN0cnVjdCBkcm1fY3J0YyAq Y3J0YzsKIAlzdHJ1Y3QgcmFkZW9uX2NydGMgKnJhZGVvbl9jcnRjOwotCXUzMiBsaW5lX3RpbWVf dXMsIHZibGFua19saW5lczsKKwl1MzIgdmJsYW5rX2luX3BpeGVsczsKIAl1MzIgdmJsYW5rX3Rp bWVfdXMgPSAweGZmZmZmZmZmOyAvKiBpZiB0aGUgZGlzcGxheXMgYXJlIG9mZiwgdmJsYW5rIHRp bWUgaXMgbWF4ICovCiAKIAlpZiAocmRldi0+bnVtX2NydGMgJiYgcmRldi0+bW9kZV9pbmZvLm1v ZGVfY29uZmlnX2luaXRpYWxpemVkKSB7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnkoY3J0YywgJmRl di0+bW9kZV9jb25maWcuY3J0Y19saXN0LCBoZWFkKSB7CiAJCQlyYWRlb25fY3J0YyA9IHRvX3Jh ZGVvbl9jcnRjKGNydGMpOwogCQkJaWYgKGNydGMtPmVuYWJsZWQgJiYgcmFkZW9uX2NydGMtPmVu YWJsZWQgJiYgcmFkZW9uX2NydGMtPmh3X21vZGUuY2xvY2spIHsKLQkJCQlsaW5lX3RpbWVfdXMg PSAocmFkZW9uX2NydGMtPmh3X21vZGUuY3J0Y19odG90YWwgKiAxMDAwKSAvCi0JCQkJCXJhZGVv bl9jcnRjLT5od19tb2RlLmNsb2NrOwotCQkJCXZibGFua19saW5lcyA9IHJhZGVvbl9jcnRjLT5o d19tb2RlLmNydGNfdmJsYW5rX2VuZCAtCi0JCQkJCXJhZGVvbl9jcnRjLT5od19tb2RlLmNydGNf dmRpc3BsYXkgKwotCQkJCQkocmFkZW9uX2NydGMtPnZfYm9yZGVyICogMik7Ci0JCQkJdmJsYW5r X3RpbWVfdXMgPSB2YmxhbmtfbGluZXMgKiBsaW5lX3RpbWVfdXM7CisJCQkJdmJsYW5rX2luX3Bp eGVscyA9CisJCQkJCXJhZGVvbl9jcnRjLT5od19tb2RlLmNydGNfaHRvdGFsICoKKwkJCQkJKHJh ZGVvbl9jcnRjLT5od19tb2RlLmNydGNfdmJsYW5rX2VuZCAtCisJCQkJCSByYWRlb25fY3J0Yy0+ aHdfbW9kZS5jcnRjX3ZkaXNwbGF5ICsKKwkJCQkJIChyYWRlb25fY3J0Yy0+dl9ib3JkZXIgKiAy KSk7CisKKwkJCQl2YmxhbmtfdGltZV91cyA9IHZibGFua19pbl9waXhlbHMgKiAxMDAwIC8gcmFk ZW9uX2NydGMtPmh3X21vZGUuY2xvY2s7CiAJCQkJYnJlYWs7CiAJCQl9CiAJCX0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RldmljZS5jIGIvZHJpdmVycy9ncHUv ZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmMKaW5kZXggN2E3YTRhZjc1NjMwLi45MzMyNGM5ZGRm YzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RldmljZS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RldmljZS5jCkBAIC02MjksOCArNjI5 LDkgQEAgYm9vbCByYWRlb25fY2FyZF9wb3N0ZWQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYp CiB7CiAJdWludDMyX3QgcmVnOwogCi0JLyogZm9yIHBhc3MgdGhyb3VnaCwgYWx3YXlzIGZvcmNl IGFzaWNfaW5pdCAqLwotCWlmIChyYWRlb25fZGV2aWNlX2lzX3ZpcnR1YWwoKSkKKwkvKiBmb3Ig cGFzcyB0aHJvdWdoLCBhbHdheXMgZm9yY2UgYXNpY19pbml0IGZvciBDSSAqLworCWlmIChyZGV2 LT5mYW1pbHkgPj0gQ0hJUF9CT05BSVJFICYmCisJICAgIHJhZGVvbl9kZXZpY2VfaXNfdmlydHVh bCgpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiByZXF1aXJlZCBmb3IgRUZJIG1vZGUgb24gbWFj Ym9vazIsMSB3aGljaCB1c2VzIGFuIHI1eHggYXNpYyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3JhZGVvbi9zaV9kcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vc2lfZHBtLmMK aW5kZXggMTI1MjdkNjk4NzdjLi5jOWIyOTBiNWI1MmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9yYWRlb24vc2lfZHBtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9zaV9kcG0u YwpAQCAtMjk0NCw2ICsyOTQ0LDQ5IEBAIHN0YXRpYyB2b2lkIHNpX2FwcGx5X3N0YXRlX2FkanVz dF9ydWxlcyhzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwKIAlpbnQgaTsKIAlzdHJ1Y3Qgc2lf ZHBtX3F1aXJrICpwID0gc2lfZHBtX3F1aXJrX2xpc3Q7CiAKKwkvKiBsaW1pdCBhbGwgU0kga2lj a2VycyAqLworCWlmIChyZGV2LT5mYW1pbHkgPT0gQ0hJUF9QSVRDQUlSTikgeworCQlpZiAoKHJk ZXYtPnBkZXYtPnJldmlzaW9uID09IDB4ODEpIHx8CisJCSAgICAocmRldi0+cGRldi0+ZGV2aWNl ID09IDB4NjgxMCkgfHwKKwkJICAgIChyZGV2LT5wZGV2LT5kZXZpY2UgPT0gMHg2ODExKSB8fAor CQkgICAgKHJkZXYtPnBkZXYtPmRldmljZSA9PSAweDY4MTYpIHx8CisJCSAgICAocmRldi0+cGRl di0+ZGV2aWNlID09IDB4NjgxNykgfHwKKwkJICAgIChyZGV2LT5wZGV2LT5kZXZpY2UgPT0gMHg2 ODA2KSkKKwkJCW1heF9tY2xrID0gMTIwMDAwOworCX0gZWxzZSBpZiAocmRldi0+ZmFtaWx5ID09 IENISVBfVkVSREUpIHsKKwkJaWYgKChyZGV2LT5wZGV2LT5yZXZpc2lvbiA9PSAweDgxKSB8fAor CQkgICAgKHJkZXYtPnBkZXYtPnJldmlzaW9uID09IDB4ODMpIHx8CisJCSAgICAocmRldi0+cGRl di0+cmV2aXNpb24gPT0gMHg4NykgfHwKKwkJICAgIChyZGV2LT5wZGV2LT5kZXZpY2UgPT0gMHg2 ODIwKSB8fAorCQkgICAgKHJkZXYtPnBkZXYtPmRldmljZSA9PSAweDY4MjEpIHx8CisJCSAgICAo cmRldi0+cGRldi0+ZGV2aWNlID09IDB4NjgyMikgfHwKKwkJICAgIChyZGV2LT5wZGV2LT5kZXZp Y2UgPT0gMHg2ODIzKSB8fAorCQkgICAgKHJkZXYtPnBkZXYtPmRldmljZSA9PSAweDY4MkEpIHx8 CisJCSAgICAocmRldi0+cGRldi0+ZGV2aWNlID09IDB4NjgyQikpIHsKKwkJCW1heF9zY2xrID0g NzUwMDA7CisJCQltYXhfbWNsayA9IDgwMDAwOworCQl9CisJfSBlbHNlIGlmIChyZGV2LT5mYW1p bHkgPT0gQ0hJUF9PTEFORCkgeworCQlpZiAoKHJkZXYtPnBkZXYtPnJldmlzaW9uID09IDB4Qzcp IHx8CisJCSAgICAocmRldi0+cGRldi0+cmV2aXNpb24gPT0gMHg4MCkgfHwKKwkJICAgIChyZGV2 LT5wZGV2LT5yZXZpc2lvbiA9PSAweDgxKSB8fAorCQkgICAgKHJkZXYtPnBkZXYtPnJldmlzaW9u ID09IDB4ODMpIHx8CisJCSAgICAocmRldi0+cGRldi0+ZGV2aWNlID09IDB4NjYwNCkgfHwKKwkJ ICAgIChyZGV2LT5wZGV2LT5kZXZpY2UgPT0gMHg2NjA1KSkgeworCQkJbWF4X3NjbGsgPSA3NTAw MDsKKwkJCW1heF9tY2xrID0gODAwMDA7CisJCX0KKwl9IGVsc2UgaWYgKHJkZXYtPmZhbWlseSA9 PSBDSElQX0hBSU5BTikgeworCQlpZiAoKHJkZXYtPnBkZXYtPnJldmlzaW9uID09IDB4ODEpIHx8 CisJCSAgICAocmRldi0+cGRldi0+cmV2aXNpb24gPT0gMHg4MykgfHwKKwkJICAgIChyZGV2LT5w ZGV2LT5yZXZpc2lvbiA9PSAweEMzKSB8fAorCQkgICAgKHJkZXYtPnBkZXYtPmRldmljZSA9PSAw eDY2NjQpIHx8CisJCSAgICAocmRldi0+cGRldi0+ZGV2aWNlID09IDB4NjY2NSkgfHwKKwkJICAg IChyZGV2LT5wZGV2LT5kZXZpY2UgPT0gMHg2NjY3KSkgeworCQkJbWF4X3NjbGsgPSA3NTAwMDsK KwkJCW1heF9tY2xrID0gODAwMDA7CisJCX0KKwl9CiAJLyogQXBwbHkgZHBtIHF1aXJrcyAqLwog CXdoaWxlIChwICYmIHAtPmNoaXBfZGV2aWNlICE9IDApIHsKIAkJaWYgKHJkZXYtPnBkZXYtPnZl bmRvciA9PSBwLT5jaGlwX3ZlbmRvciAmJgpAQCAtMzAxOCwxNiArMzA2MSw2IEBAIHN0YXRpYyB2 b2lkIHNpX2FwcGx5X3N0YXRlX2FkanVzdF9ydWxlcyhzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRl diwKIAkJCQlwcy0+cGVyZm9ybWFuY2VfbGV2ZWxzW2ldLnNjbGsgPSBtYXhfc2NsazsKIAkJfQog CX0KLQkvKiBsaW1pdCBtY2xrIG9uIGFsbCBSNyAzNzAgcGFydHMgZm9yIHN0YWJpbGl0eSAqLwot CWlmIChyZGV2LT5wZGV2LT5kZXZpY2UgPT0gMHg2ODExICYmCi0JICAgIHJkZXYtPnBkZXYtPnJl dmlzaW9uID09IDB4ODEpCi0JCW1heF9tY2xrID0gMTIwMDAwOwotCS8qIGxpbWl0IHNjbGsvbWNs ayBvbiBKZXQgcGFydHMgZm9yIHN0YWJpbGl0eSAqLwotCWlmIChyZGV2LT5wZGV2LT5kZXZpY2Ug PT0gMHg2NjY1ICYmCi0JICAgIHJkZXYtPnBkZXYtPnJldmlzaW9uID09IDB4YzMpIHsKLQkJbWF4 X3NjbGsgPSA3NTAwMDsKLQkJbWF4X21jbGsgPSA4MDAwMDsKLQl9CiAKIAkvKiBYWFggdmFsaWRh dGUgdGhlIG1pbiBjbG9ja3MgcmVxdWlyZWQgZm9yIGRpc3BsYXkgKi8KIApAQCAtMzk4Miw3ICs0 MDE1LDcgQEAgc3RhdGljIGludCBzaV9wb3B1bGF0ZV9zbWNfdm9sdGFnZV90YWJsZXMoc3RydWN0 IHJhZGVvbl9kZXZpY2UgKnJkZXYsCiAJCQkJCQkgICAgICAmcmRldi0+cG0uZHBtLmR5bl9zdGF0 ZS5waGFzZV9zaGVkZGluZ19saW1pdHNfdGFibGUpKSB7CiAJCQlzaV9wb3B1bGF0ZV9zbWNfdm9s dGFnZV90YWJsZShyZGV2LCAmc2lfcGktPnZkZGNfcGhhc2Vfc2hlZF90YWJsZSwgdGFibGUpOwog Ci0JCQl0YWJsZS0+cGhhc2VNYXNrVGFibGUubG93TWFza1tTSVNMQU5EU19TTUNfVk9MVEFHRU1B U0tfVkREQ10gPQorCQkJdGFibGUtPnBoYXNlTWFza1RhYmxlLmxvd01hc2tbU0lTTEFORFNfU01D X1ZPTFRBR0VNQVNLX1ZERENfUEhBU0VfU0hFRERJTkddID0KIAkJCQljcHVfdG9fYmUzMihzaV9w aS0+dmRkY19waGFzZV9zaGVkX3RhYmxlLm1hc2tfbG93KTsKIAogCQkJc2lfd3JpdGVfc21jX3Nv ZnRfcmVnaXN0ZXIocmRldiwgU0lfU01DX1NPRlRfUkVHSVNURVJfcGhhc2Vfc2hlZGRpbmdfZGVs YXksCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3Npc2xhbmRzX3NtYy5oIGIv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9zaXNsYW5kc19zbWMuaAppbmRleCAxMGU5NDVhNDk0Nzku LjNkZTcxNmI0ZDI3MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9zaXNsYW5k c19zbWMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3Npc2xhbmRzX3NtYy5oCkBAIC0x OTQsNiArMTk0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU0lTTEFORFNfU01DX1NXU1RBVEUgU0lTTEFO RFNfU01DX1NXU1RBVEU7CiAjZGVmaW5lIFNJU0xBTkRTX1NNQ19WT0xUQUdFTUFTS19WRERDICAw CiAjZGVmaW5lIFNJU0xBTkRTX1NNQ19WT0xUQUdFTUFTS19NVkREICAxCiAjZGVmaW5lIFNJU0xB TkRTX1NNQ19WT0xUQUdFTUFTS19WRERDSSAyCisjZGVmaW5lIFNJU0xBTkRTX1NNQ19WT0xUQUdF TUFTS19WRERDX1BIQVNFX1NIRURESU5HIDMKICNkZWZpbmUgU0lTTEFORFNfU01DX1ZPTFRBR0VN QVNLX01BWCAgIDQKIAogc3RydWN0IFNJU0xBTkRTX1NNQ19WT0xUQUdFTUFTS1RBQkxFCmRpZmYg LS1naXQgYS9kcml2ZXJzL2hpZC9oaWQtY29yZS5jIGIvZHJpdmVycy9oaWQvaGlkLWNvcmUuYwpp bmRleCA4YzM3M2NkZTA1MWMuLjgzMWM4MzRjMmQ4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9oaWQv aGlkLWNvcmUuYworKysgYi9kcml2ZXJzL2hpZC9oaWQtY29yZS5jCkBAIC0xMjA4LDYgKzEyMDgs NyBAQCBzdGF0aWMgdm9pZCBoaWRfaW5wdXRfZmllbGQoc3RydWN0IGhpZF9kZXZpY2UgKmhpZCwg c3RydWN0IGhpZF9maWVsZCAqZmllbGQsCiAJCS8qIElnbm9yZSByZXBvcnQgaWYgRXJyb3JSb2xs T3ZlciAqLwogCQlpZiAoIShmaWVsZC0+ZmxhZ3MgJiBISURfTUFJTl9JVEVNX1ZBUklBQkxFKSAm JgogCQkgICAgdmFsdWVbbl0gPj0gbWluICYmIHZhbHVlW25dIDw9IG1heCAmJgorCQkgICAgdmFs dWVbbl0gLSBtaW4gPCBmaWVsZC0+bWF4dXNhZ2UgJiYKIAkJICAgIGZpZWxkLT51c2FnZVt2YWx1 ZVtuXSAtIG1pbl0uaGlkID09IEhJRF9VUF9LRVlCT0FSRCArIDEpCiAJCQlnb3RvIGV4aXQ7CiAJ fQpAQCAtMTIyMCwxMSArMTIyMSwxMyBAQCBzdGF0aWMgdm9pZCBoaWRfaW5wdXRfZmllbGQoc3Ry dWN0IGhpZF9kZXZpY2UgKmhpZCwgc3RydWN0IGhpZF9maWVsZCAqZmllbGQsCiAJCX0KIAogCQlp ZiAoZmllbGQtPnZhbHVlW25dID49IG1pbiAmJiBmaWVsZC0+dmFsdWVbbl0gPD0gbWF4CisJCQkm JiBmaWVsZC0+dmFsdWVbbl0gLSBtaW4gPCBmaWVsZC0+bWF4dXNhZ2UKIAkJCSYmIGZpZWxkLT51 c2FnZVtmaWVsZC0+dmFsdWVbbl0gLSBtaW5dLmhpZAogCQkJJiYgc2VhcmNoKHZhbHVlLCBmaWVs ZC0+dmFsdWVbbl0sIGNvdW50KSkKIAkJCQloaWRfcHJvY2Vzc19ldmVudChoaWQsIGZpZWxkLCAm ZmllbGQtPnVzYWdlW2ZpZWxkLT52YWx1ZVtuXSAtIG1pbl0sIDAsIGludGVycnVwdCk7CiAKIAkJ aWYgKHZhbHVlW25dID49IG1pbiAmJiB2YWx1ZVtuXSA8PSBtYXgKKwkJCSYmIHZhbHVlW25dIC0g bWluIDwgZmllbGQtPm1heHVzYWdlCiAJCQkmJiBmaWVsZC0+dXNhZ2VbdmFsdWVbbl0gLSBtaW5d LmhpZAogCQkJJiYgc2VhcmNoKGZpZWxkLT52YWx1ZSwgdmFsdWVbbl0sIGNvdW50KSkKIAkJCQlo aWRfcHJvY2Vzc19ldmVudChoaWQsIGZpZWxkLCAmZmllbGQtPnVzYWdlW3ZhbHVlW25dIC0gbWlu XSwgMSwgaW50ZXJydXB0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaGlkL2hpZC1pZHMuaCBiL2Ry aXZlcnMvaGlkL2hpZC1pZHMuaAppbmRleCAyYzA0ZDkzY2FjYmQuLjZhNTY5OTdkODllZCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9oaWQvaGlkLWlkcy5oCisrKyBiL2RyaXZlcnMvaGlkL2hpZC1pZHMu aApAQCAtMTY0LDYgKzE2NCw4IEBACiAjZGVmaW5lIFVTQl9ERVZJQ0VfSURfQVRFTl8yUE9SVEtW TQkweDIyMDQKICNkZWZpbmUgVVNCX0RFVklDRV9JRF9BVEVOXzRQT1JUS1ZNCTB4MjIwNQogI2Rl ZmluZSBVU0JfREVWSUNFX0lEX0FURU5fNFBPUlRLVk1DCTB4MjIwOAorI2RlZmluZSBVU0JfREVW SUNFX0lEX0FURU5fQ1M2ODIJMHgyMjEzCisjZGVmaW5lIFVTQl9ERVZJQ0VfSURfQVRFTl9DUzY5 MgkweDgwMjEKIAogI2RlZmluZSBVU0JfVkVORE9SX0lEX0FUTUVMCQkweDAzZWIKICNkZWZpbmUg VVNCX0RFVklDRV9JRF9BVE1FTF9NVUxUSVRPVUNICTB4MjExYwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9oaWQvdXNiaGlkL2hpZC1xdWlya3MuYyBiL2RyaXZlcnMvaGlkL3VzYmhpZC9oaWQtcXVpcmtz LmMKaW5kZXggNjU3OWE3MTA5NWRhLi5jNTk3NTcxYjA0NzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv aGlkL3VzYmhpZC9oaWQtcXVpcmtzLmMKKysrIGIvZHJpdmVycy9oaWQvdXNiaGlkL2hpZC1xdWly a3MuYwpAQCAtNjEsNiArNjEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGhpZF9ibGFja2xpc3Qg ewogCXsgVVNCX1ZFTkRPUl9JRF9BVEVOLCBVU0JfREVWSUNFX0lEX0FURU5fMlBPUlRLVk0sIEhJ RF9RVUlSS19OT0dFVCB9LAogCXsgVVNCX1ZFTkRPUl9JRF9BVEVOLCBVU0JfREVWSUNFX0lEX0FU RU5fNFBPUlRLVk0sIEhJRF9RVUlSS19OT0dFVCB9LAogCXsgVVNCX1ZFTkRPUl9JRF9BVEVOLCBV U0JfREVWSUNFX0lEX0FURU5fNFBPUlRLVk1DLCBISURfUVVJUktfTk9HRVQgfSwKKwl7IFVTQl9W RU5ET1JfSURfQVRFTiwgVVNCX0RFVklDRV9JRF9BVEVOX0NTNjgyLCBISURfUVVJUktfTk9HRVQg fSwKKwl7IFVTQl9WRU5ET1JfSURfQVRFTiwgVVNCX0RFVklDRV9JRF9BVEVOX0NTNjkyLCBISURf UVVJUktfTk9HRVQgfSwKIAl7IFVTQl9WRU5ET1JfSURfQ0gsIFVTQl9ERVZJQ0VfSURfQ0hfRklH SFRFUlNUSUNLLCBISURfUVVJUktfTk9HRVQgfSwKIAl7IFVTQl9WRU5ET1JfSURfQ0gsIFVTQl9E RVZJQ0VfSURfQ0hfQ09NQkFUU1RJQ0ssIEhJRF9RVUlSS19OT0dFVCB9LAogCXsgVVNCX1ZFTkRP Ul9JRF9DSCwgVVNCX0RFVklDRV9JRF9DSF9GTElHSFRfU0lNX0VDTElQU0VfWU9LRSwgSElEX1FV SVJLX05PR0VUIH0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h2L2h2X3V0aWwuYyBiL2RyaXZlcnMv aHYvaHZfdXRpbC5jCmluZGV4IDNiOWM5ZWYwZGViOC4uMmQxNDE0ZDA3MzA1IDEwMDY0NAotLS0g YS9kcml2ZXJzL2h2L2h2X3V0aWwuYworKysgYi9kcml2ZXJzL2h2L2h2X3V0aWwuYwpAQCAtMjgz LDEwICsyODMsMTQgQEAgc3RhdGljIHZvaWQgaGVhcnRiZWF0X29uY2hhbm5lbGNhbGxiYWNrKHZv aWQgKmNvbnRleHQpCiAJdTggKmhiZWF0X3R4Zl9idWYgPSB1dGlsX2hlYXJ0YmVhdC5yZWN2X2J1 ZmZlcjsKIAlzdHJ1Y3QgaWNtc2dfbmVnb3RpYXRlICpuZWdvcCA9IE5VTEw7CiAKLQl2bWJ1c19y ZWN2cGFja2V0KGNoYW5uZWwsIGhiZWF0X3R4Zl9idWYsCi0JCQkgUEFHRV9TSVpFLCAmcmVjdmxl biwgJnJlcXVlc3RpZCk7CisJd2hpbGUgKDEpIHsKKworCQl2bWJ1c19yZWN2cGFja2V0KGNoYW5u ZWwsIGhiZWF0X3R4Zl9idWYsCisJCQkJIFBBR0VfU0laRSwgJnJlY3ZsZW4sICZyZXF1ZXN0aWQp OworCisJCWlmICghcmVjdmxlbikKKwkJCWJyZWFrOwogCi0JaWYgKHJlY3ZsZW4gPiAwKSB7CiAJ CWljbXNnaGRycCA9IChzdHJ1Y3QgaWNtc2dfaGRyICopJmhiZWF0X3R4Zl9idWZbCiAJCQkJc2l6 ZW9mKHN0cnVjdCB2bWJ1c3BpcGVfaGRyKV07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2ky Yy1jb3JlLmMgYi9kcml2ZXJzL2kyYy9pMmMtY29yZS5jCmluZGV4IGQ2NmFmOTVkM2RlNC4uMzVj MGJjNmYyZWIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9pMmMtY29yZS5jCisrKyBiL2RyaXZl cnMvaTJjL2kyYy1jb3JlLmMKQEAgLTE1NTgsNiArMTU1OCw3IEBAIGludCBpMmNfcmVnaXN0ZXJf ZHJpdmVyKHN0cnVjdCBtb2R1bGUgKm93bmVyLCBzdHJ1Y3QgaTJjX2RyaXZlciAqZHJpdmVyKQog CS8qIGFkZCB0aGUgZHJpdmVyIHRvIHRoZSBsaXN0IG9mIGkyYyBkcml2ZXJzIGluIHRoZSBkcml2 ZXIgY29yZSAqLwogCWRyaXZlci0+ZHJpdmVyLm93bmVyID0gb3duZXI7CiAJZHJpdmVyLT5kcml2 ZXIuYnVzID0gJmkyY19idXNfdHlwZTsKKwlJTklUX0xJU1RfSEVBRCgmZHJpdmVyLT5jbGllbnRz KTsKIAogCS8qIFdoZW4gcmVnaXN0cmF0aW9uIHJldHVybnMsIHRoZSBkcml2ZXIgY29yZQogCSAq IHdpbGwgaGF2ZSBjYWxsZWQgcHJvYmUoKSBmb3IgYWxsIG1hdGNoaW5nLWJ1dC11bmJvdW5kIGRl dmljZXMuCkBAIC0xNTc2LDcgKzE1NzcsNiBAQCBpbnQgaTJjX3JlZ2lzdGVyX2RyaXZlcihzdHJ1 Y3QgbW9kdWxlICpvd25lciwgc3RydWN0IGkyY19kcml2ZXIgKmRyaXZlcikKIAogCXByX2RlYnVn KCJpMmMtY29yZTogZHJpdmVyIFslc10gcmVnaXN0ZXJlZFxuIiwgZHJpdmVyLT5kcml2ZXIubmFt ZSk7CiAKLQlJTklUX0xJU1RfSEVBRCgmZHJpdmVyLT5jbGllbnRzKTsKIAkvKiBXYWxrIHRoZSBh ZGFwdGVycyB0aGF0IGFyZSBhbHJlYWR5IHByZXNlbnQgKi8KIAlpMmNfZm9yX2VhY2hfZGV2KGRy aXZlciwgX19wcm9jZXNzX25ld19kcml2ZXIpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9j b21tb24vaGlkLXNlbnNvcnMvaGlkLXNlbnNvci1hdHRyaWJ1dGVzLmMgYi9kcml2ZXJzL2lpby9j b21tb24vaGlkLXNlbnNvcnMvaGlkLXNlbnNvci1hdHRyaWJ1dGVzLmMKaW5kZXggYjMyMWEyNTNl YmE4Li5iZDRiNmUwMmExY2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWlvL2NvbW1vbi9oaWQtc2Vu c29ycy9oaWQtc2Vuc29yLWF0dHJpYnV0ZXMuYworKysgYi9kcml2ZXJzL2lpby9jb21tb24vaGlk LXNlbnNvcnMvaGlkLXNlbnNvci1hdHRyaWJ1dGVzLmMKQEAgLTI2LDMwICsyNiwzMCBAQAogI2lu Y2x1ZGUgPGxpbnV4L2lpby9paW8uaD4KICNpbmNsdWRlIDxsaW51eC9paW8vc3lzZnMuaD4KIAot c3RydWN0IHsKK3N0YXRpYyBzdHJ1Y3QgewogCXUzMiB1c2FnZV9pZDsKIAlpbnQgdW5pdDsgLyog MCBmb3IgZGVmYXVsdCBvdGhlcnMgZnJvbSBISUQgc2Vuc29yIHNwZWMgKi8KIAlpbnQgc2NhbGVf dmFsMDsgLyogc2NhbGUsIHdob2xlIG51bWJlciAqLwotCWludCBzY2FsZV92YWwxOyAvKiBzY2Fs ZSwgZnJhY3Rpb24gaW4gbWljcm9zICovCi19IHN0YXRpYyB1bml0X2NvbnZlcnNpb25bXSA9IHsK LQl7SElEX1VTQUdFX1NFTlNPUl9BQ0NFTF8zRCwgMCwgOSwgODA2NjUwfSwKKwlpbnQgc2NhbGVf dmFsMTsgLyogc2NhbGUsIGZyYWN0aW9uIGluIG5hbm9zICovCit9IHVuaXRfY29udmVyc2lvbltd ID0geworCXtISURfVVNBR0VfU0VOU09SX0FDQ0VMXzNELCAwLCA5LCA4MDY2NTAwMDB9LAogCXtI SURfVVNBR0VfU0VOU09SX0FDQ0VMXzNELAogCQlISURfVVNBR0VfU0VOU09SX1VOSVRTX01FVEVS U19QRVJfU0VDX1NRUkQsIDEsIDB9LAogCXtISURfVVNBR0VfU0VOU09SX0FDQ0VMXzNELAotCQlI SURfVVNBR0VfU0VOU09SX1VOSVRTX0csIDksIDgwNjY1MH0sCisJCUhJRF9VU0FHRV9TRU5TT1Jf VU5JVFNfRywgOSwgODA2NjUwMDAwfSwKIAotCXtISURfVVNBR0VfU0VOU09SX0dZUk9fM0QsIDAs IDAsIDE3NDUzfSwKKwl7SElEX1VTQUdFX1NFTlNPUl9HWVJPXzNELCAwLCAwLCAxNzQ1MzI5M30s CiAJe0hJRF9VU0FHRV9TRU5TT1JfR1lST18zRCwKIAkJSElEX1VTQUdFX1NFTlNPUl9VTklUU19S QURJQU5TX1BFUl9TRUNPTkQsIDEsIDB9LAogCXtISURfVVNBR0VfU0VOU09SX0dZUk9fM0QsCi0J CUhJRF9VU0FHRV9TRU5TT1JfVU5JVFNfREVHUkVFU19QRVJfU0VDT05ELCAwLCAxNzQ1M30sCisJ CUhJRF9VU0FHRV9TRU5TT1JfVU5JVFNfREVHUkVFU19QRVJfU0VDT05ELCAwLCAxNzQ1MzI5M30s CiAKLQl7SElEX1VTQUdFX1NFTlNPUl9DT01QQVNTXzNELCAwLCAwLCAxMDAwfSwKKwl7SElEX1VT QUdFX1NFTlNPUl9DT01QQVNTXzNELCAwLCAwLCAxMDAwMDAwfSwKIAl7SElEX1VTQUdFX1NFTlNP Ul9DT01QQVNTXzNELCBISURfVVNBR0VfU0VOU09SX1VOSVRTX0dBVVNTLCAxLCAwfSwKIAotCXtI SURfVVNBR0VfU0VOU09SX0lOQ0xJTk9NRVRFUl8zRCwgMCwgMCwgMTc0NTN9LAorCXtISURfVVNB R0VfU0VOU09SX0lOQ0xJTk9NRVRFUl8zRCwgMCwgMCwgMTc0NTMyOTN9LAogCXtISURfVVNBR0Vf U0VOU09SX0lOQ0xJTk9NRVRFUl8zRCwKLQkJSElEX1VTQUdFX1NFTlNPUl9VTklUU19ERUdSRUVT LCAwLCAxNzQ1M30sCisJCUhJRF9VU0FHRV9TRU5TT1JfVU5JVFNfREVHUkVFUywgMCwgMTc0NTMy OTN9LAogCXtISURfVVNBR0VfU0VOU09SX0lOQ0xJTk9NRVRFUl8zRCwKIAkJSElEX1VTQUdFX1NF TlNPUl9VTklUU19SQURJQU5TLCAxLCAwfSwKIApAQCAtNTcsNyArNTcsNyBAQCBzdHJ1Y3Qgewog CXtISURfVVNBR0VfU0VOU09SX0FMUywgSElEX1VTQUdFX1NFTlNPUl9VTklUU19MVVgsIDEsIDB9 LAogCiAJe0hJRF9VU0FHRV9TRU5TT1JfUFJFU1NVUkUsIDAsIDEwMCwgMH0sCi0Je0hJRF9VU0FH RV9TRU5TT1JfUFJFU1NVUkUsIEhJRF9VU0FHRV9TRU5TT1JfVU5JVFNfUEFTQ0FMLCAwLCAxMDAw fSwKKwl7SElEX1VTQUdFX1NFTlNPUl9QUkVTU1VSRSwgSElEX1VTQUdFX1NFTlNPUl9VTklUU19Q QVNDQUwsIDAsIDEwMDAwMDB9LAogfTsKIAogc3RhdGljIGludCBwb3dfMTAodW5zaWduZWQgcG93 ZXIpCkBAIC0yNjYsMTUgKzI2NiwxNSBAQCBFWFBPUlRfU1lNQk9MKGhpZF9zZW5zb3Jfd3JpdGVf cmF3X2h5c3RfdmFsdWUpOwogLyoKICAqIFRoaXMgZnVjdGlvbiBhcHBsaWVzIHRoZSB1bml0IGV4 cG9uZW50IHRvIHRoZSBzY2FsZS4KICAqIEZvciBleGFtcGxlOgotICogOS44MDY2NTAgLT5leHA6 Mi0+IHZhbDBbOTgwXXZhbDFbNjY1MDAwXQotICogOS4wMDA4MDYgLT5leHA6Mi0+IHZhbDBbOTAw XXZhbDFbODA2MDBdCi0gKiAwLjE3NDUzNSAtPmV4cDoyLT4gdmFsMFsxN112YWwxWzQ1MzUwMF0K LSAqIDEuMDAxNzQ1IC0+ZXhwOjAtPiB2YWwwWzFddmFsMVsxNzQ1XQotICogMS4wMDE3NDUgLT5l eHA6Mi0+IHZhbDBbMTAwXXZhbDFbMTc0NTAwXQotICogMS4wMDE3NDUgLT5leHA6NC0+IHZhbDBb MTAwMTdddmFsMVs0NTAwMDBdCi0gKiA5LjgwNjY1MCAtPmV4cDotMi0+IHZhbDBbMF12YWwxWzk4 MDY2XQorICogOS44MDY2NTAwMDAgLT5leHA6Mi0+IHZhbDBbOTgwXXZhbDFbNjY1MDAwMDAwXQor ICogOS4wMDA4MDYwMDAgLT5leHA6Mi0+IHZhbDBbOTAwXXZhbDFbODA2MDAwMDBdCisgKiAwLjE3 NDUzNTI5MyAtPmV4cDoyLT4gdmFsMFsxN112YWwxWzQ1MzUyOTMwMF0KKyAqIDEuMDAxNzQ1MzI5 IC0+ZXhwOjAtPiB2YWwwWzFddmFsMVsxNzQ1MzI5XQorICogMS4wMDE3NDUzMjkgLT5leHA6Mi0+ IHZhbDBbMTAwXXZhbDFbMTc0NTMyOTAwXQorICogMS4wMDE3NDUzMjkgLT5leHA6NC0+IHZhbDBb MTAwMTdddmFsMVs0NTMyOTAwMDBdCisgKiA5LjgwNjY1MDAwMCAtPmV4cDotMi0+IHZhbDBbMF12 YWwxWzk4MDY2NTAwXQogICovCi1zdGF0aWMgdm9pZCBhZGp1c3RfZXhwb25lbnRfbWljcm8oaW50 ICp2YWwwLCBpbnQgKnZhbDEsIGludCBzY2FsZTAsCitzdGF0aWMgdm9pZCBhZGp1c3RfZXhwb25l bnRfbmFubyhpbnQgKnZhbDAsIGludCAqdmFsMSwgaW50IHNjYWxlMCwKIAkJCQkgIGludCBzY2Fs ZTEsIGludCBleHApCiB7CiAJaW50IGk7CkBAIC0yODUsMzIgKzI4NSwzMiBAQCBzdGF0aWMgdm9p ZCBhZGp1c3RfZXhwb25lbnRfbWljcm8oaW50ICp2YWwwLCBpbnQgKnZhbDEsIGludCBzY2FsZTAs CiAJaWYgKGV4cCA+IDApIHsKIAkJKnZhbDAgPSBzY2FsZTAgKiBwb3dfMTAoZXhwKTsKIAkJcmVz ID0gMDsKLQkJaWYgKGV4cCA+IDYpIHsKKwkJaWYgKGV4cCA+IDkpIHsKIAkJCSp2YWwxID0gMDsK IAkJCXJldHVybjsKIAkJfQogCQlmb3IgKGkgPSAwOyBpIDwgZXhwOyArK2kpIHsKLQkJCXggPSBz Y2FsZTEgLyBwb3dfMTAoNSAtIGkpOworCQkJeCA9IHNjYWxlMSAvIHBvd18xMCg4IC0gaSk7CiAJ CQlyZXMgKz0gKHBvd18xMChleHAgLSAxIC0gaSkgKiB4KTsKLQkJCXNjYWxlMSA9IHNjYWxlMSAl IHBvd18xMCg1IC0gaSk7CisJCQlzY2FsZTEgPSBzY2FsZTEgJSBwb3dfMTAoOCAtIGkpOwogCQl9 CiAJCSp2YWwwICs9IHJlczsKIAkJCSp2YWwxID0gc2NhbGUxICogcG93XzEwKGV4cCk7CiAJfSBl bHNlIGlmIChleHAgPCAwKSB7CiAJCWV4cCA9IGFicyhleHApOwotCQlpZiAoZXhwID4gNikgewor CQlpZiAoZXhwID4gOSkgewogCQkJKnZhbDAgPSAqdmFsMSA9IDA7CiAJCQlyZXR1cm47CiAJCX0K IAkJKnZhbDAgPSBzY2FsZTAgLyBwb3dfMTAoZXhwKTsKIAkJcmVtID0gc2NhbGUwICUgcG93XzEw KGV4cCk7CiAJCXJlcyA9IDA7Ci0JCWZvciAoaSA9IDA7IGkgPCAoNiAtIGV4cCk7ICsraSkgewot CQkJeCA9IHNjYWxlMSAvIHBvd18xMCg1IC0gaSk7Ci0JCQlyZXMgKz0gKHBvd18xMCg1IC0gZXhw IC0gaSkgKiB4KTsKLQkJCXNjYWxlMSA9IHNjYWxlMSAlIHBvd18xMCg1IC0gaSk7CisJCWZvciAo aSA9IDA7IGkgPCAoOSAtIGV4cCk7ICsraSkgeworCQkJeCA9IHNjYWxlMSAvIHBvd18xMCg4IC0g aSk7CisJCQlyZXMgKz0gKHBvd18xMCg4IC0gZXhwIC0gaSkgKiB4KTsKKwkJCXNjYWxlMSA9IHNj YWxlMSAlIHBvd18xMCg4IC0gaSk7CiAJCX0KLQkJKnZhbDEgPSByZW0gKiBwb3dfMTAoNiAtIGV4 cCkgKyByZXM7CisJCSp2YWwxID0gcmVtICogcG93XzEwKDkgLSBleHApICsgcmVzOwogCX0gZWxz ZSB7CiAJCSp2YWwwID0gc2NhbGUwOwogCQkqdmFsMSA9IHNjYWxlMTsKQEAgLTMzMiwxNCArMzMy LDE0IEBAIGludCBoaWRfc2Vuc29yX2Zvcm1hdF9zY2FsZSh1MzIgdXNhZ2VfaWQsCiAJCQl1bml0 X2NvbnZlcnNpb25baV0udW5pdCA9PSBhdHRyX2luZm8tPnVuaXRzKSB7CiAJCQlleHAgID0gaGlk X3NlbnNvcl9jb252ZXJ0X2V4cG9uZW50KAogCQkJCQkJYXR0cl9pbmZvLT51bml0X2V4cG8pOwot CQkJYWRqdXN0X2V4cG9uZW50X21pY3JvKHZhbDAsIHZhbDEsCisJCQlhZGp1c3RfZXhwb25lbnRf bmFubyh2YWwwLCB2YWwxLAogCQkJCQl1bml0X2NvbnZlcnNpb25baV0uc2NhbGVfdmFsMCwKIAkJ CQkJdW5pdF9jb252ZXJzaW9uW2ldLnNjYWxlX3ZhbDEsIGV4cCk7CiAJCQlicmVhazsKIAkJfQog CX0KIAotCXJldHVybiBJSU9fVkFMX0lOVF9QTFVTX01JQ1JPOworCXJldHVybiBJSU9fVkFMX0lO VF9QTFVTX05BTk87CiB9CiBFWFBPUlRfU1lNQk9MKGhpZF9zZW5zb3JfZm9ybWF0X3NjYWxlKTsK IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY20uYyBiL2RyaXZlcnMvaW5m aW5pYmFuZC9jb3JlL2NtLmMKaW5kZXggNTMxMWNhYzEyMTMyLi4xY2YzMmI4Mjc4MDYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL2NtLmMKKysrIGIvZHJpdmVycy9pbmZpbmli YW5kL2NvcmUvY20uYwpAQCAtODAsNiArODAsOCBAQCBzdGF0aWMgc3RydWN0IGliX2NtIHsKIAlf X2JlMzIgcmFuZG9tX2lkX29wZXJhbmQ7CiAJc3RydWN0IGxpc3RfaGVhZCB0aW1ld2FpdF9saXN0 OwogCXN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cTsKKwkvKiBTeW5jIG9uIGNtIGNoYW5nZSBw b3J0IHN0YXRlICovCisJc3BpbmxvY2tfdCBzdGF0ZV9sb2NrOwogfSBjbTsKIAogLyogQ291bnRl ciBpbmRleGVzIG9yZGVyZWQgYnkgYXR0cmlidXRlIElEICovCkBAIC0xNjEsNiArMTYzLDggQEAg c3RydWN0IGNtX3BvcnQgewogCXN0cnVjdCBpYl9tYWRfYWdlbnQgKm1hZF9hZ2VudDsKIAlzdHJ1 Y3Qga29iamVjdCBwb3J0X29iajsKIAl1OCBwb3J0X251bTsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGNt X3ByaXZfcHJpbV9saXN0OworCXN0cnVjdCBsaXN0X2hlYWQgY21fcHJpdl9hbHRyX2xpc3Q7CiAJ c3RydWN0IGNtX2NvdW50ZXJfZ3JvdXAgY291bnRlcl9ncm91cFtDTV9DT1VOVEVSX0dST1VQU107 CiB9OwogCkBAIC0yNDAsNiArMjQ0LDEyIEBAIHN0cnVjdCBjbV9pZF9wcml2YXRlIHsKIAl1OCBz ZXJ2aWNlX3RpbWVvdXQ7CiAJdTggdGFyZ2V0X2Fja19kZWxheTsKIAorCXN0cnVjdCBsaXN0X2hl YWQgcHJpbV9saXN0OworCXN0cnVjdCBsaXN0X2hlYWQgYWx0cl9saXN0OworCS8qIEluZGljYXRl cyB0aGF0IHRoZSBzZW5kIHBvcnQgbWFkIGlzIHJlZ2lzdGVyZWQgYW5kIGF2IGlzIHNldCAqLwor CWludCBwcmltX3NlbmRfcG9ydF9ub3RfcmVhZHk7CisJaW50IGFsdHJfc2VuZF9wb3J0X25vdF9y ZWFkeTsKKwogCXN0cnVjdCBsaXN0X2hlYWQgd29ya19saXN0OwogCWF0b21pY190IHdvcmtfY291 bnQ7CiB9OwpAQCAtMjU4LDE5ICsyNjgsNDYgQEAgc3RhdGljIGludCBjbV9hbGxvY19tc2coc3Ry dWN0IGNtX2lkX3ByaXZhdGUgKmNtX2lkX3ByaXYsCiAJc3RydWN0IGliX21hZF9hZ2VudCAqbWFk X2FnZW50OwogCXN0cnVjdCBpYl9tYWRfc2VuZF9idWYgKm07CiAJc3RydWN0IGliX2FoICphaDsK KwlzdHJ1Y3QgY21fYXYgKmF2OworCXVuc2lnbmVkIGxvbmcgZmxhZ3MsIGZsYWdzMjsKKwlpbnQg cmV0ID0gMDsKIAorCS8qIGRvbid0IGxldCB0aGUgcG9ydCB0byBiZSByZWxlYXNlZCB0aWxsIHRo ZSBhZ2VudCBpcyBkb3duICovCisJc3Bpbl9sb2NrX2lycXNhdmUoJmNtLnN0YXRlX2xvY2ssIGZs YWdzMik7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmNtLmxvY2ssIGZsYWdzKTsKKwlpZiAoIWNtX2lk X3ByaXYtPnByaW1fc2VuZF9wb3J0X25vdF9yZWFkeSkKKwkJYXYgPSAmY21faWRfcHJpdi0+YXY7 CisJZWxzZSBpZiAoIWNtX2lkX3ByaXYtPmFsdHJfc2VuZF9wb3J0X25vdF9yZWFkeSAmJgorCQkg KGNtX2lkX3ByaXYtPmFsdF9hdi5wb3J0KSkKKwkJYXYgPSAmY21faWRfcHJpdi0+YWx0X2F2Owor CWVsc2UgeworCQlwcl9pbmZvKCIlczogbm90IHZhbGlkIENNIGlkXG4iLCBfX2Z1bmNfXyk7CisJ CXJldCA9IC1FTk9ERVY7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNtLmxvY2ssIGZsYWdz KTsKKwkJZ290byBvdXQ7CisJfQorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNtLmxvY2ssIGZs YWdzKTsKKwkvKiBNYWtlIHN1cmUgdGhlIHBvcnQgaGF2ZW4ndCByZWxlYXNlZCB0aGUgbWFkIHll dCAqLwogCW1hZF9hZ2VudCA9IGNtX2lkX3ByaXYtPmF2LnBvcnQtPm1hZF9hZ2VudDsKLQlhaCA9 IGliX2NyZWF0ZV9haChtYWRfYWdlbnQtPnFwLT5wZCwgJmNtX2lkX3ByaXYtPmF2LmFoX2F0dHIp OwotCWlmIChJU19FUlIoYWgpKQotCQlyZXR1cm4gUFRSX0VSUihhaCk7CisJaWYgKCFtYWRfYWdl bnQpIHsKKwkJcHJfaW5mbygiJXM6IG5vdCBhIHZhbGlkIE1BRCBhZ2VudFxuIiwgX19mdW5jX18p OworCQlyZXQgPSAtRU5PREVWOworCQlnb3RvIG91dDsKKwl9CisJYWggPSBpYl9jcmVhdGVfYWgo bWFkX2FnZW50LT5xcC0+cGQsICZhdi0+YWhfYXR0cik7CisJaWYgKElTX0VSUihhaCkpIHsKKwkJ cmV0ID0gUFRSX0VSUihhaCk7CisJCWdvdG8gb3V0OworCX0KIAogCW0gPSBpYl9jcmVhdGVfc2Vu ZF9tYWQobWFkX2FnZW50LCBjbV9pZF9wcml2LT5pZC5yZW1vdGVfY21fcXBuLAotCQkJICAgICAg IGNtX2lkX3ByaXYtPmF2LnBrZXlfaW5kZXgsCisJCQkgICAgICAgYXYtPnBrZXlfaW5kZXgsCiAJ CQkgICAgICAgMCwgSUJfTUdNVF9NQURfSERSLCBJQl9NR01UX01BRF9EQVRBLAogCQkJICAgICAg IEdGUF9BVE9NSUMpOwogCWlmIChJU19FUlIobSkpIHsKIAkJaWJfZGVzdHJveV9haChhaCk7Ci0J CXJldHVybiBQVFJfRVJSKG0pOworCQlyZXQgPSBQVFJfRVJSKG0pOworCQlnb3RvIG91dDsKIAl9 CiAKIAkvKiBUaW1lb3V0IHNldCBieSBjYWxsZXIgaWYgcmVzcG9uc2UgaXMgZXhwZWN0ZWQuICov CkBAIC0yODAsNyArMzE3LDEwIEBAIHN0YXRpYyBpbnQgY21fYWxsb2NfbXNnKHN0cnVjdCBjbV9p ZF9wcml2YXRlICpjbV9pZF9wcml2LAogCWF0b21pY19pbmMoJmNtX2lkX3ByaXYtPnJlZmNvdW50 KTsKIAltLT5jb250ZXh0WzBdID0gY21faWRfcHJpdjsKIAkqbXNnID0gbTsKLQlyZXR1cm4gMDsK Kworb3V0OgorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNtLnN0YXRlX2xvY2ssIGZsYWdzMik7 CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBjbV9hbGxvY19yZXNwb25zZV9tc2coc3Ry dWN0IGNtX3BvcnQgKnBvcnQsCkBAIC0zNDksNyArMzg5LDggQEAgc3RhdGljIHZvaWQgY21faW5p dF9hdl9mb3JfcmVzcG9uc2Uoc3RydWN0IGNtX3BvcnQgKnBvcnQsIHN0cnVjdCBpYl93YyAqd2Ms CiAJCQkgICBncmgsICZhdi0+YWhfYXR0cik7CiB9CiAKLXN0YXRpYyBpbnQgY21faW5pdF9hdl9i eV9wYXRoKHN0cnVjdCBpYl9zYV9wYXRoX3JlYyAqcGF0aCwgc3RydWN0IGNtX2F2ICphdikKK3N0 YXRpYyBpbnQgY21faW5pdF9hdl9ieV9wYXRoKHN0cnVjdCBpYl9zYV9wYXRoX3JlYyAqcGF0aCwg c3RydWN0IGNtX2F2ICphdiwKKwkJCSAgICAgIHN0cnVjdCBjbV9pZF9wcml2YXRlICpjbV9pZF9w cml2KQogewogCXN0cnVjdCBjbV9kZXZpY2UgKmNtX2RldjsKIAlzdHJ1Y3QgY21fcG9ydCAqcG9y dCA9IE5VTEw7CkBAIC0zODIsNyArNDIzLDE3IEBAIHN0YXRpYyBpbnQgY21faW5pdF9hdl9ieV9w YXRoKHN0cnVjdCBpYl9zYV9wYXRoX3JlYyAqcGF0aCwgc3RydWN0IGNtX2F2ICphdikKIAltZW1j cHkoYXYtPnNtYWMsIHBhdGgtPnNtYWMsIHNpemVvZihhdi0+c21hYykpOwogCiAJYXYtPnZhbGlk ID0gMTsKLQlyZXR1cm4gMDsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmY20ubG9jaywgZmxhZ3MpOwor CWlmICgmY21faWRfcHJpdi0+YXYgPT0gYXYpCisJCWxpc3RfYWRkX3RhaWwoJmNtX2lkX3ByaXYt PnByaW1fbGlzdCwgJnBvcnQtPmNtX3ByaXZfcHJpbV9saXN0KTsKKwllbHNlIGlmICgmY21faWRf cHJpdi0+YWx0X2F2ID09IGF2KQorCQlsaXN0X2FkZF90YWlsKCZjbV9pZF9wcml2LT5hbHRyX2xp c3QsICZwb3J0LT5jbV9wcml2X2FsdHJfbGlzdCk7CisJZWxzZQorCQlyZXQgPSAtRUlOVkFMOwor CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY20ubG9jaywgZmxhZ3MpOworCisJcmV0dXJuIHJl dDsKIH0KIAogc3RhdGljIGludCBjbV9hbGxvY19pZChzdHJ1Y3QgY21faWRfcHJpdmF0ZSAqY21f aWRfcHJpdikKQEAgLTcxOSw2ICs3NzAsOCBAQCBzdHJ1Y3QgaWJfY21faWQgKmliX2NyZWF0ZV9j bV9pZChzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UsCiAJc3Bpbl9sb2NrX2luaXQoJmNtX2lkX3By aXYtPmxvY2spOwogCWluaXRfY29tcGxldGlvbigmY21faWRfcHJpdi0+Y29tcCk7CiAJSU5JVF9M SVNUX0hFQUQoJmNtX2lkX3ByaXYtPndvcmtfbGlzdCk7CisJSU5JVF9MSVNUX0hFQUQoJmNtX2lk X3ByaXYtPnByaW1fbGlzdCk7CisJSU5JVF9MSVNUX0hFQUQoJmNtX2lkX3ByaXYtPmFsdHJfbGlz dCk7CiAJYXRvbWljX3NldCgmY21faWRfcHJpdi0+d29ya19jb3VudCwgLTEpOwogCWF0b21pY19z ZXQoJmNtX2lkX3ByaXYtPnJlZmNvdW50LCAxKTsKIAlyZXR1cm4gJmNtX2lkX3ByaXYtPmlkOwpA QCAtOTE3LDYgKzk3MCwxNSBAQCByZXRlc3Q6CiAJCWJyZWFrOwogCX0KIAorCXNwaW5fbG9ja19p cnEoJmNtLmxvY2spOworCWlmICghbGlzdF9lbXB0eSgmY21faWRfcHJpdi0+YWx0cl9saXN0KSAm JgorCSAgICAoIWNtX2lkX3ByaXYtPmFsdHJfc2VuZF9wb3J0X25vdF9yZWFkeSkpCisJCWxpc3Rf ZGVsKCZjbV9pZF9wcml2LT5hbHRyX2xpc3QpOworCWlmICghbGlzdF9lbXB0eSgmY21faWRfcHJp di0+cHJpbV9saXN0KSAmJgorCSAgICAoIWNtX2lkX3ByaXYtPnByaW1fc2VuZF9wb3J0X25vdF9y ZWFkeSkpCisJCWxpc3RfZGVsKCZjbV9pZF9wcml2LT5wcmltX2xpc3QpOworCXNwaW5fdW5sb2Nr X2lycSgmY20ubG9jayk7CisKIAljbV9mcmVlX2lkKGNtX2lkLT5sb2NhbF9pZCk7CiAJY21fZGVy ZWZfaWQoY21faWRfcHJpdik7CiAJd2FpdF9mb3JfY29tcGxldGlvbigmY21faWRfcHJpdi0+Y29t cCk7CkBAIC0xMTQwLDEyICsxMjAyLDEzIEBAIGludCBpYl9zZW5kX2NtX3JlcShzdHJ1Y3QgaWJf Y21faWQgKmNtX2lkLAogCQlnb3RvIG91dDsKIAl9CiAKLQlyZXQgPSBjbV9pbml0X2F2X2J5X3Bh dGgocGFyYW0tPnByaW1hcnlfcGF0aCwgJmNtX2lkX3ByaXYtPmF2KTsKKwlyZXQgPSBjbV9pbml0 X2F2X2J5X3BhdGgocGFyYW0tPnByaW1hcnlfcGF0aCwgJmNtX2lkX3ByaXYtPmF2LAorCQkJCSBj bV9pZF9wcml2KTsKIAlpZiAocmV0KQogCQlnb3RvIGVycm9yMTsKIAlpZiAocGFyYW0tPmFsdGVy bmF0ZV9wYXRoKSB7CiAJCXJldCA9IGNtX2luaXRfYXZfYnlfcGF0aChwYXJhbS0+YWx0ZXJuYXRl X3BhdGgsCi0JCQkJCSAmY21faWRfcHJpdi0+YWx0X2F2KTsKKwkJCQkJICZjbV9pZF9wcml2LT5h bHRfYXYsIGNtX2lkX3ByaXYpOwogCQlpZiAocmV0KQogCQkJZ290byBlcnJvcjE7CiAJfQpAQCAt MTU2OCw3ICsxNjMxLDcgQEAgc3RhdGljIGludCBjbV9yZXFfaGFuZGxlcihzdHJ1Y3QgY21fd29y ayAqd29yaykKIAogCW1lbWNweSh3b3JrLT5wYXRoWzBdLmRtYWMsIGNtX2lkX3ByaXYtPmF2LmFo X2F0dHIuZG1hYywgRVRIX0FMRU4pOwogCXdvcmstPnBhdGhbMF0udmxhbl9pZCA9IGNtX2lkX3By aXYtPmF2LmFoX2F0dHIudmxhbl9pZDsKLQlyZXQgPSBjbV9pbml0X2F2X2J5X3BhdGgoJndvcmst PnBhdGhbMF0sICZjbV9pZF9wcml2LT5hdik7CisJcmV0ID0gY21faW5pdF9hdl9ieV9wYXRoKCZ3 b3JrLT5wYXRoWzBdLCAmY21faWRfcHJpdi0+YXYsIGNtX2lkX3ByaXYpOwogCWlmIChyZXQpIHsK IAkJaWJfZ2V0X2NhY2hlZF9naWQod29yay0+cG9ydC0+Y21fZGV2LT5pYl9kZXZpY2UsCiAJCQkJ ICB3b3JrLT5wb3J0LT5wb3J0X251bSwgMCwgJndvcmstPnBhdGhbMF0uc2dpZCk7CkBAIC0xNTc4 LDcgKzE2NDEsOCBAQCBzdGF0aWMgaW50IGNtX3JlcV9oYW5kbGVyKHN0cnVjdCBjbV93b3JrICp3 b3JrKQogCQlnb3RvIHJlamVjdGVkOwogCX0KIAlpZiAocmVxX21zZy0+YWx0X2xvY2FsX2xpZCkg ewotCQlyZXQgPSBjbV9pbml0X2F2X2J5X3BhdGgoJndvcmstPnBhdGhbMV0sICZjbV9pZF9wcml2 LT5hbHRfYXYpOworCQlyZXQgPSBjbV9pbml0X2F2X2J5X3BhdGgoJndvcmstPnBhdGhbMV0sICZj bV9pZF9wcml2LT5hbHRfYXYsCisJCQkJCSBjbV9pZF9wcml2KTsKIAkJaWYgKHJldCkgewogCQkJ aWJfc2VuZF9jbV9yZWooY21faWQsIElCX0NNX1JFSl9JTlZBTElEX0FMVF9HSUQsCiAJCQkJICAg ICAgICZ3b3JrLT5wYXRoWzBdLnNnaWQsCkBAIC0yNjMzLDcgKzI2OTcsOCBAQCBpbnQgaWJfc2Vu ZF9jbV9sYXAoc3RydWN0IGliX2NtX2lkICpjbV9pZCwKIAkJZ290byBvdXQ7CiAJfQogCi0JcmV0 ID0gY21faW5pdF9hdl9ieV9wYXRoKGFsdGVybmF0ZV9wYXRoLCAmY21faWRfcHJpdi0+YWx0X2F2 KTsKKwlyZXQgPSBjbV9pbml0X2F2X2J5X3BhdGgoYWx0ZXJuYXRlX3BhdGgsICZjbV9pZF9wcml2 LT5hbHRfYXYsCisJCQkJIGNtX2lkX3ByaXYpOwogCWlmIChyZXQpCiAJCWdvdG8gb3V0OwogCWNt X2lkX3ByaXYtPmFsdF9hdi50aW1lb3V0ID0KQEAgLTI3NDUsNyArMjgxMCw4IEBAIHN0YXRpYyBp bnQgY21fbGFwX2hhbmRsZXIoc3RydWN0IGNtX3dvcmsgKndvcmspCiAJY21faW5pdF9hdl9mb3Jf cmVzcG9uc2Uod29yay0+cG9ydCwgd29yay0+bWFkX3JlY3Zfd2MtPndjLAogCQkJCXdvcmstPm1h ZF9yZWN2X3djLT5yZWN2X2J1Zi5ncmgsCiAJCQkJJmNtX2lkX3ByaXYtPmF2KTsKLQljbV9pbml0 X2F2X2J5X3BhdGgocGFyYW0tPmFsdGVybmF0ZV9wYXRoLCAmY21faWRfcHJpdi0+YWx0X2F2KTsK KwljbV9pbml0X2F2X2J5X3BhdGgocGFyYW0tPmFsdGVybmF0ZV9wYXRoLCAmY21faWRfcHJpdi0+ YWx0X2F2LAorCQkJICAgY21faWRfcHJpdik7CiAJcmV0ID0gYXRvbWljX2luY19hbmRfdGVzdCgm Y21faWRfcHJpdi0+d29ya19jb3VudCk7CiAJaWYgKCFyZXQpCiAJCWxpc3RfYWRkX3RhaWwoJndv cmstPmxpc3QsICZjbV9pZF9wcml2LT53b3JrX2xpc3QpOwpAQCAtMjkzNyw3ICszMDAzLDcgQEAg aW50IGliX3NlbmRfY21fc2lkcl9yZXEoc3RydWN0IGliX2NtX2lkICpjbV9pZCwKIAkJcmV0dXJu IC1FSU5WQUw7CiAKIAljbV9pZF9wcml2ID0gY29udGFpbmVyX29mKGNtX2lkLCBzdHJ1Y3QgY21f aWRfcHJpdmF0ZSwgaWQpOwotCXJldCA9IGNtX2luaXRfYXZfYnlfcGF0aChwYXJhbS0+cGF0aCwg JmNtX2lkX3ByaXYtPmF2KTsKKwlyZXQgPSBjbV9pbml0X2F2X2J5X3BhdGgocGFyYW0tPnBhdGgs ICZjbV9pZF9wcml2LT5hdiwgY21faWRfcHJpdik7CiAJaWYgKHJldCkKIAkJZ290byBvdXQ7CiAK QEAgLTMzNTgsNyArMzQyNCw5IEBAIG91dDoKIHN0YXRpYyBpbnQgY21fbWlncmF0ZShzdHJ1Y3Qg aWJfY21faWQgKmNtX2lkKQogewogCXN0cnVjdCBjbV9pZF9wcml2YXRlICpjbV9pZF9wcml2Owor CXN0cnVjdCBjbV9hdiB0bXBfYXY7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlpbnQgdG1wX3Nl bmRfcG9ydF9ub3RfcmVhZHk7CiAJaW50IHJldCA9IDA7CiAKIAljbV9pZF9wcml2ID0gY29udGFp bmVyX29mKGNtX2lkLCBzdHJ1Y3QgY21faWRfcHJpdmF0ZSwgaWQpOwpAQCAtMzM2Nyw3ICszNDM1 LDE0IEBAIHN0YXRpYyBpbnQgY21fbWlncmF0ZShzdHJ1Y3QgaWJfY21faWQgKmNtX2lkKQogCSAg ICAoY21faWQtPmxhcF9zdGF0ZSA9PSBJQl9DTV9MQVBfVU5JTklUIHx8CiAJICAgICBjbV9pZC0+ bGFwX3N0YXRlID09IElCX0NNX0xBUF9JRExFKSkgewogCQljbV9pZC0+bGFwX3N0YXRlID0gSUJf Q01fTEFQX0lETEU7CisJCS8qIFN3YXAgYWRkcmVzcyB2ZWN0b3IgKi8KKwkJdG1wX2F2ID0gY21f aWRfcHJpdi0+YXY7CiAJCWNtX2lkX3ByaXYtPmF2ID0gY21faWRfcHJpdi0+YWx0X2F2OworCQlj bV9pZF9wcml2LT5hbHRfYXYgPSB0bXBfYXY7CisJCS8qIFN3YXAgcG9ydCBzZW5kIHJlYWR5IHN0 YXRlICovCisJCXRtcF9zZW5kX3BvcnRfbm90X3JlYWR5ID0gY21faWRfcHJpdi0+cHJpbV9zZW5k X3BvcnRfbm90X3JlYWR5OworCQljbV9pZF9wcml2LT5wcmltX3NlbmRfcG9ydF9ub3RfcmVhZHkg PSBjbV9pZF9wcml2LT5hbHRyX3NlbmRfcG9ydF9ub3RfcmVhZHk7CisJCWNtX2lkX3ByaXYtPmFs dHJfc2VuZF9wb3J0X25vdF9yZWFkeSA9IHRtcF9zZW5kX3BvcnRfbm90X3JlYWR5OwogCX0gZWxz ZQogCQlyZXQgPSAtRUlOVkFMOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNtX2lkX3ByaXYt PmxvY2ssIGZsYWdzKTsKQEAgLTM3OTksNiArMzg3NCw5IEBAIHN0YXRpYyB2b2lkIGNtX2FkZF9v bmUoc3RydWN0IGliX2RldmljZSAqaWJfZGV2aWNlKQogCQlwb3J0LT5jbV9kZXYgPSBjbV9kZXY7 CiAJCXBvcnQtPnBvcnRfbnVtID0gaTsKIAorCQlJTklUX0xJU1RfSEVBRCgmcG9ydC0+Y21fcHJp dl9wcmltX2xpc3QpOworCQlJTklUX0xJU1RfSEVBRCgmcG9ydC0+Y21fcHJpdl9hbHRyX2xpc3Qp OworCiAJCXJldCA9IGNtX2NyZWF0ZV9wb3J0X2ZzKHBvcnQpOwogCQlpZiAocmV0KQogCQkJZ290 byBlcnJvcjE7CkBAIC0zODQ1LDYgKzM5MjMsOCBAQCBzdGF0aWMgdm9pZCBjbV9yZW1vdmVfb25l KHN0cnVjdCBpYl9kZXZpY2UgKmliX2RldmljZSkKIHsKIAlzdHJ1Y3QgY21fZGV2aWNlICpjbV9k ZXY7CiAJc3RydWN0IGNtX3BvcnQgKnBvcnQ7CisJc3RydWN0IGNtX2lkX3ByaXZhdGUgKmNtX2lk X3ByaXY7CisJc3RydWN0IGliX21hZF9hZ2VudCAqY3VyX21hZF9hZ2VudDsKIAlzdHJ1Y3QgaWJf cG9ydF9tb2RpZnkgcG9ydF9tb2RpZnkgPSB7CiAJCS5jbHJfcG9ydF9jYXBfbWFzayA9IElCX1BP UlRfQ01fU1VQCiAJfTsKQEAgLTM4NjIsMTAgKzM5NDIsMjIgQEAgc3RhdGljIHZvaWQgY21fcmVt b3ZlX29uZShzdHJ1Y3QgaWJfZGV2aWNlICppYl9kZXZpY2UpCiAJZm9yIChpID0gMTsgaSA8PSBp Yl9kZXZpY2UtPnBoeXNfcG9ydF9jbnQ7IGkrKykgewogCQlwb3J0ID0gY21fZGV2LT5wb3J0W2kt MV07CiAJCWliX21vZGlmeV9wb3J0KGliX2RldmljZSwgcG9ydC0+cG9ydF9udW0sIDAsICZwb3J0 X21vZGlmeSk7Ci0JCWliX3VucmVnaXN0ZXJfbWFkX2FnZW50KHBvcnQtPm1hZF9hZ2VudCk7CisJ CS8qIE1hcmsgYWxsIHRoZSBjbV9pZCdzIGFzIG5vdCB2YWxpZCAqLworCQlzcGluX2xvY2tfaXJx KCZjbS5sb2NrKTsKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShjbV9pZF9wcml2LCAmcG9ydC0+Y21f cHJpdl9hbHRyX2xpc3QsIGFsdHJfbGlzdCkKKwkJCWNtX2lkX3ByaXYtPmFsdHJfc2VuZF9wb3J0 X25vdF9yZWFkeSA9IDE7CisJCWxpc3RfZm9yX2VhY2hfZW50cnkoY21faWRfcHJpdiwgJnBvcnQt PmNtX3ByaXZfcHJpbV9saXN0LCBwcmltX2xpc3QpCisJCQljbV9pZF9wcml2LT5wcmltX3NlbmRf cG9ydF9ub3RfcmVhZHkgPSAxOworCQlzcGluX3VubG9ja19pcnEoJmNtLmxvY2spOworCQlzcGlu X2xvY2tfaXJxKCZjbS5zdGF0ZV9sb2NrKTsKKwkJY3VyX21hZF9hZ2VudCA9IHBvcnQtPm1hZF9h Z2VudDsKKwkJcG9ydC0+bWFkX2FnZW50ID0gTlVMTDsKKwkJc3Bpbl91bmxvY2tfaXJxKCZjbS5z dGF0ZV9sb2NrKTsKKwkJaWJfdW5yZWdpc3Rlcl9tYWRfYWdlbnQoY3VyX21hZF9hZ2VudCk7CiAJ CWZsdXNoX3dvcmtxdWV1ZShjbS53cSk7CiAJCWNtX3JlbW92ZV9wb3J0X2ZzKHBvcnQpOwogCX0K KwogCWRldmljZV91bnJlZ2lzdGVyKGNtX2Rldi0+ZGV2aWNlKTsKIAlrZnJlZShjbV9kZXYpOwog fQpAQCAtMzg3OCw2ICszOTcwLDcgQEAgc3RhdGljIGludCBfX2luaXQgaWJfY21faW5pdCh2b2lk KQogCUlOSVRfTElTVF9IRUFEKCZjbS5kZXZpY2VfbGlzdCk7CiAJcndsb2NrX2luaXQoJmNtLmRl dmljZV9sb2NrKTsKIAlzcGluX2xvY2tfaW5pdCgmY20ubG9jayk7CisJc3Bpbl9sb2NrX2luaXQo JmNtLnN0YXRlX2xvY2spOwogCWNtLmxpc3Rlbl9zZXJ2aWNlX3RhYmxlID0gUkJfUk9PVDsKIAlj bS5saXN0ZW5fc2VydmljZV9pZCA9IGJlNjRfdG9fY3B1KElCX0NNX0FTU0lHTl9TRVJWSUNFX0lE KTsKIAljbS5yZW1vdGVfaWRfdGFibGUgPSBSQl9ST09UOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9p bmZpbmliYW5kL2NvcmUvdW1lbS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jCmlu ZGV4IGM5ZmVkOGYyZTA3MC4uN2EyYjQyYjZjMDg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmlu aWJhbmQvY29yZS91bWVtLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbS5jCkBA IC0xNTYsNyArMTU2LDcgQEAgc3RydWN0IGliX3VtZW0gKmliX3VtZW1fZ2V0KHN0cnVjdCBpYl91 Y29udGV4dCAqY29udGV4dCwgdW5zaWduZWQgbG9uZyBhZGRyLAogCiAJY3VyX2Jhc2UgPSBhZGRy ICYgUEFHRV9NQVNLOwogCi0JaWYgKG5wYWdlcyA9PSAwKSB7CisJaWYgKG5wYWdlcyA9PSAwIHx8 IG5wYWdlcyA+IFVJTlRfTUFYKSB7CiAJCXJldCA9IC1FSU5WQUw7CiAJCWdvdG8gb3V0OwogCX0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3V2ZXJic19tYWluLmMgYi9kcml2 ZXJzL2luZmluaWJhbmQvY29yZS91dmVyYnNfbWFpbi5jCmluZGV4IGYzZWNmZTRiOTU3MS4uNWJi ZmQwZWNiMzFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91dmVyYnNfbWFp bi5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3V2ZXJic19tYWluLmMKQEAgLTI0MCwx MiArMjQwLDkgQEAgc3RhdGljIGludCBpYl91dmVyYnNfY2xlYW51cF91Y29udGV4dChzdHJ1Y3Qg aWJfdXZlcmJzX2ZpbGUgKmZpbGUsCiAJCQljb250YWluZXJfb2YodW9iaiwgc3RydWN0IGliX3Vx cF9vYmplY3QsIHVldmVudC51b2JqZWN0KTsKIAogCQlpZHJfcmVtb3ZlX3VvYmooJmliX3V2ZXJi c19xcF9pZHIsIHVvYmopOwotCQlpZiAocXAgIT0gcXAtPnJlYWxfcXApIHsKLQkJCWliX2Nsb3Nl X3FwKHFwKTsKLQkJfSBlbHNlIHsKKwkJaWYgKHFwID09IHFwLT5yZWFsX3FwKQogCQkJaWJfdXZl cmJzX2RldGFjaF91bWNhc3QocXAsIHVxcCk7Ci0JCQlpYl9kZXN0cm95X3FwKHFwKTsKLQkJfQor CQlpYl9kZXN0cm95X3FwKHFwKTsKIAkJaWJfdXZlcmJzX3JlbGVhc2VfdWV2ZW50KGZpbGUsICZ1 cXAtPnVldmVudCk7CiAJCWtmcmVlKHVxcCk7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZp bmliYW5kL2h3L21seDQvY3EuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg0L2NxLmMKaW5k ZXggMTA2NmVlYzg1NGE5Li5kNGYwY2RjYTM2YmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5p YmFuZC9ody9tbHg0L2NxLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDQvY3EuYwpA QCAtMjM5LDExICsyMzksMTQgQEAgc3RydWN0IGliX2NxICptbHg0X2liX2NyZWF0ZV9jcShzdHJ1 Y3QgaWJfZGV2aWNlICppYmRldiwgaW50IGVudHJpZXMsIGludCB2ZWN0b3IKIAlpZiAoY29udGV4 dCkKIAkJaWYgKGliX2NvcHlfdG9fdWRhdGEodWRhdGEsICZjcS0+bWNxLmNxbiwgc2l6ZW9mIChf X3UzMikpKSB7CiAJCQllcnIgPSAtRUZBVUxUOwotCQkJZ290byBlcnJfZGJtYXA7CisJCQlnb3Rv IGVycl9jcV9mcmVlOwogCQl9CiAKIAlyZXR1cm4gJmNxLT5pYmNxOwogCitlcnJfY3FfZnJlZToK KwltbHg0X2NxX2ZyZWUoZGV2LT5kZXYsICZjcS0+bWNxKTsKKwogZXJyX2RibWFwOgogCWlmIChj b250ZXh0KQogCQltbHg0X2liX2RiX3VubWFwX3VzZXIodG9fbXVjb250ZXh0KGNvbnRleHQpLCAm Y3EtPmRiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmMgYi9k cml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jCmluZGV4IDhhZTRmODk2Y2I0MS4uYTMzOTVl NGNjNzIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jCisrKyBi L2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmMKQEAgLTc3MSw4ICs3NzEsNyBAQCBzdHJ1 Y3QgaWJfY3EgKm1seDVfaWJfY3JlYXRlX2NxKHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LCBpbnQg ZW50cmllcywKIAkJaWYgKGVycikKIAkJCWdvdG8gZXJyX2NyZWF0ZTsKIAl9IGVsc2UgewotCQkv KiBmb3Igbm93IGNob29zZSA2NCBieXRlcyB0aWxsIHdlIGhhdmUgYSBwcm9wZXIgaW50ZXJmYWNl ICovCi0JCWNxZV9zaXplID0gNjQ7CisJCWNxZV9zaXplID0gY2FjaGVfbGluZV9zaXplKCkgPT0g MTI4ID8gMTI4IDogNjQ7CiAJCWVyciA9IGNyZWF0ZV9jcV9rZXJuZWwoZGV2LCBjcSwgZW50cmll cywgY3FlX3NpemUsICZjcWIsCiAJCQkJICAgICAgICZpbmRleCwgJmlubGVuKTsKIAkJaWYgKGVy cikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21seDVfaWIuaCBiL2Ry aXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21seDVfaWIuaAppbmRleCBmMmNjZjFhNWEyOTEuLjYx Y2Y1ZjE4YzMzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWx4NV9p Yi5oCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21seDVfaWIuaApAQCAtMzc2LDYg KzM3Niw4IEBAIHN0cnVjdCBtbHg1X2liX2RldiB7CiAJc3RydWN0IG1seDVfaWJfcmVzb3VyY2Vz CWRldnI7CiAJc3RydWN0IG1seDVfbXJfY2FjaGUJCWNhY2hlOwogCXN0cnVjdCB0aW1lcl9saXN0 CQlkZWxheV90aW1lcjsKKwkvKiBQcmV2ZW50cyBzb2Z0IGxvY2sgb24gbWFzc2l2ZSByZWcgTVJz ICovCisJc3RydWN0IG11dGV4CQkJc2xvd19wYXRoX211dGV4OwogCWludAkJCQlmaWxsX2RlbGF5 OwogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYyBiL2Ry aXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMKaW5kZXggYWZhODczYmQwMjhlLi5iZjc1Yjk0 M2JjMzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21yLmMKKysrIGIv ZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbXIuYwpAQCAtNTU0LDYgKzU1NCw3IEBAIGludCBt bHg1X21yX2NhY2hlX2luaXQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpCiAJaW50IGVycjsKIAlp bnQgaTsKIAorCW11dGV4X2luaXQoJmRldi0+c2xvd19wYXRoX211dGV4KTsKIAljYWNoZS0+d3Eg PSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZSgibWtleV9jYWNoZSIpOwogCWlmICghY2Fj aGUtPndxKSB7CiAJCW1seDVfaWJfd2FybihkZXYsICJmYWlsZWQgdG8gY3JlYXRlIHdvcmsgcXVl dWVcbiIpOwpAQCAtOTA5LDkgKzkxMCwxMiBAQCBzdHJ1Y3QgaWJfbXIgKm1seDVfaWJfcmVnX3Vz ZXJfbXIoc3RydWN0IGliX3BkICpwZCwgdTY0IHN0YXJ0LCB1NjQgbGVuZ3RoLAogCQl9CiAJfQog Ci0JaWYgKCFtcikKKwlpZiAoIW1yKSB7CisJCW11dGV4X2xvY2soJmRldi0+c2xvd19wYXRoX211 dGV4KTsKIAkJbXIgPSByZWdfY3JlYXRlKHBkLCB2aXJ0X2FkZHIsIGxlbmd0aCwgdW1lbSwgbmNv bnQsIHBhZ2Vfc2hpZnQsCiAJCQkJYWNjZXNzX2ZsYWdzKTsKKwkJbXV0ZXhfdW5sb2NrKCZkZXYt PnNsb3dfcGF0aF9tdXRleCk7CisJfQogCiAJaWYgKElTX0VSUihtcikpIHsKIAkJZXJyID0gUFRS X0VSUihtcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jIGIv ZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYwppbmRleCBhYWEzYTBiMGVjOTUuLjg1NzA3 YjdkOWZkZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvcXAuYworKysg Yi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9xcC5jCkBAIC0xMjA1LDggKzEyMDUsOSBAQCBz dHJ1Y3QgaWJfcXAgKm1seDVfaWJfY3JlYXRlX3FwKHN0cnVjdCBpYl9wZCAqcGQsCiAJCQlxcC0+ aWJxcC5xcF9udW0gPSBxcC0+bXFwLnFwbjsKIAogCQltbHg1X2liX2RiZyhkZXYsICJpYiBxcG51 bSAweCV4LCBtbHggcXBuIDB4JXgsIHJjcW4gMHgleCwgc2NxbiAweCV4XG4iLAotCQkJICAgIHFw LT5pYnFwLnFwX251bSwgcXAtPm1xcC5xcG4sIHRvX21jcShpbml0X2F0dHItPnJlY3ZfY3EpLT5t Y3EuY3FuLAotCQkJICAgIHRvX21jcShpbml0X2F0dHItPnNlbmRfY3EpLT5tY3EuY3FuKTsKKwkJ CSAgICBxcC0+aWJxcC5xcF9udW0sIHFwLT5tcXAucXBuLAorCQkJICAgIGluaXRfYXR0ci0+cmVj dl9jcSA/IHRvX21jcShpbml0X2F0dHItPnJlY3ZfY3EpLT5tY3EuY3FuIDogLTEsCisJCQkgICAg aW5pdF9hdHRyLT5zZW5kX2NxID8gdG9fbWNxKGluaXRfYXR0ci0+c2VuZF9jcSktPm1jcS5jcW4g OiAtMSk7CiAKIAkJcXAtPnhyY2RuID0geHJjZG47CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5m aW5pYmFuZC91bHAvc3JwL2liX3NycC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnAvaWJf c3JwLmMKaW5kZXggMzY4NzY5NjBmOTdlLi42MzExZmQ0NDhjMzYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvaW5maW5pYmFuZC91bHAvc3JwL2liX3NycC5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC91 bHAvc3JwL2liX3NycC5jCkBAIC0xMzEwLDcgKzEzMTAsOSBAQCBzdGF0aWMgaW50IHNycF9tYXBf c2dfZW50cnkoc3RydWN0IHNycF9tYXBfc3RhdGUgKnN0YXRlLAogCiAJd2hpbGUgKGRtYV9sZW4p IHsKIAkJdW5zaWduZWQgb2Zmc2V0ID0gZG1hX2FkZHIgJiB+ZGV2LT5tcl9wYWdlX21hc2s7Ci0J CWlmIChzdGF0ZS0+bnBhZ2VzID09IGRldi0+bWF4X3BhZ2VzX3Blcl9tciB8fCBvZmZzZXQgIT0g MCkgeworCisJCWlmIChzdGF0ZS0+bnBhZ2VzID09IGRldi0+bWF4X3BhZ2VzX3Blcl9tciB8fAor CQkgICAgKHN0YXRlLT5ucGFnZXMgPiAwICYmIG9mZnNldCAhPSAwKSkgewogCQkJcmV0ID0gc3Jw X2ZpbmlzaF9tYXBwaW5nKHN0YXRlLCB0YXJnZXQpOwogCQkJaWYgKHJldCkKIAkJCQlyZXR1cm4g cmV0OwpAQCAtMTMyOSwxMiArMTMzMSwxMiBAQCBzdGF0aWMgaW50IHNycF9tYXBfc2dfZW50cnko c3RydWN0IHNycF9tYXBfc3RhdGUgKnN0YXRlLAogCX0KIAogCS8qCi0JICogSWYgdGhlIGxhc3Qg ZW50cnkgb2YgdGhlIE1SIHdhc24ndCBhIGZ1bGwgcGFnZSwgdGhlbiB3ZSBuZWVkIHRvCisJICog SWYgdGhlIGVuZCBvZiB0aGUgTVIgaXMgbm90IG9uIGEgcGFnZSBib3VuZGFyeSB0aGVuIHdlIG5l ZWQgdG8KIAkgKiBjbG9zZSBpdCBvdXQgYW5kIHN0YXJ0IGEgbmV3IG9uZSAtLSB3ZSBjYW4gb25s eSBtZXJnZSBhdCBwYWdlCiAJICogYm91bmRyaWVzLgogCSAqLwogCXJldCA9IDA7Ci0JaWYgKGxl biAhPSBkZXYtPm1yX3BhZ2Vfc2l6ZSkgeworCWlmICgoZG1hX2FkZHIgJiB+ZGV2LT5tcl9wYWdl X21hc2spICE9IDApIHsKIAkJcmV0ID0gc3JwX2ZpbmlzaF9tYXBwaW5nKHN0YXRlLCB0YXJnZXQp OwogCQlpZiAoIXJldCkKIAkJCXNycF9tYXBfdXBkYXRlX3N0YXJ0KHN0YXRlLCBOVUxMLCAwLCAw KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvbW91c2UvZWxhbnRlY2guYyBiL2RyaXZlcnMv aW5wdXQvbW91c2UvZWxhbnRlY2guYwppbmRleCA5MmNlYmFmNWQ2MjEuLjI1MDg4ZTQwY2EwNiAx MDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9tb3VzZS9lbGFudGVjaC5jCisrKyBiL2RyaXZlcnMv aW5wdXQvbW91c2UvZWxhbnRlY2guYwpAQCAtMTM4OSw2ICsxMzg5LDEzIEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCBlbGFudGVjaF9kbWlfZm9yY2VfY3JjX2VuYWJsZWRbXSA9 IHsKIAkJfSwKIAl9LAogCXsKKwkJLyogRnVqaXRzdSBMSUZFQk9PSyBFNTQ0ICBkb2VzIG5vdCB3 b3JrIHdpdGggY3JjX2VuYWJsZWQgPT0gMCAqLworCQkubWF0Y2hlcyA9IHsKKwkJCURNSV9NQVRD SChETUlfU1lTX1ZFTkRPUiwgIkZVSklUU1UiKSwKKwkJCURNSV9NQVRDSChETUlfUFJPRFVDVF9O QU1FLCAiTElGRUJPT0sgRTU0NCIpLAorCQl9LAorCX0sCisJewogCQkvKiBGdWppdHN1IExJRkVC T09LIEU1NTQgIGRvZXMgbm90IHdvcmsgd2l0aCBjcmNfZW5hYmxlZCA9PSAwICovCiAJCS5tYXRj aGVzID0gewogCQkJRE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAiRlVKSVRTVSIpLApAQCAtMTM5 NiwxMCArMTQwMywxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgZWxhbnRl Y2hfZG1pX2ZvcmNlX2NyY19lbmFibGVkW10gPSB7CiAJCX0sCiAJfSwKIAl7Ci0JCS8qIEZ1aml0 c3UgTElGRUJPT0sgRTU0NCAgZG9lcyBub3Qgd29yayB3aXRoIGNyY19lbmFibGVkID09IDAgKi8K KwkJLyogRnVqaXRzdSBMSUZFQk9PSyBFNTU2IGRvZXMgbm90IHdvcmsgd2l0aCBjcmNfZW5hYmxl ZCA9PSAwICovCiAJCS5tYXRjaGVzID0gewogCQkJRE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAi RlVKSVRTVSIpLAotCQkJRE1JX01BVENIKERNSV9QUk9EVUNUX05BTUUsICJMSUZFQk9PSyBFNTQ0 IiksCisJCQlETUlfTUFUQ0goRE1JX1BST0RVQ1RfTkFNRSwgIkxJRkVCT09LIEU1NTYiKSwKIAkJ fSwKIAl9LAogCXsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvc2VyaW8vaTgwNDIteDg2aWE2 NGlvLmggYi9kcml2ZXJzL2lucHV0L3NlcmlvL2k4MDQyLXg4NmlhNjRpby5oCmluZGV4IGQ5YWI1 YzVlOGU4Mi4uY2NiMzZmYjU2NWRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3NlcmlvL2k4 MDQyLXg4NmlhNjRpby5oCisrKyBiL2RyaXZlcnMvaW5wdXQvc2VyaW8vaTgwNDIteDg2aWE2NGlv LmgKQEAgLTc3Niw2ICs3NzYsMTMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lk IF9faW5pdGNvbnN0IGk4MDQyX2RtaV9rYmRyZXNldF90YWJsZVtdID0gewogCQkJRE1JX01BVENI KERNSV9QUk9EVUNUX05BTUUsICJQMzQiKSwKIAkJfSwKIAl9LAorCXsKKwkJLyogU2NoZW5rZXIg WE1HIEM1MDQgLSBFbGFudGVjaCB0b3VjaHBhZCAqLworCQkubWF0Y2hlcyA9IHsKKwkJCURNSV9N QVRDSChETUlfU1lTX1ZFTkRPUiwgIlhNRyIpLAorCQkJRE1JX01BVENIKERNSV9QUk9EVUNUX05B TUUsICJDNTA0IiksCisJCX0sCisJfSwKIAl7IH0KIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv aW9tbXUvYW1kX2lvbW11LmMgYi9kcml2ZXJzL2lvbW11L2FtZF9pb21tdS5jCmluZGV4IGI0YjEz MzIwNzUwNS4uNzZjNzFlY2JhNjU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lvbW11L2FtZF9pb21t dS5jCisrKyBiL2RyaXZlcnMvaW9tbXUvYW1kX2lvbW11LmMKQEAgLTIwMzcsNiArMjAzNyw5IEBA IHN0YXRpYyB2b2lkIGRtYV9vcHNfZG9tYWluX2ZyZWUoc3RydWN0IGRtYV9vcHNfZG9tYWluICpk b20pCiAJCWtmcmVlKGRvbS0+YXBlcnR1cmVbaV0pOwogCX0KIAorCWlmIChkb20tPmRvbWFpbi5p ZCkKKwkJZG9tYWluX2lkX2ZyZWUoZG9tLT5kb21haW4uaWQpOworCiAJa2ZyZWUoZG9tKTsKIH0K IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9kbWFyLmMgYi9kcml2ZXJzL2lvbW11L2RtYXIu YwppbmRleCA4ZDNmNWQ4OWNmYzIuLmJjY2ZhY2FiYmFlNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9p b21tdS9kbWFyLmMKKysrIGIvZHJpdmVycy9pb21tdS9kbWFyLmMKQEAgLTI5OSw3ICsyOTksOSBA QCBzdGF0aWMgaW50IGRtYXJfcGNpX2J1c19ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sg Km5iLAogCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gdG9fcGNpX2RldihkYXRhKTsKIAlzdHJ1Y3Qg ZG1hcl9wY2lfbm90aWZ5X2luZm8gKmluZm87CiAKLQkvKiBPbmx5IGNhcmUgYWJvdXQgYWRkL3Jl bW92ZSBldmVudHMgZm9yIHBoeXNpY2FsIGZ1bmN0aW9ucyAqLworCS8qIE9ubHkgY2FyZSBhYm91 dCBhZGQvcmVtb3ZlIGV2ZW50cyBmb3IgcGh5c2ljYWwgZnVuY3Rpb25zLgorCSAqIEZvciBWRnMg d2UgYWN0dWFsbHkgZG8gdGhlIGxvb2t1cCBiYXNlZCBvbiB0aGUgY29ycmVzcG9uZGluZworCSAq IFBGIGluIGRldmljZV90b19pb21tdSgpIGFueXdheS4gKi8KIAlpZiAocGRldi0+aXNfdmlydGZu KQogCQlyZXR1cm4gTk9USUZZX0RPTkU7CiAJaWYgKGFjdGlvbiAhPSBCVVNfTk9USUZZX0FERF9E RVZJQ0UgJiYgYWN0aW9uICE9IEJVU19OT1RJRllfREVMX0RFVklDRSkKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvaW9tbXUvaW50ZWwtaW9tbXUuYyBiL2RyaXZlcnMvaW9tbXUvaW50ZWwtaW9tbXUuYwpp bmRleCA1NDRmOTY4YTQ0MGEuLmQ1YjU4NzhmYTk5NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pb21t dS9pbnRlbC1pb21tdS5jCisrKyBiL2RyaXZlcnMvaW9tbXUvaW50ZWwtaW9tbXUuYwpAQCAtNjg0 LDcgKzY4NCwxMyBAQCBzdGF0aWMgc3RydWN0IGludGVsX2lvbW11ICpkZXZpY2VfdG9faW9tbXUo c3RydWN0IGRldmljZSAqZGV2LCB1OCAqYnVzLCB1OCAqZGV2ZgogCQlyZXR1cm4gTlVMTDsKIAog CWlmIChkZXZfaXNfcGNpKGRldikpIHsKKwkJc3RydWN0IHBjaV9kZXYgKnBmX3BkZXY7CisKIAkJ cGRldiA9IHRvX3BjaV9kZXYoZGV2KTsKKwkJLyogVkZzIGFyZW4ndCBsaXN0ZWQgaW4gc2NvcGUg dGFibGVzOyB3ZSBuZWVkIHRvIGxvb2sgdXAKKwkJICogdGhlIFBGIGluc3RlYWQgdG8gZmluZCB0 aGUgSU9NTVUuICovCisJCXBmX3BkZXYgPSBwY2lfcGh5c2ZuKHBkZXYpOworCQlkZXYgPSAmcGZf cGRldi0+ZGV2OwogCQlzZWdtZW50ID0gcGNpX2RvbWFpbl9ucihwZGV2LT5idXMpOwogCX0gZWxz ZSBpZiAoQUNQSV9DT01QQU5JT04oZGV2KSkKIAkJZGV2ID0gJkFDUElfQ09NUEFOSU9OKGRldikt PmRldjsKQEAgLTY5Nyw2ICs3MDMsMTMgQEAgc3RhdGljIHN0cnVjdCBpbnRlbF9pb21tdSAqZGV2 aWNlX3RvX2lvbW11KHN0cnVjdCBkZXZpY2UgKmRldiwgdTggKmJ1cywgdTggKmRldmYKIAkJZm9y X2VhY2hfYWN0aXZlX2Rldl9zY29wZShkcmhkLT5kZXZpY2VzLAogCQkJCQkgIGRyaGQtPmRldmlj ZXNfY250LCBpLCB0bXApIHsKIAkJCWlmICh0bXAgPT0gZGV2KSB7CisJCQkJLyogRm9yIGEgVkYg dXNlIGl0cyBvcmlnaW5hbCBCREYjIG5vdCB0aGF0IG9mIHRoZSBQRgorCQkJCSAqIHdoaWNoIHdl IHVzZWQgZm9yIHRoZSBJT01NVSBsb29rdXAuIFN0cmljdGx5IHNwZWFraW5nCisJCQkJICogd2Ug Y291bGQgZG8gdGhpcyBmb3IgYWxsIFBDSSBkZXZpY2VzOyB3ZSBvbmx5IG5lZWQgdG8KKwkJCQkg KiBnZXQgdGhlIEJERiMgZnJvbSB0aGUgc2NvcGUgdGFibGUgZm9yIEFDUEkgbWF0Y2hlcy4gKi8K KwkJCQlpZiAocGRldi0+aXNfdmlydGZuKQorCQkJCQlnb3RvIGdvdF9wZGV2OworCiAJCQkJKmJ1 cyA9IGRyaGQtPmRldmljZXNbaV0uYnVzOwogCQkJCSpkZXZmbiA9IGRyaGQtPmRldmljZXNbaV0u ZGV2Zm47CiAJCQkJZ290byBvdXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vZ2lnYXNldC9z ZXItZ2lnYXNldC5jIGIvZHJpdmVycy9pc2RuL2dpZ2FzZXQvc2VyLWdpZ2FzZXQuYwppbmRleCAw ZWJiNTJiMDMzNmQuLjM5N2RiYTZkNDA4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2dpZ2Fz ZXQvc2VyLWdpZ2FzZXQuYworKysgYi9kcml2ZXJzL2lzZG4vZ2lnYXNldC9zZXItZ2lnYXNldC5j CkBAIC03OTEsOCArNzkxLDEwIEBAIHN0YXRpYyBpbnQgX19pbml0IHNlcl9naWdhc2V0X2luaXQo dm9pZCkKIAlkcml2ZXIgPSBnaWdhc2V0X2luaXRkcml2ZXIoR0lHQVNFVF9NSU5PUiwgR0lHQVNF VF9NSU5PUlMsCiAJCQkJICAgIEdJR0FTRVRfTU9EVUxFTkFNRSwgR0lHQVNFVF9ERVZOQU1FLAog CQkJCSAgICAmb3BzLCBUSElTX01PRFVMRSk7Ci0JaWYgKCFkcml2ZXIpCisJaWYgKCFkcml2ZXIp IHsKKwkJcmMgPSAtRU5PTUVNOwogCQlnb3RvIGVycm9yOworCX0KIAogCXJjID0gdHR5X3JlZ2lz dGVyX2xkaXNjKE5fR0lHQVNFVF9NMTAxLCAmZ2lnYXNldF9sZGlzYyk7CiAJaWYgKHJjICE9IDAp IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tbXBhdGguYyBiL2RyaXZlcnMvbWQvZG0tbXBh dGguYwppbmRleCAzNDYwMWNjMGM1MDguLjU1NTFjMjM2ZmIyNSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9tZC9kbS1tcGF0aC5jCisrKyBiL2RyaXZlcnMvbWQvZG0tbXBhdGguYwpAQCAtMTE5NiwxMCAr MTE5NiwxMCBAQCBzdGF0aWMgdm9pZCBhY3RpdmF0ZV9wYXRoKHN0cnVjdCB3b3JrX3N0cnVjdCAq d29yaykKIHsKIAlzdHJ1Y3QgcGdwYXRoICpwZ3BhdGggPQogCQljb250YWluZXJfb2Yod29yaywg c3RydWN0IHBncGF0aCwgYWN0aXZhdGVfcGF0aC53b3JrKTsKKwlzdHJ1Y3QgcmVxdWVzdF9xdWV1 ZSAqcSA9IGJkZXZfZ2V0X3F1ZXVlKHBncGF0aC0+cGF0aC5kZXYtPmJkZXYpOwogCi0JaWYgKHBn cGF0aC0+aXNfYWN0aXZlKQotCQlzY3NpX2RoX2FjdGl2YXRlKGJkZXZfZ2V0X3F1ZXVlKHBncGF0 aC0+cGF0aC5kZXYtPmJkZXYpLAotCQkJCSBwZ19pbml0X2RvbmUsIHBncGF0aCk7CisJaWYgKHBn cGF0aC0+aXNfYWN0aXZlICYmICFibGtfcXVldWVfZHlpbmcocSkpCisJCXNjc2lfZGhfYWN0aXZh dGUocSwgcGdfaW5pdF9kb25lLCBwZ3BhdGgpOwogCWVsc2UKIAkJcGdfaW5pdF9kb25lKHBncGF0 aCwgU0NTSV9ESF9ERVZfT0ZGTElORUQpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS10 YWJsZS5jIGIvZHJpdmVycy9tZC9kbS10YWJsZS5jCmluZGV4IDkyMjc5MTAwOWZjNS4uYzkzMmI2 YjBkNTRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLXRhYmxlLmMKKysrIGIvZHJpdmVycy9t ZC9kbS10YWJsZS5jCkBAIC03MjUsMzcgKzcyNSwzMiBAQCBpbnQgZG1fdGFibGVfYWRkX3Rhcmdl dChzdHJ1Y3QgZG1fdGFibGUgKnQsIGNvbnN0IGNoYXIgKnR5cGUsCiAKIAl0Z3QtPnR5cGUgPSBk bV9nZXRfdGFyZ2V0X3R5cGUodHlwZSk7CiAJaWYgKCF0Z3QtPnR5cGUpIHsKLQkJRE1FUlIoIiVz OiAlczogdW5rbm93biB0YXJnZXQgdHlwZSIsIGRtX2RldmljZV9uYW1lKHQtPm1kKSwKLQkJICAg ICAgdHlwZSk7CisJCURNRVJSKCIlczogJXM6IHVua25vd24gdGFyZ2V0IHR5cGUiLCBkbV9kZXZp Y2VfbmFtZSh0LT5tZCksIHR5cGUpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKIAlpZiAoZG1f dGFyZ2V0X25lZWRzX3NpbmdsZXRvbih0Z3QtPnR5cGUpKSB7CiAJCWlmICh0LT5udW1fdGFyZ2V0 cykgewotCQkJRE1FUlIoIiVzOiB0YXJnZXQgdHlwZSAlcyBtdXN0IGFwcGVhciBhbG9uZSBpbiB0 YWJsZSIsCi0JCQkgICAgICBkbV9kZXZpY2VfbmFtZSh0LT5tZCksIHR5cGUpOwotCQkJcmV0dXJu IC1FSU5WQUw7CisJCQl0Z3QtPmVycm9yID0gInNpbmdsZXRvbiB0YXJnZXQgdHlwZSBtdXN0IGFw cGVhciBhbG9uZSBpbiB0YWJsZSI7CisJCQlnb3RvIGJhZDsKIAkJfQogCQl0LT5zaW5nbGV0b24g PSAxOwogCX0KIAogCWlmIChkbV90YXJnZXRfYWx3YXlzX3dyaXRlYWJsZSh0Z3QtPnR5cGUpICYm ICEodC0+bW9kZSAmIEZNT0RFX1dSSVRFKSkgewotCQlETUVSUigiJXM6IHRhcmdldCB0eXBlICVz IG1heSBub3QgYmUgaW5jbHVkZWQgaW4gcmVhZC1vbmx5IHRhYmxlcyIsCi0JCSAgICAgIGRtX2Rl dmljZV9uYW1lKHQtPm1kKSwgdHlwZSk7Ci0JCXJldHVybiAtRUlOVkFMOworCQl0Z3QtPmVycm9y ID0gInRhcmdldCB0eXBlIG1heSBub3QgYmUgaW5jbHVkZWQgaW4gYSByZWFkLW9ubHkgdGFibGUi OworCQlnb3RvIGJhZDsKIAl9CiAKIAlpZiAodC0+aW1tdXRhYmxlX3RhcmdldF90eXBlKSB7CiAJ CWlmICh0LT5pbW11dGFibGVfdGFyZ2V0X3R5cGUgIT0gdGd0LT50eXBlKSB7Ci0JCQlETUVSUigi JXM6IGltbXV0YWJsZSB0YXJnZXQgdHlwZSAlcyBjYW5ub3QgYmUgbWl4ZWQgd2l0aCBvdGhlciB0 YXJnZXQgdHlwZXMiLAotCQkJICAgICAgZG1fZGV2aWNlX25hbWUodC0+bWQpLCB0LT5pbW11dGFi bGVfdGFyZ2V0X3R5cGUtPm5hbWUpOwotCQkJcmV0dXJuIC1FSU5WQUw7CisJCQl0Z3QtPmVycm9y ID0gImltbXV0YWJsZSB0YXJnZXQgdHlwZSBjYW5ub3QgYmUgbWl4ZWQgd2l0aCBvdGhlciB0YXJn ZXQgdHlwZXMiOworCQkJZ290byBiYWQ7CiAJCX0KIAl9IGVsc2UgaWYgKGRtX3RhcmdldF9pc19p bW11dGFibGUodGd0LT50eXBlKSkgewogCQlpZiAodC0+bnVtX3RhcmdldHMpIHsKLQkJCURNRVJS KCIlczogaW1tdXRhYmxlIHRhcmdldCB0eXBlICVzIGNhbm5vdCBiZSBtaXhlZCB3aXRoIG90aGVy IHRhcmdldCB0eXBlcyIsCi0JCQkgICAgICBkbV9kZXZpY2VfbmFtZSh0LT5tZCksIHRndC0+dHlw ZS0+bmFtZSk7Ci0JCQlyZXR1cm4gLUVJTlZBTDsKKwkJCXRndC0+ZXJyb3IgPSAiaW1tdXRhYmxl IHRhcmdldCB0eXBlIGNhbm5vdCBiZSBtaXhlZCB3aXRoIG90aGVyIHRhcmdldCB0eXBlcyI7CisJ CQlnb3RvIGJhZDsKIAkJfQogCQl0LT5pbW11dGFibGVfdGFyZ2V0X3R5cGUgPSB0Z3QtPnR5cGU7 CiAJfQpAQCAtNzcwLDcgKzc2NSw2IEBAIGludCBkbV90YWJsZV9hZGRfdGFyZ2V0KHN0cnVjdCBk bV90YWJsZSAqdCwgY29uc3QgY2hhciAqdHlwZSwKIAkgKi8KIAlpZiAoIWFkam9pbih0LCB0Z3Qp KSB7CiAJCXRndC0+ZXJyb3IgPSAiR2FwIGluIHRhYmxlIjsKLQkJciA9IC1FSU5WQUw7CiAJCWdv dG8gYmFkOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS5jIGIvZHJpdmVycy9tZC9k bS5jCmluZGV4IGY2MmQ0YzhiZDlmOS4uMzVjYWE0YzE3YzNkIDEwMDY0NAotLS0gYS9kcml2ZXJz L21kL2RtLmMKKysrIGIvZHJpdmVycy9tZC9kbS5jCkBAIC0yNDA3LDYgKzI0MDcsNyBAQCBFWFBP UlRfU1lNQk9MX0dQTChkbV9kZXZpY2VfbmFtZSk7CiAKIHN0YXRpYyB2b2lkIF9fZG1fZGVzdHJv eShzdHJ1Y3QgbWFwcGVkX2RldmljZSAqbWQsIGJvb2wgd2FpdCkKIHsKKwlzdHJ1Y3QgcmVxdWVz dF9xdWV1ZSAqcSA9IG1kLT5xdWV1ZTsKIAlzdHJ1Y3QgZG1fdGFibGUgKm1hcDsKIAlpbnQgc3Jj dV9pZHg7CiAKQEAgLTI0MTcsNiArMjQxOCwxMCBAQCBzdGF0aWMgdm9pZCBfX2RtX2Rlc3Ryb3ko c3RydWN0IG1hcHBlZF9kZXZpY2UgKm1kLCBib29sIHdhaXQpCiAJc2V0X2JpdChETUZfRlJFRUlO RywgJm1kLT5mbGFncyk7CiAJc3Bpbl91bmxvY2soJl9taW5vcl9sb2NrKTsKIAorCXNwaW5fbG9j a19pcnEocS0+cXVldWVfbG9jayk7CisJcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19EWUlORywg cSk7CisJc3Bpbl91bmxvY2tfaXJxKHEtPnF1ZXVlX2xvY2spOworCiAJLyoKIAkgKiBUYWtlIHN1 c3BlbmRfbG9jayBzbyB0aGF0IHByZXN1c3BlbmQgYW5kIHBvc3RzdXNwZW5kIG1ldGhvZHMKIAkg KiBkbyBub3QgcmFjZSB3aXRoIGludGVybmFsIHN1c3BlbmQuCmRpZmYgLS1naXQgYS9kcml2ZXJz L21kL21kLmMgYi9kcml2ZXJzL21kL21kLmMKaW5kZXggNGJkN2YyNzI5YzE2Li42MGQ1N2JhZDMw YmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvbWQuYworKysgYi9kcml2ZXJzL21kL21kLmMKQEAg LTc2ODIsNyArNzY4Miw3IEBAIHZvaWQgbWRfZG9fc3luYyhzdHJ1Y3QgbWRfdGhyZWFkICp0aHJl YWQpCiAJbWRkZXYtPnBlcnMtPnN5bmNfcmVxdWVzdChtZGRldiwgbWF4X3NlY3RvcnMsICZza2lw cGVkLCAxKTsKIAogCWlmICghdGVzdF9iaXQoTURfUkVDT1ZFUllfQ0hFQ0ssICZtZGRldi0+cmVj b3ZlcnkpICYmCi0JICAgIG1kZGV2LT5jdXJyX3Jlc3luYyA+IDIpIHsKKwkgICAgbWRkZXYtPmN1 cnJfcmVzeW5jID4gMykgewogCQlpZiAodGVzdF9iaXQoTURfUkVDT1ZFUllfU1lOQywgJm1kZGV2 LT5yZWNvdmVyeSkpIHsKIAkJCWlmICh0ZXN0X2JpdChNRF9SRUNPVkVSWV9JTlRSLCAmbWRkZXYt PnJlY292ZXJ5KSkgewogCQkJCWlmIChtZGRldi0+Y3Vycl9yZXN5bmMgPj0gbWRkZXYtPnJlY292 ZXJ5X2NwKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbWI4NmEy MHMuYyBiL2RyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9tYjg2YTIwcy5jCmluZGV4IDJmNDU4 YmIxODhjNy4uMmQ3NTk1MjZkNzhjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi1mcm9u dGVuZHMvbWI4NmEyMHMuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbWI4NmEy MHMuYwpAQCAtNzUsMjUgKzc1LDI3IEBAIHN0YXRpYyBzdHJ1Y3QgcmVnZGF0YSBtYjg2YTIwc19p bml0MVtdID0gewogfTsKIAogc3RhdGljIHN0cnVjdCByZWdkYXRhIG1iODZhMjBzX2luaXQyW10g PSB7Ci0JeyAweDI4LCAweDIyIH0sIHsgMHgyOSwgMHgwMCB9LCB7IDB4MmEsIDB4MWYgfSwgeyAw eDJiLCAweGYwIH0sCisJeyAweDUwLCAweGQxIH0sIHsgMHg1MSwgMHgyMiB9LAorCXsgMHgzOSwg MHgwMSB9LAorCXsgMHg3MSwgMHgwMCB9LAogCXsgMHgzYiwgMHgyMSB9LAotCXsgMHgzYywgMHgz OCB9LAorCXsgMHgzYywgMHgzYSB9LAogCXsgMHgwMSwgMHgwZCB9LAotCXsgMHgwNCwgMHgwOCB9 LCB7IDB4MDUsIDB4MDMgfSwKKwl7IDB4MDQsIDB4MDggfSwgeyAweDA1LCAweDA1IH0sCiAJeyAw eDA0LCAweDBlIH0sIHsgMHgwNSwgMHgwMCB9LAotCXsgMHgwNCwgMHgwZiB9LCB7IDB4MDUsIDB4 MzcgfSwKLQl7IDB4MDQsIDB4MGIgfSwgeyAweDA1LCAweDc4IH0sCisJeyAweDA0LCAweDBmIH0s IHsgMHgwNSwgMHgxNCB9LAorCXsgMHgwNCwgMHgwYiB9LCB7IDB4MDUsIDB4OGMgfSwKIAl7IDB4 MDQsIDB4MDAgfSwgeyAweDA1LCAweDAwIH0sCi0JeyAweDA0LCAweDAxIH0sIHsgMHgwNSwgMHgx ZSB9LAotCXsgMHgwNCwgMHgwMiB9LCB7IDB4MDUsIDB4MDcgfSwKLQl7IDB4MDQsIDB4MDMgfSwg eyAweDA1LCAweGQwIH0sCisJeyAweDA0LCAweDAxIH0sIHsgMHgwNSwgMHgwNyB9LAorCXsgMHgw NCwgMHgwMiB9LCB7IDB4MDUsIDB4MGYgfSwKKwl7IDB4MDQsIDB4MDMgfSwgeyAweDA1LCAweGEw IH0sCiAJeyAweDA0LCAweDA5IH0sIHsgMHgwNSwgMHgwMCB9LAogCXsgMHgwNCwgMHgwYSB9LCB7 IDB4MDUsIDB4ZmYgfSwKLQl7IDB4MDQsIDB4MjcgfSwgeyAweDA1LCAweDAwIH0sCisJeyAweDA0 LCAweDI3IH0sIHsgMHgwNSwgMHg2NCB9LAogCXsgMHgwNCwgMHgyOCB9LCB7IDB4MDUsIDB4MDAg fSwKLQl7IDB4MDQsIDB4MWUgfSwgeyAweDA1LCAweDAwIH0sCi0JeyAweDA0LCAweDI5IH0sIHsg MHgwNSwgMHg2NCB9LAotCXsgMHgwNCwgMHgzMiB9LCB7IDB4MDUsIDB4MDIgfSwKKwl7IDB4MDQs IDB4MWUgfSwgeyAweDA1LCAweGZmIH0sCisJeyAweDA0LCAweDI5IH0sIHsgMHgwNSwgMHgwYSB9 LAorCXsgMHgwNCwgMHgzMiB9LCB7IDB4MDUsIDB4MGEgfSwKIAl7IDB4MDQsIDB4MTQgfSwgeyAw eDA1LCAweDAyIH0sCiAJeyAweDA0LCAweDA0IH0sIHsgMHgwNSwgMHgwMCB9LAogCXsgMHgwNCwg MHgwNSB9LCB7IDB4MDUsIDB4MjIgfSwKQEAgLTEwMSw4ICsxMDMsNiBAQCBzdGF0aWMgc3RydWN0 IHJlZ2RhdGEgbWI4NmEyMHNfaW5pdDJbXSA9IHsKIAl7IDB4MDQsIDB4MDcgfSwgeyAweDA1LCAw eGQ4IH0sCiAJeyAweDA0LCAweDEyIH0sIHsgMHgwNSwgMHgwMCB9LAogCXsgMHgwNCwgMHgxMyB9 LCB7IDB4MDUsIDB4ZmYgfSwKLQl7IDB4MDQsIDB4MTUgfSwgeyAweDA1LCAweDRlIH0sCi0JeyAw eDA0LCAweDE2IH0sIHsgMHgwNSwgMHgyMCB9LAogCiAJLyoKIAkgKiBPbiB0aGlzIGRlbW9kLCB3 aGVuIHRoZSBiaXQgY291bnQgcmVhY2hlcyB0aGUgY291bnQgYmVsb3csCkBAIC0xNTYsNDIgKzE1 NiwzNiBAQCBzdGF0aWMgc3RydWN0IHJlZ2RhdGEgbWI4NmEyMHNfaW5pdDJbXSA9IHsKIAl7IDB4 NTAsIDB4NTEgfSwgeyAweDUxLCAweDA0IH0sCQkvKiBNRVIgc3ltYm9sIDQgKi8KIAl7IDB4NDUs IDB4MDQgfSwJCQkJLyogQ04gc3ltYm9sIDQgKi8KIAl7IDB4NDgsIDB4MDQgfSwJCQkJLyogQ04g bWFudWFsIG1vZGUgKi8KLQorCXsgMHg1MCwgMHhkNSB9LCB7IDB4NTEsIDB4MDEgfSwKIAl7IDB4 NTAsIDB4ZDYgfSwgeyAweDUxLCAweDFmIH0sCiAJeyAweDUwLCAweGQyIH0sIHsgMHg1MSwgMHgw MyB9LAotCXsgMHg1MCwgMHhkNyB9LCB7IDB4NTEsIDB4YmYgfSwKLQl7IDB4MjgsIDB4NzQgfSwg eyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4ZmYgfSwKLQl7IDB4Mjgs IDB4NDYgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgxYSB9LCB7IDB4MmIsIDB4MGMgfSwK LQotCXsgMHgwNCwgMHg0MCB9LCB7IDB4MDUsIDB4MDAgfSwKLQl7IDB4MjgsIDB4MDAgfSwgeyAw eDJiLCAweDA4IH0sCi0JeyAweDI4LCAweDA1IH0sIHsgMHgyYiwgMHgwMCB9LAorCXsgMHg1MCwg MHhkNyB9LCB7IDB4NTEsIDB4M2YgfSwKIAl7IDB4MWMsIDB4MDEgfSwKLQl7IDB4MjgsIDB4MDYg fSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4MWYgfSwKLQl7IDB4 MjgsIDB4MDcgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4MTgg fSwKLQl7IDB4MjgsIDB4MDggfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4 MmIsIDB4MTIgfSwKLQl7IDB4MjgsIDB4MDkgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgw MCB9LCB7IDB4MmIsIDB4MzAgfSwKLQl7IDB4MjgsIDB4MGEgfSwgeyAweDI5LCAweDAwIH0sIHsg MHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4MzcgfSwKLQl7IDB4MjgsIDB4MGIgfSwgeyAweDI5LCAw eDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4MDIgfSwKLQl7IDB4MjgsIDB4MGMgfSwg eyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4MDkgfSwKLQl7IDB4Mjgs IDB4MGQgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4MDYgfSwK LQl7IDB4MjgsIDB4MGUgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIs IDB4N2IgfSwKLQl7IDB4MjgsIDB4MGYgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9 LCB7IDB4MmIsIDB4NzYgfSwKLQl7IDB4MjgsIDB4MTAgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgy YSwgMHgwMCB9LCB7IDB4MmIsIDB4N2QgfSwKLQl7IDB4MjgsIDB4MTEgfSwgeyAweDI5LCAweDAw IH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4MDggfSwKLQl7IDB4MjgsIDB4MTIgfSwgeyAw eDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4MGIgfSwKLQl7IDB4MjgsIDB4 MTMgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4MDAgfSwKLQl7 IDB4MjgsIDB4MTQgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMSB9LCB7IDB4MmIsIDB4 ZjIgfSwKLQl7IDB4MjgsIDB4MTUgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMSB9LCB7 IDB4MmIsIDB4ZjMgfSwKLQl7IDB4MjgsIDB4MTYgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwg MHgwMCB9LCB7IDB4MmIsIDB4MDUgfSwKLQl7IDB4MjgsIDB4MTcgfSwgeyAweDI5LCAweDAwIH0s IHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4MTYgfSwKLQl7IDB4MjgsIDB4MTggfSwgeyAweDI5 LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4MGYgfSwKLQl7IDB4MjgsIDB4MTkg fSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwNyB9LCB7IDB4MmIsIDB4ZWYgfSwKLQl7IDB4 MjgsIDB4MWEgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwNyB9LCB7IDB4MmIsIDB4ZDgg fSwKLQl7IDB4MjgsIDB4MWIgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwNyB9LCB7IDB4 MmIsIDB4ZjEgfSwKLQl7IDB4MjgsIDB4MWMgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgw MCB9LCB7IDB4MmIsIDB4M2QgfSwKLQl7IDB4MjgsIDB4MWQgfSwgeyAweDI5LCAweDAwIH0sIHsg MHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4OTQgfSwKLQl7IDB4MjgsIDB4MWUgfSwgeyAweDI5LCAw eDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4YmEgfSwKKwl7IDB4MjgsIDB4MDYgfSwg eyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4MDMgfSwKKwl7IDB4Mjgs IDB4MDcgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4MGQgfSwK Kwl7IDB4MjgsIDB4MDggfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIs IDB4MDIgfSwKKwl7IDB4MjgsIDB4MDkgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9 LCB7IDB4MmIsIDB4MDEgfSwKKwl7IDB4MjgsIDB4MGEgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgy YSwgMHgwMCB9LCB7IDB4MmIsIDB4MjEgfSwKKwl7IDB4MjgsIDB4MGIgfSwgeyAweDI5LCAweDAw IH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4MjkgfSwKKwl7IDB4MjgsIDB4MGMgfSwgeyAw eDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4MTYgfSwKKwl7IDB4MjgsIDB4 MGQgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4MzEgfSwKKwl7 IDB4MjgsIDB4MGUgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4 MGUgfSwKKwl7IDB4MjgsIDB4MGYgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7 IDB4MmIsIDB4NGUgfSwKKwl7IDB4MjgsIDB4MTAgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwg MHgwMCB9LCB7IDB4MmIsIDB4NDYgfSwKKwl7IDB4MjgsIDB4MTEgfSwgeyAweDI5LCAweDAwIH0s IHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4MGYgfSwKKwl7IDB4MjgsIDB4MTIgfSwgeyAweDI5 LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4NTYgfSwKKwl7IDB4MjgsIDB4MTMg fSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4MzUgfSwKKwl7IDB4 MjgsIDB4MTQgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMSB9LCB7IDB4MmIsIDB4YmUg fSwKKwl7IDB4MjgsIDB4MTUgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMSB9LCB7IDB4 MmIsIDB4ODQgfSwKKwl7IDB4MjgsIDB4MTYgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgw MyB9LCB7IDB4MmIsIDB4ZWUgfSwKKwl7IDB4MjgsIDB4MTcgfSwgeyAweDI5LCAweDAwIH0sIHsg MHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4OTggfSwKKwl7IDB4MjgsIDB4MTggfSwgeyAweDI5LCAw eDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4OWYgfSwKKwl7IDB4MjgsIDB4MTkgfSwg eyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwNyB9LCB7IDB4MmIsIDB4YjIgfSwKKwl7IDB4Mjgs IDB4MWEgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwNiB9LCB7IDB4MmIsIDB4YzIgfSwK Kwl7IDB4MjgsIDB4MWIgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwNyB9LCB7IDB4MmIs IDB4NGEgfSwKKwl7IDB4MjgsIDB4MWMgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMSB9 LCB7IDB4MmIsIDB4YmMgfSwKKwl7IDB4MjgsIDB4MWQgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgy YSwgMHgwNCB9LCB7IDB4MmIsIDB4YmEgfSwKKwl7IDB4MjgsIDB4MWUgfSwgeyAweDI5LCAweDAw IH0sIHsgMHgyYSwgMHgwNiB9LCB7IDB4MmIsIDB4MTQgfSwKIAl7IDB4NTAsIDB4MWUgfSwgeyAw eDUxLCAweDVkIH0sCiAJeyAweDUwLCAweDIyIH0sIHsgMHg1MSwgMHgwMCB9LAogCXsgMHg1MCwg MHgyMyB9LCB7IDB4NTEsIDB4YzggfSwKQEAgLTIwMCw5ICsxOTQsNyBAQCBzdGF0aWMgc3RydWN0 IHJlZ2RhdGEgbWI4NmEyMHNfaW5pdDJbXSA9IHsKIAl7IDB4NTAsIDB4MjYgfSwgeyAweDUxLCAw eDAwIH0sCiAJeyAweDUwLCAweDI3IH0sIHsgMHg1MSwgMHhjMyB9LAogCXsgMHg1MCwgMHgzOSB9 LCB7IDB4NTEsIDB4MDIgfSwKLQl7IDB4ZWMsIDB4MGYgfSwKLQl7IDB4ZWIsIDB4MWYgfSwKLQl7 IDB4MjgsIDB4NmEgfSwgeyAweDI5LCAweDAwIH0sIHsgMHgyYSwgMHgwMCB9LCB7IDB4MmIsIDB4 MDAgfSwKKwl7IDB4NTAsIDB4ZDUgfSwgeyAweDUxLCAweDAxIH0sCiAJeyAweGQwLCAweDAwIH0s CiB9OwogCkBAIC0zMjEsNyArMzEzLDExIEBAIHN0YXRpYyBpbnQgbWI4NmEyMHNfcmVhZF9zdGF0 dXMoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsIGZlX3N0YXR1c190ICpzdGF0dXMpCiAJaWYgKHZh bCA+PSA3KQogCQkqc3RhdHVzIHw9IEZFX0hBU19TWU5DOwogCi0JaWYgKHZhbCA+PSA4KQkJCQkv KiBNYXliZSA5PyAqLworCS8qCisJICogQWN0dWFsbHksIG9uIHN0YXRlIFM4LCBpdCBzdGFydHMg cmVjZWl2aW5nIFRTLCBidXQgdGhlIFRTCisJICogb3V0cHV0IGlzIG9ubHkgb24gbm9ybWFsIHN0 YXRlIGFmdGVyIHRoZSB0cmFuc2l0aW9uIHRvIFM5LgorCSAqLworCWlmICh2YWwgPj0gOSkKIAkJ KnN0YXR1cyB8PSBGRV9IQVNfTE9DSzsKIAogCWRldl9kYmcoJnN0YXRlLT5pMmMtPmRldiwgIiVz OiBTdGF0dXMgPSAweCUwMnggKHN0YXRlID0gJWQpXG4iLApAQCAtMjA4MCw2ICsyMDc2LDExIEBA IHN0YXRpYyB2b2lkIG1iODZhMjBzX3JlbGVhc2Uoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpCiAJ a2ZyZWUoc3RhdGUpOwogfQogCitzdGF0aWMgaW50IG1iODZhMjBzX2dldF9mcm9udGVuZF9hbGdv KHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlKQoreworICAgICAgICByZXR1cm4gRFZCRkVfQUxHT19I VzsKK30KKwogc3RhdGljIHN0cnVjdCBkdmJfZnJvbnRlbmRfb3BzIG1iODZhMjBzX29wczsKIAog c3RydWN0IGR2Yl9mcm9udGVuZCAqbWI4NmEyMHNfYXR0YWNoKGNvbnN0IHN0cnVjdCBtYjg2YTIw c19jb25maWcgKmNvbmZpZywKQEAgLTIxNTMsNiArMjE1NCw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHZi X2Zyb250ZW5kX29wcyBtYjg2YTIwc19vcHMgPSB7CiAJLnJlYWRfc3RhdHVzID0gbWI4NmEyMHNf cmVhZF9zdGF0dXNfYW5kX3N0YXRzLAogCS5yZWFkX3NpZ25hbF9zdHJlbmd0aCA9IG1iODZhMjBz X3JlYWRfc2lnbmFsX3N0cmVuZ3RoX2Zyb21fY2FjaGUsCiAJLnR1bmUgPSBtYjg2YTIwc190dW5l LAorCS5nZXRfZnJvbnRlbmRfYWxnbyA9IG1iODZhMjBzX2dldF9mcm9udGVuZF9hbGdvLAogfTsK IAogTU9EVUxFX0RFU0NSSVBUSU9OKCJEVkIgRnJvbnRlbmQgbW9kdWxlIGZvciBGdWppdHN1IG1i ODZBMjBzIGhhcmR3YXJlIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3R1bmVycy90dW5l ci14YzIwMjguYyBiL2RyaXZlcnMvbWVkaWEvdHVuZXJzL3R1bmVyLXhjMjAyOC5jCmluZGV4IGIw ZTg0NDBkMzNmNy4uMzIzMTNhNjAyOWI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3R1bmVy cy90dW5lci14YzIwMjguYworKysgYi9kcml2ZXJzL21lZGlhL3R1bmVycy90dW5lci14YzIwMjgu YwpAQCAtMjgxLDYgKzI4MSwxNCBAQCBzdGF0aWMgdm9pZCBmcmVlX2Zpcm13YXJlKHN0cnVjdCB4 YzIwMjhfZGF0YSAqcHJpdikKIAlpbnQgaTsKIAl0dW5lcl9kYmcoIiVzIGNhbGxlZFxuIiwgX19m dW5jX18pOwogCisJLyogZnJlZSBhbGxvY2F0ZWQgZi93IHN0cmluZyAqLworCWlmIChwcml2LT5m bmFtZSAhPSBmaXJtd2FyZV9uYW1lKQorCQlrZnJlZShwcml2LT5mbmFtZSk7CisJcHJpdi0+Zm5h bWUgPSBOVUxMOworCisJcHJpdi0+c3RhdGUgPSBYQzIwMjhfTk9fRklSTVdBUkU7CisJbWVtc2V0 KCZwcml2LT5jdXJfZncsIDAsIHNpemVvZihwcml2LT5jdXJfZncpKTsKKwogCWlmICghcHJpdi0+ ZmlybSkKIAkJcmV0dXJuOwogCkBAIC0yOTEsOSArMjk5LDYgQEAgc3RhdGljIHZvaWQgZnJlZV9m aXJtd2FyZShzdHJ1Y3QgeGMyMDI4X2RhdGEgKnByaXYpCiAKIAlwcml2LT5maXJtID0gTlVMTDsK IAlwcml2LT5maXJtX3NpemUgPSAwOwotCXByaXYtPnN0YXRlID0gWEMyMDI4X05PX0ZJUk1XQVJF OwotCi0JbWVtc2V0KCZwcml2LT5jdXJfZncsIDAsIHNpemVvZihwcml2LT5jdXJfZncpKTsKIH0K IAogc3RhdGljIGludCBsb2FkX2FsbF9maXJtd2FyZXMoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUs CkBAIC04ODQsOSArODg5LDggQEAgcmVhZF9ub3RfcmVsaWFibGU6CiAJcmV0dXJuIDA7CiAKIGZh aWw6Ci0JcHJpdi0+c3RhdGUgPSBYQzIwMjhfTk9fRklSTVdBUkU7CisJZnJlZV9maXJtd2FyZShw cml2KTsKIAotCW1lbXNldCgmcHJpdi0+Y3VyX2Z3LCAwLCBzaXplb2YocHJpdi0+Y3VyX2Z3KSk7 CiAJaWYgKHJldHJ5X2NvdW50IDwgOCkgewogCQltc2xlZXAoNTApOwogCQlyZXRyeV9jb3VudCsr OwpAQCAtMTMzMiwxMSArMTMzNiw4IEBAIHN0YXRpYyBpbnQgeGMyMDI4X2R2Yl9yZWxlYXNlKHN0 cnVjdCBkdmJfZnJvbnRlbmQgKmZlKQogCW11dGV4X2xvY2soJnhjMjAyOF9saXN0X211dGV4KTsK IAogCS8qIG9ubHkgcGVyZm9ybSBmaW5hbCBjbGVhbnVwIGlmIHRoaXMgaXMgdGhlIGxhc3QgaW5z dGFuY2UgKi8KLQlpZiAoaHlicmlkX3R1bmVyX3JlcG9ydF9pbnN0YW5jZV9jb3VudChwcml2KSA9 PSAxKSB7CisJaWYgKGh5YnJpZF90dW5lcl9yZXBvcnRfaW5zdGFuY2VfY291bnQocHJpdikgPT0g MSkKIAkJZnJlZV9maXJtd2FyZShwcml2KTsKLQkJa2ZyZWUocHJpdi0+Y3RybC5mbmFtZSk7Ci0J CXByaXYtPmN0cmwuZm5hbWUgPSBOVUxMOwotCX0KIAogCWlmIChwcml2KQogCQloeWJyaWRfdHVu ZXJfcmVsZWFzZV9zdGF0ZShwcml2KTsKQEAgLTEzOTksMTkgKzE0MDAsOCBAQCBzdGF0aWMgaW50 IHhjMjAyOF9zZXRfY29uZmlnKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLCB2b2lkICpwcml2X2Nm ZykKIAogCS8qCiAJICogQ29weSB0aGUgY29uZmlnIGRhdGEuCi0JICogRm9yIHRoZSBmaXJtd2Fy ZSBuYW1lLCBrZWVwIGEgbG9jYWwgY29weSBvZiB0aGUgc3RyaW5nLAotCSAqIGluIG9yZGVyIHRv IGF2b2lkIHRyb3VibGVzIGR1cmluZyBkZXZpY2UgcmVsZWFzZS4KIAkgKi8KLQlrZnJlZShwcml2 LT5jdHJsLmZuYW1lKTsKLQlwcml2LT5jdHJsLmZuYW1lID0gTlVMTDsKIAltZW1jcHkoJnByaXYt PmN0cmwsIHAsIHNpemVvZihwcml2LT5jdHJsKSk7Ci0JaWYgKHAtPmZuYW1lKSB7Ci0JCXByaXYt PmN0cmwuZm5hbWUgPSBrc3RyZHVwKHAtPmZuYW1lLCBHRlBfS0VSTkVMKTsKLQkJaWYgKHByaXYt PmN0cmwuZm5hbWUgPT0gTlVMTCkgewotCQkJcmMgPSAtRU5PTUVNOwotCQkJZ290byB1bmxvY2s7 Ci0JCX0KLQl9CiAKIAkvKgogCSAqIElmIGZpcm13YXJlIG5hbWUgY2hhbmdlZCwgZnJlZXMgZmly bXdhcmUuIEFzIGZyZWVfZmlybXdhcmUgd2lsbApAQCAtMTQyNiwxMCArMTQxNiwxNSBAQCBzdGF0 aWMgaW50IHhjMjAyOF9zZXRfY29uZmlnKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLCB2b2lkICpw cml2X2NmZykKIAogCWlmIChwcml2LT5zdGF0ZSA9PSBYQzIwMjhfTk9fRklSTVdBUkUpIHsKIAkJ aWYgKCFmaXJtd2FyZV9uYW1lWzBdKQotCQkJcHJpdi0+Zm5hbWUgPSBwcml2LT5jdHJsLmZuYW1l OworCQkJcHJpdi0+Zm5hbWUgPSBrc3RyZHVwKHAtPmZuYW1lLCBHRlBfS0VSTkVMKTsKIAkJZWxz ZQogCQkJcHJpdi0+Zm5hbWUgPSBmaXJtd2FyZV9uYW1lOwogCisJCWlmICghcHJpdi0+Zm5hbWUp IHsKKwkJCXJjID0gLUVOT01FTTsKKwkJCWdvdG8gdW5sb2NrOworCQl9CisKIAkJcmMgPSByZXF1 ZXN0X2Zpcm13YXJlX25vd2FpdChUSElTX01PRFVMRSwgMSwKIAkJCQkJICAgICBwcml2LT5mbmFt ZSwKIAkJCQkJICAgICBwcml2LT5pMmNfcHJvcHMuYWRhcC0+ZGV2LnBhcmVudCwKZGlmZiAtLWdp dCBhL2RyaXZlcnMvbWVkaWEvdXNiL2N4MjMxeHgvY3gyMzF4eC1hdmNvcmUuYyBiL2RyaXZlcnMv bWVkaWEvdXNiL2N4MjMxeHgvY3gyMzF4eC1hdmNvcmUuYwppbmRleCA4OWRlMDBiZjRmODIuLmJk NDU4NThjYzkyNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS91c2IvY3gyMzF4eC9jeDIzMXh4 LWF2Y29yZS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdXNiL2N4MjMxeHgvY3gyMzF4eC1hdmNvcmUu YwpAQCAtMTI2MCw3ICsxMjYwLDEwIEBAIGludCBjeDIzMXh4X3NldF9hZ2NfYW5hbG9nX2RpZ2l0 YWxfbXV4X3NlbGVjdChzdHJ1Y3QgY3gyMzF4eCAqZGV2LAogCQkJCSAgIGRldi0+Ym9hcmQuYWdj X2FuYWxvZ19kaWdpdGFsX3NlbGVjdF9ncGlvLAogCQkJCSAgIGFuYWxvZ19vcl9kaWdpdGFsKTsK IAotCXJldHVybiBzdGF0dXM7CisJaWYgKHN0YXR1cyA8IDApCisJCXJldHVybiBzdGF0dXM7CisK KwlyZXR1cm4gMDsKIH0KIAogaW50IGN4MjMxeHhfZW5hYmxlX2kyY19wb3J0XzMoc3RydWN0IGN4 MjMxeHggKmRldiwgYm9vbCBpc19wb3J0XzMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3Vz Yi9jeDIzMXh4L2N4MjMxeHgtY2FyZHMuYyBiL2RyaXZlcnMvbWVkaWEvdXNiL2N4MjMxeHgvY3gy MzF4eC1jYXJkcy5jCmluZGV4IDJlZTAzZTRkZGQ4Ni4uYjYyYjM3MTMwZjA3IDEwMDY0NAotLS0g YS9kcml2ZXJzL21lZGlhL3VzYi9jeDIzMXh4L2N4MjMxeHgtY2FyZHMuYworKysgYi9kcml2ZXJz L21lZGlhL3VzYi9jeDIzMXh4L2N4MjMxeHgtY2FyZHMuYwpAQCAtNDg5LDcgKzQ4OSw3IEBAIHN0 cnVjdCBjeDIzMXh4X2JvYXJkIGN4MjMxeHhfYm9hcmRzW10gPSB7CiAJCS5vdXRwdXRfbW9kZSA9 IE9VVF9NT0RFX1ZJUDExLAogCQkuZGVtb2RfeGZlcl9tb2RlID0gMCwKIAkJLmN0bF9waW5fc3Rh dHVzX21hc2sgPSAweEZGRkZGRkM0LAotCQkuYWdjX2FuYWxvZ19kaWdpdGFsX3NlbGVjdF9ncGlv ID0gMHgwMCwJLyogQWNjb3JkaW5nIHdpdGggUFYgY3hQb2xhcmlzLmluZiBmaWxlICovCisJCS5h Z2NfYW5hbG9nX2RpZ2l0YWxfc2VsZWN0X2dwaW8gPSAweDFjLAogCQkudHVuZXJfc2lmX2dwaW8g PSAtMSwKIAkJLnR1bmVyX3NjbF9ncGlvID0gLTEsCiAJCS50dW5lcl9zZGFfZ3BpbyA9IC0xLApk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS91c2IvY3gyMzF4eC9jeDIzMXh4LWNvcmUuYyBiL2Ry aXZlcnMvbWVkaWEvdXNiL2N4MjMxeHgvY3gyMzF4eC1jb3JlLmMKaW5kZXggNGJhM2NlMDliNzEz Li42ZjVmZmNjMTkzNTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdXNiL2N4MjMxeHgvY3gy MzF4eC1jb3JlLmMKKysrIGIvZHJpdmVycy9tZWRpYS91c2IvY3gyMzF4eC9jeDIzMXh4LWNvcmUu YwpAQCAtNzIzLDYgKzcyMyw3IEBAIGludCBjeDIzMXh4X3NldF9tb2RlKHN0cnVjdCBjeDIzMXh4 ICpkZXYsIGVudW0gY3gyMzF4eF9tb2RlIHNldF9tb2RlKQogCQkJYnJlYWs7CiAJCWNhc2UgQ1gy MzFYWF9CT0FSRF9DTlhUX1JERV8yNTNTOgogCQljYXNlIENYMjMxWFhfQk9BUkRfQ05YVF9SRFVf MjUzUzoKKwkJY2FzZSBDWDIzMVhYX0JPQVJEX1BWX1BMQVlUVl9VU0JfSFlCUklEOgogCQkJZXJy Q29kZSA9IGN4MjMxeHhfc2V0X2FnY19hbmFsb2dfZGlnaXRhbF9tdXhfc2VsZWN0KGRldiwgMSk7 CiAJCQlicmVhazsKIAkJY2FzZSBDWDIzMVhYX0JPQVJEX0hBVVBQQVVHRV9FWEVURVI6CkBAIC03 NDcsNyArNzQ4LDcgQEAgaW50IGN4MjMxeHhfc2V0X21vZGUoc3RydWN0IGN4MjMxeHggKmRldiwg ZW51bSBjeDIzMXh4X21vZGUgc2V0X21vZGUpCiAJCWNhc2UgQ1gyMzFYWF9CT0FSRF9QVl9QTEFZ VFZfVVNCX0hZQlJJRDoKIAkJY2FzZSBDWDIzMVhYX0JPQVJEX0hBVVBQQVVHRV9VU0IyX0ZNX1BB TDoKIAkJY2FzZSBDWDIzMVhYX0JPQVJEX0hBVVBQQVVHRV9VU0IyX0ZNX05UU0M6Ci0JCWVyckNv ZGUgPSBjeDIzMXh4X3NldF9hZ2NfYW5hbG9nX2RpZ2l0YWxfbXV4X3NlbGVjdChkZXYsIDApOwor CQkJZXJyQ29kZSA9IGN4MjMxeHhfc2V0X2FnY19hbmFsb2dfZGlnaXRhbF9tdXhfc2VsZWN0KGRl diwgMCk7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZWRpYS91c2IvZHZiLXVzYi9LY29uZmlnIGIvZHJpdmVycy9tZWRpYS91c2IvZHZiLXVz Yi9LY29uZmlnCmluZGV4IGM1ZDk1NjYyZTJlMS4uYmE2NDM3OTE1MTc1IDEwMDY0NAotLS0gYS9k cml2ZXJzL21lZGlhL3VzYi9kdmItdXNiL0tjb25maWcKKysrIGIvZHJpdmVycy9tZWRpYS91c2Iv ZHZiLXVzYi9LY29uZmlnCkBAIC0zNCw2ICszNCw3IEBAIGNvbmZpZyBEVkJfVVNCX0RJQlVTQl9N QgogCWRlcGVuZHMgb24gRFZCX1VTQgogCXNlbGVjdCBEVkJfUExMIGlmIE1FRElBX1NVQkRSVl9B VVRPU0VMRUNUCiAJc2VsZWN0IERWQl9ESUIzMDAwTUIKKwlkZXBlbmRzIG9uIERWQl9ESUIzMDAw TUMgfHwgIURWQl9ESUIzMDAwTUMKIAlzZWxlY3QgTUVESUFfVFVORVJfTVQyMDYwIGlmIE1FRElB X1NVQkRSVl9BVVRPU0VMRUNUCiAJaGVscAogCSAgU3VwcG9ydCBmb3IgVVNCIDEuMSBhbmQgMi4w IERWQi1UIHJlY2VpdmVycyBiYXNlZCBvbiByZWZlcmVuY2UgZGVzaWducyBtYWRlIGJ5CmRpZmYg LS1naXQgYS9kcml2ZXJzL21lZGlhL3VzYi9kdmItdXNiL2RpYjA3MDBfY29yZS5jIGIvZHJpdmVy cy9tZWRpYS91c2IvZHZiLXVzYi9kaWIwNzAwX2NvcmUuYwppbmRleCBjMTQyODVmYTgyNzEuLjcy ZWNjZWZjZTlmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS91c2IvZHZiLXVzYi9kaWIwNzAw X2NvcmUuYworKysgYi9kcml2ZXJzL21lZGlhL3VzYi9kdmItdXNiL2RpYjA3MDBfY29yZS5jCkBA IC02NzQsNyArNjc0LDcgQEAgc3RhdGljIHZvaWQgZGliMDcwMF9yY191cmJfY29tcGxldGlvbihz dHJ1Y3QgdXJiICpwdXJiKQogewogCXN0cnVjdCBkdmJfdXNiX2RldmljZSAqZCA9IHB1cmItPmNv bnRleHQ7CiAJc3RydWN0IGRpYjA3MDBfcmNfcmVzcG9uc2UgKnBvbGxfcmVwbHk7Ci0JdTMyIHVu aW5pdGlhbGl6ZWRfdmFyKGtleWNvZGUpOworCXUzMiBrZXljb2RlOwogCXU4IHRvZ2dsZTsKIAog CWRlYl9pbmZvKCIlcygpXG4iLCBfX2Z1bmNfXyk7CkBAIC03MTMsNyArNzEzLDggQEAgc3RhdGlj IHZvaWQgZGliMDcwMF9yY191cmJfY29tcGxldGlvbihzdHJ1Y3QgdXJiICpwdXJiKQogCQlpZiAo KHBvbGxfcmVwbHktPnN5c3RlbSA9PSAweDAwKSAmJiAocG9sbF9yZXBseS0+ZGF0YSA9PSAweDAw KQogCQkgICAgJiYgKHBvbGxfcmVwbHktPm5vdF9kYXRhID09IDB4ZmYpKSB7CiAJCQlwb2xsX3Jl cGx5LT5kYXRhX3N0YXRlID0gMjsKLQkJCWJyZWFrOworCQkJcmNfcmVwZWF0KGQtPnJjX2Rldik7 CisJCQlnb3RvIHJlc3VibWl0OwogCQl9CiAKIAkJaWYgKChwb2xsX3JlcGx5LT5zeXN0ZW0gXiBw b2xsX3JlcGx5LT5ub3Rfc3lzdGVtKSAhPSAweGZmKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21l bXN0aWNrL2hvc3QvcnRzeF91c2JfbXMuYyBiL2RyaXZlcnMvbWVtc3RpY2svaG9zdC9ydHN4X3Vz Yl9tcy5jCmluZGV4IGE3MjgyYjdkNGRlOC4uMDIxZTQyNTJlZTA0IDEwMDY0NAotLS0gYS9kcml2 ZXJzL21lbXN0aWNrL2hvc3QvcnRzeF91c2JfbXMuYworKysgYi9kcml2ZXJzL21lbXN0aWNrL2hv c3QvcnRzeF91c2JfbXMuYwpAQCAtNTI0LDYgKzUyNCw3IEBAIHN0YXRpYyB2b2lkIHJ0c3hfdXNi X21zX2hhbmRsZV9yZXEoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCWludCByYzsKIAogCWlm ICghaG9zdC0+cmVxKSB7CisJCXBtX3J1bnRpbWVfZ2V0X3N5bmMobXNfZGV2KGhvc3QpKTsKIAkJ ZG8gewogCQkJcmMgPSBtZW1zdGlja19uZXh0X3JlcShtc2gsICZob3N0LT5yZXEpOwogCQkJZGV2 X2RiZyhtc19kZXYoaG9zdCksICJuZXh0IHJlcSAlZFxuIiwgcmMpOwpAQCAtNTQ0LDYgKzU0NSw3 IEBAIHN0YXRpYyB2b2lkIHJ0c3hfdXNiX21zX2hhbmRsZV9yZXEoc3RydWN0IHdvcmtfc3RydWN0 ICp3b3JrKQogCQkJCQkJaG9zdC0+cmVxLT5lcnJvcik7CiAJCQl9CiAJCX0gd2hpbGUgKCFyYyk7 CisJCXBtX3J1bnRpbWVfcHV0KG1zX2Rldihob3N0KSk7CiAJfQogCiB9CkBAIC01NzAsNiArNTcy LDcgQEAgc3RhdGljIGludCBydHN4X3VzYl9tc19zZXRfcGFyYW0oc3RydWN0IG1lbXN0aWNrX2hv c3QgKm1zaCwKIAlkZXZfZGJnKG1zX2Rldihob3N0KSwgIiVzOiBwYXJhbSA9ICVkLCB2YWx1ZSA9 ICVkXG4iLAogCQkJX19mdW5jX18sIHBhcmFtLCB2YWx1ZSk7CiAKKwlwbV9ydW50aW1lX2dldF9z eW5jKG1zX2Rldihob3N0KSk7CiAJbXV0ZXhfbG9jaygmdWNyLT5kZXZfbXV0ZXgpOwogCiAJZXJy ID0gcnRzeF91c2JfY2FyZF9leGNsdXNpdmVfY2hlY2sodWNyLCBSVFNYX1VTQl9NU19DQVJEKTsK QEAgLTYzNSw2ICs2MzgsNyBAQCBzdGF0aWMgaW50IHJ0c3hfdXNiX21zX3NldF9wYXJhbShzdHJ1 Y3QgbWVtc3RpY2tfaG9zdCAqbXNoLAogCX0KIG91dDoKIAltdXRleF91bmxvY2soJnVjci0+ZGV2 X211dGV4KTsKKwlwbV9ydW50aW1lX3B1dChtc19kZXYoaG9zdCkpOwogCiAJLyogcG93ZXItb24g ZGVsYXkgKi8KIAlpZiAocGFyYW0gPT0gTUVNU1RJQ0tfUE9XRVIgJiYgdmFsdWUgPT0gTUVNU1RJ Q0tfUE9XRVJfT04pCkBAIC02ODEsNiArNjg1LDcgQEAgc3RhdGljIGludCBydHN4X3VzYl9kZXRl Y3RfbXNfY2FyZCh2b2lkICpfX2hvc3QpCiAJaW50IGVycjsKIAogCWZvciAoOzspIHsKKwkJcG1f cnVudGltZV9nZXRfc3luYyhtc19kZXYoaG9zdCkpOwogCQltdXRleF9sb2NrKCZ1Y3ItPmRldl9t dXRleCk7CiAKIAkJLyogQ2hlY2sgcGVuZGluZyBNUyBjYXJkIGNoYW5nZXMgKi8KQEAgLTcwMyw2 ICs3MDgsNyBAQCBzdGF0aWMgaW50IHJ0c3hfdXNiX2RldGVjdF9tc19jYXJkKHZvaWQgKl9faG9z dCkKIAkJfQogCiBwb2xsX2FnYWluOgorCQlwbV9ydW50aW1lX3B1dChtc19kZXYoaG9zdCkpOwog CQlpZiAoaG9zdC0+ZWplY3QpCiAJCQlicmVhazsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQv S2NvbmZpZyBiL2RyaXZlcnMvbWZkL0tjb25maWcKaW5kZXggNmNjNGI2YWNjMjJhLi4zNGU1MmJl NWYyNTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWZkL0tjb25maWcKKysrIGIvZHJpdmVycy9tZmQv S2NvbmZpZwpAQCAtMTIwMyw2ICsxMjAzLDcgQEAgY29uZmlnIE1GRF9XTTgzNTAKIGNvbmZpZyBN RkRfV004MzUwX0kyQwogCWJvb2wgIldvbGZzb24gTWljcm9lbGVjdHJvbmljcyBXTTgzNTAgd2l0 aCBJMkMiCiAJc2VsZWN0IE1GRF9XTTgzNTAKKwlzZWxlY3QgUkVHTUFQX0kyQwogCWRlcGVuZHMg b24gSTJDPXkKIAloZWxwCiAJICBUaGUgV004MzUwIGlzIGFuIGludGVncmF0ZWQgYXVkaW8gYW5k IHBvd2VyIG1hbmFnZW1lbnQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL21mZC1jb3JlLmMgYi9k cml2ZXJzL21mZC9tZmQtY29yZS5jCmluZGV4IDg5MmQzNDMxOTNhZC4uYjgyOTZhOThlMjdlIDEw MDY0NAotLS0gYS9kcml2ZXJzL21mZC9tZmQtY29yZS5jCisrKyBiL2RyaXZlcnMvbWZkL21mZC1j b3JlLmMKQEAgLTI4NSw2ICsyODUsOCBAQCBpbnQgbWZkX2Nsb25lX2NlbGwoY29uc3QgY2hhciAq Y2VsbCwgY29uc3QgY2hhciAqKmNsb25lcywgc2l6ZV90IG5fY2xvbmVzKQogCQkJCQljbG9uZXNb aV0pOwogCX0KIAorCXB1dF9kZXZpY2UoZGV2KTsKKwogCXJldHVybiAwOwogfQogRVhQT1JUX1NZ TUJPTChtZmRfY2xvbmVfY2VsbCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9ydHN4X3VzYi5j IGIvZHJpdmVycy9tZmQvcnRzeF91c2IuYwppbmRleCA4Y2U1YWEwZjc0NzQuLmUwN2UyMWVkZTNk OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZmQvcnRzeF91c2IuYworKysgYi9kcml2ZXJzL21mZC9y dHN4X3VzYi5jCkBAIC00Niw5ICs0Niw2IEBAIHN0YXRpYyB2b2lkIHJ0c3hfdXNiX3NnX3RpbWVk X291dCh1bnNpZ25lZCBsb25nIGRhdGEpCiAKIAlkZXZfZGJnKCZ1Y3ItPnB1c2JfaW50Zi0+ZGV2 LCAiJXM6IHNnIHRyYW5zZmVyIHRpbWVkIG91dCIsIF9fZnVuY19fKTsKIAl1c2Jfc2dfY2FuY2Vs KCZ1Y3ItPmN1cnJlbnRfc2cpOwotCi0JLyogd2Uga25vdyB0aGUgY2FuY2VsbGF0aW9uIGlzIGNh dXNlZCBieSB0aW1lLW91dCAqLwotCXVjci0+Y3VycmVudF9zZy5zdGF0dXMgPSAtRVRJTUVET1VU OwogfQogCiBzdGF0aWMgaW50IHJ0c3hfdXNiX2J1bGtfdHJhbnNmZXJfc2dsaXN0KHN0cnVjdCBy dHN4X3VjciAqdWNyLApAQCAtNjcsMTIgKzY0LDE1IEBAIHN0YXRpYyBpbnQgcnRzeF91c2JfYnVs a190cmFuc2Zlcl9zZ2xpc3Qoc3RydWN0IHJ0c3hfdWNyICp1Y3IsCiAJdWNyLT5zZ190aW1lci5l eHBpcmVzID0gamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXModGltZW91dCk7CiAJYWRkX3RpbWVy KCZ1Y3ItPnNnX3RpbWVyKTsKIAl1c2Jfc2dfd2FpdCgmdWNyLT5jdXJyZW50X3NnKTsKLQlkZWxf dGltZXJfc3luYygmdWNyLT5zZ190aW1lcik7CisJaWYgKCFkZWxfdGltZXJfc3luYygmdWNyLT5z Z190aW1lcikpCisJCXJldCA9IC1FVElNRURPVVQ7CisJZWxzZQorCQlyZXQgPSB1Y3ItPmN1cnJl bnRfc2cuc3RhdHVzOwogCiAJaWYgKGFjdF9sZW4pCiAJCSphY3RfbGVuID0gdWNyLT5jdXJyZW50 X3NnLmJ5dGVzOwogCi0JcmV0dXJuIHVjci0+Y3VycmVudF9zZy5zdGF0dXM7CisJcmV0dXJuIHJl dDsKIH0KIAogaW50IHJ0c3hfdXNiX3RyYW5zZmVyX2RhdGEoc3RydWN0IHJ0c3hfdWNyICp1Y3Is IHVuc2lnbmVkIGludCBwaXBlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL2dlbndxZS9jYXJk X3V0aWxzLmMgYi9kcml2ZXJzL21pc2MvZ2Vud3FlL2NhcmRfdXRpbHMuYwppbmRleCBkZWQxYzI1 MDdkM2QuLjE5ZGZhY2MzN2Q3NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9taXNjL2dlbndxZS9jYXJk X3V0aWxzLmMKKysrIGIvZHJpdmVycy9taXNjL2dlbndxZS9jYXJkX3V0aWxzLmMKQEAgLTM0MSwx NyArMzQxLDI3IEBAIGludCBnZW53cWVfYWxsb2Nfc3luY19zZ2woc3RydWN0IGdlbndxZV9kZXYg KmNkLCBzdHJ1Y3QgZ2Vud3FlX3NnbCAqc2dsLAogCQlpZiAoY29weV9mcm9tX3VzZXIoc2dsLT5s cGFnZSwgdXNlcl9hZGRyICsgdXNlcl9zaXplIC0KIAkJCQkgICBzZ2wtPmxwYWdlX3NpemUsIHNn bC0+bHBhZ2Vfc2l6ZSkpIHsKIAkJCXJjID0gLUVGQVVMVDsKLQkJCWdvdG8gZXJyX291dDE7CisJ CQlnb3RvIGVycl9vdXQyOwogCQl9CiAJfQogCXJldHVybiAwOwogCisgZXJyX291dDI6CisJX19n ZW53cWVfZnJlZV9jb25zaXN0ZW50KGNkLCBQQUdFX1NJWkUsIHNnbC0+bHBhZ2UsCisJCQkJIHNn bC0+bHBhZ2VfZG1hX2FkZHIpOworCXNnbC0+bHBhZ2UgPSBOVUxMOworCXNnbC0+bHBhZ2VfZG1h X2FkZHIgPSAwOwogIGVycl9vdXQxOgogCV9fZ2Vud3FlX2ZyZWVfY29uc2lzdGVudChjZCwgUEFH RV9TSVpFLCBzZ2wtPmZwYWdlLAogCQkJCSBzZ2wtPmZwYWdlX2RtYV9hZGRyKTsKKwlzZ2wtPmZw YWdlID0gTlVMTDsKKwlzZ2wtPmZwYWdlX2RtYV9hZGRyID0gMDsKICBlcnJfb3V0OgogCV9fZ2Vu d3FlX2ZyZWVfY29uc2lzdGVudChjZCwgc2dsLT5zZ2xfc2l6ZSwgc2dsLT5zZ2wsCiAJCQkJIHNn bC0+c2dsX2RtYV9hZGRyKTsKKwlzZ2wtPnNnbCA9IE5VTEw7CisJc2dsLT5zZ2xfZG1hX2FkZHIg PSAwOworCXNnbC0+c2dsX3NpemUgPSAwOwogCXJldHVybiAtRU5PTUVNOwogfQogCmRpZmYgLS1n aXQgYS9kcml2ZXJzL21pc2MvbWVpL2h3LXR4ZS5jIGIvZHJpdmVycy9taXNjL21laS9ody10eGUu YwppbmRleCA5MzI3Mzc4M2RlYzUuLjFjYjdkOWE4MjBkZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9t aXNjL21laS9ody10eGUuYworKysgYi9kcml2ZXJzL21pc2MvbWVpL2h3LXR4ZS5jCkBAIC04NzYs MTEgKzg3NiwxMyBAQCBzdGF0aWMgYm9vbCBtZWlfdHhlX2NoZWNrX2FuZF9hY2tfaW50cnMoc3Ry dWN0IG1laV9kZXZpY2UgKmRldiwgYm9vbCBkb19hY2spCiAJaGlzciA9IG1laV90eGVfYnJfcmVn X3JlYWQoaHcsIEhJU1JfUkVHKTsKIAogCWFsaXZlbmVzcyA9IG1laV90eGVfYWxpdmVuZXNzX2dl dChkZXYpOwotCWlmIChoaGlzciAmIElQQ19ISElFUl9TRUMgJiYgYWxpdmVuZXNzKQorCWlmICho aGlzciAmIElQQ19ISElFUl9TRUMgJiYgYWxpdmVuZXNzKSB7CiAJCWlwY19pc3IgPSBtZWlfdHhl X3NlY19yZWdfcmVhZF9zaWxlbnQoaHcsCiAJCQkJU0VDX0lQQ19IT1NUX0lOVF9TVEFUVVNfUkVH KTsKLQllbHNlCisJfSBlbHNlIHsKIAkJaXBjX2lzciA9IDA7CisJCWhoaXNyICY9IH5JUENfSEhJ RVJfU0VDOworCX0KIAogCWdlbmVyYXRlZCA9IGdlbmVyYXRlZCB8fAogCQkoaGlzciAmIEhJU1Jf SU5UX1NUU19NU0spIHx8CmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvbWVpL25mYy5jIGIvZHJp dmVycy9taXNjL21laS9uZmMuYwppbmRleCA1Y2NjMjNiYzc2OTAuLmI0ZDVjZGRhMjZjZCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9taXNjL21laS9uZmMuYworKysgYi9kcml2ZXJzL21pc2MvbWVpL25m Yy5jCkBAIC0yOTIsNyArMjkyLDcgQEAgc3RhdGljIGludCBtZWlfbmZjX2lmX3ZlcnNpb24oc3Ry dWN0IG1laV9uZmNfZGV2ICpuZGV2KQogCQlyZXR1cm4gLUVOT01FTTsKIAogCWJ5dGVzX3JlY3Yg PSBfX21laV9jbF9yZWN2KGNsLCAodTggKilyZXBseSwgaWZfdmVyc2lvbl9sZW5ndGgpOwotCWlm IChieXRlc19yZWN2IDwgMCB8fCBieXRlc19yZWN2IDwgc2l6ZW9mKHN0cnVjdCBtZWlfbmZjX3Jl cGx5KSkgeworCWlmIChieXRlc19yZWN2IDwgaWZfdmVyc2lvbl9sZW5ndGgpIHsKIAkJZGV2X2Vy cigmZGV2LT5wZGV2LT5kZXYsICJDb3VsZCBub3QgcmVhZCBJRiB2ZXJzaW9uXG4iKTsKIAkJcmV0 ID0gLUVJTzsKIAkJZ290byBlcnI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9jYXJkL2Jsb2Nr LmMgYi9kcml2ZXJzL21tYy9jYXJkL2Jsb2NrLmMKaW5kZXggNjE5YzY3YjcxZWNiLi4yNmNhYzM1 ZDFhZGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2NhcmQvYmxvY2suYworKysgYi9kcml2ZXJz L21tYy9jYXJkL2Jsb2NrLmMKQEAgLTE2NDcsNyArMTY0Nyw3IEBAIHN0YXRpYyB2b2lkIG1tY19i bGtfcGFja2VkX2hkcl93cnFfcHJlcChzdHJ1Y3QgbW1jX3F1ZXVlX3JlcSAqbXFycSwKIAlzdHJ1 Y3QgbW1jX2Jsa19kYXRhICptZCA9IG1xLT5kYXRhOwogCXN0cnVjdCBtbWNfcGFja2VkICpwYWNr ZWQgPSBtcXJxLT5wYWNrZWQ7CiAJYm9vbCBkb19yZWxfd3IsIGRvX2RhdGFfdGFnOwotCXUzMiAq cGFja2VkX2NtZF9oZHI7CisJX19sZTMyICpwYWNrZWRfY21kX2hkcjsKIAl1OCBoZHJfYmxvY2tz OwogCXU4IGkgPSAxOwogCkBAIC0yMTcwLDcgKzIxNzAsOCBAQCBzdGF0aWMgc3RydWN0IG1tY19i bGtfZGF0YSAqbW1jX2Jsa19hbGxvY19yZXEoc3RydWN0IG1tY19jYXJkICpjYXJkLAogCXNldF9j YXBhY2l0eShtZC0+ZGlzaywgc2l6ZSk7CiAKIAlpZiAobW1jX2hvc3RfY21kMjMoY2FyZC0+aG9z dCkpIHsKLQkJaWYgKG1tY19jYXJkX21tYyhjYXJkKSB8fAorCQlpZiAoKG1tY19jYXJkX21tYyhj YXJkKSAmJgorCQkgICAgIGNhcmQtPmNzZC5tbWNhX3ZzbiA+PSBDU0RfU1BFQ19WRVJfMykgfHwK IAkJICAgIChtbWNfY2FyZF9zZChjYXJkKSAmJgogCQkgICAgIGNhcmQtPnNjci5jbWRzICYgU0Rf U0NSX0NNRDIzX1NVUFBPUlQpKQogCQkJbWQtPmZsYWdzIHw9IE1NQ19CTEtfQ01EMjM7CmRpZmYg LS1naXQgYS9kcml2ZXJzL21tYy9jYXJkL3F1ZXVlLmggYi9kcml2ZXJzL21tYy9jYXJkL3F1ZXVl LmgKaW5kZXggOTllNjUyMWU2MTY5Li5mNDJjMTEyOTNkZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bW1jL2NhcmQvcXVldWUuaAorKysgYi9kcml2ZXJzL21tYy9jYXJkL3F1ZXVlLmgKQEAgLTI0LDcg KzI0LDcgQEAgZW51bSBtbWNfcGFja2VkX3R5cGUgewogCiBzdHJ1Y3QgbW1jX3BhY2tlZCB7CiAJ c3RydWN0IGxpc3RfaGVhZAlsaXN0OwotCXUzMgkJCWNtZF9oZHJbMTAyNF07CisJX19sZTMyCQkJ Y21kX2hkclsxMDI0XTsKIAl1bnNpZ25lZCBpbnQJCWJsb2NrczsKIAl1OAkJCW5yX2VudHJpZXM7 CiAJdTgJCQlyZXRyaWVzOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9zdC9tb3hhcnQtbW1j LmMgYi9kcml2ZXJzL21tYy9ob3N0L21veGFydC1tbWMuYwppbmRleCA3NDkyNGEwNDAyNmUuLjFl MjMyMWUzYmJiZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvaG9zdC9tb3hhcnQtbW1jLmMKKysr IGIvZHJpdmVycy9tbWMvaG9zdC9tb3hhcnQtbW1jLmMKQEAgLTI1Nyw3ICsyNTcsNyBAQCBzdGF0 aWMgdm9pZCBtb3hhcnRfZG1hX2NvbXBsZXRlKHZvaWQgKnBhcmFtKQogc3RhdGljIHZvaWQgbW94 YXJ0X3RyYW5zZmVyX2RtYShzdHJ1Y3QgbW1jX2RhdGEgKmRhdGEsIHN0cnVjdCBtb3hhcnRfaG9z dCAqaG9zdCkKIHsKIAl1MzIgbGVuLCBkaXJfZGF0YSwgZGlyX3NsYXZlOwotCXVuc2lnbmVkIGxv bmcgZG1hX3RpbWU7CisJbG9uZyBkbWFfdGltZTsKIAlzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2Ny aXB0b3IgKmRlc2MgPSBOVUxMOwogCXN0cnVjdCBkbWFfY2hhbiAqZG1hX2NoYW47CiAKQEAgLTM5 Nyw3ICszOTcsOCBAQCBzdGF0aWMgdm9pZCBtb3hhcnRfcHJlcGFyZV9kYXRhKHN0cnVjdCBtb3hh cnRfaG9zdCAqaG9zdCkKIHN0YXRpYyB2b2lkIG1veGFydF9yZXF1ZXN0KHN0cnVjdCBtbWNfaG9z dCAqbW1jLCBzdHJ1Y3QgbW1jX3JlcXVlc3QgKm1ycSkKIHsKIAlzdHJ1Y3QgbW94YXJ0X2hvc3Qg Kmhvc3QgPSBtbWNfcHJpdihtbWMpOwotCXVuc2lnbmVkIGxvbmcgcGlvX3RpbWUsIGZsYWdzOwor CWxvbmcgcGlvX3RpbWU7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAl1MzIgc3RhdHVzOwogCiAJ c3Bpbl9sb2NrX2lycXNhdmUoJmhvc3QtPmxvY2ssIGZsYWdzKTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvbW1jL2hvc3QvbXhzLW1tYy5jIGIvZHJpdmVycy9tbWMvaG9zdC9teHMtbW1jLmMKaW5kZXgg YmFiZmVhMDNiYThhLi5hZDMyZjIzNWJkYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2hvc3Qv bXhzLW1tYy5jCisrKyBiL2RyaXZlcnMvbW1jL2hvc3QvbXhzLW1tYy5jCkBAIC02NTgsMTMgKzY1 OCwxMyBAQCBzdGF0aWMgaW50IG14c19tbWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKIAogCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIG1tYyk7CiAKKwlzcGluX2xvY2tf aW5pdCgmaG9zdC0+bG9jayk7CisKIAlyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKCZwZGV2LT5kZXYs IGlycV9lcnIsIG14c19tbWNfaXJxX2hhbmRsZXIsIDAsCiAJCQkgICAgICAgRFJJVkVSX05BTUUs IGhvc3QpOwogCWlmIChyZXQpCiAJCWdvdG8gb3V0X2ZyZWVfZG1hOwogCi0Jc3Bpbl9sb2NrX2lu aXQoJmhvc3QtPmxvY2spOwotCiAJcmV0ID0gbW1jX2FkZF9ob3N0KG1tYyk7CiAJaWYgKHJldCkK IAkJZ290byBvdXRfZnJlZV9kbWE7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L3J0c3hf dXNiX3NkbW1jLmMgYi9kcml2ZXJzL21tYy9ob3N0L3J0c3hfdXNiX3NkbW1jLmMKaW5kZXggZDkx NTNhN2QxNjBkLi5iNzRjZmM3ZjljNTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2hvc3QvcnRz eF91c2Jfc2RtbWMuYworKysgYi9kcml2ZXJzL21tYy9ob3N0L3J0c3hfdXNiX3NkbW1jLmMKQEAg LTExMzgsMTEgKzExMzgsNiBAQCBzdGF0aWMgdm9pZCBzZG1tY19zZXRfaW9zKHN0cnVjdCBtbWNf aG9zdCAqbW1jLCBzdHJ1Y3QgbW1jX2lvcyAqaW9zKQogCWRldl9kYmcoc2RtbWNfZGV2KGhvc3Qp LCAiJXNcbiIsIF9fZnVuY19fKTsKIAltdXRleF9sb2NrKCZ1Y3ItPmRldl9tdXRleCk7CiAKLQlp ZiAocnRzeF91c2JfY2FyZF9leGNsdXNpdmVfY2hlY2sodWNyLCBSVFNYX1VTQl9TRF9DQVJEKSkg ewotCQltdXRleF91bmxvY2soJnVjci0+ZGV2X211dGV4KTsKLQkJcmV0dXJuOwotCX0KLQogCXNk X3NldF9wb3dlcl9tb2RlKGhvc3QsIGlvcy0+cG93ZXJfbW9kZSk7CiAJc2Rfc2V0X2J1c193aWR0 aChob3N0LCBpb3MtPmJ1c193aWR0aCk7CiAJc2Rfc2V0X3RpbWluZyhob3N0LCBpb3MtPnRpbWlu ZywgJmhvc3QtPmRkcl9tb2RlKTsKQEAgLTEzMTQsNiArMTMwOSw3IEBAIHN0YXRpYyB2b2lkIHJ0 c3hfdXNiX3VwZGF0ZV9sZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCQljb250YWluZXJf b2Yod29yaywgc3RydWN0IHJ0c3hfdXNiX3NkbW1jLCBsZWRfd29yayk7CiAJc3RydWN0IHJ0c3hf dWNyICp1Y3IgPSBob3N0LT51Y3I7CiAKKwlwbV9ydW50aW1lX2dldF9zeW5jKHNkbW1jX2Rldiho b3N0KSk7CiAJbXV0ZXhfbG9jaygmdWNyLT5kZXZfbXV0ZXgpOwogCiAJaWYgKGhvc3QtPmxlZC5i cmlnaHRuZXNzID09IExFRF9PRkYpCkBAIC0xMzIyLDYgKzEzMTgsNyBAQCBzdGF0aWMgdm9pZCBy dHN4X3VzYl91cGRhdGVfbGVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJcnRzeF91c2Jf dHVybl9vbl9sZWQodWNyKTsKIAogCW11dGV4X3VubG9jaygmdWNyLT5kZXZfbXV0ZXgpOworCXBt X3J1bnRpbWVfcHV0KHNkbW1jX2Rldihob3N0KSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9tbWMvaG9zdC9zZGhjaS5jIGIvZHJpdmVycy9tbWMvaG9zdC9zZGhjaS5jCmluZGV4 IGE1OTVkN2UyODlhYi4uNTExNDIwNmRmMDUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9ob3N0 L3NkaGNpLmMKKysrIGIvZHJpdmVycy9tbWMvaG9zdC9zZGhjaS5jCkBAIC02NjksNyArNjY5LDcg QEAgc3RhdGljIHU4IHNkaGNpX2NhbGNfdGltZW91dChzdHJ1Y3Qgc2RoY2lfaG9zdCAqaG9zdCwg c3RydWN0IG1tY19jb21tYW5kICpjbWQpCiAJCQkgKiBob3N0LT5jbG9jayBpcyBpbiBIei4gIHRh cmdldF90aW1lb3V0IGlzIGluIHVzLgogCQkJICogSGVuY2UsIHVzID0gMTAwMDAwMCAqIGN5Y2xl cyAvIEh6LiAgUm91bmQgdXAuCiAJCQkgKi8KLQkJCXZhbCA9IDEwMDAwMDAgKiBkYXRhLT50aW1l b3V0X2Nsa3M7CisJCQl2YWwgPSAxMDAwMDAwVUxMICogZGF0YS0+dGltZW91dF9jbGtzOwogCQkJ aWYgKGRvX2Rpdih2YWwsIGhvc3QtPmNsb2NrKSkKIAkJCQl0YXJnZXRfdGltZW91dCsrOwogCQkJ dGFyZ2V0X3RpbWVvdXQgKz0gdmFsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvdWJpL2ViYS5j IGIvZHJpdmVycy9tdGQvdWJpL2ViYS5jCmluZGV4IDBmZDAzODU2ZjhkZS4uNmIxNjk5NjhlMzAz IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC91YmkvZWJhLmMKKysrIGIvZHJpdmVycy9tdGQvdWJp L2ViYS5jCkBAIC0xMDIxLDYgKzEwMjEsOCBAQCBpbnQgdWJpX2ViYV9jb3B5X2xlYihzdHJ1Y3Qg dWJpX2RldmljZSAqdWJpLCBpbnQgZnJvbSwgaW50IHRvLAogCXN0cnVjdCB1Ymlfdm9sdW1lICp2 b2w7CiAJdWludDMyX3QgY3JjOwogCisJdWJpX2Fzc2VydChyd3NlbV9pc19sb2NrZWQoJnViaS0+ Zm1fc2VtKSk7CisKIAl2b2xfaWQgPSBiZTMyX3RvX2NwdSh2aWRfaGRyLT52b2xfaWQpOwogCWxu dW0gPSBiZTMyX3RvX2NwdSh2aWRfaGRyLT5sbnVtKTsKIApAQCAtMTE4OSw5ICsxMTkxLDcgQEAg aW50IHViaV9lYmFfY29weV9sZWIoc3RydWN0IHViaV9kZXZpY2UgKnViaSwgaW50IGZyb20sIGlu dCB0bywKIAl9CiAKIAl1YmlfYXNzZXJ0KHZvbC0+ZWJhX3RibFtsbnVtXSA9PSBmcm9tKTsKLQlk b3duX3JlYWQoJnViaS0+Zm1fc2VtKTsKIAl2b2wtPmViYV90YmxbbG51bV0gPSB0bzsKLQl1cF9y ZWFkKCZ1YmktPmZtX3NlbSk7CiAKIG91dF91bmxvY2tfYnVmOgogCW11dGV4X3VubG9jaygmdWJp LT5idWZfbXV0ZXgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvdWJpL2Zhc3RtYXAuYyBiL2Ry aXZlcnMvbXRkL3ViaS9mYXN0bWFwLmMKaW5kZXggNWMwYjY2ZWQxZGRiLi5kMmVlMjU3NmI0NDkg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL3ViaS9mYXN0bWFwLmMKKysrIGIvZHJpdmVycy9tdGQv dWJpL2Zhc3RtYXAuYwpAQCAtMjU4LDYgKzI1OCw3IEBAIHN0YXRpYyBpbnQgdXBkYXRlX3ZvbChz dHJ1Y3QgdWJpX2RldmljZSAqdWJpLCBzdHJ1Y3QgdWJpX2F0dGFjaF9pbmZvICphaSwKIAkJCWFl Yi0+cG51bSA9IG5ld19hZWItPnBudW07CiAJCQlhZWItPmNvcHlfZmxhZyA9IG5ld192aC0+Y29w eV9mbGFnOwogCQkJYWViLT5zY3J1YiA9IG5ld19hZWItPnNjcnViOworCQkJYWViLT5zcW51bSA9 IG5ld19hZWItPnNxbnVtOwogCQkJa21lbV9jYWNoZV9mcmVlKGFpLT5hZWJfc2xhYl9jYWNoZSwg bmV3X2FlYik7CiAKIAkJLyogbmV3X2FlYiBpcyBvbGRlciAqLwpAQCAtNDQ1LDEwICs0NDYsMTEg QEAgc3RhdGljIGludCBzY2FuX3Bvb2woc3RydWN0IHViaV9kZXZpY2UgKnViaSwgc3RydWN0IHVi aV9hdHRhY2hfaW5mbyAqYWksCiAJCQl1bnNpZ25lZCBsb25nIGxvbmcgZWMgPSBiZTY0X3RvX2Nw dShlY2gtPmVjKTsKIAkJCXVubWFwX3BlYihhaSwgcG51bSk7CiAJCQlkYmdfYmxkKCJBZGRpbmcg UEVCIHRvIGZyZWU6ICVpIiwgcG51bSk7CisKIAkJCWlmIChlcnIgPT0gVUJJX0lPX0ZGX0JJVEZM SVBTKQotCQkJCWFkZF9hZWIoYWksIGZyZWUsIHBudW0sIGVjLCAxKTsKLQkJCWVsc2UKLQkJCQlh ZGRfYWViKGFpLCBmcmVlLCBwbnVtLCBlYywgMCk7CisJCQkJc2NydWIgPSAxOworCisJCQlhZGRf YWViKGFpLCBmcmVlLCBwbnVtLCBlYywgc2NydWIpOwogCQkJY29udGludWU7CiAJCX0gZWxzZSBp ZiAoZXJyID09IDAgfHwgZXJyID09IFVCSV9JT19CSVRGTElQUykgewogCQkJZGJnX2JsZCgiRm91 bmQgbm9uIGVtcHR5IFBFQjolaSBpbiBwb29sIiwgcG51bSk7CkBAIC0xNDEyLDIyICsxNDE0LDMw IEBAIGludCB1YmlfdXBkYXRlX2Zhc3RtYXAoc3RydWN0IHViaV9kZXZpY2UgKnViaSkKIAlzdHJ1 Y3QgdWJpX3dsX2VudHJ5ICp0bXBfZTsKIAogCW11dGV4X2xvY2soJnViaS0+Zm1fbXV0ZXgpOwor CWRvd25fd3JpdGUoJnViaS0+d29ya19zZW0pOworCWRvd25fd3JpdGUoJnViaS0+Zm1fc2VtKTsK IAogCXViaV9yZWZpbGxfcG9vbHModWJpKTsKIAogCWlmICh1YmktPnJvX21vZGUgfHwgdWJpLT5m bV9kaXNhYmxlZCkgeworCQl1cF93cml0ZSgmdWJpLT5mbV9zZW0pOworCQl1cF93cml0ZSgmdWJp LT53b3JrX3NlbSk7CiAJCW11dGV4X3VubG9jaygmdWJpLT5mbV9tdXRleCk7CiAJCXJldHVybiAw OwogCX0KIAogCXJldCA9IHViaV9lbnN1cmVfYW5jaG9yX3BlYnModWJpKTsKIAlpZiAocmV0KSB7 CisJCXVwX3dyaXRlKCZ1YmktPmZtX3NlbSk7CisJCXVwX3dyaXRlKCZ1YmktPndvcmtfc2VtKTsK IAkJbXV0ZXhfdW5sb2NrKCZ1YmktPmZtX211dGV4KTsKIAkJcmV0dXJuIHJldDsKIAl9CiAKIAlu ZXdfZm0gPSBremFsbG9jKHNpemVvZigqbmV3X2ZtKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFuZXdf Zm0pIHsKKwkJdXBfd3JpdGUoJnViaS0+Zm1fc2VtKTsKKwkJdXBfd3JpdGUoJnViaS0+d29ya19z ZW0pOwogCQltdXRleF91bmxvY2soJnViaS0+Zm1fbXV0ZXgpOwogCQlyZXR1cm4gLUVOT01FTTsK IAl9CkBAIC0xNTM4LDE2ICsxNTQ4LDE0IEBAIGludCB1YmlfdXBkYXRlX2Zhc3RtYXAoc3RydWN0 IHViaV9kZXZpY2UgKnViaSkKIAkJbmV3X2ZtLT5lWzBdLT5lYyA9IHRtcF9lLT5lYzsKIAl9CiAK LQlkb3duX3dyaXRlKCZ1YmktPndvcmtfc2VtKTsKLQlkb3duX3dyaXRlKCZ1YmktPmZtX3NlbSk7 CiAJcmV0ID0gdWJpX3dyaXRlX2Zhc3RtYXAodWJpLCBuZXdfZm0pOwotCXVwX3dyaXRlKCZ1Ymkt PmZtX3NlbSk7Ci0JdXBfd3JpdGUoJnViaS0+d29ya19zZW0pOwogCiAJaWYgKHJldCkKIAkJZ290 byBlcnI7CiAKIG91dF91bmxvY2s6CisJdXBfd3JpdGUoJnViaS0+Zm1fc2VtKTsKKwl1cF93cml0 ZSgmdWJpLT53b3JrX3NlbSk7CiAJbXV0ZXhfdW5sb2NrKCZ1YmktPmZtX211dGV4KTsKIAlrZnJl ZShvbGRfZm0pOwogCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC91Ymkvd2wu YyBiL2RyaXZlcnMvbXRkL3ViaS93bC5jCmluZGV4IGE1ZWIxZjY2N2VmOC4uMzcxYTk3M2U3MThl IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC91Ymkvd2wuYworKysgYi9kcml2ZXJzL210ZC91Ymkv d2wuYwpAQCAtNjUzLDYgKzY1Myw4IEBAIHN0YXRpYyBzdHJ1Y3QgdWJpX3dsX2VudHJ5ICpnZXRf cGViX2Zvcl93bChzdHJ1Y3QgdWJpX2RldmljZSAqdWJpKQogCXN0cnVjdCB1YmlfZm1fcG9vbCAq cG9vbCA9ICZ1YmktPmZtX3dsX3Bvb2w7CiAJaW50IHBudW07CiAKKwl1YmlfYXNzZXJ0KHJ3c2Vt X2lzX2xvY2tlZCgmdWJpLT5mbV9zZW0pKTsKKwogCWlmIChwb29sLT51c2VkID09IHBvb2wtPnNp emUgfHwgIXBvb2wtPnNpemUpIHsKIAkJLyogV2UgY2Fubm90IHVwZGF0ZSB0aGUgZmFzdG1hcCBo ZXJlIGJlY2F1c2UgdGhpcwogCQkgKiBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gYXRvbWljIGNvbnRl eHQuCkBAIC04ODksNyArODkxLDcgQEAgaW50IHViaV9pc19lcmFzZV93b3JrKHN0cnVjdCB1Ymlf d29yayAqd3JrKQogICogZmFpbHVyZS4KICAqLwogc3RhdGljIGludCBzY2hlZHVsZV9lcmFzZShz dHJ1Y3QgdWJpX2RldmljZSAqdWJpLCBzdHJ1Y3QgdWJpX3dsX2VudHJ5ICplLAotCQkJICBpbnQg dm9sX2lkLCBpbnQgbG51bSwgaW50IHRvcnR1cmUpCisJCQkgIGludCB2b2xfaWQsIGludCBsbnVt LCBpbnQgdG9ydHVyZSwgYm9vbCBuZXN0ZWQpCiB7CiAJc3RydWN0IHViaV93b3JrICp3bF93cms7 CiAKQEAgLTkwOSw3ICs5MTEsMTAgQEAgc3RhdGljIGludCBzY2hlZHVsZV9lcmFzZShzdHJ1Y3Qg dWJpX2RldmljZSAqdWJpLCBzdHJ1Y3QgdWJpX3dsX2VudHJ5ICplLAogCXdsX3dyay0+bG51bSA9 IGxudW07CiAJd2xfd3JrLT50b3J0dXJlID0gdG9ydHVyZTsKIAotCXNjaGVkdWxlX3ViaV93b3Jr KHViaSwgd2xfd3JrKTsKKwlpZiAobmVzdGVkKQorCQlfX3NjaGVkdWxlX3ViaV93b3JrKHViaSwg d2xfd3JrKTsKKwllbHNlCisJCXNjaGVkdWxlX3ViaV93b3JrKHViaSwgd2xfd3JrKTsKIAlyZXR1 cm4gMDsKIH0KIApAQCAtOTgyLDcgKzk4Nyw3IEBAIGludCB1Ymlfd2xfcHV0X2ZtX3BlYihzdHJ1 Y3QgdWJpX2RldmljZSAqdWJpLCBzdHJ1Y3QgdWJpX3dsX2VudHJ5ICpmbV9lLAogCXNwaW5fdW5s b2NrKCZ1YmktPndsX2xvY2spOwogCiAJdm9sX2lkID0gbG51bSA/IFVCSV9GTV9EQVRBX1ZPTFVN RV9JRCA6IFVCSV9GTV9TQl9WT0xVTUVfSUQ7Ci0JcmV0dXJuIHNjaGVkdWxlX2VyYXNlKHViaSwg ZSwgdm9sX2lkLCBsbnVtLCB0b3J0dXJlKTsKKwlyZXR1cm4gc2NoZWR1bGVfZXJhc2UodWJpLCBl LCB2b2xfaWQsIGxudW0sIHRvcnR1cmUsIHRydWUpOwogfQogI2VuZGlmCiAKQEAgLTEwMDAsNyAr MTAwNSw3IEBAIHN0YXRpYyBpbnQgd2Vhcl9sZXZlbGluZ193b3JrZXIoc3RydWN0IHViaV9kZXZp Y2UgKnViaSwgc3RydWN0IHViaV93b3JrICp3cmssCiAJCQkJaW50IGNhbmNlbCkKIHsKIAlpbnQg ZXJyLCBzY3J1YmJpbmcgPSAwLCB0b3J0dXJlID0gMCwgcHJvdGVjdCA9IDAsIGVycm9uZW91cyA9 IDA7Ci0JaW50IHZvbF9pZCA9IC0xLCBsbnVtID0gLTE7CisJaW50IGVyYXNlID0gMCwga2VlcCA9 IDAsIHZvbF9pZCA9IC0xLCBsbnVtID0gLTE7CiAjaWZkZWYgQ09ORklHX01URF9VQklfRkFTVE1B UAogCWludCBhbmNob3IgPSB3cmstPmFuY2hvcjsKICNlbmRpZgpAQCAtMTAxNSw2ICsxMDIwLDcg QEAgc3RhdGljIGludCB3ZWFyX2xldmVsaW5nX3dvcmtlcihzdHJ1Y3QgdWJpX2RldmljZSAqdWJp LCBzdHJ1Y3QgdWJpX3dvcmsgKndyaywKIAlpZiAoIXZpZF9oZHIpCiAJCXJldHVybiAtRU5PTUVN OwogCisJZG93bl9yZWFkKCZ1YmktPmZtX3NlbSk7CiAJbXV0ZXhfbG9jaygmdWJpLT5tb3ZlX211 dGV4KTsKIAlzcGluX2xvY2soJnViaS0+d2xfbG9jayk7CiAJdWJpX2Fzc2VydCghdWJpLT5tb3Zl X2Zyb20gJiYgIXViaS0+bW92ZV90byk7CkBAIC0xMTM0LDYgKzExNDAsMTYgQEAgc3RhdGljIGlu dCB3ZWFyX2xldmVsaW5nX3dvcmtlcihzdHJ1Y3QgdWJpX2RldmljZSAqdWJpLCBzdHJ1Y3QgdWJp X3dvcmsgKndyaywKIAkJCSAgICAgICBlMS0+cG51bSk7CiAJCQlzY3J1YmJpbmcgPSAxOwogCQkJ Z290byBvdXRfbm90X21vdmVkOworCQl9IGVsc2UgaWYgKHViaS0+ZmFzdF9hdHRhY2ggJiYgZXJy ID09IFVCSV9JT19CQURfSERSX0VCQURNU0cpIHsKKwkJCS8qCisJCQkgKiBXaGlsZSBhIGZ1bGwg c2NhbiB3b3VsZCBkZXRlY3QgaW50ZXJydXB0ZWQgZXJhc3VyZXMKKwkJCSAqIGF0IGF0dGFjaCB0 aW1lIHdlIGNhbiBmYWNlIHRoZW0gaGVyZSB3aGVuIGF0dGFjaGVkIGZyb20KKwkJCSAqIEZhc3Rt YXAuCisJCQkgKi8KKwkJCWRiZ193bCgiUEVCICVkIGhhcyBFQ0MgZXJyb3JzLCBtYXliZSBmcm9t IGFuIGludGVycnVwdGVkIGVyYXN1cmUiLAorCQkJICAgICAgIGUxLT5wbnVtKTsKKwkJCWVyYXNl ID0gMTsKKwkJCWdvdG8gb3V0X25vdF9tb3ZlZDsKIAkJfQogCiAJCXViaV9lcnIoImVycm9yICVk IHdoaWxlIHJlYWRpbmcgVklEIGhlYWRlciBmcm9tIFBFQiAlZCIsCkBAIC0xMTY3LDYgKzExODMs NyBAQCBzdGF0aWMgaW50IHdlYXJfbGV2ZWxpbmdfd29ya2VyKHN0cnVjdCB1YmlfZGV2aWNlICp1 YmksIHN0cnVjdCB1Ymlfd29yayAqd3JrLAogCQkJICogVGFyZ2V0IFBFQiBoYWQgYml0LWZsaXBz IG9yIHdyaXRlIGVycm9yIC0gdG9ydHVyZSBpdC4KIAkJCSAqLwogCQkJdG9ydHVyZSA9IDE7CisJ CQlrZWVwID0gMTsKIAkJCWdvdG8gb3V0X25vdF9tb3ZlZDsKIAkJfQogCkBAIC0xMjMwLDYgKzEy NDcsNyBAQCBzdGF0aWMgaW50IHdlYXJfbGV2ZWxpbmdfd29ya2VyKHN0cnVjdCB1YmlfZGV2aWNl ICp1YmksIHN0cnVjdCB1Ymlfd29yayAqd3JrLAogCiAJZGJnX3dsKCJkb25lIik7CiAJbXV0ZXhf dW5sb2NrKCZ1YmktPm1vdmVfbXV0ZXgpOworCXVwX3JlYWQoJnViaS0+Zm1fc2VtKTsKIAlyZXR1 cm4gMDsKIAogCS8qCkBAIC0xMjUyLDcgKzEyNzAsNyBAQCBvdXRfbm90X21vdmVkOgogCQl1Ymkt PmVycm9uZW91c19wZWJfY291bnQgKz0gMTsKIAl9IGVsc2UgaWYgKHNjcnViYmluZykKIAkJd2xf dHJlZV9hZGQoZTEsICZ1YmktPnNjcnViKTsKLQllbHNlCisJZWxzZSBpZiAoa2VlcCkKIAkJd2xf dHJlZV9hZGQoZTEsICZ1YmktPnVzZWQpOwogCXViaV9hc3NlcnQoIXViaS0+bW92ZV90b19wdXQp OwogCXViaS0+bW92ZV9mcm9tID0gdWJpLT5tb3ZlX3RvID0gTlVMTDsKQEAgLTEyNjQsNyArMTI4 MiwxNCBAQCBvdXRfbm90X21vdmVkOgogCWlmIChlcnIpCiAJCWdvdG8gb3V0X3JvOwogCisJaWYg KGVyYXNlKSB7CisJCWVyciA9IGRvX3N5bmNfZXJhc2UodWJpLCBlMSwgdm9sX2lkLCBsbnVtLCAx KTsKKwkJaWYgKGVycikKKwkJCWdvdG8gb3V0X3JvOworCX0KKwogCW11dGV4X3VubG9jaygmdWJp LT5tb3ZlX211dGV4KTsKKwl1cF9yZWFkKCZ1YmktPmZtX3NlbSk7CiAJcmV0dXJuIDA7CiAKIG91 dF9lcnJvcjoKQEAgLTEyODYsNiArMTMxMSw3IEBAIG91dF9lcnJvcjoKIG91dF9ybzoKIAl1Ymlf cm9fbW9kZSh1YmkpOwogCW11dGV4X3VubG9jaygmdWJpLT5tb3ZlX211dGV4KTsKKwl1cF9yZWFk KCZ1YmktPmZtX3NlbSk7CiAJdWJpX2Fzc2VydChlcnIgIT0gMCk7CiAJcmV0dXJuIGVyciA8IDAg PyBlcnIgOiAtRUlPOwogCkBAIC0xMjkzLDYgKzEzMTksNyBAQCBvdXRfY2FuY2VsOgogCXViaS0+ d2xfc2NoZWR1bGVkID0gMDsKIAlzcGluX3VubG9jaygmdWJpLT53bF9sb2NrKTsKIAltdXRleF91 bmxvY2soJnViaS0+bW92ZV9tdXRleCk7CisJdXBfcmVhZCgmdWJpLT5mbV9zZW0pOwogCXViaV9m cmVlX3ZpZF9oZHIodWJpLCB2aWRfaGRyKTsKIAlyZXR1cm4gMDsKIH0KQEAgLTEzOTQsNyArMTQy MSw3IEBAIGludCB1YmlfZW5zdXJlX2FuY2hvcl9wZWJzKHN0cnVjdCB1YmlfZGV2aWNlICp1Ymkp CiAKIAl3cmstPmFuY2hvciA9IDE7CiAJd3JrLT5mdW5jID0gJndlYXJfbGV2ZWxpbmdfd29ya2Vy OwotCXNjaGVkdWxlX3ViaV93b3JrKHViaSwgd3JrKTsKKwlfX3NjaGVkdWxlX3ViaV93b3JrKHVi aSwgd3JrKTsKIAlyZXR1cm4gMDsKIH0KICNlbmRpZgpAQCAtMTQ2MCw3ICsxNDg3LDcgQEAgc3Rh dGljIGludCBlcmFzZV93b3JrZXIoc3RydWN0IHViaV9kZXZpY2UgKnViaSwgc3RydWN0IHViaV93 b3JrICp3bF93cmssCiAJCWludCBlcnIxOwogCiAJCS8qIFJlLXNjaGVkdWxlIHRoZSBMRUIgZm9y IGVyYXN1cmUgKi8KLQkJZXJyMSA9IHNjaGVkdWxlX2VyYXNlKHViaSwgZSwgdm9sX2lkLCBsbnVt LCAwKTsKKwkJZXJyMSA9IHNjaGVkdWxlX2VyYXNlKHViaSwgZSwgdm9sX2lkLCBsbnVtLCAwLCBm YWxzZSk7CiAJCWlmIChlcnIxKSB7CiAJCQllcnIgPSBlcnIxOwogCQkJZ290byBvdXRfcm87CkBA IC0xNjE2LDcgKzE2NDMsNyBAQCByZXRyeToKIAl9CiAJc3Bpbl91bmxvY2soJnViaS0+d2xfbG9j ayk7CiAKLQllcnIgPSBzY2hlZHVsZV9lcmFzZSh1YmksIGUsIHZvbF9pZCwgbG51bSwgdG9ydHVy ZSk7CisJZXJyID0gc2NoZWR1bGVfZXJhc2UodWJpLCBlLCB2b2xfaWQsIGxudW0sIHRvcnR1cmUs IGZhbHNlKTsKIAlpZiAoZXJyKSB7CiAJCXNwaW5fbG9jaygmdWJpLT53bF9sb2NrKTsKIAkJd2xf dHJlZV9hZGQoZSwgJnViaS0+dXNlZCk7CkBAIC0xOTA1LDcgKzE5MzIsNyBAQCBpbnQgdWJpX3ds X2luaXQoc3RydWN0IHViaV9kZXZpY2UgKnViaSwgc3RydWN0IHViaV9hdHRhY2hfaW5mbyAqYWkp CiAJCWUtPmVjID0gYWViLT5lYzsKIAkJdWJpX2Fzc2VydCghdWJpX2lzX2ZtX2Jsb2NrKHViaSwg ZS0+cG51bSkpOwogCQl1YmktPmxvb2t1cHRibFtlLT5wbnVtXSA9IGU7Ci0JCWlmIChzY2hlZHVs ZV9lcmFzZSh1YmksIGUsIGFlYi0+dm9sX2lkLCBhZWItPmxudW0sIDApKSB7CisJCWlmIChzY2hl ZHVsZV9lcmFzZSh1YmksIGUsIGFlYi0+dm9sX2lkLCBhZWItPmxudW0sIDAsIGZhbHNlKSkgewog CQkJa21lbV9jYWNoZV9mcmVlKHViaV93bF9lbnRyeV9zbGFiLCBlKTsKIAkJCWdvdG8gb3V0X2Zy ZWU7CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91 c2JfY29yZS5jIGIvZHJpdmVycy9uZXQvY2FuL3VzYi9wZWFrX3VzYi9wY2FuX3VzYl9jb3JlLmMK aW5kZXggZGM4MDdlMTBmODAyLi4zZjc5ODE0ZjUxY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0 L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jCisrKyBiL2RyaXZlcnMvbmV0L2Nhbi91 c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jCkBAIC04MjYsMjMgKzgyNiwyNSBAQCBsYmxfZnJl ZV9jYW5kZXY6CiBzdGF0aWMgdm9pZCBwZWFrX3VzYl9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50 ZXJmYWNlICppbnRmKQogewogCXN0cnVjdCBwZWFrX3VzYl9kZXZpY2UgKmRldjsKKwlzdHJ1Y3Qg cGVha191c2JfZGV2aWNlICpkZXZfcHJldl9zaWJsaW5nczsKIAogCS8qIHVucmVnaXN0ZXIgYXMg bWFueSBuZXRkZXYgZGV2aWNlcyBhcyBzaWJsaW5ncyAqLwotCWZvciAoZGV2ID0gdXNiX2dldF9p bnRmZGF0YShpbnRmKTsgZGV2OyBkZXYgPSBkZXYtPnByZXZfc2libGluZ3MpIHsKKwlmb3IgKGRl diA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7IGRldjsgZGV2ID0gZGV2X3ByZXZfc2libGluZ3Mp IHsKIAkJc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IGRldi0+bmV0ZGV2OwogCQljaGFyIG5h bWVbSUZOQU1TSVpdOwogCisJCWRldl9wcmV2X3NpYmxpbmdzID0gZGV2LT5wcmV2X3NpYmxpbmdz OwogCQlkZXYtPnN0YXRlICY9IH5QQ0FOX1VTQl9TVEFURV9DT05ORUNURUQ7CiAJCXN0cm5jcHko bmFtZSwgbmV0ZGV2LT5uYW1lLCBJRk5BTVNJWik7CiAKIAkJdW5yZWdpc3Rlcl9uZXRkZXYobmV0 ZGV2KTsKLQkJZnJlZV9jYW5kZXYobmV0ZGV2KTsKIAogCQlrZnJlZShkZXYtPmNtZF9idWYpOwog CQlkZXYtPm5leHRfc2libGluZ3MgPSBOVUxMOwogCQlpZiAoZGV2LT5hZGFwdGVyLT5kZXZfZnJl ZSkKIAkJCWRldi0+YWRhcHRlci0+ZGV2X2ZyZWUoZGV2KTsKIAorCQlmcmVlX2NhbmRldihuZXRk ZXYpOwogCQlkZXZfaW5mbygmaW50Zi0+ZGV2LCAiJXMgcmVtb3ZlZFxuIiwgbmFtZSk7CiAJfQog CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMg Yi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMKaW5kZXggYzU4M2Rk NTgyNjhiLi4zY2NhNjA0NzU3OGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jy b2FkY29tL2JjbXN5c3BvcnQuYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9i Y21zeXNwb3J0LmMKQEAgLTU4LDggKzU4LDggQEAgQkNNX1NZU1BPUlRfSU9fTUFDUk8odG9wY3Ry bCwgU1lTX1BPUlRfVE9QQ1RSTF9PRkZTRVQpOwogc3RhdGljIGlubGluZSB2b2lkIGludHJsMl8j I3doaWNoIyNfbWFza19jbGVhcihzdHJ1Y3QgYmNtX3N5c3BvcnRfcHJpdiAqcHJpdiwgXAogCQkJ CQkJdTMyIG1hc2spCQlcCiB7CQkJCQkJCQkJXAotCWludHJsMl8jI3doaWNoIyNfd3JpdGVsKHBy aXYsIG1hc2ssIElOVFJMMl9DUFVfTUFTS19DTEVBUik7CVwKIAlwcml2LT5pcnEjI3doaWNoIyNf bWFzayAmPSB+KG1hc2spOwkJCQlcCisJaW50cmwyXyMjd2hpY2gjI193cml0ZWwocHJpdiwgbWFz aywgSU5UUkwyX0NQVV9NQVNLX0NMRUFSKTsJXAogfQkJCQkJCQkJCVwKIHN0YXRpYyBpbmxpbmUg dm9pZCBpbnRybDJfIyN3aGljaCMjX21hc2tfc2V0KHN0cnVjdCBiY21fc3lzcG9ydF9wcml2ICpw cml2LCBcCiAJCQkJCQl1MzIgbWFzaykJCVwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVy bmV0L2Jyb2FkY29tL2JnbWFjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21h Yy5jCmluZGV4IDQxODc3YTNmODU5Ni4uNGY5NWU3MjIyODM0IDEwMDY0NAotLS0gYS9kcml2ZXJz L25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0 L2Jyb2FkY29tL2JnbWFjLmMKQEAgLTI1Myw2ICsyNTMsMTAgQEAgc3RhdGljIHZvaWQgYmdtYWNf ZG1hX3J4X2VuYWJsZShzdHJ1Y3QgYmdtYWMgKmJnbWFjLAogCXUzMiBjdGw7CiAKIAljdGwgPSBi Z21hY19yZWFkKGJnbWFjLCByaW5nLT5tbWlvX2Jhc2UgKyBCR01BQ19ETUFfUlhfQ1RMKTsKKwor CS8qIHByZXNlcnZlIE9OTFkgYml0cyAxNi0xNyBmcm9tIGN1cnJlbnQgaGFyZHdhcmUgdmFsdWUg Ki8KKwljdGwgJj0gQkdNQUNfRE1BX1JYX0FERFJFWFRfTUFTSzsKKwogCWlmIChiZ21hYy0+Y29y ZS0+aWQucmV2ID49IDQpIHsKIAkJY3RsICY9IH5CR01BQ19ETUFfUlhfQkxfTUFTSzsKIAkJY3Rs IHw9IEJHTUFDX0RNQV9SWF9CTF8xMjggPDwgQkdNQUNfRE1BX1JYX0JMX1NISUZUOwpAQCAtMjYz LDcgKzI2Nyw2IEBAIHN0YXRpYyB2b2lkIGJnbWFjX2RtYV9yeF9lbmFibGUoc3RydWN0IGJnbWFj ICpiZ21hYywKIAkJY3RsICY9IH5CR01BQ19ETUFfUlhfUFRfTUFTSzsKIAkJY3RsIHw9IEJHTUFD X0RNQV9SWF9QVF8xIDw8IEJHTUFDX0RNQV9SWF9QVF9TSElGVDsKIAl9Ci0JY3RsICY9IEJHTUFD X0RNQV9SWF9BRERSRVhUX01BU0s7CiAJY3RsIHw9IEJHTUFDX0RNQV9SWF9FTkFCTEU7CiAJY3Rs IHw9IEJHTUFDX0RNQV9SWF9QQVJJVFlfRElTQUJMRTsKIAljdGwgfD0gQkdNQUNfRE1BX1JYX09W RVJGTE9XX0NPTlQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9n ZW5ldC9iY21nZW5ldC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNt Z2VuZXQuYwppbmRleCA5Y2JmZGEyOTYxZWMuLjU1YTJjYWEyMDI5OCAxMDA2NDQKLS0tIGEvZHJp dmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYworKysgYi9kcml2ZXJz L25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jCkBAIC04NzgsNiArODc4LDcg QEAgc3RhdGljIHZvaWQgX19iY21nZW5ldF90eF9yZWNsYWltKHN0cnVjdCBuZXRfZGV2aWNlICpk ZXYsCiAJCQkJc3RydWN0IGJjbWdlbmV0X3R4X3JpbmcgKnJpbmcpCiB7CiAJc3RydWN0IGJjbWdl bmV0X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpOworCXN0cnVjdCBkZXZpY2UgKmtkZXYg PSAmcHJpdi0+cGRldi0+ZGV2OwogCWludCBsYXN0X3R4X2NuLCBsYXN0X2NfaW5kZXgsIG51bV90 eF9iZHM7CiAJc3RydWN0IGVuZXRfY2IgKnR4X2NiX3B0cjsKIAlzdHJ1Y3QgbmV0ZGV2X3F1ZXVl ICp0eHE7CkBAIC05MDcsNyArOTA4LDcgQEAgc3RhdGljIHZvaWQgX19iY21nZW5ldF90eF9yZWNs YWltKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCXR4X2NiX3B0ciA9IHJpbmctPmNicyArIGxh c3RfY19pbmRleDsKIAkJaWYgKHR4X2NiX3B0ci0+c2tiKSB7CiAJCQlkZXYtPnN0YXRzLnR4X2J5 dGVzICs9IHR4X2NiX3B0ci0+c2tiLT5sZW47Ci0JCQlkbWFfdW5tYXBfc2luZ2xlKCZkZXYtPmRl diwKKwkJCWRtYV91bm1hcF9zaW5nbGUoa2RldiwKIAkJCQkJZG1hX3VubWFwX2FkZHIodHhfY2Jf cHRyLCBkbWFfYWRkciksCiAJCQkJCWRtYV91bm1hcF9sZW4odHhfY2JfcHRyLCBkbWFfbGVuKSwK IAkJCQkJRE1BX1RPX0RFVklDRSk7CkBAIC05MTUsNyArOTE2LDcgQEAgc3RhdGljIHZvaWQgX19i Y21nZW5ldF90eF9yZWNsYWltKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCX0gZWxzZSBpZiAo ZG1hX3VubWFwX2FkZHIodHhfY2JfcHRyLCBkbWFfYWRkcikpIHsKIAkJCWRldi0+c3RhdHMudHhf Ynl0ZXMgKz0KIAkJCQlkbWFfdW5tYXBfbGVuKHR4X2NiX3B0ciwgZG1hX2xlbik7Ci0JCQlkbWFf dW5tYXBfcGFnZSgmZGV2LT5kZXYsCisJCQlkbWFfdW5tYXBfcGFnZShrZGV2LAogCQkJCQlkbWFf dW5tYXBfYWRkcih0eF9jYl9wdHIsIGRtYV9hZGRyKSwKIAkJCQkJZG1hX3VubWFwX2xlbih0eF9j Yl9wdHIsIGRtYV9sZW4pLAogCQkJCQlETUFfVE9fREVWSUNFKTsKQEAgLTEyNTcsNiArMTI1OCw3 IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgYmNtZ2VuZXRfZGVzY19yeChzdHJ1Y3QgYmNtZ2VuZXRf cHJpdiAqcHJpdiwKIAkJCQkgICAgIHVuc2lnbmVkIGludCBidWRnZXQpCiB7CiAJc3RydWN0IG5l dF9kZXZpY2UgKmRldiA9IHByaXYtPmRldjsKKwlzdHJ1Y3QgZGV2aWNlICprZGV2ID0gJnByaXYt PnBkZXYtPmRldjsKIAlzdHJ1Y3QgZW5ldF9jYiAqY2I7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsK IAl1MzIgZG1hX2xlbmd0aF9zdGF0dXM7CkBAIC0xMjg4LDcgKzEyOTAsNyBAQCBzdGF0aWMgdW5z aWduZWQgaW50IGJjbWdlbmV0X2Rlc2Nfcngoc3RydWN0IGJjbWdlbmV0X3ByaXYgKnByaXYsCiAJ CSAqLwogCQljYiA9ICZwcml2LT5yeF9jYnNbcHJpdi0+cnhfcmVhZF9wdHJdOwogCQlza2IgPSBj Yi0+c2tiOwotCQlkbWFfdW5tYXBfc2luZ2xlKCZkZXYtPmRldiwgZG1hX3VubWFwX2FkZHIoY2Is IGRtYV9hZGRyKSwKKwkJZG1hX3VubWFwX3NpbmdsZShrZGV2LCBkbWFfdW5tYXBfYWRkcihjYiwg ZG1hX2FkZHIpLAogCQkJCXByaXYtPnJ4X2J1Zl9sZW4sIERNQV9GUk9NX0RFVklDRSk7CiAKIAkJ aWYgKCFwcml2LT5kZXNjXzY0Yl9lbikgewpAQCAtMTQyOCw2ICsxNDMwLDcgQEAgc3RhdGljIGlu dCBiY21nZW5ldF9hbGxvY19yeF9idWZmZXJzKHN0cnVjdCBiY21nZW5ldF9wcml2ICpwcml2KQog CiBzdGF0aWMgdm9pZCBiY21nZW5ldF9mcmVlX3J4X2J1ZmZlcnMoc3RydWN0IGJjbWdlbmV0X3By aXYgKnByaXYpCiB7CisJc3RydWN0IGRldmljZSAqa2RldiA9ICZwcml2LT5wZGV2LT5kZXY7CiAJ c3RydWN0IGVuZXRfY2IgKmNiOwogCWludCBpOwogCkBAIC0xNDM1LDcgKzE0MzgsNyBAQCBzdGF0 aWMgdm9pZCBiY21nZW5ldF9mcmVlX3J4X2J1ZmZlcnMoc3RydWN0IGJjbWdlbmV0X3ByaXYgKnBy aXYpCiAJCWNiID0gJnByaXYtPnJ4X2Nic1tpXTsKIAogCQlpZiAoZG1hX3VubWFwX2FkZHIoY2Is IGRtYV9hZGRyKSkgewotCQkJZG1hX3VubWFwX3NpbmdsZSgmcHJpdi0+ZGV2LT5kZXYsCisJCQlk bWFfdW5tYXBfc2luZ2xlKGtkZXYsCiAJCQkJCWRtYV91bm1hcF9hZGRyKGNiLCBkbWFfYWRkciks CiAJCQkJCXByaXYtPnJ4X2J1Zl9sZW4sIERNQV9GUk9NX0RFVklDRSk7CiAJCQlkbWFfdW5tYXBf YWRkcl9zZXQoY2IsIGRtYV9hZGRyLCAwKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVy bmV0L2NpcnJ1cy9lcDkzeHhfZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXJydXMvZXA5 M3h4X2V0aC5jCmluZGV4IDJiZTJhOTljNWVhMy4uZWE4ZGY3OTdmYWUyIDEwMDY0NAotLS0gYS9k cml2ZXJzL25ldC9ldGhlcm5ldC9jaXJydXMvZXA5M3h4X2V0aC5jCisrKyBiL2RyaXZlcnMvbmV0 L2V0aGVybmV0L2NpcnJ1cy9lcDkzeHhfZXRoLmMKQEAgLTQ2OCw2ICs0NjgsOSBAQCBzdGF0aWMg dm9pZCBlcDkzeHhfZnJlZV9idWZmZXJzKHN0cnVjdCBlcDkzeHhfcHJpdiAqZXApCiAJc3RydWN0 IGRldmljZSAqZGV2ID0gZXAtPmRldi0+ZGV2LnBhcmVudDsKIAlpbnQgaTsKIAorCWlmICghZXAt PmRlc2NzKQorCQlyZXR1cm47CisKIAlmb3IgKGkgPSAwOyBpIDwgUlhfUVVFVUVfRU5UUklFUzsg aSsrKSB7CiAJCWRtYV9hZGRyX3QgZDsKIApAQCAtNDkyLDYgKzQ5NSw3IEBAIHN0YXRpYyB2b2lk IGVwOTN4eF9mcmVlX2J1ZmZlcnMoc3RydWN0IGVwOTN4eF9wcml2ICplcCkKIAogCWRtYV9mcmVl X2NvaGVyZW50KGRldiwgc2l6ZW9mKHN0cnVjdCBlcDkzeHhfZGVzY3MpLCBlcC0+ZGVzY3MsCiAJ CQkJCQkJZXAtPmRlc2NzX2RtYV9hZGRyKTsKKwllcC0+ZGVzY3MgPSBOVUxMOwogfQogCiBzdGF0 aWMgaW50IGVwOTN4eF9hbGxvY19idWZmZXJzKHN0cnVjdCBlcDkzeHhfcHJpdiAqZXApCmRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jIGIvZHJp dmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYwppbmRleCAyNzVjYTlhMTcx OWUuLmZkMzg4Y2M4YzIyZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwv aTQwZS9pNDBlX21haW4uYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0 MGVfbWFpbi5jCkBAIC04ODI5LDYgKzg4MjksMTIgQEAgc3RhdGljIHBjaV9lcnNfcmVzdWx0X3Qg aTQwZV9wY2lfZXJyb3JfZGV0ZWN0ZWQoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAKIAlkZXZfaW5m bygmcGRldi0+ZGV2LCAiJXM6IGVycm9yICVkXG4iLCBfX2Z1bmNfXywgZXJyb3IpOwogCisJaWYg KCFwZikgeworCQlkZXZfaW5mbygmcGRldi0+ZGV2LAorCQkJICJDYW5ub3QgcmVjb3ZlciAtIGVy cm9yIGhhcHBlbmVkIGR1cmluZyBkZXZpY2UgcHJvYmVcbiIpOworCQlyZXR1cm4gUENJX0VSU19S RVNVTFRfRElTQ09OTkVDVDsKKwl9CisKIAkvKiBzaHV0ZG93biBhbGwgb3BlcmF0aW9ucyAqLwog CWlmICghdGVzdF9iaXQoX19JNDBFX1NVU1BFTkRFRCwgJnBmLT5zdGF0ZSkpIHsKIAkJcnRubF9s b2NrKCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5j IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYwppbmRleCA0ZDQ2ODcwN2E4 NjYuLmVhZGE4NDQ5ZTAwZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVs bC9tdm5ldGEuYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jCkBA IC0zMDc4LDcgKzMwNzgsNyBAQCBzdGF0aWMgaW50IG12bmV0YV9wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQogCWRldi0+ZmVhdHVyZXMgPSBORVRJRl9GX1NHIHwgTkVUSUZfRl9J UF9DU1VNIHwgTkVUSUZfRl9UU087CiAJZGV2LT5od19mZWF0dXJlcyB8PSBkZXYtPmZlYXR1cmVz OwogCWRldi0+dmxhbl9mZWF0dXJlcyB8PSBkZXYtPmZlYXR1cmVzOwotCWRldi0+cHJpdl9mbGFn cyB8PSBJRkZfVU5JQ0FTVF9GTFQgfCBJRkZfTElWRV9BRERSX0NIQU5HRTsKKwlkZXYtPnByaXZf ZmxhZ3MgfD0gSUZGX0xJVkVfQUREUl9DSEFOR0U7CiAJZGV2LT5nc29fbWF4X3NlZ3MgPSBNVk5F VEFfTUFYX1RTT19TRUdTOwogCiAJZXJyID0gcmVnaXN0ZXJfbmV0ZGV2KGRldik7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2NtZC5jIGIvZHJpdmVycy9u ZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9jbWQuYwppbmRleCAxYTEyY2VjOWUwMmEuLjBjMTU4 ZWMzMTcwZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9j bWQuYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2NtZC5jCkBAIC02 MDYsMTQgKzYwNiwyMCBAQCBpbnQgX19tbHg0X2NtZChzdHJ1Y3QgbWx4NF9kZXYgKmRldiwgdTY0 IGluX3BhcmFtLCB1NjQgKm91dF9wYXJhbSwKIAkJcmV0dXJuIC1FSU87CiAKIAlpZiAoIW1seDRf aXNfbWZ1bmMoZGV2KSB8fCAobmF0aXZlICYmIG1seDRfaXNfbWFzdGVyKGRldikpKSB7CisJCWlu dCByZXQ7CisKKwkJZG93bl9yZWFkKCZtbHg0X3ByaXYoZGV2KS0+Y21kLnN3aXRjaF9zZW0pOwog CQlpZiAobWx4NF9wcml2KGRldiktPmNtZC51c2VfZXZlbnRzKQotCQkJcmV0dXJuIG1seDRfY21k X3dhaXQoZGV2LCBpbl9wYXJhbSwgb3V0X3BhcmFtLAotCQkJCQkgICAgIG91dF9pc19pbW0sIGlu X21vZGlmaWVyLAotCQkJCQkgICAgIG9wX21vZGlmaWVyLCBvcCwgdGltZW91dCk7CisJCQlyZXQg PSBtbHg0X2NtZF93YWl0KGRldiwgaW5fcGFyYW0sIG91dF9wYXJhbSwKKwkJCQkJICAgIG91dF9p c19pbW0sIGluX21vZGlmaWVyLAorCQkJCQkgICAgb3BfbW9kaWZpZXIsIG9wLCB0aW1lb3V0KTsK IAkJZWxzZQotCQkJcmV0dXJuIG1seDRfY21kX3BvbGwoZGV2LCBpbl9wYXJhbSwgb3V0X3BhcmFt LAotCQkJCQkgICAgIG91dF9pc19pbW0sIGluX21vZGlmaWVyLAotCQkJCQkgICAgIG9wX21vZGlm aWVyLCBvcCwgdGltZW91dCk7CisJCQlyZXQgPSBtbHg0X2NtZF9wb2xsKGRldiwgaW5fcGFyYW0s IG91dF9wYXJhbSwKKwkJCQkJICAgIG91dF9pc19pbW0sIGluX21vZGlmaWVyLAorCQkJCQkgICAg b3BfbW9kaWZpZXIsIG9wLCB0aW1lb3V0KTsKKworCQl1cF9yZWFkKCZtbHg0X3ByaXYoZGV2KS0+ Y21kLnN3aXRjaF9zZW0pOworCQlyZXR1cm4gcmV0OwogCX0KIAlyZXR1cm4gbWx4NF9zbGF2ZV9j bWQoZGV2LCBpbl9wYXJhbSwgb3V0X3BhcmFtLCBvdXRfaXNfaW1tLAogCQkJICAgICAgaW5fbW9k aWZpZXIsIG9wX21vZGlmaWVyLCBvcCwgdGltZW91dCk7CkBAIC0yMDkyLDYgKzIwOTgsNyBAQCBp bnQgbWx4NF9jbWRfaW5pdChzdHJ1Y3QgbWx4NF9kZXYgKmRldikKIHsKIAlzdHJ1Y3QgbWx4NF9w cml2ICpwcml2ID0gbWx4NF9wcml2KGRldik7CiAKKwlpbml0X3J3c2VtKCZwcml2LT5jbWQuc3dp dGNoX3NlbSk7CiAJbXV0ZXhfaW5pdCgmcHJpdi0+Y21kLmhjcl9tdXRleCk7CiAJbXV0ZXhfaW5p dCgmcHJpdi0+Y21kLnNsYXZlX2NtZF9tdXRleCk7CiAJc2VtYV9pbml0KCZwcml2LT5jbWQucG9s bF9zZW0sIDEpOwpAQCAtMjE4OCw2ICsyMTk1LDcgQEAgaW50IG1seDRfY21kX3VzZV9ldmVudHMo c3RydWN0IG1seDRfZGV2ICpkZXYpCiAJaWYgKCFwcml2LT5jbWQuY29udGV4dCkKIAkJcmV0dXJu IC1FTk9NRU07CiAKKwlkb3duX3dyaXRlKCZwcml2LT5jbWQuc3dpdGNoX3NlbSk7CiAJZm9yIChp ID0gMDsgaSA8IHByaXYtPmNtZC5tYXhfY21kczsgKytpKSB7CiAJCXByaXYtPmNtZC5jb250ZXh0 W2ldLnRva2VuID0gaTsKIAkJcHJpdi0+Y21kLmNvbnRleHRbaV0ubmV4dCAgPSBpICsgMTsKQEAg LTIyMDcsNiArMjIxNSw3IEBAIGludCBtbHg0X2NtZF91c2VfZXZlbnRzKHN0cnVjdCBtbHg0X2Rl diAqZGV2KQogCiAJZG93bigmcHJpdi0+Y21kLnBvbGxfc2VtKTsKIAlwcml2LT5jbWQudXNlX2V2 ZW50cyA9IDE7CisJdXBfd3JpdGUoJnByaXYtPmNtZC5zd2l0Y2hfc2VtKTsKIAogCXJldHVybiBl cnI7CiB9CkBAIC0yMjE5LDYgKzIyMjgsNyBAQCB2b2lkIG1seDRfY21kX3VzZV9wb2xsaW5nKHN0 cnVjdCBtbHg0X2RldiAqZGV2KQogCXN0cnVjdCBtbHg0X3ByaXYgKnByaXYgPSBtbHg0X3ByaXYo ZGV2KTsKIAlpbnQgaTsKIAorCWRvd25fd3JpdGUoJnByaXYtPmNtZC5zd2l0Y2hfc2VtKTsKIAlw cml2LT5jbWQudXNlX2V2ZW50cyA9IDA7CiAKIAlmb3IgKGkgPSAwOyBpIDwgcHJpdi0+Y21kLm1h eF9jbWRzOyArK2kpCkBAIC0yMjI3LDYgKzIyMzcsNyBAQCB2b2lkIG1seDRfY21kX3VzZV9wb2xs aW5nKHN0cnVjdCBtbHg0X2RldiAqZGV2KQogCWtmcmVlKHByaXYtPmNtZC5jb250ZXh0KTsKIAog CXVwKCZwcml2LT5jbWQucG9sbF9zZW0pOworCXVwX3dyaXRlKCZwcml2LT5jbWQuc3dpdGNoX3Nl bSk7CiB9CiAKIHN0cnVjdCBtbHg0X2NtZF9tYWlsYm94ICptbHg0X2FsbG9jX2NtZF9tYWlsYm94 KHN0cnVjdCBtbHg0X2RldiAqZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQv bWVsbGFub3gvbWx4NC9lbl9jbG9jay5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gv bWx4NC9lbl9jbG9jay5jCmluZGV4IDc0ZTc4M2JhNjhlYS4uYTZjNzczN2I3MDAxIDEwMDY0NAot LS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2Nsb2NrLmMKKysrIGIv ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jbG9jay5jCkBAIC0yOTQsOCAr Mjk0LDExIEBAIHN0YXRpYyB1MzIgZnJlcV90b19zaGlmdCh1MTYgZnJlcSkKIHsKIAl1MzIgZnJl cV9raHogPSBmcmVxICogMTAwMDsKIAl1NjQgbWF4X3ZhbF9jeWNsZXMgPSBmcmVxX2toeiAqIDEw MDAgKiBNTFg0X0VOX1dSQVBfQVJPVU5EX1NFQzsKKwl1NjQgdG1wX3JvdW5kZWQgPQorCQlyb3Vu ZHVwX3Bvd19vZl90d28obWF4X3ZhbF9jeWNsZXMpID4gbWF4X3ZhbF9jeWNsZXMgPworCQlyb3Vu ZHVwX3Bvd19vZl90d28obWF4X3ZhbF9jeWNsZXMpIC0gMSA6IFVJTlRfTUFYOwogCXU2NCBtYXhf dmFsX2N5Y2xlc19yb3VuZGVkID0gaXNfcG93ZXJfb2ZfMihtYXhfdmFsX2N5Y2xlcyArIDEpID8K LQkJbWF4X3ZhbF9jeWNsZXMgOiByb3VuZHVwX3Bvd19vZl90d28obWF4X3ZhbF9jeWNsZXMpIC0g MTsKKwkJbWF4X3ZhbF9jeWNsZXMgOiB0bXBfcm91bmRlZDsKIAkvKiBjYWxjdWxhdGUgbWF4IHBv c3NpYmxlIG11bHRpcGxpZXIgaW4gb3JkZXIgdG8gZml0IGluIDY0Yml0ICovCiAJdTY0IG1heF9t dWwgPSBkaXZfdTY0KDB4ZmZmZmZmZmZmZmZmZmZmZlVMTCwgbWF4X3ZhbF9jeWNsZXNfcm91bmRl ZCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5f bmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5j CmluZGV4IGRlYTkyZjFhZjM2Mi4uNmJmNGVhNDAwNjQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25l dC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jCisrKyBiL2RyaXZlcnMvbmV0L2V0 aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMKQEAgLTE3MzMsNiArMTczMywxMyBAQCBp bnQgbWx4NF9lbl9zdGFydF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJCXZ4bGFuX2dl dF9yeF9wb3J0KGRldik7CiAjZW5kaWYKIAlwcml2LT5wb3J0X3VwID0gdHJ1ZTsKKworCS8qIFBy b2Nlc3MgYWxsIGNvbXBsZXRpb25zIGlmIGV4aXN0IHRvIHByZXZlbnQKKwkgKiB0aGUgcXVldWVz IGZyZWV6aW5nIGlmIHRoZXkgYXJlIGZ1bGwKKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgcHJpdi0+ cnhfcmluZ19udW07IGkrKykKKwkJbmFwaV9zY2hlZHVsZSgmcHJpdi0+cnhfY3FbaV0tPm5hcGkp OworCiAJbmV0aWZfdHhfc3RhcnRfYWxsX3F1ZXVlcyhkZXYpOwogCW5ldGlmX2RldmljZV9hdHRh Y2goZGV2KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4 NC9lbl9wb3J0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX3BvcnQu YwppbmRleCA0MGQ2YzNjNmIzYTAuLjc3MmEyNGQ5ZmFjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9u ZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9wb3J0LmMKKysrIGIvZHJpdmVycy9uZXQvZXRo ZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9wb3J0LmMKQEAgLTEyNyw3ICsxMjcsNyBAQCBpbnQgbWx4 NF9lbl9EVU1QX0VUSF9TVEFUUyhzdHJ1Y3QgbWx4NF9lbl9kZXYgKm1kZXYsIHU4IHBvcnQsIHU4 IHJlc2V0KQogCQlyZXR1cm4gUFRSX0VSUihtYWlsYm94KTsKIAllcnIgPSBtbHg0X2NtZF9ib3go bWRldi0+ZGV2LCAwLCBtYWlsYm94LT5kbWEsIGluX21vZCwgMCwKIAkJCSAgIE1MWDRfQ01EX0RV TVBfRVRIX1NUQVRTLCBNTFg0X0NNRF9USU1FX0NMQVNTX0IsCi0JCQkgICBNTFg0X0NNRF9XUkFQ UEVEKTsKKwkJCSAgIE1MWDRfQ01EX05BVElWRSk7CiAJaWYgKGVycikKIAkJZ290byBvdXQ7CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fcnguYyBi L2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fcnguYwppbmRleCBmYTc0MmIx MTE1ZjkuLjc2ODc5YTFjY2E2ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVs bGFub3gvbWx4NC9lbl9yeC5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21s eDQvZW5fcnguYwpAQCAtODM1LDcgKzgzNSw3IEBAIGludCBtbHg0X2VuX3Byb2Nlc3NfcnhfY3Eo c3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG1seDRfZW5fY3EgKmNxLCBpbnQgYnVkCiAJ CQlnb3RvIG5leHQ7CiAJCX0KIAotICAgICAgICAgICAgICAgIGlmICh1bmxpa2VseShwcml2LT52 YWxpZGF0ZV9sb29wYmFjaykpIHsKKwkJaWYgKHVubGlrZWx5KHByaXYtPnZhbGlkYXRlX2xvb3Bi YWNrKSkgewogCQkJdmFsaWRhdGVfbG9vcGJhY2socHJpdiwgc2tiKTsKIAkJCWdvdG8gbmV4dDsK IAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9tY2cu YyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvbWNnLmMKaW5kZXggZDlhZmNm ZmVlNzM3Li41ODY2NDk5YTM4Y2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21l bGxhbm94L21seDQvbWNnLmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4 NC9tY2cuYwpAQCAtMTI5Niw3ICsxMjk2LDEyIEBAIEVYUE9SVF9TWU1CT0xfR1BMKG1seDRfbXVs dGljYXN0X2RldGFjaCk7CiBpbnQgbWx4NF9mbG93X3N0ZWVyX3Byb21pc2NfYWRkKHN0cnVjdCBt bHg0X2RldiAqZGV2LCB1OCBwb3J0LAogCQkJCXUzMiBxcG4sIGVudW0gbWx4NF9uZXRfdHJhbnNf cHJvbWlzY19tb2RlIG1vZGUpCiB7Ci0Jc3RydWN0IG1seDRfbmV0X3RyYW5zX3J1bGUgcnVsZTsK KwlzdHJ1Y3QgbWx4NF9uZXRfdHJhbnNfcnVsZSBydWxlID0geworCQkucXVldWVfbW9kZSA9IE1M WDRfTkVUX1RSQU5TX1FfRklGTywKKwkJLmV4Y2x1c2l2ZSA9IDAsCisJCS5hbGxvd19sb29wYmFj ayA9IDEsCisJfTsKKwogCXU2NCAqcmVnaWRfcDsKIAogCXN3aXRjaCAobW9kZSkgewpkaWZmIC0t Z2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9tbHg0LmggYi9kcml2ZXJz L25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L21seDQuaAppbmRleCAxZDhhZjczMzY4MDcuLjk3 MWJhMjViOTE5ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4 NC9tbHg0LmgKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9tbHg0LmgK QEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlIDxsaW51eC90aW1lci5oPgogI2luY2x1ZGUgPGxp bnV4L3NlbWFwaG9yZS5oPgogI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgorI2luY2x1ZGUg PGxpbnV4L3J3c2VtLmg+CiAKICNpbmNsdWRlIDxsaW51eC9tbHg0L2RldmljZS5oPgogI2luY2x1 ZGUgPGxpbnV4L21seDQvZHJpdmVyLmg+CkBAIC0xNTIsOSArMTUzLDEwIEBAIGVudW0gbWx4NF9y ZXNvdXJjZSB7CiAJUkVTX01UVCwKIAlSRVNfTUFDLAogCVJFU19WTEFOLAotCVJFU19FUSwKKwlS RVNfTlBPUlRfSUQsCiAJUkVTX0NPVU5URVIsCiAJUkVTX0ZTX1JVTEUsCisJUkVTX0VRLAogCU1M WDRfTlVNX09GX1JFU09VUkNFX1RZUEUKIH07CiAKQEAgLTU5OCw2ICs2MDAsNyBAQCBzdHJ1Y3Qg bWx4NF9jbWQgewogCXN0cnVjdCBtdXRleAkJc2xhdmVfY21kX211dGV4OwogCXN0cnVjdCBzZW1h cGhvcmUJcG9sbF9zZW07CiAJc3RydWN0IHNlbWFwaG9yZQlldmVudF9zZW07CisJc3RydWN0IHJ3 X3NlbWFwaG9yZQlzd2l0Y2hfc2VtOwogCWludAkJCW1heF9jbWRzOwogCXNwaW5sb2NrX3QJCWNv bnRleHRfbG9jazsKIAlpbnQJCQlmcmVlX2hlYWQ7CkBAIC0xMjQ2LDggKzEyNDksNiBAQCBpbnQg bWx4NF9TRVRfVkxBTl9GTFRSX3dyYXBwZXIoc3RydWN0IG1seDRfZGV2ICpkZXYsIGludCBzbGF2 ZSwKIAkJCSAgICAgICBzdHJ1Y3QgbWx4NF9jbWRfaW5mbyAqY21kKTsKIGludCBtbHg0X2NvbW1v bl9zZXRfdmxhbl9mbHRyKHN0cnVjdCBtbHg0X2RldiAqZGV2LCBpbnQgZnVuY3Rpb24sCiAJCQkJ ICAgICBpbnQgcG9ydCwgdm9pZCAqYnVmKTsKLWludCBtbHg0X2NvbW1vbl9kdW1wX2V0aF9zdGF0 cyhzdHJ1Y3QgbWx4NF9kZXYgKmRldiwgaW50IHNsYXZlLCB1MzIgaW5fbW9kLAotCQkJCXN0cnVj dCBtbHg0X2NtZF9tYWlsYm94ICpvdXRib3gpOwogaW50IG1seDRfRFVNUF9FVEhfU1RBVFNfd3Jh cHBlcihzdHJ1Y3QgbWx4NF9kZXYgKmRldiwgaW50IHNsYXZlLAogCQkJCSAgIHN0cnVjdCBtbHg0 X3ZoY3IgKnZoY3IsCiAJCQkJICAgc3RydWN0IG1seDRfY21kX21haWxib3ggKmluYm94LApkaWZm IC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9wb3J0LmMgYi9kcml2 ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L3BvcnQuYwppbmRleCA3YWI5NzE3NDg4NmQu LjU0OGRiMTNjYTEwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gv bWx4NC9wb3J0LmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9wb3J0 LmMKQEAgLTExNDMsMjQgKzExNDMsMTMgQEAgaW50IG1seDRfU0VUX1ZMQU5fRkxUUl93cmFwcGVy KHN0cnVjdCBtbHg0X2RldiAqZGV2LCBpbnQgc2xhdmUsCiAJcmV0dXJuIGVycjsKIH0KIAotaW50 IG1seDRfY29tbW9uX2R1bXBfZXRoX3N0YXRzKHN0cnVjdCBtbHg0X2RldiAqZGV2LCBpbnQgc2xh dmUsCi0JCQkgICAgICAgdTMyIGluX21vZCwgc3RydWN0IG1seDRfY21kX21haWxib3ggKm91dGJv eCkKLXsKLQlyZXR1cm4gbWx4NF9jbWRfYm94KGRldiwgMCwgb3V0Ym94LT5kbWEsIGluX21vZCwg MCwKLQkJCSAgICBNTFg0X0NNRF9EVU1QX0VUSF9TVEFUUywgTUxYNF9DTURfVElNRV9DTEFTU19C LAotCQkJICAgIE1MWDRfQ01EX05BVElWRSk7Ci19Ci0KIGludCBtbHg0X0RVTVBfRVRIX1NUQVRT X3dyYXBwZXIoc3RydWN0IG1seDRfZGV2ICpkZXYsIGludCBzbGF2ZSwKIAkJCQlzdHJ1Y3QgbWx4 NF92aGNyICp2aGNyLAogCQkJCXN0cnVjdCBtbHg0X2NtZF9tYWlsYm94ICppbmJveCwKIAkJCQlz dHJ1Y3QgbWx4NF9jbWRfbWFpbGJveCAqb3V0Ym94LAogCQkJCXN0cnVjdCBtbHg0X2NtZF9pbmZv ICpjbWQpCiB7Ci0JaWYgKHNsYXZlICE9IGRldi0+Y2Fwcy5mdW5jdGlvbikKLQkJcmV0dXJuIDA7 Ci0JcmV0dXJuIG1seDRfY29tbW9uX2R1bXBfZXRoX3N0YXRzKGRldiwgc2xhdmUsCi0JCQkJCSAg dmhjci0+aW5fbW9kaWZpZXIsIG91dGJveCk7CisJcmV0dXJuIDA7CiB9CiAKIHZvaWQgbWx4NF9z ZXRfc3RhdHNfYml0bWFwKHN0cnVjdCBtbHg0X2RldiAqZGV2LCB1NjQgKnN0YXRzX2JpdG1hcCkK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wYWdl YWxsb2MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wYWdlYWxs b2MuYwppbmRleCA3YmQ5NTgyMzAzZTguLjA3OTA5YWJjODhhMyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BhZ2VhbGxvYy5jCisrKyBiL2RyaXZl cnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wYWdlYWxsb2MuYwpAQCAtMjQzLDYg KzI0Myw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfNGsoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwg dTY0IGFkZHIpCiBzdGF0aWMgaW50IGFsbG9jX3N5c3RlbV9wYWdlKHN0cnVjdCBtbHg1X2NvcmVf ZGV2ICpkZXYsIHUxNiBmdW5jX2lkKQogewogCXN0cnVjdCBwYWdlICpwYWdlOworCXU2NCB6ZXJv X2FkZHIgPSAxOwogCXU2NCBhZGRyOwogCWludCBlcnI7CiAKQEAgLTI1MSwyNiArMjUyLDM1IEBA IHN0YXRpYyBpbnQgYWxsb2Nfc3lzdGVtX3BhZ2Uoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwg dTE2IGZ1bmNfaWQpCiAJCW1seDVfY29yZV93YXJuKGRldiwgImZhaWxlZCB0byBhbGxvY2F0ZSBw YWdlXG4iKTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQorbWFwOgogCWFkZHIgPSBkbWFfbWFwX3Bh Z2UoJmRldi0+cGRldi0+ZGV2LCBwYWdlLCAwLAogCQkJICAgIFBBR0VfU0laRSwgRE1BX0JJRElS RUNUSU9OQUwpOwogCWlmIChkbWFfbWFwcGluZ19lcnJvcigmZGV2LT5wZGV2LT5kZXYsIGFkZHIp KSB7CiAJCW1seDVfY29yZV93YXJuKGRldiwgImZhaWxlZCBkbWEgbWFwcGluZyBwYWdlXG4iKTsK IAkJZXJyID0gLUVOT01FTTsKLQkJZ290byBvdXRfYWxsb2M7CisJCWdvdG8gZXJyX21hcHBpbmc7 CisJfQorCisJLyogRmlybXdhcmUgZG9lc24ndCBzdXBwb3J0IHBhZ2Ugd2l0aCBwaHlzaWNhbCBh ZGRyZXNzIDAgKi8KKwlpZiAoYWRkciA9PSAwKSB7CisJCXplcm9fYWRkciA9IGFkZHI7CisJCWdv dG8gbWFwOwogCX0KKwogCWVyciA9IGluc2VydF9wYWdlKGRldiwgYWRkciwgcGFnZSwgZnVuY19p ZCk7CiAJaWYgKGVycikgewogCQltbHg1X2NvcmVfZXJyKGRldiwgImZhaWxlZCB0byB0cmFjayBh bGxvY2F0ZWQgcGFnZVxuIik7Ci0JCWdvdG8gb3V0X21hcHBpbmc7CisJCWRtYV91bm1hcF9wYWdl KCZkZXYtPnBkZXYtPmRldiwgYWRkciwgUEFHRV9TSVpFLAorCQkJICAgICAgIERNQV9CSURJUkVD VElPTkFMKTsKIAl9CiAKLQlyZXR1cm4gMDsKLQotb3V0X21hcHBpbmc6Ci0JZG1hX3VubWFwX3Bh Z2UoJmRldi0+cGRldi0+ZGV2LCBhZGRyLCBQQUdFX1NJWkUsIERNQV9CSURJUkVDVElPTkFMKTsK K2Vycl9tYXBwaW5nOgorCWlmIChlcnIpCisJCV9fZnJlZV9wYWdlKHBhZ2UpOwogCi1vdXRfYWxs b2M6Ci0JX19mcmVlX3BhZ2UocGFnZSk7CisJaWYgKHplcm9fYWRkciA9PSAwKQorCQlkbWFfdW5t YXBfcGFnZSgmZGV2LT5wZGV2LT5kZXYsIHplcm9fYWRkciwgUEFHRV9TSVpFLAorCQkJICAgICAg IERNQV9CSURJUkVDVElPTkFMKTsKIAogCXJldHVybiBlcnI7CiB9CmRpZmYgLS1naXQgYS9kcml2 ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQv cmVuZXNhcy9zaF9ldGguYwppbmRleCBjNjA3MDE1ZjA1MzguLmYxZWJiMWY1MGYxYyAxMDA2NDQK LS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9zaF9ldGguYworKysgYi9kcml2ZXJz L25ldC9ldGhlcm5ldC9yZW5lc2FzL3NoX2V0aC5jCkBAIC03OTUsNyArNzk1LDcgQEAgc3RhdGlj IHN0cnVjdCBzaF9ldGhfY3B1X2RhdGEgcjdzNzIxMDBfZGF0YSA9IHsKIAogCS5lY3NyX3ZhbHVl CT0gRUNTUl9JQ0QsCiAJLmVjc2lwcl92YWx1ZQk9IEVDU0lQUl9JQ0RJUCwKLQkuZWVzaXByX3Zh bHVlCT0gMHhmZjdmMDA5ZiwKKwkuZWVzaXByX3ZhbHVlCT0gMHhlNzdmMDA5ZiwKIAogCS50eF9j aGVjawk9IEVFU1JfVEMxIHwgRUVTUl9GVEMsCiAJLmVlc3JfZXJyX2NoZWNrCT0gRUVTUl9UV0Ix IHwgRUVTUl9UV0IgfCBFRVNSX1RBQlQgfCBFRVNSX1JBQlQgfApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9uZXQvZXRoZXJuZXQvdGkvY3Bzdy1waHktc2VsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90 aS9jcHN3LXBoeS1zZWwuYwppbmRleCBhYThiZjQ1ZTUzZGMuLjc3MjlkZTZlN2FiYSAxMDA2NDQK LS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzdy1waHktc2VsLmMKKysrIGIvZHJpdmVy cy9uZXQvZXRoZXJuZXQvdGkvY3Bzdy1waHktc2VsLmMKQEAgLTE1Miw5ICsxNTIsMTIgQEAgdm9p ZCBjcHN3X3BoeV9zZWwoc3RydWN0IGRldmljZSAqZGV2LCBwaHlfaW50ZXJmYWNlX3QgcGh5X21v ZGUsIGludCBzbGF2ZSkKIAl9CiAKIAlkZXYgPSBidXNfZmluZF9kZXZpY2UoJnBsYXRmb3JtX2J1 c190eXBlLCBOVUxMLCBub2RlLCBtYXRjaCk7CisJb2Zfbm9kZV9wdXQobm9kZSk7CiAJcHJpdiA9 IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwogCiAJcHJpdi0+Y3Bzd19waHlfc2VsKHByaXYsIHBoeV9t b2RlLCBzbGF2ZSk7CisKKwlwdXRfZGV2aWNlKGRldik7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChj cHN3X3BoeV9zZWwpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3 LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3LmMKaW5kZXggM2E4MzQxYzgzOWQ1Li5k N2UwNGQzZGFmMTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3cuYwor KysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3LmMKQEAgLTE5MzksNiArMTkzOSw3IEBA IHN0YXRpYyBpbnQgY3Bzd19wcm9iZV9kdChzdHJ1Y3QgY3Bzd19wbGF0Zm9ybV9kYXRhICpkYXRh LAogCQl9CiAJCXNucHJpbnRmKHNsYXZlX2RhdGEtPnBoeV9pZCwgc2l6ZW9mKHNsYXZlX2RhdGEt PnBoeV9pZCksCiAJCQkgUEhZX0lEX0ZNVCwgbWRpby0+bmFtZSwgcGh5aWQpOworCQlwdXRfZGV2 aWNlKCZtZGlvLT5kZXYpOwogCiAJCW1hY19hZGRyID0gb2ZfZ2V0X21hY19hZGRyZXNzKHNsYXZl X25vZGUpOwogCQlpZiAobWFjX2FkZHIpCkBAIC0yMTQwLDEzICsyMTQxLDEyIEBAIHN0YXRpYyBp bnQgY3Bzd19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCSAqLwogCXBtX3J1 bnRpbWVfZ2V0X3N5bmMoJnBkZXYtPmRldik7CiAJcHJpdi0+dmVyc2lvbiA9IHJlYWRsKCZwcml2 LT5yZWdzLT5pZF92ZXIpOwotCXBtX3J1bnRpbWVfcHV0X3N5bmMoJnBkZXYtPmRldik7CiAKIAly ZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDEpOwogCXBy aXYtPndyX3JlZ3MgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoJnBkZXYtPmRldiwgcmVzKTsKIAlp ZiAoSVNfRVJSKHByaXYtPndyX3JlZ3MpKSB7CiAJCXJldCA9IFBUUl9FUlIocHJpdi0+d3JfcmVn cyk7Ci0JCWdvdG8gY2xlYW5fcnVudGltZV9kaXNhYmxlX3JldDsKKwkJZ290byBjbGVhbl9wbV9y dW50aW1lX3B1dF9yZXQ7CiAJfQogCiAJbWVtc2V0KCZkbWFfcGFyYW1zLCAwLCBzaXplb2YoZG1h X3BhcmFtcykpOwpAQCAtMjE4Myw3ICsyMTgzLDcgQEAgc3RhdGljIGludCBjcHN3X3Byb2JlKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJZGVmYXVsdDoKIAkJZGV2X2Vycihwcml2LT5k ZXYsICJ1bmtub3duIHZlcnNpb24gMHglMDh4XG4iLCBwcml2LT52ZXJzaW9uKTsKIAkJcmV0ID0g LUVOT0RFVjsKLQkJZ290byBjbGVhbl9ydW50aW1lX2Rpc2FibGVfcmV0OworCQlnb3RvIGNsZWFu X3BtX3J1bnRpbWVfcHV0X3JldDsKIAl9CiAJZm9yIChpID0gMDsgaSA8IHByaXYtPmRhdGEuc2xh dmVzOyBpKyspIHsKIAkJc3RydWN0IGNwc3dfc2xhdmUgKnNsYXZlID0gJnByaXYtPnNsYXZlc1tp XTsKQEAgLTIyMTEsNyArMjIxMSw3IEBAIHN0YXRpYyBpbnQgY3Bzd19wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQogCWlmICghcHJpdi0+ZG1hKSB7CiAJCWRldl9lcnIocHJpdi0+ ZGV2LCAiZXJyb3IgaW5pdGlhbGl6aW5nIGRtYVxuIik7CiAJCXJldCA9IC1FTk9NRU07Ci0JCWdv dG8gY2xlYW5fcnVudGltZV9kaXNhYmxlX3JldDsKKwkJZ290byBjbGVhbl9wbV9ydW50aW1lX3B1 dF9yZXQ7CiAJfQogCiAJcHJpdi0+dHhjaCA9IGNwZG1hX2NoYW5fY3JlYXRlKHByaXYtPmRtYSwg dHhfY2hhbl9udW0oMCksCkBAIC0yMjc5LDE4ICsyMjc5LDI0IEBAIHN0YXRpYyBpbnQgY3Bzd19w cm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlyZXQgPSBjcHN3X3Byb2JlX2R1 YWxfZW1hYyhwZGV2LCBwcml2KTsKIAkJaWYgKHJldCkgewogCQkJY3Bzd19lcnIocHJpdiwgcHJv YmUsICJlcnJvciBwcm9iZSBzbGF2ZSAyIGVtYWMgaW50ZXJmYWNlXG4iKTsKLQkJCWdvdG8gY2xl YW5fYWxlX3JldDsKKwkJCWdvdG8gY2xlYW5fdW5yZWdpc3Rlcl9uZXRkZXZfcmV0OwogCQl9CiAJ fQogCisJcG1fcnVudGltZV9wdXQoJnBkZXYtPmRldik7CisKIAlyZXR1cm4gMDsKIAorY2xlYW5f dW5yZWdpc3Rlcl9uZXRkZXZfcmV0OgorCXVucmVnaXN0ZXJfbmV0ZGV2KG5kZXYpOwogY2xlYW5f YWxlX3JldDoKIAljcHN3X2FsZV9kZXN0cm95KHByaXYtPmFsZSk7CiBjbGVhbl9kbWFfcmV0Ogog CWNwZG1hX2NoYW5fZGVzdHJveShwcml2LT50eGNoKTsKIAljcGRtYV9jaGFuX2Rlc3Ryb3kocHJp di0+cnhjaCk7CiAJY3BkbWFfY3Rscl9kZXN0cm95KHByaXYtPmRtYSk7CitjbGVhbl9wbV9ydW50 aW1lX3B1dF9yZXQ6CisJcG1fcnVudGltZV9wdXRfc3luYygmcGRldi0+ZGV2KTsKIGNsZWFuX3J1 bnRpbWVfZGlzYWJsZV9yZXQ6CiAJcG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5kZXYpOwogY2xl YW5fbmRldl9yZXQ6CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9td2lmaWV4L2Nm ZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9td2lmaWV4L2NmZzgwMjExLmMKaW5kZXgg YjUxMTYxM2JiYTJkLi40ZTY3NGMxNmQwOTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL213aWZpZXgvY2ZnODAyMTEuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9td2lmaWV4 L2NmZzgwMjExLmMKQEAgLTE3MzQsOCArMTczNCw5IEBAIGRvbmU6CiAJCQlpc19zY2FubmluZ19y ZXF1aXJlZCA9IDE7CiAJCX0gZWxzZSB7CiAJCQlkZXZfZGJnKHByaXYtPmFkYXB0ZXItPmRldiwK LQkJCQkiaW5mbzogdHJ5aW5nIHRvIGFzc29jaWF0ZSB0byAnJXMnIGJzc2lkICVwTVxuIiwKLQkJ CQkoY2hhciAqKSByZXFfc3NpZC5zc2lkLCBic3MtPmJzc2lkKTsKKwkJCQkiaW5mbzogdHJ5aW5n IHRvIGFzc29jaWF0ZSB0byAnJS4qcycgYnNzaWQgJXBNXG4iLAorCQkJCXJlcV9zc2lkLnNzaWRf bGVuLCAoY2hhciAqKXJlcV9zc2lkLnNzaWQsCisJCQkJYnNzLT5ic3NpZCk7CiAJCQltZW1jcHko JnByaXYtPmNmZ19ic3NpZCwgYnNzLT5ic3NpZCwgRVRIX0FMRU4pOwogCQkJYnJlYWs7CiAJCX0K QEAgLTE3NzYsOCArMTc3Nyw4IEBAIG13aWZpZXhfY2ZnODAyMTFfY29ubmVjdChzdHJ1Y3Qgd2lw aHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9 CiAKLQl3aXBoeV9kYmcod2lwaHksICJpbmZvOiBUcnlpbmcgdG8gYXNzb2NpYXRlIHRvICVzIGFu ZCBic3NpZCAlcE1cbiIsCi0JCSAgKGNoYXIgKikgc21lLT5zc2lkLCBzbWUtPmJzc2lkKTsKKwl3 aXBoeV9kYmcod2lwaHksICJpbmZvOiBUcnlpbmcgdG8gYXNzb2NpYXRlIHRvICUuKnMgYW5kIGJz c2lkICVwTVxuIiwKKwkJICAoaW50KXNtZS0+c3NpZF9sZW4sIChjaGFyICopc21lLT5zc2lkLCBz bWUtPmJzc2lkKTsKIAogCXJldCA9IG13aWZpZXhfY2ZnODAyMTFfYXNzb2MocHJpdiwgc21lLT5z c2lkX2xlbiwgc21lLT5zc2lkLCBzbWUtPmJzc2lkLAogCQkJCSAgICAgcHJpdi0+YnNzX21vZGUs IHNtZS0+Y2hhbm5lbCwgc21lLCAwKTsKQEAgLTE5MDAsOCArMTkwMSw4IEBAIG13aWZpZXhfY2Zn ODAyMTFfam9pbl9pYnNzKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpk ZXYsCiAJCWdvdG8gZG9uZTsKIAl9CiAKLQl3aXBoeV9kYmcod2lwaHksICJpbmZvOiB0cnlpbmcg dG8gam9pbiB0byAlcyBhbmQgYnNzaWQgJXBNXG4iLAotCQkgIChjaGFyICopIHBhcmFtcy0+c3Np ZCwgcGFyYW1zLT5ic3NpZCk7CisJd2lwaHlfZGJnKHdpcGh5LCAiaW5mbzogdHJ5aW5nIHRvIGpv aW4gdG8gJS4qcyBhbmQgYnNzaWQgJXBNXG4iLAorCQkgIHBhcmFtcy0+c3NpZF9sZW4sIChjaGFy ICopcGFyYW1zLT5zc2lkLCBwYXJhbXMtPmJzc2lkKTsKIAogCW13aWZpZXhfc2V0X2lic3NfcGFy YW1zKHByaXYsIHBhcmFtcyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0 bHdpZmkvcmVnZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsd2lmaS9yZWdkLmMKaW5kZXgg YTRlYjliMjcxNDM4Li4yODI0NzRiZjI1OWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL3J0bHdpZmkvcmVnZC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvcmVn ZC5jCkBAIC00NCw2ICs0NCw3IEBAIHN0YXRpYyBzdHJ1Y3QgY291bnRyeV9jb2RlX3RvX2VudW1f cmQgYWxsQ291bnRyaWVzW10gPSB7CiAJe0NPVU5UUllfQ09ERV9HTE9CQUxfRE9NQUlOLCAiSlAi fSwKIAl7Q09VTlRSWV9DT0RFX1dPUkxEX1dJREVfMTMsICJFQyJ9LAogCXtDT1VOVFJZX0NPREVf VEVMRUNfTkVUR0VBUiwgIkVDIn0sCisJe0NPVU5UUllfQ09ERV9XT1JMRF9XSURFXzEzXzVHX0FM TCwgIlVTIn0sCiB9OwogCiAvKgpAQCAtMTMxLDYgKzEzMiwxNyBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGllZWU4MDIxMV9yZWdkb21haW4gcnRsX3JlZ2RvbV8xNF82MF82NCA9IHsKIAkJICAgICAg fQogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIHJ0bF9yZWdk b21fMTJfMTNfNWdfYWxsID0geworCS5uX3JlZ19ydWxlcyA9IDQsCisJLmFscGhhMiA9ICI5OSIs CisJLnJlZ19ydWxlcyA9IHsKKwkJCVJUTDgxOXhfMkdIWl9DSDAxXzExLAorCQkJUlRMODE5eF8y R0haX0NIMTJfMTMsCisJCQlSVEw4MTl4XzVHSFpfNTE1MF81MzUwLAorCQkJUlRMODE5eF81R0ha XzU0NzBfNTg1MCwKKwkJfQorfTsKKwogc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVn ZG9tYWluIHJ0bF9yZWdkb21fMTQgPSB7CiAJLm5fcmVnX3J1bGVzID0gMywKIAkuYWxwaGEyID0g Ijk5IiwKQEAgLTMxNSw5ICszMjcsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9y ZWdkb21haW4gKl9ydGxfcmVnZG9tYWluX3NlbGVjdCgKIAkJcmV0dXJuICZydGxfcmVnZG9tX25v X21pZGJhbmQ7CiAJY2FzZSBDT1VOVFJZX0NPREVfSUM6CiAJCXJldHVybiAmcnRsX3JlZ2RvbV8x MTsKLQljYXNlIENPVU5UUllfQ09ERV9FVFNJOgogCWNhc2UgQ09VTlRSWV9DT0RFX1RFTEVDX05F VEdFQVI6CiAJCXJldHVybiAmcnRsX3JlZ2RvbV82MF82NDsKKwljYXNlIENPVU5UUllfQ09ERV9F VFNJOgogCWNhc2UgQ09VTlRSWV9DT0RFX1NQQUlOOgogCWNhc2UgQ09VTlRSWV9DT0RFX0ZSQU5D RToKIAljYXNlIENPVU5UUllfQ09ERV9JU1JBRUw6CkBAIC0zMzAsNiArMzQyLDggQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluICpfcnRsX3JlZ2RvbWFpbl9zZWxlY3Qo CiAJCXJldHVybiAmcnRsX3JlZ2RvbV8xNF82MF82NDsKIAljYXNlIENPVU5UUllfQ09ERV9HTE9C QUxfRE9NQUlOOgogCQlyZXR1cm4gJnJ0bF9yZWdkb21fMTQ7CisJY2FzZSBDT1VOVFJZX0NPREVf V09STERfV0lERV8xM181R19BTEw6CisJCXJldHVybiAmcnRsX3JlZ2RvbV8xMl8xM181Z19hbGw7 CiAJZGVmYXVsdDoKIAkJcmV0dXJuICZydGxfcmVnZG9tX25vX21pZGJhbmQ7CiAJfQpAQCAtMzY3 LDYgKzM4MSwyNyBAQCBzdGF0aWMgc3RydWN0IGNvdW50cnlfY29kZV90b19lbnVtX3JkICpfcnRs X3JlZ2RfZmluZF9jb3VudHJ5KHUxNiBjb3VudHJ5Y29kZSkKIAlyZXR1cm4gTlVMTDsKIH0KIAor c3RhdGljIHU4IGNoYW5uZWxfcGxhbl90b19jb3VudHJ5X2NvZGUodTggY2hhbm5lbHBsYW4pCit7 CisJc3dpdGNoIChjaGFubmVscGxhbikgeworCWNhc2UgMHgyMDoKKwljYXNlIDB4MjE6CisJCXJl dHVybiBDT1VOVFJZX0NPREVfV09STERfV0lERV8xMzsKKwljYXNlIDB4MjI6CisJCXJldHVybiBD T1VOVFJZX0NPREVfSUM7CisJY2FzZSAweDI1OgorCQlyZXR1cm4gQ09VTlRSWV9DT0RFX0VUU0k7 CisJY2FzZSAweDMyOgorCQlyZXR1cm4gQ09VTlRSWV9DT0RFX1RFTEVDX05FVEdFQVI7CisJY2Fz ZSAweDQxOgorCQlyZXR1cm4gQ09VTlRSWV9DT0RFX0dMT0JBTF9ET01BSU47CisJY2FzZSAweDdm OgorCQlyZXR1cm4gQ09VTlRSWV9DT0RFX1dPUkxEX1dJREVfMTNfNUdfQUxMOworCWRlZmF1bHQ6 CisJCXJldHVybiBDT1VOVFJZX0NPREVfTUFYOyAvKkVycm9yKi8KKwl9Cit9CisKIGludCBydGxf cmVnZF9pbml0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQkgIHZvaWQgKCpyZWdfbm90aWZp ZXIpIChzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJCSAgICAgICBzdHJ1Y3QgcmVndWxhdG9yeV9y ZXF1ZXN0ICpyZXF1ZXN0KSkKQEAgLTM3OSwxMCArNDE0LDEyIEBAIGludCBydGxfcmVnZF9pbml0 KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQlyZXR1cm4gLUVJTlZBTDsKIAogCS8qIGluaXQg Y291bnRyeV9jb2RlIGZyb20gZWZ1c2UgY2hhbm5lbCBwbGFuICovCi0JcnRscHJpdi0+cmVnZC5j b3VudHJ5X2NvZGUgPSBydGxwcml2LT5lZnVzZS5jaGFubmVsX3BsYW47CisJcnRscHJpdi0+cmVn ZC5jb3VudHJ5X2NvZGUgPQorCQljaGFubmVsX3BsYW5fdG9fY291bnRyeV9jb2RlKHJ0bHByaXYt PmVmdXNlLmNoYW5uZWxfcGxhbik7CiAKLQlSVF9UUkFDRShydGxwcml2LCBDT01QX1JFR0QsIERC R19UUkFDRSwKLQkJICJydGw6IEVFUFJPTSByZWdkb21haW46IDB4JTB4XG4iLCBydGxwcml2LT5y ZWdkLmNvdW50cnlfY29kZSk7CisJUlRfVFJBQ0UocnRscHJpdiwgQ09NUF9SRUdELCBEQkdfRE1F U0csCisJCSAicnRsOiBFRVBST00gcmVnZG9tYWluOiAweCUweCBjb251bnRyeSBjb2RlOiAlZFxu IiwKKwkJIHJ0bHByaXYtPmVmdXNlLmNoYW5uZWxfcGxhbiwgcnRscHJpdi0+cmVnZC5jb3VudHJ5 X2NvZGUpOwogCiAJaWYgKHJ0bHByaXYtPnJlZ2QuY291bnRyeV9jb2RlID49IENPVU5UUllfQ09E RV9NQVgpIHsKIAkJUlRfVFJBQ0UocnRscHJpdiwgQ09NUF9SRUdELCBEQkdfRE1FU0csCmRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL3JlZ2QuaCBiL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL3J0bHdpZmkvcmVnZC5oCmluZGV4IDRlMWY0ZjAwZTZlOS4uMDIxMDI1MzAxOGI2 IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL3JlZ2QuaAorKysgYi9k cml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL3JlZ2QuaApAQCAtNDksNiArNDksNyBAQCBlbnVt IGNvdW50cnlfY29kZV90eXBlX3QgewogCUNPVU5UUllfQ09ERV9HTE9CQUxfRE9NQUlOID0gMTAs CiAJQ09VTlRSWV9DT0RFX1dPUkxEX1dJREVfMTMgPSAxMSwKIAlDT1VOVFJZX0NPREVfVEVMRUNf TkVUR0VBUiA9IDEyLAorCUNPVU5UUllfQ09ERV9XT1JMRF9XSURFXzEzXzVHX0FMTCA9IDEzLAog CiAJLyphZGQgbmV3IGNoYW5uZWwgcGxhbiBhYm92ZSB0aGlzIGxpbmUgKi8KIAlDT1VOVFJZX0NP REVfTUFYCmRpZmYgLS1naXQgYS9kcml2ZXJzL29mL29mX21kaW8uYyBiL2RyaXZlcnMvb2Yvb2Zf bWRpby5jCmluZGV4IDQwMWIyNDUzZGE0NS4uYTg5Njk5YjVlMjJmIDEwMDY0NAotLS0gYS9kcml2 ZXJzL29mL29mX21kaW8uYworKysgYi9kcml2ZXJzL29mL29mX21kaW8uYwpAQCAtMjkxLDggKzI5 MSwxMSBAQCBpbnQgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoc3RydWN0IGRldmljZV9ub2Rl ICpucCkKIAkJc3RhdHVzLmxpbmsgPSAxOwogCQlzdGF0dXMuZHVwbGV4ID0gb2ZfcHJvcGVydHlf cmVhZF9ib29sKGZpeGVkX2xpbmtfbm9kZSwKIAkJCQkJCSAgICAgICJmdWxsLWR1cGxleCIpOwot CQlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoZml4ZWRfbGlua19ub2RlLCAic3BlZWQiLCAmc3Rh dHVzLnNwZWVkKSkKKwkJaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKGZpeGVkX2xpbmtfbm9kZSwg InNwZWVkIiwKKwkJCQkJICZzdGF0dXMuc3BlZWQpKSB7CisJCQlvZl9ub2RlX3B1dChmaXhlZF9s aW5rX25vZGUpOwogCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KIAkJc3RhdHVzLnBhdXNlID0gb2Zf cHJvcGVydHlfcmVhZF9ib29sKGZpeGVkX2xpbmtfbm9kZSwgInBhdXNlIik7CiAJCXN0YXR1cy5h c3ltX3BhdXNlID0gb2ZfcHJvcGVydHlfcmVhZF9ib29sKGZpeGVkX2xpbmtfbm9kZSwKIAkJCQkJ CQkgICJhc3ltLXBhdXNlIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9xdWlya3MuYyBiL2Ry aXZlcnMvcGNpL3F1aXJrcy5jCmluZGV4IDg5ZWUzODg2OTMzNC4uMDkyMTViMDM2ZTk0IDEwMDY0 NAotLS0gYS9kcml2ZXJzL3BjaS9xdWlya3MuYworKysgYi9kcml2ZXJzL3BjaS9xdWlya3MuYwpA QCAtMzA4Myw2ICszMDgzLDcgQEAgc3RhdGljIHZvaWQgcXVpcmtfbm9fYnVzX3Jlc2V0KHN0cnVj dCBwY2lfZGV2ICpkZXYpCiBERUNMQVJFX1BDSV9GSVhVUF9IRUFERVIoUENJX1ZFTkRPUl9JRF9B VEhFUk9TLCAweDAwMzAsIHF1aXJrX25vX2J1c19yZXNldCk7CiBERUNMQVJFX1BDSV9GSVhVUF9I RUFERVIoUENJX1ZFTkRPUl9JRF9BVEhFUk9TLCAweDAwMzIsIHF1aXJrX25vX2J1c19yZXNldCk7 CiBERUNMQVJFX1BDSV9GSVhVUF9IRUFERVIoUENJX1ZFTkRPUl9JRF9BVEhFUk9TLCAweDAwM2Ms IHF1aXJrX25vX2J1c19yZXNldCk7CitERUNMQVJFX1BDSV9GSVhVUF9IRUFERVIoUENJX1ZFTkRP Ul9JRF9BVEhFUk9TLCAweDAwMzMsIHF1aXJrX25vX2J1c19yZXNldCk7CiAKIHN0YXRpYyB2b2lk IHBjaV9kb19maXh1cHMoc3RydWN0IHBjaV9kZXYgKmRldiwgc3RydWN0IHBjaV9maXh1cCAqZiwK IAkJCSAgc3RydWN0IHBjaV9maXh1cCAqZW5kKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcGh5 LXN1bjRpLXVzYi5jIGIvZHJpdmVycy9waHkvcGh5LXN1bjRpLXVzYi5jCmluZGV4IDExNWQ4ZDUx OTBkNS4uNmU0NmEwMDU1ODg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BoeS9waHktc3VuNGktdXNi LmMKKysrIGIvZHJpdmVycy9waHkvcGh5LXN1bjRpLXVzYi5jCkBAIC0zMiw2ICszMiw3IEBACiAj aW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CiAjaW5jbHVkZSA8bGludXgvcmVndWxh dG9yL2NvbnN1bWVyLmg+CiAjaW5jbHVkZSA8bGludXgvcmVzZXQuaD4KKyNpbmNsdWRlIDxsaW51 eC9zcGlubG9jay5oPgogCiAjZGVmaW5lIFJFR19JU0NSCQkJMHgwMAogI2RlZmluZSBSRUdfUEhZ Q1RMCQkJMHgwNApAQCAtNjIsNyArNjMsNyBAQAogCiBzdHJ1Y3Qgc3VuNGlfdXNiX3BoeV9kYXRh IHsKIAl2b2lkIF9faW9tZW0gKmJhc2U7Ci0Jc3RydWN0IG11dGV4IG11dGV4OworCXNwaW5sb2Nr X3QgcmVnX2xvY2s7IC8qIGd1YXJkIGFjY2VzcyB0byBwaHljdGwgcmVnICovCiAJaW50IG51bV9w aHlzOwogCXUzMiBkaXNjX3RocmVzaDsKIAlzdHJ1Y3Qgc3VuNGlfdXNiX3BoeSB7CkBAIC04Myw5 ICs4NCwxMCBAQCBzdGF0aWMgdm9pZCBzdW40aV91c2JfcGh5X3dyaXRlKHN0cnVjdCBzdW40aV91 c2JfcGh5ICpwaHksIHUzMiBhZGRyLCB1MzIgZGF0YSwKIHsKIAlzdHJ1Y3Qgc3VuNGlfdXNiX3Bo eV9kYXRhICpwaHlfZGF0YSA9IHRvX3N1bjRpX3VzYl9waHlfZGF0YShwaHkpOwogCXUzMiB0ZW1w LCB1c2JjX2JpdCA9IEJJVChwaHktPmluZGV4ICogMik7CisJdW5zaWduZWQgbG9uZyBmbGFnczsK IAlpbnQgaTsKIAotCW11dGV4X2xvY2soJnBoeV9kYXRhLT5tdXRleCk7CisJc3Bpbl9sb2NrX2ly cXNhdmUoJnBoeV9kYXRhLT5yZWdfbG9jaywgZmxhZ3MpOwogCiAJZm9yIChpID0gMDsgaSA8IGxl bjsgaSsrKSB7CiAJCXRlbXAgPSByZWFkbChwaHlfZGF0YS0+YmFzZSArIFJFR19QSFlDVEwpOwpA QCAtMTE3LDcgKzExOSw4IEBAIHN0YXRpYyB2b2lkIHN1bjRpX3VzYl9waHlfd3JpdGUoc3RydWN0 IHN1bjRpX3VzYl9waHkgKnBoeSwgdTMyIGFkZHIsIHUzMiBkYXRhLAogCiAJCWRhdGEgPj49IDE7 CiAJfQotCW11dGV4X3VubG9jaygmcGh5X2RhdGEtPm11dGV4KTsKKworCXNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJnBoeV9kYXRhLT5yZWdfbG9jaywgZmxhZ3MpOwogfQogCiBzdGF0aWMgdm9pZCBz dW40aV91c2JfcGh5X3Bhc3NieShzdHJ1Y3Qgc3VuNGlfdXNiX3BoeSAqcGh5LCBpbnQgZW5hYmxl KQpAQCAtMjMyLDcgKzIzNSw3IEBAIHN0YXRpYyBpbnQgc3VuNGlfdXNiX3BoeV9wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCWlmICghZGF0YSkKIAkJcmV0dXJuIC1FTk9NRU07 CiAKLQltdXRleF9pbml0KCZkYXRhLT5tdXRleCk7CisJc3Bpbl9sb2NrX2luaXQoJmRhdGEtPnJl Z19sb2NrKTsKIAogCWlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShucCwgImFsbHdpbm5lcixz dW41aS1hMTMtdXNiLXBoeSIpKQogCQlkYXRhLT5udW1fcGh5cyA9IDI7CmRpZmYgLS1naXQgYS9k cml2ZXJzL3B3bS9jb3JlLmMgYi9kcml2ZXJzL3B3bS9jb3JlLmMKaW5kZXggZDJjMzU5MjBmZjA4 Li44MjViNWU0OGJlMDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcHdtL2NvcmUuYworKysgYi9kcml2 ZXJzL3B3bS9jb3JlLmMKQEAgLTI5Myw2ICsyOTMsOCBAQCBpbnQgcHdtY2hpcF9yZW1vdmUoc3Ry dWN0IHB3bV9jaGlwICpjaGlwKQogCXVuc2lnbmVkIGludCBpOwogCWludCByZXQgPSAwOwogCisJ cHdtY2hpcF9zeXNmc191bmV4cG9ydF9jaGlsZHJlbihjaGlwKTsKKwogCW11dGV4X2xvY2soJnB3 bV9sb2NrKTsKIAogCWZvciAoaSA9IDA7IGkgPCBjaGlwLT5ucHdtOyBpKyspIHsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvcHdtL3N5c2ZzLmMgYi9kcml2ZXJzL3B3bS9zeXNmcy5jCmluZGV4IDRiZDBj NjM5ZTE2ZC4uNWI2NGYwOWNlMzE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3B3bS9zeXNmcy5jCisr KyBiL2RyaXZlcnMvcHdtL3N5c2ZzLmMKQEAgLTM0MCw2ICszNDAsMjYgQEAgdm9pZCBwd21jaGlw X3N5c2ZzX3VuZXhwb3J0KHN0cnVjdCBwd21fY2hpcCAqY2hpcCkKIAl9CiB9CiAKK3ZvaWQgcHdt Y2hpcF9zeXNmc191bmV4cG9ydF9jaGlsZHJlbihzdHJ1Y3QgcHdtX2NoaXAgKmNoaXApCit7CisJ c3RydWN0IGRldmljZSAqcGFyZW50OworCXVuc2lnbmVkIGludCBpOworCisJcGFyZW50ID0gY2xh c3NfZmluZF9kZXZpY2UoJnB3bV9jbGFzcywgTlVMTCwgY2hpcCwKKwkJCQkgICBwd21jaGlwX3N5 c2ZzX21hdGNoKTsKKwlpZiAoIXBhcmVudCkKKwkJcmV0dXJuOworCisJZm9yIChpID0gMDsgaSA8 IGNoaXAtPm5wd207IGkrKykgeworCQlzdHJ1Y3QgcHdtX2RldmljZSAqcHdtID0gJmNoaXAtPnB3 bXNbaV07CisKKwkJaWYgKHRlc3RfYml0KFBXTUZfRVhQT1JURUQsICZwd20tPmZsYWdzKSkKKwkJ CXB3bV91bmV4cG9ydF9jaGlsZChwYXJlbnQsIHB3bSk7CisJfQorCisJcHV0X2RldmljZShwYXJl bnQpOworfQorCiBzdGF0aWMgaW50IF9faW5pdCBwd21fc3lzZnNfaW5pdCh2b2lkKQogewogCXJl dHVybiBjbGFzc19yZWdpc3RlcigmcHdtX2NsYXNzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcmVn dWxhdG9yL3RwczY1OTEwLXJlZ3VsYXRvci5jIGIvZHJpdmVycy9yZWd1bGF0b3IvdHBzNjU5MTAt cmVndWxhdG9yLmMKaW5kZXggZmE3ZGI4ODQ3NTc4Li45MjY0N2RjNzM0M2EgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvcmVndWxhdG9yL3RwczY1OTEwLXJlZ3VsYXRvci5jCisrKyBiL2RyaXZlcnMvcmVn dWxhdG9yL3RwczY1OTEwLXJlZ3VsYXRvci5jCkBAIC0xMTExLDYgKzExMTEsMTIgQEAgc3RhdGlj IGludCB0cHM2NTkxMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlwbWlj LT5udW1fcmVndWxhdG9ycyA9IEFSUkFZX1NJWkUodHBzNjU5MTBfcmVncyk7CiAJCXBtaWMtPmV4 dF9zbGVlcF9jb250cm9sID0gdHBzNjU5MTBfZXh0X3NsZWVwX2NvbnRyb2w7CiAJCWluZm8gPSB0 cHM2NTkxMF9yZWdzOworCQkvKiBXb3JrIGFyb3VuZCBzaWxpY29uIGVycmF0dW0gU1dDWjAxMDog b3V0cHV0IHByb2dyYW1tZWQKKwkJICogdm9sdGFnZSBsZXZlbCBjYW4gZ28gaGlnaGVyIHRoYW4g ZXhwZWN0ZWQgb3IgY3Jhc2gKKwkJICogV29ya2Fyb3VuZDogdXNlIG5vIHN5bmNocm9uaXphdGlv biBvZiBEQ0RDIGNsb2NrcworCQkgKi8KKwkJdHBzNjU5MTBfcmVnX2NsZWFyX2JpdHMocG1pYy0+ bWZkLCBUUFM2NTkxMF9EQ0RDQ1RSTCwKKwkJCQkJRENEQ0NUUkxfRENEQ0NLU1lOQ19NQVNLKTsK IAkJYnJlYWs7CiAJY2FzZSBUUFM2NTkxMToKIAkJcG1pYy0+Z2V0X2N0cmxfcmVnID0gJnRwczY1 OTExX2dldF9jdHJsX3JlZ2lzdGVyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2NoYXIvY29u MzI3MC5jIGIvZHJpdmVycy9zMzkwL2NoYXIvY29uMzI3MC5jCmluZGV4IDc1ZmZlOTk4MGMzZS4u YTY0ODc1Mzg1Y2JmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvY2hhci9jb24zMjcwLmMKKysr IGIvZHJpdmVycy9zMzkwL2NoYXIvY29uMzI3MC5jCkBAIC0xMjQsNyArMTI0LDEyIEBAIGNvbjMy NzBfY3JlYXRlX3N0YXR1cyhzdHJ1Y3QgY29uMzI3MCAqY3ApCiBzdGF0aWMgdm9pZAogY29uMzI3 MF91cGRhdGVfc3RyaW5nKHN0cnVjdCBjb24zMjcwICpjcCwgc3RydWN0IHN0cmluZyAqcywgaW50 IG5yKQogewotCWlmIChzLT5sZW4gPj0gY3AtPnZpZXcuY29scyAtIDUpCisJaWYgKHMtPmxlbiA8 IDQpIHsKKwkJLyogVGhpcyBpbmRpY2F0ZXMgYSBidWcsIGJ1dCBwcmludGluZyBhIHdhcm5pbmcg d291bGQKKwkJICogY2F1c2UgYSBkZWFkbG9jay4gKi8KKwkJcmV0dXJuOworCX0KKwlpZiAocy0+ c3RyaW5nW3MtPmxlbiAtIDRdICE9IFRPX1JBKQogCQlyZXR1cm47CiAJcmF3MzI3MF9idWZmZXJf YWRkcmVzcyhjcC0+dmlldy5kZXYsIHMtPnN0cmluZyArIHMtPmxlbiAtIDMsCiAJCQkgICAgICAg Y3AtPnZpZXcuY29scyAqIChuciArIDEpKTsKQEAgLTQ1NywxMSArNDYyLDExIEBAIGNvbjMyNzBf Y2xpbmVfZW5kKHN0cnVjdCBjb24zMjcwICpjcCkKIAkJY3AtPmNsaW5lLT5sZW4gKyA0IDogY3At PnZpZXcuY29sczsKIAlzID0gY29uMzI3MF9hbGxvY19zdHJpbmcoY3AsIHNpemUpOwogCW1lbWNw eShzLT5zdHJpbmcsIGNwLT5jbGluZS0+c3RyaW5nLCBjcC0+Y2xpbmUtPmxlbik7Ci0JaWYgKHMt PmxlbiA8IGNwLT52aWV3LmNvbHMgLSA1KSB7CisJaWYgKGNwLT5jbGluZS0+bGVuIDwgY3AtPnZp ZXcuY29scyAtIDUpIHsKIAkJcy0+c3RyaW5nW3MtPmxlbiAtIDRdID0gVE9fUkE7CiAJCXMtPnN0 cmluZ1tzLT5sZW4gLSAxXSA9IDA7CiAJfSBlbHNlIHsKLQkJd2hpbGUgKC0tc2l6ZSA+IGNwLT5j bGluZS0+bGVuKQorCQl3aGlsZSAoLS1zaXplID49IGNwLT5jbGluZS0+bGVuKQogCQkJcy0+c3Ry aW5nW3NpemVdID0gY3AtPnZpZXcuYXNjZWJjWycgJ107CiAJfQogCS8qIFJlcGxhY2UgY2xpbmUg d2l0aCBhbGxvY2F0ZWQgbGluZSBzIGFuZCByZXNldCBjbGluZS4gKi8KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvczM5MC9zY3NpL3pmY3BfZGJmLmMgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2RiZi5j CmluZGV4IDBjYTY0NDg0Y2ZhMy4uN2IxZmJkMzAzYzI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Mz OTAvc2NzaS96ZmNwX2RiZi5jCisrKyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZGJmLmMKQEAg LTMsNyArMyw3IEBACiAgKgogICogRGVidWcgdHJhY2VzIGZvciB6ZmNwLgogICoKLSAqIENvcHly aWdodCBJQk0gQ29ycC4gMjAwMiwgMjAxMworICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyLCAy MDE2CiAgKi8KIAogI2RlZmluZSBLTVNHX0NPTVBPTkVOVCAiemZjcCIKQEAgLTY1LDcgKzY1LDcg QEAgdm9pZCB6ZmNwX2RiZl9wbF93cml0ZShzdHJ1Y3QgemZjcF9kYmYgKmRiZiwgdm9pZCAqZGF0 YSwgdTE2IGxlbmd0aCwgY2hhciAqYXJlYSwKICAqIEB0YWc6IHRhZyBpbmRpY2F0aW5nIHdoaWNo IGtpbmQgb2YgdW5zb2xpY2l0ZWQgc3RhdHVzIGhhcyBiZWVuIHJlY2VpdmVkCiAgKiBAcmVxOiBy ZXF1ZXN0IGZvciB3aGljaCBhIHJlc3BvbnNlIHdhcyByZWNlaXZlZAogICovCi12b2lkIHpmY3Bf ZGJmX2hiYV9mc2ZfcmVzKGNoYXIgKnRhZywgc3RydWN0IHpmY3BfZnNmX3JlcSAqcmVxKQordm9p ZCB6ZmNwX2RiZl9oYmFfZnNmX3JlcyhjaGFyICp0YWcsIGludCBsZXZlbCwgc3RydWN0IHpmY3Bf ZnNmX3JlcSAqcmVxKQogewogCXN0cnVjdCB6ZmNwX2RiZiAqZGJmID0gcmVxLT5hZGFwdGVyLT5k YmY7CiAJc3RydWN0IGZzZl9xdGNiX3ByZWZpeCAqcV9wcmVmID0gJnJlcS0+cXRjYi0+cHJlZml4 OwpAQCAtODUsNiArODUsOCBAQCB2b2lkIHpmY3BfZGJmX2hiYV9mc2ZfcmVzKGNoYXIgKnRhZywg c3RydWN0IHpmY3BfZnNmX3JlcSAqcmVxKQogCXJlYy0+dS5yZXMucmVxX2lzc3VlZCA9IHJlcS0+ aXNzdWVkOwogCXJlYy0+dS5yZXMucHJvdF9zdGF0dXMgPSBxX3ByZWYtPnByb3Rfc3RhdHVzOwog CXJlYy0+dS5yZXMuZnNmX3N0YXR1cyA9IHFfaGVhZC0+ZnNmX3N0YXR1czsKKwlyZWMtPnUucmVz LnBvcnRfaGFuZGxlID0gcV9oZWFkLT5wb3J0X2hhbmRsZTsKKwlyZWMtPnUucmVzLmx1bl9oYW5k bGUgPSBxX2hlYWQtPmx1bl9oYW5kbGU7CiAKIAltZW1jcHkocmVjLT51LnJlcy5wcm90X3N0YXR1 c19xdWFsLCAmcV9wcmVmLT5wcm90X3N0YXR1c19xdWFsLAogCSAgICAgICBGU0ZfUFJPVF9TVEFU VVNfUVVBTF9TSVpFKTsKQEAgLTk3LDcgKzk5LDcgQEAgdm9pZCB6ZmNwX2RiZl9oYmFfZnNmX3Jl cyhjaGFyICp0YWcsIHN0cnVjdCB6ZmNwX2ZzZl9yZXEgKnJlcSkKIAkJCQkgIHJlYy0+cGxfbGVu LCAiZnNmX3JlcyIsIHJlcS0+cmVxX2lkKTsKIAl9CiAKLQlkZWJ1Z19ldmVudChkYmYtPmhiYSwg MSwgcmVjLCBzaXplb2YoKnJlYykpOworCWRlYnVnX2V2ZW50KGRiZi0+aGJhLCBsZXZlbCwgcmVj LCBzaXplb2YoKnJlYykpOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRiZi0+aGJhX2xvY2ss IGZsYWdzKTsKIH0KIApAQCAtMjQxLDcgKzI0Myw4IEBAIHN0YXRpYyB2b2lkIHpmY3BfZGJmX3Nl dF9jb21tb24oc3RydWN0IHpmY3BfZGJmX3JlYyAqcmVjLAogCWlmIChzZGV2KSB7CiAJCXJlYy0+ bHVuX3N0YXR1cyA9IGF0b21pY19yZWFkKCZzZGV2X3RvX3pmY3Aoc2RldiktPnN0YXR1cyk7CiAJ CXJlYy0+bHVuID0gemZjcF9zY3NpX2Rldl9sdW4oc2Rldik7Ci0JfQorCX0gZWxzZQorCQlyZWMt Pmx1biA9IFpGQ1BfREJGX0lOVkFMSURfTFVOOwogfQogCiAvKioKQEAgLTMyMCwxMyArMzIzLDQ4 IEBAIHZvaWQgemZjcF9kYmZfcmVjX3J1bihjaGFyICp0YWcsIHN0cnVjdCB6ZmNwX2VycF9hY3Rp b24gKmVycCkKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkYmYtPnJlY19sb2NrLCBmbGFncyk7 CiB9CiAKKy8qKgorICogemZjcF9kYmZfcmVjX3J1bl93a2EgLSB0cmFjZSB3a2EgcG9ydCBldmVu dCB3aXRoIGluZm8gbGlrZSBydW5uaW5nIHJlY292ZXJ5CisgKiBAdGFnOiBpZGVudGlmaWVyIGZv ciBldmVudAorICogQHdrYV9wb3J0OiB3ZWxsIGtub3duIGFkZHJlc3MgcG9ydAorICogQHJlcV9p ZDogcmVxdWVzdCBJRCB0byBjb3JyZWxhdGUgd2l0aCBwb3RlbnRpYWwgSEJBIHRyYWNlIHJlY29y ZAorICovCit2b2lkIHpmY3BfZGJmX3JlY19ydW5fd2thKGNoYXIgKnRhZywgc3RydWN0IHpmY3Bf ZmNfd2thX3BvcnQgKndrYV9wb3J0LAorCQkJICB1NjQgcmVxX2lkKQoreworCXN0cnVjdCB6ZmNw X2RiZiAqZGJmID0gd2thX3BvcnQtPmFkYXB0ZXItPmRiZjsKKwlzdHJ1Y3QgemZjcF9kYmZfcmVj ICpyZWMgPSAmZGJmLT5yZWNfYnVmOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xv Y2tfaXJxc2F2ZSgmZGJmLT5yZWNfbG9jaywgZmxhZ3MpOworCW1lbXNldChyZWMsIDAsIHNpemVv ZigqcmVjKSk7CisKKwlyZWMtPmlkID0gWkZDUF9EQkZfUkVDX1JVTjsKKwltZW1jcHkocmVjLT50 YWcsIHRhZywgWkZDUF9EQkZfVEFHX0xFTik7CisJcmVjLT5wb3J0X3N0YXR1cyA9IHdrYV9wb3J0 LT5zdGF0dXM7CisJcmVjLT5kX2lkID0gd2thX3BvcnQtPmRfaWQ7CisJcmVjLT5sdW4gPSBaRkNQ X0RCRl9JTlZBTElEX0xVTjsKKworCXJlYy0+dS5ydW4uZnNmX3JlcV9pZCA9IHJlcV9pZDsKKwly ZWMtPnUucnVuLnJlY19zdGF0dXMgPSB+MDsKKwlyZWMtPnUucnVuLnJlY19zdGVwID0gfjA7CisJ cmVjLT51LnJ1bi5yZWNfYWN0aW9uID0gfjA7CisJcmVjLT51LnJ1bi5yZWNfY291bnQgPSB+MDsK KworCWRlYnVnX2V2ZW50KGRiZi0+cmVjLCAxLCByZWMsIHNpemVvZigqcmVjKSk7CisJc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmZGJmLT5yZWNfbG9jaywgZmxhZ3MpOworfQorCiBzdGF0aWMgaW5s aW5lCi12b2lkIHpmY3BfZGJmX3NhbihjaGFyICp0YWcsIHN0cnVjdCB6ZmNwX2RiZiAqZGJmLCB2 b2lkICpkYXRhLCB1OCBpZCwgdTE2IGxlbiwKLQkJICB1NjQgcmVxX2lkLCB1MzIgZF9pZCkKK3Zv aWQgemZjcF9kYmZfc2FuKGNoYXIgKnRhZywgc3RydWN0IHpmY3BfZGJmICpkYmYsCisJCSAgY2hh ciAqcGF5dGFnLCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnLCB1OCBpZCwgdTE2IGxlbiwKKwkJICB1 NjQgcmVxX2lkLCB1MzIgZF9pZCwgdTE2IGNhcF9sZW4pCiB7CiAJc3RydWN0IHpmY3BfZGJmX3Nh biAqcmVjID0gJmRiZi0+c2FuX2J1ZjsKIAl1MTYgcmVjX2xlbjsKIAl1bnNpZ25lZCBsb25nIGZs YWdzOworCXN0cnVjdCB6ZmNwX2RiZl9wYXkgKnBheWxvYWQgPSAmZGJmLT5wYXlfYnVmOworCXUx NiBwYXlfc3VtID0gMDsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZkYmYtPnNhbl9sb2NrLCBmbGFn cyk7CiAJbWVtc2V0KHJlYywgMCwgc2l6ZW9mKCpyZWMpKTsKQEAgLTMzNCwxMCArMzcyLDQxIEBA IHZvaWQgemZjcF9kYmZfc2FuKGNoYXIgKnRhZywgc3RydWN0IHpmY3BfZGJmICpkYmYsIHZvaWQg KmRhdGEsIHU4IGlkLCB1MTYgbGVuLAogCXJlYy0+aWQgPSBpZDsKIAlyZWMtPmZzZl9yZXFfaWQg PSByZXFfaWQ7CiAJcmVjLT5kX2lkID0gZF9pZDsKLQlyZWNfbGVuID0gbWluKGxlbiwgKHUxNila RkNQX0RCRl9TQU5fTUFYX1BBWUxPQUQpOwotCW1lbWNweShyZWMtPnBheWxvYWQsIGRhdGEsIHJl Y19sZW4pOwogCW1lbWNweShyZWMtPnRhZywgdGFnLCBaRkNQX0RCRl9UQUdfTEVOKTsKKwlyZWMt PnBsX2xlbiA9IGxlbjsgLyogZnVsbCBsZW5ndGggZXZlbiBpZiB3ZSBjYXAgcGF5IGJlbG93ICov CisJaWYgKCFzZykKKwkJZ290byBvdXQ7CisJcmVjX2xlbiA9IG1pbl90KHVuc2lnbmVkIGludCwg c2ctPmxlbmd0aCwgWkZDUF9EQkZfU0FOX01BWF9QQVlMT0FEKTsKKwltZW1jcHkocmVjLT5wYXls b2FkLCBzZ192aXJ0KHNnKSwgcmVjX2xlbik7IC8qIHBhcnQgb2YgMXN0IHNnIGVudHJ5ICovCisJ aWYgKGxlbiA8PSByZWNfbGVuKQorCQlnb3RvIG91dDsgLyogc2tpcCBwYXkgcmVjb3JkIGlmIGZ1 bGwgY29udGVudCBpbiByZWMtPnBheWxvYWQgKi8KKworCS8qIGlmIChsZW4gPiByZWNfbGVuKToK KwkgKiBkdW1wIGRhdGEgdXAgdG8gY2FwX2xlbiBpZ25vcmluZyBzbWFsbCBkdXBsaWNhdGUgaW4g cmVjLT5wYXlsb2FkCisJICovCisJc3Bpbl9sb2NrKCZkYmYtPnBheV9sb2NrKTsKKwltZW1zZXQo cGF5bG9hZCwgMCwgc2l6ZW9mKCpwYXlsb2FkKSk7CisJbWVtY3B5KHBheWxvYWQtPmFyZWEsIHBh eXRhZywgWkZDUF9EQkZfVEFHX0xFTik7CisJcGF5bG9hZC0+ZnNmX3JlcV9pZCA9IHJlcV9pZDsK KwlwYXlsb2FkLT5jb3VudGVyID0gMDsKKwlmb3IgKDsgc2cgJiYgcGF5X3N1bSA8IGNhcF9sZW47 IHNnID0gc2dfbmV4dChzZykpIHsKKwkJdTE2IHBheV9sZW4sIG9mZnNldCA9IDA7CisKKwkJd2hp bGUgKG9mZnNldCA8IHNnLT5sZW5ndGggJiYgcGF5X3N1bSA8IGNhcF9sZW4pIHsKKwkJCXBheV9s ZW4gPSBtaW4oKHUxNilaRkNQX0RCRl9QQVlfTUFYX1JFQywKKwkJCQkgICAgICAodTE2KShzZy0+ bGVuZ3RoIC0gb2Zmc2V0KSk7CisJCQkvKiBjYXBfbGVuIDw9IHBheV9zdW0gPCBjYXBfbGVuK1pG Q1BfREJGX1BBWV9NQVhfUkVDICovCisJCQltZW1jcHkocGF5bG9hZC0+ZGF0YSwgc2dfdmlydChz ZykgKyBvZmZzZXQsIHBheV9sZW4pOworCQkJZGVidWdfZXZlbnQoZGJmLT5wYXksIDEsIHBheWxv YWQsCisJCQkJICAgIHpmY3BfZGJmX3BsZW4ocGF5X2xlbikpOworCQkJcGF5bG9hZC0+Y291bnRl cisrOworCQkJb2Zmc2V0ICs9IHBheV9sZW47CisJCQlwYXlfc3VtICs9IHBheV9sZW47CisJCX0K Kwl9CisJc3Bpbl91bmxvY2soJmRiZi0+cGF5X2xvY2spOwogCitvdXQ6CiAJZGVidWdfZXZlbnQo ZGJmLT5zYW4sIDEsIHJlYywgc2l6ZW9mKCpyZWMpKTsKIAlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZkYmYtPnNhbl9sb2NrLCBmbGFncyk7CiB9CkBAIC0zNTQsOSArNDIzLDYyIEBAIHZvaWQgemZj cF9kYmZfc2FuX3JlcShjaGFyICp0YWcsIHN0cnVjdCB6ZmNwX2ZzZl9yZXEgKmZzZiwgdTMyIGRf aWQpCiAJc3RydWN0IHpmY3BfZnNmX2N0X2VscyAqY3RfZWxzID0gZnNmLT5kYXRhOwogCXUxNiBs ZW5ndGg7CiAKLQlsZW5ndGggPSAodTE2KShjdF9lbHMtPnJlcS0+bGVuZ3RoICsgRkNfQ1RfSERS X0xFTik7Ci0JemZjcF9kYmZfc2FuKHRhZywgZGJmLCBzZ192aXJ0KGN0X2Vscy0+cmVxKSwgWkZD UF9EQkZfU0FOX1JFUSwgbGVuZ3RoLAotCQkgICAgIGZzZi0+cmVxX2lkLCBkX2lkKTsKKwlsZW5n dGggPSAodTE2KXpmY3BfcWRpb19yZWFsX2J5dGVzKGN0X2Vscy0+cmVxKTsKKwl6ZmNwX2RiZl9z YW4odGFnLCBkYmYsICJzYW5fcmVxIiwgY3RfZWxzLT5yZXEsIFpGQ1BfREJGX1NBTl9SRVEsCisJ CSAgICAgbGVuZ3RoLCBmc2YtPnJlcV9pZCwgZF9pZCwgbGVuZ3RoKTsKK30KKworc3RhdGljIHUx NiB6ZmNwX2RiZl9zYW5fcmVzX2NhcF9sZW5faWZfZ3BuX2Z0KGNoYXIgKnRhZywKKwkJCQkJICAg ICAgc3RydWN0IHpmY3BfZnNmX3JlcSAqZnNmLAorCQkJCQkgICAgICB1MTYgbGVuKQoreworCXN0 cnVjdCB6ZmNwX2ZzZl9jdF9lbHMgKmN0X2VscyA9IGZzZi0+ZGF0YTsKKwlzdHJ1Y3QgZmNfY3Rf aGRyICpyZXFoID0gc2dfdmlydChjdF9lbHMtPnJlcSk7CisJc3RydWN0IGZjX25zX2dpZF9mdCAq cmVxbiA9IChzdHJ1Y3QgZmNfbnNfZ2lkX2Z0ICopKHJlcWggKyAxKTsKKwlzdHJ1Y3Qgc2NhdHRl cmxpc3QgKnJlc3BfZW50cnkgPSBjdF9lbHMtPnJlc3A7CisJc3RydWN0IGZjX2dwbl9mdF9yZXNw ICphY2M7CisJaW50IG1heF9lbnRyaWVzLCB4LCBsYXN0ID0gMDsKKworCWlmICghKG1lbWNtcCh0 YWcsICJmc3NjdGgyIiwgNykgPT0gMAorCSAgICAgICYmIGN0X2Vscy0+ZF9pZCA9PSBGQ19GSURf RElSX1NFUlYKKwkgICAgICAmJiByZXFoLT5jdF9yZXYgPT0gRkNfQ1RfUkVWCisJICAgICAgJiYg cmVxaC0+Y3RfaW5faWRbMF0gPT0gMAorCSAgICAgICYmIHJlcWgtPmN0X2luX2lkWzFdID09IDAK KwkgICAgICAmJiByZXFoLT5jdF9pbl9pZFsyXSA9PSAwCisJICAgICAgJiYgcmVxaC0+Y3RfZnNf dHlwZSA9PSBGQ19GU1RfRElSCisJICAgICAgJiYgcmVxaC0+Y3RfZnNfc3VidHlwZSA9PSBGQ19O U19TVUJUWVBFCisJICAgICAgJiYgcmVxaC0+Y3Rfb3B0aW9ucyA9PSAwCisJICAgICAgJiYgcmVx aC0+X2N0X3Jlc3ZkMSA9PSAwCisJICAgICAgJiYgcmVxaC0+Y3RfY21kID09IEZDX05TX0dQTl9G VAorCSAgICAgIC8qIHJlcWgtPmN0X21yX3NpemUgY2FuIHZhcnkgc28gZG8gbm90IG1hdGNoIGJ1 dCByZWFkIGJlbG93ICovCisJICAgICAgJiYgcmVxaC0+X2N0X3Jlc3ZkMiA9PSAwCisJICAgICAg JiYgcmVxaC0+Y3RfcmVhc29uID09IDAKKwkgICAgICAmJiByZXFoLT5jdF9leHBsYW4gPT0gMAor CSAgICAgICYmIHJlcWgtPmN0X3ZlbmRvciA9PSAwCisJICAgICAgJiYgcmVxbi0+Zm5fcmVzdmQg PT0gMAorCSAgICAgICYmIHJlcW4tPmZuX2RvbWFpbl9pZF9zY29wZSA9PSAwCisJICAgICAgJiYg cmVxbi0+Zm5fYXJlYV9pZF9zY29wZSA9PSAwCisJICAgICAgJiYgcmVxbi0+Zm5fZmM0X3R5cGUg PT0gRkNfVFlQRV9GQ1ApKQorCQlyZXR1cm4gbGVuOyAvKiBub3QgR1BOX0ZUIHJlc3BvbnNlIHNv IGRvIG5vdCBjYXAgKi8KKworCWFjYyA9IHNnX3ZpcnQocmVzcF9lbnRyeSk7CisJbWF4X2VudHJp ZXMgPSAocmVxaC0+Y3RfbXJfc2l6ZSAqIDQgLyBzaXplb2Yoc3RydWN0IGZjX2dwbl9mdF9yZXNw KSkKKwkJKyAxIC8qIHpmY3BfZmNfc2Nhbl9wb3J0czogYnl0ZXMgY29ycmVjdCwgZW50cmllcyBv ZmYtYnktb25lCisJCSAgICAgKiB0byBhY2NvdW50IGZvciBoZWFkZXIgYXMgMXN0IHBzZXVkbyAi ZW50cnkiICovOworCisJLyogdGhlIGJhc2ljIENUX0lVIHByZWFtYmxlIGlzIHRoZSBzYW1lIHNp emUgYXMgb25lIGVudHJ5IGluIHRoZSBHUE5fRlQKKwkgKiByZXNwb25zZSwgYWxsb3dpbmcgdXMg dG8gc2tpcCBzcGVjaWFsIGhhbmRsaW5nIGZvciBpdCAtIGp1c3Qgc2tpcCBpdAorCSAqLworCWZv ciAoeCA9IDE7IHggPCBtYXhfZW50cmllcyAmJiAhbGFzdDsgeCsrKSB7CisJCWlmICh4ICUgKFpG Q1BfRkNfR1BOX0ZUX0VOVF9QQUdFICsgMSkpCisJCQlhY2MrKzsKKwkJZWxzZQorCQkJYWNjID0g c2dfdmlydCgrK3Jlc3BfZW50cnkpOworCisJCWxhc3QgPSBhY2MtPmZwX2ZsYWdzICYgRkNfTlNf RklEX0xBU1Q7CisJfQorCWxlbiA9IG1pbihsZW4sICh1MTYpKHggKiBzaXplb2Yoc3RydWN0IGZj X2dwbl9mdF9yZXNwKSkpOworCXJldHVybiBsZW47IC8qIGNhcCBhZnRlciBsYXN0IGVudHJ5ICov CiB9CiAKIC8qKgpAQCAtMzcwLDkgKzQ5MiwxMCBAQCB2b2lkIHpmY3BfZGJmX3Nhbl9yZXMoY2hh ciAqdGFnLCBzdHJ1Y3QgemZjcF9mc2ZfcmVxICpmc2YpCiAJc3RydWN0IHpmY3BfZnNmX2N0X2Vs cyAqY3RfZWxzID0gZnNmLT5kYXRhOwogCXUxNiBsZW5ndGg7CiAKLQlsZW5ndGggPSAodTE2KShj dF9lbHMtPnJlc3AtPmxlbmd0aCArIEZDX0NUX0hEUl9MRU4pOwotCXpmY3BfZGJmX3Nhbih0YWcs IGRiZiwgc2dfdmlydChjdF9lbHMtPnJlc3ApLCBaRkNQX0RCRl9TQU5fUkVTLCBsZW5ndGgsCi0J CSAgICAgZnNmLT5yZXFfaWQsIDApOworCWxlbmd0aCA9ICh1MTYpemZjcF9xZGlvX3JlYWxfYnl0 ZXMoY3RfZWxzLT5yZXNwKTsKKwl6ZmNwX2RiZl9zYW4odGFnLCBkYmYsICJzYW5fcmVzIiwgY3Rf ZWxzLT5yZXNwLCBaRkNQX0RCRl9TQU5fUkVTLAorCQkgICAgIGxlbmd0aCwgZnNmLT5yZXFfaWQs IGN0X2Vscy0+ZF9pZCwKKwkJICAgICB6ZmNwX2RiZl9zYW5fcmVzX2NhcF9sZW5faWZfZ3BuX2Z0 KHRhZywgZnNmLCBsZW5ndGgpKTsKIH0KIAogLyoqCkBAIC0zODYsMTEgKzUwOSwxMyBAQCB2b2lk IHpmY3BfZGJmX3Nhbl9pbl9lbHMoY2hhciAqdGFnLCBzdHJ1Y3QgemZjcF9mc2ZfcmVxICpmc2Yp CiAJc3RydWN0IGZzZl9zdGF0dXNfcmVhZF9idWZmZXIgKnNyYiA9CiAJCShzdHJ1Y3QgZnNmX3N0 YXR1c19yZWFkX2J1ZmZlciAqKSBmc2YtPmRhdGE7CiAJdTE2IGxlbmd0aDsKKwlzdHJ1Y3Qgc2Nh dHRlcmxpc3Qgc2c7CiAKIAlsZW5ndGggPSAodTE2KShzcmItPmxlbmd0aCAtCiAJCQlvZmZzZXRv ZihzdHJ1Y3QgZnNmX3N0YXR1c19yZWFkX2J1ZmZlciwgcGF5bG9hZCkpOwotCXpmY3BfZGJmX3Nh bih0YWcsIGRiZiwgc3JiLT5wYXlsb2FkLmRhdGEsIFpGQ1BfREJGX1NBTl9FTFMsIGxlbmd0aCwK LQkJICAgICBmc2YtPnJlcV9pZCwgbnRvaDI0KHNyYi0+ZF9pZCkpOworCXNnX2luaXRfb25lKCZz Zywgc3JiLT5wYXlsb2FkLmRhdGEsIGxlbmd0aCk7CisJemZjcF9kYmZfc2FuKHRhZywgZGJmLCAi c2FuX2VscyIsICZzZywgWkZDUF9EQkZfU0FOX0VMUywgbGVuZ3RoLAorCQkgICAgIGZzZi0+cmVx X2lkLCBudG9oMjQoc3JiLT5kX2lkKSwgbGVuZ3RoKTsKIH0KIAogLyoqCkBAIC0zOTksNyArNTI0 LDggQEAgdm9pZCB6ZmNwX2RiZl9zYW5faW5fZWxzKGNoYXIgKnRhZywgc3RydWN0IHpmY3BfZnNm X3JlcSAqZnNmKQogICogQHNjOiBwb2ludGVyIHRvIHN0cnVjdCBzY3NpX2NtbmQKICAqIEBmc2Y6 IHBvaW50ZXIgdG8gc3RydWN0IHpmY3BfZnNmX3JlcQogICovCi12b2lkIHpmY3BfZGJmX3Njc2ko Y2hhciAqdGFnLCBzdHJ1Y3Qgc2NzaV9jbW5kICpzYywgc3RydWN0IHpmY3BfZnNmX3JlcSAqZnNm KQordm9pZCB6ZmNwX2RiZl9zY3NpKGNoYXIgKnRhZywgaW50IGxldmVsLCBzdHJ1Y3Qgc2NzaV9j bW5kICpzYywKKwkJICAgc3RydWN0IHpmY3BfZnNmX3JlcSAqZnNmKQogewogCXN0cnVjdCB6ZmNw X2FkYXB0ZXIgKmFkYXB0ZXIgPQogCQkoc3RydWN0IHpmY3BfYWRhcHRlciAqKSBzYy0+ZGV2aWNl LT5ob3N0LT5ob3N0ZGF0YVswXTsKQEAgLTQ0MSw3ICs1NjcsNyBAQCB2b2lkIHpmY3BfZGJmX3Nj c2koY2hhciAqdGFnLCBzdHJ1Y3Qgc2NzaV9jbW5kICpzYywgc3RydWN0IHpmY3BfZnNmX3JlcSAq ZnNmKQogCQl9CiAJfQogCi0JZGVidWdfZXZlbnQoZGJmLT5zY3NpLCAxLCByZWMsIHNpemVvZigq cmVjKSk7CisJZGVidWdfZXZlbnQoZGJmLT5zY3NpLCBsZXZlbCwgcmVjLCBzaXplb2YoKnJlYykp OwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRiZi0+c2NzaV9sb2NrLCBmbGFncyk7CiB9CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZGJmLmggYi9kcml2ZXJzL3MzOTAv c2NzaS96ZmNwX2RiZi5oCmluZGV4IDBiZTNkNDg2ODFhZS4uMzZkMDc1ODQyNzFkIDEwMDY0NAot LS0gYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2RiZi5oCisrKyBiL2RyaXZlcnMvczM5MC9zY3Np L3pmY3BfZGJmLmgKQEAgLTIsNyArMiw3IEBACiAgKiB6ZmNwIGRldmljZSBkcml2ZXIKICAqIGRl YnVnIGZlYXR1cmUgZGVjbGFyYXRpb25zCiAgKgotICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDA4 LCAyMDEwCisgKiBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDgsIDIwMTUKICAqLwogCiAjaWZuZGVm IFpGQ1BfREJGX0gKQEAgLTE3LDYgKzE3LDExIEBACiAKICNkZWZpbmUgWkZDUF9EQkZfSU5WQUxJ RF9MVU4JMHhGRkZGRkZGRkZGRkZGRkZGdWxsCiAKK2VudW0gemZjcF9kYmZfcHNldWRvX2VycF9h Y3RfdHlwZSB7CisJWkZDUF9QU0VVRE9fRVJQX0FDVElPTl9SUE9SVF9BREQgPSAweGZmLAorCVpG Q1BfUFNFVURPX0VSUF9BQ1RJT05fUlBPUlRfREVMID0gMHhmZSwKK307CisKIC8qKgogICogc3Ry dWN0IHpmY3BfZGJmX3JlY190cmlnZ2VyIC0gdHJhY2UgcmVjb3JkIGZvciB0cmlnZ2VyZWQgcmVj b3ZlcnkgYWN0aW9uCiAgKiBAcmVhZHk6IG51bWJlciBvZiByZWFkeSByZWNvdmVyeSBhY3Rpb25z CkBAIC0xMTAsNiArMTE1LDcgQEAgc3RydWN0IHpmY3BfZGJmX3NhbiB7CiAJdTMyIGRfaWQ7CiAj ZGVmaW5lIFpGQ1BfREJGX1NBTl9NQVhfUEFZTE9BRCAoRkNfQ1RfSERSX0xFTiArIDMyKQogCWNo YXIgcGF5bG9hZFtaRkNQX0RCRl9TQU5fTUFYX1BBWUxPQURdOworCXUxNiBwbF9sZW47CiB9IF9f cGFja2VkOwogCiAvKioKQEAgLTEyNiw2ICsxMzIsOCBAQCBzdHJ1Y3QgemZjcF9kYmZfaGJhX3Jl cyB7CiAJdTggIHByb3Rfc3RhdHVzX3F1YWxbRlNGX1BST1RfU1RBVFVTX1FVQUxfU0laRV07CiAJ dTMyIGZzZl9zdGF0dXM7CiAJdTggIGZzZl9zdGF0dXNfcXVhbFtGU0ZfU1RBVFVTX1FVQUxJRklF Ul9TSVpFXTsKKwl1MzIgcG9ydF9oYW5kbGU7CisJdTMyIGx1bl9oYW5kbGU7CiB9IF9fcGFja2Vk OwogCiAvKioKQEAgLTI3OSw3ICsyODcsNyBAQCBzdGF0aWMgaW5saW5lCiB2b2lkIHpmY3BfZGJm X2hiYV9mc2ZfcmVzcChjaGFyICp0YWcsIGludCBsZXZlbCwgc3RydWN0IHpmY3BfZnNmX3JlcSAq cmVxKQogewogCWlmIChkZWJ1Z19sZXZlbF9lbmFibGVkKHJlcS0+YWRhcHRlci0+ZGJmLT5oYmEs IGxldmVsKSkKLQkJemZjcF9kYmZfaGJhX2ZzZl9yZXModGFnLCByZXEpOworCQl6ZmNwX2RiZl9o YmFfZnNmX3Jlcyh0YWcsIGxldmVsLCByZXEpOwogfQogCiAvKioKQEAgLTMxOCw3ICszMjYsNyBA QCB2b2lkIF96ZmNwX2RiZl9zY3NpKGNoYXIgKnRhZywgaW50IGxldmVsLCBzdHJ1Y3Qgc2NzaV9j bW5kICpzY21kLAogCQkJCQlzY21kLT5kZXZpY2UtPmhvc3QtPmhvc3RkYXRhWzBdOwogCiAJaWYg KGRlYnVnX2xldmVsX2VuYWJsZWQoYWRhcHRlci0+ZGJmLT5zY3NpLCBsZXZlbCkpCi0JCXpmY3Bf ZGJmX3Njc2kodGFnLCBzY21kLCByZXEpOworCQl6ZmNwX2RiZl9zY3NpKHRhZywgbGV2ZWwsIHNj bWQsIHJlcSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9l cnAuYyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZXJwLmMKaW5kZXggYzgyZmU2NWM0MTI4Li5h Yzg2ZmY5MGM4OTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZXJwLmMKKysr IGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9lcnAuYwpAQCAtMyw3ICszLDcgQEAKICAqCiAgKiBF cnJvciBSZWNvdmVyeSBQcm9jZWR1cmVzIChFUlApLgogICoKLSAqIENvcHlyaWdodCBJQk0gQ29y cC4gMjAwMiwgMjAxMAorICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyLCAyMDE1CiAgKi8KIAog I2RlZmluZSBLTVNHX0NPTVBPTkVOVCAiemZjcCIKQEAgLTEyMjQsOCArMTIyNCwxNCBAQCBzdGF0 aWMgdm9pZCB6ZmNwX2VycF9hY3Rpb25fY2xlYW51cChzdHJ1Y3QgemZjcF9lcnBfYWN0aW9uICph Y3QsIGludCByZXN1bHQpCiAJCWJyZWFrOwogCiAJY2FzZSBaRkNQX0VSUF9BQ1RJT05fUkVPUEVO X1BPUlQ6Ci0JCWlmIChyZXN1bHQgPT0gWkZDUF9FUlBfU1VDQ0VFREVEKQotCQkJemZjcF9zY3Np X3NjaGVkdWxlX3Jwb3J0X3JlZ2lzdGVyKHBvcnQpOworCQkvKiBUaGlzIHN3aXRjaCBjYXNlIG1p Z2h0IGFsc28gaGFwcGVuIGFmdGVyIGEgZm9yY2VkIHJlb3BlbgorCQkgKiB3YXMgc3VjY2Vzc2Z1 bGx5IGRvbmUgYW5kIHRodXMgb3ZlcndyaXR0ZW4gd2l0aCBhIG5ldworCQkgKiBub24tZm9yY2Vk IHJlb3BlbiBhdCBgZXJzZnNfMicuIEluIHRoaXMgY2FzZSwgd2UgbXVzdCBub3QKKwkJICogZG8g dGhlIGNsZWFuLXVwIG9mIHRoZSBub24tZm9yY2VkIHZlcnNpb24uCisJCSAqLworCQlpZiAoYWN0 LT5zdGVwICE9IFpGQ1BfRVJQX1NURVBfVU5JTklUSUFMSVpFRCkKKwkJCWlmIChyZXN1bHQgPT0g WkZDUF9FUlBfU1VDQ0VFREVEKQorCQkJCXpmY3Bfc2NzaV9zY2hlZHVsZV9ycG9ydF9yZWdpc3Rl cihwb3J0KTsKIAkJLyogZmFsbCB0aHJvdWdoICovCiAJY2FzZSBaRkNQX0VSUF9BQ1RJT05fUkVP UEVOX1BPUlRfRk9SQ0VEOgogCQlwdXRfZGV2aWNlKCZwb3J0LT5kZXYpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9zMzkwL3Njc2kvemZjcF9leHQuaCBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZXh0 LmgKaW5kZXggYTljNTcwYTA5Yjg1Li4xZjFmZTQxZWNiOTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv czM5MC9zY3NpL3pmY3BfZXh0LmgKKysrIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9leHQuaApA QCAtMyw3ICszLDcgQEAKICAqCiAgKiBFeHRlcm5hbCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCiAg KgotICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyLCAyMDEwCisgKiBDb3B5cmlnaHQgSUJNIENv cnAuIDIwMDIsIDIwMTUKICAqLwogCiAjaWZuZGVmIFpGQ1BfRVhUX0gKQEAgLTM1LDggKzM1LDkg QEAgZXh0ZXJuIHZvaWQgemZjcF9kYmZfYWRhcHRlcl91bnJlZ2lzdGVyKHN0cnVjdCB6ZmNwX2Fk YXB0ZXIgKik7CiBleHRlcm4gdm9pZCB6ZmNwX2RiZl9yZWNfdHJpZyhjaGFyICosIHN0cnVjdCB6 ZmNwX2FkYXB0ZXIgKiwKIAkJCSAgICAgIHN0cnVjdCB6ZmNwX3BvcnQgKiwgc3RydWN0IHNjc2lf ZGV2aWNlICosIHU4LCB1OCk7CiBleHRlcm4gdm9pZCB6ZmNwX2RiZl9yZWNfcnVuKGNoYXIgKiwg c3RydWN0IHpmY3BfZXJwX2FjdGlvbiAqKTsKK2V4dGVybiB2b2lkIHpmY3BfZGJmX3JlY19ydW5f d2thKGNoYXIgKiwgc3RydWN0IHpmY3BfZmNfd2thX3BvcnQgKiwgdTY0KTsKIGV4dGVybiB2b2lk IHpmY3BfZGJmX2hiYV9mc2ZfdXNzKGNoYXIgKiwgc3RydWN0IHpmY3BfZnNmX3JlcSAqKTsKLWV4 dGVybiB2b2lkIHpmY3BfZGJmX2hiYV9mc2ZfcmVzKGNoYXIgKiwgc3RydWN0IHpmY3BfZnNmX3Jl cSAqKTsKK2V4dGVybiB2b2lkIHpmY3BfZGJmX2hiYV9mc2ZfcmVzKGNoYXIgKiwgaW50LCBzdHJ1 Y3QgemZjcF9mc2ZfcmVxICopOwogZXh0ZXJuIHZvaWQgemZjcF9kYmZfaGJhX2JpdF9lcnIoY2hh ciAqLCBzdHJ1Y3QgemZjcF9mc2ZfcmVxICopOwogZXh0ZXJuIHZvaWQgemZjcF9kYmZfaGJhX2Jl cnIoc3RydWN0IHpmY3BfZGJmICosIHN0cnVjdCB6ZmNwX2ZzZl9yZXEgKik7CiBleHRlcm4gdm9p ZCB6ZmNwX2RiZl9oYmFfZGVmX2VycihzdHJ1Y3QgemZjcF9hZGFwdGVyICosIHU2NCwgdTE2LCB2 b2lkICoqKTsKQEAgLTQ0LDcgKzQ1LDggQEAgZXh0ZXJuIHZvaWQgemZjcF9kYmZfaGJhX2Jhc2lj KGNoYXIgKiwgc3RydWN0IHpmY3BfYWRhcHRlciAqKTsKIGV4dGVybiB2b2lkIHpmY3BfZGJmX3Nh bl9yZXEoY2hhciAqLCBzdHJ1Y3QgemZjcF9mc2ZfcmVxICosIHUzMik7CiBleHRlcm4gdm9pZCB6 ZmNwX2RiZl9zYW5fcmVzKGNoYXIgKiwgc3RydWN0IHpmY3BfZnNmX3JlcSAqKTsKIGV4dGVybiB2 b2lkIHpmY3BfZGJmX3Nhbl9pbl9lbHMoY2hhciAqLCBzdHJ1Y3QgemZjcF9mc2ZfcmVxICopOwot ZXh0ZXJuIHZvaWQgemZjcF9kYmZfc2NzaShjaGFyICosIHN0cnVjdCBzY3NpX2NtbmQgKiwgc3Ry dWN0IHpmY3BfZnNmX3JlcSAqKTsKK2V4dGVybiB2b2lkIHpmY3BfZGJmX3Njc2koY2hhciAqLCBp bnQsIHN0cnVjdCBzY3NpX2NtbmQgKiwKKwkJCSAgc3RydWN0IHpmY3BfZnNmX3JlcSAqKTsKIAog LyogemZjcF9lcnAuYyAqLwogZXh0ZXJuIHZvaWQgemZjcF9lcnBfc2V0X2FkYXB0ZXJfc3RhdHVz KHN0cnVjdCB6ZmNwX2FkYXB0ZXIgKiwgdTMyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9z Y3NpL3pmY3BfZnNmLmMgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2ZzZi5jCmluZGV4IDBmZThk NWQ5NTExOS4uNjA2NTIxMmZkZWVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNw X2ZzZi5jCisrKyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZnNmLmMKQEAgLTMsNyArMyw3IEBA CiAgKgogICogSW1wbGVtZW50YXRpb24gb2YgRlNGIGNvbW1hbmRzLgogICoKLSAqIENvcHlyaWdo dCBJQk0gQ29ycC4gMjAwMiwgMjAxMworICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyLCAyMDE1 CiAgKi8KIAogI2RlZmluZSBLTVNHX0NPTVBPTkVOVCAiemZjcCIKQEAgLTUwOCw3ICs1MDgsMTAg QEAgc3RhdGljIGludCB6ZmNwX2ZzZl9leGNoYW5nZV9jb25maWdfZXZhbHVhdGUoc3RydWN0IHpm Y3BfZnNmX3JlcSAqcmVxKQogCQlmY19ob3N0X3BvcnRfdHlwZShzaG9zdCkgPSBGQ19QT1JUVFlQ RV9QVFA7CiAJCWJyZWFrOwogCWNhc2UgRlNGX1RPUE9fRkFCUklDOgotCQlmY19ob3N0X3BvcnRf dHlwZShzaG9zdCkgPSBGQ19QT1JUVFlQRV9OUE9SVDsKKwkJaWYgKGJvdHRvbS0+Y29ubmVjdGlv bl9mZWF0dXJlcyAmIEZTRl9GRUFUVVJFX05QSVZfTU9ERSkKKwkJCWZjX2hvc3RfcG9ydF90eXBl KHNob3N0KSA9IEZDX1BPUlRUWVBFX05QSVY7CisJCWVsc2UKKwkJCWZjX2hvc3RfcG9ydF90eXBl KHNob3N0KSA9IEZDX1BPUlRUWVBFX05QT1JUOwogCQlicmVhazsKIAljYXNlIEZTRl9UT1BPX0FM OgogCQlmY19ob3N0X3BvcnRfdHlwZShzaG9zdCkgPSBGQ19QT1JUVFlQRV9OTFBPUlQ7CkBAIC02 MTMsNyArNjE2LDYgQEAgc3RhdGljIHZvaWQgemZjcF9mc2ZfZXhjaGFuZ2VfcG9ydF9ldmFsdWF0 ZShzdHJ1Y3QgemZjcF9mc2ZfcmVxICpyZXEpCiAKIAlpZiAoYWRhcHRlci0+Y29ubmVjdGlvbl9m ZWF0dXJlcyAmIEZTRl9GRUFUVVJFX05QSVZfTU9ERSkgewogCQlmY19ob3N0X3Blcm1hbmVudF9w b3J0X25hbWUoc2hvc3QpID0gYm90dG9tLT53d3BuOwotCQlmY19ob3N0X3BvcnRfdHlwZShzaG9z dCkgPSBGQ19QT1JUVFlQRV9OUElWOwogCX0gZWxzZQogCQlmY19ob3N0X3Blcm1hbmVudF9wb3J0 X25hbWUoc2hvc3QpID0gZmNfaG9zdF9wb3J0X25hbWUoc2hvc3QpOwogCWZjX2hvc3RfbWF4ZnJh bWVfc2l6ZShzaG9zdCkgPSBib3R0b20tPm1heGltdW1fZnJhbWVfc2l6ZTsKQEAgLTk4Miw4ICs5 ODQsMTIgQEAgc3RhdGljIGludCB6ZmNwX2ZzZl9zZXR1cF9jdF9lbHNfc2JhbHMoc3RydWN0IHpm Y3BfZnNmX3JlcSAqcmVxLAogCWlmICh6ZmNwX2FkYXB0ZXJfbXVsdGlfYnVmZmVyX2FjdGl2ZShh ZGFwdGVyKSkgewogCQlpZiAoemZjcF9xZGlvX3NiYWxzX2Zyb21fc2cocWRpbywgJnJlcS0+cWRp b19yZXEsIHNnX3JlcSkpCiAJCQlyZXR1cm4gLUVJTzsKKwkJcXRjYi0+Ym90dG9tLnN1cHBvcnQu cmVxX2J1Zl9sZW5ndGggPQorCQkJemZjcF9xZGlvX3JlYWxfYnl0ZXMoc2dfcmVxKTsKIAkJaWYg KHpmY3BfcWRpb19zYmFsc19mcm9tX3NnKHFkaW8sICZyZXEtPnFkaW9fcmVxLCBzZ19yZXNwKSkK IAkJCXJldHVybiAtRUlPOworCQlxdGNiLT5ib3R0b20uc3VwcG9ydC5yZXNwX2J1Zl9sZW5ndGgg PQorCQkJemZjcF9xZGlvX3JlYWxfYnl0ZXMoc2dfcmVzcCk7CiAKIAkJemZjcF9xZGlvX3NldF9k YXRhX2RpdihxZGlvLCAmcmVxLT5xZGlvX3JlcSwKIAkJCQkJemZjcF9xZGlvX3NiYWxlX2NvdW50 KHNnX3JlcSkpOwpAQCAtMTA3Myw2ICsxMDc5LDcgQEAgaW50IHpmY3BfZnNmX3NlbmRfY3Qoc3Ry dWN0IHpmY3BfZmNfd2thX3BvcnQgKndrYV9wb3J0LAogCiAJcmVxLT5oYW5kbGVyID0gemZjcF9m c2Zfc2VuZF9jdF9oYW5kbGVyOwogCXJlcS0+cXRjYi0+aGVhZGVyLnBvcnRfaGFuZGxlID0gd2th X3BvcnQtPmhhbmRsZTsKKwljdC0+ZF9pZCA9IHdrYV9wb3J0LT5kX2lkOwogCXJlcS0+ZGF0YSA9 IGN0OwogCiAJemZjcF9kYmZfc2FuX3JlcSgiZnNzY3RfMSIsIHJlcSwgd2thX3BvcnQtPmRfaWQp OwpAQCAtMTE2OSw2ICsxMTc2LDcgQEAgaW50IHpmY3BfZnNmX3NlbmRfZWxzKHN0cnVjdCB6ZmNw X2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBkX2lkLAogCiAJaHRvbjI0KHJlcS0+cXRjYi0+Ym90dG9t LnN1cHBvcnQuZF9pZCwgZF9pZCk7CiAJcmVxLT5oYW5kbGVyID0gemZjcF9mc2Zfc2VuZF9lbHNf aGFuZGxlcjsKKwllbHMtPmRfaWQgPSBkX2lkOwogCXJlcS0+ZGF0YSA9IGVsczsKIAogCXpmY3Bf ZGJmX3Nhbl9yZXEoImZzc2VsczEiLCByZXEsIGRfaWQpOwpAQCAtMTU3Niw3ICsxNTg0LDcgQEAg b3V0OgogaW50IHpmY3BfZnNmX29wZW5fd2thX3BvcnQoc3RydWN0IHpmY3BfZmNfd2thX3BvcnQg KndrYV9wb3J0KQogewogCXN0cnVjdCB6ZmNwX3FkaW8gKnFkaW8gPSB3a2FfcG9ydC0+YWRhcHRl ci0+cWRpbzsKLQlzdHJ1Y3QgemZjcF9mc2ZfcmVxICpyZXE7CisJc3RydWN0IHpmY3BfZnNmX3Jl cSAqcmVxID0gTlVMTDsKIAlpbnQgcmV0dmFsID0gLUVJTzsKIAogCXNwaW5fbG9ja19pcnEoJnFk aW8tPnJlcV9xX2xvY2spOwpAQCAtMTYwNSw2ICsxNjEzLDggQEAgaW50IHpmY3BfZnNmX29wZW5f d2thX3BvcnQoc3RydWN0IHpmY3BfZmNfd2thX3BvcnQgKndrYV9wb3J0KQogCQl6ZmNwX2ZzZl9y ZXFfZnJlZShyZXEpOwogb3V0OgogCXNwaW5fdW5sb2NrX2lycSgmcWRpby0+cmVxX3FfbG9jayk7 CisJaWYgKHJlcSAmJiAhSVNfRVJSKHJlcSkpCisJCXpmY3BfZGJmX3JlY19ydW5fd2thKCJmc293 cF8xIiwgd2thX3BvcnQsIHJlcS0+cmVxX2lkKTsKIAlyZXR1cm4gcmV0dmFsOwogfQogCkBAIC0x NjI5LDcgKzE2MzksNyBAQCBzdGF0aWMgdm9pZCB6ZmNwX2ZzZl9jbG9zZV93a2FfcG9ydF9oYW5k bGVyKHN0cnVjdCB6ZmNwX2ZzZl9yZXEgKnJlcSkKIGludCB6ZmNwX2ZzZl9jbG9zZV93a2FfcG9y dChzdHJ1Y3QgemZjcF9mY193a2FfcG9ydCAqd2thX3BvcnQpCiB7CiAJc3RydWN0IHpmY3BfcWRp byAqcWRpbyA9IHdrYV9wb3J0LT5hZGFwdGVyLT5xZGlvOwotCXN0cnVjdCB6ZmNwX2ZzZl9yZXEg KnJlcTsKKwlzdHJ1Y3QgemZjcF9mc2ZfcmVxICpyZXEgPSBOVUxMOwogCWludCByZXR2YWwgPSAt RUlPOwogCiAJc3Bpbl9sb2NrX2lycSgmcWRpby0+cmVxX3FfbG9jayk7CkBAIC0xNjU4LDYgKzE2 NjgsOCBAQCBpbnQgemZjcF9mc2ZfY2xvc2Vfd2thX3BvcnQoc3RydWN0IHpmY3BfZmNfd2thX3Bv cnQgKndrYV9wb3J0KQogCQl6ZmNwX2ZzZl9yZXFfZnJlZShyZXEpOwogb3V0OgogCXNwaW5fdW5s b2NrX2lycSgmcWRpby0+cmVxX3FfbG9jayk7CisJaWYgKHJlcSAmJiAhSVNfRVJSKHJlcSkpCisJ CXpmY3BfZGJmX3JlY19ydW5fd2thKCJmc2N3cF8xIiwgd2thX3BvcnQsIHJlcS0+cmVxX2lkKTsK IAlyZXR1cm4gcmV0dmFsOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNw X2ZzZi5oIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9mc2YuaAppbmRleCA1N2FlM2FlMTA0NmQu LmJlMWMwNGIzMzRjNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9mc2YuaAor KysgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2ZzZi5oCkBAIC0zLDcgKzMsNyBAQAogICoKICAq IEludGVyZmFjZSB0byB0aGUgRlNGIHN1cHBvcnQgZnVuY3Rpb25zLgogICoKLSAqIENvcHlyaWdo dCBJQk0gQ29ycC4gMjAwMiwgMjAxMAorICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyLCAyMDE1 CiAgKi8KIAogI2lmbmRlZiBGU0ZfSApAQCAtNDM2LDYgKzQzNiw3IEBAIHN0cnVjdCB6ZmNwX2Js a19kcnZfZGF0YSB7CiAgKiBAaGFuZGxlcl9kYXRhOiBkYXRhIHBhc3NlZCB0byBoYW5kbGVyIGZ1 bmN0aW9uCiAgKiBAcG9ydDogT3B0aW9uYWwgcG9pbnRlciB0byBwb3J0IGZvciB6ZmNwIGludGVy bmFsIEVMUyAob25seSB0ZXN0IGxpbmsgQURJU0MpCiAgKiBAc3RhdHVzOiB1c2VkIHRvIHBhc3Mg ZXJyb3Igc3RhdHVzIHRvIGNhbGxpbmcgZnVuY3Rpb24KKyAqIEBkX2lkOiBEZXN0aW5hdGlvbiBJ RCBvZiBlaXRoZXIgb3BlbiBXS0EgcG9ydCBmb3IgQ1Qgb3Igb2YgRF9JRCBmb3IgRUxTCiAgKi8K IHN0cnVjdCB6ZmNwX2ZzZl9jdF9lbHMgewogCXN0cnVjdCBzY2F0dGVybGlzdCAqcmVxOwpAQCAt NDQ0LDYgKzQ0NSw3IEBAIHN0cnVjdCB6ZmNwX2ZzZl9jdF9lbHMgewogCXZvaWQgKmhhbmRsZXJf ZGF0YTsKIAlzdHJ1Y3QgemZjcF9wb3J0ICpwb3J0OwogCWludCBzdGF0dXM7CisJdTMyIGRfaWQ7 CiB9OwogCiAjZW5kaWYJCQkJLyogRlNGX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9z Y3NpL3pmY3Bfc2NzaS5jIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9zY3NpLmMKaW5kZXggN2Iz NTM2NDdjYjkwLi4zOGVlMGRmNjMzYTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9zY3NpL3pm Y3Bfc2NzaS5jCisrKyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3Bfc2NzaS5jCkBAIC0zLDcgKzMs NyBAQAogICoKICAqIEludGVyZmFjZSB0byBMaW51eCBTQ1NJIG1pZGxheWVyLgogICoKLSAqIENv cHlyaWdodCBJQk0gQ29ycC4gMjAwMiwgMjAxMworICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAy LCAyMDE1CiAgKi8KIAogI2RlZmluZSBLTVNHX0NPTVBPTkVOVCAiemZjcCIKQEAgLTU3Nyw2ICs1 NzcsOSBAQCBzdGF0aWMgdm9pZCB6ZmNwX3Njc2lfcnBvcnRfcmVnaXN0ZXIoc3RydWN0IHpmY3Bf cG9ydCAqcG9ydCkKIAlpZHMucG9ydF9pZCA9IHBvcnQtPmRfaWQ7CiAJaWRzLnJvbGVzID0gRkNf UlBPUlRfUk9MRV9GQ1BfVEFSR0VUOwogCisJemZjcF9kYmZfcmVjX3RyaWcoInNjcGFkZHkiLCBw b3J0LT5hZGFwdGVyLCBwb3J0LCBOVUxMLAorCQkJICBaRkNQX1BTRVVET19FUlBfQUNUSU9OX1JQ T1JUX0FERCwKKwkJCSAgWkZDUF9QU0VVRE9fRVJQX0FDVElPTl9SUE9SVF9BREQpOwogCXJwb3J0 ID0gZmNfcmVtb3RlX3BvcnRfYWRkKHBvcnQtPmFkYXB0ZXItPnNjc2lfaG9zdCwgMCwgJmlkcyk7 CiAJaWYgKCFycG9ydCkgewogCQlkZXZfZXJyKCZwb3J0LT5hZGFwdGVyLT5jY3dfZGV2aWNlLT5k ZXYsCkBAIC01OTgsNiArNjAxLDkgQEAgc3RhdGljIHZvaWQgemZjcF9zY3NpX3Jwb3J0X2Jsb2Nr KHN0cnVjdCB6ZmNwX3BvcnQgKnBvcnQpCiAJc3RydWN0IGZjX3Jwb3J0ICpycG9ydCA9IHBvcnQt PnJwb3J0OwogCiAJaWYgKHJwb3J0KSB7CisJCXpmY3BfZGJmX3JlY190cmlnKCJzY3BkZWx5Iiwg cG9ydC0+YWRhcHRlciwgcG9ydCwgTlVMTCwKKwkJCQkgIFpGQ1BfUFNFVURPX0VSUF9BQ1RJT05f UlBPUlRfREVMLAorCQkJCSAgWkZDUF9QU0VVRE9fRVJQX0FDVElPTl9SUE9SVF9ERUwpOwogCQlm Y19yZW1vdGVfcG9ydF9kZWxldGUocnBvcnQpOwogCQlwb3J0LT5ycG9ydCA9IE5VTEw7CiAJfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FyY21zci9hcmNtc3JfaGJhLmMgYi9kcml2ZXJzL3Nj c2kvYXJjbXNyL2FyY21zcl9oYmEuYwppbmRleCA0NDk0NTI5YzRhNjAuLmJmODdlMzk3Mzk1MyAx MDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FyY21zci9hcmNtc3JfaGJhLmMKKysrIGIvZHJpdmVy cy9zY3NpL2FyY21zci9hcmNtc3JfaGJhLmMKQEAgLTIwNjgsMTggKzIwNjgsOSBAQCBzdGF0aWMg aW50IGFyY21zcl9xdWV1ZV9jb21tYW5kX2xjayhzdHJ1Y3Qgc2NzaV9jbW5kICpjbWQsCiAJc3Ry dWN0IEFkYXB0ZXJDb250cm9sQmxvY2sgKmFjYiA9IChzdHJ1Y3QgQWRhcHRlckNvbnRyb2xCbG9j ayAqKSBob3N0LT5ob3N0ZGF0YTsKIAlzdHJ1Y3QgQ29tbWFuZENvbnRyb2xCbG9jayAqY2NiOwog CWludCB0YXJnZXQgPSBjbWQtPmRldmljZS0+aWQ7Ci0JaW50IGx1biA9IGNtZC0+ZGV2aWNlLT5s dW47Ci0JdWludDhfdCBzY3NpY21kID0gY21kLT5jbW5kWzBdOwogCWNtZC0+c2NzaV9kb25lID0g ZG9uZTsKIAljbWQtPmhvc3Rfc2NyaWJibGUgPSBOVUxMOwogCWNtZC0+cmVzdWx0ID0gMDsKLQlp ZiAoKHNjc2ljbWQgPT0gU1lOQ0hST05JWkVfQ0FDSEUpIHx8KHNjc2ljbWQgPT0gU0VORF9ESUFH Tk9TVElDKSl7Ci0JCWlmKGFjYi0+ZGV2c3RhdGVbdGFyZ2V0XVtsdW5dID09IEFSRUNBX1JBSURf R09ORSkgewotICAgIAkJCWNtZC0+cmVzdWx0ID0gKERJRF9OT19DT05ORUNUIDw8IDE2KTsKLQkJ fQotCQljbWQtPnNjc2lfZG9uZShjbWQpOwotCQlyZXR1cm4gMDsKLQl9CiAJaWYgKHRhcmdldCA9 PSAxNikgewogCQkvKiB2aXJ0dWFsIGRldmljZSBmb3IgaW9wIG1lc3NhZ2UgdHJhbnNmZXIgKi8K IAkJYXJjbXNyX2hhbmRsZV92aXJ0dWFsX2NvbW1hbmQoYWNiLCBjbWQpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9zY3NpL2libXZzY3NpL2libXZmYy5jIGIvZHJpdmVycy9zY3NpL2libXZzY3NpL2li bXZmYy5jCmluZGV4IDhkZDQ3Njg5ZDU4NC4uZjQxZmVhZjUwNDUyIDEwMDY0NAotLS0gYS9kcml2 ZXJzL3Njc2kvaWJtdnNjc2kvaWJtdmZjLmMKKysrIGIvZHJpdmVycy9zY3NpL2libXZzY3NpL2li bXZmYy5jCkBAIC03MTcsNyArNzE3LDYgQEAgc3RhdGljIGludCBpYm12ZmNfcmVzZXRfY3JxKHN0 cnVjdCBpYm12ZmNfaG9zdCAqdmhvc3QpCiAJc3Bpbl9sb2NrX2lycXNhdmUodmhvc3QtPmhvc3Qt Pmhvc3RfbG9jaywgZmxhZ3MpOwogCXZob3N0LT5zdGF0ZSA9IElCTVZGQ19OT19DUlE7CiAJdmhv c3QtPmxvZ2dlZF9pbiA9IDA7Ci0JaWJtdmZjX3NldF9ob3N0X2FjdGlvbih2aG9zdCwgSUJNVkZD X0hPU1RfQUNUSU9OX05PTkUpOwogCiAJLyogQ2xlYW4gb3V0IHRoZSBxdWV1ZSAqLwogCW1lbXNl dChjcnEtPm1zZ3MsIDAsIFBBR0VfU0laRSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbWVn YXJhaWQvbWVnYXJhaWRfc2FzLmggYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2Fz LmgKaW5kZXggMjkzYTM5NmI2NGFkLi41ZmI4YzI0ZGQ0NGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv c2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXMuaAorKysgYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQv bWVnYXJhaWRfc2FzLmgKQEAgLTE3MzQsNyArMTczNCw3IEBAIHN0cnVjdCBtZWdhc2FzX2luc3Rh bmNlX3RlbXBsYXRlIHsKIH07CiAKICNkZWZpbmUgTUVHQVNBU19JU19MT0dJQ0FMKHNjcCkJCQkJ CQlcCi0JKHNjcC0+ZGV2aWNlLT5jaGFubmVsIDwgTUVHQVNBU19NQVhfUERfQ0hBTk5FTFMpID8g MCA6IDEKKwkoKHNjcC0+ZGV2aWNlLT5jaGFubmVsIDwgTUVHQVNBU19NQVhfUERfQ0hBTk5FTFMp ID8gMCA6IDEpCiAKICNkZWZpbmUgTUVHQVNBU19ERVZfSU5ERVgoaW5zdCwgc2NwKQkJCQkJXAog CSgoc2NwLT5kZXZpY2UtPmNoYW5uZWwgJSAyKSAqIE1FR0FTQVNfTUFYX0RFVl9QRVJfQ0hBTk5F TCkgKyAJXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19i YXNlLmMgYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Jhc2UuYwppbmRleCAw ZjZmMjk2ZWFmZjkuLjU1MDM2MDc5ZDA3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL21lZ2Fy YWlkL21lZ2FyYWlkX3Nhc19iYXNlLmMKKysrIGIvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2Fy YWlkX3Nhc19iYXNlLmMKQEAgLTE1ODYsMTYgKzE1ODYsMTMgQEAgbWVnYXNhc19xdWV1ZV9jb21t YW5kX2xjayhzdHJ1Y3Qgc2NzaV9jbW5kICpzY21kLCB2b2lkICgqZG9uZSkgKHN0cnVjdCBzY3Np X2NtbmQKIAkJZ290byBvdXRfZG9uZTsKIAl9CiAKLQlzd2l0Y2ggKHNjbWQtPmNtbmRbMF0pIHsK LQljYXNlIFNZTkNIUk9OSVpFX0NBQ0hFOgotCQkvKgotCQkgKiBGVyB0YWtlcyBjYXJlIG9mIGZs dXNoIGNhY2hlIG9uIGl0cyBvd24KLQkJICogTm8gbmVlZCB0byBzZW5kIGl0IGRvd24KLQkJICov CisJLyoKKwkgKiBGVyB0YWtlcyBjYXJlIG9mIGZsdXNoIGNhY2hlIG9uIGl0cyBvd24gZm9yIFZp cnR1YWwgRGlzay4KKwkgKiBObyBuZWVkIHRvIHNlbmQgaXQgZG93biBmb3IgVkQuIEZvciBKQk9E IHNlbmQgU1lOQ0hST05JWkVfQ0FDSEUgdG8gRlcuCisJICovCisJaWYgKChzY21kLT5jbW5kWzBd ID09IFNZTkNIUk9OSVpFX0NBQ0hFKSAmJiBNRUdBU0FTX0lTX0xPR0lDQUwoc2NtZCkpIHsKIAkJ c2NtZC0+cmVzdWx0ID0gRElEX09LIDw8IDE2OwogCQlnb3RvIG91dF9kb25lOwotCWRlZmF1bHQ6 Ci0JCWJyZWFrOwogCX0KIAogCWlmIChpbnN0YW5jZS0+aW5zdGFuY2V0LT5idWlsZF9hbmRfaXNz dWVfY21kKGluc3RhbmNlLCBzY21kKSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL21wdDNz YXMvbXB0M3Nhc19zY3NpaC5jIGIvZHJpdmVycy9zY3NpL21wdDNzYXMvbXB0M3Nhc19zY3NpaC5j CmluZGV4IDE4ZTcxM2RiMWQzMi4uNTdmYjhmMDQwYTFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Nj c2kvbXB0M3Nhcy9tcHQzc2FzX3Njc2loLmMKKysrIGIvZHJpdmVycy9zY3NpL21wdDNzYXMvbXB0 M3Nhc19zY3NpaC5jCkBAIC0xNjI1LDcgKzE2MjUsMTAgQEAgX3Njc2loX2dldF92b2x1bWVfY2Fw YWJpbGl0aWVzKHN0cnVjdCBNUFQzU0FTX0FEQVBURVIgKmlvYywKIAlyZXR1cm4gMDsKIH0KIAot CitzdGF0aWMgaW5saW5lIGJvb2wgYXRhXzEyXzE2X2NtZChzdHJ1Y3Qgc2NzaV9jbW5kICpzY21k KQoreworCXJldHVybiAoc2NtZC0+Y21uZFswXSA9PSBBVEFfMTIgfHwgc2NtZC0+Y21uZFswXSA9 PSBBVEFfMTYpOworfQogCiAvKioKICAqIF9zY3NpaF9lbmFibGVfdGxyIC0gc2V0dGluZyBUTFIg ZmxhZ3MKQEAgLTM1NDEsNiArMzU0NCwxMyBAQCBfc2NzaWhfcWNtZChzdHJ1Y3QgU2NzaV9Ib3N0 ICpzaG9zdCwgc3RydWN0IHNjc2lfY21uZCAqc2NtZCkKIAkJc2NzaV9wcmludF9jb21tYW5kKHNj bWQpOwogI2VuZGlmCiAKKwkvKgorCSAqIExvY2sgdGhlIGRldmljZSBmb3IgYW55IHN1YnNlcXVl bnQgY29tbWFuZCB1bnRpbCBjb21tYW5kIGlzCisJICogZG9uZS4KKwkgKi8KKwlpZiAoYXRhXzEy XzE2X2NtZChzY21kKSkKKwkJc2NzaV9pbnRlcm5hbF9kZXZpY2VfYmxvY2soc2NtZC0+ZGV2aWNl KTsKKwogCXNhc19kZXZpY2VfcHJpdl9kYXRhID0gc2NtZC0+ZGV2aWNlLT5ob3N0ZGF0YTsKIAlp ZiAoIXNhc19kZXZpY2VfcHJpdl9kYXRhIHx8ICFzYXNfZGV2aWNlX3ByaXZfZGF0YS0+c2FzX3Rh cmdldCkgewogCQlzY21kLT5yZXN1bHQgPSBESURfTk9fQ09OTkVDVCA8PCAxNjsKQEAgLTQwNDEs NiArNDA1MSw5IEBAIF9zY3NpaF9pb19kb25lKHN0cnVjdCBNUFQzU0FTX0FEQVBURVIgKmlvYywg dTE2IHNtaWQsIHU4IG1zaXhfaW5kZXgsIHUzMiByZXBseSkKIAlpZiAoc2NtZCA9PSBOVUxMKQog CQlyZXR1cm4gMTsKIAorCWlmIChhdGFfMTJfMTZfY21kKHNjbWQpKQorCQlzY3NpX2ludGVybmFs X2RldmljZV91bmJsb2NrKHNjbWQtPmRldmljZSwgU0RFVl9SVU5OSU5HKTsKKwogCW1waV9yZXF1 ZXN0ID0gbXB0M3Nhc19iYXNlX2dldF9tc2dfZnJhbWUoaW9jLCBzbWlkKTsKIAogCWlmIChtcGlf cmVwbHkgPT0gTlVMTCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Njc2lfZGVidWcuYyBi L2RyaXZlcnMvc2NzaS9zY3NpX2RlYnVnLmMKaW5kZXggMTMyOGEyNjIxMDcwLi5lOWU0M2Y3ZGU2 NTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zY3NpX2RlYnVnLmMKKysrIGIvZHJpdmVycy9z Y3NpL3Njc2lfZGVidWcuYwpAQCAtMzQ3OCw2ICszNDc4LDcgQEAgc3RhdGljIHZvaWQgX19leGl0 IHNjc2lfZGVidWdfZXhpdCh2b2lkKQogCWJ1c191bnJlZ2lzdGVyKCZwc2V1ZG9fbGxkX2J1cyk7 CiAJcm9vdF9kZXZpY2VfdW5yZWdpc3Rlcihwc2V1ZG9fcHJpbWFyeSk7CiAKKwl2ZnJlZShtYXBf c3RvcmVwKTsKIAlpZiAoZGlmX3N0b3JlcCkKIAkJdmZyZWUoZGlmX3N0b3JlcCk7CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX3NjYW4uYyBiL2RyaXZlcnMvc2NzaS9zY3NpX3NjYW4u YwppbmRleCA5ODk5NmJhODdmM2IuLjgxZDQxNTExNzlkOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9z Y3NpL3Njc2lfc2Nhbi5jCisrKyBiL2RyaXZlcnMvc2NzaS9zY3NpX3NjYW4uYwpAQCAtMTU0Niwx MiArMTU0NiwxMiBAQCBzdGF0aWMgaW50IHNjc2lfcmVwb3J0X2x1bl9zY2FuKHN0cnVjdCBzY3Np X3RhcmdldCAqc3RhcmdldCwgaW50IGJmbGFncywKICBvdXRfZXJyOgogCWtmcmVlKGx1bl9kYXRh KTsKICBvdXQ6Ci0Jc2NzaV9kZXZpY2VfcHV0KHNkZXYpOwogCWlmIChzY3NpX2RldmljZV9jcmVh dGVkKHNkZXYpKQogCQkvKgogCQkgKiB0aGUgc2RldiB3ZSB1c2VkIGRpZG4ndCBhcHBlYXIgaW4g dGhlIHJlcG9ydCBsdW5zIHNjYW4KIAkJICovCiAJCV9fc2NzaV9yZW1vdmVfZGV2aWNlKHNkZXYp OworCXNjc2lfZGV2aWNlX3B1dChzZGV2KTsKIAlyZXR1cm4gcmV0OwogfQogCmRpZmYgLS1naXQg YS9kcml2ZXJzL3Njc2kvc2cuYyBiL2RyaXZlcnMvc2NzaS9zZy5jCmluZGV4IGUxYTZhYmU4OTlm OS4uYjRkNTA2NjJmYzZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2cuYworKysgYi9kcml2 ZXJzL3Njc2kvc2cuYwpAQCAtNTY4LDYgKzU2OCw5IEBAIHNnX3dyaXRlKHN0cnVjdCBmaWxlICpm aWxwLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY291bnQsIGxvZmZfdCAqIHBwb3Mp CiAJc2dfaW9faGRyX3QgKmhwOwogCXVuc2lnbmVkIGNoYXIgY21uZFtNQVhfQ09NTUFORF9TSVpF XTsKIAorCWlmICh1bmxpa2VseShzZWdtZW50X2VxKGdldF9mcygpLCBLRVJORUxfRFMpKSkKKwkJ cmV0dXJuIC1FSU5WQUw7CisKIAlpZiAoKCEoc2ZwID0gKFNnX2ZkICopIGZpbHAtPnByaXZhdGVf ZGF0YSkpIHx8ICghKHNkcCA9IHNmcC0+cGFyZW50ZHApKSkKIAkJcmV0dXJuIC1FTlhJTzsKIAlT Q1NJX0xPR19USU1FT1VUKDMsIHByaW50aygic2dfd3JpdGU6ICVzLCBjb3VudD0lZFxuIiwKQEAg LTc2Niw4ICs3NjksMTEgQEAgc2dfY29tbW9uX3dyaXRlKFNnX2ZkICogc2ZwLCBTZ19yZXF1ZXN0 ICogc3JwLAogCQlyZXR1cm4gazsJLyogcHJvYmFibHkgb3V0IG9mIHNwYWNlIC0tPiBFTk9NRU0g Ki8KIAl9CiAJaWYgKHNkcC0+ZGV0YWNoZWQpIHsKLQkJaWYgKHNycC0+YmlvKQorCQlpZiAoc3Jw LT5iaW8pIHsKIAkJCWJsa19lbmRfcmVxdWVzdF9hbGwoc3JwLT5ycSwgLUVJTyk7CisJCQlzcnAt PnJxID0gTlVMTDsKKwkJfQorCiAJCXNnX2ZpbmlzaF9yZW1fcmVxKHNycCk7CiAJCXJldHVybiAt RU5PREVWOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb24u YyBiL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb24uYwpvbGQgbW9kZSAxMDA2NDQKbmV3 IG1vZGUgMTAwNzU1CmluZGV4IDNlYjg0NWJhZjNmNS4uYzlmNjlkMzE2Y2NjCi0tLSBhL2RyaXZl cnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb24uYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYW5kcm9p ZC9pb24vaW9uLmMKQEAgLTM4OSwxMyArMzg5LDIyIEBAIHN0YXRpYyB2b2lkIGlvbl9oYW5kbGVf Z2V0KHN0cnVjdCBpb25faGFuZGxlICpoYW5kbGUpCiAJa3JlZl9nZXQoJmhhbmRsZS0+cmVmKTsK IH0KIAotc3RhdGljIGludCBpb25faGFuZGxlX3B1dChzdHJ1Y3QgaW9uX2hhbmRsZSAqaGFuZGxl KQorc3RhdGljIGludCBpb25faGFuZGxlX3B1dF9ub2xvY2soc3RydWN0IGlvbl9oYW5kbGUgKmhh bmRsZSkKK3sKKwlpbnQgcmV0OworCisJcmV0ID0ga3JlZl9wdXQoJmhhbmRsZS0+cmVmLCBpb25f aGFuZGxlX2Rlc3Ryb3kpOworCisJcmV0dXJuIHJldDsKK30KKworaW50IGlvbl9oYW5kbGVfcHV0 KHN0cnVjdCBpb25faGFuZGxlICpoYW5kbGUpCiB7CiAJc3RydWN0IGlvbl9jbGllbnQgKmNsaWVu dCA9IGhhbmRsZS0+Y2xpZW50OwogCWludCByZXQ7CiAKIAltdXRleF9sb2NrKCZjbGllbnQtPmxv Y2spOwotCXJldCA9IGtyZWZfcHV0KCZoYW5kbGUtPnJlZiwgaW9uX2hhbmRsZV9kZXN0cm95KTsK KwlyZXQgPSBpb25faGFuZGxlX3B1dF9ub2xvY2soaGFuZGxlKTsKIAltdXRleF91bmxvY2soJmNs aWVudC0+bG9jayk7CiAKIAlyZXR1cm4gcmV0OwpAQCAtNDE5LDIwICs0MjgsMzAgQEAgc3RhdGlj IHN0cnVjdCBpb25faGFuZGxlICppb25faGFuZGxlX2xvb2t1cChzdHJ1Y3QgaW9uX2NsaWVudCAq Y2xpZW50LAogCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwogfQogCi1zdGF0aWMgc3RydWN0IGlv bl9oYW5kbGUgKmlvbl9oYW5kbGVfZ2V0X2J5X2lkKHN0cnVjdCBpb25fY2xpZW50ICpjbGllbnQs CitzdGF0aWMgc3RydWN0IGlvbl9oYW5kbGUgKmlvbl9oYW5kbGVfZ2V0X2J5X2lkX25vbG9jayhz dHJ1Y3QgaW9uX2NsaWVudCAqY2xpZW50LAogCQkJCQkJaW50IGlkKQogewogCXN0cnVjdCBpb25f aGFuZGxlICpoYW5kbGU7CiAKLQltdXRleF9sb2NrKCZjbGllbnQtPmxvY2spOwogCWhhbmRsZSA9 IGlkcl9maW5kKCZjbGllbnQtPmlkciwgaWQpOwogCWlmIChoYW5kbGUpCiAJCWlvbl9oYW5kbGVf Z2V0KGhhbmRsZSk7Ci0JbXV0ZXhfdW5sb2NrKCZjbGllbnQtPmxvY2spOwogCiAJcmV0dXJuIGhh bmRsZSA/IGhhbmRsZSA6IEVSUl9QVFIoLUVJTlZBTCk7CiB9CiAKK3N0cnVjdCBpb25faGFuZGxl ICppb25faGFuZGxlX2dldF9ieV9pZChzdHJ1Y3QgaW9uX2NsaWVudCAqY2xpZW50LAorCQkJCQkJ aW50IGlkKQoreworCXN0cnVjdCBpb25faGFuZGxlICpoYW5kbGU7CisKKwltdXRleF9sb2NrKCZj bGllbnQtPmxvY2spOworCWhhbmRsZSA9IGlvbl9oYW5kbGVfZ2V0X2J5X2lkX25vbG9jayhjbGll bnQsIGlkKTsKKwltdXRleF91bmxvY2soJmNsaWVudC0+bG9jayk7CisKKwlyZXR1cm4gaGFuZGxl OworfQorCiBzdGF0aWMgYm9vbCBpb25faGFuZGxlX3ZhbGlkYXRlKHN0cnVjdCBpb25fY2xpZW50 ICpjbGllbnQsCiAJCQkJc3RydWN0IGlvbl9oYW5kbGUgKmhhbmRsZSkKIHsKQEAgLTUzNCwyMiAr NTUzLDI4IEBAIHN0cnVjdCBpb25faGFuZGxlICppb25fYWxsb2Moc3RydWN0IGlvbl9jbGllbnQg KmNsaWVudCwgc2l6ZV90IGxlbiwKIH0KIEVYUE9SVF9TWU1CT0woaW9uX2FsbG9jKTsKIAotdm9p ZCBpb25fZnJlZShzdHJ1Y3QgaW9uX2NsaWVudCAqY2xpZW50LCBzdHJ1Y3QgaW9uX2hhbmRsZSAq aGFuZGxlKQorc3RhdGljIHZvaWQgaW9uX2ZyZWVfbm9sb2NrKHN0cnVjdCBpb25fY2xpZW50ICpj bGllbnQsIHN0cnVjdCBpb25faGFuZGxlICpoYW5kbGUpCiB7CiAJYm9vbCB2YWxpZF9oYW5kbGU7 CiAKIAlCVUdfT04oY2xpZW50ICE9IGhhbmRsZS0+Y2xpZW50KTsKIAotCW11dGV4X2xvY2soJmNs aWVudC0+bG9jayk7CiAJdmFsaWRfaGFuZGxlID0gaW9uX2hhbmRsZV92YWxpZGF0ZShjbGllbnQs IGhhbmRsZSk7CiAKIAlpZiAoIXZhbGlkX2hhbmRsZSkgewogCQlXQVJOKDEsICIlczogaW52YWxp ZCBoYW5kbGUgcGFzc2VkIHRvIGZyZWUuXG4iLCBfX2Z1bmNfXyk7Ci0JCW11dGV4X3VubG9jaygm Y2xpZW50LT5sb2NrKTsKIAkJcmV0dXJuOwogCX0KKwlpb25faGFuZGxlX3B1dF9ub2xvY2soaGFu ZGxlKTsKK30KKwordm9pZCBpb25fZnJlZShzdHJ1Y3QgaW9uX2NsaWVudCAqY2xpZW50LCBzdHJ1 Y3QgaW9uX2hhbmRsZSAqaGFuZGxlKQoreworCUJVR19PTihjbGllbnQgIT0gaGFuZGxlLT5jbGll bnQpOworCisJbXV0ZXhfbG9jaygmY2xpZW50LT5sb2NrKTsKKwlpb25fZnJlZV9ub2xvY2soY2xp ZW50LCBoYW5kbGUpOwogCW11dGV4X3VubG9jaygmY2xpZW50LT5sb2NrKTsKLQlpb25faGFuZGxl X3B1dChoYW5kbGUpOwogfQogRVhQT1JUX1NZTUJPTChpb25fZnJlZSk7CiAKQEAgLTEyNzcsMTEg KzEzMDIsMTUgQEAgc3RhdGljIGxvbmcgaW9uX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNp Z25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIAl7CiAJCXN0cnVjdCBpb25faGFuZGxl ICpoYW5kbGU7CiAKLQkJaGFuZGxlID0gaW9uX2hhbmRsZV9nZXRfYnlfaWQoY2xpZW50LCBkYXRh LmhhbmRsZS5oYW5kbGUpOwotCQlpZiAoSVNfRVJSKGhhbmRsZSkpCisJCW11dGV4X2xvY2soJmNs aWVudC0+bG9jayk7CisJCWhhbmRsZSA9IGlvbl9oYW5kbGVfZ2V0X2J5X2lkX25vbG9jayhjbGll bnQsIGRhdGEuaGFuZGxlLmhhbmRsZSk7CisJCWlmIChJU19FUlIoaGFuZGxlKSkgeworCQkJbXV0 ZXhfdW5sb2NrKCZjbGllbnQtPmxvY2spOwogCQkJcmV0dXJuIFBUUl9FUlIoaGFuZGxlKTsKLQkJ aW9uX2ZyZWUoY2xpZW50LCBoYW5kbGUpOwotCQlpb25faGFuZGxlX3B1dChoYW5kbGUpOworCQl9 CisJCWlvbl9mcmVlX25vbG9jayhjbGllbnQsIGhhbmRsZSk7CisJCWlvbl9oYW5kbGVfcHV0X25v bG9jayhoYW5kbGUpOworCQltdXRleF91bmxvY2soJmNsaWVudC0+bG9jayk7CiAJCWJyZWFrOwog CX0KIAljYXNlIElPTl9JT0NfU0hBUkU6CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlv L2ltcGVkYW5jZS1hbmFseXplci9hZDU5MzMuYyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vaW1wZWRh bmNlLWFuYWx5emVyL2FkNTkzMy5jCmluZGV4IDk3ZDRiM2ZiN2U5NS4uZjhlYTFiNDM2Y2ZiIDEw MDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltcGVkYW5jZS1hbmFseXplci9hZDU5MzMu YworKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltcGVkYW5jZS1hbmFseXplci9hZDU5MzMuYwpA QCAtNjQ2LDYgKzY0Niw3IEBAIHN0YXRpYyB2b2lkIGFkNTkzM193b3JrKHN0cnVjdCB3b3JrX3N0 cnVjdCAqd29yaykKIAlzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gaTJjX2dldF9jbGllbnRk YXRhKHN0LT5jbGllbnQpOwogCXNpZ25lZCBzaG9ydCBidWZbMl07CiAJdW5zaWduZWQgY2hhciBz dGF0dXM7CisJaW50IHJldDsKIAogCW11dGV4X2xvY2soJmluZGlvX2Rldi0+bWxvY2spOwogCWlm IChzdC0+c3RhdGUgPT0gQUQ1OTMzX0NUUkxfSU5JVF9TVEFSVF9GUkVRKSB7CkBAIC02NTMsMTkg KzY1NCwyMiBAQCBzdGF0aWMgdm9pZCBhZDU5MzNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndv cmspCiAJCWFkNTkzM19jbWQoc3QsIEFENTkzM19DVFJMX1NUQVJUX1NXRUVQKTsKIAkJc3QtPnN0 YXRlID0gQUQ1OTMzX0NUUkxfU1RBUlRfU1dFRVA7CiAJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygm c3QtPndvcmssIHN0LT5wb2xsX3RpbWVfamlmZmllcyk7Ci0JCW11dGV4X3VubG9jaygmaW5kaW9f ZGV2LT5tbG9jayk7Ci0JCXJldHVybjsKKwkJZ290byBvdXQ7CiAJfQogCi0JYWQ1OTMzX2kyY19y ZWFkKHN0LT5jbGllbnQsIEFENTkzM19SRUdfU1RBVFVTLCAxLCAmc3RhdHVzKTsKKwlyZXQgPSBh ZDU5MzNfaTJjX3JlYWQoc3QtPmNsaWVudCwgQUQ1OTMzX1JFR19TVEFUVVMsIDEsICZzdGF0dXMp OworCWlmIChyZXQpCisJCWdvdG8gb3V0OwogCiAJaWYgKHN0YXR1cyAmIEFENTkzM19TVEFUX0RB VEFfVkFMSUQpIHsKIAkJaW50IHNjYW5fY291bnQgPSBiaXRtYXBfd2VpZ2h0KGluZGlvX2Rldi0+ YWN0aXZlX3NjYW5fbWFzaywKIAkJCQkJICAgICAgIGluZGlvX2Rldi0+bWFza2xlbmd0aCk7Ci0J CWFkNTkzM19pMmNfcmVhZChzdC0+Y2xpZW50LAorCQlyZXQgPSBhZDU5MzNfaTJjX3JlYWQoc3Qt PmNsaWVudCwKIAkJCQl0ZXN0X2JpdCgxLCBpbmRpb19kZXYtPmFjdGl2ZV9zY2FuX21hc2spID8K IAkJCQlBRDU5MzNfUkVHX1JFQUxfREFUQSA6IEFENTkzM19SRUdfSU1BR19EQVRBLAogCQkJCXNj YW5fY291bnQgKiAyLCAodTggKilidWYpOworCQlpZiAocmV0KQorCQkJZ290byBvdXQ7CiAKIAkJ aWYgKHNjYW5fY291bnQgPT0gMikgewogCQkJYnVmWzBdID0gYmUxNl90b19jcHUoYnVmWzBdKTsK QEAgLTY3Nyw4ICs2ODEsNyBAQCBzdGF0aWMgdm9pZCBhZDU5MzNfd29yayhzdHJ1Y3Qgd29ya19z dHJ1Y3QgKndvcmspCiAJfSBlbHNlIHsKIAkJLyogbm8gZGF0YSBhdmFpbGFibGUgLSB0cnkgYWdh aW4gbGF0ZXIgKi8KIAkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZzdC0+d29yaywgc3QtPnBvbGxf dGltZV9qaWZmaWVzKTsKLQkJbXV0ZXhfdW5sb2NrKCZpbmRpb19kZXYtPm1sb2NrKTsKLQkJcmV0 dXJuOworCQlnb3RvIG91dDsKIAl9CiAKIAlpZiAoc3RhdHVzICYgQUQ1OTMzX1NUQVRfU1dFRVBf RE9ORSkgewpAQCAtNjkwLDcgKzY5Myw3IEBAIHN0YXRpYyB2b2lkIGFkNTkzM193b3JrKHN0cnVj dCB3b3JrX3N0cnVjdCAqd29yaykKIAkJYWQ1OTMzX2NtZChzdCwgQUQ1OTMzX0NUUkxfSU5DX0ZS RVEpOwogCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnN0LT53b3JrLCBzdC0+cG9sbF90aW1lX2pp ZmZpZXMpOwogCX0KLQorb3V0OgogCW11dGV4X3VubG9jaygmaW5kaW9fZGV2LT5tbG9jayk7CiB9 CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9udmVjL252ZWNfcHMyLmMgYi9kcml2ZXJz L3N0YWdpbmcvbnZlYy9udmVjX3BzMi5jCmluZGV4IDQ1YjJmMTMwOGUwMS4uOTBlN2Q4NDE4MjVi IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvbnZlYy9udmVjX3BzMi5jCisrKyBiL2RyaXZl cnMvc3RhZ2luZy9udmVjL252ZWNfcHMyLmMKQEAgLTEwNCwxMyArMTA0LDEyIEBAIHN0YXRpYyBp bnQgbnZlY19tb3VzZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogewogCXN0 cnVjdCBudmVjX2NoaXAgKm52ZWMgPSBkZXZfZ2V0X2RydmRhdGEocGRldi0+ZGV2LnBhcmVudCk7 CiAJc3RydWN0IHNlcmlvICpzZXJfZGV2OwotCWNoYXIgbW91c2VfcmVzZXRbXSA9IHsgTlZFQ19Q UzIsIFNFTkRfQ09NTUFORCwgUFNNT1VTRV9SU1QsIDMgfTsKIAotCXNlcl9kZXYgPSBkZXZtX2t6 YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKHN0cnVjdCBzZXJpbyksIEdGUF9LRVJORUwpOworCXNl cl9kZXYgPSBremFsbG9jKHNpemVvZihzdHJ1Y3Qgc2VyaW8pLCBHRlBfS0VSTkVMKTsKIAlpZiAo c2VyX2RldiA9PSBOVUxMKQogCQlyZXR1cm4gLUVOT01FTTsKIAotCXNlcl9kZXYtPmlkLnR5cGUg PSBTRVJJT19QU19QU1RIUlU7CisJc2VyX2Rldi0+aWQudHlwZSA9IFNFUklPXzgwNDI7CiAJc2Vy X2Rldi0+d3JpdGUgPSBwczJfc2VuZGNvbW1hbmQ7CiAJc2VyX2Rldi0+c3RhcnQgPSBwczJfc3Rh cnRzdHJlYW1pbmc7CiAJc2VyX2Rldi0+c3RvcCA9IHBzMl9zdG9wc3RyZWFtaW5nOwpAQCAtMTI1 LDkgKzEyNCw2IEBAIHN0YXRpYyBpbnQgbnZlY19tb3VzZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQogCiAJc2VyaW9fcmVnaXN0ZXJfcG9ydChzZXJfZGV2KTsKIAotCS8qIG1v dXNlIHJlc2V0ICovCi0JbnZlY193cml0ZV9hc3luYyhudmVjLCBtb3VzZV9yZXNldCwgc2l6ZW9m KG1vdXNlX3Jlc2V0KSk7Ci0KIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9z dGFnaW5nL3J0bDgxODhldS9vc19kZXAvdXNiX2ludGYuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4 MTg4ZXUvb3NfZGVwL3VzYl9pbnRmLmMKaW5kZXggZGI3ODVjMDVmMDFjLi5kOTU1MmJhMmMxNWQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg4ZXUvb3NfZGVwL3VzYl9pbnRmLmMK KysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxODhldS9vc19kZXAvdXNiX2ludGYuYwpAQCAtNDk0 LDggKzQ5NCwxMCBAQCBpbnQgcnR3X3Jlc3VtZV9wcm9jZXNzKHN0cnVjdCBhZGFwdGVyICpwYWRh cHRlcikKIAlwd3Jwcml2LT5ia2VlcGZ3YWxpdmUgPSBmYWxzZTsKIAogCURCR184OEUoImJrZWVw ZndhbGl2ZSgleClcbiIsIHB3cnByaXYtPmJrZWVwZndhbGl2ZSk7Ci0JaWYgKHBtX25ldGRldl9v cGVuKHBuZXRkZXYsIHRydWUpICE9IDApCisJaWYgKHBtX25ldGRldl9vcGVuKHBuZXRkZXYsIHRy dWUpICE9IDApIHsKKwkJX2V4aXRfcHdybG9jaygmcHdycHJpdi0+bG9jayk7CiAJCWdvdG8gZXhp dDsKKwl9CiAKIAluZXRpZl9kZXZpY2VfYXR0YWNoKHBuZXRkZXYpOwogCW5ldGlmX2NhcnJpZXJf b24ocG5ldGRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV90cmFu c3BvcnQuYyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX3RyYW5zcG9ydC5jCmluZGV4IDc3 NjlhZjk0YWVlMi4uZDNmNjU1MjNhMTlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3RhcmdldC90YXJn ZXRfY29yZV90cmFuc3BvcnQuYworKysgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV90cmFu c3BvcnQuYwpAQCAtMTYzNCw2ICsxNjM0LDcgQEAgdm9pZCB0cmFuc3BvcnRfZ2VuZXJpY19yZXF1 ZXN0X2ZhaWx1cmUoc3RydWN0IHNlX2NtZCAqY21kLAogCWNhc2UgVENNX0xPR0lDQUxfQkxPQ0tf R1VBUkRfQ0hFQ0tfRkFJTEVEOgogCWNhc2UgVENNX0xPR0lDQUxfQkxPQ0tfQVBQX1RBR19DSEVD S19GQUlMRUQ6CiAJY2FzZSBUQ01fTE9HSUNBTF9CTE9DS19SRUZfVEFHX0NIRUNLX0ZBSUxFRDoK KwljYXNlIFRDTV9DT1BZX1RBUkdFVF9ERVZJQ0VfTk9UX1JFQUNIQUJMRToKIAkJYnJlYWs7CiAJ Y2FzZSBUQ01fT1VUX09GX1JFU09VUkNFUzoKIAkJc2Vuc2VfcmVhc29uID0gVENNX0xPR0lDQUxf VU5JVF9DT01NVU5JQ0FUSU9OX0ZBSUxVUkU7CkBAIC0yOTE0LDYgKzI5MTUsMTYgQEAgdHJhbnNw b3J0X3NlbmRfY2hlY2tfY29uZGl0aW9uX2FuZF9zZW5zZShzdHJ1Y3Qgc2VfY21kICpjbWQsCiAJ CWJ1ZmZlcltTUENfQVNDUV9LRVlfT0ZGU0VUXSA9IDB4MDM7CiAJCXRyYW5zcG9ydF9lcnJfc2Vj dG9yX2luZm8oYnVmZmVyLCBjbWQtPmJhZF9zZWN0b3IpOwogCQlicmVhazsKKwljYXNlIFRDTV9D T1BZX1RBUkdFVF9ERVZJQ0VfTk9UX1JFQUNIQUJMRToKKwkJLyogQ1VSUkVOVCBFUlJPUiAqLwor CQlidWZmZXJbMF0gPSAweDcwOworCQlidWZmZXJbU1BDX0FERF9TRU5TRV9MRU5fT0ZGU0VUXSA9 IDEwOworCQlidWZmZXJbU1BDX1NFTlNFX0tFWV9PRkZTRVRdID0gQ09QWV9BQk9SVEVEOworCQli dWZmZXJbU1BDX0FTQ19LRVlfT0ZGU0VUXSA9IDB4MGQ7CisJCS8qIENPUFkgVEFSR0VUIERFVklD RSBOT1QgUkVBQ0hBQkxFICovCisJCWJ1ZmZlcltTUENfQVNDUV9LRVlfT0ZGU0VUXSA9IDB4MDI7 CisJCXRyYW5zcG9ydF9lcnJfc2VjdG9yX2luZm8oYnVmZmVyLCBjbWQtPmJhZF9zZWN0b3IpOwor CQlicmVhazsKIAljYXNlIFRDTV9MT0dJQ0FMX1VOSVRfQ09NTVVOSUNBVElPTl9GQUlMVVJFOgog CWRlZmF1bHQ6CiAJCS8qIENVUlJFTlQgRVJST1IgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGFy Z2V0L3RhcmdldF9jb3JlX3hjb3B5LmMgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV94Y29w eS5jCmluZGV4IGU5MTg2Y2RmMzVlOS4uNjBlNjExZGY0ODE4IDEwMDY0NAotLS0gYS9kcml2ZXJz L3RhcmdldC90YXJnZXRfY29yZV94Y29weS5jCisrKyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9j b3JlX3hjb3B5LmMKQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgaW50IHRhcmdldF94Y29weV9s b2NhdGVfc2VfZGV2X2U0KHN0cnVjdCBzZV9jbWQgKnNlX2NtZCwgc3RydWN0IHhjb3B5X29wCiAJ fQogCW11dGV4X3VubG9jaygmZ19kZXZpY2VfbXV0ZXgpOwogCi0JcHJfZXJyKCJVbmFibGUgdG8g bG9jYXRlIDB4ZTQgZGVzY3JpcHRvciBmb3IgRVhURU5ERURfQ09QWVxuIik7CisJcHJfZGVidWdf cmF0ZWxpbWl0ZWQoIlVuYWJsZSB0byBsb2NhdGUgMHhlNCBkZXNjcmlwdG9yIGZvciBFWFRFTkRF RF9DT1BZXG4iKTsKIAlyZXR1cm4gLUVJTlZBTDsKIH0KIApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0 YXRpYyBpbnQgdGFyZ2V0X3hjb3B5X3BhcnNlX3RpZGRlc2NfZTQoc3RydWN0IHNlX2NtZCAqc2Vf Y21kLCBzdHJ1Y3QgeGNvcHlfb3AKIAogc3RhdGljIGludCB0YXJnZXRfeGNvcHlfcGFyc2VfdGFy Z2V0X2Rlc2NyaXB0b3JzKHN0cnVjdCBzZV9jbWQgKnNlX2NtZCwKIAkJCQlzdHJ1Y3QgeGNvcHlf b3AgKnhvcCwgdW5zaWduZWQgY2hhciAqcCwKLQkJCQl1bnNpZ25lZCBzaG9ydCB0ZGxsKQorCQkJ CXVuc2lnbmVkIHNob3J0IHRkbGwsIHNlbnNlX3JlYXNvbl90ICpzZW5zZV9yZXQpCiB7CiAJc3Ry dWN0IHNlX2RldmljZSAqbG9jYWxfZGV2ID0gc2VfY21kLT5zZV9kZXY7CiAJdW5zaWduZWQgY2hh ciAqZGVzYyA9IHA7CkBAIC0yMDUsNiArMjA1LDggQEAgc3RhdGljIGludCB0YXJnZXRfeGNvcHlf cGFyc2VfdGFyZ2V0X2Rlc2NyaXB0b3JzKHN0cnVjdCBzZV9jbWQgKnNlX2NtZCwKIAl1bnNpZ25l ZCBzaG9ydCBzdGFydCA9IDA7CiAJYm9vbCBzcmMgPSB0cnVlOwogCisJKnNlbnNlX3JldCA9IFRD TV9JTlZBTElEX1BBUkFNRVRFUl9MSVNUOworCiAJaWYgKG9mZnNldCAhPSAwKSB7CiAJCXByX2Vy cigiWENPUFkgdGFyZ2V0IGRlc2NyaXB0b3IgbGlzdCBsZW5ndGggaXMgbm90IgogCQkJIiBtdWx0 aXBsZSBvZiAlZFxuIiwgWENPUFlfVEFSR0VUX0RFU0NfTEVOKTsKQEAgLTI1NSw5ICsyNTcsMTYg QEAgc3RhdGljIGludCB0YXJnZXRfeGNvcHlfcGFyc2VfdGFyZ2V0X2Rlc2NyaXB0b3JzKHN0cnVj dCBzZV9jbWQgKnNlX2NtZCwKIAkJcmMgPSB0YXJnZXRfeGNvcHlfbG9jYXRlX3NlX2Rldl9lNChz ZV9jbWQsIHhvcCwgdHJ1ZSk7CiAJZWxzZQogCQlyYyA9IHRhcmdldF94Y29weV9sb2NhdGVfc2Vf ZGV2X2U0KHNlX2NtZCwgeG9wLCBmYWxzZSk7Ci0KLQlpZiAocmMgPCAwKQorCS8qCisJICogSWYg YSBtYXRjaGluZyBJRUVFIE5BQSAweDgzIGRlc2NyaXB0b3IgZm9yIHRoZSByZXF1ZXN0ZWQgZGV2 aWNlCisJICogaXMgbm90IGxvY2F0ZWQgb24gdGhpcyBub2RlLCByZXR1cm4gQ09QWV9BQk9SVEVE IHdpdGggQVNRL0FTUUMKKwkgKiAweDBkLzB4MDIgLSBDT1BZX1RBUkdFVF9ERVZJQ0VfTk9UX1JF QUNIQUJMRSB0byByZXF1ZXN0IHRoZQorCSAqIGluaXRpYXRvciB0byBmYWxsIGJhY2sgdG8gbm9y bWFsIGNvcHkgbWV0aG9kLgorCSAqLworCWlmIChyYyA8IDApIHsKKwkJKnNlbnNlX3JldCA9IFRD TV9DT1BZX1RBUkdFVF9ERVZJQ0VfTk9UX1JFQUNIQUJMRTsKIAkJZ290byBvdXQ7CisJfQogCiAJ cHJfZGVidWcoIlhDT1BZIFRHVCBkZXNjOiBTb3VyY2UgZGV2OiAlcCBOQUEgSUVFRSBXV046IDB4 JTE2cGhOXG4iLAogCQkgeG9wLT5zcmNfZGV2LCAmeG9wLT5zcmNfdGlkX3d3blswXSk7CkBAIC02 OTgsNiArNzA3LDcgQEAgc3RhdGljIGludCB0YXJnZXRfeGNvcHlfcmVhZF9zb3VyY2UoCiAJcmMg PSB0YXJnZXRfeGNvcHlfc2V0dXBfcHRfY21kKHhwdF9jbWQsIHhvcCwgc3JjX2RldiwgJmNkYlsw XSwKIAkJCQlyZW1vdGVfcG9ydCwgdHJ1ZSk7CiAJaWYgKHJjIDwgMCkgeworCQllY19jbWQtPnNj c2lfc3RhdHVzID0geHB0X2NtZC0+c2VfY21kLnNjc2lfc3RhdHVzOwogCQl0cmFuc3BvcnRfZ2Vu ZXJpY19mcmVlX2NtZChzZV9jbWQsIDApOwogCQlyZXR1cm4gcmM7CiAJfQpAQCAtNzA5LDYgKzcx OSw3IEBAIHN0YXRpYyBpbnQgdGFyZ2V0X3hjb3B5X3JlYWRfc291cmNlKAogCiAJcmMgPSB0YXJn ZXRfeGNvcHlfaXNzdWVfcHRfY21kKHhwdF9jbWQpOwogCWlmIChyYyA8IDApIHsKKwkJZWNfY21k LT5zY3NpX3N0YXR1cyA9IHhwdF9jbWQtPnNlX2NtZC5zY3NpX3N0YXR1czsKIAkJdHJhbnNwb3J0 X2dlbmVyaWNfZnJlZV9jbWQoc2VfY21kLCAwKTsKIAkJcmV0dXJuIHJjOwogCX0KQEAgLTc1OSw2 ICs3NzAsNyBAQCBzdGF0aWMgaW50IHRhcmdldF94Y29weV93cml0ZV9kZXN0aW5hdGlvbigKIAkJ CQlyZW1vdGVfcG9ydCwgZmFsc2UpOwogCWlmIChyYyA8IDApIHsKIAkJc3RydWN0IHNlX2NtZCAq c3JjX2NtZCA9ICZ4b3AtPnNyY19wdF9jbWQtPnNlX2NtZDsKKwkJZWNfY21kLT5zY3NpX3N0YXR1 cyA9IHhwdF9jbWQtPnNlX2NtZC5zY3NpX3N0YXR1czsKIAkJLyoKIAkJICogSWYgdGhlIGZhaWx1 cmUgaGFwcGVuZWQgYmVmb3JlIHRoZSB0X21lbV9saXN0IGhhbmQtb2ZmIGluCiAJCSAqIHRhcmdl dF94Y29weV9zZXR1cF9wdF9jbWQoKSwgUmVzZXQgbWVtb3J5ICsgY2xlYXIgZmxhZyBzbyB0aGF0 CkBAIC03NzQsNiArNzg2LDcgQEAgc3RhdGljIGludCB0YXJnZXRfeGNvcHlfd3JpdGVfZGVzdGlu YXRpb24oCiAKIAlyYyA9IHRhcmdldF94Y29weV9pc3N1ZV9wdF9jbWQoeHB0X2NtZCk7CiAJaWYg KHJjIDwgMCkgeworCQllY19jbWQtPnNjc2lfc3RhdHVzID0geHB0X2NtZC0+c2VfY21kLnNjc2lf c3RhdHVzOwogCQlzZV9jbWQtPnNlX2NtZF9mbGFncyAmPSB+U0NGX1BBU1NUSFJPVUdIX1NHX1RP X01FTV9OT0FMTE9DOwogCQl0cmFuc3BvcnRfZ2VuZXJpY19mcmVlX2NtZChzZV9jbWQsIDApOwog CQlyZXR1cm4gcmM7CkBAIC04NjAsOSArODczLDE0IEBAIHN0YXRpYyB2b2lkIHRhcmdldF94Y29w eV9kb193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIG91dDoKIAl4Y29weV9wdF91bmRl cGVuZF9yZW1vdGVkZXYoeG9wKTsKIAlrZnJlZSh4b3ApOwotCi0JcHJfd2FybigidGFyZ2V0X3hj b3B5X2RvX3dvcms6IFNldHRpbmcgWC1DT1BZIENIRUNLX0NPTkRJVElPTiAtPiBzZW5kaW5nIHJl c3BvbnNlXG4iKTsKLQllY19jbWQtPnNjc2lfc3RhdHVzID0gU0FNX1NUQVRfQ0hFQ0tfQ09ORElU SU9OOworCS8qCisJICogRG9uJ3Qgb3ZlcnJpZGUgYW4gZXJyb3Igc2NzaSBzdGF0dXMgaWYgaXQg aGFzIGFscmVhZHkgYmVlbiBzZXQKKwkgKi8KKwlpZiAoZWNfY21kLT5zY3NpX3N0YXR1cyA9PSBT QU1fU1RBVF9HT09EKSB7CisJCXByX3dhcm5fcmF0ZWxpbWl0ZWQoInRhcmdldF94Y29weV9kb193 b3JrOiByYzogJWQsIFNldHRpbmcgWC1DT1BZIgorCQkJIiBDSEVDS19DT05ESVRJT04gLT4gc2Vu ZGluZyByZXNwb25zZVxuIiwgcmMpOworCQllY19jbWQtPnNjc2lfc3RhdHVzID0gU0FNX1NUQVRf Q0hFQ0tfQ09ORElUSU9OOworCX0KIAl0YXJnZXRfY29tcGxldGVfY21kKGVjX2NtZCwgU0FNX1NU QVRfQ0hFQ0tfQ09ORElUSU9OKTsKIH0KIApAQCAtOTIwLDcgKzkzOCw3IEBAIHNlbnNlX3JlYXNv bl90IHRhcmdldF9kb194Y29weShzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpCiAJCSIgdGRsbDogJWh1 IHNkbGw6ICV1IGlubGluZV9kbDogJXVcbiIsIGxpc3RfaWQsIGxpc3RfaWRfdXNhZ2UsCiAJCXRk bGwsIHNkbGwsIGlubGluZV9kbCk7CiAKLQlyYyA9IHRhcmdldF94Y29weV9wYXJzZV90YXJnZXRf ZGVzY3JpcHRvcnMoc2VfY21kLCB4b3AsICZwWzE2XSwgdGRsbCk7CisJcmMgPSB0YXJnZXRfeGNv cHlfcGFyc2VfdGFyZ2V0X2Rlc2NyaXB0b3JzKHNlX2NtZCwgeG9wLCAmcFsxNl0sIHRkbGwsICZy ZXQpOwogCWlmIChyYyA8PSAwKQogCQlnb3RvIG91dDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy90 dHkvdHR5X2xkaXNjLmMgYi9kcml2ZXJzL3R0eS90dHlfbGRpc2MuYwppbmRleCAyZDgyMmFhMjU5 YjIuLjJiZjA4MzY2Y2Q1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvdHR5X2xkaXNjLmMKKysr IGIvZHJpdmVycy90dHkvdHR5X2xkaXNjLmMKQEAgLTQxNCw2ICs0MTQsMTAgQEAgRVhQT1JUX1NZ TUJPTF9HUEwodHR5X2xkaXNjX2ZsdXNoKTsKICAqCXRoZXkgYXJlIG5vdCBvbiBob3QgcGF0aHMg c28gYSBsaXR0bGUgZGlzY2lwbGluZSB3b24ndCBkbwogICoJYW55IGhhcm0uCiAgKgorICoJVGhl IGxpbmUgZGlzY2lwbGluZS1yZWxhdGVkIHR0eV9zdHJ1Y3QgZmllbGRzIGFyZSByZXNldCB0bwor ICoJcHJldmVudCB0aGUgbGRpc2MgZHJpdmVyIGZyb20gcmUtdXNpbmcgc3RhbGUgaW5mb3JtYXRp b24gZm9yCisgKgl0aGUgbmV3IGxkaXNjIGluc3RhbmNlLgorICoKICAqCUxvY2tpbmc6IHRha2Vz IHRlcm1pb3NfcndzZW0KICAqLwogCkBAIC00MjIsNiArNDI2LDkgQEAgc3RhdGljIHZvaWQgdHR5 X3NldF90ZXJtaW9zX2xkaXNjKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCBudW0pCiAJZG93 bl93cml0ZSgmdHR5LT50ZXJtaW9zX3J3c2VtKTsKIAl0dHktPnRlcm1pb3MuY19saW5lID0gbnVt OwogCXVwX3dyaXRlKCZ0dHktPnRlcm1pb3NfcndzZW0pOworCisJdHR5LT5kaXNjX2RhdGEgPSBO VUxMOworCXR0eS0+cmVjZWl2ZV9yb29tID0gMDsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9kcml2 ZXJzL3R0eS92dC92dC5jIGIvZHJpdmVycy90dHkvdnQvdnQuYwppbmRleCA5MDYyNjM2ZDMxNTQu LmE1N2YzNzYxYWI0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvdnQvdnQuYworKysgYi9kcml2 ZXJzL3R0eS92dC92dC5jCkBAIC04NjMsMTAgKzg2MywxNSBAQCBzdGF0aWMgaW50IHZjX2RvX3Jl c2l6ZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgdmNfZGF0YSAqdmMsCiAJaWYgKG5l d19jb2xzID09IHZjLT52Y19jb2xzICYmIG5ld19yb3dzID09IHZjLT52Y19yb3dzKQogCQlyZXR1 cm4gMDsKIAorCWlmIChuZXdfc2NyZWVuX3NpemUgPiAoNCA8PCAyMCkpCisJCXJldHVybiAtRUlO VkFMOwogCW5ld3NjcmVlbiA9IGttYWxsb2MobmV3X3NjcmVlbl9zaXplLCBHRlBfVVNFUik7CiAJ aWYgKCFuZXdzY3JlZW4pCiAJCXJldHVybiAtRU5PTUVNOwogCisJaWYgKHZjID09IHNlbF9jb25z KQorCQljbGVhcl9zZWxlY3Rpb24oKTsKKwogCW9sZF9yb3dzID0gdmMtPnZjX3Jvd3M7CiAJb2xk X3Jvd19zaXplID0gdmMtPnZjX3NpemVfcm93OwogCkBAIC0xMTY0LDcgKzExNjksNyBAQCBzdGF0 aWMgdm9pZCBjc2lfSihzdHJ1Y3QgdmNfZGF0YSAqdmMsIGludCB2cGFyKQogCQkJYnJlYWs7CiAJ CWNhc2UgMzogLyogZXJhc2Ugc2Nyb2xsLWJhY2sgYnVmZmVyIChhbmQgd2hvbGUgZGlzcGxheSkg Ki8KIAkJCXNjcl9tZW1zZXR3KHZjLT52Y19zY3JlZW5idWYsIHZjLT52Y192aWRlb19lcmFzZV9j aGFyLAotCQkJCSAgICB2Yy0+dmNfc2NyZWVuYnVmX3NpemUgPj4gMSk7CisJCQkJICAgIHZjLT52 Y19zY3JlZW5idWZfc2l6ZSk7CiAJCQlzZXRfb3JpZ2luKHZjKTsKIAkJCWlmIChDT05fSVNfVklT SUJMRSh2YykpCiAJCQkJdXBkYXRlX3NjcmVlbih2Yyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Vp by91aW9fZG1lbV9nZW5pcnEuYyBiL2RyaXZlcnMvdWlvL3Vpb19kbWVtX2dlbmlycS5jCmluZGV4 IDhkMGJiYTQ2OTU2Ni4uN2IwYzE5ZDRmOWIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Vpby91aW9f ZG1lbV9nZW5pcnEuYworKysgYi9kcml2ZXJzL3Vpby91aW9fZG1lbV9nZW5pcnEuYwpAQCAtMjI5 LDcgKzIyOSw3IEBAIHN0YXRpYyBpbnQgdWlvX2RtZW1fZ2VuaXJxX3Byb2JlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCSsrdWlvbWVtOwogCX0KIAotCXByaXYtPmRtZW1fcmVnaW9u X3N0YXJ0ID0gaTsKKwlwcml2LT5kbWVtX3JlZ2lvbl9zdGFydCA9IHVpb21lbSAtICZ1aW9pbmZv LT5tZW1bMF07CiAJcHJpdi0+bnVtX2RtZW1fcmVnaW9ucyA9IHBkYXRhLT5udW1fZHluYW1pY19y ZWdpb25zOwogCiAJZm9yIChpID0gMDsgaSA8IHBkYXRhLT5udW1fZHluYW1pY19yZWdpb25zOyAr K2kpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NvcmUuYyBiL2RyaXZlcnMv dXNiL2NoaXBpZGVhL2NvcmUuYwppbmRleCA0ZWNiNjUwMWE3ZWEuLjM5MGQ5OGE1MGQ0NCAxMDA2 NDQKLS0tIGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jCisrKyBiL2RyaXZlcnMvdXNiL2No aXBpZGVhL2NvcmUuYwpAQCAtNTg0LDYgKzU4NCw3IEBAIHN0YXRpYyBpbnQgY2lfaGRyY19wcm9i ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAK KwlzcGluX2xvY2tfaW5pdCgmY2ktPmxvY2spOwogCWNpLT5kZXYgPSBkZXY7CiAJY2ktPnBsYXRk YXRhID0gZGV2X2dldF9wbGF0ZGF0YShkZXYpOwogCWNpLT5pbXgyOF93cml0ZV9maXggPSAhIShj aS0+cGxhdGRhdGEtPmZsYWdzICYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL3Vk Yy5jIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvdWRjLmMKaW5kZXggODA5NjExNmZjNjYxLi5hODg3 YTg3NGQ2ZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL3VkYy5jCisrKyBiL2Ry aXZlcnMvdXNiL2NoaXBpZGVhL3VkYy5jCkBAIC0xNzk4LDggKzE3OTgsNiBAQCBzdGF0aWMgaW50 IHVkY19zdGFydChzdHJ1Y3QgY2lfaGRyYyAqY2kpCiAJc3RydWN0IGRldmljZSAqZGV2ID0gY2kt PmRldjsKIAlpbnQgcmV0dmFsID0gMDsKIAotCXNwaW5fbG9ja19pbml0KCZjaS0+bG9jayk7Ci0K IAljaS0+Z2FkZ2V0Lm9wcyAgICAgICAgICA9ICZ1c2JfZ2FkZ2V0X29wczsKIAljaS0+Z2FkZ2V0 LnNwZWVkICAgICAgICA9IFVTQl9TUEVFRF9VTktOT1dOOwogCWNpLT5nYWRnZXQubWF4X3NwZWVk ICAgID0gVVNCX1NQRUVEX0hJR0g7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jbGFzcy9jZGMt YWNtLmMgYi9kcml2ZXJzL3VzYi9jbGFzcy9jZGMtYWNtLmMKaW5kZXggNzNiM2IwNTQ3NzFmLi44 Yzc3OWVlMDQ0ZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NsYXNzL2NkYy1hY20uYworKysg Yi9kcml2ZXJzL3VzYi9jbGFzcy9jZGMtYWNtLmMKQEAgLTg2Nyw4ICs4NjcsNiBAQCBzdGF0aWMg aW50IHdhaXRfc2VyaWFsX2NoYW5nZShzdHJ1Y3QgYWNtICphY20sIHVuc2lnbmVkIGxvbmcgYXJn KQogCURFQ0xBUkVfV0FJVFFVRVVFKHdhaXQsIGN1cnJlbnQpOwogCXN0cnVjdCBhc3luY19pY291 bnQgb2xkLCBuZXc7CiAKLQlpZiAoYXJnICYgKFRJT0NNX0RTUiB8IFRJT0NNX1JJIHwgVElPQ01f Q0QgKSkKLQkJcmV0dXJuIC1FSU5WQUw7CiAJZG8gewogCQlzcGluX2xvY2tfaXJxKCZhY20tPnJl YWRfbG9jayk7CiAJCW9sZCA9IGFjbS0+b2xkY291bnQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Vz Yi9jbGFzcy91c2J0bWMuYyBiL2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jCmluZGV4IDEwM2E2 ZTllZTQ5ZC4uNGM2ZDYzZDRhOWU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jbGFzcy91c2J0 bWMuYworKysgYi9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYwpAQCAtMTIwLDYgKzEyMCw3IEBA IHN0YXRpYyB2b2lkIHVzYnRtY19kZWxldGUoc3RydWN0IGtyZWYgKmtyZWYpCiAJc3RydWN0IHVz YnRtY19kZXZpY2VfZGF0YSAqZGF0YSA9IHRvX3VzYnRtY19kYXRhKGtyZWYpOwogCiAJdXNiX3B1 dF9kZXYoZGF0YS0+dXNiX2Rldik7CisJa2ZyZWUoZGF0YSk7CiB9CiAKIHN0YXRpYyBpbnQgdXNi dG1jX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbHApCkBAIC0xMTAz LDcgKzExMDQsNyBAQCBzdGF0aWMgaW50IHVzYnRtY19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFj ZSAqaW50ZiwKIAogCWRldl9kYmcoJmludGYtPmRldiwgIiVzIGNhbGxlZFxuIiwgX19mdW5jX18p OwogCi0JZGF0YSA9IGRldm1fa3phbGxvYygmaW50Zi0+ZGV2LCBzaXplb2YoKmRhdGEpLCBHRlBf S0VSTkVMKTsKKwlkYXRhID0ga21hbGxvYyhzaXplb2YoKmRhdGEpLCBHRlBfS0VSTkVMKTsKIAlp ZiAoIWRhdGEpIHsKIAkJZGV2X2VycigmaW50Zi0+ZGV2LCAiVW5hYmxlIHRvIGFsbG9jYXRlIGtl cm5lbCBtZW1vcnlcbiIpOwogCQlyZXR1cm4gLUVOT01FTTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv dXNiL2dhZGdldC9mX2ZzLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZl9mcy5jCmluZGV4IDRkNmMw NjMwZjFmOS4uZThiZmVhZDQ0OWJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZl9m cy5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mX2ZzLmMKQEAgLTY2OSw3ICs2NjksNiBAQCBz dGF0aWMgdm9pZCBmZnNfdXNlcl9jb3B5X3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmsp CiAKIAl1c2JfZXBfZnJlZV9yZXF1ZXN0KGlvX2RhdGEtPmVwLCBpb19kYXRhLT5yZXEpOwogCi0J aW9fZGF0YS0+a2lvY2ItPnByaXZhdGUgPSBOVUxMOwogCWlmIChpb19kYXRhLT5yZWFkKQogCQlr ZnJlZShpb19kYXRhLT5pb3ZlYyk7CiAJa2ZyZWUoaW9fZGF0YS0+YnVmKTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvdXNiL2dhZGdldC91X2V0aGVyLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvdV9ldGhl ci5jCmluZGV4IDk3YjAyNzcyNGVlNy4uYzAyZDAzN2NiMTZjIDEwMDY0NAotLS0gYS9kcml2ZXJz L3VzYi9nYWRnZXQvdV9ldGhlci5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC91X2V0aGVyLmMK QEAgLTU4MywxMyArNTgzLDYgQEAgc3RhdGljIG5ldGRldl90eF90IGV0aF9zdGFydF94bWl0KHN0 cnVjdCBza19idWZmICpza2IsCiAKIAlyZXEtPmxlbmd0aCA9IGxlbmd0aDsKIAotCS8qIHRocm90 dGxlIGhpZ2gvc3VwZXIgc3BlZWQgSVJRIHJhdGUgYmFjayBzbGlnaHRseSAqLwotCWlmIChnYWRn ZXRfaXNfZHVhbHNwZWVkKGRldi0+Z2FkZ2V0KSkKLQkJcmVxLT5ub19pbnRlcnJ1cHQgPSAoZGV2 LT5nYWRnZXQtPnNwZWVkID09IFVTQl9TUEVFRF9ISUdIIHx8Ci0JCQkJICAgICBkZXYtPmdhZGdl dC0+c3BlZWQgPT0gVVNCX1NQRUVEX1NVUEVSKQotCQkJPyAoKGF0b21pY19yZWFkKCZkZXYtPnR4 X3FsZW4pICUgZGV2LT5xbXVsdCkgIT0gMCkKLQkJCTogMDsKLQogCXJldHZhbCA9IHVzYl9lcF9x dWV1ZShpbiwgcmVxLCBHRlBfQVRPTUlDKTsKIAlzd2l0Y2ggKHJldHZhbCkgewogCWRlZmF1bHQ6 CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktaHViLmMgYi9kcml2ZXJzL3VzYi9o b3N0L3hoY2ktaHViLmMKaW5kZXggOGFlODAwODhkMzQ4Li41NjE4OGYyMzFkZTAgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1odWIuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L3ho Y2ktaHViLmMKQEAgLTEyMjIsNiArMTIyMiwzNSBAQCBpbnQgeGhjaV9idXNfc3VzcGVuZChzdHJ1 Y3QgdXNiX2hjZCAqaGNkKQogCXJldHVybiAwOwogfQogCisvKgorICogV29ya2Fyb3VuZCBmb3Ig bWlzc2luZyBDb2xkIEF0dGFjaCBTdGF0dXMgKENBUykgaWYgZGV2aWNlIHJlLXBsdWdnZWQgaW4g UzMuCisgKiB3YXJtIHJlc2V0IGEgVVNCMyBkZXZpY2Ugc3R1Y2sgaW4gcG9sbGluZyBvciBjb21w bGlhbmNlIG1vZGUgYWZ0ZXIgcmVzdW1lLgorICogU2VlIEludGVsIDEwMC9jMjMwIHNlcmllcyBQ Q0ggc3BlY2lmaWNhdGlvbiB1cGRhdGUgRG9jICMzMzI2OTItMDA2IEVycmF0YSAjOAorICovCitz dGF0aWMgYm9vbCB4aGNpX3BvcnRfbWlzc2luZ19jYXNfcXVpcmsoaW50IHBvcnRfaW5kZXgsCisJ CQkJCSAgICAgX19sZTMyIF9faW9tZW0gKipwb3J0X2FycmF5KQoreworCXUzMiBwb3J0c2M7CisK Kwlwb3J0c2MgPSByZWFkbChwb3J0X2FycmF5W3BvcnRfaW5kZXhdKTsKKworCS8qIGlmIGFueSBv ZiB0aGVzZSBhcmUgc2V0IHdlIGFyZSBub3Qgc3R1Y2sgKi8KKwlpZiAocG9ydHNjICYgKFBPUlRf Q09OTkVDVCB8IFBPUlRfQ0FTKSkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKCgocG9ydHNjICYg UE9SVF9QTFNfTUFTSykgIT0gWERFVl9QT0xMSU5HKSAmJgorCSAgICAoKHBvcnRzYyAmIFBPUlRf UExTX01BU0spICE9IFhERVZfQ09NUF9NT0RFKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogY2xl YXIgd2FrZXVwL2NoYW5nZSBiaXRzLCBhbmQgZG8gYSB3YXJtIHBvcnQgcmVzZXQgKi8KKwlwb3J0 c2MgJj0gfihQT1JUX1JXQ19CSVRTIHwgUE9SVF9DRUMgfCBQT1JUX1dBS0VfQklUUyk7CisJcG9y dHNjIHw9IFBPUlRfV1I7CisJd3JpdGVsKHBvcnRzYywgcG9ydF9hcnJheVtwb3J0X2luZGV4XSk7 CisJLyogZmx1c2ggd3JpdGUgKi8KKwlyZWFkbChwb3J0X2FycmF5W3BvcnRfaW5kZXhdKTsKKwly ZXR1cm4gdHJ1ZTsKK30KKwogaW50IHhoY2lfYnVzX3Jlc3VtZShzdHJ1Y3QgdXNiX2hjZCAqaGNk KQogewogCXN0cnVjdCB4aGNpX2hjZAkqeGhjaSA9IGhjZF90b194aGNpKGhjZCk7CkBAIC0xMjU2 LDYgKzEyODUsMTQgQEAgaW50IHhoY2lfYnVzX3Jlc3VtZShzdHJ1Y3QgdXNiX2hjZCAqaGNkKQog CQlpbnQgc2xvdF9pZDsKIAogCQl0ZW1wID0gcmVhZGwocG9ydF9hcnJheVtwb3J0X2luZGV4XSk7 CisKKwkJLyogd2FybSByZXNldCBDQVMgbGltaXRlZCBwb3J0cyBzdHVjayBpbiBwb2xsaW5nL2Nv bXBsaWFuY2UgKi8KKwkJaWYgKCh4aGNpLT5xdWlya3MgJiBYSENJX01JU1NJTkdfQ0FTKSAmJgor CQkgICAgKGhjZC0+c3BlZWQgPj0gSENEX1VTQjMpICYmCisJCSAgICB4aGNpX3BvcnRfbWlzc2lu Z19jYXNfcXVpcmsocG9ydF9pbmRleCwgcG9ydF9hcnJheSkpIHsKKwkJCXhoY2lfZGJnKHhoY2ks ICJyZXNldCBzdHVjayBwb3J0ICVkXG4iLCBwb3J0X2luZGV4KTsKKwkJCWNvbnRpbnVlOworCQl9 CiAJCWlmIChERVZfU1VQRVJTUEVFRCh0ZW1wKSkKIAkJCXRlbXAgJj0gfihQT1JUX1JXQ19CSVRT IHwgUE9SVF9DRUMgfCBQT1JUX1dBS0VfQklUUyk7CiAJCWVsc2UKZGlmZiAtLWdpdCBhL2RyaXZl cnMvdXNiL2hvc3QveGhjaS1wY2kuYyBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1wY2kuYwppbmRl eCAwMTVkNGMwOGEzY2IuLmU4MDhkODA3OGIyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9z dC94aGNpLXBjaS5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1wY2kuYwpAQCAtMzgsMTEg KzM4LDEzIEBACiAKICNkZWZpbmUgUENJX0RFVklDRV9JRF9JTlRFTF9MWU5YUE9JTlRfWEhDSQkw eDhjMzEKICNkZWZpbmUgUENJX0RFVklDRV9JRF9JTlRFTF9MWU5YUE9JTlRfTFBfWEhDSQkweDlj MzEKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9JTlRFTF9XSUxEQ0FUUE9JTlRfTFBfWEhDSQkweDlj YjEKICNkZWZpbmUgUENJX0RFVklDRV9JRF9JTlRFTF9DSEVSUllWSUVXX1hIQ0kJCTB4MjJiNQog I2RlZmluZSBQQ0lfREVWSUNFX0lEX0lOVEVMX1NVTlJJU0VQT0lOVF9IX1hIQ0kJCTB4YTEyZgog I2RlZmluZSBQQ0lfREVWSUNFX0lEX0lOVEVMX1NVTlJJU0VQT0lOVF9MUF9YSENJCTB4OWQyZgog I2RlZmluZSBQQ0lfREVWSUNFX0lEX0lOVEVMX0JST1hUT05fTV9YSENJCQkweDBhYTgKICNkZWZp bmUgUENJX0RFVklDRV9JRF9JTlRFTF9CUk9YVE9OX0JfWEhDSQkJMHgxYWE4CisjZGVmaW5lIFBD SV9ERVZJQ0VfSURfSU5URUxfQVBMX1hIQ0kJCQkweDVhYTgKIAogc3RhdGljIGNvbnN0IGNoYXIg aGNkX25hbWVbXSA9ICJ4aGNpX2hjZCI7CiAKQEAgLTEzOCw3ICsxNDAsOCBAQCBzdGF0aWMgdm9p ZCB4aGNpX3BjaV9xdWlya3Moc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgeGhjaV9oY2QgKnho Y2kpCiAJCXhoY2ktPnF1aXJrcyB8PSBYSENJX1NQVVJJT1VTX1JFQk9PVDsKIAl9CiAJaWYgKHBk ZXYtPnZlbmRvciA9PSBQQ0lfVkVORE9SX0lEX0lOVEVMICYmCi0JCXBkZXYtPmRldmljZSA9PSBQ Q0lfREVWSUNFX0lEX0lOVEVMX0xZTlhQT0lOVF9MUF9YSENJKSB7CisJCShwZGV2LT5kZXZpY2Ug PT0gUENJX0RFVklDRV9JRF9JTlRFTF9MWU5YUE9JTlRfTFBfWEhDSSB8fAorCQkgcGRldi0+ZGV2 aWNlID09IFBDSV9ERVZJQ0VfSURfSU5URUxfV0lMRENBVFBPSU5UX0xQX1hIQ0kpKSB7CiAJCXho Y2ktPnF1aXJrcyB8PSBYSENJX1NQVVJJT1VTX1JFQk9PVDsKIAkJeGhjaS0+cXVpcmtzIHw9IFhI Q0lfU1BVUklPVVNfV0FLRVVQOwogCX0KQEAgLTE1MCw2ICsxNTMsMTEgQEAgc3RhdGljIHZvaWQg eGhjaV9wY2lfcXVpcmtzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHhoY2lfaGNkICp4aGNp KQogCQkgcGRldi0+ZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfSU5URUxfQlJPWFRPTl9CX1hIQ0kp KSB7CiAJCXhoY2ktPnF1aXJrcyB8PSBYSENJX1BNRV9TVFVDS19RVUlSSzsKIAl9CisJaWYgKHBk ZXYtPnZlbmRvciA9PSBQQ0lfVkVORE9SX0lEX0lOVEVMICYmCisJICAgIChwZGV2LT5kZXZpY2Ug PT0gUENJX0RFVklDRV9JRF9JTlRFTF9DSEVSUllWSUVXX1hIQ0kgfHwKKwkgICAgIHBkZXYtPmRl dmljZSA9PSBQQ0lfREVWSUNFX0lEX0lOVEVMX0FQTF9YSENJKSkKKwkJeGhjaS0+cXVpcmtzIHw9 IFhIQ0lfTUlTU0lOR19DQVM7CisKIAlpZiAocGRldi0+dmVuZG9yID09IFBDSV9WRU5ET1JfSURf RVRST04gJiYKIAkJCXBkZXYtPmRldmljZSA9PSBQQ0lfREVWSUNFX0lEX0FTUk9DS19QNjcpIHsK IAkJeGhjaS0+cXVpcmtzIHw9IFhIQ0lfUkVTRVRfT05fUkVTVU1FOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy91c2IvaG9zdC94aGNpLmggYi9kcml2ZXJzL3VzYi9ob3N0L3hoY2kuaAppbmRleCA5MmNk NWE3NjU2MDIuLmYxMTdiYWNlYzQxYyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC94aGNp LmgKKysrIGIvZHJpdmVycy91c2IvaG9zdC94aGNpLmgKQEAgLTI4Niw2ICsyODYsOCBAQCBzdHJ1 Y3QgeGhjaV9vcF9yZWdzIHsKICNkZWZpbmUgWERFVl9VMgkJKDB4MiA8PCA1KQogI2RlZmluZSBY REVWX1UzCQkoMHgzIDw8IDUpCiAjZGVmaW5lIFhERVZfSU5BQ1RJVkUJKDB4NiA8PCA1KQorI2Rl ZmluZSBYREVWX1BPTExJTkcJKDB4NyA8PCA1KQorI2RlZmluZSBYREVWX0NPTVBfTU9ERSAgKDB4 YSA8PCA1KQogI2RlZmluZSBYREVWX1JFU1VNRQkoMHhmIDw8IDUpCiAvKiB0cnVlOiBwb3J0IGhh cyBwb3dlciAoc2VlIEhDQ19QUEMpICovCiAjZGVmaW5lIFBPUlRfUE9XRVIJKDEgPDwgOSkKQEAg LTE1NjYsNiArMTU2OCw3IEBAIHN0cnVjdCB4aGNpX2hjZCB7CiAvKiBGb3IgY29udHJvbGxlcnMg d2l0aCBhIGJyb2tlbiBiZXlvbmQgcmVwYWlyIHN0cmVhbXMgaW1wbGVtZW50YXRpb24gKi8KICNk ZWZpbmUgWEhDSV9CUk9LRU5fU1RSRUFNUwkoMSA8PCAxOSkKICNkZWZpbmUgWEhDSV9QTUVfU1RV Q0tfUVVJUksJKDEgPDwgMjApCisjZGVmaW5lIFhIQ0lfTUlTU0lOR19DQVMJKDEgPDwgMjQpCiAJ dW5zaWduZWQgaW50CQludW1fYWN0aXZlX2VwczsKIAl1bnNpZ25lZCBpbnQJCWxpbWl0X2FjdGl2 ZV9lcHM7CiAJLyogVGhlcmUgYXJlIHR3byByb290aHVicyB0byBrZWVwIHRyYWNrIG9mIGJ1cyBz dXNwZW5kIGluZm8gZm9yICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL2xlZ291c2J0 b3dlci5jIGIvZHJpdmVycy91c2IvbWlzYy9sZWdvdXNidG93ZXIuYwppbmRleCA5N2NkOWUyNGJk MjUuLjA0MmExYWQ5Njk4YSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvbWlzYy9sZWdvdXNidG93 ZXIuYworKysgYi9kcml2ZXJzL3VzYi9taXNjL2xlZ291c2J0b3dlci5jCkBAIC04OTgsMjQgKzg5 OCw2IEBAIHN0YXRpYyBpbnQgdG93ZXJfcHJvYmUgKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRl cmZhY2UsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlCiAJZGV2LT5pbnRlcnJ1cHRfaW5faW50ZXJ2 YWwgPSBpbnRlcnJ1cHRfaW5faW50ZXJ2YWwgPyBpbnRlcnJ1cHRfaW5faW50ZXJ2YWwgOiBkZXYt PmludGVycnVwdF9pbl9lbmRwb2ludC0+YkludGVydmFsOwogCWRldi0+aW50ZXJydXB0X291dF9p bnRlcnZhbCA9IGludGVycnVwdF9vdXRfaW50ZXJ2YWwgPyBpbnRlcnJ1cHRfb3V0X2ludGVydmFs IDogZGV2LT5pbnRlcnJ1cHRfb3V0X2VuZHBvaW50LT5iSW50ZXJ2YWw7CiAKLQkvKiB3ZSBjYW4g cmVnaXN0ZXIgdGhlIGRldmljZSBub3csIGFzIGl0IGlzIHJlYWR5ICovCi0JdXNiX3NldF9pbnRm ZGF0YSAoaW50ZXJmYWNlLCBkZXYpOwotCi0JcmV0dmFsID0gdXNiX3JlZ2lzdGVyX2RldiAoaW50 ZXJmYWNlLCAmdG93ZXJfY2xhc3MpOwotCi0JaWYgKHJldHZhbCkgewotCQkvKiBzb21ldGhpbmcg cHJldmVudGVkIHVzIGZyb20gcmVnaXN0ZXJpbmcgdGhpcyBkcml2ZXIgKi8KLQkJZGV2X2Vycihp ZGV2LCAiTm90IGFibGUgdG8gZ2V0IGEgbWlub3IgZm9yIHRoaXMgZGV2aWNlLlxuIik7Ci0JCXVz Yl9zZXRfaW50ZmRhdGEgKGludGVyZmFjZSwgTlVMTCk7Ci0JCWdvdG8gZXJyb3I7Ci0JfQotCWRl di0+bWlub3IgPSBpbnRlcmZhY2UtPm1pbm9yOwotCi0JLyogbGV0IHRoZSB1c2VyIGtub3cgd2hh dCBub2RlIHRoaXMgZGV2aWNlIGlzIG5vdyBhdHRhY2hlZCB0byAqLwotCWRldl9pbmZvKCZpbnRl cmZhY2UtPmRldiwgIkxFR08gVVNCIFRvd2VyICMlZCBub3cgYXR0YWNoZWQgdG8gbWFqb3IgIgot CQkgIiVkIG1pbm9yICVkXG4iLCAoZGV2LT5taW5vciAtIExFR09fVVNCX1RPV0VSX01JTk9SX0JB U0UpLAotCQkgVVNCX01BSk9SLCBkZXYtPm1pbm9yKTsKLQogCS8qIGdldCB0aGUgZmlybXdhcmUg dmVyc2lvbiBhbmQgbG9nIGl0ICovCiAJcmVzdWx0ID0gdXNiX2NvbnRyb2xfbXNnICh1ZGV2LAog CQkJCSAgdXNiX3JjdmN0cmxwaXBlKHVkZXYsIDApLApAQCAtOTM2LDYgKzkxOCwyMyBAQCBzdGF0 aWMgaW50IHRvd2VyX3Byb2JlIChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLCBjb25z dCBzdHJ1Y3QgdXNiX2RldmljZQogCQkgZ2V0X3ZlcnNpb25fcmVwbHkubWlub3IsCiAJCSBsZTE2 X3RvX2NwdShnZXRfdmVyc2lvbl9yZXBseS5idWlsZF9ubykpOwogCisJLyogd2UgY2FuIHJlZ2lz dGVyIHRoZSBkZXZpY2Ugbm93LCBhcyBpdCBpcyByZWFkeSAqLworCXVzYl9zZXRfaW50ZmRhdGEg KGludGVyZmFjZSwgZGV2KTsKKworCXJldHZhbCA9IHVzYl9yZWdpc3Rlcl9kZXYgKGludGVyZmFj ZSwgJnRvd2VyX2NsYXNzKTsKKworCWlmIChyZXR2YWwpIHsKKwkJLyogc29tZXRoaW5nIHByZXZl bnRlZCB1cyBmcm9tIHJlZ2lzdGVyaW5nIHRoaXMgZHJpdmVyICovCisJCWRldl9lcnIoaWRldiwg Ik5vdCBhYmxlIHRvIGdldCBhIG1pbm9yIGZvciB0aGlzIGRldmljZS5cbiIpOworCQl1c2Jfc2V0 X2ludGZkYXRhIChpbnRlcmZhY2UsIE5VTEwpOworCQlnb3RvIGVycm9yOworCX0KKwlkZXYtPm1p bm9yID0gaW50ZXJmYWNlLT5taW5vcjsKKworCS8qIGxldCB0aGUgdXNlciBrbm93IHdoYXQgbm9k ZSB0aGlzIGRldmljZSBpcyBub3cgYXR0YWNoZWQgdG8gKi8KKwlkZXZfaW5mbygmaW50ZXJmYWNl LT5kZXYsICJMRUdPIFVTQiBUb3dlciAjJWQgbm93IGF0dGFjaGVkIHRvIG1ham9yICIKKwkJICIl ZCBtaW5vciAlZFxuIiwgKGRldi0+bWlub3IgLSBMRUdPX1VTQl9UT1dFUl9NSU5PUl9CQVNFKSwK KwkJIFVTQl9NQUpPUiwgZGV2LT5taW5vcik7CiAKIGV4aXQ6CiAJcmV0dXJuIHJldHZhbDsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9jcDIxMHguYyBiL2RyaXZlcnMvdXNiL3Nlcmlh bC9jcDIxMHguYwppbmRleCAxNmYxYjE5OWQ0NmIuLjVjNGVmNWE5NjRjYyAxMDA2NDQKLS0tIGEv ZHJpdmVycy91c2Ivc2VyaWFsL2NwMjEweC5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9jcDIx MHguYwpAQCAtMTE3LDYgKzExNyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9p ZCBpZF90YWJsZVtdID0gewogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODQxMSkgfSwgLyogS3lv Y2VyYSBHUFMgTW9kdWxlICovCiAJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4NDE4KSB9LCAvKiBJ UlogQXV0b21hdGlvbiBUZWxlcG9ydCBTRy0xMCBHU00vR1BSUyBNb2RlbSAqLwogCXsgVVNCX0RF VklDRSgweDEwQzQsIDB4ODQ2RSkgfSwgLyogQkVJIFVTQiBTZW5zb3IgSW50ZXJmYWNlIChWQ1Ap ICovCisJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4NDcwKSB9LCAvKiBKdW5pcGVyIE5ldHdvcmtz IEJYIFNlcmllcyBTeXN0ZW0gQ29uc29sZSAqLwogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODQ3 NykgfSwgLyogQmFsbHVmZiBSRklEICovCiAJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4NEI2KSB9 LCAvKiBTdGFyaXpvbmEgSHlwZXJpb24gKi8KIAl7IFVTQl9ERVZJQ0UoMHgxMEM0LCAweDg1RUEp IH0sIC8qIEFDLVNlcnZpY2VzIElCVVMtSUYgKi8KQEAgLTEyOSw2ICsxMzAsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgaWRfdGFibGVbXSA9IHsKIAl7IFVTQl9ERVZJQ0Uo MHgxMEM0LCAweDg4QTQpIH0sIC8qIE1NQiBOZXR3b3JrcyBaaWdCZWUgVVNCIERldmljZSAqLwog CXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODhBNSkgfSwgLyogUGxhbmV0IElubm92YXRpb24gSW5n ZW5pIFppZ0JlZSBVU0IgRGV2aWNlICovCiAJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4OTQ2KSB9 LCAvKiBLZXRyYSBOMSBXaXJlbGVzcyBJbnRlcmZhY2UgKi8KKwl7IFVTQl9ERVZJQ0UoMHgxMEM0 LCAweDg5NjIpIH0sIC8qIEJyaW0gQnJvdGhlcnMgY2hhcmdpbmcgZG9jayAqLwogCXsgVVNCX0RF VklDRSgweDEwQzQsIDB4ODk3NykgfSwJLyogQ0VMIE1lc2hXb3JrcyBEZXZLaXQgRGV2aWNlICov CiAJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4OTk4KSB9LCAvKiBLQ0YgVGVjaG5vbG9naWVzIFBS TiAqLwogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4OEEyQSkgfSwgLyogSHViWiBkdWFsIFppZ0Jl ZSBhbmQgWi1XYXZlIGRvbmdsZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2Z0 ZGlfc2lvLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uYwppbmRleCA2MTAzNzI3Y2Qw NjAuLjk5ZGI4OWFkNDgyZSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lv LmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmMKQEAgLTk5OSw3ICs5OTksOCBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgaWRfdGFibGVfY29tYmluZWRbXSA9 IHsKIAkvKiBla2V5IERldmljZXMgKi8KIAl7IFVTQl9ERVZJQ0UoRlRESV9WSUQsIEZURElfRUtF WV9DT05WX1VTQl9QSUQpIH0sCiAJLyogSW5maW5lb24gRGV2aWNlcyAqLwotCXsgVVNCX0RFVklD RV9JTlRFUkZBQ0VfTlVNQkVSKElORklORU9OX1ZJRCwgSU5GSU5FT05fVFJJQk9BUkRfUElELCAx KSB9LAorCXsgVVNCX0RFVklDRV9JTlRFUkZBQ0VfTlVNQkVSKElORklORU9OX1ZJRCwgSU5GSU5F T05fVFJJQk9BUkRfVEMxNzk4X1BJRCwgMSkgfSwKKwl7IFVTQl9ERVZJQ0VfSU5URVJGQUNFX05V TUJFUihJTkZJTkVPTl9WSUQsIElORklORU9OX1RSSUJPQVJEX1RDMlg3X1BJRCwgMSkgfSwKIAkv KiBHRSBIZWFsdGhjYXJlIGRldmljZXMgKi8KIAl7IFVTQl9ERVZJQ0UoR0VfSEVBTFRIQ0FSRV9W SUQsIEdFX0hFQUxUSENBUkVfTkVNT19UUkFDS0VSX1BJRCkgfSwKIAkvKiBBY3RpdmUgUmVzZWFy Y2ggKEFjdGlzZW5zZSkgZGV2aWNlcyAqLwpAQCAtMTAyNCw2ICsxMDI1LDggQEAgc3RhdGljIGNv bnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIGlkX3RhYmxlX2NvbWJpbmVkW10gPSB7CiAJeyBVU0Jf REVWSUNFKElDUERBU19WSUQsIElDUERBU19JNzU2MVVfUElEKSB9LAogCXsgVVNCX0RFVklDRShJ Q1BEQVNfVklELCBJQ1BEQVNfSTc1NjNVX1BJRCkgfSwKIAl7IFVTQl9ERVZJQ0UoV0lDRURfVklE LCBXSUNFRF9VU0IyMDcwNlYyX1BJRCkgfSwKKwl7IFVTQl9ERVZJQ0UoVElfVklELCBUSV9DQzMy MDBfTEFVTkNIUEFEX1BJRCksCisJCS5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdCkmZnRk aV9qdGFnX3F1aXJrIH0sCiAJeyB9CQkJCQkvKiBUZXJtaW5hdGluZyBlbnRyeSAqLwogfTsKIApk aWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvX2lkcy5oIGIvZHJpdmVycy91 c2Ivc2VyaWFsL2Z0ZGlfc2lvX2lkcy5oCmluZGV4IDQ4ZGI4NGYyNWNjOS4uN2IyZjIwNTZiN2Vm IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW9faWRzLmgKKysrIGIvZHJp dmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvX2lkcy5oCkBAIC01OTYsNiArNTk2LDEyIEBACiAjZGVm aW5lIFNUSzU0MV9QSUQJCTB4MjEwOSAvKiBaaWdiZWUgQ29udHJvbGxlciAqLwogCiAvKgorICog VGV4YXMgSW5zdHJ1bWVudHMKKyAqLworI2RlZmluZSBUSV9WSUQJCQkweDA0NTEKKyNkZWZpbmUg VElfQ0MzMjAwX0xBVU5DSFBBRF9QSUQJMHhDMzJBIC8qIFNpbXBsZUxpbmsgV2ktRmkgQ0MzMjAw IExhdW5jaFBhZCAqLworCisvKgogICogQmxhY2tmaW4gZ25JQ0UgSlRBRwogICogaHR0cDovL2Rv Y3MuYmxhY2tmaW4udWNsaW51eC5vcmcvZG9rdS5waHA/aWQ9aHc6anRhZzpnbmljZQogICovCkBA IC02MjYsOCArNjMyLDkgQEAKIC8qCiAgKiBJbmZpbmVvbiBUZWNobm9sb2dpZXMKICAqLwotI2Rl ZmluZSBJTkZJTkVPTl9WSUQJCTB4MDU4YgotI2RlZmluZSBJTkZJTkVPTl9UUklCT0FSRF9QSUQJ MHgwMDI4IC8qIERBUyBKVEFHIFRyaUJvYXJkIFRDMTc5OCBWMS4wICovCisjZGVmaW5lIElORklO RU9OX1ZJRAkJICAgICAgICAweDA1OGIKKyNkZWZpbmUgSU5GSU5FT05fVFJJQk9BUkRfVEMxNzk4 X1BJRAkweDAwMjggLyogREFTIEpUQUcgVHJpQm9hcmQgVEMxNzk4IFYxLjAgKi8KKyNkZWZpbmUg SU5GSU5FT05fVFJJQk9BUkRfVEMyWDdfUElECTB4MDA0MyAvKiBEQVMgSlRBRyBUcmlCb2FyZCBU QzJYNyBWMS4wICovCiAKIC8qCiAgKiBBY3RvbiBSZXNlYXJjaCBDb3JwLgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy91c2Ivc2VyaWFsL3VzYi1zZXJpYWwuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC91c2It c2VyaWFsLmMKaW5kZXggZDNiZjgzNDhlNjM4Li5hMjkwODkxZGRkODQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvdXNiL3NlcmlhbC91c2Itc2VyaWFsLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL3Vz Yi1zZXJpYWwuYwpAQCAtMTA2MSw3ICsxMDYxLDggQEAgc3RhdGljIGludCB1c2Jfc2VyaWFsX3By b2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsCiAKIAlzZXJpYWwtPmRpc2Nvbm5l Y3RlZCA9IDA7CiAKLQl1c2Jfc2VyaWFsX2NvbnNvbGVfaW5pdChzZXJpYWwtPnBvcnRbMF0tPm1p bm9yKTsKKwlpZiAobnVtX3BvcnRzID4gMCkKKwkJdXNiX3NlcmlhbF9jb25zb2xlX2luaXQoc2Vy aWFsLT5wb3J0WzBdLT5taW5vcik7CiBleGl0OgogCW1vZHVsZV9wdXQodHlwZS0+ZHJpdmVyLm93 bmVyKTsKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3N0b3JhZ2UvdHJhbnNw b3J0LmMgYi9kcml2ZXJzL3VzYi9zdG9yYWdlL3RyYW5zcG9ydC5jCmluZGV4IGIxZDgxNWViNmQw Yi4uODk4OGIyNjhhNjlhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zdG9yYWdlL3RyYW5zcG9y dC5jCisrKyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2UvdHJhbnNwb3J0LmMKQEAgLTkxOSwxMCArOTE5 LDE1IEBAIGludCB1c2Jfc3Rvcl9DQl90cmFuc3BvcnQoc3RydWN0IHNjc2lfY21uZCAqc3JiLCBz dHJ1Y3QgdXNfZGF0YSAqdXMpCiAKIAkvKiBDT01NQU5EIFNUQUdFICovCiAJLyogbGV0J3Mgc2Vu ZCB0aGUgY29tbWFuZCB2aWEgdGhlIGNvbnRyb2wgcGlwZSAqLworCS8qCisJICogQ29tbWFuZCBp cyBzb21ldGltZSAoZi5lLiBhZnRlciBzY3NpX2VoX3ByZXBfY21uZCkgb24gdGhlIHN0YWNrLgor CSAqIFN0YWNrIG1heSBiZSB2bWFsbG9jYXRlZC4gIFNvIG5vIERNQSBmb3IgdXMuICBNYWtlIGEg Y29weS4KKwkgKi8KKwltZW1jcHkodXMtPmlvYnVmLCBzcmItPmNtbmQsIHNyYi0+Y21kX2xlbik7 CiAJcmVzdWx0ID0gdXNiX3N0b3JfY3RybF90cmFuc2Zlcih1cywgdXMtPnNlbmRfY3RybF9waXBl LAogCQkJCSAgICAgIFVTX0NCSV9BRFNDLCAKIAkJCQkgICAgICBVU0JfVFlQRV9DTEFTUyB8IFVT Ql9SRUNJUF9JTlRFUkZBQ0UsIDAsIAotCQkJCSAgICAgIHVzLT5pZm51bSwgc3JiLT5jbW5kLCBz cmItPmNtZF9sZW4pOworCQkJCSAgICAgIHVzLT5pZm51bSwgdXMtPmlvYnVmLCBzcmItPmNtZF9s ZW4pOwogCiAJLyogY2hlY2sgdGhlIHJldHVybiBjb2RlIGZvciB0aGUgY29tbWFuZCAqLwogCXVz Yl9zdG9yX2RiZyh1cywgIkNhbGwgdG8gdXNiX3N0b3JfY3RybF90cmFuc2ZlcigpIHJldHVybmVk ICVkXG4iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy91d2IvbGMtcmMuYyBiL2RyaXZlcnMvdXdiL2xj LXJjLmMKaW5kZXggM2VjYTZjZWI5ODQ0Li40YmUyYTVkMWE5ZDIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvdXdiL2xjLXJjLmMKKysrIGIvZHJpdmVycy91d2IvbGMtcmMuYwpAQCAtNTYsOCArNTYsMTEg QEAgc3RhdGljIHN0cnVjdCB1d2JfcmMgKnV3Yl9yY19maW5kX2J5X2luZGV4KGludCBpbmRleCkK IAlzdHJ1Y3QgdXdiX3JjICpyYyA9IE5VTEw7CiAKIAlkZXYgPSBjbGFzc19maW5kX2RldmljZSgm dXdiX3JjX2NsYXNzLCBOVUxMLCAmaW5kZXgsIHV3Yl9yY19pbmRleF9tYXRjaCk7Ci0JaWYgKGRl dikKKwlpZiAoZGV2KSB7CiAJCXJjID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJCXB1dF9kZXZp Y2UoZGV2KTsKKwl9CisKIAlyZXR1cm4gcmM7CiB9CiAKQEAgLTM2OCw3ICszNzEsOSBAQCBzdHJ1 Y3QgdXdiX3JjICpfX3V3Yl9yY190cnlfZ2V0KHN0cnVjdCB1d2JfcmMgKnRhcmdldF9yYykKIAlp ZiAoZGV2KSB7CiAJCXJjID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiAJCV9fdXdiX3JjX2dldChy Yyk7CisJCXB1dF9kZXZpY2UoZGV2KTsKIAl9CisKIAlyZXR1cm4gcmM7CiB9CiBFWFBPUlRfU1lN Qk9MX0dQTChfX3V3Yl9yY190cnlfZ2V0KTsKQEAgLTQyMSw4ICs0MjYsMTEgQEAgc3RydWN0IHV3 Yl9yYyAqdXdiX3JjX2dldF9ieV9ncmFuZHBhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmdyYW5kcGFf ZGV2KQogCiAJZGV2ID0gY2xhc3NfZmluZF9kZXZpY2UoJnV3Yl9yY19jbGFzcywgTlVMTCwgZ3Jh bmRwYV9kZXYsCiAJCQkJZmluZF9yY19ncmFuZHBhKTsKLQlpZiAoZGV2KQorCWlmIChkZXYpIHsK IAkJcmMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwkJcHV0X2RldmljZShkZXYpOworCX0KKwog CXJldHVybiByYzsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHV3Yl9yY19nZXRfYnlfZ3JhbmRwYSk7 CkBAIC00NTQsOCArNDYyLDEwIEBAIHN0cnVjdCB1d2JfcmMgKnV3Yl9yY19nZXRfYnlfZGV2KGNv bnN0IHN0cnVjdCB1d2JfZGV2X2FkZHIgKmFkZHIpCiAJc3RydWN0IHV3Yl9yYyAqcmMgPSBOVUxM OwogCiAJZGV2ID0gY2xhc3NfZmluZF9kZXZpY2UoJnV3Yl9yY19jbGFzcywgTlVMTCwgYWRkciwg ZmluZF9yY19kZXYpOwotCWlmIChkZXYpCisJaWYgKGRldikgewogCQlyYyA9IGRldl9nZXRfZHJ2 ZGF0YShkZXYpOworCQlwdXRfZGV2aWNlKGRldik7CisJfQogCiAJcmV0dXJuIHJjOwogfQpkaWZm IC0tZ2l0IGEvZHJpdmVycy91d2IvcGFsLmMgYi9kcml2ZXJzL3V3Yi9wYWwuYwppbmRleCBjMTMw NGI4ZDQ5ODUuLjY3OGU5Mzc0MWFlMSAxMDA2NDQKLS0tIGEvZHJpdmVycy91d2IvcGFsLmMKKysr IGIvZHJpdmVycy91d2IvcGFsLmMKQEAgLTk3LDYgKzk3LDggQEAgc3RhdGljIGJvb2wgdXdiX3Jj X2NsYXNzX2RldmljZV9leGlzdHMoc3RydWN0IHV3Yl9yYyAqdGFyZ2V0X3JjKQogCiAJZGV2ID0g Y2xhc3NfZmluZF9kZXZpY2UoJnV3Yl9yY19jbGFzcywgTlVMTCwgdGFyZ2V0X3JjLAlmaW5kX3Jj KTsKIAorCXB1dF9kZXZpY2UoZGV2KTsKKwogCXJldHVybiAoZGV2ICE9IE5VTEwpOwogfQogCmRp ZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjbWFwLmMgYi9kcml2ZXJzL3Zp ZGVvL2ZiZGV2L2NvcmUvZmJjbWFwLmMKaW5kZXggZjg5MjQ1YjhiYThlLi42OGExMTM1OTQ4MDgg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNtYXAuYworKysgYi9kcml2 ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjbWFwLmMKQEAgLTE2MywxNyArMTYzLDE4IEBAIHZvaWQg ZmJfZGVhbGxvY19jbWFwKHN0cnVjdCBmYl9jbWFwICpjbWFwKQogCiBpbnQgZmJfY29weV9jbWFw KGNvbnN0IHN0cnVjdCBmYl9jbWFwICpmcm9tLCBzdHJ1Y3QgZmJfY21hcCAqdG8pCiB7Ci0JaW50 IHRvb2ZmID0gMCwgZnJvbW9mZiA9IDA7Ci0JaW50IHNpemU7CisJdW5zaWduZWQgaW50IHRvb2Zm ID0gMCwgZnJvbW9mZiA9IDA7CisJc2l6ZV90IHNpemU7CiAKIAlpZiAodG8tPnN0YXJ0ID4gZnJv bS0+c3RhcnQpCiAJCWZyb21vZmYgPSB0by0+c3RhcnQgLSBmcm9tLT5zdGFydDsKIAllbHNlCiAJ CXRvb2ZmID0gZnJvbS0+c3RhcnQgLSB0by0+c3RhcnQ7Ci0Jc2l6ZSA9IHRvLT5sZW4gLSB0b29m ZjsKLQlpZiAoc2l6ZSA+IChpbnQpIChmcm9tLT5sZW4gLSBmcm9tb2ZmKSkKLQkJc2l6ZSA9IGZy b20tPmxlbiAtIGZyb21vZmY7Ci0JaWYgKHNpemUgPD0gMCkKKwlpZiAoZnJvbW9mZiA+PSBmcm9t LT5sZW4gfHwgdG9vZmYgPj0gdG8tPmxlbikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlzaXplID0g bWluX3Qoc2l6ZV90LCB0by0+bGVuIC0gdG9vZmYsIGZyb20tPmxlbiAtIGZyb21vZmYpOworCWlm IChzaXplID09IDApCiAJCXJldHVybiAtRUlOVkFMOwogCXNpemUgKj0gc2l6ZW9mKHUxNik7CiAK QEAgLTE4NywxNyArMTg4LDE4IEBAIGludCBmYl9jb3B5X2NtYXAoY29uc3Qgc3RydWN0IGZiX2Nt YXAgKmZyb20sIHN0cnVjdCBmYl9jbWFwICp0bykKIAogaW50IGZiX2NtYXBfdG9fdXNlcihjb25z dCBzdHJ1Y3QgZmJfY21hcCAqZnJvbSwgc3RydWN0IGZiX2NtYXBfdXNlciAqdG8pCiB7Ci0JaW50 IHRvb2ZmID0gMCwgZnJvbW9mZiA9IDA7Ci0JaW50IHNpemU7CisJdW5zaWduZWQgaW50IHRvb2Zm ID0gMCwgZnJvbW9mZiA9IDA7CisJc2l6ZV90IHNpemU7CiAKIAlpZiAodG8tPnN0YXJ0ID4gZnJv bS0+c3RhcnQpCiAJCWZyb21vZmYgPSB0by0+c3RhcnQgLSBmcm9tLT5zdGFydDsKIAllbHNlCiAJ CXRvb2ZmID0gZnJvbS0+c3RhcnQgLSB0by0+c3RhcnQ7Ci0Jc2l6ZSA9IHRvLT5sZW4gLSB0b29m ZjsKLQlpZiAoc2l6ZSA+IChpbnQpIChmcm9tLT5sZW4gLSBmcm9tb2ZmKSkKLQkJc2l6ZSA9IGZy b20tPmxlbiAtIGZyb21vZmY7Ci0JaWYgKHNpemUgPD0gMCkKKwlpZiAoZnJvbW9mZiA+PSBmcm9t LT5sZW4gfHwgdG9vZmYgPj0gdG8tPmxlbikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlzaXplID0g bWluX3Qoc2l6ZV90LCB0by0+bGVuIC0gdG9vZmYsIGZyb20tPmxlbiAtIGZyb21vZmYpOworCWlm IChzaXplID09IDApCiAJCXJldHVybiAtRUlOVkFMOwogCXNpemUgKj0gc2l6ZW9mKHUxNik7CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvZWZpZmIuYyBiL2RyaXZlcnMvdmlkZW8v ZmJkZXYvZWZpZmIuYwppbmRleCA5ODJmNmFiZTZmYWYuLmQwZjk3MTBiOWMwYiAxMDA2NDQKLS0t IGEvZHJpdmVycy92aWRlby9mYmRldi9lZmlmYi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv ZWZpZmIuYwpAQCAtNTIsOSArNTIsOSBAQCBzdGF0aWMgaW50IGVmaWZiX3NldGNvbHJlZyh1bnNp Z25lZCByZWdubywgdW5zaWduZWQgcmVkLCB1bnNpZ25lZCBncmVlbiwKIAkJcmV0dXJuIDE7CiAK IAlpZiAocmVnbm8gPCAxNikgewotCQlyZWQgICA+Pj0gODsKLQkJZ3JlZW4gPj49IDg7Ci0JCWJs dWUgID4+PSA4OworCQlyZWQgICA+Pj0gMTYgLSBpbmZvLT52YXIucmVkLmxlbmd0aDsKKwkJZ3Jl ZW4gPj49IDE2IC0gaW5mby0+dmFyLmdyZWVuLmxlbmd0aDsKKwkJYmx1ZSAgPj49IDE2IC0gaW5m by0+dmFyLmJsdWUubGVuZ3RoOwogCQkoKHUzMiAqKShpbmZvLT5wc2V1ZG9fcGFsZXR0ZSkpW3Jl Z25vXSA9CiAJCQkocmVkICAgPDwgaW5mby0+dmFyLnJlZC5vZmZzZXQpICAgfAogCQkJKGdyZWVu IDw8IGluZm8tPnZhci5ncmVlbi5vZmZzZXQpIHwKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL3RyZWUt bG9nLmMgYi9mcy9idHJmcy90cmVlLWxvZy5jCmluZGV4IDgzMDk1MmQwNDVjOS4uMDIzYzVkOTA1 YWFjIDEwMDY0NAotLS0gYS9mcy9idHJmcy90cmVlLWxvZy5jCisrKyBiL2ZzL2J0cmZzL3RyZWUt bG9nLmMKQEAgLTI0NDksMTQgKzI0NDksMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGJ0cmZzX3Jl bW92ZV9hbGxfbG9nX2N0eHMoc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsCiAJCQkJCSAgICAgaW50 IGluZGV4LCBpbnQgZXJyb3IpCiB7CiAJc3RydWN0IGJ0cmZzX2xvZ19jdHggKmN0eDsKKwlzdHJ1 Y3QgYnRyZnNfbG9nX2N0eCAqc2FmZTsKIAotCWlmICghZXJyb3IpIHsKLQkJSU5JVF9MSVNUX0hF QUQoJnJvb3QtPmxvZ19jdHhzW2luZGV4XSk7Ci0JCXJldHVybjsKLQl9Ci0KLQlsaXN0X2Zvcl9l YWNoX2VudHJ5KGN0eCwgJnJvb3QtPmxvZ19jdHhzW2luZGV4XSwgbGlzdCkKKwlsaXN0X2Zvcl9l YWNoX2VudHJ5X3NhZmUoY3R4LCBzYWZlLCAmcm9vdC0+bG9nX2N0eHNbaW5kZXhdLCBsaXN0KSB7 CisJCWxpc3RfZGVsX2luaXQoJmN0eC0+bGlzdCk7CiAJCWN0eC0+bG9nX3JldCA9IGVycm9yOwor CX0KIAogCUlOSVRfTElTVF9IRUFEKCZyb290LT5sb2dfY3R4c1tpbmRleF0pOwogfQpAQCAtMjY4 NiwxMyArMjY4NCw5IEBAIGludCBidHJmc19zeW5jX2xvZyhzdHJ1Y3QgYnRyZnNfdHJhbnNfaGFu ZGxlICp0cmFucywKIAltdXRleF91bmxvY2soJnJvb3QtPmxvZ19tdXRleCk7CiAKIG91dF93YWtl X2xvZ19yb290OgotCS8qCi0JICogV2UgbmVlZG4ndCBnZXQgbG9nX211dGV4IGhlcmUgYmVjYXVz ZSB3ZSBhcmUgc3VyZSBhbGwKLQkgKiB0aGUgb3RoZXIgdGFza3MgYXJlIGJsb2NrZWQuCi0JICov CisJbXV0ZXhfbG9jaygmbG9nX3Jvb3RfdHJlZS0+bG9nX211dGV4KTsKIAlidHJmc19yZW1vdmVf YWxsX2xvZ19jdHhzKGxvZ19yb290X3RyZWUsIGluZGV4MiwgcmV0KTsKIAotCW11dGV4X2xvY2so JmxvZ19yb290X3RyZWUtPmxvZ19tdXRleCk7CiAJbG9nX3Jvb3RfdHJlZS0+bG9nX3RyYW5zaWRf Y29tbWl0dGVkKys7CiAJYXRvbWljX3NldCgmbG9nX3Jvb3RfdHJlZS0+bG9nX2NvbW1pdFtpbmRl eDJdLCAwKTsKIAltdXRleF91bmxvY2soJmxvZ19yb290X3RyZWUtPmxvZ19tdXRleCk7CkBAIC0y NzAwLDEwICsyNjk0LDggQEAgb3V0X3dha2VfbG9nX3Jvb3Q6CiAJaWYgKHdhaXRxdWV1ZV9hY3Rp dmUoJmxvZ19yb290X3RyZWUtPmxvZ19jb21taXRfd2FpdFtpbmRleDJdKSkKIAkJd2FrZV91cCgm bG9nX3Jvb3RfdHJlZS0+bG9nX2NvbW1pdF93YWl0W2luZGV4Ml0pOwogb3V0OgotCS8qIFNlZSBh Ym92ZS4gKi8KLQlidHJmc19yZW1vdmVfYWxsX2xvZ19jdHhzKHJvb3QsIGluZGV4MSwgcmV0KTsK LQogCW11dGV4X2xvY2soJnJvb3QtPmxvZ19tdXRleCk7CisJYnRyZnNfcmVtb3ZlX2FsbF9sb2df Y3R4cyhyb290LCBpbmRleDEsIHJldCk7CiAJcm9vdC0+bG9nX3RyYW5zaWRfY29tbWl0dGVkKys7 CiAJYXRvbWljX3NldCgmcm9vdC0+bG9nX2NvbW1pdFtpbmRleDFdLCAwKTsKIAltdXRleF91bmxv Y2soJnJvb3QtPmxvZ19tdXRleCk7CmRpZmYgLS1naXQgYS9mcy9jaWZzL2NpZnNfZGVidWcuYyBi L2ZzL2NpZnMvY2lmc19kZWJ1Zy5jCmluZGV4IGE3ZTIyM2JiZjhkZi4uYWI0ZjFjZTExZWQwIDEw MDY0NAotLS0gYS9mcy9jaWZzL2NpZnNfZGVidWcuYworKysgYi9mcy9jaWZzL2NpZnNfZGVidWcu YwpAQCAtMTcwLDYgKzE3MCw3IEBAIHN0YXRpYyBpbnQgY2lmc19kZWJ1Z19kYXRhX3Byb2Nfc2hv dyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpCiAJbGlzdF9mb3JfZWFjaCh0bXAxLCAmY2lm c190Y3Bfc2VzX2xpc3QpIHsKIAkJc2VydmVyID0gbGlzdF9lbnRyeSh0bXAxLCBzdHJ1Y3QgVENQ X1NlcnZlcl9JbmZvLAogCQkJCSAgICB0Y3Bfc2VzX2xpc3QpOworCQlzZXFfcHJpbnRmKG0sICJc bk51bWJlciBvZiBjcmVkaXRzOiAlZCIsIHNlcnZlci0+Y3JlZGl0cyk7CiAJCWkrKzsKIAkJbGlz dF9mb3JfZWFjaCh0bXAyLCAmc2VydmVyLT5zbWJfc2VzX2xpc3QpIHsKIAkJCXNlcyA9IGxpc3Rf ZW50cnkodG1wMiwgc3RydWN0IGNpZnNfc2VzLApkaWZmIC0tZ2l0IGEvZnMvY2lmcy9jaWZzZnMu YyBiL2ZzL2NpZnMvY2lmc2ZzLmMKaW5kZXggNDQ1ZTFiMDExOTFhLi5hMjE5Y2YwMGMyZjAgMTAw NjQ0Ci0tLSBhL2ZzL2NpZnMvY2lmc2ZzLmMKKysrIGIvZnMvY2lmcy9jaWZzZnMuYwpAQCAtMjU2 LDcgKzI1Niw3IEBAIGNpZnNfYWxsb2NfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKIAlj aWZzX2lub2RlLT5jcmVhdGV0aW1lID0gMDsKIAljaWZzX2lub2RlLT5lcG9jaCA9IDA7CiAjaWZk ZWYgQ09ORklHX0NJRlNfU01CMgotCWdldF9yYW5kb21fYnl0ZXMoY2lmc19pbm9kZS0+bGVhc2Vf a2V5LCBTTUIyX0xFQVNFX0tFWV9TSVpFKTsKKwlnZW5lcmF0ZV9yYW5kb21fdXVpZChjaWZzX2lu b2RlLT5sZWFzZV9rZXkpOwogI2VuZGlmCiAJLyoKIAkgKiBDYW4gbm90IHNldCBpX2ZsYWdzIGhl cmUgLSB0aGV5IGdldCBpbW1lZGlhdGVseSBvdmVyd3JpdHRlbiB0byB6ZXJvCkBAIC0xMTkzLDcg KzExOTMsNiBAQCBpbml0X2NpZnModm9pZCkKIAlHbG9iYWxUb3RhbEFjdGl2ZVhpZCA9IDA7CiAJ R2xvYmFsTWF4QWN0aXZlWGlkID0gMDsKIAlzcGluX2xvY2tfaW5pdCgmY2lmc190Y3Bfc2VzX2xv Y2spOwotCXNwaW5fbG9ja19pbml0KCZjaWZzX2ZpbGVfbGlzdF9sb2NrKTsKIAlzcGluX2xvY2tf aW5pdCgmR2xvYmFsTWlkX0xvY2spOwogCiAJaWYgKGNpZnNfbWF4X3BlbmRpbmcgPCAyKSB7CmRp ZmYgLS1naXQgYS9mcy9jaWZzL2NpZnNnbG9iLmggYi9mcy9jaWZzL2NpZnNnbG9iLmgKaW5kZXgg Yzk3ZmQ4NmNmYjFiLi4xYzY2M2ExNmY3OGEgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvY2lmc2dsb2Iu aAorKysgYi9mcy9jaWZzL2NpZnNnbG9iLmgKQEAgLTc5Niw2ICs3OTYsNyBAQCBzdHJ1Y3QgY2lm c190Y29uIHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIHRjb25fbGlzdDsKIAlpbnQgdGNfY291bnQ7CiAJ c3RydWN0IGxpc3RfaGVhZCBvcGVuRmlsZUxpc3Q7CisJc3BpbmxvY2tfdCBvcGVuX2ZpbGVfbG9j azsgLyogcHJvdGVjdHMgbGlzdCBhYm92ZSAqLwogCXN0cnVjdCBjaWZzX3NlcyAqc2VzOwkvKiBw b2ludGVyIHRvIHNlc3Npb24gYXNzb2NpYXRlZCB3aXRoICovCiAJY2hhciB0cmVlTmFtZVtNQVhf VFJFRV9TSVpFICsgMV07IC8qIFVOQyBuYW1lIG9mIHJlc291cmNlIGluIEFTQ0lJICovCiAJY2hh ciAqbmF0aXZlRmlsZVN5c3RlbTsKQEAgLTg1Miw3ICs4NTMsNyBAQCBzdHJ1Y3QgY2lmc190Y29u IHsKICNlbmRpZiAvKiBDT05GSUdfQ0lGU19TVEFUUzIgKi8KIAlfX3U2NCAgICBieXRlc19yZWFk OwogCV9fdTY0ICAgIGJ5dGVzX3dyaXR0ZW47Ci0Jc3BpbmxvY2tfdCBzdGF0X2xvY2s7CisJc3Bp bmxvY2tfdCBzdGF0X2xvY2s7ICAvKiBwcm90ZWN0cyB0aGUgdHdvIGZpZWxkcyBhYm92ZSAqLwog I2VuZGlmIC8qIENPTkZJR19DSUZTX1NUQVRTICovCiAJRklMRV9TWVNURU1fREVWSUNFX0lORk8g ZnNEZXZJbmZvOwogCUZJTEVfU1lTVEVNX0FUVFJJQlVURV9JTkZPIGZzQXR0ckluZm87IC8qIG9r IGlmIGZzIG5hbWUgdHJ1bmNhdGVkICovCkBAIC05OTksOCArMTAwMCwxMCBAQCBzdHJ1Y3QgY2lm c19maWRfbG9ja3MgewogfTsKIAogc3RydWN0IGNpZnNGaWxlSW5mbyB7CisJLyogZm9sbG93aW5n IHR3byBsaXN0cyBhcmUgcHJvdGVjdGVkIGJ5IHRjb24tPm9wZW5fZmlsZV9sb2NrICovCiAJc3Ry dWN0IGxpc3RfaGVhZCB0bGlzdDsJLyogcG9pbnRlciB0byBuZXh0IGZpZCBvd25lZCBieSB0Y29u ICovCiAJc3RydWN0IGxpc3RfaGVhZCBmbGlzdDsJLyogbmV4dCBmaWQgKGZpbGUgaW5zdGFuY2Up IGZvciB0aGlzIGlub2RlICovCisJLyogbG9jayBsaXN0IGJlbG93IHByb3RlY3RlZCBieSBjaWZz aS0+bG9ja19zZW0gKi8KIAlzdHJ1Y3QgY2lmc19maWRfbG9ja3MgKmxsaXN0OwkvKiBicmxvY2tz IGhlbGQgYnkgdGhpcyBmaWQgKi8KIAlrdWlkX3QgdWlkOwkJLyogYWxsb3dzIGZpbmRpbmcgd2hp Y2ggRmlsZUluZm8gc3RydWN0dXJlICovCiAJX191MzIgcGlkOwkJLyogcHJvY2VzcyBpZCB3aG8g b3BlbmVkIGZpbGUgKi8KQEAgLTEwMDgsMTEgKzEwMTEsMTIgQEAgc3RydWN0IGNpZnNGaWxlSW5m byB7CiAJLyogQkIgYWRkIGxvY2sgc2NvcGUgaW5mbyBoZXJlIGlmIG5lZWRlZCAqLyA7CiAJLyog bG9jayBzY29wZSBpZCAoMCBpZiBub25lKSAqLwogCXN0cnVjdCBkZW50cnkgKmRlbnRyeTsKLQl1 bnNpZ25lZCBpbnQgZl9mbGFnczsKIAlzdHJ1Y3QgdGNvbl9saW5rICp0bGluazsKKwl1bnNpZ25l ZCBpbnQgZl9mbGFnczsKIAlib29sIGludmFsaWRIYW5kbGU6MTsJLyogZmlsZSBjbG9zZWQgdmlh IHNlc3Npb24gYWJlbmQgKi8KIAlib29sIG9wbG9ja19icmVha19jYW5jZWxsZWQ6MTsKLQlpbnQg Y291bnQ7CQkvKiByZWZjb3VudCBwcm90ZWN0ZWQgYnkgY2lmc19maWxlX2xpc3RfbG9jayAqLwor CWludCBjb3VudDsKKwlzcGlubG9ja190IGZpbGVfaW5mb19sb2NrOyAvKiBwcm90ZWN0cyBmb3Vy IGZsYWcvY291bnQgZmllbGRzIGFib3ZlICovCiAJc3RydWN0IG11dGV4IGZoX211dGV4OyAvKiBw cmV2ZW50cyByZW9wZW4gcmFjZSBhZnRlciBkZWFkIHNlcyovCiAJc3RydWN0IGNpZnNfc2VhcmNo X2luZm8gc3JjaF9pbmY7CiAJc3RydWN0IHdvcmtfc3RydWN0IG9wbG9ja19icmVhazsgLyogd29y ayBmb3Igb3Bsb2NrIGJyZWFrcyAqLwpAQCAtMTA3Niw3ICsxMDgwLDcgQEAgc3RydWN0IGNpZnNf d3JpdGVkYXRhIHsKIAogLyoKICAqIFRha2UgYSByZWZlcmVuY2Ugb24gdGhlIGZpbGUgcHJpdmF0 ZSBkYXRhLiBNdXN0IGJlIGNhbGxlZCB3aXRoCi0gKiBjaWZzX2ZpbGVfbGlzdF9sb2NrIGhlbGQu CisgKiBjZmlsZS0+ZmlsZV9pbmZvX2xvY2sgaGVsZC4KICAqLwogc3RhdGljIGlubGluZSB2b2lk CiBjaWZzRmlsZUluZm9fZ2V0X2xvY2tlZChzdHJ1Y3QgY2lmc0ZpbGVJbmZvICpjaWZzX2ZpbGUp CkBAIC0xNDYzLDggKzE0NjcsMTAgQEAgcmVxdWlyZSB1c2Ugb2YgdGhlIHN0cm9uZ2VyIHByb3Rv Y29sICovCiAgKiAgR2xvYmFsTWlkX0xvY2sgcHJvdGVjdHM6CiAgKglsaXN0IG9wZXJhdGlvbnMg b24gcGVuZGluZ19taWRfcSBhbmQgb3Bsb2NrUQogICogICAgICB1cGRhdGVzIHRvIFhJRCBjb3Vu dGVycywgbXVsdGlwbGV4IGlkICBhbmQgU01CIHNlcXVlbmNlIG51bWJlcnMKLSAqICBjaWZzX2Zp bGVfbGlzdF9sb2NrIHByb3RlY3RzOgotICoJbGlzdCBvcGVyYXRpb25zIG9uIHRjcCBhbmQgU01C IHNlc3Npb24gbGlzdHMgYW5kIHRDb24gbGlzdHMKKyAqICB0Y3Bfc2VzX2xvY2sgcHJvdGVjdHM6 CisgKglsaXN0IG9wZXJhdGlvbnMgb24gdGNwIGFuZCBTTUIgc2Vzc2lvbiBsaXN0cworICogIHRj b24tPm9wZW5fZmlsZV9sb2NrIHByb3RlY3RzIHRoZSBsaXN0IG9mIG9wZW4gZmlsZXMgaGFuZ2lu ZyBvZmYgdGhlIHRjb24KKyAqICBjZmlsZS0+ZmlsZV9pbmZvX2xvY2sgcHJvdGVjdHMgY291bnRl cnMgYW5kIGZpZWxkcyBpbiBjaWZzIGZpbGUgc3RydWN0CiAgKiAgZl9vd25lci5sb2NrIHByb3Rl Y3RzIGNlcnRhaW4gcGVyIGZpbGUgc3RydWN0IG9wZXJhdGlvbnMKICAqICBtYXBwaW5nLT5wYWdl X2xvY2sgcHJvdGVjdHMgY2VydGFpbiBwZXIgcGFnZSBvcGVyYXRpb25zCiAgKgpAQCAtMTQ5Niwx OCArMTUwMiwxMiBAQCBHTE9CQUxfRVhURVJOIHN0cnVjdCBsaXN0X2hlYWQJCWNpZnNfdGNwX3Nl c19saXN0OwogICogdGNwIHNlc3Npb24sIGFuZCB0aGUgbGlzdCBvZiB0Y29uJ3MgcGVyIHNtYiBz ZXNzaW9uLiBJdCBhbHNvIHByb3RlY3RzCiAgKiB0aGUgcmVmZXJlbmNlIGNvdW50ZXJzIGZvciB0 aGUgc2VydmVyLCBzbWIgc2Vzc2lvbiwgYW5kIHRjb24uIEZpbmFsbHksCiAgKiBjaGFuZ2VzIHRv IHRoZSB0Y29uLT50aWRTdGF0dXMgc2hvdWxkIGJlIGRvbmUgd2hpbGUgaG9sZGluZyB0aGlzIGxv Y2suCisgKiBnZW5lcmFsbHkgdGhlIGxvY2tzIHNob3VsZCBiZSB0YWtlbiBpbiBvcmRlciB0Y3Bf c2VzX2xvY2sgYmVmb3JlCisgKiB0Y29uLT5vcGVuX2ZpbGVfbG9jayBhbmQgdGhhdCBiZWZvcmUg ZmlsZS0+ZmlsZV9pbmZvX2xvY2sgc2luY2UgdGhlCisgKiBzdHJ1Y3R1cmUgb3JkZXIgaXMgY2lm c19zb2NrZXQtLT5jaWZzX3Nlcy0tPmNpZnNfdGNvbi0tPmNpZnNfZmlsZQogICovCiBHTE9CQUxf RVhURVJOIHNwaW5sb2NrX3QJCWNpZnNfdGNwX3Nlc19sb2NrOwogCi0vKgotICogVGhpcyBsb2Nr IHByb3RlY3RzIHRoZSBjaWZzX2ZpbGUtPmxsaXN0IGFuZCBjaWZzX2ZpbGUtPmZsaXN0Ci0gKiBs aXN0IG9wZXJhdGlvbnMsIGFuZCB1cGRhdGVzIHRvIHNvbWUgZmxhZ3MgKGNpZnNfZmlsZS0+aW52 YWxpZEhhbmRsZSkKLSAqIEl0IHdpbGwgYmUgbW92ZWQgdG8gZWl0aGVyIHVzZSB0aGUgdGNvbi0+ c3RhdF9sb2NrIG9yIGVxdWl2YWxlbnQgbGF0ZXIuCi0gKiBJZiBjaWZzX3RjcF9zZXNfbG9jayBh bmQgdGhlIGxvY2sgYmVsb3cgYXJlIGJvdGggbmVlZGVkIHRvIGJlIGhlbGQsIHRoZW4KLSAqIHRo ZSBjaWZzX3RjcF9zZXNfbG9jayBtdXN0IGJlIGdyYWJiZWQgZmlyc3QgYW5kIHJlbGVhc2VkIGxh c3QuCi0gKi8KLUdMT0JBTF9FWFRFUk4gc3BpbmxvY2tfdAljaWZzX2ZpbGVfbGlzdF9sb2NrOwot CiAjaWZkZWYgQ09ORklHX0NJRlNfRE5PVElGWV9FWFBFUklNRU5UQUwgLyogdW51c2VkIHRlbXBv cmFyaWx5ICovCiAvKiBPdXRzdGFuZGluZyBkaXIgbm90aWZ5IHJlcXVlc3RzICovCiBHTE9CQUxf RVhURVJOIHN0cnVjdCBsaXN0X2hlYWQgR2xvYmFsRG5vdGlmeVJlcUxpc3Q7CmRpZmYgLS1naXQg YS9mcy9jaWZzL2NpZnNzbWIuYyBiL2ZzL2NpZnMvY2lmc3NtYi5jCmluZGV4IDJkZjEzOTBlNWQ2 Ni4uMWMyOTgxZmRhNjNkIDEwMDY0NAotLS0gYS9mcy9jaWZzL2NpZnNzbWIuYworKysgYi9mcy9j aWZzL2NpZnNzbWIuYwpAQCAtOTgsMTMgKzk4LDEzIEBAIGNpZnNfbWFya19vcGVuX2ZpbGVzX2lu dmFsaWQoc3RydWN0IGNpZnNfdGNvbiAqdGNvbikKIAlzdHJ1Y3QgbGlzdF9oZWFkICp0bXAxOwog CiAJLyogbGlzdCBhbGwgZmlsZXMgb3BlbiBvbiB0cmVlIGNvbm5lY3Rpb24gYW5kIG1hcmsgdGhl bSBpbnZhbGlkICovCi0Jc3Bpbl9sb2NrKCZjaWZzX2ZpbGVfbGlzdF9sb2NrKTsKKwlzcGluX2xv Y2soJnRjb24tPm9wZW5fZmlsZV9sb2NrKTsKIAlsaXN0X2Zvcl9lYWNoX3NhZmUodG1wLCB0bXAx LCAmdGNvbi0+b3BlbkZpbGVMaXN0KSB7CiAJCW9wZW5fZmlsZSA9IGxpc3RfZW50cnkodG1wLCBz dHJ1Y3QgY2lmc0ZpbGVJbmZvLCB0bGlzdCk7CiAJCW9wZW5fZmlsZS0+aW52YWxpZEhhbmRsZSA9 IHRydWU7CiAJCW9wZW5fZmlsZS0+b3Bsb2NrX2JyZWFrX2NhbmNlbGxlZCA9IHRydWU7CiAJfQot CXNwaW5fdW5sb2NrKCZjaWZzX2ZpbGVfbGlzdF9sb2NrKTsKKwlzcGluX3VubG9jaygmdGNvbi0+ b3Blbl9maWxlX2xvY2spOwogCS8qCiAJICogQkIgQWRkIGNhbGwgdG8gaW52YWxpZGF0ZV9pbm9k ZXMoc2IpIGZvciBhbGwgc3VwZXJibG9ja3MgbW91bnRlZAogCSAqIHRvIHRoaXMgdGNvbi4KZGlm ZiAtLWdpdCBhL2ZzL2NpZnMvY29ubmVjdC5jIGIvZnMvY2lmcy9jb25uZWN0LmMKaW5kZXggM2Mz OTNiOTc1OWQ4Li40MzkyMjk2ZTZmM2YgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvY29ubmVjdC5jCisr KyBiL2ZzL2NpZnMvY29ubmVjdC5jCkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBjaWZzX2dldF90Y3Bf c2Vzc2lvbihzdHJ1Y3Qgc21iX3ZvbCAqdm9sdW1lX2luZm8pCiAJbWVtY3B5KCZ0Y3Bfc2VzLT5k c3RhZGRyLCAmdm9sdW1lX2luZm8tPmRzdGFkZHIsCiAJCXNpemVvZih0Y3Bfc2VzLT5kc3RhZGRy KSk7CiAjaWZkZWYgQ09ORklHX0NJRlNfU01CMgotCWdldF9yYW5kb21fYnl0ZXModGNwX3Nlcy0+ Y2xpZW50X2d1aWQsIFNNQjJfQ0xJRU5UX0dVSURfU0laRSk7CisJZ2VuZXJhdGVfcmFuZG9tX3V1 aWQodGNwX3Nlcy0+Y2xpZW50X2d1aWQpOwogI2VuZGlmCiAJLyoKIAkgKiBhdCB0aGlzIHBvaW50 IHdlIGFyZSB0aGUgb25seSBvbmVzIHdpdGggdGhlIHBvaW50ZXIKZGlmZiAtLWdpdCBhL2ZzL2Np ZnMvZmlsZS5jIGIvZnMvY2lmcy9maWxlLmMKaW5kZXggZTY0NWI5ZjRmNmEzLi41ZjgyZTQ5MDU3 NTIgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvZmlsZS5jCisrKyBiL2ZzL2NpZnMvZmlsZS5jCkBAIC0z MDYsNiArMzA2LDcgQEAgY2lmc19uZXdfZmlsZWluZm8oc3RydWN0IGNpZnNfZmlkICpmaWQsIHN0 cnVjdCBmaWxlICpmaWxlLAogCWNmaWxlLT50bGluayA9IGNpZnNfZ2V0X3RsaW5rKHRsaW5rKTsK IAlJTklUX1dPUksoJmNmaWxlLT5vcGxvY2tfYnJlYWssIGNpZnNfb3Bsb2NrX2JyZWFrKTsKIAlt dXRleF9pbml0KCZjZmlsZS0+ZmhfbXV0ZXgpOworCXNwaW5fbG9ja19pbml0KCZjZmlsZS0+Zmls ZV9pbmZvX2xvY2spOwogCiAJY2lmc19zYl9hY3RpdmUoaW5vZGUtPmlfc2IpOwogCkBAIC0zMTgs NyArMzE5LDcgQEAgY2lmc19uZXdfZmlsZWluZm8oc3RydWN0IGNpZnNfZmlkICpmaWQsIHN0cnVj dCBmaWxlICpmaWxlLAogCQlvcGxvY2sgPSAwOwogCX0KIAotCXNwaW5fbG9jaygmY2lmc19maWxl X2xpc3RfbG9jayk7CisJc3Bpbl9sb2NrKCZ0Y29uLT5vcGVuX2ZpbGVfbG9jayk7CiAJaWYgKGZp ZC0+cGVuZGluZ19vcGVuLT5vcGxvY2sgIT0gQ0lGU19PUExPQ0tfTk9fQ0hBTkdFICYmIG9wbG9j aykKIAkJb3Bsb2NrID0gZmlkLT5wZW5kaW5nX29wZW4tPm9wbG9jazsKIAlsaXN0X2RlbCgmZmlk LT5wZW5kaW5nX29wZW4tPm9saXN0KTsKQEAgLTMyNywxMiArMzI4LDEzIEBAIGNpZnNfbmV3X2Zp bGVpbmZvKHN0cnVjdCBjaWZzX2ZpZCAqZmlkLCBzdHJ1Y3QgZmlsZSAqZmlsZSwKIAlzZXJ2ZXIt Pm9wcy0+c2V0X2ZpZChjZmlsZSwgZmlkLCBvcGxvY2spOwogCiAJbGlzdF9hZGQoJmNmaWxlLT50 bGlzdCwgJnRjb24tPm9wZW5GaWxlTGlzdCk7CisKIAkvKiBpZiByZWFkYWJsZSBmaWxlIGluc3Rh bmNlIHB1dCBmaXJzdCBpbiBsaXN0Ki8KIAlpZiAoZmlsZS0+Zl9tb2RlICYgRk1PREVfUkVBRCkK IAkJbGlzdF9hZGQoJmNmaWxlLT5mbGlzdCwgJmNpbm9kZS0+b3BlbkZpbGVMaXN0KTsKIAllbHNl CiAJCWxpc3RfYWRkX3RhaWwoJmNmaWxlLT5mbGlzdCwgJmNpbm9kZS0+b3BlbkZpbGVMaXN0KTsK LQlzcGluX3VubG9jaygmY2lmc19maWxlX2xpc3RfbG9jayk7CisJc3Bpbl91bmxvY2soJnRjb24t Pm9wZW5fZmlsZV9sb2NrKTsKIAogCWlmIChmaWQtPnB1cmdlX2NhY2hlKQogCQljaWZzX3phcF9t YXBwaW5nKGlub2RlKTsKQEAgLTM0NCwxNiArMzQ2LDE2IEBAIGNpZnNfbmV3X2ZpbGVpbmZvKHN0 cnVjdCBjaWZzX2ZpZCAqZmlkLCBzdHJ1Y3QgZmlsZSAqZmlsZSwKIHN0cnVjdCBjaWZzRmlsZUlu Zm8gKgogY2lmc0ZpbGVJbmZvX2dldChzdHJ1Y3QgY2lmc0ZpbGVJbmZvICpjaWZzX2ZpbGUpCiB7 Ci0Jc3Bpbl9sb2NrKCZjaWZzX2ZpbGVfbGlzdF9sb2NrKTsKKwlzcGluX2xvY2soJmNpZnNfZmls ZS0+ZmlsZV9pbmZvX2xvY2spOwogCWNpZnNGaWxlSW5mb19nZXRfbG9ja2VkKGNpZnNfZmlsZSk7 Ci0Jc3Bpbl91bmxvY2soJmNpZnNfZmlsZV9saXN0X2xvY2spOworCXNwaW5fdW5sb2NrKCZjaWZz X2ZpbGUtPmZpbGVfaW5mb19sb2NrKTsKIAlyZXR1cm4gY2lmc19maWxlOwogfQogCiAvKgogICog UmVsZWFzZSBhIHJlZmVyZW5jZSBvbiB0aGUgZmlsZSBwcml2YXRlIGRhdGEuIFRoaXMgbWF5IGlu dm9sdmUgY2xvc2luZwogICogdGhlIGZpbGVoYW5kbGUgb3V0IG9uIHRoZSBzZXJ2ZXIuIE11c3Qg YmUgY2FsbGVkIHdpdGhvdXQgaG9sZGluZwotICogY2lmc19maWxlX2xpc3RfbG9jay4KKyAqIHRj b24tPm9wZW5fZmlsZV9sb2NrIGFuZCBjaWZzX2ZpbGUtPmZpbGVfaW5mb19sb2NrLgogICovCiB2 b2lkIGNpZnNGaWxlSW5mb19wdXQoc3RydWN0IGNpZnNGaWxlSW5mbyAqY2lmc19maWxlKQogewpA QCAtMzY4LDExICszNzAsMTUgQEAgdm9pZCBjaWZzRmlsZUluZm9fcHV0KHN0cnVjdCBjaWZzRmls ZUluZm8gKmNpZnNfZmlsZSkKIAlzdHJ1Y3QgY2lmc19wZW5kaW5nX29wZW4gb3BlbjsKIAlib29s IG9wbG9ja19icmVha19jYW5jZWxsZWQ7CiAKLQlzcGluX2xvY2soJmNpZnNfZmlsZV9saXN0X2xv Y2spOworCXNwaW5fbG9jaygmdGNvbi0+b3Blbl9maWxlX2xvY2spOworCisJc3Bpbl9sb2NrKCZj aWZzX2ZpbGUtPmZpbGVfaW5mb19sb2NrKTsKIAlpZiAoLS1jaWZzX2ZpbGUtPmNvdW50ID4gMCkg ewotCQlzcGluX3VubG9jaygmY2lmc19maWxlX2xpc3RfbG9jayk7CisJCXNwaW5fdW5sb2NrKCZj aWZzX2ZpbGUtPmZpbGVfaW5mb19sb2NrKTsKKwkJc3Bpbl91bmxvY2soJnRjb24tPm9wZW5fZmls ZV9sb2NrKTsKIAkJcmV0dXJuOwogCX0KKwlzcGluX3VubG9jaygmY2lmc19maWxlLT5maWxlX2lu Zm9fbG9jayk7CiAKIAlpZiAoc2VydmVyLT5vcHMtPmdldF9sZWFzZV9rZXkpCiAJCXNlcnZlci0+ b3BzLT5nZXRfbGVhc2Vfa2V5KGlub2RlLCAmZmlkKTsKQEAgLTM5Niw3ICs0MDIsOCBAQCB2b2lk IGNpZnNGaWxlSW5mb19wdXQoc3RydWN0IGNpZnNGaWxlSW5mbyAqY2lmc19maWxlKQogCQkJc2V0 X2JpdChDSUZTX0lOT19JTlZBTElEX01BUFBJTkcsICZjaWZzaS0+ZmxhZ3MpOwogCQljaWZzX3Nl dF9vcGxvY2tfbGV2ZWwoY2lmc2ksIDApOwogCX0KLQlzcGluX3VubG9jaygmY2lmc19maWxlX2xp c3RfbG9jayk7CisKKwlzcGluX3VubG9jaygmdGNvbi0+b3Blbl9maWxlX2xvY2spOwogCiAJb3Bs b2NrX2JyZWFrX2NhbmNlbGxlZCA9IGNhbmNlbF93b3JrX3N5bmMoJmNpZnNfZmlsZS0+b3Bsb2Nr X2JyZWFrKTsKIApAQCAtNzY1LDEwICs3NzIsMTAgQEAgaW50IGNpZnNfY2xvc2VkaXIoc3RydWN0 IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCiAJc2VydmVyID0gdGNvbi0+c2VzLT5z ZXJ2ZXI7CiAKIAljaWZzX2RiZyhGWUksICJGcmVlaW5nIHByaXZhdGUgZGF0YSBpbiBjbG9zZSBk aXJcbiIpOwotCXNwaW5fbG9jaygmY2lmc19maWxlX2xpc3RfbG9jayk7CisJc3Bpbl9sb2NrKCZj ZmlsZS0+ZmlsZV9pbmZvX2xvY2spOwogCWlmIChzZXJ2ZXItPm9wcy0+ZGlyX25lZWRzX2Nsb3Nl KGNmaWxlKSkgewogCQljZmlsZS0+aW52YWxpZEhhbmRsZSA9IHRydWU7Ci0JCXNwaW5fdW5sb2Nr KCZjaWZzX2ZpbGVfbGlzdF9sb2NrKTsKKwkJc3Bpbl91bmxvY2soJmNmaWxlLT5maWxlX2luZm9f bG9jayk7CiAJCWlmIChzZXJ2ZXItPm9wcy0+Y2xvc2VfZGlyKQogCQkJcmMgPSBzZXJ2ZXItPm9w cy0+Y2xvc2VfZGlyKHhpZCwgdGNvbiwgJmNmaWxlLT5maWQpOwogCQllbHNlCkBAIC03NzcsNyAr Nzg0LDcgQEAgaW50IGNpZnNfY2xvc2VkaXIoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZp bGUgKmZpbGUpCiAJCS8qIG5vdCBtdWNoIHdlIGNhbiBkbyBpZiBpdCBmYWlscyBhbnl3YXksIGln bm9yZSByYyAqLwogCQlyYyA9IDA7CiAJfSBlbHNlCi0JCXNwaW5fdW5sb2NrKCZjaWZzX2ZpbGVf bGlzdF9sb2NrKTsKKwkJc3Bpbl91bmxvY2soJmNmaWxlLT5maWxlX2luZm9fbG9jayk7CiAKIAli dWYgPSBjZmlsZS0+c3JjaF9pbmYubnR3cmtfYnVmX3N0YXJ0OwogCWlmIChidWYpIHsKQEAgLTE3 MTksMTIgKzE3MjYsMTMgQEAgc3RydWN0IGNpZnNGaWxlSW5mbyAqZmluZF9yZWFkYWJsZV9maWxl KHN0cnVjdCBjaWZzSW5vZGVJbmZvICpjaWZzX2lub2RlLAogewogCXN0cnVjdCBjaWZzRmlsZUlu Zm8gKm9wZW5fZmlsZSA9IE5VTEw7CiAJc3RydWN0IGNpZnNfc2JfaW5mbyAqY2lmc19zYiA9IENJ RlNfU0IoY2lmc19pbm9kZS0+dmZzX2lub2RlLmlfc2IpOworCXN0cnVjdCBjaWZzX3Rjb24gKnRj b24gPSBjaWZzX3NiX21hc3Rlcl90Y29uKGNpZnNfc2IpOwogCiAJLyogb25seSBmaWx0ZXIgYnkg ZnN1aWQgb24gbXVsdGl1c2VyIG1vdW50cyAqLwogCWlmICghKGNpZnNfc2ItPm1udF9jaWZzX2Zs YWdzICYgQ0lGU19NT1VOVF9NVUxUSVVTRVIpKQogCQlmc3VpZF9vbmx5ID0gZmFsc2U7CiAKLQlz cGluX2xvY2soJmNpZnNfZmlsZV9saXN0X2xvY2spOworCXNwaW5fbG9jaygmdGNvbi0+b3Blbl9m aWxlX2xvY2spOwogCS8qIHdlIGNvdWxkIHNpbXBseSBnZXQgdGhlIGZpcnN0X2xpc3RfZW50cnkg c2luY2Ugd3JpdGUtb25seSBlbnRyaWVzCiAJICAgYXJlIGFsd2F5cyBhdCB0aGUgZW5kIG9mIHRo ZSBsaXN0IGJ1dCBzaW5jZSB0aGUgZmlyc3QgZW50cnkgbWlnaHQKIAkgICBoYXZlIGEgY2xvc2Ug cGVuZGluZywgd2UgZ28gdGhyb3VnaCB0aGUgd2hvbGUgbGlzdCAqLwpAQCAtMTczNSw4ICsxNzQz LDggQEAgc3RydWN0IGNpZnNGaWxlSW5mbyAqZmluZF9yZWFkYWJsZV9maWxlKHN0cnVjdCBjaWZz SW5vZGVJbmZvICpjaWZzX2lub2RlLAogCQkJaWYgKCFvcGVuX2ZpbGUtPmludmFsaWRIYW5kbGUp IHsKIAkJCQkvKiBmb3VuZCBhIGdvb2QgZmlsZSAqLwogCQkJCS8qIGxvY2sgaXQgc28gaXQgd2ls bCBub3QgYmUgY2xvc2VkIG9uIHVzICovCi0JCQkJY2lmc0ZpbGVJbmZvX2dldF9sb2NrZWQob3Bl bl9maWxlKTsKLQkJCQlzcGluX3VubG9jaygmY2lmc19maWxlX2xpc3RfbG9jayk7CisJCQkJY2lm c0ZpbGVJbmZvX2dldChvcGVuX2ZpbGUpOworCQkJCXNwaW5fdW5sb2NrKCZ0Y29uLT5vcGVuX2Zp bGVfbG9jayk7CiAJCQkJcmV0dXJuIG9wZW5fZmlsZTsKIAkJCX0gLyogZWxzZSBtaWdodCBhcyB3 ZWxsIGNvbnRpbnVlLCBhbmQgbG9vayBmb3IKIAkJCSAgICAgYW5vdGhlciwgb3Igc2ltcGx5IGhh dmUgdGhlIGNhbGxlciByZW9wZW4gaXQKQEAgLTE3NDQsNyArMTc1Miw3IEBAIHN0cnVjdCBjaWZz RmlsZUluZm8gKmZpbmRfcmVhZGFibGVfZmlsZShzdHJ1Y3QgY2lmc0lub2RlSW5mbyAqY2lmc19p bm9kZSwKIAkJfSBlbHNlIC8qIHdyaXRlIG9ubHkgZmlsZSAqLwogCQkJYnJlYWs7IC8qIHdyaXRl IG9ubHkgZmlsZXMgYXJlIGxhc3Qgc28gbXVzdCBiZSBkb25lICovCiAJfQotCXNwaW5fdW5sb2Nr KCZjaWZzX2ZpbGVfbGlzdF9sb2NrKTsKKwlzcGluX3VubG9jaygmdGNvbi0+b3Blbl9maWxlX2xv Y2spOwogCXJldHVybiBOVUxMOwogfQogCkBAIC0xNzUzLDYgKzE3NjEsNyBAQCBzdHJ1Y3QgY2lm c0ZpbGVJbmZvICpmaW5kX3dyaXRhYmxlX2ZpbGUoc3RydWN0IGNpZnNJbm9kZUluZm8gKmNpZnNf aW5vZGUsCiB7CiAJc3RydWN0IGNpZnNGaWxlSW5mbyAqb3Blbl9maWxlLCAqaW52X2ZpbGUgPSBO VUxMOwogCXN0cnVjdCBjaWZzX3NiX2luZm8gKmNpZnNfc2I7CisJc3RydWN0IGNpZnNfdGNvbiAq dGNvbjsKIAlib29sIGFueV9hdmFpbGFibGUgPSBmYWxzZTsKIAlpbnQgcmM7CiAJdW5zaWduZWQg aW50IHJlZmluZCA9IDA7CkBAIC0xNzY4LDE1ICsxNzc3LDE2IEBAIHN0cnVjdCBjaWZzRmlsZUlu Zm8gKmZpbmRfd3JpdGFibGVfZmlsZShzdHJ1Y3QgY2lmc0lub2RlSW5mbyAqY2lmc19pbm9kZSwK IAl9CiAKIAljaWZzX3NiID0gQ0lGU19TQihjaWZzX2lub2RlLT52ZnNfaW5vZGUuaV9zYik7CisJ dGNvbiA9IGNpZnNfc2JfbWFzdGVyX3Rjb24oY2lmc19zYik7CiAKIAkvKiBvbmx5IGZpbHRlciBi eSBmc3VpZCBvbiBtdWx0aXVzZXIgbW91bnRzICovCiAJaWYgKCEoY2lmc19zYi0+bW50X2NpZnNf ZmxhZ3MgJiBDSUZTX01PVU5UX01VTFRJVVNFUikpCiAJCWZzdWlkX29ubHkgPSBmYWxzZTsKIAot CXNwaW5fbG9jaygmY2lmc19maWxlX2xpc3RfbG9jayk7CisJc3Bpbl9sb2NrKCZ0Y29uLT5vcGVu X2ZpbGVfbG9jayk7CiByZWZpbmRfd3JpdGFibGU6CiAJaWYgKHJlZmluZCA+IE1BWF9SRU9QRU5f QVRUKSB7Ci0JCXNwaW5fdW5sb2NrKCZjaWZzX2ZpbGVfbGlzdF9sb2NrKTsKKwkJc3Bpbl91bmxv Y2soJnRjb24tPm9wZW5fZmlsZV9sb2NrKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCWxpc3RfZm9y X2VhY2hfZW50cnkob3Blbl9maWxlLCAmY2lmc19pbm9kZS0+b3BlbkZpbGVMaXN0LCBmbGlzdCkg ewpAQCAtMTc4Nyw4ICsxNzk3LDggQEAgcmVmaW5kX3dyaXRhYmxlOgogCQlpZiAoT1BFTl9GTU9E RShvcGVuX2ZpbGUtPmZfZmxhZ3MpICYgRk1PREVfV1JJVEUpIHsKIAkJCWlmICghb3Blbl9maWxl LT5pbnZhbGlkSGFuZGxlKSB7CiAJCQkJLyogZm91bmQgYSBnb29kIHdyaXRhYmxlIGZpbGUgKi8K LQkJCQljaWZzRmlsZUluZm9fZ2V0X2xvY2tlZChvcGVuX2ZpbGUpOwotCQkJCXNwaW5fdW5sb2Nr KCZjaWZzX2ZpbGVfbGlzdF9sb2NrKTsKKwkJCQljaWZzRmlsZUluZm9fZ2V0KG9wZW5fZmlsZSk7 CisJCQkJc3Bpbl91bmxvY2soJnRjb24tPm9wZW5fZmlsZV9sb2NrKTsKIAkJCQlyZXR1cm4gb3Bl bl9maWxlOwogCQkJfSBlbHNlIHsKIAkJCQlpZiAoIWludl9maWxlKQpAQCAtMTgwNCwyNCArMTgx NCwyNCBAQCByZWZpbmRfd3JpdGFibGU6CiAKIAlpZiAoaW52X2ZpbGUpIHsKIAkJYW55X2F2YWls YWJsZSA9IGZhbHNlOwotCQljaWZzRmlsZUluZm9fZ2V0X2xvY2tlZChpbnZfZmlsZSk7CisJCWNp ZnNGaWxlSW5mb19nZXQoaW52X2ZpbGUpOwogCX0KIAotCXNwaW5fdW5sb2NrKCZjaWZzX2ZpbGVf bGlzdF9sb2NrKTsKKwlzcGluX3VubG9jaygmdGNvbi0+b3Blbl9maWxlX2xvY2spOwogCiAJaWYg KGludl9maWxlKSB7CiAJCXJjID0gY2lmc19yZW9wZW5fZmlsZShpbnZfZmlsZSwgZmFsc2UpOwog CQlpZiAoIXJjKQogCQkJcmV0dXJuIGludl9maWxlOwogCQllbHNlIHsKLQkJCXNwaW5fbG9jaygm Y2lmc19maWxlX2xpc3RfbG9jayk7CisJCQlzcGluX2xvY2soJnRjb24tPm9wZW5fZmlsZV9sb2Nr KTsKIAkJCWxpc3RfbW92ZV90YWlsKCZpbnZfZmlsZS0+Zmxpc3QsCiAJCQkJCSZjaWZzX2lub2Rl LT5vcGVuRmlsZUxpc3QpOwotCQkJc3Bpbl91bmxvY2soJmNpZnNfZmlsZV9saXN0X2xvY2spOwor CQkJc3Bpbl91bmxvY2soJnRjb24tPm9wZW5fZmlsZV9sb2NrKTsKIAkJCWNpZnNGaWxlSW5mb19w dXQoaW52X2ZpbGUpOwotCQkJc3Bpbl9sb2NrKCZjaWZzX2ZpbGVfbGlzdF9sb2NrKTsKIAkJCSsr cmVmaW5kOwogCQkJaW52X2ZpbGUgPSBOVUxMOworCQkJc3Bpbl9sb2NrKCZ0Y29uLT5vcGVuX2Zp bGVfbG9jayk7CiAJCQlnb3RvIHJlZmluZF93cml0YWJsZTsKIAkJfQogCX0KQEAgLTM0NjYsMTUg KzM0NzYsMTcgQEAgc3RhdGljIGludCBjaWZzX3JlYWRwYWdlKHN0cnVjdCBmaWxlICpmaWxlLCBz dHJ1Y3QgcGFnZSAqcGFnZSkKIHN0YXRpYyBpbnQgaXNfaW5vZGVfd3JpdGFibGUoc3RydWN0IGNp ZnNJbm9kZUluZm8gKmNpZnNfaW5vZGUpCiB7CiAJc3RydWN0IGNpZnNGaWxlSW5mbyAqb3Blbl9m aWxlOworCXN0cnVjdCBjaWZzX3Rjb24gKnRjb24gPQorCQljaWZzX3NiX21hc3Rlcl90Y29uKENJ RlNfU0IoY2lmc19pbm9kZS0+dmZzX2lub2RlLmlfc2IpKTsKIAotCXNwaW5fbG9jaygmY2lmc19m aWxlX2xpc3RfbG9jayk7CisJc3Bpbl9sb2NrKCZ0Y29uLT5vcGVuX2ZpbGVfbG9jayk7CiAJbGlz dF9mb3JfZWFjaF9lbnRyeShvcGVuX2ZpbGUsICZjaWZzX2lub2RlLT5vcGVuRmlsZUxpc3QsIGZs aXN0KSB7CiAJCWlmIChPUEVOX0ZNT0RFKG9wZW5fZmlsZS0+Zl9mbGFncykgJiBGTU9ERV9XUklU RSkgewotCQkJc3Bpbl91bmxvY2soJmNpZnNfZmlsZV9saXN0X2xvY2spOworCQkJc3Bpbl91bmxv Y2soJnRjb24tPm9wZW5fZmlsZV9sb2NrKTsKIAkJCXJldHVybiAxOwogCQl9CiAJfQotCXNwaW5f dW5sb2NrKCZjaWZzX2ZpbGVfbGlzdF9sb2NrKTsKKwlzcGluX3VubG9jaygmdGNvbi0+b3Blbl9m aWxlX2xvY2spOwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9mcy9jaWZzL21pc2MuYyBi L2ZzL2NpZnMvbWlzYy5jCmluZGV4IDNiMGM2MmU2MjJkYS4uNWIzNzM1YjNjYTg1IDEwMDY0NAot LS0gYS9mcy9jaWZzL21pc2MuYworKysgYi9mcy9jaWZzL21pc2MuYwpAQCAtMTIwLDYgKzEyMCw3 IEBAIHRjb25JbmZvQWxsb2Modm9pZCkKIAkJKytyZXRfYnVmLT50Y19jb3VudDsKIAkJSU5JVF9M SVNUX0hFQUQoJnJldF9idWYtPm9wZW5GaWxlTGlzdCk7CiAJCUlOSVRfTElTVF9IRUFEKCZyZXRf YnVmLT50Y29uX2xpc3QpOworCQlzcGluX2xvY2tfaW5pdCgmcmV0X2J1Zi0+b3Blbl9maWxlX2xv Y2spOwogI2lmZGVmIENPTkZJR19DSUZTX1NUQVRTCiAJCXNwaW5fbG9ja19pbml0KCZyZXRfYnVm LT5zdGF0X2xvY2spOwogI2VuZGlmCkBAIC00NTYsNyArNDU3LDcgQEAgaXNfdmFsaWRfb3Bsb2Nr X2JyZWFrKGNoYXIgKmJ1ZmZlciwgc3RydWN0IFRDUF9TZXJ2ZXJfSW5mbyAqc3J2KQogCQkJCWNv bnRpbnVlOwogCiAJCQljaWZzX3N0YXRzX2luYygmdGNvbi0+c3RhdHMuY2lmc19zdGF0cy5udW1f b3Bsb2NrX2Jya3MpOwotCQkJc3Bpbl9sb2NrKCZjaWZzX2ZpbGVfbGlzdF9sb2NrKTsKKwkJCXNw aW5fbG9jaygmdGNvbi0+b3Blbl9maWxlX2xvY2spOwogCQkJbGlzdF9mb3JfZWFjaCh0bXAyLCAm dGNvbi0+b3BlbkZpbGVMaXN0KSB7CiAJCQkJbmV0ZmlsZSA9IGxpc3RfZW50cnkodG1wMiwgc3Ry dWN0IGNpZnNGaWxlSW5mbywKIAkJCQkJCSAgICAgdGxpc3QpOwpAQCAtNDg2LDExICs0ODcsMTEg QEAgaXNfdmFsaWRfb3Bsb2NrX2JyZWFrKGNoYXIgKmJ1ZmZlciwgc3RydWN0IFRDUF9TZXJ2ZXJf SW5mbyAqc3J2KQogCQkJCQkgICAmbmV0ZmlsZS0+b3Bsb2NrX2JyZWFrKTsKIAkJCQluZXRmaWxl LT5vcGxvY2tfYnJlYWtfY2FuY2VsbGVkID0gZmFsc2U7CiAKLQkJCQlzcGluX3VubG9jaygmY2lm c19maWxlX2xpc3RfbG9jayk7CisJCQkJc3Bpbl91bmxvY2soJnRjb24tPm9wZW5fZmlsZV9sb2Nr KTsKIAkJCQlzcGluX3VubG9jaygmY2lmc190Y3Bfc2VzX2xvY2spOwogCQkJCXJldHVybiB0cnVl OwogCQkJfQotCQkJc3Bpbl91bmxvY2soJmNpZnNfZmlsZV9saXN0X2xvY2spOworCQkJc3Bpbl91 bmxvY2soJnRjb24tPm9wZW5fZmlsZV9sb2NrKTsKIAkJCXNwaW5fdW5sb2NrKCZjaWZzX3RjcF9z ZXNfbG9jayk7CiAJCQljaWZzX2RiZyhGWUksICJObyBtYXRjaGluZyBmaWxlIGZvciBvcGxvY2sg YnJlYWtcbiIpOwogCQkJcmV0dXJuIHRydWU7CkBAIC02MzksOSArNjQwLDkgQEAgYmFja3VwX2Ny ZWQoc3RydWN0IGNpZnNfc2JfaW5mbyAqY2lmc19zYikKIHZvaWQKIGNpZnNfZGVsX3BlbmRpbmdf b3BlbihzdHJ1Y3QgY2lmc19wZW5kaW5nX29wZW4gKm9wZW4pCiB7Ci0Jc3Bpbl9sb2NrKCZjaWZz X2ZpbGVfbGlzdF9sb2NrKTsKKwlzcGluX2xvY2soJnRsaW5rX3Rjb24ob3Blbi0+dGxpbmspLT5v cGVuX2ZpbGVfbG9jayk7CiAJbGlzdF9kZWwoJm9wZW4tPm9saXN0KTsKLQlzcGluX3VubG9jaygm Y2lmc19maWxlX2xpc3RfbG9jayk7CisJc3Bpbl91bmxvY2soJnRsaW5rX3Rjb24ob3Blbi0+dGxp bmspLT5vcGVuX2ZpbGVfbG9jayk7CiB9CiAKIHZvaWQKQEAgLTY2MSw3ICs2NjIsNyBAQCB2b2lk CiBjaWZzX2FkZF9wZW5kaW5nX29wZW4oc3RydWN0IGNpZnNfZmlkICpmaWQsIHN0cnVjdCB0Y29u X2xpbmsgKnRsaW5rLAogCQkgICAgICBzdHJ1Y3QgY2lmc19wZW5kaW5nX29wZW4gKm9wZW4pCiB7 Ci0Jc3Bpbl9sb2NrKCZjaWZzX2ZpbGVfbGlzdF9sb2NrKTsKKwlzcGluX2xvY2soJnRsaW5rX3Rj b24odGxpbmspLT5vcGVuX2ZpbGVfbG9jayk7CiAJY2lmc19hZGRfcGVuZGluZ19vcGVuX2xvY2tl ZChmaWQsIHRsaW5rLCBvcGVuKTsKLQlzcGluX3VubG9jaygmY2lmc19maWxlX2xpc3RfbG9jayk7 CisJc3Bpbl91bmxvY2soJnRsaW5rX3Rjb24ob3Blbi0+dGxpbmspLT5vcGVuX2ZpbGVfbG9jayk7 CiB9CmRpZmYgLS1naXQgYS9mcy9jaWZzL3JlYWRkaXIuYyBiL2ZzL2NpZnMvcmVhZGRpci5jCmlu ZGV4IDEzMjBkMWVjYzYzMC4uMjdlNGFkN2VmMTcyIDEwMDY0NAotLS0gYS9mcy9jaWZzL3JlYWRk aXIuYworKysgYi9mcy9jaWZzL3JlYWRkaXIuYwpAQCAtNTkyLDE0ICs1OTIsMTQgQEAgZmluZF9j aWZzX2VudHJ5KGNvbnN0IHVuc2lnbmVkIGludCB4aWQsIHN0cnVjdCBjaWZzX3Rjb24gKnRjb24s IGxvZmZfdCBwb3MsCiAJICAgICBpc19kaXJfY2hhbmdlZChmaWxlKSkgfHwgKGluZGV4X3RvX2Zp bmQgPCBmaXJzdF9lbnRyeV9pbl9idWZmZXIpKSB7CiAJCS8qIGNsb3NlIGFuZCByZXN0YXJ0IHNl YXJjaCAqLwogCQljaWZzX2RiZyhGWUksICJzZWFyY2ggYmFja2luZyB1cCAtIGNsb3NlIGFuZCBy ZXN0YXJ0IHNlYXJjaFxuIik7Ci0JCXNwaW5fbG9jaygmY2lmc19maWxlX2xpc3RfbG9jayk7CisJ CXNwaW5fbG9jaygmY2ZpbGUtPmZpbGVfaW5mb19sb2NrKTsKIAkJaWYgKHNlcnZlci0+b3BzLT5k aXJfbmVlZHNfY2xvc2UoY2ZpbGUpKSB7CiAJCQljZmlsZS0+aW52YWxpZEhhbmRsZSA9IHRydWU7 Ci0JCQlzcGluX3VubG9jaygmY2lmc19maWxlX2xpc3RfbG9jayk7CisJCQlzcGluX3VubG9jaygm Y2ZpbGUtPmZpbGVfaW5mb19sb2NrKTsKIAkJCWlmIChzZXJ2ZXItPm9wcy0+Y2xvc2VfZGlyKQog CQkJCXNlcnZlci0+b3BzLT5jbG9zZV9kaXIoeGlkLCB0Y29uLCAmY2ZpbGUtPmZpZCk7CiAJCX0g ZWxzZQotCQkJc3Bpbl91bmxvY2soJmNpZnNfZmlsZV9saXN0X2xvY2spOworCQkJc3Bpbl91bmxv Y2soJmNmaWxlLT5maWxlX2luZm9fbG9jayk7CiAJCWlmIChjZmlsZS0+c3JjaF9pbmYubnR3cmtf YnVmX3N0YXJ0KSB7CiAJCQljaWZzX2RiZyhGWUksICJmcmVlaW5nIFNNQiBmZiBjYWNoZSBidWYg b24gc2VhcmNoIHJld2luZFxuIik7CiAJCQlpZiAoY2ZpbGUtPnNyY2hfaW5mLnNtYWxsQnVmKQpk aWZmIC0tZ2l0IGEvZnMvY2lmcy9zbWIyZ2xvYi5oIGIvZnMvY2lmcy9zbWIyZ2xvYi5oCmluZGV4 IDBmZmExODA5NDMzNS4uMjM4NzU5YzE0NmJhIDEwMDY0NAotLS0gYS9mcy9jaWZzL3NtYjJnbG9i LmgKKysrIGIvZnMvY2lmcy9zbWIyZ2xvYi5oCkBAIC02MSw0ICs2MSwxNCBAQAogLyogTWF4aW11 bSBidWZmZXIgc2l6ZSB2YWx1ZSB3ZSBjYW4gc2VuZCB3aXRoIDEgY3JlZGl0ICovCiAjZGVmaW5l IFNNQjJfTUFYX0JVRkZFUl9TSVpFIDY1NTM2CiAKKy8qCisgKiBNYXhpbXVtIG51bWJlciBvZiBj cmVkaXRzIHRvIGtlZXAgYXZhaWxhYmxlLgorICogVGhpcyB2YWx1ZSBpcyBjaG9zZW4gc29tZXdo YXQgYXJiaXRyYXJpbHkuIFRoZSBXaW5kb3dzIGNsaWVudAorICogZGVmYXVsdHMgdG8gMTI4IGNy ZWRpdHMsIHRoZSBXaW5kb3dzIHNlcnZlciBhbGxvd3MgY2xpZW50cyB1cCB0bworICogNTEyIGNy ZWRpdHMsIGFuZCB0aGUgTmV0QXBwIHNlcnZlciBkb2VzIG5vdCBsaW1pdCBjbGllbnRzIGF0IGFs bC4KKyAqIENob29zZSBhIGhpZ2ggZW5vdWdoIHZhbHVlIHN1Y2ggdGhhdCB0aGUgY2xpZW50IHNo b3VsZG4ndCBsaW1pdAorICogcGVyZm9ybWFuY2UuCisgKi8KKyNkZWZpbmUgU01CMl9NQVhfQ1JF RElUU19BVkFJTEFCTEUgMzIwMDAKKwogI2VuZGlmCS8qIF9TTUIyX0dMT0JfSCAqLwpkaWZmIC0t Z2l0IGEvZnMvY2lmcy9zbWIyaW5vZGUuYyBiL2ZzL2NpZnMvc21iMmlub2RlLmMKaW5kZXggZjk3 MGM1ZDViMjUzLi41NDk2NzZmN2I4MTEgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvc21iMmlub2RlLmMK KysrIGIvZnMvY2lmcy9zbWIyaW5vZGUuYwpAQCAtMjY2LDkgKzI2NiwxNSBAQCBzbWIyX3NldF9m aWxlX2luZm8oc3RydWN0IGlub2RlICppbm9kZSwgY29uc3QgY2hhciAqZnVsbF9wYXRoLAogCXN0 cnVjdCB0Y29uX2xpbmsgKnRsaW5rOwogCWludCByYzsKIAorCWlmICgoYnVmLT5DcmVhdGlvblRp bWUgPT0gMCkgJiYgKGJ1Zi0+TGFzdEFjY2Vzc1RpbWUgPT0gMCkgJiYKKwkgICAgKGJ1Zi0+TGFz dFdyaXRlVGltZSA9PSAwKSAmJiAoYnVmLT5DaGFuZ2VUaW1lKSAmJgorCSAgICAoYnVmLT5BdHRy aWJ1dGVzID09IDApKQorCQlyZXR1cm4gMDsgLyogd291bGQgYmUgYSBubyBvcCwgbm8gc2Vuc2Ug c2VuZGluZyB0aGlzICovCisKIAl0bGluayA9IGNpZnNfc2JfdGxpbmsoY2lmc19zYik7CiAJaWYg KElTX0VSUih0bGluaykpCiAJCXJldHVybiBQVFJfRVJSKHRsaW5rKTsKKwogCXJjID0gc21iMl9v cGVuX29wX2Nsb3NlKHhpZCwgdGxpbmtfdGNvbih0bGluayksIGNpZnNfc2IsIGZ1bGxfcGF0aCwK IAkJCQlGSUxFX1dSSVRFX0FUVFJJQlVURVMsIEZJTEVfT1BFTiwgMCwgYnVmLAogCQkJCVNNQjJf T1BfU0VUX0lORk8pOwpkaWZmIC0tZ2l0IGEvZnMvY2lmcy9zbWIybWlzYy5jIGIvZnMvY2lmcy9z bWIybWlzYy5jCmluZGV4IGI4MDIxZmRlOTg3ZC4uNTc5NjQ1ZDg3ZjkzIDEwMDY0NAotLS0gYS9m cy9jaWZzL3NtYjJtaXNjLmMKKysrIGIvZnMvY2lmcy9zbWIybWlzYy5jCkBAIC01MDIsMTkgKzUw MiwxOSBAQCBzbWIyX2lzX3ZhbGlkX2xlYXNlX2JyZWFrKGNoYXIgKmJ1ZmZlcikKIAkJbGlzdF9m b3JfZWFjaCh0bXAxLCAmc2VydmVyLT5zbWJfc2VzX2xpc3QpIHsKIAkJCXNlcyA9IGxpc3RfZW50 cnkodG1wMSwgc3RydWN0IGNpZnNfc2VzLCBzbWJfc2VzX2xpc3QpOwogCi0JCQlzcGluX2xvY2so JmNpZnNfZmlsZV9saXN0X2xvY2spOwogCQkJbGlzdF9mb3JfZWFjaCh0bXAyLCAmc2VzLT50Y29u X2xpc3QpIHsKIAkJCQl0Y29uID0gbGlzdF9lbnRyeSh0bXAyLCBzdHJ1Y3QgY2lmc190Y29uLAog CQkJCQkJICB0Y29uX2xpc3QpOworCQkJCXNwaW5fbG9jaygmdGNvbi0+b3Blbl9maWxlX2xvY2sp OwogCQkJCWNpZnNfc3RhdHNfaW5jKAogCQkJCSAgICAmdGNvbi0+c3RhdHMuY2lmc19zdGF0cy5u dW1fb3Bsb2NrX2Jya3MpOwogCQkJCWlmIChzbWIyX3Rjb25faGFzX2xlYXNlKHRjb24sIHJzcCwg bHcpKSB7Ci0JCQkJCXNwaW5fdW5sb2NrKCZjaWZzX2ZpbGVfbGlzdF9sb2NrKTsKKwkJCQkJc3Bp bl91bmxvY2soJnRjb24tPm9wZW5fZmlsZV9sb2NrKTsKIAkJCQkJc3Bpbl91bmxvY2soJmNpZnNf dGNwX3Nlc19sb2NrKTsKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQkJfQorCQkJCXNwaW5fdW5sb2Nr KCZ0Y29uLT5vcGVuX2ZpbGVfbG9jayk7CiAJCQl9Ci0JCQlzcGluX3VubG9jaygmY2lmc19maWxl X2xpc3RfbG9jayk7CiAJCX0KIAl9CiAJc3Bpbl91bmxvY2soJmNpZnNfdGNwX3Nlc19sb2NrKTsK QEAgLTU1Niw3ICs1NTYsNyBAQCBzbWIyX2lzX3ZhbGlkX29wbG9ja19icmVhayhjaGFyICpidWZm ZXIsIHN0cnVjdCBUQ1BfU2VydmVyX0luZm8gKnNlcnZlcikKIAkJCXRjb24gPSBsaXN0X2VudHJ5 KHRtcDEsIHN0cnVjdCBjaWZzX3Rjb24sIHRjb25fbGlzdCk7CiAKIAkJCWNpZnNfc3RhdHNfaW5j KCZ0Y29uLT5zdGF0cy5jaWZzX3N0YXRzLm51bV9vcGxvY2tfYnJrcyk7Ci0JCQlzcGluX2xvY2so JmNpZnNfZmlsZV9saXN0X2xvY2spOworCQkJc3Bpbl9sb2NrKCZ0Y29uLT5vcGVuX2ZpbGVfbG9j ayk7CiAJCQlsaXN0X2Zvcl9lYWNoKHRtcDIsICZ0Y29uLT5vcGVuRmlsZUxpc3QpIHsKIAkJCQlj ZmlsZSA9IGxpc3RfZW50cnkodG1wMiwgc3RydWN0IGNpZnNGaWxlSW5mbywKIAkJCQkJCSAgICAg dGxpc3QpOwpAQCAtNTY4LDcgKzU2OCw3IEBAIHNtYjJfaXNfdmFsaWRfb3Bsb2NrX2JyZWFrKGNo YXIgKmJ1ZmZlciwgc3RydWN0IFRDUF9TZXJ2ZXJfSW5mbyAqc2VydmVyKQogCiAJCQkJY2lmc19k YmcoRllJLCAiZmlsZSBpZCBtYXRjaCwgb3Bsb2NrIGJyZWFrXG4iKTsKIAkJCQljaW5vZGUgPSBD SUZTX0koY2ZpbGUtPmRlbnRyeS0+ZF9pbm9kZSk7Ci0KKwkJCQlzcGluX2xvY2soJmNmaWxlLT5m aWxlX2luZm9fbG9jayk7CiAJCQkJaWYgKCFDSUZTX0NBQ0hFX1dSSVRFKGNpbm9kZSkgJiYKIAkJ CQkgICAgcnNwLT5PcGxvY2tMZXZlbCA9PSBTTUIyX09QTE9DS19MRVZFTF9OT05FKQogCQkJCQlj ZmlsZS0+b3Bsb2NrX2JyZWFrX2NhbmNlbGxlZCA9IHRydWU7CkBAIC01OTAsMTQgKzU5MCwxNCBA QCBzbWIyX2lzX3ZhbGlkX29wbG9ja19icmVhayhjaGFyICpidWZmZXIsIHN0cnVjdCBUQ1BfU2Vy dmVyX0luZm8gKnNlcnZlcikKIAkJCQkJY2xlYXJfYml0KAogCQkJCQkgICBDSUZTX0lOT0RFX0RP V05HUkFERV9PUExPQ0tfVE9fTDIsCiAJCQkJCSAgICZjaW5vZGUtPmZsYWdzKTsKLQorCQkJCXNw aW5fdW5sb2NrKCZjZmlsZS0+ZmlsZV9pbmZvX2xvY2spOwogCQkJCXF1ZXVlX3dvcmsoY2lmc2lv ZF93cSwgJmNmaWxlLT5vcGxvY2tfYnJlYWspOwogCi0JCQkJc3Bpbl91bmxvY2soJmNpZnNfZmls ZV9saXN0X2xvY2spOworCQkJCXNwaW5fdW5sb2NrKCZ0Y29uLT5vcGVuX2ZpbGVfbG9jayk7CiAJ CQkJc3Bpbl91bmxvY2soJmNpZnNfdGNwX3Nlc19sb2NrKTsKIAkJCQlyZXR1cm4gdHJ1ZTsKIAkJ CX0KLQkJCXNwaW5fdW5sb2NrKCZjaWZzX2ZpbGVfbGlzdF9sb2NrKTsKKwkJCXNwaW5fdW5sb2Nr KCZ0Y29uLT5vcGVuX2ZpbGVfbG9jayk7CiAJCQlzcGluX3VubG9jaygmY2lmc190Y3Bfc2VzX2xv Y2spOwogCQkJY2lmc19kYmcoRllJLCAiTm8gbWF0Y2hpbmcgZmlsZSBmb3Igb3Bsb2NrIGJyZWFr XG4iKTsKIAkJCXJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvZnMvY2lmcy9zbWIyb3BzLmMgYi9m cy9jaWZzL3NtYjJvcHMuYwppbmRleCAxMDU5YmE4Mjk3NzQuLjZjZmM0ZWEzZjNhMSAxMDA2NDQK LS0tIGEvZnMvY2lmcy9zbWIyb3BzLmMKKysrIGIvZnMvY2lmcy9zbWIyb3BzLmMKQEAgLTIyOCw3 ICsyMjgsNyBAQCBTTUIzX3JlcXVlc3RfaW50ZXJmYWNlcyhjb25zdCB1bnNpZ25lZCBpbnQgeGlk LCBzdHJ1Y3QgY2lmc190Y29uICp0Y29uKQogCQkJbGU2NF90b19jcHUob3V0X2J1Zi0+TGlua1Nw ZWVkKSk7CiAJfSBlbHNlCiAJCWNpZnNfZGJnKFZGUywgImVycm9yICVkIG9uIGlvY3RsIHRvIGdl dCBpbnRlcmZhY2UgbGlzdFxuIiwgcmMpOwotCisJa2ZyZWUob3V0X2J1Zik7CiAJcmV0dXJuIHJj OwogfQogI2VuZGlmIC8qIFNUQVRTMiAqLwpAQCAtNjQwLDYgKzY0MCw3IEBAIHNtYjJfY2xvbmVf cmFuZ2UoY29uc3QgdW5zaWduZWQgaW50IHhpZCwKIAogY2NodW5rX291dDoKIAlrZnJlZShwY2No dW5rKTsKKwlrZnJlZShyZXRidWYpOwogCXJldHVybiByYzsKIH0KIApAQCAtODU1LDcgKzg1Niw3 IEBAIHNtYjJfc2V0X2xlYXNlX2tleShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgY2lmc19m aWQgKmZpZCkKIHN0YXRpYyB2b2lkCiBzbWIyX25ld19sZWFzZV9rZXkoc3RydWN0IGNpZnNfZmlk ICpmaWQpCiB7Ci0JZ2V0X3JhbmRvbV9ieXRlcyhmaWQtPmxlYXNlX2tleSwgU01CMl9MRUFTRV9L RVlfU0laRSk7CisJZ2VuZXJhdGVfcmFuZG9tX3V1aWQoZmlkLT5sZWFzZV9rZXkpOwogfQogCiAj ZGVmaW5lIFNNQjJfU1lNTElOS19TVFJVQ1RfU0laRSBcCmRpZmYgLS1naXQgYS9mcy9jaWZzL3Nt YjJwZHUuYyBiL2ZzL2NpZnMvc21iMnBkdS5jCmluZGV4IGFhNDlhYWE0MTdiZS4uMWRhMTYyMmFh MWVhIDEwMDY0NAotLS0gYS9mcy9jaWZzL3NtYjJwZHUuYworKysgYi9mcy9jaWZzL3NtYjJwZHUu YwpAQCAtMTAyLDcgKzEwMiwyMSBAQCBzbWIyX2hkcl9hc3NlbWJsZShzdHJ1Y3Qgc21iMl9oZHIg KmhkciwgX19sZTE2IHNtYjJfY21kIC8qIGNvbW1hbmQgKi8gLAogCWhkci0+UHJvdG9jb2xJZFsz XSA9ICdCJzsKIAloZHItPlN0cnVjdHVyZVNpemUgPSBjcHVfdG9fbGUxNig2NCk7CiAJaGRyLT5D b21tYW5kID0gc21iMl9jbWQ7Ci0JaGRyLT5DcmVkaXRSZXF1ZXN0ID0gY3B1X3RvX2xlMTYoMik7 IC8qIEJCIG1ha2UgdGhpcyBkeW5hbWljICovCisJaWYgKHRjb24gJiYgdGNvbi0+c2VzICYmIHRj b24tPnNlcy0+c2VydmVyKSB7CisJCXN0cnVjdCBUQ1BfU2VydmVyX0luZm8gKnNlcnZlciA9IHRj b24tPnNlcy0+c2VydmVyOworCisJCXNwaW5fbG9jaygmc2VydmVyLT5yZXFfbG9jayk7CisJCS8q IFJlcXVlc3QgdXAgdG8gMiBjcmVkaXRzIGJ1dCBkb24ndCBnbyBvdmVyIHRoZSBsaW1pdC4gKi8K KwkJaWYgKHNlcnZlci0+Y3JlZGl0cyA+PSBTTUIyX01BWF9DUkVESVRTX0FWQUlMQUJMRSkKKwkJ CWhkci0+Q3JlZGl0UmVxdWVzdCA9IGNwdV90b19sZTE2KDApOworCQllbHNlCisJCQloZHItPkNy ZWRpdFJlcXVlc3QgPSBjcHVfdG9fbGUxNigKKwkJCQltaW5fdChpbnQsIFNNQjJfTUFYX0NSRURJ VFNfQVZBSUxBQkxFIC0KKwkJCQkJCXNlcnZlci0+Y3JlZGl0cywgMikpOworCQlzcGluX3VubG9j aygmc2VydmVyLT5yZXFfbG9jayk7CisJfSBlbHNlIHsKKwkJaGRyLT5DcmVkaXRSZXF1ZXN0ID0g Y3B1X3RvX2xlMTYoMik7CisJfQogCWhkci0+UHJvY2Vzc0lkID0gY3B1X3RvX2xlMzIoKF9fdTE2 KWN1cnJlbnQtPnRnaWQpOwogCiAJaWYgKCF0Y29uKQpAQCAtNTUyLDYgKzU2Niw3IEBAIFNNQjJf c2Vzc19zZXR1cChjb25zdCB1bnNpZ25lZCBpbnQgeGlkLCBzdHJ1Y3QgY2lmc19zZXMgKnNlcywK IAljaGFyICpzZWN1cml0eV9ibG9iOwogCXVuc2lnbmVkIGNoYXIgKm50bG1zc3BfYmxvYiA9IE5V TEw7CiAJYm9vbCB1c2Vfc3BuZWdvID0gZmFsc2U7IC8qIGVsc2UgdXNlIHJhdyBudGxtc3NwICov CisJdTY0IHByZXZpb3VzX3Nlc3Npb24gPSBzZXMtPlN1aWQ7CiAKIAljaWZzX2RiZyhGWUksICJT ZXNzaW9uIFNldHVwXG4iKTsKIApAQCAtNTg4LDYgKzYwMywxMCBAQCBzc2V0dXBfbnRsbXNzcF9h dXRoZW50aWNhdGU6CiAJCXJldHVybiByYzsKIAogCXJlcS0+aGRyLlNlc3Npb25JZCA9IDA7IC8q IEZpcnN0IHNlc3Npb24sIG5vdCBhIHJlYXV0aGVudGljYXRlICovCisKKwkvKiBpZiByZWNvbm5l Y3QsIHdlIG5lZWQgdG8gc2VuZCBwcmV2aW91cyBzZXNzIGlkLCBvdGhlcndpc2UgaXQgaXMgMCAq LworCXJlcS0+UHJldmlvdXNTZXNzaW9uSWQgPSBwcmV2aW91c19zZXNzaW9uOworCiAJcmVxLT5W Y051bWJlciA9IDA7IC8qIE1CWiAqLwogCS8qIHRvIGVuYWJsZSBlY2hvcyBhbmQgb3Bsb2NrcyAq LwogCXJlcS0+aGRyLkNyZWRpdFJlcXVlc3QgPSBjcHVfdG9fbGUxNigzKTsKZGlmZiAtLWdpdCBh L2ZzL2NpZnMvc21iMnBkdS5oIGIvZnMvY2lmcy9zbWIycGR1LmgKaW5kZXggNjlmMzU5NWQzOTUy Li4wZGU5ZDI1N2ZkOTIgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvc21iMnBkdS5oCisrKyBiL2ZzL2Np ZnMvc21iMnBkdS5oCkBAIC0yNDUsNyArMjQ1LDcgQEAgc3RydWN0IHNtYjJfc2Vzc19zZXR1cF9y ZXEgewogCV9fbGUzMiBDaGFubmVsOwogCV9fbGUxNiBTZWN1cml0eUJ1ZmZlck9mZnNldDsKIAlf X2xlMTYgU2VjdXJpdHlCdWZmZXJMZW5ndGg7Ci0JX19sZTY0IFByZXZpb3VzU2Vzc2lvbklkOwor CV9fdTY0IFByZXZpb3VzU2Vzc2lvbklkOwogCV9fdTggICBCdWZmZXJbMV07CS8qIHZhcmlhYmxl IGxlbmd0aCBHU1Mgc2VjdXJpdHkgYnVmZmVyICovCiB9IF9fcGFja2VkOwogCmRpZmYgLS1naXQg YS9mcy9jb3JlZHVtcC5jIGIvZnMvY29yZWR1bXAuYwppbmRleCAwOWMyMDExNjFiZmYuLmNhYTRm ZmU1MTM4YSAxMDA2NDQKLS0tIGEvZnMvY29yZWR1bXAuYworKysgYi9mcy9jb3JlZHVtcC5jCkBA IC0xLDYgKzEsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC9m aWxlLmg+CiAjaW5jbHVkZSA8bGludXgvZmR0YWJsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2ZyZWV6 ZXIuaD4KICNpbmNsdWRlIDxsaW51eC9tbS5oPgogI2luY2x1ZGUgPGxpbnV4L3N0YXQuaD4KICNp bmNsdWRlIDxsaW51eC9mY250bC5oPgpAQCAtMzg1LDcgKzM4Niw5IEBAIHN0YXRpYyBpbnQgY29y ZWR1bXBfd2FpdChpbnQgZXhpdF9jb2RlLCBzdHJ1Y3QgY29yZV9zdGF0ZSAqY29yZV9zdGF0ZSkK IAlpZiAoY29yZV93YWl0ZXJzID4gMCkgewogCQlzdHJ1Y3QgY29yZV90aHJlYWQgKnB0cjsKIAor CQlmcmVlemVyX2RvX25vdF9jb3VudCgpOwogCQl3YWl0X2Zvcl9jb21wbGV0aW9uKCZjb3JlX3N0 YXRlLT5zdGFydHVwKTsKKwkJZnJlZXplcl9jb3VudCgpOwogCQkvKgogCQkgKiBXYWl0IGZvciBh bGwgdGhlIHRocmVhZHMgdG8gYmVjb21lIGluYWN0aXZlLCBzbyB0aGF0CiAJCSAqIGFsbCB0aGUg dGhyZWFkIGNvbnRleHQgKGV4dGVuZGVkIHJlZ2lzdGVyIHN0YXRlLCBsaWtlCmRpZmYgLS1naXQg YS9mcy9leHQ0L2V4dDQuaCBiL2ZzL2V4dDQvZXh0NC5oCmluZGV4IDA4ZGM2MDViZWM0OC4uNzA3 NWQ3MGI3M2FmIDEwMDY0NAotLS0gYS9mcy9leHQ0L2V4dDQuaAorKysgYi9mcy9leHQ0L2V4dDQu aApAQCAtMjM0LDYgKzIzNCw3IEBAIHN0cnVjdCBleHQ0X2lvX3N1Ym1pdCB7CiAjZGVmaW5lCUVY VDRfTUFYX0JMT0NLX1NJWkUJCTY1NTM2CiAjZGVmaW5lIEVYVDRfTUlOX0JMT0NLX0xPR19TSVpF CQkxMAogI2RlZmluZSBFWFQ0X01BWF9CTE9DS19MT0dfU0laRQkJMTYKKyNkZWZpbmUgRVhUNF9N QVhfQ0xVU1RFUl9MT0dfU0laRQkzMAogI2lmZGVmIF9fS0VSTkVMX18KICMgZGVmaW5lIEVYVDRf QkxPQ0tfU0laRShzKQkJKChzKS0+c19ibG9ja3NpemUpCiAjZWxzZQpkaWZmIC0tZ2l0IGEvZnMv ZXh0NC9pbm9kZS5jIGIvZnMvZXh0NC9pbm9kZS5jCmluZGV4IGFlNDI3MWQ1YzZjYS4uYzM3ZGQ3 MTUwNjBmIDEwMDY0NAotLS0gYS9mcy9leHQ0L2lub2RlLmMKKysrIGIvZnMvZXh0NC9pbm9kZS5j CkBAIC0xNDk0LDYgKzE0OTQsOCBAQCBzdGF0aWMgdm9pZCBtcGFnZV9yZWxlYXNlX3VudXNlZF9w YWdlcyhzdHJ1Y3QgbXBhZ2VfZGFfZGF0YSAqbXBkLAogCQkJQlVHX09OKCFQYWdlTG9ja2VkKHBh Z2UpKTsKIAkJCUJVR19PTihQYWdlV3JpdGViYWNrKHBhZ2UpKTsKIAkJCWlmIChpbnZhbGlkYXRl KSB7CisJCQkJaWYgKHBhZ2VfbWFwcGVkKHBhZ2UpKQorCQkJCQljbGVhcl9wYWdlX2RpcnR5X2Zv cl9pbyhwYWdlKTsKIAkJCQlibG9ja19pbnZhbGlkYXRlcGFnZShwYWdlLCAwLCBQQUdFX0NBQ0hF X1NJWkUpOwogCQkJCUNsZWFyUGFnZVVwdG9kYXRlKHBhZ2UpOwogCQkJfQpAQCAtNDQyMiwxNCAr NDQyNCwxNCBAQCBzdGF0aWMgaW50IGV4dDRfZG9fdXBkYXRlX2lub2RlKGhhbmRsZV90ICpoYW5k bGUsCiAgKiBGaXggdXAgaW50ZXJvcGVyYWJpbGl0eSB3aXRoIG9sZCBrZXJuZWxzLiBPdGhlcndp c2UsIG9sZCBpbm9kZXMgZ2V0CiAgKiByZS11c2VkIHdpdGggdGhlIHVwcGVyIDE2IGJpdHMgb2Yg dGhlIHVpZC9naWQgaW50YWN0CiAgKi8KLQkJaWYgKCFlaS0+aV9kdGltZSkgeworCQlpZiAoZWkt PmlfZHRpbWUgJiYgbGlzdF9lbXB0eSgmZWktPmlfb3JwaGFuKSkgeworCQkJcmF3X2lub2RlLT5p X3VpZF9oaWdoID0gMDsKKwkJCXJhd19pbm9kZS0+aV9naWRfaGlnaCA9IDA7CisJCX0gZWxzZSB7 CiAJCQlyYXdfaW5vZGUtPmlfdWlkX2hpZ2ggPQogCQkJCWNwdV90b19sZTE2KGhpZ2hfMTZfYml0 cyhpX3VpZCkpOwogCQkJcmF3X2lub2RlLT5pX2dpZF9oaWdoID0KIAkJCQljcHVfdG9fbGUxNiho aWdoXzE2X2JpdHMoaV9naWQpKTsKLQkJfSBlbHNlIHsKLQkJCXJhd19pbm9kZS0+aV91aWRfaGln aCA9IDA7Ci0JCQlyYXdfaW5vZGUtPmlfZ2lkX2hpZ2ggPSAwOwogCQl9CiAJfSBlbHNlIHsKIAkJ cmF3X2lub2RlLT5pX3VpZF9sb3cgPSBjcHVfdG9fbGUxNihmc19oaWdoMmxvd3VpZChpX3VpZCkp OwpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9uYW1laS5jIGIvZnMvZXh0NC9uYW1laS5jCmluZGV4IGUy NTMyMTNiMzllMy4uODM2NjE5MDA5YjgxIDEwMDY0NAotLS0gYS9mcy9leHQ0L25hbWVpLmMKKysr IGIvZnMvZXh0NC9uYW1laS5jCkBAIC0xODQ1LDMzICsxODQ1LDMxIEBAIHN0YXRpYyBpbnQgbWFr ZV9pbmRleGVkX2RpcihoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksCiAJ ZnJhbWUtPmVudHJpZXMgPSBlbnRyaWVzOwogCWZyYW1lLT5hdCA9IGVudHJpZXM7CiAJZnJhbWUt PmJoID0gYmg7Ci0JYmggPSBiaDI7CiAKIAlyZXR2YWwgPSBleHQ0X2hhbmRsZV9kaXJ0eV9keF9u b2RlKGhhbmRsZSwgZGlyLCBmcmFtZS0+YmgpOwogCWlmIChyZXR2YWwpCiAJCWdvdG8gb3V0X2Zy YW1lczsJCi0JcmV0dmFsID0gZXh0NF9oYW5kbGVfZGlydHlfZGlyZW50X25vZGUoaGFuZGxlLCBk aXIsIGJoKTsKKwlyZXR2YWwgPSBleHQ0X2hhbmRsZV9kaXJ0eV9kaXJlbnRfbm9kZShoYW5kbGUs IGRpciwgYmgyKTsKIAlpZiAocmV0dmFsKQogCQlnb3RvIG91dF9mcmFtZXM7CQogCi0JZGUgPSBk b19zcGxpdChoYW5kbGUsZGlyLCAmYmgsIGZyYW1lLCAmaGluZm8pOworCWRlID0gZG9fc3BsaXQo aGFuZGxlLGRpciwgJmJoMiwgZnJhbWUsICZoaW5mbyk7CiAJaWYgKElTX0VSUihkZSkpIHsKIAkJ cmV0dmFsID0gUFRSX0VSUihkZSk7CiAJCWdvdG8gb3V0X2ZyYW1lczsKIAl9Ci0JZHhfcmVsZWFz ZShmcmFtZXMpOwogCi0JcmV0dmFsID0gYWRkX2RpcmVudF90b19idWYoaGFuZGxlLCBkZW50cnks IGlub2RlLCBkZSwgYmgpOwotCWJyZWxzZShiaCk7Ci0JcmV0dXJuIHJldHZhbDsKKwlyZXR2YWwg PSBhZGRfZGlyZW50X3RvX2J1ZihoYW5kbGUsIGRlbnRyeSwgaW5vZGUsIGRlLCBiaDIpOwogb3V0 X2ZyYW1lczoKIAkvKgogCSAqIEV2ZW4gaWYgdGhlIGJsb2NrIHNwbGl0IGZhaWxlZCwgd2UgaGF2 ZSB0byBwcm9wZXJseSB3cml0ZQogCSAqIG91dCBhbGwgdGhlIGNoYW5nZXMgd2UgZGlkIHNvIGZh ci4gT3RoZXJ3aXNlIHdlIGNhbiBlbmQgdXAKIAkgKiB3aXRoIGNvcnJ1cHRlZCBmaWxlc3lzdGVt LgogCSAqLwotCWV4dDRfbWFya19pbm9kZV9kaXJ0eShoYW5kbGUsIGRpcik7CisJaWYgKHJldHZh bCkKKwkJZXh0NF9tYXJrX2lub2RlX2RpcnR5KGhhbmRsZSwgZGlyKTsKIAlkeF9yZWxlYXNlKGZy YW1lcyk7CisJYnJlbHNlKGJoMik7CiAJcmV0dXJuIHJldHZhbDsKIH0KIApkaWZmIC0tZ2l0IGEv ZnMvZXh0NC9zdXBlci5jIGIvZnMvZXh0NC9zdXBlci5jCmluZGV4IDFjMjM5YmJhNDM0NC4uYTFm ZWQ2Njg5ZGIyIDEwMDY0NAotLS0gYS9mcy9leHQ0L3N1cGVyLmMKKysrIGIvZnMvZXh0NC9zdXBl ci5jCkBAIC0zNjY2LDcgKzM2NjYsMTUgQEAgc3RhdGljIGludCBleHQ0X2ZpbGxfc3VwZXIoc3Ry dWN0IHN1cGVyX2Jsb2NrICpzYiwgdm9pZCAqZGF0YSwgaW50IHNpbGVudCkKIAlpZiAoYmxvY2tz aXplIDwgRVhUNF9NSU5fQkxPQ0tfU0laRSB8fAogCSAgICBibG9ja3NpemUgPiBFWFQ0X01BWF9C TE9DS19TSVpFKSB7CiAJCWV4dDRfbXNnKHNiLCBLRVJOX0VSUiwKLQkJICAgICAgICJVbnN1cHBv cnRlZCBmaWxlc3lzdGVtIGJsb2Nrc2l6ZSAlZCIsIGJsb2Nrc2l6ZSk7CisJCSAgICAgICAiVW5z dXBwb3J0ZWQgZmlsZXN5c3RlbSBibG9ja3NpemUgJWQgKCVkIGxvZ19ibG9ja19zaXplKSIsCisJ CQkgYmxvY2tzaXplLCBsZTMyX3RvX2NwdShlcy0+c19sb2dfYmxvY2tfc2l6ZSkpOworCQlnb3Rv IGZhaWxlZF9tb3VudDsKKwl9CisJaWYgKGxlMzJfdG9fY3B1KGVzLT5zX2xvZ19ibG9ja19zaXpl KSA+CisJICAgIChFWFQ0X01BWF9CTE9DS19MT0dfU0laRSAtIEVYVDRfTUlOX0JMT0NLX0xPR19T SVpFKSkgeworCQlleHQ0X21zZyhzYiwgS0VSTl9FUlIsCisJCQkgIkludmFsaWQgbG9nIGJsb2Nr IHNpemU6ICV1IiwKKwkJCSBsZTMyX3RvX2NwdShlcy0+c19sb2dfYmxvY2tfc2l6ZSkpOwogCQln b3RvIGZhaWxlZF9tb3VudDsKIAl9CiAKQEAgLTM3ODgsNiArMzc5NiwxMyBAQCBzdGF0aWMgaW50 IGV4dDRfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB2b2lkICpkYXRhLCBpbnQg c2lsZW50KQogCQkJCSAiYmxvY2sgc2l6ZSAoJWQpIiwgY2x1c3RlcnNpemUsIGJsb2Nrc2l6ZSk7 CiAJCQlnb3RvIGZhaWxlZF9tb3VudDsKIAkJfQorCQlpZiAobGUzMl90b19jcHUoZXMtPnNfbG9n X2NsdXN0ZXJfc2l6ZSkgPgorCQkgICAgKEVYVDRfTUFYX0NMVVNURVJfTE9HX1NJWkUgLSBFWFQ0 X01JTl9CTE9DS19MT0dfU0laRSkpIHsKKwkJCWV4dDRfbXNnKHNiLCBLRVJOX0VSUiwKKwkJCQkg IkludmFsaWQgbG9nIGNsdXN0ZXIgc2l6ZTogJXUiLAorCQkJCSBsZTMyX3RvX2NwdShlcy0+c19s b2dfY2x1c3Rlcl9zaXplKSk7CisJCQlnb3RvIGZhaWxlZF9tb3VudDsKKwkJfQogCQlzYmktPnNf Y2x1c3Rlcl9iaXRzID0gbGUzMl90b19jcHUoZXMtPnNfbG9nX2NsdXN0ZXJfc2l6ZSkgLQogCQkJ bGUzMl90b19jcHUoZXMtPnNfbG9nX2Jsb2NrX3NpemUpOwogCQlzYmktPnNfY2x1c3RlcnNfcGVy X2dyb3VwID0KZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZGlyLmMgYi9mcy9mdXNlL2Rpci5jCmluZGV4 IDMxYWQ1ZmM4NzliOC4uYTVjMzI0MjBiZmM4IDEwMDY0NAotLS0gYS9mcy9mdXNlL2Rpci5jCisr KyBiL2ZzL2Z1c2UvZGlyLmMKQEAgLTE3MDcsNyArMTcwNyw3IEBAIGludCBmdXNlX2ZsdXNoX3Rp bWVzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmdXNlX2ZpbGUgKmZmKQogaW50IGZ1c2Vf ZG9fc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpYXR0ciAqYXR0ciwKIAkJ ICAgIHN0cnVjdCBmaWxlICpmaWxlKQogewotCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBkZW50cnkt PmRfaW5vZGU7CisJc3RydWN0IGlub2RlICppbm9kZSA9IGRfaW5vZGUoZGVudHJ5KTsKIAlzdHJ1 Y3QgZnVzZV9jb25uICpmYyA9IGdldF9mdXNlX2Nvbm4oaW5vZGUpOwogCXN0cnVjdCBmdXNlX2lu b2RlICpmaSA9IGdldF9mdXNlX2lub2RlKGlub2RlKTsKIAlzdHJ1Y3QgZnVzZV9yZXEgKnJlcTsK QEAgLTE4MjIsMTQgKzE4MjIsNDMgQEAgZXJyb3I6CiBzdGF0aWMgaW50IGZ1c2Vfc2V0YXR0cihz dHJ1Y3QgZGVudHJ5ICplbnRyeSwgc3RydWN0IGlhdHRyICphdHRyKQogewogCXN0cnVjdCBpbm9k ZSAqaW5vZGUgPSBlbnRyeS0+ZF9pbm9kZTsKKwlzdHJ1Y3QgZmlsZSAqZmlsZSA9IChhdHRyLT5p YV92YWxpZCAmIEFUVFJfRklMRSkgPyBhdHRyLT5pYV9maWxlIDogTlVMTDsKKwlpbnQgcmV0Owog CiAJaWYgKCFmdXNlX2FsbG93X2N1cnJlbnRfcHJvY2VzcyhnZXRfZnVzZV9jb25uKGlub2RlKSkp CiAJCXJldHVybiAtRUFDQ0VTOwogCi0JaWYgKGF0dHItPmlhX3ZhbGlkICYgQVRUUl9GSUxFKQot CQlyZXR1cm4gZnVzZV9kb19zZXRhdHRyKGVudHJ5LCBhdHRyLCBhdHRyLT5pYV9maWxlKTsKLQll bHNlCi0JCXJldHVybiBmdXNlX2RvX3NldGF0dHIoZW50cnksIGF0dHIsIE5VTEwpOworCWlmIChh dHRyLT5pYV92YWxpZCAmIChBVFRSX0tJTExfU1VJRCB8IEFUVFJfS0lMTF9TR0lEKSkgeworCQlh dHRyLT5pYV92YWxpZCAmPSB+KEFUVFJfS0lMTF9TVUlEIHwgQVRUUl9LSUxMX1NHSUQgfAorCQkJ CSAgICBBVFRSX01PREUpOworCQkvKgorCQkgKiBpYV9tb2RlIGNhbGN1bGF0aW9uIG1heSBoYXZl IHVzZWQgc3RhbGUgaV9tb2RlLiAgUmVmcmVzaCBhbmQKKwkJICogcmVjYWxjdWxhdGUuCisJCSAq LworCQlyZXQgPSBmdXNlX2RvX2dldGF0dHIoaW5vZGUsIE5VTEwsIGZpbGUpOworCQlpZiAocmV0 KQorCQkJcmV0dXJuIHJldDsKKworCQlhdHRyLT5pYV9tb2RlID0gaW5vZGUtPmlfbW9kZTsKKwkJ aWYgKGlub2RlLT5pX21vZGUgJiBTX0lTVUlEKSB7CisJCQlhdHRyLT5pYV92YWxpZCB8PSBBVFRS X01PREU7CisJCQlhdHRyLT5pYV9tb2RlICY9IH5TX0lTVUlEOworCQl9CisJCWlmICgoaW5vZGUt PmlfbW9kZSAmIChTX0lTR0lEIHwgU19JWEdSUCkpID09IChTX0lTR0lEIHwgU19JWEdSUCkpIHsK KwkJCWF0dHItPmlhX3ZhbGlkIHw9IEFUVFJfTU9ERTsKKwkJCWF0dHItPmlhX21vZGUgJj0gflNf SVNHSUQ7CisJCX0KKwl9CisJaWYgKCFhdHRyLT5pYV92YWxpZCkKKwkJcmV0dXJuIDA7CisKKwly ZXQgPSBmdXNlX2RvX3NldGF0dHIoZW50cnksIGF0dHIsIGZpbGUpOworCWlmICghcmV0KSB7CisJ CS8qIERpcmVjdG9yeSBtb2RlIGNoYW5nZWQsIG1heSBuZWVkIHRvIHJldmFsaWRhdGUgYWNjZXNz ICovCisJCWlmIChkX2lzX2RpcihlbnRyeSkgJiYgKGF0dHItPmlhX3ZhbGlkICYgQVRUUl9NT0RF KSkKKwkJCWZ1c2VfaW52YWxpZGF0ZV9lbnRyeV9jYWNoZShlbnRyeSk7CisJfQorCXJldHVybiBy ZXQ7CiB9CiAKIHN0YXRpYyBpbnQgZnVzZV9nZXRhdHRyKHN0cnVjdCB2ZnNtb3VudCAqbW50LCBz dHJ1Y3QgZGVudHJ5ICplbnRyeSwKQEAgLTE5MzYsNiArMTk2NSwyMyBAQCBzdGF0aWMgc3NpemVf dCBmdXNlX2dldHhhdHRyKHN0cnVjdCBkZW50cnkgKmVudHJ5LCBjb25zdCBjaGFyICpuYW1lLAog CXJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyBpbnQgZnVzZV92ZXJpZnlfeGF0dHJfbGlzdChjaGFy ICpsaXN0LCBzaXplX3Qgc2l6ZSkKK3sKKwlzaXplX3Qgb3JpZ3NpemUgPSBzaXplOworCisJd2hp bGUgKHNpemUpIHsKKwkJc2l6ZV90IHRoaXNsZW4gPSBzdHJubGVuKGxpc3QsIHNpemUpOworCisJ CWlmICghdGhpc2xlbiB8fCB0aGlzbGVuID09IHNpemUpCisJCQlyZXR1cm4gLUVJTzsKKworCQlz aXplIC09IHRoaXNsZW4gKyAxOworCQlsaXN0ICs9IHRoaXNsZW4gKyAxOworCX0KKworCXJldHVy biBvcmlnc2l6ZTsKK30KKwogc3RhdGljIHNzaXplX3QgZnVzZV9saXN0eGF0dHIoc3RydWN0IGRl bnRyeSAqZW50cnksIGNoYXIgKmxpc3QsIHNpemVfdCBzaXplKQogewogCXN0cnVjdCBpbm9kZSAq aW5vZGUgPSBlbnRyeS0+ZF9pbm9kZTsKQEAgLTE5NzQsOSArMjAyMCwxMSBAQCBzdGF0aWMgc3Np emVfdCBmdXNlX2xpc3R4YXR0cihzdHJ1Y3QgZGVudHJ5ICplbnRyeSwgY2hhciAqbGlzdCwgc2l6 ZV90IHNpemUpCiAJfQogCWZ1c2VfcmVxdWVzdF9zZW5kKGZjLCByZXEpOwogCXJldCA9IHJlcS0+ b3V0LmguZXJyb3I7Ci0JaWYgKCFyZXQpCisJaWYgKCFyZXQpIHsKIAkJcmV0ID0gc2l6ZSA/IHJl cS0+b3V0LmFyZ3NbMF0uc2l6ZSA6IG91dGFyZy5zaXplOwotCWVsc2UgeworCQlpZiAocmV0ID4g MCAmJiBzaXplKQorCQkJcmV0ID0gZnVzZV92ZXJpZnlfeGF0dHJfbGlzdChsaXN0LCByZXQpOwor CX0gZWxzZSB7CiAJCWlmIChyZXQgPT0gLUVOT1NZUykgewogCQkJZmMtPm5vX2xpc3R4YXR0ciA9 IDE7CiAJCQlyZXQgPSAtRU9QTk9UU1VQUDsKZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZmlsZS5jIGIv ZnMvZnVzZS9maWxlLmMKaW5kZXggNWY3NDdjZjNhNDEyLi40ZTljZmJjNDUzYzcgMTAwNjQ0Ci0t LSBhL2ZzL2Z1c2UvZmlsZS5jCisrKyBiL2ZzL2Z1c2UvZmlsZS5jCkBAIC0yMDU4LDYgKzIwNTgs MTAgQEAgc3RhdGljIGludCBmdXNlX3dyaXRlX2VuZChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0 IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiB7CiAJc3RydWN0IGlub2RlICppbm9kZSA9IHBhZ2Ut Pm1hcHBpbmctPmhvc3Q7CiAKKwkvKiBIYXZlbid0IGNvcGllZCBhbnl0aGluZz8gIFNraXAgemVy b2luZywgc2l6ZSBleHRlbmRpbmcsIGRpcnR5aW5nLiAqLworCWlmICghY29waWVkKQorCQlnb3Rv IHVubG9jazsKKwogCWlmICghUGFnZVVwdG9kYXRlKHBhZ2UpKSB7CiAJCS8qIFplcm8gYW55IHVu d3JpdHRlbiBieXRlcyBhdCB0aGUgZW5kIG9mIHRoZSBwYWdlICovCiAJCXNpemVfdCBlbmRvZmYg PSAocG9zICsgY29waWVkKSAmIH5QQUdFX0NBQ0hFX01BU0s7CkBAIC0yMDY4LDYgKzIwNzIsOCBA QCBzdGF0aWMgaW50IGZ1c2Vfd3JpdGVfZW5kKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgYWRk cmVzc19zcGFjZSAqbWFwcGluZywKIAogCWZ1c2Vfd3JpdGVfdXBkYXRlX3NpemUoaW5vZGUsIHBv cyArIGNvcGllZCk7CiAJc2V0X3BhZ2VfZGlydHkocGFnZSk7CisKK3VubG9jazoKIAl1bmxvY2tf cGFnZShwYWdlKTsKIAlwYWdlX2NhY2hlX3JlbGVhc2UocGFnZSk7CiAKQEAgLTI4NzksNyArMjg4 NSw3IEBAIHN0YXRpYyB2b2lkIGZ1c2VfZG9fdHJ1bmNhdGUoc3RydWN0IGZpbGUgKmZpbGUpCiAJ YXR0ci5pYV9maWxlID0gZmlsZTsKIAlhdHRyLmlhX3ZhbGlkIHw9IEFUVFJfRklMRTsKIAotCWZ1 c2VfZG9fc2V0YXR0cihpbm9kZSwgJmF0dHIsIGZpbGUpOworCWZ1c2VfZG9fc2V0YXR0cihmaWxl LT5mX2RlbnRyeSwgJmF0dHIsIGZpbGUpOwogfQogCiBzdGF0aWMgaW5saW5lIGxvZmZfdCBmdXNl X3JvdW5kX3VwKGxvZmZfdCBvZmYpCmRpZmYgLS1naXQgYS9mcy9pc29mcy9pbm9kZS5jIGIvZnMv aXNvZnMvaW5vZGUuYwppbmRleCA1ZGRhZjg2MjVkM2IuLjQxMThiN2FmNjkzYiAxMDA2NDQKLS0t IGEvZnMvaXNvZnMvaW5vZGUuYworKysgYi9mcy9pc29mcy9pbm9kZS5jCkBAIC03MTEsNiArNzEx LDExIEBAIHN0YXRpYyBpbnQgaXNvZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMs IHZvaWQgKmRhdGEsIGludCBzaWxlbnQpCiAJcHJpX2JoID0gTlVMTDsKIAogcm9vdF9mb3VuZDoK KwkvKiBXZSBkb24ndCBzdXBwb3J0IHJlYWQtd3JpdGUgbW91bnRzICovCisJaWYgKCEocy0+c19m bGFncyAmIE1TX1JET05MWSkpIHsKKwkJZXJyb3IgPSAtRUFDQ0VTOworCQlnb3RvIG91dF9mcmVl Ymg7CisJfQogCiAJaWYgKGpvbGlldF9sZXZlbCAmJiAocHJpID09IE5VTEwgfHwgIW9wdC5yb2Nr KSkgewogCQkvKiBUaGlzIGlzIHRoZSBjYXNlIG9mIEpvbGlldCB3aXRoIHRoZSBub3JvY2sgbW91 bnQgZmxhZy4KQEAgLTE1MjMsOSArMTUyOCw2IEBAIHN0cnVjdCBpbm9kZSAqX19pc29mc19pZ2V0 KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsCiBzdGF0aWMgc3RydWN0IGRlbnRyeSAqaXNvZnNfbW91 bnQoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCiAJaW50IGZsYWdzLCBjb25zdCBj aGFyICpkZXZfbmFtZSwgdm9pZCAqZGF0YSkKIHsKLQkvKiBXZSBkb24ndCBzdXBwb3J0IHJlYWQt d3JpdGUgbW91bnRzICovCi0JaWYgKCEoZmxhZ3MgJiBNU19SRE9OTFkpKQotCQlyZXR1cm4gRVJS X1BUUigtRUFDQ0VTKTsKIAlyZXR1cm4gbW91bnRfYmRldihmc190eXBlLCBmbGFncywgZGV2X25h bWUsIGRhdGEsIGlzb2ZzX2ZpbGxfc3VwZXIpOwogfQogCmRpZmYgLS1naXQgYS9mcy9qYmQyL3Ry YW5zYWN0aW9uLmMgYi9mcy9qYmQyL3RyYW5zYWN0aW9uLmMKaW5kZXggNzczMDNiYTBjMjcwLi5m MTU2MzkwMTEzZGIgMTAwNjQ0Ci0tLSBhL2ZzL2piZDIvdHJhbnNhY3Rpb24uYworKysgYi9mcy9q YmQyL3RyYW5zYWN0aW9uLmMKQEAgLTEwOTMsNiArMTA5Myw3IEBAIGludCBqYmQyX2pvdXJuYWxf Z2V0X2NyZWF0ZV9hY2Nlc3MoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGJ1ZmZlcl9oZWFkICpi aCkKIAkJSkJVRkZFUl9UUkFDRShqaCwgImZpbGUgYXMgQkpfUmVzZXJ2ZWQiKTsKIAkJc3Bpbl9s b2NrKCZqb3VybmFsLT5qX2xpc3RfbG9jayk7CiAJCV9famJkMl9qb3VybmFsX2ZpbGVfYnVmZmVy KGpoLCB0cmFuc2FjdGlvbiwgQkpfUmVzZXJ2ZWQpOworCQlzcGluX3VubG9jaygmam91cm5hbC0+ al9saXN0X2xvY2spOwogCX0gZWxzZSBpZiAoamgtPmJfdHJhbnNhY3Rpb24gPT0gam91cm5hbC0+ al9jb21taXR0aW5nX3RyYW5zYWN0aW9uKSB7CiAJCS8qIGZpcnN0IGFjY2VzcyBieSB0aGlzIHRy YW5zYWN0aW9uICovCiAJCWpoLT5iX21vZGlmaWVkID0gMDsKQEAgLTExMDAsOCArMTEwMSw4IEBA IGludCBqYmQyX2pvdXJuYWxfZ2V0X2NyZWF0ZV9hY2Nlc3MoaGFuZGxlX3QgKmhhbmRsZSwgc3Ry dWN0IGJ1ZmZlcl9oZWFkICpiaCkKIAkJSkJVRkZFUl9UUkFDRShqaCwgInNldCBuZXh0IHRyYW5z YWN0aW9uIik7CiAJCXNwaW5fbG9jaygmam91cm5hbC0+al9saXN0X2xvY2spOwogCQlqaC0+Yl9u ZXh0X3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247CisJCXNwaW5fdW5sb2NrKCZqb3VybmFsLT5q X2xpc3RfbG9jayk7CiAJfQotCXNwaW5fdW5sb2NrKCZqb3VybmFsLT5qX2xpc3RfbG9jayk7CiAJ amJkX3VubG9ja19iaF9zdGF0ZShiaCk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvZnMvbmZzL25mczRz dGF0ZS5jIGIvZnMvbmZzL25mczRzdGF0ZS5jCmluZGV4IDU3N2JiOGQ4NDlmNy4uM2Q4OGJjOTY3 YzhlIDEwMDY0NAotLS0gYS9mcy9uZnMvbmZzNHN0YXRlLmMKKysrIGIvZnMvbmZzL25mczRzdGF0 ZS5jCkBAIC0xNDk0LDYgKzE0OTQsOSBAQCByZXN0YXJ0OgogCQkJCQlfX2Z1bmNfXywgc3RhdHVz KTsKIAkJCWNhc2UgLUVOT0VOVDoKIAkJCWNhc2UgLUVOT01FTToKKwkJCWNhc2UgLUVBQ0NFUzoK KwkJCWNhc2UgLUVST0ZTOgorCQkJY2FzZSAtRUlPOgogCQkJY2FzZSAtRVNUQUxFOgogCQkJCS8q IE9wZW4gc3RhdGUgb24gdGhpcyBmaWxlIGNhbm5vdCBiZSByZWNvdmVyZWQgKi8KIAkJCQluZnM0 X3N0YXRlX21hcmtfcmVjb3ZlcnlfZmFpbGVkKHN0YXRlLCBzdGF0dXMpOwpkaWZmIC0tZ2l0IGEv ZnMvcHJvYy9wcm9jX3N5c2N0bC5jIGIvZnMvcHJvYy9wcm9jX3N5c2N0bC5jCmluZGV4IDcyOGM0 NjU3MTg4Zi4uMjQ3NTU4NWYwMzRiIDEwMDY0NAotLS0gYS9mcy9wcm9jL3Byb2Nfc3lzY3RsLmMK KysrIGIvZnMvcHJvYy9wcm9jX3N5c2N0bC5jCkBAIC03MDMsNyArNzAzLDcgQEAgc3RhdGljIGlu dCBwcm9jX3N5c19yZWFkZGlyKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGlyX2NvbnRleHQg KmN0eCkKIAljdGxfZGlyID0gY29udGFpbmVyX29mKGhlYWQsIHN0cnVjdCBjdGxfZGlyLCBoZWFk ZXIpOwogCiAJaWYgKCFkaXJfZW1pdF9kb3RzKGZpbGUsIGN0eCkpCi0JCXJldHVybiAwOworCQln b3RvIG91dDsKIAogCXBvcyA9IDI7CiAKQEAgLTcxMyw2ICs3MTMsNyBAQCBzdGF0aWMgaW50IHBy b2Nfc3lzX3JlYWRkaXIoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBkaXJfY29udGV4dCAqY3R4 KQogCQkJYnJlYWs7CiAJCX0KIAl9CitvdXQ6CiAJc3lzY3RsX2hlYWRfZmluaXNoKGhlYWQpOwog CXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZnMvcHN0b3JlL3JhbV9jb3JlLmMgYi9mcy9wc3Rv cmUvcmFtX2NvcmUuYwppbmRleCA4NDc1ZGVmNjU4ODAuLjVmYTIyMDBlNWI2NiAxMDA2NDQKLS0t IGEvZnMvcHN0b3JlL3JhbV9jb3JlLmMKKysrIGIvZnMvcHN0b3JlL3JhbV9jb3JlLmMKQEAgLTQ3 LDQzICs0NywxMCBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBidWZmZXJfc3RhcnQoc3RydWN0IHBl cnNpc3RlbnRfcmFtX3pvbmUgKnByeikKIAlyZXR1cm4gYXRvbWljX3JlYWQoJnByei0+YnVmZmVy LT5zdGFydCk7CiB9CiAKLS8qIGluY3JlYXNlIGFuZCB3cmFwIHRoZSBzdGFydCBwb2ludGVyLCBy ZXR1cm5pbmcgdGhlIG9sZCB2YWx1ZSAqLwotc3RhdGljIHNpemVfdCBidWZmZXJfc3RhcnRfYWRk X2F0b21pYyhzdHJ1Y3QgcGVyc2lzdGVudF9yYW1fem9uZSAqcHJ6LCBzaXplX3QgYSkKLXsKLQlp bnQgb2xkOwotCWludCBuZXc7Ci0KLQlkbyB7Ci0JCW9sZCA9IGF0b21pY19yZWFkKCZwcnotPmJ1 ZmZlci0+c3RhcnQpOwotCQluZXcgPSBvbGQgKyBhOwotCQl3aGlsZSAodW5saWtlbHkobmV3ID49 IHByei0+YnVmZmVyX3NpemUpKQotCQkJbmV3IC09IHByei0+YnVmZmVyX3NpemU7Ci0JfSB3aGls ZSAoYXRvbWljX2NtcHhjaGcoJnByei0+YnVmZmVyLT5zdGFydCwgb2xkLCBuZXcpICE9IG9sZCk7 Ci0KLQlyZXR1cm4gb2xkOwotfQotCi0vKiBpbmNyZWFzZSB0aGUgc2l6ZSBjb3VudGVyIHVudGls IGl0IGhpdHMgdGhlIG1heCBzaXplICovCi1zdGF0aWMgdm9pZCBidWZmZXJfc2l6ZV9hZGRfYXRv bWljKHN0cnVjdCBwZXJzaXN0ZW50X3JhbV96b25lICpwcnosIHNpemVfdCBhKQotewotCXNpemVf dCBvbGQ7Ci0Jc2l6ZV90IG5ldzsKLQotCWlmIChhdG9taWNfcmVhZCgmcHJ6LT5idWZmZXItPnNp emUpID09IHByei0+YnVmZmVyX3NpemUpCi0JCXJldHVybjsKLQotCWRvIHsKLQkJb2xkID0gYXRv bWljX3JlYWQoJnByei0+YnVmZmVyLT5zaXplKTsKLQkJbmV3ID0gb2xkICsgYTsKLQkJaWYgKG5l dyA+IHByei0+YnVmZmVyX3NpemUpCi0JCQluZXcgPSBwcnotPmJ1ZmZlcl9zaXplOwotCX0gd2hp bGUgKGF0b21pY19jbXB4Y2hnKCZwcnotPmJ1ZmZlci0+c2l6ZSwgb2xkLCBuZXcpICE9IG9sZCk7 Ci19Ci0KIHN0YXRpYyBERUZJTkVfUkFXX1NQSU5MT0NLKGJ1ZmZlcl9sb2NrKTsKIAogLyogaW5j cmVhc2UgYW5kIHdyYXAgdGhlIHN0YXJ0IHBvaW50ZXIsIHJldHVybmluZyB0aGUgb2xkIHZhbHVl ICovCi1zdGF0aWMgc2l6ZV90IGJ1ZmZlcl9zdGFydF9hZGRfbG9ja2VkKHN0cnVjdCBwZXJzaXN0 ZW50X3JhbV96b25lICpwcnosIHNpemVfdCBhKQorc3RhdGljIHNpemVfdCBidWZmZXJfc3RhcnRf YWRkKHN0cnVjdCBwZXJzaXN0ZW50X3JhbV96b25lICpwcnosIHNpemVfdCBhKQogewogCWludCBv bGQ7CiAJaW50IG5ldzsKQEAgLTEwMyw3ICs3MCw3IEBAIHN0YXRpYyBzaXplX3QgYnVmZmVyX3N0 YXJ0X2FkZF9sb2NrZWQoc3RydWN0IHBlcnNpc3RlbnRfcmFtX3pvbmUgKnByeiwgc2l6ZV90IGEp CiB9CiAKIC8qIGluY3JlYXNlIHRoZSBzaXplIGNvdW50ZXIgdW50aWwgaXQgaGl0cyB0aGUgbWF4 IHNpemUgKi8KLXN0YXRpYyB2b2lkIGJ1ZmZlcl9zaXplX2FkZF9sb2NrZWQoc3RydWN0IHBlcnNp c3RlbnRfcmFtX3pvbmUgKnByeiwgc2l6ZV90IGEpCitzdGF0aWMgdm9pZCBidWZmZXJfc2l6ZV9h ZGQoc3RydWN0IHBlcnNpc3RlbnRfcmFtX3pvbmUgKnByeiwgc2l6ZV90IGEpCiB7CiAJc2l6ZV90 IG9sZDsKIAlzaXplX3QgbmV3OwpAQCAtMTI0LDkgKzkxLDYgQEAgZXhpdDoKIAlyYXdfc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmYnVmZmVyX2xvY2ssIGZsYWdzKTsKIH0KIAotc3RhdGljIHNpemVf dCAoKmJ1ZmZlcl9zdGFydF9hZGQpKHN0cnVjdCBwZXJzaXN0ZW50X3JhbV96b25lICosIHNpemVf dCkgPSBidWZmZXJfc3RhcnRfYWRkX2F0b21pYzsKLXN0YXRpYyB2b2lkICgqYnVmZmVyX3NpemVf YWRkKShzdHJ1Y3QgcGVyc2lzdGVudF9yYW1fem9uZSAqLCBzaXplX3QpID0gYnVmZmVyX3NpemVf YWRkX2F0b21pYzsKLQogc3RhdGljIHZvaWQgbm90cmFjZSBwZXJzaXN0ZW50X3JhbV9lbmNvZGVf cnM4KHN0cnVjdCBwZXJzaXN0ZW50X3JhbV96b25lICpwcnosCiAJdWludDhfdCAqZGF0YSwgc2l6 ZV90IGxlbiwgdWludDhfdCAqZWNjKQogewpAQCAtMjk5LDcgKzI2Myw3IEBAIHN0YXRpYyB2b2lk IG5vdHJhY2UgcGVyc2lzdGVudF9yYW1fdXBkYXRlKHN0cnVjdCBwZXJzaXN0ZW50X3JhbV96b25l ICpwcnosCiAJY29uc3Qgdm9pZCAqcywgdW5zaWduZWQgaW50IHN0YXJ0LCB1bnNpZ25lZCBpbnQg Y291bnQpCiB7CiAJc3RydWN0IHBlcnNpc3RlbnRfcmFtX2J1ZmZlciAqYnVmZmVyID0gcHJ6LT5i dWZmZXI7Ci0JbWVtY3B5KGJ1ZmZlci0+ZGF0YSArIHN0YXJ0LCBzLCBjb3VudCk7CisJbWVtY3B5 X3RvaW8oYnVmZmVyLT5kYXRhICsgc3RhcnQsIHMsIGNvdW50KTsKIAlwZXJzaXN0ZW50X3JhbV91 cGRhdGVfZWNjKHByeiwgc3RhcnQsIGNvdW50KTsKIH0KIApAQCAtMzIyLDggKzI4Niw4IEBAIHZv aWQgcGVyc2lzdGVudF9yYW1fc2F2ZV9vbGQoc3RydWN0IHBlcnNpc3RlbnRfcmFtX3pvbmUgKnBy eikKIAl9CiAKIAlwcnotPm9sZF9sb2dfc2l6ZSA9IHNpemU7Ci0JbWVtY3B5KHByei0+b2xkX2xv ZywgJmJ1ZmZlci0+ZGF0YVtzdGFydF0sIHNpemUgLSBzdGFydCk7Ci0JbWVtY3B5KHByei0+b2xk X2xvZyArIHNpemUgLSBzdGFydCwgJmJ1ZmZlci0+ZGF0YVswXSwgc3RhcnQpOworCW1lbWNweV9m cm9taW8ocHJ6LT5vbGRfbG9nLCAmYnVmZmVyLT5kYXRhW3N0YXJ0XSwgc2l6ZSAtIHN0YXJ0KTsK KwltZW1jcHlfZnJvbWlvKHByei0+b2xkX2xvZyArIHNpemUgLSBzdGFydCwgJmJ1ZmZlci0+ZGF0 YVswXSwgc3RhcnQpOwogfQogCiBpbnQgbm90cmFjZSBwZXJzaXN0ZW50X3JhbV93cml0ZShzdHJ1 Y3QgcGVyc2lzdGVudF9yYW1fem9uZSAqcHJ6LApAQCAtNDI2LDkgKzM5MCw2IEBAIHN0YXRpYyB2 b2lkICpwZXJzaXN0ZW50X3JhbV9pb21hcChwaHlzX2FkZHJfdCBzdGFydCwgc2l6ZV90IHNpemUs CiAJCXJldHVybiBOVUxMOwogCX0KIAotCWJ1ZmZlcl9zdGFydF9hZGQgPSBidWZmZXJfc3RhcnRf YWRkX2xvY2tlZDsKLQlidWZmZXJfc2l6ZV9hZGQgPSBidWZmZXJfc2l6ZV9hZGRfbG9ja2VkOwot CiAJaWYgKG1lbXR5cGUpCiAJCXZhID0gaW9yZW1hcChzdGFydCwgc2l6ZSk7CiAJZWxzZQpkaWZm IC0tZ2l0IGEvZnMvcmVpc2VyZnMvc3VwZXIuYyBiL2ZzL3JlaXNlcmZzL3N1cGVyLmMKaW5kZXgg NDhjNjkyNGViYTA1Li43ZGFmOWU1MDNmODAgMTAwNjQ0Ci0tLSBhL2ZzL3JlaXNlcmZzL3N1cGVy LmMKKysrIGIvZnMvcmVpc2VyZnMvc3VwZXIuYwpAQCAtMTg5LDcgKzE4OSwxNSBAQCBzdGF0aWMg aW50IHJlbW92ZV9zYXZlX2xpbmtfb25seShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMsCiBzdGF0aWMg aW50IHJlaXNlcmZzX3F1b3RhX29uX21vdW50KHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQpOwog I2VuZGlmCiAKLS8qIGxvb2sgZm9yIHVuY29tcGxldGVkIHVubGlua3MgYW5kIHRydW5jYXRlcyBh bmQgY29tcGxldGUgdGhlbSAqLworLyoKKyAqIExvb2sgZm9yIHVuY29tcGxldGVkIHVubGlua3Mg YW5kIHRydW5jYXRlcyBhbmQgY29tcGxldGUgdGhlbQorICoKKyAqIENhbGxlZCB3aXRoIHN1cGVy YmxvY2sgd3JpdGUgbG9ja2VkLiAgSWYgcXVvdGFzIGFyZSBlbmFibGVkLCB3ZSBoYXZlIHRvCisg KiByZWxlYXNlL3JldGFrZSBsZXN0IHdlIGNhbGwgZHF1b3RfcXVvdGFfb25fbW91bnQoKSwgcHJv Y2VlZCB0bworICogc2NoZWR1bGVfb25fZWFjaF9jcHUoKSBpbiBpbnZhbGlkYXRlX2JkZXYoKSBh bmQgZGVhZGxvY2sgd2FpdGluZyBmb3IgdGhlIHBlcgorICogY3B1IHdvcmtsZXRzIHRvIGNvbXBs ZXRlIGZsdXNoX2FzeW5jX2NvbW1pdHMoKSB0aGF0IGluIHR1cm4gd2FpdCBmb3IgdGhlCisgKiBz dXBlcmJsb2NrIHdyaXRlIGxvY2suCisgKi8KIHN0YXRpYyBpbnQgZmluaXNoX3VuZmluaXNoZWQo c3RydWN0IHN1cGVyX2Jsb2NrICpzKQogewogCUlOSVRJQUxJWkVfUEFUSChwYXRoKTsKQEAgLTIz Niw3ICsyNDQsOSBAQCBzdGF0aWMgaW50IGZpbmlzaF91bmZpbmlzaGVkKHN0cnVjdCBzdXBlcl9i bG9jayAqcykKIAkJCQlxdW90YV9lbmFibGVkW2ldID0gMDsKIAkJCQljb250aW51ZTsKIAkJCX0K KwkJCXJlaXNlcmZzX3dyaXRlX3VubG9jayhzKTsKIAkJCXJldCA9IHJlaXNlcmZzX3F1b3RhX29u X21vdW50KHMsIGkpOworCQkJcmVpc2VyZnNfd3JpdGVfbG9jayhzKTsKIAkJCWlmIChyZXQgPCAw KQogCQkJCXJlaXNlcmZzX3dhcm5pbmcocywgInJlaXNlcmZzLTI1MDAiLAogCQkJCQkJICJjYW5u b3QgdHVybiBvbiBqb3VybmFsZWQgIgpkaWZmIC0tZ2l0IGEvZnMvc3VwZXIuYyBiL2ZzL3N1cGVy LmMKaW5kZXggYWJiOGM3Zjk1OTliLi5jNmJmMmNlZjJlYWYgMTAwNjQ0Ci0tLSBhL2ZzL3N1cGVy LmMKKysrIGIvZnMvc3VwZXIuYwpAQCAtMTMzNyw4ICsxMzM3LDggQEAgaW50IGZyZWV6ZV9zdXBl cihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQogCQl9CiAJfQogCS8qCi0JICogVGhpcyBpcyBqdXN0 IGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMgc28gdGhhdCBmcyBjYW4gd2FybiBpZiBpdAotCSAqIHNl ZXMgd3JpdGUgYWN0aXZpdHkgd2hlbiBmcm96ZW4gaXMgc2V0IHRvIFNCX0ZSRUVaRV9DT01QTEVU RS4KKwkgKiBGb3IgZGVidWdnaW5nIHB1cnBvc2VzIHNvIHRoYXQgZnMgY2FuIHdhcm4gaWYgaXQg c2VlcyB3cml0ZSBhY3Rpdml0eQorCSAqIHdoZW4gZnJvemVuIGlzIHNldCB0byBTQl9GUkVFWkVf Q09NUExFVEUsIGFuZCBmb3IgdGhhd19zdXBlcigpLgogCSAqLwogCXNiLT5zX3dyaXRlcnMuZnJv emVuID0gU0JfRlJFRVpFX0NPTVBMRVRFOwogCXVwX3dyaXRlKCZzYi0+c191bW91bnQpOwpAQCAt MTM1Nyw3ICsxMzU3LDcgQEAgaW50IHRoYXdfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikK IAlpbnQgZXJyb3I7CiAKIAlkb3duX3dyaXRlKCZzYi0+c191bW91bnQpOwotCWlmIChzYi0+c193 cml0ZXJzLmZyb3plbiA9PSBTQl9VTkZST1pFTikgeworCWlmIChzYi0+c193cml0ZXJzLmZyb3pl biAhPSBTQl9GUkVFWkVfQ09NUExFVEUpIHsKIAkJdXBfd3JpdGUoJnNiLT5zX3Vtb3VudCk7CiAJ CXJldHVybiAtRUlOVkFMOwogCX0KZGlmZiAtLWdpdCBhL2ZzL3ViaWZzL2Rpci5jIGIvZnMvdWJp ZnMvZGlyLmMKaW5kZXggZWE0MTY0OWU0Y2E1Li4wNjJmMGQ2M2RlYzYgMTAwNjQ0Ci0tLSBhL2Zz L3ViaWZzL2Rpci5jCisrKyBiL2ZzL3ViaWZzL2Rpci5jCkBAIC0zNDcsNyArMzQ3LDcgQEAgc3Rh dGljIHVuc2lnbmVkIGludCB2ZnNfZGVudF90eXBlKHVpbnQ4X3QgdHlwZSkKICAqLwogc3RhdGlj IGludCB1Ymlmc19yZWFkZGlyKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGlyX2NvbnRleHQg KmN0eCkKIHsKLQlpbnQgZXJyOworCWludCBlcnIgPSAwOwogCXN0cnVjdCBxc3RyIG5tOwogCXVu aW9uIHViaWZzX2tleSBrZXk7CiAJc3RydWN0IHViaWZzX2RlbnRfbm9kZSAqZGVudDsKQEAgLTQ0 NiwxNiArNDQ2LDIyIEBAIHN0YXRpYyBpbnQgdWJpZnNfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqZmls ZSwgc3RydWN0IGRpcl9jb250ZXh0ICpjdHgpCiAJfQogCiBvdXQ6Ci0JaWYgKGVyciAhPSAtRU5P RU5UKSB7CisJaWYgKGVyciAhPSAtRU5PRU5UKQogCQl1Ymlmc19lcnIoImNhbm5vdCBmaW5kIG5l eHQgZGlyZW50cnksIGVycm9yICVkIiwgZXJyKTsKLQkJcmV0dXJuIGVycjsKLQl9CisJZWxzZQor CQkvKgorCQkgKiAtRU5PRU5UIGlzIGEgbm9uLWZhdGFsIGVycm9yIGluIHRoaXMgY29udGV4dCwg dGhlIFROQyB1c2VzCisJCSAqIGl0IHRvIGluZGljYXRlIHRoYXQgdGhlIGN1cnNvciBtb3ZlZCBw YXN0IHRoZSBjdXJyZW50IGRpcmVjdG9yeQorCQkgKiBhbmQgcmVhZGRpcigpIGhhcyB0byBzdG9w LgorCQkgKi8KKwkJZXJyID0gMDsKKwogCiAJa2ZyZWUoZmlsZS0+cHJpdmF0ZV9kYXRhKTsKIAlm aWxlLT5wcml2YXRlX2RhdGEgPSBOVUxMOwogCS8qIDIgaXMgYSBzcGVjaWFsIHZhbHVlIGluZGlj YXRpbmcgdGhhdCB0aGVyZSBhcmUgbm8gbW9yZSBkaXJlbnRyaWVzICovCiAJY3R4LT5wb3MgPSAy OwotCXJldHVybiAwOworCXJldHVybiBlcnI7CiB9CiAKIC8qIEZyZWUgc2F2ZWQgcmVhZGRpcigp IHN0YXRlIHdoZW4gdGhlIGRpcmVjdG9yeSBpcyBjbG9zZWQgKi8KZGlmZiAtLWdpdCBhL2ZzL3Vi aWZzL3hhdHRyLmMgYi9mcy91Ymlmcy94YXR0ci5jCmluZGV4IDVlMGE2M2IxYjBkNS4uY2U2YzBk NGFhNDhkIDEwMDY0NAotLS0gYS9mcy91Ymlmcy94YXR0ci5jCisrKyBiL2ZzL3ViaWZzL3hhdHRy LmMKQEAgLTE2Nyw2ICsxNjcsNyBAQCBvdXRfY2FuY2VsOgogCWhvc3RfdWktPnhhdHRyX2NudCAt PSAxOwogCWhvc3RfdWktPnhhdHRyX3NpemUgLT0gQ0FMQ19ERU5UX1NJWkUobm0tPmxlbik7CiAJ aG9zdF91aS0+eGF0dHJfc2l6ZSAtPSBDQUxDX1hBVFRSX0JZVEVTKHNpemUpOworCWhvc3RfdWkt PnhhdHRyX25hbWVzIC09IG5tLT5sZW47CiAJbXV0ZXhfdW5sb2NrKCZob3N0X3VpLT51aV9tdXRl eCk7CiBvdXRfZnJlZToKIAltYWtlX2JhZF9pbm9kZShpbm9kZSk7CkBAIC01MTQsNiArNTE1LDcg QEAgb3V0X2NhbmNlbDoKIAlob3N0X3VpLT54YXR0cl9jbnQgKz0gMTsKIAlob3N0X3VpLT54YXR0 cl9zaXplICs9IENBTENfREVOVF9TSVpFKG5tLT5sZW4pOwogCWhvc3RfdWktPnhhdHRyX3NpemUg Kz0gQ0FMQ19YQVRUUl9CWVRFUyh1aS0+ZGF0YV9sZW4pOworCWhvc3RfdWktPnhhdHRyX25hbWVz ICs9IG5tLT5sZW47CiAJbXV0ZXhfdW5sb2NrKCZob3N0X3VpLT51aV9tdXRleCk7CiAJdWJpZnNf cmVsZWFzZV9idWRnZXQoYywgJnJlcSk7CiAJbWFrZV9iYWRfaW5vZGUoaW5vZGUpOwpkaWZmIC0t Z2l0IGEvZnMveGZzL3hmc19hY2wuYyBiL2ZzL3hmcy94ZnNfYWNsLmMKaW5kZXggZDEyMjkwMzNh MjJmLi43ZDY1ZTI1ZWNjYzUgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfYWNsLmMKKysrIGIvZnMv eGZzL3hmc19hY2wuYwpAQCAtMjQ0LDggKzI0NCw3IEBAIHhmc19zZXRfbW9kZShzdHJ1Y3QgaW5v ZGUgKmlub2RlLCB1bW9kZV90IG1vZGUpCiAJCWlhdHRyLmlhX21vZGUgPSBtb2RlOwogCQlpYXR0 ci5pYV9jdGltZSA9IGN1cnJlbnRfZnNfdGltZShpbm9kZS0+aV9zYik7CiAKLQkJZXJyb3IgPSAt eGZzX3NldGF0dHJfbm9uc2l6ZShOVUxMLCBYRlNfSShpbm9kZSksICZpYXR0ciwKLQkJCQkJICAg ICBYRlNfQVRUUl9OT0FDTCk7CisJCWVycm9yID0gLXhmc19zZXRhdHRyX25vbnNpemUoWEZTX0ko aW5vZGUpLCAmaWF0dHIsIFhGU19BVFRSX05PQUNMKTsKIAl9CiAKIAlyZXR1cm4gZXJyb3I7CmRp ZmYgLS1naXQgYS9mcy94ZnMveGZzX2ZpbGUuYyBiL2ZzL3hmcy94ZnNfZmlsZS5jCmluZGV4IGVi MDQ5ODFiMDNiNC4uZDAwYjIxYzVkM2VjIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2ZpbGUuYwor KysgYi9mcy94ZnMveGZzX2ZpbGUuYwpAQCAtODYyLDcgKzg2Miw3IEBAIHhmc19maWxlX2ZhbGxv Y2F0ZSgKIAogCQlpYXR0ci5pYV92YWxpZCA9IEFUVFJfU0laRTsKIAkJaWF0dHIuaWFfc2l6ZSA9 IG5ld19zaXplOwotCQllcnJvciA9IHhmc19zZXRhdHRyX3NpemUoZmlsZS0+Zl9kZW50cnksICZp YXR0cik7CisJCWVycm9yID0geGZzX3ZuX3NldGF0dHJfc2l6ZShmaWxlLT5mX2RlbnRyeSwgJmlh dHRyKTsKIAl9CiAKIG91dF91bmxvY2s6CmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2lub2RlLmMg Yi9mcy94ZnMveGZzX2lub2RlLmMKaW5kZXggMTc0Mzc5ZGRmMjJmLi42M2E3N2JiODExNzYgMTAw NjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfaW5vZGUuYworKysgYi9mcy94ZnMveGZzX2lub2RlLmMKQEAg LTE3NzYsNyArMTc3Niw3IEBAIHhmc19pbmFjdGl2ZV90cnVuY2F0ZSgKIAkvKgogCSAqIExvZyB0 aGUgaW5vZGUgc2l6ZSBmaXJzdCB0byBwcmV2ZW50IHN0YWxlIGRhdGEgZXhwb3N1cmUgaW4gdGhl IGV2ZW50CiAJICogb2YgYSBzeXN0ZW0gY3Jhc2ggYmVmb3JlIHRoZSB0cnVuY2F0ZSBjb21wbGV0 ZXMuIFNlZSB0aGUgcmVsYXRlZAotCSAqIGNvbW1lbnQgaW4geGZzX3NldGF0dHJfc2l6ZSgpIGZv ciBkZXRhaWxzLgorCSAqIGNvbW1lbnQgaW4geGZzX3ZuX3NldGF0dHJfc2l6ZSgpIGZvciBkZXRh aWxzLgogCSAqLwogCWlwLT5pX2QuZGlfc2l6ZSA9IDA7CiAJeGZzX3RyYW5zX2xvZ19pbm9kZSh0 cCwgaXAsIFhGU19JTE9HX0NPUkUpOwpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19pb2N0bC5jIGIv ZnMveGZzL3hmc19pb2N0bC5jCmluZGV4IGNlZTYyYTVhZmJlZS4uZGQyZWYwNWZlNjRjIDEwMDY0 NAotLS0gYS9mcy94ZnMveGZzX2lvY3RsLmMKKysrIGIvZnMveGZzL3hmc19pb2N0bC5jCkBAIC03 MTcsNyArNzE3LDcgQEAgeGZzX2lvY19zcGFjZSgKIAkJaWF0dHIuaWFfdmFsaWQgPSBBVFRSX1NJ WkU7CiAJCWlhdHRyLmlhX3NpemUgPSBiZi0+bF9zdGFydDsKIAotCQllcnJvciA9IHhmc19zZXRh dHRyX3NpemUoZmlscC0+Zl9kZW50cnksICZpYXR0cik7CisJCWVycm9yID0geGZzX3ZuX3NldGF0 dHJfc2l6ZShmaWxwLT5mX2RlbnRyeSwgJmlhdHRyKTsKIAkJaWYgKCFlcnJvcikKIAkJCWNscnBy ZWFsbG9jID0gdHJ1ZTsKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2lvcHMuYyBi L2ZzL3hmcy94ZnNfaW9wcy5jCmluZGV4IGNmYzVjMjYwZWNiZS4uMzdmNjg4NGFlMzlhIDEwMDY0 NAotLS0gYS9mcy94ZnMveGZzX2lvcHMuYworKysgYi9mcy94ZnMveGZzX2lvcHMuYwpAQCAtNTI1 LDkgKzUyNSwzMCBAQCB4ZnNfc2V0YXR0cl90aW1lKAogCX0KIH0KIAorc3RhdGljIGludAoreGZz X3ZuX2NoYW5nZV9vaygKKwlzdHJ1Y3QgZGVudHJ5CSpkZW50cnksCisJc3RydWN0IGlhdHRyCSpp YXR0cikKK3sKKwlzdHJ1Y3QgeGZzX21vdW50CSptcCA9IFhGU19JKGRfaW5vZGUoZGVudHJ5KSkt PmlfbW91bnQ7CisKKwlpZiAobXAtPm1fZmxhZ3MgJiBYRlNfTU9VTlRfUkRPTkxZKQorCQlyZXR1 cm4gWEZTX0VSUk9SKEVST0ZTKTsKKworCWlmIChYRlNfRk9SQ0VEX1NIVVRET1dOKG1wKSkKKwkJ cmV0dXJuIFhGU19FUlJPUihFSU8pOworCisJcmV0dXJuIFhGU19FUlJPUigtc2V0YXR0cl9wcmVw YXJlKGRlbnRyeSwgaWF0dHIpKTsKK30KKworLyoKKyAqIFNldCBub24tc2l6ZSBhdHRyaWJ1dGVz IG9mIGFuIGlub2RlLgorICoKKyAqIENhdXRpb246IFRoZSBjYWxsZXIgb2YgdGhpcyBmdW5jdGlv biBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGluZworICogc2V0YXR0cl9wcmVwYXJlKCkgb3Igb3Ro ZXJ3aXNlIHZlcmlmeWluZyB0aGUgY2hhbmdlIGlzIGZpbmUuCisgKi8KIGludAogeGZzX3NldGF0 dHJfbm9uc2l6ZSgKLQlzdHJ1Y3QgZGVudHJ5CQkqZGVudHJ5LAogCXN0cnVjdCB4ZnNfaW5vZGUJ KmlwLAogCXN0cnVjdCBpYXR0cgkJKmlhdHRyLAogCWludAkJCWZsYWdzKQpAQCAtNTQyLDIxICs1 NjMsNiBAQCB4ZnNfc2V0YXR0cl9ub25zaXplKAogCXN0cnVjdCB4ZnNfZHF1b3QJKnVkcXAgPSBO VUxMLCAqZ2RxcCA9IE5VTEw7CiAJc3RydWN0IHhmc19kcXVvdAkqb2xkZHF1b3QxID0gTlVMTCwg Km9sZGRxdW90MiA9IE5VTEw7CiAKLQl0cmFjZV94ZnNfc2V0YXR0cihpcCk7Ci0KLQkvKiBJZiBh Y2xzIGFyZSBiZWluZyBpbmhlcml0ZWQsIHdlIGFscmVhZHkgaGF2ZSB0aGlzIGNoZWNrZWQgKi8K LQlpZiAoIShmbGFncyAmIFhGU19BVFRSX05PQUNMKSkgewotCQlpZiAobXAtPm1fZmxhZ3MgJiBY RlNfTU9VTlRfUkRPTkxZKQotCQkJcmV0dXJuIFhGU19FUlJPUihFUk9GUyk7Ci0KLQkJaWYgKFhG U19GT1JDRURfU0hVVERPV04obXApKQotCQkJcmV0dXJuIFhGU19FUlJPUihFSU8pOwotCi0JCWVy cm9yID0gLXNldGF0dHJfcHJlcGFyZShkZW50cnksIGlhdHRyKTsKLQkJaWYgKGVycm9yKQotCQkJ cmV0dXJuIFhGU19FUlJPUihlcnJvcik7Ci0JfQotCiAJQVNTRVJUKChtYXNrICYgQVRUUl9TSVpF KSA9PSAwKTsKIAogCS8qCkBAIC03MzAsMTcgKzczNiwzNSBAQCBvdXRfZHFyZWxlOgogCXJldHVy biBlcnJvcjsKIH0KIAoraW50Cit4ZnNfdm5fc2V0YXR0cl9ub25zaXplKAorCXN0cnVjdCBkZW50 cnkJCSpkZW50cnksCisJc3RydWN0IGlhdHRyCQkqaWF0dHIpCit7CisJc3RydWN0IHhmc19pbm9k ZQkqaXAgPSBYRlNfSShkX2lub2RlKGRlbnRyeSkpOworCWludCBlcnJvcjsKKworCXRyYWNlX3hm c19zZXRhdHRyKGlwKTsKKworCWVycm9yID0geGZzX3ZuX2NoYW5nZV9vayhkZW50cnksIGlhdHRy KTsKKwlpZiAoZXJyb3IpCisJCXJldHVybiBlcnJvcjsKKwlyZXR1cm4geGZzX3NldGF0dHJfbm9u c2l6ZShpcCwgaWF0dHIsIDApOworfQorCiAvKgogICogVHJ1bmNhdGUgZmlsZS4gIE11c3QgaGF2 ZSB3cml0ZSBwZXJtaXNzaW9uIGFuZCBub3QgYmUgYSBkaXJlY3RvcnkuCisgKgorICogQ2F1dGlv bjogVGhlIGNhbGxlciBvZiB0aGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5n CisgKiBzZXRhdHRyX3ByZXBhcmUoKSBvciBvdGhlcndpc2UgdmVyaWZ5aW5nIHRoZSBjaGFuZ2Ug aXMgZmluZS4KICAqLwogaW50CiB4ZnNfc2V0YXR0cl9zaXplKAotCXN0cnVjdCBkZW50cnkJCSpk ZW50cnksCisJc3RydWN0IHhmc19pbm9kZQkqaXAsCiAJc3RydWN0IGlhdHRyCQkqaWF0dHIpCiB7 Ci0Jc3RydWN0IGlub2RlCQkqaW5vZGUgPSBkZW50cnktPmRfaW5vZGU7Ci0Jc3RydWN0IHhmc19p bm9kZQkqaXAgPSBYRlNfSShpbm9kZSk7CiAJc3RydWN0IHhmc19tb3VudAkqbXAgPSBpcC0+aV9t b3VudDsKKwlzdHJ1Y3QgaW5vZGUJCSppbm9kZSA9IFZGU19JKGlwKTsKIAl4ZnNfb2ZmX3QJCW9s ZHNpemUsIG5ld3NpemU7CiAJc3RydWN0IHhmc190cmFucwkqdHA7CiAJaW50CQkJZXJyb3I7CkBA IC03NDgsMTggKzc3Miw2IEBAIHhmc19zZXRhdHRyX3NpemUoCiAJdWludAkJCWNvbW1pdF9mbGFn cyA9IDA7CiAJYm9vbAkJCWRpZF96ZXJvaW5nID0gZmFsc2U7CiAKLQl0cmFjZV94ZnNfc2V0YXR0 cihpcCk7Ci0KLQlpZiAobXAtPm1fZmxhZ3MgJiBYRlNfTU9VTlRfUkRPTkxZKQotCQlyZXR1cm4g WEZTX0VSUk9SKEVST0ZTKTsKLQotCWlmIChYRlNfRk9SQ0VEX1NIVVRET1dOKG1wKSkKLQkJcmV0 dXJuIFhGU19FUlJPUihFSU8pOwotCi0JZXJyb3IgPSAtc2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwg aWF0dHIpOwotCWlmIChlcnJvcikKLQkJcmV0dXJuIFhGU19FUlJPUihlcnJvcik7Ci0KIAlBU1NF UlQoeGZzX2lzaWxvY2tlZChpcCwgWEZTX0lPTE9DS19FWENMKSk7CiAJQVNTRVJUKHhmc19pc2ls b2NrZWQoaXAsIFhGU19NTUFQTE9DS19FWENMKSk7CiAJQVNTRVJUKFNfSVNSRUcoaXAtPmlfZC5k aV9tb2RlKSk7CkBAIC03ODAsNyArNzkyLDcgQEAgeGZzX3NldGF0dHJfc2l6ZSgKIAkJICogVXNl IHRoZSByZWd1bGFyIHNldGF0dHIgcGF0aCB0byB1cGRhdGUgdGhlIHRpbWVzdGFtcHMuCiAJCSAq LwogCQlpYXR0ci0+aWFfdmFsaWQgJj0gfkFUVFJfU0laRTsKLQkJcmV0dXJuIHhmc19zZXRhdHRy X25vbnNpemUoZGVudHJ5LCBpcCwgaWF0dHIsIDApOworCQlyZXR1cm4geGZzX3NldGF0dHJfbm9u c2l6ZShpcCwgaWF0dHIsIDApOwogCX0KIAogCS8qCkBAIC05MzEsNiArOTQzLDIyIEBAIG91dF90 cmFuc19jYW5jZWw6CiAJZ290byBvdXRfdW5sb2NrOwogfQogCitpbnQKK3hmc192bl9zZXRhdHRy X3NpemUoCisJc3RydWN0IGRlbnRyeQkJKmRlbnRyeSwKKwlzdHJ1Y3QgaWF0dHIJCSppYXR0cikK K3sKKwlzdHJ1Y3QgeGZzX2lub2RlCSppcCA9IFhGU19JKGRfaW5vZGUoZGVudHJ5KSk7CisJaW50 IGVycm9yOworCisJdHJhY2VfeGZzX3NldGF0dHIoaXApOworCisJZXJyb3IgPSB4ZnNfdm5fY2hh bmdlX29rKGRlbnRyeSwgaWF0dHIpOworCWlmIChlcnJvcikKKwkJcmV0dXJuIGVycm9yOworCXJl dHVybiB4ZnNfc2V0YXR0cl9zaXplKGlwLCBpYXR0cik7Cit9CisKIFNUQVRJQyBpbnQKIHhmc192 bl9zZXRhdHRyKAogCXN0cnVjdCBkZW50cnkJCSpkZW50cnksCkBAIC05NDEsMTAgKzk2OSwxMCBA QCB4ZnNfdm5fc2V0YXR0cigKIAogCWlmIChpYXR0ci0+aWFfdmFsaWQgJiBBVFRSX1NJWkUpIHsK IAkJeGZzX2lsb2NrKGlwLCBYRlNfSU9MT0NLX0VYQ0wgfCBYRlNfTU1BUExPQ0tfRVhDTCk7Ci0J CWVycm9yID0geGZzX3NldGF0dHJfc2l6ZShkZW50cnksIGlhdHRyKTsKKwkJZXJyb3IgPSB4ZnNf dm5fc2V0YXR0cl9zaXplKGRlbnRyeSwgaWF0dHIpOwogCQl4ZnNfaXVubG9jayhpcCwgWEZTX0lP TE9DS19FWENMIHwgWEZTX01NQVBMT0NLX0VYQ0wpOwogCX0gZWxzZSB7Ci0JCWVycm9yID0geGZz X3NldGF0dHJfbm9uc2l6ZShkZW50cnksIGlwLCBpYXR0ciwgMCk7CisJCWVycm9yID0geGZzX3Zu X3NldGF0dHJfbm9uc2l6ZShkZW50cnksIGlhdHRyKTsKIAl9CiAKIAlyZXR1cm4gLWVycm9yOwpk aWZmIC0tZ2l0IGEvZnMveGZzL3hmc19pb3BzLmggYi9mcy94ZnMveGZzX2lvcHMuaAppbmRleCBm NjZhMzdjMGE4OGEuLmZlYzY1YzA4ODU0MyAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19pb3BzLmgK KysrIGIvZnMveGZzL3hmc19pb3BzLmgKQEAgLTMyLDggKzMyLDkgQEAgZXh0ZXJuIHZvaWQgeGZz X3NldHVwX2lub2RlKHN0cnVjdCB4ZnNfaW5vZGUgKik7CiAgKi8KICNkZWZpbmUgWEZTX0FUVFJf Tk9BQ0wJCTB4MDEJLyogRG9uJ3QgY2FsbCBwb3NpeF9hY2xfY2htb2QgKi8KIAotZXh0ZXJuIGlu dCB4ZnNfc2V0YXR0cl9ub25zaXplKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IHhmc19p bm9kZSAqaXAsCi0JCQkgICAgICAgc3RydWN0IGlhdHRyICp2YXAsIGludCBmbGFncyk7Ci1leHRl cm4gaW50IHhmc19zZXRhdHRyX3NpemUoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0 dHIgKnZhcCk7CitleHRlcm4gaW50IHhmc19zZXRhdHRyX25vbnNpemUoc3RydWN0IHhmc19pbm9k ZSAqaXAsIHN0cnVjdCBpYXR0ciAqdmFwLAorCQkJICAgICAgIGludCBmbGFncyk7CitleHRlcm4g aW50IHhmc192bl9zZXRhdHRyX25vbnNpemUoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qg aWF0dHIgKnZhcCk7CitleHRlcm4gaW50IHhmc192bl9zZXRhdHRyX3NpemUoc3RydWN0IGRlbnRy eSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKnZhcCk7CiAKICNlbmRpZiAvKiBfX1hGU19JT1BTX0hf XyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jb21waWxlci5oIGIvaW5jbHVkZS9saW51 eC9jb21waWxlci5oCmluZGV4IDhmNmU3YjJkNjY3Zi4uMzZmYzE0NWZmYmI2IDEwMDY0NAotLS0g YS9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmgKKysrIGIvaW5jbHVkZS9saW51eC9jb21waWxlci5o CkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBmdHJhY2VfbGlrZWx5X3VwZGF0ZShzdHJ1Y3QgZnRy YWNlX2JyYW5jaF9kYXRhICpmLCBpbnQgdmFsLCBpbnQgZXhwZWN0KTsKIAogLyogSXMgdGhpcyB0 eXBlIGEgbmF0aXZlIHdvcmQgc2l6ZSAtLSB1c2VmdWwgZm9yIGF0b21pYyBvcGVyYXRpb25zICov CiAjaWZuZGVmIF9fbmF0aXZlX3dvcmQKLSMgZGVmaW5lIF9fbmF0aXZlX3dvcmQodCkgKHNpemVv Zih0KSA9PSBzaXplb2YoaW50KSB8fCBzaXplb2YodCkgPT0gc2l6ZW9mKGxvbmcpKQorIyBkZWZp bmUgX19uYXRpdmVfd29yZCh0KSAoc2l6ZW9mKHQpID09IHNpemVvZihjaGFyKSB8fCBzaXplb2Yo dCkgPT0gc2l6ZW9mKHNob3J0KSB8fCBzaXplb2YodCkgPT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9m KHQpID09IHNpemVvZihsb25nKSkKICNlbmRpZgogCiAvKiBDb21waWxlIHRpbWUgb2JqZWN0IHNp emUsIC0xIGZvciB1bmtub3duICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5o IGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaAppbmRleCA5NjUwOWU1NzlkMjEuLmJkYzZmODZlNzg5 NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9maWx0ZXIuaAorKysgYi9pbmNsdWRlL2xpbnV4 L2ZpbHRlci5oCkBAIC0zNDYsNyArMzQ2LDExIEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50 IHNrX2ZpbHRlcl9zaXplKHVuc2lnbmVkIGludCBwcm9nbGVuKQogI2RlZmluZSBza19maWx0ZXJf cHJvZ2xlbihmcHJvZykJCQlcCiAJCShmcHJvZy0+bGVuICogc2l6ZW9mKGZwcm9nLT5maWx0ZXJb MF0pKQogCi1pbnQgc2tfZmlsdGVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNr Yik7CitpbnQgc2tfZmlsdGVyX3RyaW1fY2FwKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1 ZmYgKnNrYiwgdW5zaWduZWQgaW50IGNhcCk7CitzdGF0aWMgaW5saW5lIGludCBza19maWx0ZXIo c3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQoreworCXJldHVybiBza19maWx0 ZXJfdHJpbV9jYXAoc2ssIHNrYiwgMSk7Cit9CiAKIHZvaWQgc2tfZmlsdGVyX3NlbGVjdF9ydW50 aW1lKHN0cnVjdCBza19maWx0ZXIgKmZwKTsKIHZvaWQgc2tfZmlsdGVyX2ZyZWUoc3RydWN0IHNr X2ZpbHRlciAqZnApOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9odWdldGxiLmggYi9pbmNs dWRlL2xpbnV4L2h1Z2V0bGIuaAppbmRleCA2MmU5NGQyNTE3YmQuLjZiYzc1MTY0ZTY4ZiAxMDA2 NDQKLS0tIGEvaW5jbHVkZS9saW51eC9odWdldGxiLmgKKysrIGIvaW5jbHVkZS9saW51eC9odWdl dGxiLmgKQEAgLTM5Niw4ICszOTYsOCBAQCBzdGF0aWMgaW5saW5lIHBnb2ZmX3QgYmFzZXBhZ2Vf aW5kZXgoc3RydWN0IHBhZ2UgKnBhZ2UpCiAJcmV0dXJuIF9fYmFzZXBhZ2VfaW5kZXgocGFnZSk7 CiB9CiAKLWV4dGVybiB2b2lkIGRpc3NvbHZlX2ZyZWVfaHVnZV9wYWdlcyh1bnNpZ25lZCBsb25n IHN0YXJ0X3BmbiwKLQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgZW5kX3Bmbik7CitleHRlcm4gaW50 IGRpc3NvbHZlX2ZyZWVfaHVnZV9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwKKwkJCQkg ICAgdW5zaWduZWQgbG9uZyBlbmRfcGZuKTsKIHN0YXRpYyBpbmxpbmUgaW50IGh1Z2VwYWdlX21p Z3JhdGlvbl9zdXBwb3J0ZWQoc3RydWN0IGhzdGF0ZSAqaCkKIHsKICNpZmRlZiBDT05GSUdfQVJD SF9FTkFCTEVfSFVHRVBBR0VfTUlHUkFUSU9OCkBAIC00NTIsNyArNDUyLDcgQEAgc3RhdGljIGlu bGluZSBwZ29mZl90IGJhc2VwYWdlX2luZGV4KHN0cnVjdCBwYWdlICpwYWdlKQogewogCXJldHVy biBwYWdlLT5pbmRleDsKIH0KLSNkZWZpbmUgZGlzc29sdmVfZnJlZV9odWdlX3BhZ2VzKHMsIGUp CWRvIHt9IHdoaWxlICgwKQorI2RlZmluZSBkaXNzb2x2ZV9mcmVlX2h1Z2VfcGFnZXMocywgZSkJ MAogI2RlZmluZSBodWdlcGFnZV9taWdyYXRpb25fc3VwcG9ydGVkKGgpCTAKIAogc3RhdGljIGlu bGluZSBzcGlubG9ja190ICpodWdlX3B0ZV9sb2NrcHRyKHN0cnVjdCBoc3RhdGUgKmgsCmRpZmYg LS1naXQgYS9pbmNsdWRlL2xpbnV4L21mZC84OHBtODB4LmggYi9pbmNsdWRlL2xpbnV4L21mZC84 OHBtODB4LmgKaW5kZXggOTdjYjI4M2NjOGUxLi4wZDM3ZThkYTM2NTQgMTAwNjQ0Ci0tLSBhL2lu Y2x1ZGUvbGludXgvbWZkLzg4cG04MHguaAorKysgYi9pbmNsdWRlL2xpbnV4L21mZC84OHBtODB4 LmgKQEAgLTM0OSw3ICszNDksNyBAQCBzdGF0aWMgaW5saW5lIGludCBwbTgweF9kZXZfc3VzcGVu ZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJaW50IGlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwg MCk7CiAKIAlpZiAoZGV2aWNlX21heV93YWtldXAoZGV2KSkKLQkJc2V0X2JpdCgoMSA8PCBpcnEp LCAmY2hpcC0+d3VfZmxhZyk7CisJCXNldF9iaXQoaXJxLCAmY2hpcC0+d3VfZmxhZyk7CiAKIAly ZXR1cm4gMDsKIH0KQEAgLTM2MSw3ICszNjEsNyBAQCBzdGF0aWMgaW5saW5lIGludCBwbTgweF9k ZXZfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKIAlpbnQgaXJxID0gcGxhdGZvcm1fZ2V0X2ly cShwZGV2LCAwKTsKIAogCWlmIChkZXZpY2VfbWF5X3dha2V1cChkZXYpKQotCQljbGVhcl9iaXQo KDEgPDwgaXJxKSwgJmNoaXAtPnd1X2ZsYWcpOworCQljbGVhcl9iaXQoaXJxLCAmY2hpcC0+d3Vf ZmxhZyk7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHdtLmgg Yi9pbmNsdWRlL2xpbnV4L3B3bS5oCmluZGV4IGU5MDYyOGNhYzhmYS4uODRlNTI2YTEyZGVmIDEw MDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3B3bS5oCisrKyBiL2luY2x1ZGUvbGludXgvcHdtLmgK QEAgLTI5OSw2ICsyOTksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHdtX2FkZF90YWJsZShzdHJ1 Y3QgcHdtX2xvb2t1cCAqdGFibGUsIHNpemVfdCBudW0pCiAjaWZkZWYgQ09ORklHX1BXTV9TWVNG Uwogdm9pZCBwd21jaGlwX3N5c2ZzX2V4cG9ydChzdHJ1Y3QgcHdtX2NoaXAgKmNoaXApOwogdm9p ZCBwd21jaGlwX3N5c2ZzX3VuZXhwb3J0KHN0cnVjdCBwd21fY2hpcCAqY2hpcCk7Cit2b2lkIHB3 bWNoaXBfc3lzZnNfdW5leHBvcnRfY2hpbGRyZW4oc3RydWN0IHB3bV9jaGlwICpjaGlwKTsKICNl bHNlCiBzdGF0aWMgaW5saW5lIHZvaWQgcHdtY2hpcF9zeXNmc19leHBvcnQoc3RydWN0IHB3bV9j aGlwICpjaGlwKQogewpAQCAtMzA3LDYgKzMwOCwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHdt Y2hpcF9zeXNmc19leHBvcnQoc3RydWN0IHB3bV9jaGlwICpjaGlwKQogc3RhdGljIGlubGluZSB2 b2lkIHB3bWNoaXBfc3lzZnNfdW5leHBvcnQoc3RydWN0IHB3bV9jaGlwICpjaGlwKQogewogfQor CitzdGF0aWMgaW5saW5lIHZvaWQgcHdtY2hpcF9zeXNmc191bmV4cG9ydF9jaGlsZHJlbihzdHJ1 Y3QgcHdtX2NoaXAgKmNoaXApCit7Cit9CiAjZW5kaWYgLyogQ09ORklHX1BXTV9TWVNGUyAqLwog CiAjZW5kaWYgLyogX19MSU5VWF9QV01fSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9z ZW0uaCBiL2luY2x1ZGUvbGludXgvc2VtLmgKaW5kZXggOTc2Y2UzYTE5ZjFiLi5kMGVmZDZlNmMy MGEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc2VtLmgKKysrIGIvaW5jbHVkZS9saW51eC9z ZW0uaApAQCAtMjEsNiArMjEsNyBAQCBzdHJ1Y3Qgc2VtX2FycmF5IHsKIAlzdHJ1Y3QgbGlzdF9o ZWFkCWxpc3RfaWQ7CS8qIHVuZG8gcmVxdWVzdHMgb24gdGhpcyBhcnJheSAqLwogCWludAkJCXNl bV9uc2VtczsJLyogbm8uIG9mIHNlbWFwaG9yZXMgaW4gYXJyYXkgKi8KIAlpbnQJCQljb21wbGV4 X2NvdW50OwkvKiBwZW5kaW5nIGNvbXBsZXggb3BlcmF0aW9ucyAqLworCWJvb2wJCQljb21wbGV4 X21vZGU7CS8qIG5vIHBhcmFsbGVsIHNpbXBsZSBvcHMgKi8KIH07CiAKICNpZmRlZiBDT05GSUdf U1lTVklQQwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zdW5ycGMvc3ZjX3JkbWEuaCBiL2lu Y2x1ZGUvbGludXgvc3VucnBjL3N2Y19yZG1hLmgKaW5kZXggNWNmOTlhMDE2MzY4Li40NWE2OTQx MWRhZmMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc3VucnBjL3N2Y19yZG1hLmgKKysrIGIv aW5jbHVkZS9saW51eC9zdW5ycGMvc3ZjX3JkbWEuaApAQCAtODMsNiArODMsNyBAQCBzdHJ1Y3Qg c3ZjX3JkbWFfb3BfY3R4dCB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAllbnVtIGRtYV9kYXRh X2RpcmVjdGlvbiBkaXJlY3Rpb247CiAJaW50IGNvdW50OworCXVuc2lnbmVkIGludCBtYXBwZWRf c2dlczsKIAlzdHJ1Y3QgaWJfc2dlIHNnZVtSUENTVkNfTUFYUEFHRVNdOwogCXN0cnVjdCBwYWdl ICpwYWdlc1tSUENTVkNfTUFYUEFHRVNdOwogfTsKQEAgLTE3OCw2ICsxNzksMTQgQEAgc3RydWN0 IHN2Y3hwcnRfcmRtYSB7CiAjZGVmaW5lIFJQQ1JETUFfTUFYX1JFUVVFU1RTICAgIDE2CiAjZGVm aW5lIFJQQ1JETUFfTUFYX1JFUV9TSVpFICAgIDQwOTYKIAorLyogVHJhY2sgRE1BIG1hcHMgZm9y IHRoaXMgdHJhbnNwb3J0IGFuZCBjb250ZXh0ICovCitzdGF0aWMgaW5saW5lIHZvaWQgc3ZjX3Jk bWFfY291bnRfbWFwcGluZ3Moc3RydWN0IHN2Y3hwcnRfcmRtYSAqcmRtYSwKKwkJCQkJICAgc3Ry dWN0IHN2Y19yZG1hX29wX2N0eHQgKmN0eHQpCit7CisJY3R4dC0+bWFwcGVkX3NnZXMrKzsKKwlh dG9taWNfaW5jKCZyZG1hLT5zY19kbWFfdXNlZCk7Cit9CisKIC8qIHN2Y19yZG1hX21hcnNoYWwu YyAqLwogZXh0ZXJuIHZvaWQgc3ZjX3JkbWFfcmNsX2NodW5rX2NvdW50cyhzdHJ1Y3QgcnBjcmRt YV9yZWFkX2NodW5rICosCiAJCQkJICAgICAgaW50ICosIGludCAqKTsKZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvbmV0L2lwNl90dW5uZWwuaCBiL2luY2x1ZGUvbmV0L2lwNl90dW5uZWwuaAppbmRleCBl Zjk1NTc2ODNmZWMuLmUyZTY4MGMwMmZmMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvaXA2X3R1 bm5lbC5oCisrKyBiL2luY2x1ZGUvbmV0L2lwNl90dW5uZWwuaApAQCAtNzUsNiArNzUsNyBAQCBz dGF0aWMgaW5saW5lIHZvaWQgaXA2dHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3Ry dWN0IG5ldF9kZXZpY2UgKmRldikKIAlzdHJ1Y3QgbmV0X2RldmljZV9zdGF0cyAqc3RhdHMgPSAm ZGV2LT5zdGF0czsKIAlpbnQgcGt0X2xlbiwgZXJyOwogCisJbWVtc2V0KHNrYi0+Y2IsIDAsIHNp emVvZihzdHJ1Y3QgaW5ldDZfc2tiX3Bhcm0pKTsKIAlwa3RfbGVuID0gc2tiLT5sZW47CiAJZXJy ID0gaXA2X2xvY2FsX291dChza2IpOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9uZXRmaWx0 ZXIvbmZfdGFibGVzLmggYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmgKaW5kZXgg YzRkODYxOThkM2Q2Li4yNDA5NzAyN2M1ZDMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L25ldGZp bHRlci9uZl90YWJsZXMuaAorKysgYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzLmgK QEAgLTExMyw2ICsxMTMsNyBAQCBzdGF0aWMgaW5saW5lIGVudW0gbmZ0X3JlZ2lzdGVycyBuZnRf dHlwZV90b19yZWcoZW51bSBuZnRfZGF0YV90eXBlcyB0eXBlKQogCXJldHVybiB0eXBlID09IE5G VF9EQVRBX1ZFUkRJQ1QgPyBORlRfUkVHX1ZFUkRJQ1QgOiBORlRfUkVHXzE7CiB9CiAKK2ludCBu ZnRfcGFyc2VfdTMyX2NoZWNrKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsIGludCBtYXgsIHUz MiAqZGVzdCk7CiBpbnQgbmZ0X3ZhbGlkYXRlX2lucHV0X3JlZ2lzdGVyKGVudW0gbmZ0X3JlZ2lz dGVycyByZWcpOwogaW50IG5mdF92YWxpZGF0ZV9vdXRwdXRfcmVnaXN0ZXIoZW51bSBuZnRfcmVn aXN0ZXJzIHJlZyk7CiBpbnQgbmZ0X3ZhbGlkYXRlX2RhdGFfbG9hZChjb25zdCBzdHJ1Y3QgbmZ0 X2N0eCAqY3R4LCBlbnVtIG5mdF9yZWdpc3RlcnMgcmVnLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9u ZXQvc29jay5oIGIvaW5jbHVkZS9uZXQvc29jay5oCmluZGV4IDJiMjk2MGZjYzg3OC4uMDdlZGU5 NTU5NmJiIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9zb2NrLmgKKysrIGIvaW5jbHVkZS9uZXQv c29jay5oCkBAIC0xNjY5LDcgKzE2NjksMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIHNvY2tfcHV0 KHN0cnVjdCBzb2NrICpzaykKICAqLwogdm9pZCBzb2NrX2dlbl9wdXQoc3RydWN0IHNvY2sgKnNr KTsKIAotaW50IHNrX3JlY2VpdmVfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYg KnNrYiwgY29uc3QgaW50IG5lc3RlZCk7CitpbnQgX19za19yZWNlaXZlX3NrYihzdHJ1Y3Qgc29j ayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IGludCBuZXN0ZWQsCisJCSAgICAgdW5z aWduZWQgaW50IHRyaW1fY2FwKTsKK3N0YXRpYyBpbmxpbmUgaW50IHNrX3JlY2VpdmVfc2tiKHN0 cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKKwkJCQkgY29uc3QgaW50IG5lc3Rl ZCkKK3sKKwlyZXR1cm4gX19za19yZWNlaXZlX3NrYihzaywgc2tiLCBuZXN0ZWQsIDEpOworfQog CiBzdGF0aWMgaW5saW5lIHZvaWQgc2tfdHhfcXVldWVfc2V0KHN0cnVjdCBzb2NrICpzaywgaW50 IHR4X3F1ZXVlKQogewpAQCAtMjAyNiw2ICsyMDMyLDcgQEAgdm9pZCBza19yZXNldF90aW1lcihz dHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lciwKIAogdm9pZCBza19zdG9w X3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyKTsKIAoraW50 IF9fc29ja19xdWV1ZV9yY3Zfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNr Yik7CiBpbnQgc29ja19xdWV1ZV9yY3Zfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1 ZmYgKnNrYik7CiAKIGludCBzb2NrX3F1ZXVlX2Vycl9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1 Y3Qgc2tfYnVmZiAqc2tiKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjcC5oIGIvaW5jbHVk ZS9uZXQvdGNwLmgKaW5kZXggNjBlMmRjNWNlZjI2Li5jZWFhMDNmZGNjZjIgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvbmV0L3RjcC5oCisrKyBiL2luY2x1ZGUvbmV0L3RjcC5oCkBAIC0xMDUzLDYgKzEw NTMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdGNwX3ByZXF1ZXVlX2luaXQoc3RydWN0IHRjcF9z b2NrICp0cCkKIH0KIAogYm9vbCB0Y3BfcHJlcXVldWUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qg c2tfYnVmZiAqc2tiKTsKK2ludCB0Y3BfZmlsdGVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNr X2J1ZmYgKnNrYik7CiAKICN1bmRlZiBTVEFURV9UUkFDRQogCmRpZmYgLS1naXQgYS9pbmNsdWRl L3RhcmdldC90YXJnZXRfY29yZV9iYXNlLmggYi9pbmNsdWRlL3RhcmdldC90YXJnZXRfY29yZV9i YXNlLmgKaW5kZXggZTE5M2U1ZDVhZTU4Li41Yzc1NWE4NTYzMGIgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvdGFyZ2V0L3RhcmdldF9jb3JlX2Jhc2UuaAorKysgYi9pbmNsdWRlL3RhcmdldC90YXJnZXRf Y29yZV9iYXNlLmgKQEAgLTIxMSw2ICsyMTEsNyBAQCBlbnVtIHRjbV9zZW5zZV9yZWFzb25fdGFi bGUgewogCVRDTV9MT0dJQ0FMX0JMT0NLX0dVQVJEX0NIRUNLX0ZBSUxFRAk9IFIoMHgxNSksCiAJ VENNX0xPR0lDQUxfQkxPQ0tfQVBQX1RBR19DSEVDS19GQUlMRUQJPSBSKDB4MTYpLAogCVRDTV9M T0dJQ0FMX0JMT0NLX1JFRl9UQUdfQ0hFQ0tfRkFJTEVECT0gUigweDE3KSwKKwlUQ01fQ09QWV9U QVJHRVRfREVWSUNFX05PVF9SRUFDSEFCTEUJPSBSKDB4MTgpLAogI3VuZGVmIFIKIH07CiAKZGlm ZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9jYW4uaCBiL2luY2x1ZGUvdWFwaS9saW51eC9j YW4uaAppbmRleCA0MTg5MmY3MjAwNTcuLjU0Y2ZjNGQ5Mjg4MyAxMDA2NDQKLS0tIGEvaW5jbHVk ZS91YXBpL2xpbnV4L2Nhbi5oCisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9jYW4uaApAQCAtMTkw LDUgKzE5MCw2IEBAIHN0cnVjdCBjYW5fZmlsdGVyIHsKIH07CiAKICNkZWZpbmUgQ0FOX0lOVl9G SUxURVIgMHgyMDAwMDAwMFUgLyogdG8gYmUgc2V0IGluIGNhbl9maWx0ZXIuY2FuX2lkICovCisj ZGVmaW5lIENBTl9SQVdfRklMVEVSX01BWCA1MTIgLyogbWF4aW11bSBudW1iZXIgb2YgY2FuX2Zp bHRlciBzZXQgdmlhIHNldHNvY2tvcHQoKSAqLwogCiAjZW5kaWYgLyogIV9VQVBJX0NBTl9IICov CmRpZmYgLS1naXQgYS9pcGMvbXNnLmMgYi9pcGMvbXNnLmMKaW5kZXggMDJlNzJkM2RiNDk4Li5j ODA0ZTExYmNiZjYgMTAwNjQ0Ci0tLSBhL2lwYy9tc2cuYworKysgYi9pcGMvbXNnLmMKQEAgLTEw NDYsMjIgKzEwNDYsMjQgQEAgc3RhdGljIGludCBzeXN2aXBjX21zZ19wcm9jX3Nob3coc3RydWN0 IHNlcV9maWxlICpzLCB2b2lkICppdCkKIAlzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKnVzZXJfbnMg PSBzZXFfdXNlcl9ucyhzKTsKIAlzdHJ1Y3QgbXNnX3F1ZXVlICptc3EgPSBpdDsKIAotCXJldHVy biBzZXFfcHJpbnRmKHMsCi0JCQkiJTEwZCAlMTBkICAlNG8gICUxMGx1ICUxMGx1ICU1dSAlNXUg JTV1ICU1dSAlNXUgJTV1ICUxMGx1ICUxMGx1ICUxMGx1XG4iLAotCQkJbXNxLT5xX3Blcm0ua2V5 LAotCQkJbXNxLT5xX3Blcm0uaWQsCi0JCQltc3EtPnFfcGVybS5tb2RlLAotCQkJbXNxLT5xX2Ni eXRlcywKLQkJCW1zcS0+cV9xbnVtLAotCQkJbXNxLT5xX2xzcGlkLAotCQkJbXNxLT5xX2xycGlk LAotCQkJZnJvbV9rdWlkX211bmdlZCh1c2VyX25zLCBtc3EtPnFfcGVybS51aWQpLAotCQkJZnJv bV9rZ2lkX211bmdlZCh1c2VyX25zLCBtc3EtPnFfcGVybS5naWQpLAotCQkJZnJvbV9rdWlkX211 bmdlZCh1c2VyX25zLCBtc3EtPnFfcGVybS5jdWlkKSwKLQkJCWZyb21fa2dpZF9tdW5nZWQodXNl cl9ucywgbXNxLT5xX3Blcm0uY2dpZCksCi0JCQltc3EtPnFfc3RpbWUsCi0JCQltc3EtPnFfcnRp bWUsCi0JCQltc3EtPnFfY3RpbWUpOworCXNlcV9wcmludGYocywKKwkJICAgIiUxMGQgJTEwZCAg JTRvICAlMTBsdSAlMTBsdSAlNXUgJTV1ICU1dSAlNXUgJTV1ICU1dSAlMTBsdSAlMTBsdSAlMTBs dVxuIiwKKwkJICAgbXNxLT5xX3Blcm0ua2V5LAorCQkgICBtc3EtPnFfcGVybS5pZCwKKwkJICAg bXNxLT5xX3Blcm0ubW9kZSwKKwkJICAgbXNxLT5xX2NieXRlcywKKwkJICAgbXNxLT5xX3FudW0s CisJCSAgIG1zcS0+cV9sc3BpZCwKKwkJICAgbXNxLT5xX2xycGlkLAorCQkgICBmcm9tX2t1aWRf bXVuZ2VkKHVzZXJfbnMsIG1zcS0+cV9wZXJtLnVpZCksCisJCSAgIGZyb21fa2dpZF9tdW5nZWQo dXNlcl9ucywgbXNxLT5xX3Blcm0uZ2lkKSwKKwkJICAgZnJvbV9rdWlkX211bmdlZCh1c2VyX25z LCBtc3EtPnFfcGVybS5jdWlkKSwKKwkJICAgZnJvbV9rZ2lkX211bmdlZCh1c2VyX25zLCBtc3Et PnFfcGVybS5jZ2lkKSwKKwkJICAgbXNxLT5xX3N0aW1lLAorCQkgICBtc3EtPnFfcnRpbWUsCisJ CSAgIG1zcS0+cV9jdGltZSk7CisKKwlyZXR1cm4gMDsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg YS9pcGMvc2VtLmMgYi9pcGMvc2VtLmMKaW5kZXggZmIwYzRjOTZlNTBhLi5lMjg5ZmE4MzhhMjAg MTAwNjQ0Ci0tLSBhL2lwYy9zZW0uYworKysgYi9pcGMvc2VtLmMKQEAgLTE1NSwxNCArMTU1LDIx IEBAIHN0YXRpYyBpbnQgc3lzdmlwY19zZW1fcHJvY19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywg dm9pZCAqaXQpOwogCiAvKgogICogTG9ja2luZzoKKyAqIGEpIGdsb2JhbCBzZW1fbG9jaygpIGZv ciByZWFkL3dyaXRlCiAgKglzZW1fdW5kby5pZF9uZXh0LAogICoJc2VtX2FycmF5LmNvbXBsZXhf Y291bnQsCi0gKglzZW1fYXJyYXkucGVuZGluZ3tfYWx0ZXIsX2NvbnR9LAotICoJc2VtX2FycmF5 LnNlbV91bmRvOiBnbG9iYWwgc2VtX2xvY2soKSBmb3IgcmVhZC93cml0ZQotICoJc2VtX3VuZG8u cHJvY19uZXh0OiBvbmx5ICJjdXJyZW50IiBpcyBhbGxvd2VkIHRvIHJlYWQvd3JpdGUgdGhhdCBm aWVsZC4KKyAqCXNlbV9hcnJheS5jb21wbGV4X21vZGUKKyAqCXNlbV9hcnJheS5wZW5kaW5ne19h bHRlcixfY29uc3R9LAorICoJc2VtX2FycmF5LnNlbV91bmRvCiAgKgorICogYikgZ2xvYmFsIG9y IHNlbWFwaG9yZSBzZW1fbG9jaygpIGZvciByZWFkL3dyaXRlOgogICoJc2VtX2FycmF5LnNlbV9i YXNlW2ldLnBlbmRpbmdfe2NvbnN0LGFsdGVyfToKLSAqCQlnbG9iYWwgb3Igc2VtYXBob3JlIHNl bV9sb2NrKCkgZm9yIHJlYWQvd3JpdGUKKyAqCXNlbV9hcnJheS5jb21wbGV4X21vZGUgKGZvciBy ZWFkKQorICoKKyAqIGMpIHNwZWNpYWw6CisgKglzZW1fdW5kb19saXN0Lmxpc3RfcHJvYzoKKyAq CSogdW5kb19saXN0LT5sb2NrIGZvciB3cml0ZQorICoJKiByY3UgZm9yIHJlYWQKICAqLwogCiAj ZGVmaW5lIHNjX3NlbW1zbAlzZW1fY3Rsc1swXQpAQCAtMjYzLDMyICsyNzAsNjIgQEAgc3RhdGlj IHZvaWQgc2VtX3JjdV9mcmVlKHN0cnVjdCByY3VfaGVhZCAqaGVhZCkKICNkZWZpbmUgaXBjX3Nt cF9hY3F1aXJlX19hZnRlcl9zcGluX2lzX3VubG9ja2VkKCkJc21wX3JtYigpCiAKIC8qCi0gKiBX YWl0IHVudGlsIGFsbCBjdXJyZW50bHkgb25nb2luZyBzaW1wbGUgb3BzIGhhdmUgY29tcGxldGVk LgorICogRW50ZXIgdGhlIG1vZGUgc3VpdGFibGUgZm9yIG5vbi1zaW1wbGUgb3BlcmF0aW9uczoK ICAqIENhbGxlciBtdXN0IG93biBzZW1fcGVybS5sb2NrLgotICogTmV3IHNpbXBsZSBvcHMgY2Fu bm90IHN0YXJ0LCBiZWNhdXNlIHNpbXBsZSBvcHMgZmlyc3QgY2hlY2sKLSAqIHRoYXQgc2VtX3Bl cm0ubG9jayBpcyBmcmVlLgotICogdGhhdCBhKSBzZW1fcGVybS5sb2NrIGlzIGZyZWUgYW5kIGIp IGNvbXBsZXhfY291bnQgaXMgMC4KICAqLwotc3RhdGljIHZvaWQgc2VtX3dhaXRfYXJyYXkoc3Ry dWN0IHNlbV9hcnJheSAqc21hKQorc3RhdGljIHZvaWQgY29tcGxleG1vZGVfZW50ZXIoc3RydWN0 IHNlbV9hcnJheSAqc21hKQogewogCWludCBpOwogCXN0cnVjdCBzZW0gKnNlbTsKIAotCWlmIChz bWEtPmNvbXBsZXhfY291bnQpICB7Ci0JCS8qIFRoZSB0aHJlYWQgdGhhdCBpbmNyZWFzZWQgc21h LT5jb21wbGV4X2NvdW50IHdhaXRlZCBvbgotCQkgKiBhbGwgc2VtLT5sb2NrIGxvY2tzLiBUaHVz IHdlIGRvbid0IG5lZWQgdG8gd2FpdCBhZ2Fpbi4KLQkJICovCisJaWYgKHNtYS0+Y29tcGxleF9t b2RlKSAgeworCQkvKiBXZSBhcmUgYWxyZWFkeSBpbiBjb21wbGV4X21vZGUuIE5vdGhpbmcgdG8g ZG8gKi8KIAkJcmV0dXJuOwogCX0KIAorCS8qIFdlIG5lZWQgYSBmdWxsIGJhcnJpZXIgYWZ0ZXIg c2V0aW5nIGNvbXBsZXhfbW9kZToKKwkgKiBUaGUgd3JpdGUgdG8gY29tcGxleF9tb2RlIG11c3Qg YmUgdmlzaWJsZQorCSAqIGJlZm9yZSB3ZSByZWFkIHRoZSBmaXJzdCBzZW0tPmxvY2sgc3Bpbmxv Y2sgc3RhdGUuCisJICovCisJc2V0X21iKHNtYS0+Y29tcGxleF9tb2RlLCB0cnVlKTsKKwogCWZv ciAoaSA9IDA7IGkgPCBzbWEtPnNlbV9uc2VtczsgaSsrKSB7CiAJCXNlbSA9IHNtYS0+c2VtX2Jh c2UgKyBpOwogCQlzcGluX3VubG9ja193YWl0KCZzZW0tPmxvY2spOwogCX0KLQlpcGNfc21wX2Fj cXVpcmVfX2FmdGVyX3NwaW5faXNfdW5sb2NrZWQoKTsKKwkvKgorCSAqIHNwaW5fdW5sb2NrX3dh aXQoKSBpcyBub3QgYSBtZW1vcnkgYmFycmllcnMsIGl0IGlzIG9ubHkgYQorCSAqIGNvbnRyb2wg YmFycmllci4gVGhlIGNvZGUgbXVzdCBwYWlyIHdpdGggc3Bpbl91bmxvY2soJnNlbS0+bG9jayks CisJICogdGh1cyBqdXN0IHRoZSBjb250cm9sIGJhcnJpZXIgaXMgaW5zdWZmaWNpZW50LgorCSAq CisJICogc21wX3JtYigpIGlzIHN1ZmZpY2llbnQsIGFzIHdyaXRlcyBjYW5ub3QgcGFzcyB0aGUg Y29udHJvbCBiYXJyaWVyLgorCSAqLworCXNtcF9ybWIoKTsKIH0KIAogLyoKKyAqIFRyeSB0byBs ZWF2ZSB0aGUgbW9kZSB0aGF0IGRpc2FsbG93cyBzaW1wbGUgb3BlcmF0aW9uczoKKyAqIENhbGxl ciBtdXN0IG93biBzZW1fcGVybS5sb2NrLgorICovCitzdGF0aWMgdm9pZCBjb21wbGV4bW9kZV90 cnlsZWF2ZShzdHJ1Y3Qgc2VtX2FycmF5ICpzbWEpCit7CisJaWYgKHNtYS0+Y29tcGxleF9jb3Vu dCkgIHsKKwkJLyogQ29tcGxleCBvcHMgYXJlIHNsZWVwaW5nLgorCQkgKiBXZSBtdXN0IHN0YXkg aW4gY29tcGxleCBtb2RlCisJCSAqLworCQlyZXR1cm47CisJfQorCS8qCisJICogSW1tZWRpYXRl bHkgYWZ0ZXIgc2V0dGluZyBjb21wbGV4X21vZGUgdG8gZmFsc2UsCisJICogYSBzaW1wbGUgb3Ag Y2FuIHN0YXJ0LiBUaHVzOiBhbGwgbWVtb3J5IHdyaXRlcworCSAqIHBlcmZvcm1lZCBieSB0aGUg Y3VycmVudCBvcGVyYXRpb24gbXVzdCBiZSB2aXNpYmxlCisJICogYmVmb3JlIHdlIHNldCBjb21w bGV4X21vZGUgdG8gZmFsc2UuCisJICovCisJc21wX3N0b3JlX3JlbGVhc2UoJnNtYS0+Y29tcGxl eF9tb2RlLCBmYWxzZSk7Cit9CisKKyNkZWZpbmUgU0VNX0dMT0JBTF9MT0NLCSgtMSkKKy8qCiAg KiBJZiB0aGUgcmVxdWVzdCBjb250YWlucyBvbmx5IG9uZSBzZW1hcGhvcmUgb3BlcmF0aW9uLCBh bmQgdGhlcmUgYXJlCiAgKiBubyBjb21wbGV4IHRyYW5zYWN0aW9ucyBwZW5kaW5nLCBsb2NrIG9u bHkgdGhlIHNlbWFwaG9yZSBpbnZvbHZlZC4KICAqIE90aGVyd2lzZSwgbG9jayB0aGUgZW50aXJl IHNlbWFwaG9yZSBhcnJheSwgc2luY2Ugd2UgZWl0aGVyIGhhdmUKQEAgLTMwNCw1NiArMzQxLDQy IEBAIHN0YXRpYyBpbmxpbmUgaW50IHNlbV9sb2NrKHN0cnVjdCBzZW1fYXJyYXkgKnNtYSwgc3Ry dWN0IHNlbWJ1ZiAqc29wcywKIAkJLyogQ29tcGxleCBvcGVyYXRpb24gLSBhY3F1aXJlIGEgZnVs bCBsb2NrICovCiAJCWlwY19sb2NrX29iamVjdCgmc21hLT5zZW1fcGVybSk7CiAKLQkJLyogQW5k IHdhaXQgdW50aWwgYWxsIHNpbXBsZSBvcHMgdGhhdCBhcmUgcHJvY2Vzc2VkCi0JCSAqIHJpZ2h0 IG5vdyBoYXZlIGRyb3BwZWQgdGhlaXIgbG9ja3MuCi0JCSAqLwotCQlzZW1fd2FpdF9hcnJheShz bWEpOwotCQlyZXR1cm4gLTE7CisJCS8qIFByZXZlbnQgcGFyYWxsZWwgc2ltcGxlIG9wcyAqLwor CQljb21wbGV4bW9kZV9lbnRlcihzbWEpOworCQlyZXR1cm4gU0VNX0dMT0JBTF9MT0NLOwogCX0K IAogCS8qCiAJICogT25seSBvbmUgc2VtYXBob3JlIGFmZmVjdGVkIC0gdHJ5IHRvIG9wdGltaXpl IGxvY2tpbmcuCi0JICogVGhlIHJ1bGVzIGFyZToKLQkgKiAtIG9wdGltaXplZCBsb2NraW5nIGlz IHBvc3NpYmxlIGlmIG5vIGNvbXBsZXggb3BlcmF0aW9uCi0JICogICBpcyBlaXRoZXIgZW5xdWV1 ZWQgb3IgcHJvY2Vzc2VkIHJpZ2h0IG5vdy4KLQkgKiAtIFRoZSB0ZXN0IGZvciBlbnF1ZXVlZCBj b21wbGV4IG9wcyBpcyBzaW1wbGU6Ci0JICogICAgICBzbWEtPmNvbXBsZXhfY291bnQgIT0gMAot CSAqIC0gVGVzdGluZyBmb3IgY29tcGxleCBvcHMgdGhhdCBhcmUgcHJvY2Vzc2VkIHJpZ2h0IG5v dyBpcwotCSAqICAgYSBiaXQgbW9yZSBkaWZmaWN1bHQuIENvbXBsZXggb3BzIGFjcXVpcmUgdGhl IGZ1bGwgbG9jawotCSAqICAgYW5kIGZpcnN0IHdhaXQgdGhhdCB0aGUgcnVubmluZyBzaW1wbGUg b3BzIGhhdmUgY29tcGxldGVkLgotCSAqICAgKHNlZSBhYm92ZSkKLQkgKiAgIFRodXM6IElmIHdl IG93biBhIHNpbXBsZSBsb2NrIGFuZCB0aGUgZ2xvYmFsIGxvY2sgaXMgZnJlZQotCSAqCWFuZCBj b21wbGV4X2NvdW50IGlzIG5vdyAwLCB0aGVuIGl0IHdpbGwgc3RheSAwIGFuZAotCSAqCXRodXMg anVzdCBsb2NraW5nIHNlbS0+bG9jayBpcyBzdWZmaWNpZW50LgorCSAqIE9wdGltaXplZCBsb2Nr aW5nIGlzIHBvc3NpYmxlIGlmIG5vIGNvbXBsZXggb3BlcmF0aW9uCisJICogaXMgZWl0aGVyIGVu cXVldWVkIG9yIHByb2Nlc3NlZCByaWdodCBub3cuCisJICoKKwkgKiBCb3RoIGZhY3RzIGFyZSB0 cmFja2VkIGJ5IGNvbXBsZXhfbW9kZS4KIAkgKi8KIAlzZW0gPSBzbWEtPnNlbV9iYXNlICsgc29w cy0+c2VtX251bTsKIAotCWlmIChzbWEtPmNvbXBsZXhfY291bnQgPT0gMCkgeworCS8qCisJICog SW5pdGlhbCBjaGVjayBmb3IgY29tcGxleF9tb2RlLiBKdXN0IGFuIG9wdGltaXphdGlvbiwKKwkg KiBubyBsb2NraW5nLCBubyBtZW1vcnkgYmFycmllci4KKwkgKi8KKwlpZiAoIXNtYS0+Y29tcGxl eF9tb2RlKSB7CiAJCS8qCiAJCSAqIEl0IGFwcGVhcnMgdGhhdCBubyBjb21wbGV4IG9wZXJhdGlv biBpcyBhcm91bmQuCiAJCSAqIEFjcXVpcmUgdGhlIHBlci1zZW1hcGhvcmUgbG9jay4KIAkJICov CiAJCXNwaW5fbG9jaygmc2VtLT5sb2NrKTsKIAotCQkvKiBUaGVuIGNoZWNrIHRoYXQgdGhlIGds b2JhbCBsb2NrIGlzIGZyZWUgKi8KLQkJaWYgKCFzcGluX2lzX2xvY2tlZCgmc21hLT5zZW1fcGVy bS5sb2NrKSkgewotCQkJLyoKLQkJCSAqIFdlIG5lZWQgYSBtZW1vcnkgYmFycmllciB3aXRoIGFj cXVpcmUgc2VtYW50aWNzLAotCQkJICogb3RoZXJ3aXNlIHdlIGNhbiByYWNlIHdpdGggYW5vdGhl ciB0aHJlYWQgdGhhdCBkb2VzOgotCQkJICoJY29tcGxleF9jb3VudCsrOwotCQkJICoJc3Bpbl91 bmxvY2soc2VtX3Blcm0ubG9jayk7Ci0JCQkgKi8KLQkJCWlwY19zbXBfYWNxdWlyZV9fYWZ0ZXJf c3Bpbl9pc191bmxvY2tlZCgpOworCQkvKgorCQkgKiBTZWUgNTFkN2Q1MjA1ZDMzCisJCSAqICgi cG93ZXJwYzogQWRkIHNtcF9tYigpIHRvIGFyY2hfc3Bpbl9pc19sb2NrZWQoKSIpOgorCQkgKiBB IGZ1bGwgYmFycmllciBpcyByZXF1aXJlZDogdGhlIHdyaXRlIG9mIHNlbS0+bG9jaworCQkgKiBt dXN0IGJlIHZpc2libGUgYmVmb3JlIHRoZSByZWFkIGlzIGV4ZWN1dGVkCisJCSAqLworCQlzbXBf bWIoKTsKIAotCQkJLyoKLQkJCSAqIE5vdyByZXBlYXQgdGhlIHRlc3Qgb2YgY29tcGxleF9jb3Vu dDoKLQkJCSAqIEl0IGNhbid0IGNoYW5nZSBhbnltb3JlIHVudGlsIHdlIGRyb3Agc2VtLT5sb2Nr LgotCQkJICogVGh1czogaWYgaXMgbm93IDAsIHRoZW4gaXQgd2lsbCBzdGF5IDAuCi0JCQkgKi8K LQkJCWlmIChzbWEtPmNvbXBsZXhfY291bnQgPT0gMCkgewotCQkJCS8qIGZhc3QgcGF0aCBzdWNj ZXNzZnVsISAqLwotCQkJCXJldHVybiBzb3BzLT5zZW1fbnVtOwotCQkJfQorCQlpZiAoIXNtcF9s b2FkX2FjcXVpcmUoJnNtYS0+Y29tcGxleF9tb2RlKSkgeworCQkJLyogZmFzdCBwYXRoIHN1Y2Nl c3NmdWwhICovCisJCQlyZXR1cm4gc29wcy0+c2VtX251bTsKIAkJfQogCQlzcGluX3VubG9jaygm c2VtLT5sb2NrKTsKIAl9CkBAIC0zNzMsMTUgKzM5NiwxNiBAQCBzdGF0aWMgaW5saW5lIGludCBz ZW1fbG9jayhzdHJ1Y3Qgc2VtX2FycmF5ICpzbWEsIHN0cnVjdCBzZW1idWYgKnNvcHMsCiAJCS8q IE5vdCBhIGZhbHNlIGFsYXJtLCB0aHVzIGNvbXBsZXRlIHRoZSBzZXF1ZW5jZSBmb3IgYQogCQkg KiBmdWxsIGxvY2suCiAJCSAqLwotCQlzZW1fd2FpdF9hcnJheShzbWEpOwotCQlyZXR1cm4gLTE7 CisJCWNvbXBsZXhtb2RlX2VudGVyKHNtYSk7CisJCXJldHVybiBTRU1fR0xPQkFMX0xPQ0s7CiAJ fQogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgc2VtX3VubG9jayhzdHJ1Y3Qgc2VtX2FycmF5ICpz bWEsIGludCBsb2NrbnVtKQogewotCWlmIChsb2NrbnVtID09IC0xKSB7CisJaWYgKGxvY2tudW0g PT0gU0VNX0dMT0JBTF9MT0NLKSB7CiAJCXVubWVyZ2VfcXVldWVzKHNtYSk7CisJCWNvbXBsZXht b2RlX3RyeWxlYXZlKHNtYSk7CiAJCWlwY191bmxvY2tfb2JqZWN0KCZzbWEtPnNlbV9wZXJtKTsK IAl9IGVsc2UgewogCQlzdHJ1Y3Qgc2VtICpzZW0gPSBzbWEtPnNlbV9iYXNlICsgbG9ja251bTsK QEAgLTUzMyw2ICs1NTcsNyBAQCBzdGF0aWMgaW50IG5ld2FyeShzdHJ1Y3QgaXBjX25hbWVzcGFj ZSAqbnMsIHN0cnVjdCBpcGNfcGFyYW1zICpwYXJhbXMpCiAJfQogCiAJc21hLT5jb21wbGV4X2Nv dW50ID0gMDsKKwlzbWEtPmNvbXBsZXhfbW9kZSA9IHRydWU7IC8qIGRyb3BwZWQgYnkgc2VtX3Vu bG9jayBiZWxvdyAqLwogCUlOSVRfTElTVF9IRUFEKCZzbWEtPnBlbmRpbmdfYWx0ZXIpOwogCUlO SVRfTElTVF9IRUFEKCZzbWEtPnBlbmRpbmdfY29uc3QpOwogCUlOSVRfTElTVF9IRUFEKCZzbWEt Pmxpc3RfaWQpOwpAQCAtMjE4NCwyNCArMjIwOSwyOCBAQCBzdGF0aWMgaW50IHN5c3ZpcGNfc2Vt X3Byb2Nfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKml0KQogCS8qCiAJICogVGhlIHBy b2MgaW50ZXJmYWNlIGlzbid0IGF3YXJlIG9mIHNlbV9sb2NrKCksIGl0IGNhbGxzCiAJICogaXBj X2xvY2tfb2JqZWN0KCkgZGlyZWN0bHkgKGluIHN5c3ZpcGNfZmluZF9pcGMpLgotCSAqIEluIG9y ZGVyIHRvIHN0YXkgY29tcGF0aWJsZSB3aXRoIHNlbV9sb2NrKCksIHdlIG11c3Qgd2FpdCB1bnRp bAotCSAqIGFsbCBzaW1wbGUgc2Vtb3AoKSBjYWxscyBoYXZlIGxlZnQgdGhlaXIgY3JpdGljYWwg cmVnaW9ucy4KKwkgKiBJbiBvcmRlciB0byBzdGF5IGNvbXBhdGlibGUgd2l0aCBzZW1fbG9jaygp LCB3ZSBtdXN0CisJICogZW50ZXIgLyBsZWF2ZSBjb21wbGV4X21vZGUuCiAJICovCi0Jc2VtX3dh aXRfYXJyYXkoc21hKTsKKwljb21wbGV4bW9kZV9lbnRlcihzbWEpOwogCiAJc2VtX290aW1lID0g Z2V0X3NlbW90aW1lKHNtYSk7CiAKLQlyZXR1cm4gc2VxX3ByaW50ZihzLAotCQkJICAiJTEwZCAl MTBkICAlNG8gJTEwdSAlNXUgJTV1ICU1dSAlNXUgJTEwbHUgJTEwbHVcbiIsCi0JCQkgIHNtYS0+ c2VtX3Blcm0ua2V5LAotCQkJICBzbWEtPnNlbV9wZXJtLmlkLAotCQkJICBzbWEtPnNlbV9wZXJt Lm1vZGUsCi0JCQkgIHNtYS0+c2VtX25zZW1zLAotCQkJICBmcm9tX2t1aWRfbXVuZ2VkKHVzZXJf bnMsIHNtYS0+c2VtX3Blcm0udWlkKSwKLQkJCSAgZnJvbV9rZ2lkX211bmdlZCh1c2VyX25zLCBz bWEtPnNlbV9wZXJtLmdpZCksCi0JCQkgIGZyb21fa3VpZF9tdW5nZWQodXNlcl9ucywgc21hLT5z ZW1fcGVybS5jdWlkKSwKLQkJCSAgZnJvbV9rZ2lkX211bmdlZCh1c2VyX25zLCBzbWEtPnNlbV9w ZXJtLmNnaWQpLAotCQkJICBzZW1fb3RpbWUsCi0JCQkgIHNtYS0+c2VtX2N0aW1lKTsKKwlzZXFf cHJpbnRmKHMsCisJCSAgICIlMTBkICUxMGQgICU0byAlMTB1ICU1dSAlNXUgJTV1ICU1dSAlMTBs dSAlMTBsdVxuIiwKKwkJICAgc21hLT5zZW1fcGVybS5rZXksCisJCSAgIHNtYS0+c2VtX3Blcm0u aWQsCisJCSAgIHNtYS0+c2VtX3Blcm0ubW9kZSwKKwkJICAgc21hLT5zZW1fbnNlbXMsCisJCSAg IGZyb21fa3VpZF9tdW5nZWQodXNlcl9ucywgc21hLT5zZW1fcGVybS51aWQpLAorCQkgICBmcm9t X2tnaWRfbXVuZ2VkKHVzZXJfbnMsIHNtYS0+c2VtX3Blcm0uZ2lkKSwKKwkJICAgZnJvbV9rdWlk X211bmdlZCh1c2VyX25zLCBzbWEtPnNlbV9wZXJtLmN1aWQpLAorCQkgICBmcm9tX2tnaWRfbXVu Z2VkKHVzZXJfbnMsIHNtYS0+c2VtX3Blcm0uY2dpZCksCisJCSAgIHNlbV9vdGltZSwKKwkJICAg c21hLT5zZW1fY3RpbWUpOworCisJY29tcGxleG1vZGVfdHJ5bGVhdmUoc21hKTsKKworCXJldHVy biAwOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9pcGMvc2htLmMgYi9pcGMvc2htLmMKaW5kZXgg OTQzOGFiOTAyN2RjLi40NzFmNzMwZTg2NDAgMTAwNjQ0Ci0tLSBhL2lwYy9zaG0uYworKysgYi9p cGMvc2htLmMKQEAgLTEzMzcsMjUgKzEzMzcsMjcgQEAgc3RhdGljIGludCBzeXN2aXBjX3NobV9w cm9jX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICppdCkKICNkZWZpbmUgU0laRV9TUEVD ICIlMjFsdSIKICNlbmRpZgogCi0JcmV0dXJuIHNlcV9wcmludGYocywKLQkJCSAgIiUxMGQgJTEw ZCAgJTRvICIgU0laRV9TUEVDICIgJTV1ICU1dSAgIgotCQkJICAiJTVsdSAlNXUgJTV1ICU1dSAl NXUgJTEwbHUgJTEwbHUgJTEwbHUgIgotCQkJICBTSVpFX1NQRUMgIiAiIFNJWkVfU1BFQyAiXG4i LAotCQkJICBzaHAtPnNobV9wZXJtLmtleSwKLQkJCSAgc2hwLT5zaG1fcGVybS5pZCwKLQkJCSAg c2hwLT5zaG1fcGVybS5tb2RlLAotCQkJICBzaHAtPnNobV9zZWdzeiwKLQkJCSAgc2hwLT5zaG1f Y3ByaWQsCi0JCQkgIHNocC0+c2htX2xwcmlkLAotCQkJICBzaHAtPnNobV9uYXR0Y2gsCi0JCQkg IGZyb21fa3VpZF9tdW5nZWQodXNlcl9ucywgc2hwLT5zaG1fcGVybS51aWQpLAotCQkJICBmcm9t X2tnaWRfbXVuZ2VkKHVzZXJfbnMsIHNocC0+c2htX3Blcm0uZ2lkKSwKLQkJCSAgZnJvbV9rdWlk X211bmdlZCh1c2VyX25zLCBzaHAtPnNobV9wZXJtLmN1aWQpLAotCQkJICBmcm9tX2tnaWRfbXVu Z2VkKHVzZXJfbnMsIHNocC0+c2htX3Blcm0uY2dpZCksCi0JCQkgIHNocC0+c2htX2F0aW0sCi0J CQkgIHNocC0+c2htX2R0aW0sCi0JCQkgIHNocC0+c2htX2N0aW0sCi0JCQkgIHJzcyAqIFBBR0Vf U0laRSwKLQkJCSAgc3dwICogUEFHRV9TSVpFKTsKKwlzZXFfcHJpbnRmKHMsCisJCSAgICIlMTBk ICUxMGQgICU0byAiIFNJWkVfU1BFQyAiICU1dSAlNXUgICIKKwkJICAgIiU1bHUgJTV1ICU1dSAl NXUgJTV1ICUxMGx1ICUxMGx1ICUxMGx1ICIKKwkJICAgU0laRV9TUEVDICIgIiBTSVpFX1NQRUMg IlxuIiwKKwkJICAgc2hwLT5zaG1fcGVybS5rZXksCisJCSAgIHNocC0+c2htX3Blcm0uaWQsCisJ CSAgIHNocC0+c2htX3Blcm0ubW9kZSwKKwkJICAgc2hwLT5zaG1fc2Vnc3osCisJCSAgIHNocC0+ c2htX2NwcmlkLAorCQkgICBzaHAtPnNobV9scHJpZCwKKwkJICAgc2hwLT5zaG1fbmF0dGNoLAor CQkgICBmcm9tX2t1aWRfbXVuZ2VkKHVzZXJfbnMsIHNocC0+c2htX3Blcm0udWlkKSwKKwkJICAg ZnJvbV9rZ2lkX211bmdlZCh1c2VyX25zLCBzaHAtPnNobV9wZXJtLmdpZCksCisJCSAgIGZyb21f a3VpZF9tdW5nZWQodXNlcl9ucywgc2hwLT5zaG1fcGVybS5jdWlkKSwKKwkJICAgZnJvbV9rZ2lk X211bmdlZCh1c2VyX25zLCBzaHAtPnNobV9wZXJtLmNnaWQpLAorCQkgICBzaHAtPnNobV9hdGlt LAorCQkgICBzaHAtPnNobV9kdGltLAorCQkgICBzaHAtPnNobV9jdGltLAorCQkgICByc3MgKiBQ QUdFX1NJWkUsCisJCSAgIHN3cCAqIFBBR0VfU0laRSk7CisKKwlyZXR1cm4gMDsKIH0KICNlbmRp ZgpkaWZmIC0tZ2l0IGEvaXBjL3V0aWwuYyBiL2lwYy91dGlsLmMKaW5kZXggYTA3ZWMyN2UxYmZh Li44MDg1OTY2YTFkNzQgMTAwNjQ0Ci0tLSBhL2lwYy91dGlsLmMKKysrIGIvaXBjL3V0aWwuYwpA QCAtODc3LDggKzg3NywxMCBAQCBzdGF0aWMgaW50IHN5c3ZpcGNfcHJvY19zaG93KHN0cnVjdCBz ZXFfZmlsZSAqcywgdm9pZCAqaXQpCiAJc3RydWN0IGlwY19wcm9jX2l0ZXIgKml0ZXIgPSBzLT5w cml2YXRlOwogCXN0cnVjdCBpcGNfcHJvY19pZmFjZSAqaWZhY2UgPSBpdGVyLT5pZmFjZTsKIAot CWlmIChpdCA9PSBTRVFfU1RBUlRfVE9LRU4pCi0JCXJldHVybiBzZXFfcHV0cyhzLCBpZmFjZS0+ aGVhZGVyKTsKKwlpZiAoaXQgPT0gU0VRX1NUQVJUX1RPS0VOKSB7CisJCXNlcV9wdXRzKHMsIGlm YWNlLT5oZWFkZXIpOworCQlyZXR1cm4gMDsKKwl9CiAKIAlyZXR1cm4gaWZhY2UtPnNob3cocywg aXQpOwogfQpkaWZmIC0tZ2l0IGEva2VybmVsL2V2ZW50cy9jb3JlLmMgYi9rZXJuZWwvZXZlbnRz L2NvcmUuYwppbmRleCBkYjQwZWNkMGIzODAuLjAzNzJiMGZkZTJhYSAxMDA2NDQKLS0tIGEva2Vy bmVsL2V2ZW50cy9jb3JlLmMKKysrIGIva2VybmVsL2V2ZW50cy9jb3JlLmMKQEAgLTkwMyw2ICs5 MDMsNzcgQEAgc3RhdGljIHZvaWQgcHV0X2N0eChzdHJ1Y3QgcGVyZl9ldmVudF9jb250ZXh0ICpj dHgpCiB9CiAKIC8qCisgKiBCZWNhdXNlIG9mIHBlcmZfZXZlbnQ6OmN0eCBtaWdyYXRpb24gaW4g c3lzX3BlcmZfZXZlbnRfb3Blbjo6bW92ZV9ncm91cCBhbmQKKyAqIHBlcmZfcG11X21pZ3JhdGVf Y29udGV4dCgpIHdlIG5lZWQgc29tZSBtYWdpYy4KKyAqCisgKiBUaG9zZSBwbGFjZXMgdGhhdCBj aGFuZ2UgcGVyZl9ldmVudDo6Y3R4IHdpbGwgaG9sZCBib3RoCisgKiBwZXJmX2V2ZW50X2N0eDo6 bXV0ZXggb2YgdGhlICdvbGQnIGFuZCAnbmV3JyBjdHggdmFsdWUuCisgKgorICogTG9jayBvcmRl cmluZyBpcyBieSBtdXRleCBhZGRyZXNzLiBUaGVyZSBpcyBvbmUgb3RoZXIgc2l0ZSB3aGVyZQor ICogcGVyZl9ldmVudF9jb250ZXh0OjptdXRleCBuZXN0cyBhbmQgdGhhdCBpcyBwdXRfZXZlbnQo KS4gQnV0IHJlbWVtYmVyIHRoYXQKKyAqIHRoYXQgaXMgYSBwYXJlbnQ8LT5jaGlsZCBjb250ZXh0 IHJlbGF0aW9uLCBhbmQgbWlncmF0aW9uIGRvZXMgbm90IGFmZmVjdAorICogY2hpbGRyZW4sIHRo ZXJlZm9yZSB0aGVzZSB0d28gb3JkZXJpbmdzIHNob3VsZCBub3QgaW50ZXJhY3QuCisgKgorICog VGhlIGNoYW5nZSBpbiBwZXJmX2V2ZW50OjpjdHggZG9lcyBub3QgYWZmZWN0IGNoaWxkcmVuIChh cyBjbGFpbWVkIGFib3ZlKQorICogYmVjYXVzZSB0aGUgc3lzX3BlcmZfZXZlbnRfb3BlbigpIGNh c2Ugd2lsbCBpbnN0YWxsIGEgbmV3IGV2ZW50IGFuZCBicmVhaworICogdGhlIGN0eCBwYXJlbnQ8 LT5jaGlsZCByZWxhdGlvbiwgYW5kIHBlcmZfcG11X21pZ3JhdGVfY29udGV4dCgpIGlzIG9ubHkK KyAqIGNvbmNlcm5lZCB3aXRoIGNwdWN0eCBhbmQgdGhhdCBkb2Vzbid0IGhhdmUgY2hpbGRyZW4u CisgKgorICogVGhlIHBsYWNlcyB0aGF0IGNoYW5nZSBwZXJmX2V2ZW50OjpjdHggd2lsbCBpc3N1 ZToKKyAqCisgKiAgIHBlcmZfcmVtb3ZlX2Zyb21fY29udGV4dCgpOworICogICBzeW5jaHJvbml6 ZV9yY3UoKTsKKyAqICAgcGVyZl9pbnN0YWxsX2luX2NvbnRleHQoKTsKKyAqCisgKiB0byBhZmZl Y3QgdGhlIGNoYW5nZS4gVGhlIHJlbW92ZV9mcm9tX2NvbnRleHQoKSArIHN5bmNocm9uaXplX3Jj dSgpIHNob3VsZAorICogcXVpZXNjZSB0aGUgZXZlbnQsIGFmdGVyIHdoaWNoIHdlIGNhbiBpbnN0 YWxsIGl0IGluIHRoZSBuZXcgbG9jYXRpb24uIFRoaXMKKyAqIG1lYW5zIHRoYXQgb25seSBleHRl cm5hbCB2ZWN0b3JzIChwZXJmX2ZvcHMsIHByY3RsKSBjYW4gcGVydHVyYiB0aGUgZXZlbnQKKyAq IHdoaWxlIGluIHRyYW5zaXQuIFRoZXJlZm9yZSBhbGwgc3VjaCBhY2Nlc3NvcnMgc2hvdWxkIGFs c28gYWNxdWlyZQorICogcGVyZl9ldmVudF9jb250ZXh0OjptdXRleCB0byBzZXJpYWxpemUgYWdh aW5zdCB0aGlzLgorICoKKyAqIEhvd2V2ZXI7IGJlY2F1c2UgZXZlbnQtPmN0eCBjYW4gY2hhbmdl IHdoaWxlIHdlJ3JlIHdhaXRpbmcgdG8gYWNxdWlyZQorICogY3R4LT5tdXRleCB3ZSBtdXN0IGJl IGNhcmVmdWwgYW5kIHVzZSB0aGUgYmVsb3cgcGVyZl9ldmVudF9jdHhfbG9jaygpCisgKiBmdW5j dGlvbi4KKyAqCisgKiBMb2NrIG9yZGVyOgorICoJdGFza19zdHJ1Y3Q6OnBlcmZfZXZlbnRfbXV0 ZXgKKyAqCSAgcGVyZl9ldmVudF9jb250ZXh0OjptdXRleAorICoJICAgIHBlcmZfZXZlbnRfY29u dGV4dDo6bG9jaworICoJICAgIHBlcmZfZXZlbnQ6OmNoaWxkX211dGV4OworICoJICAgIHBlcmZf ZXZlbnQ6Om1tYXBfbXV0ZXgKKyAqCSAgICBtbWFwX3NlbQorICovCitzdGF0aWMgc3RydWN0IHBl cmZfZXZlbnRfY29udGV4dCAqcGVyZl9ldmVudF9jdHhfbG9jayhzdHJ1Y3QgcGVyZl9ldmVudCAq ZXZlbnQpCit7CisJc3RydWN0IHBlcmZfZXZlbnRfY29udGV4dCAqY3R4OworCithZ2FpbjoKKwly Y3VfcmVhZF9sb2NrKCk7CisJY3R4ID0gQUNDRVNTX09OQ0UoZXZlbnQtPmN0eCk7CisJaWYgKCFh dG9taWNfaW5jX25vdF96ZXJvKCZjdHgtPnJlZmNvdW50KSkgeworCQlyY3VfcmVhZF91bmxvY2so KTsKKwkJZ290byBhZ2FpbjsKKwl9CisJcmN1X3JlYWRfdW5sb2NrKCk7CisKKwltdXRleF9sb2Nr KCZjdHgtPm11dGV4KTsKKwlpZiAoZXZlbnQtPmN0eCAhPSBjdHgpIHsKKwkJbXV0ZXhfdW5sb2Nr KCZjdHgtPm11dGV4KTsKKwkJcHV0X2N0eChjdHgpOworCQlnb3RvIGFnYWluOworCX0KKworCXJl dHVybiBjdHg7Cit9CisKK3N0YXRpYyB2b2lkIHBlcmZfZXZlbnRfY3R4X3VubG9jayhzdHJ1Y3Qg cGVyZl9ldmVudCAqZXZlbnQsCisJCQkJICBzdHJ1Y3QgcGVyZl9ldmVudF9jb250ZXh0ICpjdHgp Cit7CisJbXV0ZXhfdW5sb2NrKCZjdHgtPm11dGV4KTsKKwlwdXRfY3R4KGN0eCk7Cit9CisKKy8q CiAgKiBUaGlzIG11c3QgYmUgZG9uZSB1bmRlciB0aGUgY3R4LT5sb2NrLCBzdWNoIGFzIHRvIHNl cmlhbGl6ZSBhZ2FpbnN0CiAgKiBjb250ZXh0X2VxdWl2KCksIHRoZXJlZm9yZSB3ZSBjYW5ub3Qg Y2FsbCBwdXRfY3R4KCkgc2luY2UgdGhhdCBtaWdodCBlbmQgdXAKICAqIGNhbGxpbmcgc2NoZWR1 bGVyIHJlbGF0ZWQgbG9ja3MgYW5kIGN0eC0+bG9jayBuZXN0cyBpbnNpZGUgdGhvc2UuCkBAIC0x NjA2LDcgKzE2NzcsNyBAQCBpbnQgX19wZXJmX2V2ZW50X2Rpc2FibGUodm9pZCAqaW5mbykKICAq IGlzIHRoZSBjdXJyZW50IGNvbnRleHQgb24gdGhpcyBDUFUgYW5kIHByZWVtcHRpb24gaXMgZGlz YWJsZWQsCiAgKiBoZW5jZSB3ZSBjYW4ndCBnZXQgaW50byBwZXJmX2V2ZW50X3Rhc2tfc2NoZWRf b3V0IGZvciB0aGlzIGNvbnRleHQuCiAgKi8KLXZvaWQgcGVyZl9ldmVudF9kaXNhYmxlKHN0cnVj dCBwZXJmX2V2ZW50ICpldmVudCkKK3N0YXRpYyB2b2lkIF9wZXJmX2V2ZW50X2Rpc2FibGUoc3Ry dWN0IHBlcmZfZXZlbnQgKmV2ZW50KQogewogCXN0cnVjdCBwZXJmX2V2ZW50X2NvbnRleHQgKmN0 eCA9IGV2ZW50LT5jdHg7CiAJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrID0gY3R4LT50YXNrOwpA QCAtMTY0Nyw2ICsxNzE4LDE5IEBAIHJldHJ5OgogCX0KIAlyYXdfc3Bpbl91bmxvY2tfaXJxKCZj dHgtPmxvY2spOwogfQorCisvKgorICogU3RyaWN0bHkgc3BlYWtpbmcga2VybmVsIHVzZXJzIGNh bm5vdCBjcmVhdGUgZ3JvdXBzIGFuZCB0aGVyZWZvcmUgdGhpcworICogaW50ZXJmYWNlIGRvZXMg bm90IG5lZWQgdGhlIHBlcmZfZXZlbnRfY3R4X2xvY2soKSBtYWdpYy4KKyAqLwordm9pZCBwZXJm X2V2ZW50X2Rpc2FibGUoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQoreworCXN0cnVjdCBwZXJm X2V2ZW50X2NvbnRleHQgKmN0eDsKKworCWN0eCA9IHBlcmZfZXZlbnRfY3R4X2xvY2soZXZlbnQp OworCV9wZXJmX2V2ZW50X2Rpc2FibGUoZXZlbnQpOworCXBlcmZfZXZlbnRfY3R4X3VubG9jayhl dmVudCwgY3R4KTsKK30KIEVYUE9SVF9TWU1CT0xfR1BMKHBlcmZfZXZlbnRfZGlzYWJsZSk7CiAK IHN0YXRpYyB2b2lkIHBlcmZfc2V0X3NoYWRvd190aW1lKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVu dCwKQEAgLTIxMDcsNyArMjE5MSw3IEBAIHVubG9jazoKICAqIHBlcmZfZXZlbnRfZm9yX2VhY2hf Y2hpbGQgb3IgcGVyZl9ldmVudF9mb3JfZWFjaCBhcyBkZXNjcmliZWQKICAqIGZvciBwZXJmX2V2 ZW50X2Rpc2FibGUuCiAgKi8KLXZvaWQgcGVyZl9ldmVudF9lbmFibGUoc3RydWN0IHBlcmZfZXZl bnQgKmV2ZW50KQorc3RhdGljIHZvaWQgX3BlcmZfZXZlbnRfZW5hYmxlKHN0cnVjdCBwZXJmX2V2 ZW50ICpldmVudCkKIHsKIAlzdHJ1Y3QgcGVyZl9ldmVudF9jb250ZXh0ICpjdHggPSBldmVudC0+ Y3R4OwogCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayA9IGN0eC0+dGFzazsKQEAgLTIxNjMsOSAr MjI0NywyMSBAQCByZXRyeToKIG91dDoKIAlyYXdfc3Bpbl91bmxvY2tfaXJxKCZjdHgtPmxvY2sp OwogfQorCisvKgorICogU2VlIHBlcmZfZXZlbnRfZGlzYWJsZSgpOworICovCit2b2lkIHBlcmZf ZXZlbnRfZW5hYmxlKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKK3sKKwlzdHJ1Y3QgcGVyZl9l dmVudF9jb250ZXh0ICpjdHg7CisKKwljdHggPSBwZXJmX2V2ZW50X2N0eF9sb2NrKGV2ZW50KTsK KwlfcGVyZl9ldmVudF9lbmFibGUoZXZlbnQpOworCXBlcmZfZXZlbnRfY3R4X3VubG9jayhldmVu dCwgY3R4KTsKK30KIEVYUE9SVF9TWU1CT0xfR1BMKHBlcmZfZXZlbnRfZW5hYmxlKTsKIAotaW50 IHBlcmZfZXZlbnRfcmVmcmVzaChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludCByZWZyZXNo KQorc3RhdGljIGludCBfcGVyZl9ldmVudF9yZWZyZXNoKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVu dCwgaW50IHJlZnJlc2gpCiB7CiAJLyoKIAkgKiBub3Qgc3VwcG9ydGVkIG9uIGluaGVyaXRlZCBl dmVudHMKQEAgLTIxNzQsMTAgKzIyNzAsMjUgQEAgaW50IHBlcmZfZXZlbnRfcmVmcmVzaChzdHJ1 Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludCByZWZyZXNoKQogCQlyZXR1cm4gLUVJTlZBTDsKIAog CWF0b21pY19hZGQocmVmcmVzaCwgJmV2ZW50LT5ldmVudF9saW1pdCk7Ci0JcGVyZl9ldmVudF9l bmFibGUoZXZlbnQpOworCV9wZXJmX2V2ZW50X2VuYWJsZShldmVudCk7CiAKIAlyZXR1cm4gMDsK IH0KKworLyoKKyAqIFNlZSBwZXJmX2V2ZW50X2Rpc2FibGUoKQorICovCitpbnQgcGVyZl9ldmVu dF9yZWZyZXNoKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50IHJlZnJlc2gpCit7CisJc3Ry dWN0IHBlcmZfZXZlbnRfY29udGV4dCAqY3R4OworCWludCByZXQ7CisKKwljdHggPSBwZXJmX2V2 ZW50X2N0eF9sb2NrKGV2ZW50KTsKKwlyZXQgPSBfcGVyZl9ldmVudF9yZWZyZXNoKGV2ZW50LCBy ZWZyZXNoKTsKKwlwZXJmX2V2ZW50X2N0eF91bmxvY2soZXZlbnQsIGN0eCk7CisKKwlyZXR1cm4g cmV0OworfQogRVhQT1JUX1NZTUJPTF9HUEwocGVyZl9ldmVudF9yZWZyZXNoKTsKIAogc3RhdGlj IHZvaWQgY3R4X3NjaGVkX291dChzdHJ1Y3QgcGVyZl9ldmVudF9jb250ZXh0ICpjdHgsCkBAIC0z MzczLDcgKzM0ODQsMTYgQEAgc3RhdGljIHZvaWQgcHV0X2V2ZW50KHN0cnVjdCBwZXJmX2V2ZW50 ICpldmVudCkKIAlyY3VfcmVhZF91bmxvY2soKTsKIAogCWlmIChvd25lcikgewotCQltdXRleF9s b2NrKCZvd25lci0+cGVyZl9ldmVudF9tdXRleCk7CisJCS8qCisJCSAqIElmIHdlJ3JlIGhlcmUg dGhyb3VnaCBwZXJmX2V2ZW50X2V4aXRfdGFzaygpIHdlJ3JlIGFscmVhZHkKKwkJICogaG9sZGlu ZyBjdHgtPm11dGV4IHdoaWNoIHdvdWxkIGJlIGFuIGludmVyc2lvbiB3cnQuIHRoZQorCQkgKiBu b3JtYWwgbG9jayBvcmRlci4KKwkJICoKKwkJICogSG93ZXZlciB3ZSBjYW4gc2FmZWx5IHRha2Ug dGhpcyBsb2NrIGJlY2F1c2UgaXRzIHRoZSBjaGlsZAorCQkgKiBjdHgtPm11dGV4LgorCQkgKi8K KwkJbXV0ZXhfbG9ja19uZXN0ZWQoJm93bmVyLT5wZXJmX2V2ZW50X211dGV4LCBTSU5HTEVfREVQ VEhfTkVTVElORyk7CisKIAkJLyoKIAkJICogV2UgaGF2ZSB0byByZS1jaGVjayB0aGUgZXZlbnQt Pm93bmVyIGZpZWxkLCBpZiBpdCBpcyBjbGVhcmVkCiAJCSAqIHdlIHJhY2VkIHdpdGggcGVyZl9l dmVudF9leGl0X3Rhc2soKSwgYWNxdWlyaW5nIHRoZSBtdXRleApAQCAtMzQ0OSwxMiArMzU2OSwx MyBAQCBzdGF0aWMgaW50IHBlcmZfZXZlbnRfcmVhZF9ncm91cChzdHJ1Y3QgcGVyZl9ldmVudCAq ZXZlbnQsCiAJCQkJICAgdTY0IHJlYWRfZm9ybWF0LCBjaGFyIF9fdXNlciAqYnVmKQogewogCXN0 cnVjdCBwZXJmX2V2ZW50ICpsZWFkZXIgPSBldmVudC0+Z3JvdXBfbGVhZGVyLCAqc3ViOwotCWlu dCBuID0gMCwgc2l6ZSA9IDAsIHJldCA9IC1FRkFVTFQ7CiAJc3RydWN0IHBlcmZfZXZlbnRfY29u dGV4dCAqY3R4ID0gbGVhZGVyLT5jdHg7Ci0JdTY0IHZhbHVlc1s1XTsKKwlpbnQgbiA9IDAsIHNp emUgPSAwLCByZXQ7CiAJdTY0IGNvdW50LCBlbmFibGVkLCBydW5uaW5nOworCXU2NCB2YWx1ZXNb NV07CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZjdHgtPm11dGV4KTsKIAotCW11dGV4X2xvY2so JmN0eC0+bXV0ZXgpOwogCWNvdW50ID0gcGVyZl9ldmVudF9yZWFkX3ZhbHVlKGxlYWRlciwgJmVu YWJsZWQsICZydW5uaW5nKTsKIAogCXZhbHVlc1tuKytdID0gMSArIGxlYWRlci0+bnJfc2libGlu Z3M7CkBAIC0zNDY5LDcgKzM1OTAsNyBAQCBzdGF0aWMgaW50IHBlcmZfZXZlbnRfcmVhZF9ncm91 cChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsCiAJc2l6ZSA9IG4gKiBzaXplb2YodTY0KTsKIAog CWlmIChjb3B5X3RvX3VzZXIoYnVmLCB2YWx1ZXMsIHNpemUpKQotCQlnb3RvIHVubG9jazsKKwkJ cmV0dXJuIC1FRkFVTFQ7CiAKIAlyZXQgPSBzaXplOwogCkBAIC0zNDgzLDE0ICszNjA0LDExIEBA IHN0YXRpYyBpbnQgcGVyZl9ldmVudF9yZWFkX2dyb3VwKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVu dCwKIAkJc2l6ZSA9IG4gKiBzaXplb2YodTY0KTsKIAogCQlpZiAoY29weV90b191c2VyKGJ1ZiAr IHJldCwgdmFsdWVzLCBzaXplKSkgewotCQkJcmV0ID0gLUVGQVVMVDsKLQkJCWdvdG8gdW5sb2Nr OworCQkJcmV0dXJuIC1FRkFVTFQ7CiAJCX0KIAogCQlyZXQgKz0gc2l6ZTsKIAl9Ci11bmxvY2s6 Ci0JbXV0ZXhfdW5sb2NrKCZjdHgtPm11dGV4KTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC0zNTQ5 LDggKzM2NjcsMTQgQEAgc3RhdGljIHNzaXplX3QKIHBlcmZfcmVhZChzdHJ1Y3QgZmlsZSAqZmls ZSwgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpCiB7CiAJc3Ry dWN0IHBlcmZfZXZlbnQgKmV2ZW50ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworCXN0cnVjdCBwZXJm X2V2ZW50X2NvbnRleHQgKmN0eDsKKwlpbnQgcmV0OwogCi0JcmV0dXJuIHBlcmZfcmVhZF9odyhl dmVudCwgYnVmLCBjb3VudCk7CisJY3R4ID0gcGVyZl9ldmVudF9jdHhfbG9jayhldmVudCk7CisJ cmV0ID0gcGVyZl9yZWFkX2h3KGV2ZW50LCBidWYsIGNvdW50KTsKKwlwZXJmX2V2ZW50X2N0eF91 bmxvY2soZXZlbnQsIGN0eCk7CisKKwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdW5zaWduZWQg aW50IHBlcmZfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdCkKQEAgLTM1 NzQsNyArMzY5OCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgcGVyZl9wb2xsKHN0cnVjdCBmaWxl ICpmaWxlLCBwb2xsX3RhYmxlICp3YWl0KQogCXJldHVybiBldmVudHM7CiB9CiAKLXN0YXRpYyB2 b2lkIHBlcmZfZXZlbnRfcmVzZXQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQorc3RhdGljIHZv aWQgX3BlcmZfZXZlbnRfcmVzZXQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQogewogCSh2b2lk KXBlcmZfZXZlbnRfcmVhZChldmVudCk7CiAJbG9jYWw2NF9zZXQoJmV2ZW50LT5jb3VudCwgMCk7 CkBAIC0zNTkzLDYgKzM3MTcsNyBAQCBzdGF0aWMgdm9pZCBwZXJmX2V2ZW50X2Zvcl9lYWNoX2No aWxkKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwKIAlzdHJ1Y3QgcGVyZl9ldmVudCAqY2hpbGQ7 CiAKIAlXQVJOX09OX09OQ0UoZXZlbnQtPmN0eC0+cGFyZW50X2N0eCk7CisKIAltdXRleF9sb2Nr KCZldmVudC0+Y2hpbGRfbXV0ZXgpOwogCWZ1bmMoZXZlbnQpOwogCWxpc3RfZm9yX2VhY2hfZW50 cnkoY2hpbGQsICZldmVudC0+Y2hpbGRfbGlzdCwgY2hpbGRfbGlzdCkKQEAgLTM2MDYsMTQgKzM3 MzEsMTMgQEAgc3RhdGljIHZvaWQgcGVyZl9ldmVudF9mb3JfZWFjaChzdHJ1Y3QgcGVyZl9ldmVu dCAqZXZlbnQsCiAJc3RydWN0IHBlcmZfZXZlbnRfY29udGV4dCAqY3R4ID0gZXZlbnQtPmN0eDsK IAlzdHJ1Y3QgcGVyZl9ldmVudCAqc2libGluZzsKIAotCVdBUk5fT05fT05DRShjdHgtPnBhcmVu dF9jdHgpOwotCW11dGV4X2xvY2soJmN0eC0+bXV0ZXgpOworCWxvY2tkZXBfYXNzZXJ0X2hlbGQo JmN0eC0+bXV0ZXgpOworCiAJZXZlbnQgPSBldmVudC0+Z3JvdXBfbGVhZGVyOwogCiAJcGVyZl9l dmVudF9mb3JfZWFjaF9jaGlsZChldmVudCwgZnVuYyk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShz aWJsaW5nLCAmZXZlbnQtPnNpYmxpbmdfbGlzdCwgZ3JvdXBfZW50cnkpCiAJCXBlcmZfZXZlbnRf Zm9yX2VhY2hfY2hpbGQoc2libGluZywgZnVuYyk7Ci0JbXV0ZXhfdW5sb2NrKCZjdHgtPm11dGV4 KTsKIH0KIAogc3RydWN0IHBlcmlvZF9ldmVudCB7CkBAIC0zNzI1LDI1ICszODQ5LDI0IEBAIHN0 YXRpYyBpbnQgcGVyZl9ldmVudF9zZXRfb3V0cHV0KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwK IAkJCQkgc3RydWN0IHBlcmZfZXZlbnQgKm91dHB1dF9ldmVudCk7CiBzdGF0aWMgaW50IHBlcmZf ZXZlbnRfc2V0X2ZpbHRlcihzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIHZvaWQgX191c2VyICph cmcpOwogCi1zdGF0aWMgbG9uZyBwZXJmX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25l ZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKK3N0YXRpYyBsb25nIF9wZXJmX2lvY3RsKHN0 cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBh cmcpCiB7Ci0Jc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwog CXZvaWQgKCpmdW5jKShzdHJ1Y3QgcGVyZl9ldmVudCAqKTsKIAl1MzIgZmxhZ3MgPSBhcmc7CiAK IAlzd2l0Y2ggKGNtZCkgewogCWNhc2UgUEVSRl9FVkVOVF9JT0NfRU5BQkxFOgotCQlmdW5jID0g cGVyZl9ldmVudF9lbmFibGU7CisJCWZ1bmMgPSBfcGVyZl9ldmVudF9lbmFibGU7CiAJCWJyZWFr OwogCWNhc2UgUEVSRl9FVkVOVF9JT0NfRElTQUJMRToKLQkJZnVuYyA9IHBlcmZfZXZlbnRfZGlz YWJsZTsKKwkJZnVuYyA9IF9wZXJmX2V2ZW50X2Rpc2FibGU7CiAJCWJyZWFrOwogCWNhc2UgUEVS Rl9FVkVOVF9JT0NfUkVTRVQ6Ci0JCWZ1bmMgPSBwZXJmX2V2ZW50X3Jlc2V0OworCQlmdW5jID0g X3BlcmZfZXZlbnRfcmVzZXQ7CiAJCWJyZWFrOwogCiAJY2FzZSBQRVJGX0VWRU5UX0lPQ19SRUZS RVNIOgotCQlyZXR1cm4gcGVyZl9ldmVudF9yZWZyZXNoKGV2ZW50LCBhcmcpOworCQlyZXR1cm4g X3BlcmZfZXZlbnRfcmVmcmVzaChldmVudCwgYXJnKTsKIAogCWNhc2UgUEVSRl9FVkVOVF9JT0Nf UEVSSU9EOgogCQlyZXR1cm4gcGVyZl9ldmVudF9wZXJpb2QoZXZlbnQsICh1NjQgX191c2VyICop YXJnKTsKQEAgLTM3OTAsNiArMzkxMywxOSBAQCBzdGF0aWMgbG9uZyBwZXJmX2lvY3RsKHN0cnVj dCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIAlyZXR1 cm4gMDsKIH0KIAorc3RhdGljIGxvbmcgcGVyZl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5z aWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCit7CisJc3RydWN0IHBlcmZfZXZlbnQg KmV2ZW50ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworCXN0cnVjdCBwZXJmX2V2ZW50X2NvbnRleHQg KmN0eDsKKwlsb25nIHJldDsKKworCWN0eCA9IHBlcmZfZXZlbnRfY3R4X2xvY2soZXZlbnQpOwor CXJldCA9IF9wZXJmX2lvY3RsKGV2ZW50LCBjbWQsIGFyZyk7CisJcGVyZl9ldmVudF9jdHhfdW5s b2NrKGV2ZW50LCBjdHgpOworCisJcmV0dXJuIHJldDsKK30KKwogI2lmZGVmIENPTkZJR19DT01Q QVQKIHN0YXRpYyBsb25nIHBlcmZfY29tcGF0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNp Z25lZCBpbnQgY21kLAogCQkJCXVuc2lnbmVkIGxvbmcgYXJnKQpAQCAtMzgxMiwxMSArMzk0OCwx NSBAQCBzdGF0aWMgbG9uZyBwZXJmX2NvbXBhdF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5z aWduZWQgaW50IGNtZCwKIAogaW50IHBlcmZfZXZlbnRfdGFza19lbmFibGUodm9pZCkKIHsKKwlz dHJ1Y3QgcGVyZl9ldmVudF9jb250ZXh0ICpjdHg7CiAJc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50 OwogCiAJbXV0ZXhfbG9jaygmY3VycmVudC0+cGVyZl9ldmVudF9tdXRleCk7Ci0JbGlzdF9mb3Jf ZWFjaF9lbnRyeShldmVudCwgJmN1cnJlbnQtPnBlcmZfZXZlbnRfbGlzdCwgb3duZXJfZW50cnkp Ci0JCXBlcmZfZXZlbnRfZm9yX2VhY2hfY2hpbGQoZXZlbnQsIHBlcmZfZXZlbnRfZW5hYmxlKTsK KwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGV2ZW50LCAmY3VycmVudC0+cGVyZl9ldmVudF9saXN0LCBv d25lcl9lbnRyeSkgeworCQljdHggPSBwZXJmX2V2ZW50X2N0eF9sb2NrKGV2ZW50KTsKKwkJcGVy Zl9ldmVudF9mb3JfZWFjaF9jaGlsZChldmVudCwgX3BlcmZfZXZlbnRfZW5hYmxlKTsKKwkJcGVy Zl9ldmVudF9jdHhfdW5sb2NrKGV2ZW50LCBjdHgpOworCX0KIAltdXRleF91bmxvY2soJmN1cnJl bnQtPnBlcmZfZXZlbnRfbXV0ZXgpOwogCiAJcmV0dXJuIDA7CkBAIC0zODI0LDExICszOTY0LDE1 IEBAIGludCBwZXJmX2V2ZW50X3Rhc2tfZW5hYmxlKHZvaWQpCiAKIGludCBwZXJmX2V2ZW50X3Rh c2tfZGlzYWJsZSh2b2lkKQogeworCXN0cnVjdCBwZXJmX2V2ZW50X2NvbnRleHQgKmN0eDsKIAlz dHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQ7CiAKIAltdXRleF9sb2NrKCZjdXJyZW50LT5wZXJmX2V2 ZW50X211dGV4KTsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGV2ZW50LCAmY3VycmVudC0+cGVyZl9l dmVudF9saXN0LCBvd25lcl9lbnRyeSkKLQkJcGVyZl9ldmVudF9mb3JfZWFjaF9jaGlsZChldmVu dCwgcGVyZl9ldmVudF9kaXNhYmxlKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGV2ZW50LCAmY3Vy cmVudC0+cGVyZl9ldmVudF9saXN0LCBvd25lcl9lbnRyeSkgeworCQljdHggPSBwZXJmX2V2ZW50 X2N0eF9sb2NrKGV2ZW50KTsKKwkJcGVyZl9ldmVudF9mb3JfZWFjaF9jaGlsZChldmVudCwgX3Bl cmZfZXZlbnRfZGlzYWJsZSk7CisJCXBlcmZfZXZlbnRfY3R4X3VubG9jayhldmVudCwgY3R4KTsK Kwl9CiAJbXV0ZXhfdW5sb2NrKCZjdXJyZW50LT5wZXJmX2V2ZW50X211dGV4KTsKIAogCXJldHVy biAwOwpAQCAtNTU5NSw5ICs1NzM5LDYgQEAgc3RydWN0IHN3ZXZlbnRfaHRhYmxlIHsKIAogCS8q IFJlY3Vyc2lvbiBhdm9pZGFuY2UgaW4gZWFjaCBjb250ZXh0cyAqLwogCWludAkJCQlyZWN1cnNp b25bUEVSRl9OUl9DT05URVhUU107Ci0KLQkvKiBLZWVwcyB0cmFjayBvZiBjcHUgYmVpbmcgaW5p dGlhbGl6ZWQvZXhpdGVkICovCi0JYm9vbAkJCQlvbmxpbmU7CiB9OwogCiBzdGF0aWMgREVGSU5F X1BFUl9DUFUoc3RydWN0IHN3ZXZlbnRfaHRhYmxlLCBzd2V2ZW50X2h0YWJsZSk7CkBAIC01ODQ0 LDE0ICs1OTg1LDggQEAgc3RhdGljIGludCBwZXJmX3N3ZXZlbnRfYWRkKHN0cnVjdCBwZXJmX2V2 ZW50ICpldmVudCwgaW50IGZsYWdzKQogCWh3Yy0+c3RhdGUgPSAhKGZsYWdzICYgUEVSRl9FRl9T VEFSVCk7CiAKIAloZWFkID0gZmluZF9zd2V2ZW50X2hlYWQoc3doYXNoLCBldmVudCk7Ci0JaWYg KCFoZWFkKSB7Ci0JCS8qCi0JCSAqIFdlIGNhbiByYWNlIHdpdGggY3B1IGhvdHBsdWcgY29kZS4g RG8gbm90Ci0JCSAqIFdBUk4gaWYgdGhlIGNwdSBqdXN0IGdvdCB1bnBsdWdnZWQuCi0JCSAqLwot CQlXQVJOX09OX09OQ0Uoc3doYXNoLT5vbmxpbmUpOworCWlmIChXQVJOX09OX09OQ0UoIWhlYWQp KQogCQlyZXR1cm4gLUVJTlZBTDsKLQl9CiAKIAlobGlzdF9hZGRfaGVhZF9yY3UoJmV2ZW50LT5o bGlzdF9lbnRyeSwgaGVhZCk7CiAKQEAgLTU5MTgsNyArNjA1Myw2IEBAIHN0YXRpYyBpbnQgc3dl dmVudF9obGlzdF9nZXRfY3B1KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50IGNwdSkKIAlp bnQgZXJyID0gMDsKIAogCW11dGV4X2xvY2soJnN3aGFzaC0+aGxpc3RfbXV0ZXgpOwotCiAJaWYg KCFzd2V2ZW50X2hsaXN0X2RlcmVmKHN3aGFzaCkgJiYgY3B1X29ubGluZShjcHUpKSB7CiAJCXN0 cnVjdCBzd2V2ZW50X2hsaXN0ICpobGlzdDsKIApAQCAtNzE2OCw2ICs3MzAyLDQ2IEBAIG91dDoK IAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgdm9pZCBtdXRleF9sb2NrX2RvdWJsZShzdHJ1Y3Qg bXV0ZXggKmEsIHN0cnVjdCBtdXRleCAqYikKK3sKKwlpZiAoYiA8IGEpCisJCXN3YXAoYSwgYik7 CisKKwltdXRleF9sb2NrKGEpOworCW11dGV4X2xvY2tfbmVzdGVkKGIsIFNJTkdMRV9ERVBUSF9O RVNUSU5HKTsKK30KKworLyoKKyAqIFZhcmlhdGlvbiBvbiBwZXJmX2V2ZW50X2N0eF9sb2NrX25l c3RlZCgpLCBleGNlcHQgd2UgdGFrZSB0d28gY29udGV4dAorICogbXV0ZXhlcy4KKyAqLworc3Rh dGljIHN0cnVjdCBwZXJmX2V2ZW50X2NvbnRleHQgKgorX19wZXJmX2V2ZW50X2N0eF9sb2NrX2Rv dWJsZShzdHJ1Y3QgcGVyZl9ldmVudCAqZ3JvdXBfbGVhZGVyLAorCQkJICAgICBzdHJ1Y3QgcGVy Zl9ldmVudF9jb250ZXh0ICpjdHgpCit7CisJc3RydWN0IHBlcmZfZXZlbnRfY29udGV4dCAqZ2N0 eDsKKworYWdhaW46CisJcmN1X3JlYWRfbG9jaygpOworCWdjdHggPSBBQ0NFU1NfT05DRShncm91 cF9sZWFkZXItPmN0eCk7CisJaWYgKCFhdG9taWNfaW5jX25vdF96ZXJvKCZnY3R4LT5yZWZjb3Vu dCkpIHsKKwkJcmN1X3JlYWRfdW5sb2NrKCk7CisJCWdvdG8gYWdhaW47CisJfQorCXJjdV9yZWFk X3VubG9jaygpOworCisJbXV0ZXhfbG9ja19kb3VibGUoJmdjdHgtPm11dGV4LCAmY3R4LT5tdXRl eCk7CisKKwlpZiAoZ3JvdXBfbGVhZGVyLT5jdHggIT0gZ2N0eCkgeworCQltdXRleF91bmxvY2so JmN0eC0+bXV0ZXgpOworCQltdXRleF91bmxvY2soJmdjdHgtPm11dGV4KTsKKwkJcHV0X2N0eChn Y3R4KTsKKwkJZ290byBhZ2FpbjsKKwl9CisKKwlyZXR1cm4gZ2N0eDsKK30KKwogLyoqCiAgKiBz eXNfcGVyZl9ldmVudF9vcGVuIC0gb3BlbiBhIHBlcmZvcm1hbmNlIGV2ZW50LCBhc3NvY2lhdGUg aXQgdG8gYSB0YXNrL2NwdQogICoKQEAgLTcxODMsNyArNzM1Nyw3IEBAIFNZU0NBTExfREVGSU5F NShwZXJmX2V2ZW50X29wZW4sCiAJc3RydWN0IHBlcmZfZXZlbnQgKmdyb3VwX2xlYWRlciA9IE5V TEwsICpvdXRwdXRfZXZlbnQgPSBOVUxMOwogCXN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgKnNp Ymxpbmc7CiAJc3RydWN0IHBlcmZfZXZlbnRfYXR0ciBhdHRyOwotCXN0cnVjdCBwZXJmX2V2ZW50 X2NvbnRleHQgKmN0eDsKKwlzdHJ1Y3QgcGVyZl9ldmVudF9jb250ZXh0ICpjdHgsICp1bmluaXRp YWxpemVkX3ZhcihnY3R4KTsKIAlzdHJ1Y3QgZmlsZSAqZXZlbnRfZmlsZSA9IE5VTEw7CiAJc3Ry dWN0IGZkIGdyb3VwID0ge05VTEwsIDB9OwogCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayA9IE5V TEw7CkBAIC03Mzc5LDkgKzc1NTMsMzEgQEAgU1lTQ0FMTF9ERUZJTkU1KHBlcmZfZXZlbnRfb3Bl biwKIAl9CiAKIAlpZiAobW92ZV9ncm91cCkgewotCQlzdHJ1Y3QgcGVyZl9ldmVudF9jb250ZXh0 ICpnY3R4ID0gZ3JvdXBfbGVhZGVyLT5jdHg7CisJCWdjdHggPSBfX3BlcmZfZXZlbnRfY3R4X2xv Y2tfZG91YmxlKGdyb3VwX2xlYWRlciwgY3R4KTsKIAotCQltdXRleF9sb2NrKCZnY3R4LT5tdXRl eCk7CisJCS8qCisJCSAqIENoZWNrIGlmIHdlIHJhY2VkIGFnYWluc3QgYW5vdGhlciBzeXNfcGVy Zl9ldmVudF9vcGVuKCkgY2FsbAorCQkgKiBtb3ZpbmcgdGhlIHNvZnR3YXJlIGdyb3VwIHVuZGVy bmVhdGggdXMuCisJCSAqLworCQlpZiAoIShncm91cF9sZWFkZXItPmdyb3VwX2ZsYWdzICYgUEVS Rl9HUk9VUF9TT0ZUV0FSRSkpIHsKKwkJCS8qCisJCQkgKiBJZiBzb21lb25lIG1vdmVkIHRoZSBn cm91cCBvdXQgZnJvbSB1bmRlciB1cywgY2hlY2sKKwkJCSAqIGlmIHRoaXMgbmV3IGV2ZW50IHdv dW5kIHVwIG9uIHRoZSBzYW1lIGN0eCwgaWYgc28KKwkJCSAqIGl0cyB0aGUgcmVndWxhciAhbW92 ZV9ncm91cCBjYXNlLCBvdGhlcndpc2UgZmFpbC4KKwkJCSAqLworCQkJaWYgKGdjdHggIT0gY3R4 KSB7CisJCQkJZXJyID0gLUVJTlZBTDsKKwkJCQlnb3RvIGVycl9sb2NrZWQ7CisJCQl9IGVsc2Ug eworCQkJCXBlcmZfZXZlbnRfY3R4X3VubG9jayhncm91cF9sZWFkZXIsIGdjdHgpOworCQkJCW1v dmVfZ3JvdXAgPSAwOworCQkJfQorCQl9CisKKwkJLyoKKwkJICogU2VlIHBlcmZfZXZlbnRfY3R4 X2xvY2soKSBmb3IgY29tbWVudHMgb24gdGhlIGRldGFpbHMKKwkJICogb2Ygc3dpenpsaW5nIHBl cmZfZXZlbnQ6OmN0eC4KKwkJICovCiAJCXBlcmZfcmVtb3ZlX2Zyb21fY29udGV4dChncm91cF9s ZWFkZXIsIGZhbHNlKTsKIAogCQkvKgpAQCAtNzM5NiwxNSArNzU5MiwxOSBAQCBTWVNDQUxMX0RF RklORTUocGVyZl9ldmVudF9vcGVuLAogCQkJcGVyZl9ldmVudF9fc3RhdGVfaW5pdChzaWJsaW5n KTsKIAkJCXB1dF9jdHgoZ2N0eCk7CiAJCX0KLQkJbXV0ZXhfdW5sb2NrKCZnY3R4LT5tdXRleCk7 Ci0JCXB1dF9jdHgoZ2N0eCk7CisJfSBlbHNlIHsKKwkJbXV0ZXhfbG9jaygmY3R4LT5tdXRleCk7 CiAJfQogCiAJV0FSTl9PTl9PTkNFKGN0eC0+cGFyZW50X2N0eCk7Ci0JbXV0ZXhfbG9jaygmY3R4 LT5tdXRleCk7CiAKIAlpZiAobW92ZV9ncm91cCkgeworCQkvKgorCQkgKiBXYWl0IGZvciBldmVy eWJvZHkgdG8gc3RvcCByZWZlcmVuY2luZyB0aGUgZXZlbnRzIHRocm91Z2gKKwkJICogdGhlIG9s ZCBsaXN0cywgYmVmb3JlIGluc3RhbGxpbmcgaXQgb24gbmV3IGxpc3RzLgorCQkgKi8KIAkJc3lu Y2hyb25pemVfcmN1KCk7CisKIAkJcGVyZl9pbnN0YWxsX2luX2NvbnRleHQoY3R4LCBncm91cF9s ZWFkZXIsIGdyb3VwX2xlYWRlci0+Y3B1KTsKIAkJZ2V0X2N0eChjdHgpOwogCQlsaXN0X2Zvcl9l YWNoX2VudHJ5KHNpYmxpbmcsICZncm91cF9sZWFkZXItPnNpYmxpbmdfbGlzdCwKQEAgLTc0MTYs NiArNzYxNiw5IEBAIFNZU0NBTExfREVGSU5FNShwZXJmX2V2ZW50X29wZW4sCiAKIAlwZXJmX2lu c3RhbGxfaW5fY29udGV4dChjdHgsIGV2ZW50LCBldmVudC0+Y3B1KTsKIAlwZXJmX3VucGluX2Nv bnRleHQoY3R4KTsKKworCWlmIChtb3ZlX2dyb3VwKQorCQlwZXJmX2V2ZW50X2N0eF91bmxvY2so Z3JvdXBfbGVhZGVyLCBnY3R4KTsKIAltdXRleF91bmxvY2soJmN0eC0+bXV0ZXgpOwogCiAJcHV0 X29ubGluZV9jcHVzKCk7CkBAIC03NDQyLDExICs3NjQ1LDIxIEBAIFNZU0NBTExfREVGSU5FNShw ZXJmX2V2ZW50X29wZW4sCiAJZmRfaW5zdGFsbChldmVudF9mZCwgZXZlbnRfZmlsZSk7CiAJcmV0 dXJuIGV2ZW50X2ZkOwogCitlcnJfbG9ja2VkOgorCWlmIChtb3ZlX2dyb3VwKQorCQlwZXJmX2V2 ZW50X2N0eF91bmxvY2soZ3JvdXBfbGVhZGVyLCBnY3R4KTsKKwltdXRleF91bmxvY2soJmN0eC0+ bXV0ZXgpOworCWZwdXQoZXZlbnRfZmlsZSk7CiBlcnJfY29udGV4dDoKIAlwZXJmX3VucGluX2Nv bnRleHQoY3R4KTsKIAlwdXRfY3R4KGN0eCk7CiBlcnJfYWxsb2M6Ci0JZnJlZV9ldmVudChldmVu dCk7CisJLyoKKwkgKiBJZiBldmVudF9maWxlIGlzIHNldCwgdGhlIGZwdXQoKSBhYm92ZSB3aWxs IGhhdmUgY2FsbGVkIC0+cmVsZWFzZSgpCisJICogYW5kIHRoYXQgd2lsbCB0YWtlIGNhcmUgb2Yg ZnJlZWluZyB0aGUgZXZlbnQuCisJICovCisJaWYgKCFldmVudF9maWxlKQorCQlmcmVlX2V2ZW50 KGV2ZW50KTsKIGVycl9jcHVzOgogCXB1dF9vbmxpbmVfY3B1cygpOwogZXJyX3Rhc2s6CkBAIC03 NTE4LDcgKzc3MzEsMTEgQEAgdm9pZCBwZXJmX3BtdV9taWdyYXRlX2NvbnRleHQoc3RydWN0IHBt dSAqcG11LCBpbnQgc3JjX2NwdSwgaW50IGRzdF9jcHUpCiAJc3JjX2N0eCA9ICZwZXJfY3B1X3B0 cihwbXUtPnBtdV9jcHVfY29udGV4dCwgc3JjX2NwdSktPmN0eDsKIAlkc3RfY3R4ID0gJnBlcl9j cHVfcHRyKHBtdS0+cG11X2NwdV9jb250ZXh0LCBkc3RfY3B1KS0+Y3R4OwogCi0JbXV0ZXhfbG9j aygmc3JjX2N0eC0+bXV0ZXgpOworCS8qCisJICogU2VlIHBlcmZfZXZlbnRfY3R4X2xvY2soKSBm b3IgY29tbWVudHMgb24gdGhlIGRldGFpbHMKKwkgKiBvZiBzd2l6emxpbmcgcGVyZl9ldmVudDo6 Y3R4LgorCSAqLworCW11dGV4X2xvY2tfZG91YmxlKCZzcmNfY3R4LT5tdXRleCwgJmRzdF9jdHgt Pm11dGV4KTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZXZlbnQsIHRtcCwgJnNyY19jdHgt PmV2ZW50X2xpc3QsCiAJCQkJIGV2ZW50X2VudHJ5KSB7CiAJCXBlcmZfcmVtb3ZlX2Zyb21fY29u dGV4dChldmVudCwgZmFsc2UpOwpAQCAtNzUyNiwxMSArNzc0Myw5IEBAIHZvaWQgcGVyZl9wbXVf bWlncmF0ZV9jb250ZXh0KHN0cnVjdCBwbXUgKnBtdSwgaW50IHNyY19jcHUsIGludCBkc3RfY3B1 KQogCQlwdXRfY3R4KHNyY19jdHgpOwogCQlsaXN0X2FkZCgmZXZlbnQtPm1pZ3JhdGVfZW50cnks ICZldmVudHMpOwogCX0KLQltdXRleF91bmxvY2soJnNyY19jdHgtPm11dGV4KTsKIAogCXN5bmNo cm9uaXplX3JjdSgpOwogCi0JbXV0ZXhfbG9jaygmZHN0X2N0eC0+bXV0ZXgpOwogCWxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZShldmVudCwgdG1wLCAmZXZlbnRzLCBtaWdyYXRlX2VudHJ5KSB7CiAJ CWxpc3RfZGVsKCZldmVudC0+bWlncmF0ZV9lbnRyeSk7CiAJCWlmIChldmVudC0+c3RhdGUgPj0g UEVSRl9FVkVOVF9TVEFURV9PRkYpCkBAIC03NTQwLDYgKzc3NTUsNyBAQCB2b2lkIHBlcmZfcG11 X21pZ3JhdGVfY29udGV4dChzdHJ1Y3QgcG11ICpwbXUsIGludCBzcmNfY3B1LCBpbnQgZHN0X2Nw dSkKIAkJZ2V0X2N0eChkc3RfY3R4KTsKIAl9CiAJbXV0ZXhfdW5sb2NrKCZkc3RfY3R4LT5tdXRl eCk7CisJbXV0ZXhfdW5sb2NrKCZzcmNfY3R4LT5tdXRleCk7CiB9CiBFWFBPUlRfU1lNQk9MX0dQ TChwZXJmX3BtdV9taWdyYXRlX2NvbnRleHQpOwogCkBAIC04MDUwLDcgKzgyNjYsNiBAQCBzdGF0 aWMgdm9pZCBwZXJmX2V2ZW50X2luaXRfY3B1KGludCBjcHUpCiAJc3RydWN0IHN3ZXZlbnRfaHRh YmxlICpzd2hhc2ggPSAmcGVyX2NwdShzd2V2ZW50X2h0YWJsZSwgY3B1KTsKIAogCW11dGV4X2xv Y2soJnN3aGFzaC0+aGxpc3RfbXV0ZXgpOwotCXN3aGFzaC0+b25saW5lID0gdHJ1ZTsKIAlpZiAo c3doYXNoLT5obGlzdF9yZWZjb3VudCA+IDApIHsKIAkJc3RydWN0IHN3ZXZlbnRfaGxpc3QgKmhs aXN0OwogCkBAIC04MTAzLDE0ICs4MzE4LDcgQEAgc3RhdGljIHZvaWQgcGVyZl9ldmVudF9leGl0 X2NwdV9jb250ZXh0KGludCBjcHUpCiAKIHN0YXRpYyB2b2lkIHBlcmZfZXZlbnRfZXhpdF9jcHUo aW50IGNwdSkKIHsKLQlzdHJ1Y3Qgc3dldmVudF9odGFibGUgKnN3aGFzaCA9ICZwZXJfY3B1KHN3 ZXZlbnRfaHRhYmxlLCBjcHUpOwotCiAJcGVyZl9ldmVudF9leGl0X2NwdV9jb250ZXh0KGNwdSk7 Ci0KLQltdXRleF9sb2NrKCZzd2hhc2gtPmhsaXN0X211dGV4KTsKLQlzd2hhc2gtPm9ubGluZSA9 IGZhbHNlOwotCXN3ZXZlbnRfaGxpc3RfcmVsZWFzZShzd2hhc2gpOwotCW11dGV4X3VubG9jaygm c3doYXNoLT5obGlzdF9tdXRleCk7CiB9CiAjZWxzZQogc3RhdGljIGlubGluZSB2b2lkIHBlcmZf ZXZlbnRfZXhpdF9jcHUoaW50IGNwdSkgeyB9CmRpZmYgLS1naXQgYS9rZXJuZWwvaXJxL2dlbmVy aWMtY2hpcC5jIGIva2VybmVsL2lycS9nZW5lcmljLWNoaXAuYwppbmRleCA0NTJkNmYyYmEyMWQu LjBlOGUzZGM3YTI4OSAxMDA2NDQKLS0tIGEva2VybmVsL2lycS9nZW5lcmljLWNoaXAuYworKysg Yi9rZXJuZWwvaXJxL2dlbmVyaWMtY2hpcC5jCkBAIC0zOTUsOCArMzk1LDMwIEBAIHN0YXRpYyBp bnQgaXJxX21hcF9nZW5lcmljX2NoaXAoc3RydWN0IGlycV9kb21haW4gKmQsIHVuc2lnbmVkIGlu dCB2aXJxLAogCXJldHVybiAwOwogfQogCitzdGF0aWMgdm9pZCBpcnFfdW5tYXBfZ2VuZXJpY19j aGlwKHN0cnVjdCBpcnFfZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgdmlycSkKK3sKKwlzdHJ1Y3Qg aXJxX2RhdGEgKmRhdGEgPSBpcnFfZ2V0X2lycV9kYXRhKHZpcnEpOworCXN0cnVjdCBpcnFfZG9t YWluX2NoaXBfZ2VuZXJpYyAqZGdjID0gZC0+Z2M7CisJdW5zaWduZWQgaW50IGh3X2lycSA9IGRh dGEtPmh3aXJxOworCXN0cnVjdCBpcnFfY2hpcF9nZW5lcmljICpnYzsKKwlpbnQgaXJxX2lkeDsK KworCWdjID0gaXJxX2dldF9kb21haW5fZ2VuZXJpY19jaGlwKGQsIGh3X2lycSk7CisJaWYgKCFn YykKKwkJcmV0dXJuOworCisJaXJxX2lkeCA9IGh3X2lycSAlIGRnYy0+aXJxc19wZXJfY2hpcDsK KworCWNsZWFyX2JpdChpcnFfaWR4LCAmZ2MtPmluc3RhbGxlZCk7CisJZGF0YS0+Y2hpcCA9ICZu b19pcnFfY2hpcDsKKwlkYXRhLT5jaGlwX2RhdGEgPSBOVUxMOworCV9faXJxX3NldF9oYW5kbGVy KHZpcnEsIE5VTEwsIDAsIE5VTEwpOworCWlycV9zZXRfaGFuZGxlcl9kYXRhKHZpcnEsIE5VTEwp OworfQorCiBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgaXJxX2dlbmVyaWNfY2hpcF9vcHMgPSB7CiAJ Lm1hcAk9IGlycV9tYXBfZ2VuZXJpY19jaGlwLAorCS51bm1hcCAgPSBpcnFfdW5tYXBfZ2VuZXJp Y19jaGlwLAogCS54bGF0ZQk9IGlycV9kb21haW5feGxhdGVfb25ldHdvY2VsbCwKIH07CiBFWFBP UlRfU1lNQk9MX0dQTChpcnFfZ2VuZXJpY19jaGlwX29wcyk7CmRpZmYgLS1naXQgYS9rZXJuZWwv bG9ja2luZy9ydG11dGV4LmMgYi9rZXJuZWwvbG9ja2luZy9ydG11dGV4LmMKaW5kZXggM2M5MDgy MDM2MzY1Li41YjI4ZGUxMWU0YzkgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9sb2NraW5nL3J0bXV0ZXgu YworKysgYi9rZXJuZWwvbG9ja2luZy9ydG11dGV4LmMKQEAgLTY1LDggKzY1LDcyIEBAIHN0YXRp YyBpbmxpbmUgdm9pZCBjbGVhcl9ydF9tdXRleF93YWl0ZXJzKHN0cnVjdCBydF9tdXRleCAqbG9j aykKIAogc3RhdGljIHZvaWQgZml4dXBfcnRfbXV0ZXhfd2FpdGVycyhzdHJ1Y3QgcnRfbXV0ZXgg KmxvY2spCiB7Ci0JaWYgKCFydF9tdXRleF9oYXNfd2FpdGVycyhsb2NrKSkKLQkJY2xlYXJfcnRf bXV0ZXhfd2FpdGVycyhsb2NrKTsKKwl1bnNpZ25lZCBsb25nIG93bmVyLCAqcCA9ICh1bnNpZ25l ZCBsb25nICopICZsb2NrLT5vd25lcjsKKworCWlmIChydF9tdXRleF9oYXNfd2FpdGVycyhsb2Nr KSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBUaGUgcmJ0cmVlIGhhcyBubyB3YWl0ZXJzIGVucXVl dWVkLCBub3cgbWFrZSBzdXJlIHRoYXQgdGhlCisJICogbG9jay0+b3duZXIgc3RpbGwgaGFzIHRo ZSB3YWl0ZXJzIGJpdCBzZXQsIG90aGVyd2lzZSB0aGUKKwkgKiBmb2xsb3dpbmcgY2FuIGhhcHBl bjoKKwkgKgorCSAqIENQVSAwCUNQVSAxCQlDUFUyCisJICogbC0+b3duZXI9VDEKKwkgKgkJcnRf bXV0ZXhfbG9jayhsKQorCSAqCQlsb2NrKGwtPmxvY2spCisJICoJCWwtPm93bmVyID0gVDEgfCBI QVNfV0FJVEVSUzsKKwkgKgkJZW5xdWV1ZShUMikKKwkgKgkJYm9vc3QoKQorCSAqCQkgIHVubG9j ayhsLT5sb2NrKQorCSAqCQlibG9jaygpCisJICoKKwkgKgkJCQlydF9tdXRleF9sb2NrKGwpCisJ ICoJCQkJbG9jayhsLT5sb2NrKQorCSAqCQkJCWwtPm93bmVyID0gVDEgfCBIQVNfV0FJVEVSUzsK KwkgKgkJCQllbnF1ZXVlKFQzKQorCSAqCQkJCWJvb3N0KCkKKwkgKgkJCQkgIHVubG9jayhsLT5s b2NrKQorCSAqCQkJCWJsb2NrKCkKKwkgKgkJc2lnbmFsKC0+VDIpCXNpZ25hbCgtPlQzKQorCSAq CQlsb2NrKGwtPmxvY2spCisJICoJCWRlcXVldWUoVDIpCisJICoJCWRlYm9vc3QoKQorCSAqCQkg IHVubG9jayhsLT5sb2NrKQorCSAqCQkJCWxvY2sobC0+bG9jaykKKwkgKgkJCQlkZXF1ZXVlKFQz KQorCSAqCQkJCSA9PT4gd2FpdCBsaXN0IGlzIGVtcHR5CisJICoJCQkJZGVib29zdCgpCisJICoJ CQkJIHVubG9jayhsLT5sb2NrKQorCSAqCQlsb2NrKGwtPmxvY2spCisJICoJCWZpeHVwX3J0X211 dGV4X3dhaXRlcnMoKQorCSAqCQkgIGlmICh3YWl0X2xpc3RfZW1wdHkobCkgeworCSAqCQkgICAg bC0+b3duZXIgPSBvd25lcgorCSAqCQkgICAgb3duZXIgPSBsLT5vd25lciAmIH5IQVNfV0FJVEVS UzsKKwkgKgkJICAgICAgPT0+IGwtPm93bmVyID0gVDEKKwkgKgkJICB9CisJICoJCQkJbG9jayhs LT5sb2NrKQorCSAqIHJ0X211dGV4X3VubG9jayhsKQkJZml4dXBfcnRfbXV0ZXhfd2FpdGVycygp CisJICoJCQkJICBpZiAod2FpdF9saXN0X2VtcHR5KGwpIHsKKwkgKgkJCQkgICAgb3duZXIgPSBs LT5vd25lciAmIH5IQVNfV0FJVEVSUzsKKwkgKiBjbXB4Y2hnKGwtPm93bmVyLCBUMSwgTlVMTCkK KwkgKiAgPT09PiBTdWNjZXNzIChsLT5vd25lciA9IE5VTEwpCisJICoKKwkgKgkJCQkgICAgbC0+ b3duZXIgPSBvd25lcgorCSAqCQkJCSAgICAgID09PiBsLT5vd25lciA9IFQxCisJICoJCQkJICB9 CisJICoKKwkgKiBXaXRoIHRoZSBjaGVjayBmb3IgdGhlIHdhaXRlciBiaXQgaW4gcGxhY2UgVDMg b24gQ1BVMiB3aWxsIG5vdAorCSAqIG92ZXJ3cml0ZS4gQWxsIHRhc2tzIGZpZGRsaW5nIHdpdGgg dGhlIHdhaXRlcnMgYml0IGFyZQorCSAqIHNlcmlhbGl6ZWQgYnkgbC0+bG9jaywgc28gbm90aGlu ZyBlbHNlIGNhbiBtb2RpZnkgdGhlIHdhaXRlcnMKKwkgKiBiaXQuIElmIHRoZSBiaXQgaXMgc2V0 IHRoZW4gbm90aGluZyBjYW4gY2hhbmdlIGwtPm93bmVyIGVpdGhlcgorCSAqIHNvIHRoZSBzaW1w bGUgUk1XIGlzIHNhZmUuIFRoZSBjbXB4Y2hnKCkgd2lsbCBzaW1wbHkgZmFpbCBpZiBpdAorCSAq IGhhcHBlbnMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgUk1XIGJlY2F1c2UgdGhlIHdhaXRlcnMgYml0 IGlzCisJICogc3RpbGwgc2V0LgorCSAqLworCW93bmVyID0gQUNDRVNTX09OQ0UoKnApOworCWlm IChvd25lciAmIFJUX01VVEVYX0hBU19XQUlURVJTKQorCQlBQ0NFU1NfT05DRSgqcCkgPSBvd25l ciAmIH5SVF9NVVRFWF9IQVNfV0FJVEVSUzsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2tlcm5lbC9w YW5pYy5jIGIva2VybmVsL3BhbmljLmMKaW5kZXggNTEyNjY1MjFlMTczLi40ZGU5ODhjMmFhZWMg MTAwNjQ0Ci0tLSBhL2tlcm5lbC9wYW5pYy5jCisrKyBiL2tlcm5lbC9wYW5pYy5jCkBAIC02MCw2 ICs2MCwzMiBAQCB2b2lkIF9fd2VhayBwYW5pY19zbXBfc2VsZl9zdG9wKHZvaWQpCiAJCWNwdV9y ZWxheCgpOwogfQogCisvKgorICogU3RvcCBvdGhlciBDUFVzIGluIHBhbmljLiAgQXJjaGl0ZWN0 dXJlIGRlcGVuZGVudCBjb2RlIG1heSBvdmVycmlkZSB0aGlzCisgKiB3aXRoIG1vcmUgc3VpdGFi bGUgdmVyc2lvbi4gIEZvciBleGFtcGxlLCBpZiB0aGUgYXJjaGl0ZWN0dXJlIHN1cHBvcnRzCisg KiBjcmFzaCBkdW1wLCBpdCBzaG91bGQgc2F2ZSByZWdpc3RlcnMgb2YgZWFjaCBzdG9wcGVkIENQ VSBhbmQgZGlzYWJsZQorICogcGVyLUNQVSBmZWF0dXJlcyBzdWNoIGFzIHZpcnR1YWxpemF0aW9u IGV4dGVuc2lvbnMuCisgKi8KK3ZvaWQgX193ZWFrIGNyYXNoX3NtcF9zZW5kX3N0b3Aodm9pZCkK K3sKKwlzdGF0aWMgaW50IGNwdXNfc3RvcHBlZDsKKworCS8qCisJICogVGhpcyBmdW5jdGlvbiBj YW4gYmUgY2FsbGVkIHR3aWNlIGluIHBhbmljIHBhdGgsIGJ1dCBvYnZpb3VzbHkKKwkgKiB3ZSBl eGVjdXRlIHRoaXMgb25seSBvbmNlLgorCSAqLworCWlmIChjcHVzX3N0b3BwZWQpCisJCXJldHVy bjsKKworCS8qCisJICogTm90ZSBzbXBfc2VuZF9zdG9wIGlzIHRoZSB1c3VhbCBzbXAgc2h1dGRv d24gZnVuY3Rpb24sIHdoaWNoCisJICogdW5mb3J0dW5hdGVseSBtZWFucyBpdCBtYXkgbm90IGJl IGhhcmRlbmVkIHRvIHdvcmsgaW4gYSBwYW5pYworCSAqIHNpdHVhdGlvbi4KKwkgKi8KKwlzbXBf c2VuZF9zdG9wKCk7CisJY3B1c19zdG9wcGVkID0gMTsKK30KKwogLyoqCiAgKglwYW5pYyAtIGhh bHQgdGhlIHN5c3RlbQogICoJQGZtdDogVGhlIHRleHQgc3RyaW5nIHRvIHByaW50CkBAIC0xMTcs MTUgKzE0MywyMyBAQCB2b2lkIHBhbmljKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogCSAqIElmIHdl IHdhbnQgdG8gcnVuIHRoaXMgYWZ0ZXIgY2FsbGluZyBwYW5pY19ub3RpZmllcnMsIHBhc3MKIAkg KiB0aGUgImNyYXNoX2tleGVjX3Bvc3Rfbm90aWZpZXJzIiBvcHRpb24gdG8gdGhlIGtlcm5lbC4K IAkgKi8KLQlpZiAoIWNyYXNoX2tleGVjX3Bvc3Rfbm90aWZpZXJzKQorCWlmICghY3Jhc2hfa2V4 ZWNfcG9zdF9ub3RpZmllcnMpIHsKIAkJY3Jhc2hfa2V4ZWMoTlVMTCk7CiAKLQkvKgotCSAqIE5v dGUgc21wX3NlbmRfc3RvcCBpcyB0aGUgdXN1YWwgc21wIHNodXRkb3duIGZ1bmN0aW9uLCB3aGlj aAotCSAqIHVuZm9ydHVuYXRlbHkgbWVhbnMgaXQgbWF5IG5vdCBiZSBoYXJkZW5lZCB0byB3b3Jr IGluIGEgcGFuaWMKLQkgKiBzaXR1YXRpb24uCi0JICovCi0Jc21wX3NlbmRfc3RvcCgpOworCQkv KgorCQkgKiBOb3RlIHNtcF9zZW5kX3N0b3AgaXMgdGhlIHVzdWFsIHNtcCBzaHV0ZG93biBmdW5j dGlvbiwgd2hpY2gKKwkJICogdW5mb3J0dW5hdGVseSBtZWFucyBpdCBtYXkgbm90IGJlIGhhcmRl bmVkIHRvIHdvcmsgaW4gYQorCQkgKiBwYW5pYyBzaXR1YXRpb24uCisJCSAqLworCQlzbXBfc2Vu ZF9zdG9wKCk7CisJfSBlbHNlIHsKKwkJLyoKKwkJICogSWYgd2Ugd2FudCB0byBkbyBjcmFzaCBk dW1wIGFmdGVyIG5vdGlmaWVyIGNhbGxzIGFuZAorCQkgKiBrbXNnX2R1bXAsIHdlIHdpbGwgbmVl ZCBhcmNoaXRlY3R1cmUgZGVwZW5kZW50IGV4dHJhCisJCSAqIHdvcmtzIGluIGFkZGl0aW9uIHRv IHN0b3BwaW5nIG90aGVyIENQVXMuCisJCSAqLworCQljcmFzaF9zbXBfc2VuZF9zdG9wKCk7CisJ fQogCiAJLyoKIAkgKiBSdW4gYW55IHBhbmljIGhhbmRsZXJzLCBpbmNsdWRpbmcgdGhvc2UgdGhh dCBtaWdodCBuZWVkIHRvCmRpZmYgLS1naXQgYS9rZXJuZWwvcG93ZXIvc3VzcGVuZF90ZXN0LmMg Yi9rZXJuZWwvcG93ZXIvc3VzcGVuZF90ZXN0LmMKaW5kZXggMjY5YjA5N2U3OGVhLi43NDM2MTVi ZmRjZWMgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9wb3dlci9zdXNwZW5kX3Rlc3QuYworKysgYi9rZXJu ZWwvcG93ZXIvc3VzcGVuZF90ZXN0LmMKQEAgLTE2OSw4ICsxNjksMTAgQEAgc3RhdGljIGludCBf X2luaXQgdGVzdF9zdXNwZW5kKHZvaWQpCiAKIAkvKiBSVENzIGhhdmUgaW5pdGlhbGl6ZWQgYnkg bm93IHRvbyAuLi4gY2FuIHdlIHVzZSBvbmU/ICovCiAJZGV2ID0gY2xhc3NfZmluZF9kZXZpY2Uo cnRjX2NsYXNzLCBOVUxMLCBOVUxMLCBoYXNfd2FrZWFsYXJtKTsKLQlpZiAoZGV2KQorCWlmIChk ZXYpIHsKIAkJcnRjID0gcnRjX2NsYXNzX29wZW4oZGV2X25hbWUoZGV2KSk7CisJCXB1dF9kZXZp Y2UoZGV2KTsKKwl9CiAJaWYgKCFydGMpIHsKIAkJcHJpbnRrKHdhcm5fbm9fcnRjKTsKIAkJZ290 byBkb25lOwpkaWZmIC0tZ2l0IGEvbGliL2dlbmFsbG9jLmMgYi9saWIvZ2VuYWxsb2MuYwppbmRl eCBiZGI5YTQ1NmJjYmIuLjZkMWU4NDkwMDdkYyAxMDA2NDQKLS0tIGEvbGliL2dlbmFsbG9jLmMK KysrIGIvbGliL2dlbmFsbG9jLmMKQEAgLTI3Myw3ICsyNzMsNyBAQCB1bnNpZ25lZCBsb25nIGdl bl9wb29sX2FsbG9jKHN0cnVjdCBnZW5fcG9vbCAqcG9vbCwgc2l6ZV90IHNpemUpCiAJc3RydWN0 IGdlbl9wb29sX2NodW5rICpjaHVuazsKIAl1bnNpZ25lZCBsb25nIGFkZHIgPSAwOwogCWludCBv cmRlciA9IHBvb2wtPm1pbl9hbGxvY19vcmRlcjsKLQlpbnQgbmJpdHMsIHN0YXJ0X2JpdCA9IDAs IGVuZF9iaXQsIHJlbWFpbjsKKwlpbnQgbmJpdHMsIHN0YXJ0X2JpdCwgZW5kX2JpdCwgcmVtYWlu OwogCiAjaWZuZGVmIENPTkZJR19BUkNIX0hBVkVfTk1JX1NBRkVfQ01QWENIRwogCUJVR19PTihp bl9ubWkoKSk7CkBAIC0yODgsNiArMjg4LDcgQEAgdW5zaWduZWQgbG9uZyBnZW5fcG9vbF9hbGxv YyhzdHJ1Y3QgZ2VuX3Bvb2wgKnBvb2wsIHNpemVfdCBzaXplKQogCQlpZiAoc2l6ZSA+IGF0b21p Y19yZWFkKCZjaHVuay0+YXZhaWwpKQogCQkJY29udGludWU7CiAKKwkJc3RhcnRfYml0ID0gMDsK IAkJZW5kX2JpdCA9IGNodW5rX3NpemUoY2h1bmspID4+IG9yZGVyOwogcmV0cnk6CiAJCXN0YXJ0 X2JpdCA9IHBvb2wtPmFsZ28oY2h1bmstPmJpdHMsIGVuZF9iaXQsIHN0YXJ0X2JpdCwgbmJpdHMs CmRpZmYgLS1naXQgYS9saWIvbXBpL21waS1wb3cuYyBiL2xpYi9tcGkvbXBpLXBvdy5jCmluZGV4 IDU0NjRjODc0NGVhOS4uZTI0Mzg4YTg2M2E3IDEwMDY0NAotLS0gYS9saWIvbXBpL21waS1wb3cu YworKysgYi9saWIvbXBpL21waS1wb3cuYwpAQCAtNjQsOCArNjQsMTMgQEAgaW50IG1waV9wb3dt KE1QSSByZXMsIE1QSSBiYXNlLCBNUEkgZXhwLCBNUEkgbW9kKQogCWlmICghZXNpemUpIHsKIAkJ LyogRXhwb25lbnQgaXMgemVybywgcmVzdWx0IGlzIDEgbW9kIE1PRCwgaS5lLiwgMSBvciAwCiAJ CSAqIGRlcGVuZGluZyBvbiBpZiBNT0QgZXF1YWxzIDEuICAqLwotCQlycFswXSA9IDE7CiAJCXJl cy0+bmxpbWJzID0gKG1zaXplID09IDEgJiYgbW9kLT5kWzBdID09IDEpID8gMCA6IDE7CisJCWlm IChyZXMtPm5saW1icykgeworCQkJaWYgKG1waV9yZXNpemUocmVzLCAxKSA8IDApCisJCQkJZ290 byBlbm9tZW07CisJCQlycCA9IHJlcy0+ZDsKKwkJCXJwWzBdID0gMTsKKwkJfQogCQlyZXMtPnNp Z24gPSAwOwogCQlnb3RvIGxlYXZlOwogCX0KZGlmZiAtLWdpdCBhL21tL2ZpbGVtYXAuYyBiL21t L2ZpbGVtYXAuYwppbmRleCAwNzYyODI1NjE4NzAuLjhmNTVhMWJiMTllMCAxMDA2NDQKLS0tIGEv bW0vZmlsZW1hcC5jCisrKyBiL21tL2ZpbGVtYXAuYwpAQCAtNTQ1LDcgKzU0NSw2IEBAIGludCBy ZXBsYWNlX3BhZ2VfY2FjaGVfcGFnZShzdHJ1Y3QgcGFnZSAqb2xkLCBzdHJ1Y3QgcGFnZSAqbmV3 LCBnZnBfdCBnZnBfbWFzaykKIAkJX19kZWxldGVfZnJvbV9wYWdlX2NhY2hlKG9sZCwgTlVMTCk7 CiAJCWVycm9yID0gcGFnZV9jYWNoZV90cmVlX2luc2VydChtYXBwaW5nLCBuZXcsIE5VTEwpOwog CQlCVUdfT04oZXJyb3IpOwotCQltYXBwaW5nLT5ucnBhZ2VzKys7CiAJCV9faW5jX3pvbmVfcGFn ZV9zdGF0ZShuZXcsIE5SX0ZJTEVfUEFHRVMpOwogCQlpZiAoUGFnZVN3YXBCYWNrZWQobmV3KSkK IAkJCV9faW5jX3pvbmVfcGFnZV9zdGF0ZShuZXcsIE5SX1NITUVNKTsKQEAgLTE0NjUsNiArMTQ2 NCwxMCBAQCBzdGF0aWMgc3NpemVfdCBkb19nZW5lcmljX2ZpbGVfcmVhZChzdHJ1Y3QgZmlsZSAq ZmlscCwgbG9mZl90ICpwcG9zLAogCXVuc2lnbmVkIGludCBwcmV2X29mZnNldDsKIAlpbnQgZXJy b3IgPSAwOwogCisJaWYgKHVubGlrZWx5KCpwcG9zID49IGlub2RlLT5pX3NiLT5zX21heGJ5dGVz KSkKKwkJcmV0dXJuIC1FSU5WQUw7CisJaW92X2l0ZXJfdHJ1bmNhdGUoaXRlciwgaW5vZGUtPmlf c2ItPnNfbWF4Ynl0ZXMpOworCiAJaW5kZXggPSAqcHBvcyA+PiBQQUdFX0NBQ0hFX1NISUZUOwog CXByZXZfaW5kZXggPSByYS0+cHJldl9wb3MgPj4gUEFHRV9DQUNIRV9TSElGVDsKIAlwcmV2X29m ZnNldCA9IHJhLT5wcmV2X3BvcyAmIChQQUdFX0NBQ0hFX1NJWkUtMSk7CmRpZmYgLS1naXQgYS9t bS9odWdldGxiLmMgYi9tbS9odWdldGxiLmMKaW5kZXggMDIyNWYxYzYyNjNhLi5mY2E2YzZjOTFk NzYgMTAwNjQ0Ci0tLSBhL21tL2h1Z2V0bGIuYworKysgYi9tbS9odWdldGxiLmMKQEAgLTEwNjcs MzcgKzEwNjcsNTQgQEAgc3RhdGljIGludCBmcmVlX3Bvb2xfaHVnZV9wYWdlKHN0cnVjdCBoc3Rh dGUgKmgsIG5vZGVtYXNrX3QgKm5vZGVzX2FsbG93ZWQsCiAKIC8qCiAgKiBEaXNzb2x2ZSBhIGdp dmVuIGZyZWUgaHVnZXBhZ2UgaW50byBmcmVlIGJ1ZGR5IHBhZ2VzLiBUaGlzIGZ1bmN0aW9uIGRv ZXMKLSAqIG5vdGhpbmcgZm9yIGluLXVzZSAoaW5jbHVkaW5nIHN1cnBsdXMpIGh1Z2VwYWdlcy4K KyAqIG5vdGhpbmcgZm9yIGluLXVzZSAoaW5jbHVkaW5nIHN1cnBsdXMpIGh1Z2VwYWdlcy4gUmV0 dXJucyAtRUJVU1kgaWYgdGhlCisgKiBudW1iZXIgb2YgZnJlZSBodWdlcGFnZXMgd291bGQgYmUg cmVkdWNlZCBiZWxvdyB0aGUgbnVtYmVyIG9mIHJlc2VydmVkCisgKiBodWdlcGFnZXMuCiAgKi8K LXN0YXRpYyB2b2lkIGRpc3NvbHZlX2ZyZWVfaHVnZV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlKQor c3RhdGljIGludCBkaXNzb2x2ZV9mcmVlX2h1Z2VfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKIHsK KwlpbnQgcmMgPSAwOworCiAJc3Bpbl9sb2NrKCZodWdldGxiX2xvY2spOwogCWlmIChQYWdlSHVn ZShwYWdlKSAmJiAhcGFnZV9jb3VudChwYWdlKSkgewotCQlzdHJ1Y3QgaHN0YXRlICpoID0gcGFn ZV9oc3RhdGUocGFnZSk7Ci0JCWludCBuaWQgPSBwYWdlX3RvX25pZChwYWdlKTsKLQkJbGlzdF9k ZWwoJnBhZ2UtPmxydSk7CisJCXN0cnVjdCBwYWdlICpoZWFkID0gY29tcG91bmRfaGVhZChwYWdl KTsKKwkJc3RydWN0IGhzdGF0ZSAqaCA9IHBhZ2VfaHN0YXRlKGhlYWQpOworCQlpbnQgbmlkID0g cGFnZV90b19uaWQoaGVhZCk7CisJCWlmIChoLT5mcmVlX2h1Z2VfcGFnZXMgLSBoLT5yZXN2X2h1 Z2VfcGFnZXMgPT0gMCkgeworCQkJcmMgPSAtRUJVU1k7CisJCQlnb3RvIG91dDsKKwkJfQorCQls aXN0X2RlbCgmaGVhZC0+bHJ1KTsKIAkJaC0+ZnJlZV9odWdlX3BhZ2VzLS07CiAJCWgtPmZyZWVf aHVnZV9wYWdlc19ub2RlW25pZF0tLTsKLQkJdXBkYXRlX2FuZF9mcmVlX3BhZ2UoaCwgcGFnZSk7 CisJCXVwZGF0ZV9hbmRfZnJlZV9wYWdlKGgsIGhlYWQpOwogCX0KK291dDoKIAlzcGluX3VubG9j aygmaHVnZXRsYl9sb2NrKTsKKwlyZXR1cm4gcmM7CiB9CiAKIC8qCiAgKiBEaXNzb2x2ZSBmcmVl IGh1Z2VwYWdlcyBpbiBhIGdpdmVuIHBmbiByYW5nZS4gVXNlZCBieSBtZW1vcnkgaG90cGx1ZyB0 bwogICogbWFrZSBzcGVjaWZpZWQgbWVtb3J5IGJsb2NrcyByZW1vdmFibGUgZnJvbSB0aGUgc3lz dGVtLgotICogTm90ZSB0aGF0IHN0YXJ0X3BmbiBzaG91bGQgYWxpZ25lZCB3aXRoIChtaW5pbXVt KSBodWdlcGFnZSBzaXplLgorICogTm90ZSB0aGF0IHRoaXMgd2lsbCBkaXNzb2x2ZSBhIGZyZWUg Z2lnYW50aWMgaHVnZXBhZ2UgY29tcGxldGVseSwgaWYgYW55CisgKiBwYXJ0IG9mIGl0IGxpZXMg d2l0aGluIHRoZSBnaXZlbiByYW5nZS4KKyAqIEFsc28gbm90ZSB0aGF0IGlmIGRpc3NvbHZlX2Zy ZWVfaHVnZV9wYWdlKCkgcmV0dXJucyB3aXRoIGFuIGVycm9yLCBhbGwKKyAqIGZyZWUgaHVnZXBh Z2VzIHRoYXQgd2VyZSBkaXNzb2x2ZWQgYmVmb3JlIHRoYXQgZXJyb3IgYXJlIGxvc3QuCiAgKi8K LXZvaWQgZGlzc29sdmVfZnJlZV9odWdlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1 bnNpZ25lZCBsb25nIGVuZF9wZm4pCitpbnQgZGlzc29sdmVfZnJlZV9odWdlX3BhZ2VzKHVuc2ln bmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nIGVuZF9wZm4pCiB7CiAJdW5zaWduZWQg bG9uZyBwZm47CisJaW50IHJjID0gMDsKIAogCWlmICghaHVnZXBhZ2VzX3N1cHBvcnRlZCgpKQot CQlyZXR1cm47CisJCXJldHVybiByYzsKIAotCVZNX0JVR19PTighSVNfQUxJR05FRChzdGFydF9w Zm4sIDEgPDwgbWluaW11bV9vcmRlcikpOwogCWZvciAocGZuID0gc3RhcnRfcGZuOyBwZm4gPCBl bmRfcGZuOyBwZm4gKz0gMSA8PCBtaW5pbXVtX29yZGVyKQotCQlkaXNzb2x2ZV9mcmVlX2h1Z2Vf cGFnZShwZm5fdG9fcGFnZShwZm4pKTsKKwkJaWYgKHJjID0gZGlzc29sdmVfZnJlZV9odWdlX3Bh Z2UocGZuX3RvX3BhZ2UocGZuKSkpCisJCQlicmVhazsKKworCXJldHVybiByYzsKIH0KIAogc3Rh dGljIHN0cnVjdCBwYWdlICphbGxvY19idWRkeV9odWdlX3BhZ2Uoc3RydWN0IGhzdGF0ZSAqaCwg aW50IG5pZCkKZGlmZiAtLWdpdCBhL21tL21lbW9yeV9ob3RwbHVnLmMgYi9tbS9tZW1vcnlfaG90 cGx1Zy5jCmluZGV4IDRlYzFkNGQ3NTIxYS4uNDE3NDQ4N2ExMjYxIDEwMDY0NAotLS0gYS9tbS9t ZW1vcnlfaG90cGx1Zy5jCisrKyBiL21tL21lbW9yeV9ob3RwbHVnLmMKQEAgLTE3MzIsNyArMTcz Miw5IEBAIHJlcGVhdDoKIAkgKiBkaXNzb2x2ZSBmcmVlIGh1Z2VwYWdlcyBpbiB0aGUgbWVtb3J5 IGJsb2NrIGJlZm9yZSBkb2luZyBvZmZsaW5pbmcKIAkgKiBhY3R1YWxseSBpbiBvcmRlciB0byBt YWtlIGh1Z2V0bGJmcydzIG9iamVjdCBjb3VudGluZyBjb25zaXN0ZW50LgogCSAqLwotCWRpc3Nv bHZlX2ZyZWVfaHVnZV9wYWdlcyhzdGFydF9wZm4sIGVuZF9wZm4pOworCXJldCA9IGRpc3NvbHZl X2ZyZWVfaHVnZV9wYWdlcyhzdGFydF9wZm4sIGVuZF9wZm4pOworCWlmIChyZXQpCisJCWdvdG8g ZmFpbGVkX3JlbW92YWw7CiAJLyogY2hlY2sgYWdhaW4gKi8KIAlvZmZsaW5lZF9wYWdlcyA9IGNo ZWNrX3BhZ2VzX2lzb2xhdGVkKHN0YXJ0X3BmbiwgZW5kX3Bmbik7CiAJaWYgKG9mZmxpbmVkX3Bh Z2VzIDwgMCkgewpkaWZmIC0tZ2l0IGEvbW0vc3dhcGZpbGUuYyBiL21tL3N3YXBmaWxlLmMKaW5k ZXggNGM1MjRmN2JkMGJmLi45NzIzNTg4N2NiNWIgMTAwNjQ0Ci0tLSBhL21tL3N3YXBmaWxlLmMK KysrIGIvbW0vc3dhcGZpbGUuYwpAQCAtMjE4NSw2ICsyMTg1LDggQEAgc3RhdGljIHVuc2lnbmVk IGxvbmcgcmVhZF9zd2FwX2hlYWRlcihzdHJ1Y3Qgc3dhcF9pbmZvX3N0cnVjdCAqcCwKIAkJc3dh YjMycygmc3dhcF9oZWFkZXItPmluZm8udmVyc2lvbik7CiAJCXN3YWIzMnMoJnN3YXBfaGVhZGVy LT5pbmZvLmxhc3RfcGFnZSk7CiAJCXN3YWIzMnMoJnN3YXBfaGVhZGVyLT5pbmZvLm5yX2JhZHBh Z2VzKTsKKwkJaWYgKHN3YXBfaGVhZGVyLT5pbmZvLm5yX2JhZHBhZ2VzID4gTUFYX1NXQVBfQkFE UEFHRVMpCisJCQlyZXR1cm4gMDsKIAkJZm9yIChpID0gMDsgaSA8IHN3YXBfaGVhZGVyLT5pbmZv Lm5yX2JhZHBhZ2VzOyBpKyspCiAJCQlzd2FiMzJzKCZzd2FwX2hlYWRlci0+aW5mby5iYWRwYWdl c1tpXSk7CiAJfQpkaWZmIC0tZ2l0IGEvbmV0L2JhdG1hbi1hZHYvaGFyZC1pbnRlcmZhY2UuYyBi L25ldC9iYXRtYW4tYWR2L2hhcmQtaW50ZXJmYWNlLmMKaW5kZXggZmJkYTZiNTRiYWZmLi5kYjA1 NDQyMWFkMDggMTAwNjQ0Ci0tLSBhL25ldC9iYXRtYW4tYWR2L2hhcmQtaW50ZXJmYWNlLmMKKysr IGIvbmV0L2JhdG1hbi1hZHYvaGFyZC1pbnRlcmZhY2UuYwpAQCAtNTIyLDcgKzUyMiw2IEBAIHZv aWQgYmF0YWR2X2hhcmRpZl9kaXNhYmxlX2ludGVyZmFjZShzdHJ1Y3QgYmF0YWR2X2hhcmRfaWZh Y2UgKmhhcmRfaWZhY2UsCiAJfQogCiAJbmV0ZGV2X3VwcGVyX2Rldl91bmxpbmsoaGFyZF9pZmFj ZS0+bmV0X2RldiwgaGFyZF9pZmFjZS0+c29mdF9pZmFjZSk7Ci0JaGFyZF9pZmFjZS0+c29mdF9p ZmFjZSA9IE5VTEw7CiAJYmF0YWR2X2hhcmRpZl9mcmVlX3JlZihoYXJkX2lmYWNlKTsKIAogb3V0 OgpkaWZmIC0tZ2l0IGEvbmV0L2JhdG1hbi1hZHYvdHJhbnNsYXRpb24tdGFibGUuYyBiL25ldC9i YXRtYW4tYWR2L3RyYW5zbGF0aW9uLXRhYmxlLmMKaW5kZXggN2RhM2Y4NGZmZjJmLi5jOTMwMDdk OWM0MDMgMTAwNjQ0Ci0tLSBhL25ldC9iYXRtYW4tYWR2L3RyYW5zbGF0aW9uLXRhYmxlLmMKKysr IGIvbmV0L2JhdG1hbi1hZHYvdHJhbnNsYXRpb24tdGFibGUuYwpAQCAtMjcyMiw3ICsyNzIyLDcg QEAgc3RhdGljIGJvb2wgYmF0YWR2X3NlbmRfbXlfdHRfcmVzcG9uc2Uoc3RydWN0IGJhdGFkdl9w cml2ICpiYXRfcHJpdiwKIAkJCQkJCQkgICAgICZ0dmx2X3R0X2RhdGEsCiAJCQkJCQkJICAgICAm dHRfY2hhbmdlLAogCQkJCQkJCSAgICAgJnR0X2xlbik7Ci0JCWlmICghdHRfbGVuKQorCQlpZiAo IXR0X2xlbiB8fCAhdHZsdl9sZW4pCiAJCQlnb3RvIHVubG9jazsKIAogCQkvKiBDb3B5IHRoZSBs YXN0IG9yaWdfbm9kZSdzIE9HTSBidWZmZXIgKi8KQEAgLTI3NDAsNyArMjc0MCw3IEBAIHN0YXRp YyBib29sIGJhdGFkdl9zZW5kX215X3R0X3Jlc3BvbnNlKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0 X3ByaXYsCiAJCQkJCQkJICAgICAmdHZsdl90dF9kYXRhLAogCQkJCQkJCSAgICAgJnR0X2NoYW5n ZSwKIAkJCQkJCQkgICAgICZ0dF9sZW4pOwotCQlpZiAoIXR0X2xlbikKKwkJaWYgKCF0dF9sZW4g fHwgIXR2bHZfbGVuKQogCQkJZ290byBvdXQ7CiAKIAkJLyogZmlsbCB0aGUgcmVzdCBvZiB0aGUg dHZsdiB3aXRoIHRoZSByZWFsIFRUIGVudHJpZXMgKi8KZGlmZiAtLWdpdCBhL25ldC9icmlkZ2Uv YnJfbXVsdGljYXN0LmMgYi9uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jCmluZGV4IDNiMTA0YTZk Nzk2Yy4uM2M1OTQxODVkZTM2IDEwMDY0NAotLS0gYS9uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5j CisrKyBiL25ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmMKQEAgLTkyOCwxMyArOTI4LDEyIEBAIHN0 YXRpYyB2b2lkIGJyX211bHRpY2FzdF9lbmFibGUoc3RydWN0IGJyaWRnZV9tY2FzdF9vd25fcXVl cnkgKnF1ZXJ5KQogCQltb2RfdGltZXIoJnF1ZXJ5LT50aW1lciwgamlmZmllcyk7CiB9CiAKLXZv aWQgYnJfbXVsdGljYXN0X2VuYWJsZV9wb3J0KHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnBvcnQp CitzdGF0aWMgdm9pZCBfX2JyX211bHRpY2FzdF9lbmFibGVfcG9ydChzdHJ1Y3QgbmV0X2JyaWRn ZV9wb3J0ICpwb3J0KQogewogCXN0cnVjdCBuZXRfYnJpZGdlICpiciA9IHBvcnQtPmJyOwogCi0J c3Bpbl9sb2NrKCZici0+bXVsdGljYXN0X2xvY2spOwogCWlmIChici0+bXVsdGljYXN0X2Rpc2Fi bGVkIHx8ICFuZXRpZl9ydW5uaW5nKGJyLT5kZXYpKQotCQlnb3RvIG91dDsKKwkJcmV0dXJuOwog CiAJYnJfbXVsdGljYXN0X2VuYWJsZSgmcG9ydC0+aXA0X293bl9xdWVyeSk7CiAjaWYgSVNfRU5B QkxFRChDT05GSUdfSVBWNikKQEAgLTk0Miw4ICs5NDEsMTQgQEAgdm9pZCBicl9tdWx0aWNhc3Rf ZW5hYmxlX3BvcnQoc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcG9ydCkKICNlbmRpZgogCWlmIChw b3J0LT5tdWx0aWNhc3Rfcm91dGVyID09IDIgJiYgaGxpc3RfdW5oYXNoZWQoJnBvcnQtPnJsaXN0 KSkKIAkJYnJfbXVsdGljYXN0X2FkZF9yb3V0ZXIoYnIsIHBvcnQpOworfQogCi1vdXQ6Cit2b2lk IGJyX211bHRpY2FzdF9lbmFibGVfcG9ydChzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwb3J0KQor eworCXN0cnVjdCBuZXRfYnJpZGdlICpiciA9IHBvcnQtPmJyOworCisJc3Bpbl9sb2NrKCZici0+ bXVsdGljYXN0X2xvY2spOworCV9fYnJfbXVsdGljYXN0X2VuYWJsZV9wb3J0KHBvcnQpOwogCXNw aW5fdW5sb2NrKCZici0+bXVsdGljYXN0X2xvY2spOwogfQogCkBAIC0yMDQ3LDggKzIwNTIsOSBA QCBzdGF0aWMgdm9pZCBicl9tdWx0aWNhc3Rfc3RhcnRfcXVlcmllcihzdHJ1Y3QgbmV0X2JyaWRn ZSAqYnIsCiAKIGludCBicl9tdWx0aWNhc3RfdG9nZ2xlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwg dW5zaWduZWQgbG9uZyB2YWwpCiB7Ci0JaW50IGVyciA9IDA7CiAJc3RydWN0IG5ldF9icmlkZ2Vf bWRiX2h0YWJsZSAqbWRiOworCXN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnBvcnQ7CisJaW50IGVy ciA9IDA7CiAKIAlzcGluX2xvY2tfYmgoJmJyLT5tdWx0aWNhc3RfbG9jayk7CiAJaWYgKGJyLT5t dWx0aWNhc3RfZGlzYWJsZWQgPT0gIXZhbCkKQEAgLTIwNzYsMTAgKzIwODIsOSBAQCByb2xsYmFj azoKIAkJCWdvdG8gcm9sbGJhY2s7CiAJfQogCi0JYnJfbXVsdGljYXN0X3N0YXJ0X3F1ZXJpZXIo YnIsICZici0+aXA0X293bl9xdWVyeSk7Ci0jaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNikKLQli cl9tdWx0aWNhc3Rfc3RhcnRfcXVlcmllcihiciwgJmJyLT5pcDZfb3duX3F1ZXJ5KTsKLSNlbmRp ZgorCWJyX211bHRpY2FzdF9vcGVuKGJyKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcnQsICZi ci0+cG9ydF9saXN0LCBsaXN0KQorCQlfX2JyX211bHRpY2FzdF9lbmFibGVfcG9ydChwb3J0KTsK IAogdW5sb2NrOgogCXNwaW5fdW5sb2NrX2JoKCZici0+bXVsdGljYXN0X2xvY2spOwpkaWZmIC0t Z2l0IGEvbmV0L2Nhbi9iY20uYyBiL25ldC9jYW4vYmNtLmMKaW5kZXggZGNiNzVjMGU2NmMxLi5i OTY0MzRkMDkxNzcgMTAwNjQ0Ci0tLSBhL25ldC9jYW4vYmNtLmMKKysrIGIvbmV0L2Nhbi9iY20u YwpAQCAtMTQ5OSwyNCArMTQ5OSwzMSBAQCBzdGF0aWMgaW50IGJjbV9jb25uZWN0KHN0cnVjdCBz b2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdWFkZHIsIGludCBsZW4sCiAJc3RydWN0IHNv Y2thZGRyX2NhbiAqYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHJfY2FuICopdWFkZHI7CiAJc3RydWN0 IHNvY2sgKnNrID0gc29jay0+c2s7CiAJc3RydWN0IGJjbV9zb2NrICpibyA9IGJjbV9zayhzayk7 CisJaW50IHJldCA9IDA7CiAKIAlpZiAobGVuIDwgc2l6ZW9mKCphZGRyKSkKIAkJcmV0dXJuIC1F SU5WQUw7CiAKLQlpZiAoYm8tPmJvdW5kKQotCQlyZXR1cm4gLUVJU0NPTk47CisJbG9ja19zb2Nr KHNrKTsKKworCWlmIChiby0+Ym91bmQpIHsKKwkJcmV0ID0gLUVJU0NPTk47CisJCWdvdG8gZmFp bDsKKwl9CiAKIAkvKiBiaW5kIGEgZGV2aWNlIHRvIHRoaXMgc29ja2V0ICovCiAJaWYgKGFkZHIt PmNhbl9pZmluZGV4KSB7CiAJCXN0cnVjdCBuZXRfZGV2aWNlICpkZXY7CiAKIAkJZGV2ID0gZGV2 X2dldF9ieV9pbmRleCgmaW5pdF9uZXQsIGFkZHItPmNhbl9pZmluZGV4KTsKLQkJaWYgKCFkZXYp Ci0JCQlyZXR1cm4gLUVOT0RFVjsKLQorCQlpZiAoIWRldikgeworCQkJcmV0ID0gLUVOT0RFVjsK KwkJCWdvdG8gZmFpbDsKKwkJfQogCQlpZiAoZGV2LT50eXBlICE9IEFSUEhSRF9DQU4pIHsKIAkJ CWRldl9wdXQoZGV2KTsKLQkJCXJldHVybiAtRU5PREVWOworCQkJcmV0ID0gLUVOT0RFVjsKKwkJ CWdvdG8gZmFpbDsKIAkJfQogCiAJCWJvLT5pZmluZGV4ID0gZGV2LT5pZmluZGV4OwpAQCAtMTUy NywxNyArMTUzNCwyNCBAQCBzdGF0aWMgaW50IGJjbV9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNv Y2ssIHN0cnVjdCBzb2NrYWRkciAqdWFkZHIsIGludCBsZW4sCiAJCWJvLT5pZmluZGV4ID0gMDsK IAl9CiAKLQliby0+Ym91bmQgPSAxOwotCiAJaWYgKHByb2NfZGlyKSB7CiAJCS8qIHVuaXF1ZSBz b2NrZXQgYWRkcmVzcyBhcyBmaWxlbmFtZSAqLwogCQlzcHJpbnRmKGJvLT5wcm9jbmFtZSwgIiVs dSIsIHNvY2tfaV9pbm8oc2spKTsKIAkJYm8tPmJjbV9wcm9jX3JlYWQgPSBwcm9jX2NyZWF0ZV9k YXRhKGJvLT5wcm9jbmFtZSwgMDY0NCwKIAkJCQkJCSAgICAgcHJvY19kaXIsCiAJCQkJCQkgICAg ICZiY21fcHJvY19mb3BzLCBzayk7CisJCWlmICghYm8tPmJjbV9wcm9jX3JlYWQpIHsKKwkJCXJl dCA9IC1FTk9NRU07CisJCQlnb3RvIGZhaWw7CisJCX0KIAl9CiAKLQlyZXR1cm4gMDsKKwliby0+ Ym91bmQgPSAxOworCitmYWlsOgorCXJlbGVhc2Vfc29jayhzayk7CisKKwlyZXR1cm4gcmV0Owog fQogCiBzdGF0aWMgaW50IGJjbV9yZWN2bXNnKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IHNv Y2tldCAqc29jaywKZGlmZiAtLWdpdCBhL25ldC9jYW4vcmF3LmMgYi9uZXQvY2FuL3Jhdy5jCmlu ZGV4IDA4MWU4MWZkMDE3Zi4uOWY1ZWUzYTZiNjY2IDEwMDY0NAotLS0gYS9uZXQvY2FuL3Jhdy5j CisrKyBiL25ldC9jYW4vcmF3LmMKQEAgLTQ2Niw2ICs0NjYsOSBAQCBzdGF0aWMgaW50IHJhd19z ZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsCiAJ CWlmIChvcHRsZW4gJSBzaXplb2Yoc3RydWN0IGNhbl9maWx0ZXIpICE9IDApCiAJCQlyZXR1cm4g LUVJTlZBTDsKIAorCQlpZiAob3B0bGVuID4gQ0FOX1JBV19GSUxURVJfTUFYICogc2l6ZW9mKHN0 cnVjdCBjYW5fZmlsdGVyKSkKKwkJCXJldHVybiAtRUlOVkFMOworCiAJCWNvdW50ID0gb3B0bGVu IC8gc2l6ZW9mKHN0cnVjdCBjYW5fZmlsdGVyKTsKIAogCQlpZiAoY291bnQgPiAxKSB7CmRpZmYg LS1naXQgYS9uZXQvY29yZS9maWx0ZXIuYyBiL25ldC9jb3JlL2ZpbHRlci5jCmluZGV4IGIyNzVj NTU1OWRjMC4uZmQ2ZGEzOTdlYThjIDEwMDY0NAotLS0gYS9uZXQvY29yZS9maWx0ZXIuYworKysg Yi9uZXQvY29yZS9maWx0ZXIuYwpAQCAtOTQsOSArOTQsMTAgQEAgc3RhdGljIGlubGluZSB2b2lk ICpsb2FkX3BvaW50ZXIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGssCiB9CiAKIC8q KgotICoJc2tfZmlsdGVyIC0gcnVuIGEgcGFja2V0IHRocm91Z2ggYSBzb2NrZXQgZmlsdGVyCisg Kglza19maWx0ZXJfdHJpbV9jYXAgLSBydW4gYSBwYWNrZXQgdGhyb3VnaCBhIHNvY2tldCBmaWx0 ZXIKICAqCUBzazogc29jayBhc3NvY2lhdGVkIHdpdGggJnNrX2J1ZmYKICAqCUBza2I6IGJ1ZmZl ciB0byBmaWx0ZXIKKyAqCUBjYXA6IGxpbWl0IG9uIGhvdyBzaG9ydCB0aGUgZUJQRiBwcm9ncmFt IG1heSB0cmltIHRoZSBwYWNrZXQKICAqCiAgKiBSdW4gdGhlIGZpbHRlciBjb2RlIGFuZCB0aGVu IGN1dCBza2ItPmRhdGEgdG8gY29ycmVjdCBzaXplIHJldHVybmVkIGJ5CiAgKiBza19ydW5fZmls dGVyLiBJZiBwa3RfbGVuIGlzIDAgd2UgdG9zcyBwYWNrZXQuIElmIHNrYi0+bGVuIGlzIHNtYWxs ZXIKQEAgLTEwNSw3ICsxMDYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKmxvYWRfcG9pbnRlcihj b25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaywKICAqIGJlIGFjY2VwdGVkIG9yIC1FUEVS TSBpZiB0aGUgcGFja2V0IHNob3VsZCBiZSB0b3NzZWQuCiAgKgogICovCi1pbnQgc2tfZmlsdGVy KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKK2ludCBza19maWx0ZXJfdHJp bV9jYXAoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQg Y2FwKQogewogCWludCBlcnI7CiAJc3RydWN0IHNrX2ZpbHRlciAqZmlsdGVyOwpAQCAtMTI2LDE0 ICsxMjcsMTMgQEAgaW50IHNrX2ZpbHRlcihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZm ICpza2IpCiAJZmlsdGVyID0gcmN1X2RlcmVmZXJlbmNlKHNrLT5za19maWx0ZXIpOwogCWlmIChm aWx0ZXIpIHsKIAkJdW5zaWduZWQgaW50IHBrdF9sZW4gPSBTS19SVU5fRklMVEVSKGZpbHRlciwg c2tiKTsKLQotCQllcnIgPSBwa3RfbGVuID8gcHNrYl90cmltKHNrYiwgcGt0X2xlbikgOiAtRVBF Uk07CisJCWVyciA9IHBrdF9sZW4gPyBwc2tiX3RyaW0oc2tiLCBtYXgoY2FwLCBwa3RfbGVuKSkg OiAtRVBFUk07CiAJfQogCXJjdV9yZWFkX3VubG9jaygpOwogCiAJcmV0dXJuIGVycjsKIH0KLUVY UE9SVF9TWU1CT0woc2tfZmlsdGVyKTsKK0VYUE9SVF9TWU1CT0woc2tfZmlsdGVyX3RyaW1fY2Fw KTsKIAogLyogQmFzZSBmdW5jdGlvbiBmb3Igb2Zmc2V0IGNhbGN1bGF0aW9uLiBOZWVkcyB0byBn byBpbnRvIC50ZXh0IHNlY3Rpb24sCiAgKiB0aGVyZWZvcmUga2VlcGluZyBpdCBub24tc3RhdGlj IGFzIHdlbGw7IHdpbGwgYWxzbyBiZSB1c2VkIGJ5IEpJVHMKZGlmZiAtLWdpdCBhL25ldC9jb3Jl L3J0bmV0bGluay5jIGIvbmV0L2NvcmUvcnRuZXRsaW5rLmMKaW5kZXggZTQ2NjZhZjc0MTQxLi45 NmU5YzVmNTE3MDQgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL3J0bmV0bGluay5jCisrKyBiL25ldC9j b3JlL3J0bmV0bGluay5jCkBAIC0yNTAsNiArMjUwLDcgQEAgaW50IHJ0bmxfdW5yZWdpc3Rlcihp bnQgcHJvdG9jb2wsIGludCBtc2d0eXBlKQogCiAJcnRubF9tc2dfaGFuZGxlcnNbcHJvdG9jb2xd W21zZ2luZGV4XS5kb2l0ID0gTlVMTDsKIAlydG5sX21zZ19oYW5kbGVyc1twcm90b2NvbF1bbXNn aW5kZXhdLmR1bXBpdCA9IE5VTEw7CisJcnRubF9tc2dfaGFuZGxlcnNbcHJvdG9jb2xdW21zZ2lu ZGV4XS5jYWxjaXQgPSBOVUxMOwogCiAJcmV0dXJuIDA7CiB9CkBAIC03OTMsMTIgKzc5NCwxMyBA QCBzdGF0aWMgaW5saW5lIGludCBydG5sX3ZmaW5mb19zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2 aWNlICpkZXYsCiAJaWYgKGRldi0+ZGV2LnBhcmVudCAmJiBkZXZfaXNfcGNpKGRldi0+ZGV2LnBh cmVudCkgJiYKIAkgICAgKGV4dF9maWx0ZXJfbWFzayAmIFJURVhUX0ZJTFRFUl9WRikpIHsKIAkJ aW50IG51bV92ZnMgPSBkZXZfbnVtX3ZmKGRldi0+ZGV2LnBhcmVudCk7Ci0JCXNpemVfdCBzaXpl ID0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHN0cnVjdCBubGF0dHIpKTsKLQkJc2l6ZSArPSBubGFf dG90YWxfc2l6ZShudW1fdmZzICogc2l6ZW9mKHN0cnVjdCBubGF0dHIpKTsKKwkJc2l6ZV90IHNp emUgPSBubGFfdG90YWxfc2l6ZSgwKTsKIAkJc2l6ZSArPSBudW1fdmZzICoKLQkJCShubGFfdG90 YWxfc2l6ZShzaXplb2Yoc3RydWN0IGlmbGFfdmZfbWFjKSkgKworCQkJKG5sYV90b3RhbF9zaXpl KDApICsKKwkJCSBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IGlmbGFfdmZfbWFjKSkgKwog CQkJIG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgaWZsYV92Zl92bGFuKSkgKwogCQkJIG5s YV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgaWZsYV92Zl9zcG9vZmNoaykpICsKKwkJCSBubGFf dG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IGlmbGFfdmZfdHhfcmF0ZSkpICsKIAkJCSBubGFfdG90 YWxfc2l6ZShzaXplb2Yoc3RydWN0IGlmbGFfdmZfcmF0ZSkpICsKIAkJCSBubGFfdG90YWxfc2l6 ZShzaXplb2Yoc3RydWN0IGlmbGFfdmZfbGlua19zdGF0ZSkpKTsKIAkJcmV0dXJuIHNpemU7CmRp ZmYgLS1naXQgYS9uZXQvY29yZS9zb2NrLmMgYi9uZXQvY29yZS9zb2NrLmMKaW5kZXggYWM5YWEy ODc4ZDk5Li45Y2IwMGQxZWExNDAgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL3NvY2suYworKysgYi9u ZXQvY29yZS9zb2NrLmMKQEAgLTQzMiw5ICs0MzIsOCBAQCBzdGF0aWMgdm9pZCBzb2NrX2Rpc2Fi bGVfdGltZXN0YW1wKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgbG9uZyBmbGFncykKIH0KIAog Ci1pbnQgc29ja19xdWV1ZV9yY3Zfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYg KnNrYikKK2ludCBfX3NvY2tfcXVldWVfcmN2X3NrYihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBz a19idWZmICpza2IpCiB7Ci0JaW50IGVycjsKIAlpbnQgc2tiX2xlbjsKIAl1bnNpZ25lZCBsb25n IGZsYWdzOwogCXN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QgPSAmc2stPnNrX3JlY2VpdmVfcXVl dWU7CkBAIC00NDUsMTAgKzQ0NCw2IEBAIGludCBzb2NrX3F1ZXVlX3Jjdl9za2Ioc3RydWN0IHNv Y2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAKLQll cnIgPSBza19maWx0ZXIoc2ssIHNrYik7Ci0JaWYgKGVycikKLQkJcmV0dXJuIGVycjsKLQogCWlm ICghc2tfcm1lbV9zY2hlZHVsZShzaywgc2tiLCBza2ItPnRydWVzaXplKSkgewogCQlhdG9taWNf aW5jKCZzay0+c2tfZHJvcHMpOwogCQlyZXR1cm4gLUVOT0JVRlM7CkBAIC00NzgsMTMgKzQ3Mywy NiBAQCBpbnQgc29ja19xdWV1ZV9yY3Zfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1 ZmYgKnNrYikKIAkJc2stPnNrX2RhdGFfcmVhZHkoc2spOwogCXJldHVybiAwOwogfQorRVhQT1JU X1NZTUJPTChfX3NvY2tfcXVldWVfcmN2X3NrYik7CisKK2ludCBzb2NrX3F1ZXVlX3Jjdl9za2Io c3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQoreworCWludCBlcnI7CisKKwll cnIgPSBza19maWx0ZXIoc2ssIHNrYik7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCXJl dHVybiBfX3NvY2tfcXVldWVfcmN2X3NrYihzaywgc2tiKTsKK30KIEVYUE9SVF9TWU1CT0woc29j a19xdWV1ZV9yY3Zfc2tiKTsKIAotaW50IHNrX3JlY2VpdmVfc2tiKHN0cnVjdCBzb2NrICpzaywg c3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgaW50IG5lc3RlZCkKK2ludCBfX3NrX3JlY2VpdmVf c2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKKwkJICAgICBjb25zdCBp bnQgbmVzdGVkLCB1bnNpZ25lZCBpbnQgdHJpbV9jYXApCiB7CiAJaW50IHJjID0gTkVUX1JYX1NV Q0NFU1M7CiAKLQlpZiAoc2tfZmlsdGVyKHNrLCBza2IpKQorCWlmIChza19maWx0ZXJfdHJpbV9j YXAoc2ssIHNrYiwgdHJpbV9jYXApKQogCQlnb3RvIGRpc2NhcmRfYW5kX3JlbHNlOwogCiAJc2ti LT5kZXYgPSBOVUxMOwpAQCAtNTIwLDcgKzUyOCw3IEBAIGRpc2NhcmRfYW5kX3JlbHNlOgogCWtm cmVlX3NrYihza2IpOwogCWdvdG8gb3V0OwogfQotRVhQT1JUX1NZTUJPTChza19yZWNlaXZlX3Nr Yik7CitFWFBPUlRfU1lNQk9MKF9fc2tfcmVjZWl2ZV9za2IpOwogCiBzdHJ1Y3QgZHN0X2VudHJ5 ICpfX3NrX2RzdF9jaGVjayhzdHJ1Y3Qgc29jayAqc2ssIHUzMiBjb29raWUpCiB7CkBAIC03NDEs NyArNzQ5LDcgQEAgaW50IHNvY2tfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQg bGV2ZWwsIGludCBvcHRuYW1lLAogCQl2YWwgPSBtaW5fdCh1MzIsIHZhbCwgc3lzY3RsX3dtZW1f bWF4KTsKIHNldF9zbmRidWY6CiAJCXNrLT5za191c2VybG9ja3MgfD0gU09DS19TTkRCVUZfTE9D SzsKLQkJc2stPnNrX3NuZGJ1ZiA9IG1heF90KHUzMiwgdmFsICogMiwgU09DS19NSU5fU05EQlVG KTsKKwkJc2stPnNrX3NuZGJ1ZiA9IG1heF90KGludCwgdmFsICogMiwgU09DS19NSU5fU05EQlVG KTsKIAkJLyogV2FrZSB1cCBzZW5kaW5nIHRhc2tzIGlmIHdlIHVwcGVkIHRoZSB2YWx1ZS4gKi8K IAkJc2stPnNrX3dyaXRlX3NwYWNlKHNrKTsKIAkJYnJlYWs7CkBAIC03NzcsNyArNzg1LDcgQEAg c2V0X3JjdmJ1ZjoKIAkJICogcmV0dXJuaW5nIHRoZSB2YWx1ZSB3ZSBhY3R1YWxseSB1c2VkIGlu IGdldHNvY2tvcHQKIAkJICogaXMgdGhlIG1vc3QgZGVzaXJhYmxlIGJlaGF2aW9yLgogCQkgKi8K LQkJc2stPnNrX3JjdmJ1ZiA9IG1heF90KHUzMiwgdmFsICogMiwgU09DS19NSU5fUkNWQlVGKTsK KwkJc2stPnNrX3JjdmJ1ZiA9IG1heF90KGludCwgdmFsICogMiwgU09DS19NSU5fUkNWQlVGKTsK IAkJYnJlYWs7CiAKIAljYXNlIFNPX1JDVkJVRkZPUkNFOgpkaWZmIC0tZ2l0IGEvbmV0L2RjY3Av aXB2NC5jIGIvbmV0L2RjY3AvaXB2NC5jCmluZGV4IDZjYTY0NWM0YjQ4ZS4uYjM3MTM0MWQ4OTlk IDEwMDY0NAotLS0gYS9uZXQvZGNjcC9pcHY0LmMKKysrIGIvbmV0L2RjY3AvaXB2NC5jCkBAIC04 OTAsNyArODkwLDcgQEAgc3RhdGljIGludCBkY2NwX3Y0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2ti KQogCQlnb3RvIGRpc2NhcmRfYW5kX3JlbHNlOwogCW5mX3Jlc2V0KHNrYik7CiAKLQlyZXR1cm4g c2tfcmVjZWl2ZV9za2Ioc2ssIHNrYiwgMSk7CisJcmV0dXJuIF9fc2tfcmVjZWl2ZV9za2Ioc2ss IHNrYiwgMSwgZGgtPmRjY3BoX2RvZmYgKiA0KTsKIAogbm9fZGNjcF9zb2NrZXQ6CiAJaWYgKCF4 ZnJtNF9wb2xpY3lfY2hlY2soTlVMTCwgWEZSTV9QT0xJQ1lfSU4sIHNrYikpCmRpZmYgLS1naXQg YS9uZXQvZGNjcC9pcHY2LmMgYi9uZXQvZGNjcC9pcHY2LmMKaW5kZXggMTE0OWUzNDViYmE5Li45 ZjJkYzFkMTVlNDMgMTAwNjQ0Ci0tLSBhL25ldC9kY2NwL2lwdjYuYworKysgYi9uZXQvZGNjcC9p cHY2LmMKQEAgLTgwNCw3ICs4MDQsNyBAQCBzdGF0aWMgaW50IGRjY3BfdjZfcmN2KHN0cnVjdCBz a19idWZmICpza2IpCiAJaWYgKCF4ZnJtNl9wb2xpY3lfY2hlY2soc2ssIFhGUk1fUE9MSUNZX0lO LCBza2IpKQogCQlnb3RvIGRpc2NhcmRfYW5kX3JlbHNlOwogCi0JcmV0dXJuIHNrX3JlY2VpdmVf c2tiKHNrLCBza2IsIDEpID8gLTEgOiAwOworCXJldHVybiBfX3NrX3JlY2VpdmVfc2tiKHNrLCBz a2IsIDEsIGRoLT5kY2NwaF9kb2ZmICogNCkgPyAtMSA6IDA7CiAKIG5vX2RjY3Bfc29ja2V0Ogog CWlmICgheGZybTZfcG9saWN5X2NoZWNrKE5VTEwsIFhGUk1fUE9MSUNZX0lOLCBza2IpKQpkaWZm IC0tZ2l0IGEvbmV0L2lwdjQvaWdtcC5jIGIvbmV0L2lwdjQvaWdtcC5jCmluZGV4IDcyNzQ0N2Mx Nzk1NC4uOGFjNWQ5ZDEwOWNmIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pZ21wLmMKKysrIGIvbmV0 L2lwdjQvaWdtcC5jCkBAIC0xNjQsNyArMTY0LDcgQEAgc3RhdGljIGludCB1bnNvbGljaXRlZF9y ZXBvcnRfaW50ZXJ2YWwoc3RydWN0IGluX2RldmljZSAqaW5fZGV2KQogfQogCiBzdGF0aWMgdm9p ZCBpZ21wdjNfYWRkX2RlbHJlYyhzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsIHN0cnVjdCBpcF9t Y19saXN0ICppbSk7Ci1zdGF0aWMgdm9pZCBpZ21wdjNfZGVsX2RlbHJlYyhzdHJ1Y3QgaW5fZGV2 aWNlICppbl9kZXYsIF9fYmUzMiBtdWx0aWFkZHIpOworc3RhdGljIHZvaWQgaWdtcHYzX2RlbF9k ZWxyZWMoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0pOwog c3RhdGljIHZvaWQgaWdtcHYzX2NsZWFyX2RlbHJlYyhzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYp Owogc3RhdGljIGludCBzZl9zZXRzdGF0ZShzdHJ1Y3QgaXBfbWNfbGlzdCAqcG1jKTsKIHN0YXRp YyB2b2lkIHNmX21hcmtzdGF0ZShzdHJ1Y3QgaXBfbWNfbGlzdCAqcG1jKTsKQEAgLTExMDQsMTAg KzExMDQsMTQgQEAgc3RhdGljIHZvaWQgaWdtcHYzX2FkZF9kZWxyZWMoc3RydWN0IGluX2Rldmlj ZSAqaW5fZGV2LCBzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0pCiAJc3Bpbl91bmxvY2tfYmgoJmluX2Rl di0+bWNfdG9tYl9sb2NrKTsKIH0KIAotc3RhdGljIHZvaWQgaWdtcHYzX2RlbF9kZWxyZWMoc3Ry dWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgbXVsdGlhZGRyKQorLyoKKyAqIHJlc3RvcmUg aXBfbWNfbGlzdCBkZWxldGVkIHJlY29yZHMKKyAqLworc3RhdGljIHZvaWQgaWdtcHYzX2RlbF9k ZWxyZWMoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0pCiB7 CiAJc3RydWN0IGlwX21jX2xpc3QgKnBtYywgKnBtY19wcmV2OwotCXN0cnVjdCBpcF9zZl9saXN0 ICpwc2YsICpwc2ZfbmV4dDsKKwlzdHJ1Y3QgaXBfc2ZfbGlzdCAqcHNmOworCV9fYmUzMiBtdWx0 aWFkZHIgPSBpbS0+bXVsdGlhZGRyOwogCiAJc3Bpbl9sb2NrX2JoKCZpbl9kZXYtPm1jX3RvbWJf bG9jayk7CiAJcG1jX3ByZXYgPSBOVUxMOwpAQCAtMTEyMywxNiArMTEyNywyNiBAQCBzdGF0aWMg dm9pZCBpZ21wdjNfZGVsX2RlbHJlYyhzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsIF9fYmUzMiBt dWx0aWFkZHIpCiAJCQlpbl9kZXYtPm1jX3RvbWIgPSBwbWMtPm5leHQ7CiAJfQogCXNwaW5fdW5s b2NrX2JoKCZpbl9kZXYtPm1jX3RvbWJfbG9jayk7CisKKwlzcGluX2xvY2tfYmgoJmltLT5sb2Nr KTsKIAlpZiAocG1jKSB7Ci0JCWZvciAocHNmID0gcG1jLT50b21iOyBwc2Y7IHBzZiA9IHBzZl9u ZXh0KSB7Ci0JCQlwc2ZfbmV4dCA9IHBzZi0+c2ZfbmV4dDsKLQkJCWtmcmVlKHBzZik7CisJCWlt LT5pbnRlcmZhY2UgPSBwbWMtPmludGVyZmFjZTsKKwkJaW0tPmNyY291bnQgPSBpbl9kZXYtPm1y X3FydiA/OiBJR01QX1Vuc29saWNpdGVkX1JlcG9ydF9Db3VudDsKKwkJaW0tPnNmbW9kZSA9IHBt Yy0+c2Ztb2RlOworCQlpZiAocG1jLT5zZm1vZGUgPT0gTUNBU1RfSU5DTFVERSkgeworCQkJaW0t PnRvbWIgPSBwbWMtPnRvbWI7CisJCQlpbS0+c291cmNlcyA9IHBtYy0+c291cmNlczsKKwkJCWZv ciAocHNmID0gaW0tPnNvdXJjZXM7IHBzZjsgcHNmID0gcHNmLT5zZl9uZXh0KQorCQkJCXBzZi0+ c2ZfY3Jjb3VudCA9IGltLT5jcmNvdW50OwogCQl9CiAJCWluX2Rldl9wdXQocG1jLT5pbnRlcmZh Y2UpOwotCQlrZnJlZShwbWMpOwogCX0KKwlzcGluX3VubG9ja19iaCgmaW0tPmxvY2spOwogfQog CisvKgorICogZmx1c2ggaXBfbWNfbGlzdCBkZWxldGVkIHJlY29yZHMKKyAqLwogc3RhdGljIHZv aWQgaWdtcHYzX2NsZWFyX2RlbHJlYyhzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpCiB7CiAJc3Ry dWN0IGlwX21jX2xpc3QgKnBtYywgKm5leHRwbWM7CkBAIC0xMzMwLDcgKzEzNDQsNyBAQCB2b2lk IGlwX21jX2luY19ncm91cChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsIF9fYmUzMiBhZGRyKQog CWlwX21jX2hhc2hfYWRkKGluX2RldiwgaW0pOwogCiAjaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FT VAotCWlnbXB2M19kZWxfZGVscmVjKGluX2RldiwgaW0tPm11bHRpYWRkcik7CisJaWdtcHYzX2Rl bF9kZWxyZWMoaW5fZGV2LCBpbSk7CiAjZW5kaWYKIAlpZ21wX2dyb3VwX2FkZGVkKGltKTsKIAlp ZiAoIWluX2Rldi0+ZGVhZCkKQEAgLTE0MjEsOCArMTQzNSwxMiBAQCB2b2lkIGlwX21jX3JlbWFw KHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldikKIAogCUFTU0VSVF9SVE5MKCk7CiAKLQlmb3JfZWFj aF9wbWNfcnRubChpbl9kZXYsIHBtYykKKwlmb3JfZWFjaF9wbWNfcnRubChpbl9kZXYsIHBtYykg eworI2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1QKKwkJaWdtcHYzX2RlbF9kZWxyZWMoaW5fZGV2 LCBwbWMpOworI2VuZGlmCiAJCWlnbXBfZ3JvdXBfYWRkZWQocG1jKTsKKwl9CiB9CiAKIC8qIERl dmljZSBnb2luZyBkb3duICovCkBAIC0xNDQzLDcgKzE0NjEsNiBAQCB2b2lkIGlwX21jX2Rvd24o c3RydWN0IGluX2RldmljZSAqaW5fZGV2KQogCWluX2Rldi0+bXJfZ3FfcnVubmluZyA9IDA7CiAJ aWYgKGRlbF90aW1lcigmaW5fZGV2LT5tcl9ncV90aW1lcikpCiAJCV9faW5fZGV2X3B1dChpbl9k ZXYpOwotCWlnbXB2M19jbGVhcl9kZWxyZWMoaW5fZGV2KTsKICNlbmRpZgogCiAJaXBfbWNfZGVj X2dyb3VwKGluX2RldiwgSUdNUF9BTExfSE9TVFMpOwpAQCAtMTQ3NCw4ICsxNDkxLDEyIEBAIHZv aWQgaXBfbWNfdXAoc3RydWN0IGluX2RldmljZSAqaW5fZGV2KQogCiAJaXBfbWNfaW5jX2dyb3Vw KGluX2RldiwgSUdNUF9BTExfSE9TVFMpOwogCi0JZm9yX2VhY2hfcG1jX3J0bmwoaW5fZGV2LCBw bWMpCisJZm9yX2VhY2hfcG1jX3J0bmwoaW5fZGV2LCBwbWMpIHsKKyNpZmRlZiBDT05GSUdfSVBf TVVMVElDQVNUCisJCWlnbXB2M19kZWxfZGVscmVjKGluX2RldiwgcG1jKTsKKyNlbmRpZgogCQlp Z21wX2dyb3VwX2FkZGVkKHBtYyk7CisJfQogfQogCiAvKgpAQCAtMTQ5MCwxMyArMTUxMSwxMyBA QCB2b2lkIGlwX21jX2Rlc3Ryb3lfZGV2KHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldikKIAogCS8q IERlYWN0aXZhdGUgdGltZXJzICovCiAJaXBfbWNfZG93bihpbl9kZXYpOworI2lmZGVmIENPTkZJ R19JUF9NVUxUSUNBU1QKKwlpZ21wdjNfY2xlYXJfZGVscmVjKGluX2Rldik7CisjZW5kaWYKIAog CXdoaWxlICgoaSA9IHJ0bmxfZGVyZWZlcmVuY2UoaW5fZGV2LT5tY19saXN0KSkgIT0gTlVMTCkg ewogCQlpbl9kZXYtPm1jX2xpc3QgPSBpLT5uZXh0X3JjdTsKIAkJaW5fZGV2LT5tY19jb3VudC0t OwotCi0JCS8qIFdlJ3ZlIGRyb3BwZWQgdGhlIGdyb3VwcyBpbiBpcF9tY19kb3duIGFscmVhZHkg Ki8KLQkJaXBfbWNfY2xlYXJfc3JjKGkpOwogCQlpcF9tYV9wdXQoaSk7CiAJfQogfQpkaWZmIC0t Z2l0IGEvbmV0L2lwdjQvaXBfb3V0cHV0LmMgYi9uZXQvaXB2NC9pcF9vdXRwdXQuYwppbmRleCBk OTFmZGE4MjU3YmMuLmVkYWI3MjVmZWNjYyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBfb3V0cHV0 LmMKKysrIGIvbmV0L2lwdjQvaXBfb3V0cHV0LmMKQEAgLTk3LDYgKzk3LDggQEAgaW50IF9faXBf bG9jYWxfb3V0KHN0cnVjdCBza19idWZmICpza2IpCiAKIAlpcGgtPnRvdF9sZW4gPSBodG9ucyhz a2ItPmxlbik7CiAJaXBfc2VuZF9jaGVjayhpcGgpOworCXNrYi0+cHJvdG9jb2wgPSBodG9ucyhF VEhfUF9JUCk7CisKIAlyZXR1cm4gbmZfaG9vayhORlBST1RPX0lQVjQsIE5GX0lORVRfTE9DQUxf T1VULCBza2IsIE5VTEwsCiAJCSAgICAgICBza2JfZHN0KHNrYiktPmRldiwgZHN0X291dHB1dCk7 CiB9CkBAIC0yMTcsOSArMjE5LDggQEAgc3RhdGljIGludCBpcF9maW5pc2hfb3V0cHV0X2dzbyhz dHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXN0cnVjdCBza19idWZmICpzZWdzOwogCWludCByZXQgPSAw OwogCi0JLyogY29tbW9uIGNhc2U6IGxvY2FsbHkgY3JlYXRlZCBza2Igb3Igc2VnbGVuIGlzIDw9 IG10dSAqLwotCWlmICgoKElQQ0Ioc2tiKS0+ZmxhZ3MgJiBJUFNLQl9GT1JXQVJERUQpID09IDAp IHx8Ci0JICAgICAgc2tiX2dzb19uZXR3b3JrX3NlZ2xlbihza2IpIDw9IGlwX3NrYl9kc3RfbXR1 KHNrYikpCisJLyogY29tbW9uIGNhc2U6IHNlZ2xlbiBpcyA8PSBtdHUgKi8KKwlpZiAoc2tiX2dz b19uZXR3b3JrX3NlZ2xlbihza2IpIDw9IGlwX3NrYl9kc3RfbXR1KHNrYikpCiAJCXJldHVybiBp cF9maW5pc2hfb3V0cHV0Mihza2IpOwogCiAJLyogU2xvd3BhdGggLSAgR1NPIHNlZ21lbnQgbGVu Z3RoIGlzIGV4Y2VlZGluZyB0aGUgZHN0IE1UVS4KZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX3Nv Y2tnbHVlLmMgYi9uZXQvaXB2NC9pcF9zb2NrZ2x1ZS5jCmluZGV4IGM3ZWM4NjZhZGFjOS4uY2Yz Nzc3MDI4NTJkIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pcF9zb2NrZ2x1ZS5jCisrKyBiL25ldC9p cHY0L2lwX3NvY2tnbHVlLmMKQEAgLTI0Miw5ICsyNDIsMTIgQEAgaW50IGlwX2Ntc2dfc2VuZChz dHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IGlwY21fY29va2llICpp cGMsCiAJCQlpcGMtPnR0bCA9IHZhbDsKIAkJCWJyZWFrOwogCQljYXNlIElQX1RPUzoKLQkJCWlm IChjbXNnLT5jbXNnX2xlbiAhPSBDTVNHX0xFTihzaXplb2YoaW50KSkpCisJCQlpZiAoY21zZy0+ Y21zZ19sZW4gPT0gQ01TR19MRU4oc2l6ZW9mKGludCkpKQorCQkJCXZhbCA9ICooaW50ICopQ01T R19EQVRBKGNtc2cpOworCQkJZWxzZSBpZiAoY21zZy0+Y21zZ19sZW4gPT0gQ01TR19MRU4oc2l6 ZW9mKHU4KSkpCisJCQkJdmFsID0gKih1OCAqKUNNU0dfREFUQShjbXNnKTsKKwkJCWVsc2UKIAkJ CQlyZXR1cm4gLUVJTlZBTDsKLQkJCXZhbCA9ICooaW50ICopQ01TR19EQVRBKGNtc2cpOwogCQkJ aWYgKHZhbCA8IDAgfHwgdmFsID4gMjU1KQogCQkJCXJldHVybiAtRUlOVkFMOwogCQkJaXBjLT50 b3MgPSB2YWw7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXRmaWx0ZXIvYXJwX3RhYmxlcy5jIGIv bmV0L2lwdjQvbmV0ZmlsdGVyL2FycF90YWJsZXMuYwppbmRleCAxMDZkYjE3N2E5MWMuLjE1MDE5 YzI0MDhjMiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvbmV0ZmlsdGVyL2FycF90YWJsZXMuYworKysg Yi9uZXQvaXB2NC9uZXRmaWx0ZXIvYXJwX3RhYmxlcy5jCkBAIC0xMzMyLDggKzEzMzIsOCBAQCBz dGF0aWMgaW50IHRyYW5zbGF0ZV9jb21wYXRfdGFibGUoc3RydWN0IHh0X3RhYmxlX2luZm8gKipw aW5mbywKIAogCW5ld2luZm8tPm51bWJlciA9IGNvbXBhdHItPm51bV9lbnRyaWVzOwogCWZvciAo aSA9IDA7IGkgPCBORl9BUlBfTlVNSE9PS1M7IGkrKykgewotCQluZXdpbmZvLT5ob29rX2VudHJ5 W2ldID0gaW5mby0+aG9va19lbnRyeVtpXTsKLQkJbmV3aW5mby0+dW5kZXJmbG93W2ldID0gaW5m by0+dW5kZXJmbG93W2ldOworCQluZXdpbmZvLT5ob29rX2VudHJ5W2ldID0gY29tcGF0ci0+aG9v a19lbnRyeVtpXTsKKwkJbmV3aW5mby0+dW5kZXJmbG93W2ldID0gY29tcGF0ci0+dW5kZXJmbG93 W2ldOwogCX0KIAllbnRyeTEgPSBuZXdpbmZvLT5lbnRyaWVzW3Jhd19zbXBfcHJvY2Vzc29yX2lk KCldOwogCXBvcyA9IGVudHJ5MTsKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3BpbmcuYyBiL25ldC9p cHY0L3BpbmcuYwppbmRleCA5YzY4ZTk0Y2Q2NmQuLjE4MWQ1ZGU4YmE1MiAxMDA2NDQKLS0tIGEv bmV0L2lwdjQvcGluZy5jCisrKyBiL25ldC9pcHY0L3BpbmcuYwpAQCAtNjYxLDYgKzY2MSwxMCBA QCBpbnQgcGluZ19jb21tb25fc2VuZG1zZyhpbnQgZmFtaWx5LCBzdHJ1Y3QgbXNnaGRyICptc2cs IHNpemVfdCBsZW4sCiAJaWYgKGxlbiA+IDB4RkZGRikKIAkJcmV0dXJuIC1FTVNHU0laRTsKIAor CS8qIE11c3QgaGF2ZSBhdCBsZWFzdCBhIGZ1bGwgSUNNUCBoZWFkZXIuICovCisJaWYgKGxlbiA8 IGljbXBoX2xlbikKKwkJcmV0dXJuIC1FSU5WQUw7CisKIAkvKgogCSAqCUNoZWNrIHRoZSBmbGFn cy4KIAkgKi8KZGlmZiAtLWdpdCBhL25ldC9pcHY0L3JvdXRlLmMgYi9uZXQvaXB2NC9yb3V0ZS5j CmluZGV4IDI1NDhjMjI3NGNiOC4uN2NkMzdiMDRmM2E2IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9y b3V0ZS5jCisrKyBiL25ldC9pcHY0L3JvdXRlLmMKQEAgLTc0Niw4ICs3NDYsMTAgQEAgc3RhdGlj IHZvaWQgX19pcF9kb19yZWRpcmVjdChzdHJ1Y3QgcnRhYmxlICpydCwgc3RydWN0IHNrX2J1ZmYg KnNrYiwgc3RydWN0IGZsb3cKIAkJCWdvdG8gcmVqZWN0X3JlZGlyZWN0OwogCX0KIAotCW4gPSBp cHY0X25laWdoX2xvb2t1cCgmcnQtPmRzdCwgTlVMTCwgJm5ld19ndyk7Ci0JaWYgKG4pIHsKKwlu ID0gX19pcHY0X25laWdoX2xvb2t1cChydC0+ZHN0LmRldiwgbmV3X2d3KTsKKwlpZiAoIW4pCisJ CW4gPSBuZWlnaF9jcmVhdGUoJmFycF90YmwsICZuZXdfZ3csIHJ0LT5kc3QuZGV2KTsKKwlpZiAo IUlTX0VSUihuKSkgewogCQlpZiAoIShuLT5udWRfc3RhdGUgJiBOVURfVkFMSUQpKSB7CiAJCQlu ZWlnaF9ldmVudF9zZW5kKG4sIE5VTEwpOwogCQl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvbmV0L2lw djQvc3lzY3RsX25ldF9pcHY0LmMgYi9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYwppbmRleCA3 OWEwMDdjNTI1NTguLmUxY2VhZmU2OGNiMSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvc3lzY3RsX25l dF9pcHY0LmMKKysrIGIvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMKQEAgLTkwLDExICs5MCwx MSBAQCBzdGF0aWMgdm9pZCBpbmV0X2dldF9waW5nX2dyb3VwX3JhbmdlX3RhYmxlKHN0cnVjdCBj dGxfdGFibGUgKnRhYmxlLCBrZ2lkX3QgKmxvdwogCQljb250YWluZXJfb2YodGFibGUtPmRhdGEs IHN0cnVjdCBuZXQsIGlwdjQucGluZ19ncm91cF9yYW5nZS5yYW5nZSk7CiAJdW5zaWduZWQgaW50 IHNlcTsKIAlkbyB7Ci0JCXNlcSA9IHJlYWRfc2VxYmVnaW4oJm5ldC0+aXB2NC5pcF9sb2NhbF9w b3J0cy5sb2NrKTsKKwkJc2VxID0gcmVhZF9zZXFiZWdpbigmbmV0LT5pcHY0LnBpbmdfZ3JvdXBf cmFuZ2UubG9jayk7CiAKIAkJKmxvdyA9IGRhdGFbMF07CiAJCSpoaWdoID0gZGF0YVsxXTsKLQl9 IHdoaWxlIChyZWFkX3NlcXJldHJ5KCZuZXQtPmlwdjQuaXBfbG9jYWxfcG9ydHMubG9jaywgc2Vx KSk7CisJfSB3aGlsZSAocmVhZF9zZXFyZXRyeSgmbmV0LT5pcHY0LnBpbmdfZ3JvdXBfcmFuZ2Uu bG9jaywgc2VxKSk7CiB9CiAKIC8qIFVwZGF0ZSBzeXN0ZW0gdmlzaWJsZSBJUCBwb3J0IHJhbmdl ICovCkBAIC0xMDMsMTAgKzEwMywxMCBAQCBzdGF0aWMgdm9pZCBzZXRfcGluZ19ncm91cF9yYW5n ZShzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwga2dpZF90IGxvdywga2dpZF90IGhpZwogCWtnaWRf dCAqZGF0YSA9IHRhYmxlLT5kYXRhOwogCXN0cnVjdCBuZXQgKm5ldCA9CiAJCWNvbnRhaW5lcl9v Zih0YWJsZS0+ZGF0YSwgc3RydWN0IG5ldCwgaXB2NC5waW5nX2dyb3VwX3JhbmdlLnJhbmdlKTsK LQl3cml0ZV9zZXFsb2NrKCZuZXQtPmlwdjQuaXBfbG9jYWxfcG9ydHMubG9jayk7CisJd3JpdGVf c2VxbG9jaygmbmV0LT5pcHY0LnBpbmdfZ3JvdXBfcmFuZ2UubG9jayk7CiAJZGF0YVswXSA9IGxv dzsKIAlkYXRhWzFdID0gaGlnaDsKLQl3cml0ZV9zZXF1bmxvY2soJm5ldC0+aXB2NC5pcF9sb2Nh bF9wb3J0cy5sb2NrKTsKKwl3cml0ZV9zZXF1bmxvY2soJm5ldC0+aXB2NC5waW5nX2dyb3VwX3Jh bmdlLmxvY2spOwogfQogCiAvKiBWYWxpZGF0ZSBjaGFuZ2VzIGZyb20gL3Byb2MgaW50ZXJmYWNl LiAqLwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lwdjQuYyBiL25ldC9pcHY0L3RjcF9pcHY0 LmMKaW5kZXggNmI0YzNlMzYzOWJmLi5mNjZmMDMzYzUxZmUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0 L3RjcF9pcHY0LmMKKysrIGIvbmV0L2lwdjQvdGNwX2lwdjQuYwpAQCAtMTY5Nyw2ICsxNjk3LDIx IEBAIGJvb2wgdGNwX3ByZXF1ZXVlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNr YikKIH0KIEVYUE9SVF9TWU1CT0wodGNwX3ByZXF1ZXVlKTsKIAoraW50IHRjcF9maWx0ZXIoc3Ry dWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQoreworCXN0cnVjdCB0Y3BoZHIgKnRo ID0gKHN0cnVjdCB0Y3BoZHIgKilza2ItPmRhdGE7CisJdW5zaWduZWQgaW50IGVhdGVuID0gc2ti LT5sZW47CisJaW50IGVycjsKKworCWVyciA9IHNrX2ZpbHRlcl90cmltX2NhcChzaywgc2tiLCB0 aC0+ZG9mZiAqIDQpOworCWlmICghZXJyKSB7CisJCWVhdGVuIC09IHNrYi0+bGVuOworCQlUQ1Bf U0tCX0NCKHNrYiktPmVuZF9zZXEgLT0gZWF0ZW47CisJfQorCXJldHVybiBlcnI7Cit9CitFWFBP UlRfU1lNQk9MKHRjcF9maWx0ZXIpOworCiAvKgogICoJRnJvbSB0Y3BfaW5wdXQuYwogICovCkBA IC0xNzYwLDggKzE3NzUsMTAgQEAgcHJvY2VzczoKIAkJZ290byBkaXNjYXJkX2FuZF9yZWxzZTsK IAluZl9yZXNldChza2IpOwogCi0JaWYgKHNrX2ZpbHRlcihzaywgc2tiKSkKKwlpZiAodGNwX2Zp bHRlcihzaywgc2tiKSkKIAkJZ290byBkaXNjYXJkX2FuZF9yZWxzZTsKKwl0aCA9IChjb25zdCBz dHJ1Y3QgdGNwaGRyICopc2tiLT5kYXRhOworCWlwaCA9IGlwX2hkcihza2IpOwogCiAJc2tfbWFy a19uYXBpX2lkKHNrLCBza2IpOwogCXNrYi0+ZGV2ID0gTlVMTDsKZGlmZiAtLWdpdCBhL25ldC9p cHY2L2FkZHJjb25mLmMgYi9uZXQvaXB2Ni9hZGRyY29uZi5jCmluZGV4IDIxM2ZjNGY5YjI2NS4u MDExYTRjNzEwYzk0IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9hZGRyY29uZi5jCisrKyBiL25ldC9p cHY2L2FkZHJjb25mLmMKQEAgLTI2OTIsNyArMjY5Miw3IEBAIHN0YXRpYyB2b2lkIGluaXRfbG9v cGJhY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkJCQkgKiBsbyBkZXZpY2UgZG93biwgcmVs ZWFzZSB0aGlzIG9ic29sZXRlIGRzdCBhbmQKIAkJCQkgKiByZWFsbG9jYXRlIGEgbmV3IHJvdXRl ciBmb3IgaWZhLgogCQkJCSAqLwotCQkJCWlmIChzcF9pZmEtPnJ0LT5kc3Qub2Jzb2xldGUgPiAw KSB7CisJCQkJaWYgKCFhdG9taWNfcmVhZCgmc3BfaWZhLT5ydC0+cnQ2aV9yZWYpKSB7CiAJCQkJ CWlwNl9ydF9wdXQoc3BfaWZhLT5ydCk7CiAJCQkJCXNwX2lmYS0+cnQgPSBOVUxMOwogCQkJCX0g ZWxzZSB7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMgYi9uZXQvaXB2Ni9pcDZf b3V0cHV0LmMKaW5kZXggMGZkZGE0ZDhiNzVkLi5jZGQwYmM3OTM4M2EgMTAwNjQ0Ci0tLSBhL25l dC9pcHY2L2lwNl9vdXRwdXQuYworKysgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKQEAgLTEyOTYs NyArMTI5Niw3IEBAIGVtc2dzaXplOgogCWlmICgoKGxlbmd0aCA+IG10dSkgfHwKIAkgICAgIChz a2IgJiYgc2tiX2lzX2dzbyhza2IpKSkgJiYKIAkgICAgKHNrLT5za19wcm90b2NvbCA9PSBJUFBS T1RPX1VEUCkgJiYKLQkgICAgKHJ0LT5kc3QuZGV2LT5mZWF0dXJlcyAmIE5FVElGX0ZfVUZPKSAm JgorCSAgICAocnQtPmRzdC5kZXYtPmZlYXR1cmVzICYgTkVUSUZfRl9VRk8pICYmICFydC0+ZHN0 LmhlYWRlcl9sZW4gJiYKIAkgICAgKHNrLT5za190eXBlID09IFNPQ0tfREdSQU0pKSB7CiAJCWVy ciA9IGlwNl91Zm9fYXBwZW5kX2RhdGEoc2ssIGdldGZyYWcsIGZyb20sIGxlbmd0aCwKIAkJCQkJ ICBoaF9sZW4sIGZyYWdoZWFkZXJsZW4sIGV4dGhkcmxlbiwKZGlmZiAtLWdpdCBhL25ldC9pcHY2 L291dHB1dF9jb3JlLmMgYi9uZXQvaXB2Ni9vdXRwdXRfY29yZS5jCmluZGV4IDFkNDE1NmRkZjM1 NS4uMWU5ODdlNjhlNTEwIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9vdXRwdXRfY29yZS5jCisrKyBi L25ldC9pcHY2L291dHB1dF9jb3JlLmMKQEAgLTExNCw2ICsxMTQsOCBAQCBpbnQgX19pcDZfbG9j YWxfb3V0KHN0cnVjdCBza19idWZmICpza2IpCiAJaXB2Nl9oZHIoc2tiKS0+cGF5bG9hZF9sZW4g PSBodG9ucyhsZW4pOwogCUlQNkNCKHNrYiktPm5ob2ZmID0gb2Zmc2V0b2Yoc3RydWN0IGlwdjZo ZHIsIG5leHRoZHIpOwogCisJc2tiLT5wcm90b2NvbCA9IGh0b25zKEVUSF9QX0lQVjYpOworCiAJ cmV0dXJuIG5mX2hvb2soTkZQUk9UT19JUFY2LCBORl9JTkVUX0xPQ0FMX09VVCwgc2tiLCBOVUxM LAogCQkgICAgICAgc2tiX2RzdChza2IpLT5kZXYsIGRzdF9vdXRwdXQpOwogfQpkaWZmIC0tZ2l0 IGEvbmV0L2lwdjYvdGNwX2lwdjYuYyBiL25ldC9pcHY2L3RjcF9pcHY2LmMKaW5kZXggNDI3ZDE2 NGFhZDQ2Li5jNmM5MjFkMTVkZTQgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3RjcF9pcHY2LmMKKysr IGIvbmV0L2lwdjYvdGNwX2lwdjYuYwpAQCAtMTM1OSw3ICsxMzU5LDcgQEAgc3RhdGljIGludCB0 Y3BfdjZfZG9fcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJZ290 byBkaXNjYXJkOwogI2VuZGlmCiAKLQlpZiAoc2tfZmlsdGVyKHNrLCBza2IpKQorCWlmICh0Y3Bf ZmlsdGVyKHNrLCBza2IpKQogCQlnb3RvIGRpc2NhcmQ7CiAKIAkvKgpAQCAtMTUzMSw4ICsxNTMx LDEwIEBAIHByb2Nlc3M6CiAJaWYgKCF4ZnJtNl9wb2xpY3lfY2hlY2soc2ssIFhGUk1fUE9MSUNZ X0lOLCBza2IpKQogCQlnb3RvIGRpc2NhcmRfYW5kX3JlbHNlOwogCi0JaWYgKHNrX2ZpbHRlcihz aywgc2tiKSkKKwlpZiAodGNwX2ZpbHRlcihzaywgc2tiKSkKIAkJZ290byBkaXNjYXJkX2FuZF9y ZWxzZTsKKwl0aCA9IChjb25zdCBzdHJ1Y3QgdGNwaGRyICopc2tiLT5kYXRhOworCWhkciA9IGlw djZfaGRyKHNrYik7CiAKIAlza19tYXJrX25hcGlfaWQoc2ssIHNrYik7CiAJc2tiLT5kZXYgPSBO VUxMOwpkaWZmIC0tZ2l0IGEvbmV0L2wydHAvbDJ0cF9pcC5jIGIvbmV0L2wydHAvbDJ0cF9pcC5j CmluZGV4IGU0NWQyYjc3YmI0Mi4uNWQ1MzI0OWEyZTg0IDEwMDY0NAotLS0gYS9uZXQvbDJ0cC9s MnRwX2lwLmMKKysrIGIvbmV0L2wydHAvbDJ0cF9pcC5jCkBAIC0yNTEsOCArMjUxLDYgQEAgc3Rh dGljIGludCBsMnRwX2lwX2JpbmQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVh ZGRyLCBpbnQgYWRkcl9sZW4pCiAJaW50IHJldDsKIAlpbnQgY2hrX2FkZHJfcmV0OwogCi0JaWYg KCFzb2NrX2ZsYWcoc2ssIFNPQ0tfWkFQUEVEKSkKLQkJcmV0dXJuIC1FSU5WQUw7CiAJaWYgKGFk ZHJfbGVuIDwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9sMnRwaXApKQogCQlyZXR1cm4gLUVJTlZB TDsKIAlpZiAoYWRkci0+bDJ0cF9mYW1pbHkgIT0gQUZfSU5FVCkKQEAgLTI2Nyw2ICsyNjUsOSBA QCBzdGF0aWMgaW50IGwydHBfaXBfYmluZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrYWRk ciAqdWFkZHIsIGludCBhZGRyX2xlbikKIAlyZWFkX3VubG9ja19iaCgmbDJ0cF9pcF9sb2NrKTsK IAogCWxvY2tfc29jayhzayk7CisJaWYgKCFzb2NrX2ZsYWcoc2ssIFNPQ0tfWkFQUEVEKSkKKwkJ Z290byBvdXQ7CisKIAlpZiAoc2stPnNrX3N0YXRlICE9IFRDUF9DTE9TRSB8fCBhZGRyX2xlbiA8 IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfbDJ0cGlwKSkKIAkJZ290byBvdXQ7CiAKZGlmZiAtLWdp dCBhL25ldC9sMnRwL2wydHBfaXA2LmMgYi9uZXQvbDJ0cC9sMnRwX2lwNi5jCmluZGV4IDQ1ODA4 ZDkxNmI3ZS4uYTZlNjk2NzdhNmExIDEwMDY0NAotLS0gYS9uZXQvbDJ0cC9sMnRwX2lwNi5jCisr KyBiL25ldC9sMnRwL2wydHBfaXA2LmMKQEAgLTI2Niw4ICsyNjYsNiBAQCBzdGF0aWMgaW50IGwy dHBfaXA2X2JpbmQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLCBpbnQg YWRkcl9sZW4pCiAJaW50IGFkZHJfdHlwZTsKIAlpbnQgZXJyOwogCi0JaWYgKCFzb2NrX2ZsYWco c2ssIFNPQ0tfWkFQUEVEKSkKLQkJcmV0dXJuIC1FSU5WQUw7CiAJaWYgKGFkZHItPmwydHBfZmFt aWx5ICE9IEFGX0lORVQ2KQogCQlyZXR1cm4gLUVJTlZBTDsKIAlpZiAoYWRkcl9sZW4gPCBzaXpl b2YoKmFkZHIpKQpAQCAtMjkzLDYgKzI5MSw5IEBAIHN0YXRpYyBpbnQgbDJ0cF9pcDZfYmluZChz dHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrYWRkciAqdWFkZHIsIGludCBhZGRyX2xlbikKIAls b2NrX3NvY2soc2spOwogCiAJZXJyID0gLUVJTlZBTDsKKwlpZiAoIXNvY2tfZmxhZyhzaywgU09D S19aQVBQRUQpKQorCQlnb3RvIG91dF91bmxvY2s7CisKIAlpZiAoc2stPnNrX3N0YXRlICE9IFRD UF9DTE9TRSkKIAkJZ290byBvdXRfdW5sb2NrOwogCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEv cnguYyBiL25ldC9tYWM4MDIxMS9yeC5jCmluZGV4IDk0ZDgxNmI1MmU1Ni4uYmYyNWYxMzk5YzZj IDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvcnguYworKysgYi9uZXQvbWFjODAyMTEvcnguYwpA QCAtMjAwOCwxNiArMjAwOCwyMiBAQCBpZWVlODAyMTFfcnhfaF9hbXNkdShzdHJ1Y3QgaWVlZTgw MjExX3J4X2RhdGEgKnJ4KQogCWlmICghKHN0YXR1cy0+cnhfZmxhZ3MgJiBJRUVFODAyMTFfUlhf QU1TRFUpKQogCQlyZXR1cm4gUlhfQ09OVElOVUU7CiAKLQlpZiAoaWVlZTgwMjExX2hhc19hNCho ZHItPmZyYW1lX2NvbnRyb2wpICYmCi0JICAgIHJ4LT5zZGF0YS0+dmlmLnR5cGUgPT0gTkw4MDIx MV9JRlRZUEVfQVBfVkxBTiAmJgotCSAgICAhcngtPnNkYXRhLT51LnZsYW4uc3RhKQotCQlyZXR1 cm4gUlhfRFJPUF9VTlVTQUJMRTsKKwlpZiAodW5saWtlbHkoaWVlZTgwMjExX2hhc19hNChoZHIt PmZyYW1lX2NvbnRyb2wpKSkgeworCQlzd2l0Y2ggKHJ4LT5zZGF0YS0+dmlmLnR5cGUpIHsKKwkJ Y2FzZSBOTDgwMjExX0lGVFlQRV9BUF9WTEFOOgorCQkJaWYgKCFyeC0+c2RhdGEtPnUudmxhbi5z dGEpCisJCQkJcmV0dXJuIFJYX0RST1BfVU5VU0FCTEU7CisJCQlicmVhazsKKwkJY2FzZSBOTDgw MjExX0lGVFlQRV9TVEFUSU9OOgorCQkJaWYgKCFyeC0+c2RhdGEtPnUubWdkLnVzZV80YWRkcikK KwkJCQlyZXR1cm4gUlhfRFJPUF9VTlVTQUJMRTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJ cmV0dXJuIFJYX0RST1BfVU5VU0FCTEU7CisJCX0KKwl9CiAKLQlpZiAoaXNfbXVsdGljYXN0X2V0 aGVyX2FkZHIoaGRyLT5hZGRyMSkgJiYKLQkgICAgKChyeC0+c2RhdGEtPnZpZi50eXBlID09IE5M ODAyMTFfSUZUWVBFX0FQX1ZMQU4gJiYKLQkgICAgICByeC0+c2RhdGEtPnUudmxhbi5zdGEpIHx8 Ci0JICAgICAocngtPnNkYXRhLT52aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OICYm Ci0JICAgICAgcngtPnNkYXRhLT51Lm1nZC51c2VfNGFkZHIpKSkKKwlpZiAoaXNfbXVsdGljYXN0 X2V0aGVyX2FkZHIoaGRyLT5hZGRyMSkpCiAJCXJldHVybiBSWF9EUk9QX1VOVVNBQkxFOwogCiAJ c2tiLT5kZXYgPSBkZXY7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19j b3JlLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMKaW5kZXggMDU0NjM4Yzgy NGRkLi5jZGQ0NzM4ODcyM2IgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNr X2NvcmUuYworKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMKQEAgLTcyNiw2 ICs3MjYsNyBAQCBuZl9jb25udHJhY2tfdHVwbGVfdGFrZW4oY29uc3Qgc3RydWN0IG5mX2Nvbm50 cmFja190dXBsZSAqdHVwbGUsCiAJICogbGVhc3Qgb25jZSBmb3IgdGhlIHN0YXRzIGFueXdheS4K IAkgKi8KIAlyY3VfcmVhZF9sb2NrX2JoKCk7CisgYmVnaW46CiAJaGxpc3RfbnVsbHNfZm9yX2Vh Y2hfZW50cnlfcmN1KGgsIG4sICZuZXQtPmN0Lmhhc2hbaGFzaF0sIGhubm9kZSkgewogCQljdCA9 IG5mX2N0X3R1cGxlaGFzaF90b19jdHJhY2soaCk7CiAJCWlmIChjdCAhPSBpZ25vcmVkX2Nvbm50 cmFjayAmJgpAQCAtNzM3LDYgKzczOCwxMiBAQCBuZl9jb25udHJhY2tfdHVwbGVfdGFrZW4oY29u c3Qgc3RydWN0IG5mX2Nvbm50cmFja190dXBsZSAqdHVwbGUsCiAJCX0KIAkJTkZfQ1RfU1RBVF9J TkMobmV0LCBzZWFyY2hlZCk7CiAJfQorCisJaWYgKGdldF9udWxsc192YWx1ZShuKSAhPSBoYXNo KSB7CisJCU5GX0NUX1NUQVRfSU5DKG5ldCwgc2VhcmNoX3Jlc3RhcnQpOworCQlnb3RvIGJlZ2lu OworCX0KKwogCXJjdV9yZWFkX3VubG9ja19iaCgpOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQg YS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zaXAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29u bnRyYWNrX3NpcC5jCmluZGV4IDRjM2JhMWM4ZDY4Mi4uMzJiYTk5Y2E2MDMwIDEwMDY0NAotLS0g YS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zaXAuYworKysgYi9uZXQvbmV0ZmlsdGVyL25m X2Nvbm50cmFja19zaXAuYwpAQCAtMTQzNCw5ICsxNDM0LDEyIEBAIHN0YXRpYyBpbnQgcHJvY2Vz c19zaXBfcmVxdWVzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZiwK IAkJaGFuZGxlciA9ICZzaXBfaGFuZGxlcnNbaV07CiAJCWlmIChoYW5kbGVyLT5yZXF1ZXN0ID09 IE5VTEwpCiAJCQljb250aW51ZTsKLQkJaWYgKCpkYXRhbGVuIDwgaGFuZGxlci0+bGVuIHx8CisJ CWlmICgqZGF0YWxlbiA8IGhhbmRsZXItPmxlbiArIDIgfHwKIAkJICAgIHN0cm5pY21wKCpkcHRy LCBoYW5kbGVyLT5tZXRob2QsIGhhbmRsZXItPmxlbikpCiAJCQljb250aW51ZTsKKwkJaWYgKCgq ZHB0cilbaGFuZGxlci0+bGVuXSAhPSAnICcgfHwKKwkJICAgICFpc2FscGhhKCgqZHB0cilbaGFu ZGxlci0+bGVuKzFdKSkKKwkJCWNvbnRpbnVlOwogCiAJCWlmIChjdF9zaXBfZ2V0X2hlYWRlcihj dCwgKmRwdHIsIDAsICpkYXRhbGVuLCBTSVBfSERSX0NTRVEsCiAJCQkJICAgICAgJm1hdGNob2Zm LCAmbWF0Y2hsZW4pIDw9IDApIHsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVz X2FwaS5jIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMKaW5kZXggM2VhNDEwOTQ4NmNl Li4wYWUwNjYyY2UzODUgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5j CisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jCkBAIC0yNjQyLDEyICsyNjQyLDE0 IEBAIHN0YXRpYyBpbnQgbmZfdGFibGVzX25ld3NldChzdHJ1Y3Qgc29jayAqbmxzaywgc3RydWN0 IHNrX2J1ZmYgKnNrYiwKIAogCWVyciA9IG5mdF90cmFuc19zZXRfYWRkKCZjdHgsIE5GVF9NU0df TkVXU0VULCBzZXQpOwogCWlmIChlcnIgPCAwKQotCQlnb3RvIGVycjI7CisJCWdvdG8gZXJyMzsK IAogCWxpc3RfYWRkX3RhaWxfcmN1KCZzZXQtPmxpc3QsICZ0YWJsZS0+c2V0cyk7CiAJdGFibGUt PnVzZSsrOwogCXJldHVybiAwOwogCitlcnIzOgorCW9wcy0+ZGVzdHJveShzZXQpOwogZXJyMjoK IAlrZnJlZShzZXQpOwogZXJyMToKQEAgLTM3MTIsNiArMzcxNCwzMSBAQCBzdGF0aWMgaW50IG5m X3RhYmxlc19jaGVja19sb29wcyhjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LAogfQogCiAvKioK KyAqCW5mdF9wYXJzZV91MzJfY2hlY2sgLSBmZXRjaCB1MzIgYXR0cmlidXRlIGFuZCBjaGVjayBm b3IgbWF4aW11bSB2YWx1ZQorICoKKyAqCUBhdHRyOiBuZXRsaW5rIGF0dHJpYnV0ZSB0byBmZXRj aCB2YWx1ZSBmcm9tCisgKglAbWF4OiBtYXhpbXVtIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiBkZXN0 CisgKglAZGVzdDogcG9pbnRlciB0byB0aGUgdmFyaWFibGUKKyAqCisgKglQYXJzZSwgY2hlY2sg YW5kIHN0b3JlIGEgZ2l2ZW4gdTMyIG5ldGxpbmsgYXR0cmlidXRlIGludG8gdmFyaWFibGUuCisg KglUaGlzIGZ1bmN0aW9uIHJldHVybnMgLUVSQU5HRSBpZiB0aGUgdmFsdWUgZ29lcyBvdmVyIG1h eGltdW0gdmFsdWUuCisgKglPdGhlcndpc2UgYSAwIGlzIHJldHVybmVkIGFuZCB0aGUgYXR0cmli dXRlIHZhbHVlIGlzIHN0b3JlZCBpbiB0aGUKKyAqCWRlc3RpbmF0aW9uIHZhcmlhYmxlLgorICov CitpbnQgbmZ0X3BhcnNlX3UzMl9jaGVjayhjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBpbnQg bWF4LCB1MzIgKmRlc3QpCit7CisJdTMyIHZhbDsKKworCXZhbCA9IG50b2hsKG5sYV9nZXRfYmUz MihhdHRyKSk7CisJaWYgKHZhbCA+IG1heCkKKwkJcmV0dXJuIC1FUkFOR0U7CisKKwkqZGVzdCA9 IHZhbDsKKwlyZXR1cm4gMDsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKG5mdF9wYXJzZV91MzJfY2hl Y2spOworCisvKioKICAqCW5mdF92YWxpZGF0ZV9pbnB1dF9yZWdpc3RlciAtIHZhbGlkYXRlIGFu IGV4cHJlc3Npb25zJyBpbnB1dCByZWdpc3RlcgogICoKICAqCUByZWc6IHRoZSByZWdpc3RlciBu dW1iZXIKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rLmMgYi9uZXQvbmV0Zmls dGVyL25mbmV0bGluay5jCmluZGV4IGNkZGFiMjEwMTU2OS4uMTEyM2FmNGFkNjZjIDEwMDY0NAot LS0gYS9uZXQvbmV0ZmlsdGVyL25mbmV0bGluay5jCisrKyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRs aW5rLmMKQEAgLTI3MywxMCArMjczLDExIEBAIHJlcGxheToKIAkJbmxoID0gbmxtc2dfaGRyKHNr Yik7CiAJCWVyciA9IDA7CiAKLQkJaWYgKG5sbXNnX2xlbihubGgpIDwgc2l6ZW9mKHN0cnVjdCBu Zmdlbm1zZykgfHwKLQkJICAgIHNrYi0+bGVuIDwgbmxoLT5ubG1zZ19sZW4pIHsKLQkJCWVyciA9 IC1FSU5WQUw7Ci0JCQlnb3RvIGFjazsKKwkJaWYgKG5saC0+bmxtc2dfbGVuIDwgTkxNU0dfSERS TEVOIHx8CisJCSAgICBza2ItPmxlbiA8IG5saC0+bmxtc2dfbGVuIHx8CisJCSAgICBubG1zZ19s ZW4obmxoKSA8IHNpemVvZihzdHJ1Y3QgbmZnZW5tc2cpKSB7CisJCQlzdWNjZXNzID0gZmFsc2U7 CisJCQlnb3RvIGRvbmU7CiAJCX0KIAogCQkvKiBPbmx5IHJlcXVlc3RzIGFyZSBoYW5kbGVkIGJ5 IHRoZSBrZXJuZWwgKi8KZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X2JpdHdpc2UuYyBi L25ldC9uZXRmaWx0ZXIvbmZ0X2JpdHdpc2UuYwppbmRleCA0ZmI2ZWUyYzExMDYuLmM5ZTg0N2Zm NjQ1MSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfYml0d2lzZS5jCisrKyBiL25ldC9u ZXRmaWx0ZXIvbmZ0X2JpdHdpc2UuYwpAQCAtNTQsNiArNTQsNyBAQCBzdGF0aWMgaW50IG5mdF9i aXR3aXNlX2luaXQoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwKIHsKIAlzdHJ1Y3QgbmZ0X2Jp dHdpc2UgKnByaXYgPSBuZnRfZXhwcl9wcml2KGV4cHIpOwogCXN0cnVjdCBuZnRfZGF0YV9kZXNj IGQxLCBkMjsKKwl1MzIgbGVuOwogCWludCBlcnI7CiAKIAlpZiAodGJbTkZUQV9CSVRXSVNFX1NS RUddID09IE5VTEwgfHwKQEAgLTc2LDcgKzc3LDExIEBAIHN0YXRpYyBpbnQgbmZ0X2JpdHdpc2Vf aW5pdChjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LAogCWlmIChlcnIgPCAwKQogCQlyZXR1cm4g ZXJyOwogCi0JcHJpdi0+bGVuID0gbnRvaGwobmxhX2dldF9iZTMyKHRiW05GVEFfQklUV0lTRV9M RU5dKSk7CisJZXJyID0gbmZ0X3BhcnNlX3UzMl9jaGVjayh0YltORlRBX0JJVFdJU0VfTEVOXSwg VThfTUFYLCAmbGVuKTsKKwlpZiAoZXJyIDwgMCkKKwkJcmV0dXJuIGVycjsKKworCXByaXYtPmxl biA9IGxlbjsKIAogCWVyciA9IG5mdF9kYXRhX2luaXQoTlVMTCwgJnByaXYtPm1hc2ssICZkMSwg dGJbTkZUQV9CSVRXSVNFX01BU0tdKTsKIAlpZiAoZXJyIDwgMCkKZGlmZiAtLWdpdCBhL25ldC9u ZXRmaWx0ZXIvbmZ0X2J5dGVvcmRlci5jIGIvbmV0L25ldGZpbHRlci9uZnRfYnl0ZW9yZGVyLmMK aW5kZXggYzM5ZWQ4ZDI5ZGYxLi5hMjFkNDE2N2U4MDcgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0 ZXIvbmZ0X2J5dGVvcmRlci5jCisrKyBiL25ldC9uZXRmaWx0ZXIvbmZ0X2J5dGVvcmRlci5jCkBA IC03OCw2ICs3OCw3IEBAIHN0YXRpYyBpbnQgbmZ0X2J5dGVvcmRlcl9pbml0KGNvbnN0IHN0cnVj dCBuZnRfY3R4ICpjdHgsCiAJCQkgICAgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICogY29uc3QgdGJb XSkKIHsKIAlzdHJ1Y3QgbmZ0X2J5dGVvcmRlciAqcHJpdiA9IG5mdF9leHByX3ByaXYoZXhwcik7 CisJdTMyIHNpemUsIGxlbjsKIAlpbnQgZXJyOwogCiAJaWYgKHRiW05GVEFfQllURU9SREVSX1NS RUddID09IE5VTEwgfHwKQEAgLTEwOSwxMSArMTEwLDIxIEBAIHN0YXRpYyBpbnQgbmZ0X2J5dGVv cmRlcl9pbml0KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsCiAJCXJldHVybiAtRUlOVkFMOwog CX0KIAotCXByaXYtPmxlbiA9IG50b2hsKG5sYV9nZXRfYmUzMih0YltORlRBX0JZVEVPUkRFUl9M RU5dKSk7CisJZXJyID0gbmZ0X3BhcnNlX3UzMl9jaGVjayh0YltORlRBX0JZVEVPUkRFUl9MRU5d LCBVOF9NQVgsICZsZW4pOworCWlmIChlcnIgPCAwKQorCQlyZXR1cm4gZXJyOworCisJcHJpdi0+ bGVuID0gbGVuOworCiAJaWYgKHByaXYtPmxlbiA9PSAwIHx8IHByaXYtPmxlbiA+IEZJRUxEX1NJ WkVPRihzdHJ1Y3QgbmZ0X2RhdGEsIGRhdGEpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCXByaXYt PnNpemUgPSBudG9obChubGFfZ2V0X2JlMzIodGJbTkZUQV9CWVRFT1JERVJfU0laRV0pKTsKKwll cnIgPSBuZnRfcGFyc2VfdTMyX2NoZWNrKHRiW05GVEFfQllURU9SREVSX1NJWkVdLCBVOF9NQVgs ICZzaXplKTsKKwlpZiAoZXJyIDwgMCkKKwkJcmV0dXJuIGVycjsKKworCXByaXYtPnNpemUgPSBz aXplOworCiAJc3dpdGNoIChwcml2LT5zaXplKSB7CiAJY2FzZSAyOgogCWNhc2UgNDoKZGlmZiAt LWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X2NtcC5jIGIvbmV0L25ldGZpbHRlci9uZnRfY21wLmMK aW5kZXggZTJiM2Y1MWM4MWYxLi4xMDliOTFkZWI2OWEgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0 ZXIvbmZ0X2NtcC5jCisrKyBiL25ldC9uZXRmaWx0ZXIvbmZ0X2NtcC5jCkBAIC04MSw2ICs4MSw5 IEBAIHN0YXRpYyBpbnQgbmZ0X2NtcF9pbml0KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsIGNv bnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwciwKIAllcnIgPSBuZnRfZGF0YV9pbml0KE5VTEwsICZw cml2LT5kYXRhLCAmZGVzYywgdGJbTkZUQV9DTVBfREFUQV0pOwogCUJVR19PTihlcnIgPCAwKTsK IAorCWlmIChkZXNjLmxlbiA+IFU4X01BWCkKKwkJcmV0dXJuIC1FUkFOR0U7CisKIAlwcml2LT5s ZW4gPSBkZXNjLmxlbjsKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIv bmZ0X2V4dGhkci5jIGIvbmV0L25ldGZpbHRlci9uZnRfZXh0aGRyLmMKaW5kZXggNTVjOTM5ZjUz NzFmLi5jYzk2ODFhODEyNjYgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZ0X2V4dGhkci5j CisrKyBiL25ldC9uZXRmaWx0ZXIvbmZ0X2V4dGhkci5jCkBAIC01OSw2ICs1OSw3IEBAIHN0YXRp YyBpbnQgbmZ0X2V4dGhkcl9pbml0KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsCiB7CiAJc3Ry dWN0IG5mdF9leHRoZHIgKnByaXYgPSBuZnRfZXhwcl9wcml2KGV4cHIpOwogCWludCBlcnI7CisJ dTMyIG9mZnNldCwgbGVuOwogCiAJaWYgKHRiW05GVEFfRVhUSERSX0RSRUddID09IE5VTEwgfHwK IAkgICAgdGJbTkZUQV9FWFRIRFJfVFlQRV0gPT0gTlVMTCB8fApAQCAtNjYsOSArNjcsMTcgQEAg c3RhdGljIGludCBuZnRfZXh0aGRyX2luaXQoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwKIAkg ICAgdGJbTkZUQV9FWFRIRFJfTEVOXSA9PSBOVUxMKQogCQlyZXR1cm4gLUVJTlZBTDsKIAorCWVy ciA9IG5mdF9wYXJzZV91MzJfY2hlY2sodGJbTkZUQV9FWFRIRFJfT0ZGU0VUXSwgVThfTUFYLCAm b2Zmc2V0KTsKKwlpZiAoZXJyIDwgMCkKKwkJcmV0dXJuIGVycjsKKworCWVyciA9IG5mdF9wYXJz ZV91MzJfY2hlY2sodGJbTkZUQV9FWFRIRFJfTEVOXSwgVThfTUFYLCAmbGVuKTsKKwlpZiAoZXJy IDwgMCkKKwkJcmV0dXJuIGVycjsKKwogCXByaXYtPnR5cGUgICA9IG5sYV9nZXRfdTgodGJbTkZU QV9FWFRIRFJfVFlQRV0pOwotCXByaXYtPm9mZnNldCA9IG50b2hsKG5sYV9nZXRfYmUzMih0YltO RlRBX0VYVEhEUl9PRkZTRVRdKSk7Ci0JcHJpdi0+bGVuICAgID0gbnRvaGwobmxhX2dldF9iZTMy KHRiW05GVEFfRVhUSERSX0xFTl0pKTsKKwlwcml2LT5vZmZzZXQgPSBvZmZzZXQ7CisJcHJpdi0+ bGVuICAgID0gbGVuOwogCWlmIChwcml2LT5sZW4gPT0gMCB8fAogCSAgICBwcml2LT5sZW4gPiBG SUVMRF9TSVpFT0Yoc3RydWN0IG5mdF9kYXRhLCBkYXRhKSkKIAkJcmV0dXJuIC1FSU5WQUw7CmRp ZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF9pbW1lZGlhdGUuYyBiL25ldC9uZXRmaWx0ZXIv bmZ0X2ltbWVkaWF0ZS5jCmluZGV4IDgxMDM4NWViNzI0OS4uZmY2NzlkODA4ODM3IDEwMDY0NAot LS0gYS9uZXQvbmV0ZmlsdGVyL25mdF9pbW1lZGlhdGUuYworKysgYi9uZXQvbmV0ZmlsdGVyL25m dF9pbW1lZGlhdGUuYwpAQCAtNTcsNiArNTcsMTAgQEAgc3RhdGljIGludCBuZnRfaW1tZWRpYXRl X2luaXQoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwKIAllcnIgPSBuZnRfZGF0YV9pbml0KGN0 eCwgJnByaXYtPmRhdGEsICZkZXNjLCB0YltORlRBX0lNTUVESUFURV9EQVRBXSk7CiAJaWYgKGVy ciA8IDApCiAJCXJldHVybiBlcnI7CisKKwlpZiAoZGVzYy5sZW4gPiBVOF9NQVgpCisJCXJldHVy biAtRVJBTkdFOworCiAJcHJpdi0+ZGxlbiA9IGRlc2MubGVuOwogCiAJZXJyID0gbmZ0X3ZhbGlk YXRlX2RhdGFfbG9hZChjdHgsIHByaXYtPmRyZWcsICZwcml2LT5kYXRhLCBkZXNjLnR5cGUpOwpk aWZmIC0tZ2l0IGEvbmV0L25ldGxpbmsvYWZfbmV0bGluay5jIGIvbmV0L25ldGxpbmsvYWZfbmV0 bGluay5jCmluZGV4IDI0ODc2NDkyZjI2YS4uMzgxYjAwNGM4NTdhIDEwMDY0NAotLS0gYS9uZXQv bmV0bGluay9hZl9uZXRsaW5rLmMKKysrIGIvbmV0L25ldGxpbmsvYWZfbmV0bGluay5jCkBAIC0y NDYxLDcgKzI0NjEsNyBAQCBzdGF0aWMgaW50IG5ldGxpbmtfcmVjdm1zZyhzdHJ1Y3Qga2lvY2Ig Kmtpb2NiLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLAogCS8qIFJlY29yZCB0aGUgbWF4IGxlbmd0aCBv ZiByZWN2bXNnKCkgY2FsbHMgZm9yIGZ1dHVyZSBhbGxvY2F0aW9ucyAqLwogCW5say0+bWF4X3Jl Y3Ztc2dfbGVuID0gbWF4KG5say0+bWF4X3JlY3Ztc2dfbGVuLCBsZW4pOwogCW5say0+bWF4X3Jl Y3Ztc2dfbGVuID0gbWluX3Qoc2l6ZV90LCBubGstPm1heF9yZWN2bXNnX2xlbiwKLQkJCQkgICAg IDE2Mzg0KTsKKwkJCQkgICAgIFNLQl9XSVRIX09WRVJIRUFEKDMyNzY4KSk7CiAKIAljb3BpZWQg PSBkYXRhX3NrYi0+bGVuOwogCWlmIChsZW4gPCBjb3BpZWQpIHsKQEAgLTI3MTksOSArMjcxOSw4 IEBAIHN0YXRpYyBpbnQgbmV0bGlua19kdW1wKHN0cnVjdCBzb2NrICpzaykKIAlpZiAoYWxsb2Nf bWluX3NpemUgPCBubGstPm1heF9yZWN2bXNnX2xlbikgewogCQlhbGxvY19zaXplID0gbmxrLT5t YXhfcmVjdm1zZ19sZW47CiAJCXNrYiA9IG5ldGxpbmtfYWxsb2Nfc2tiKHNrLCBhbGxvY19zaXpl LCBubGstPnBvcnRpZCwKLQkJCQkJR0ZQX0tFUk5FTCB8Ci0JCQkJCV9fR0ZQX05PV0FSTiB8Ci0J CQkJCV9fR0ZQX05PUkVUUlkpOworCQkJCQkoR0ZQX0tFUk5FTCAmIH5fX0dGUF9XQUlUKSB8CisJ CQkJCV9fR0ZQX05PV0FSTiB8IF9fR0ZQX05PUkVUUlkpOwogCX0KIAlpZiAoIXNrYikgewogCQlh bGxvY19zaXplID0gYWxsb2NfbWluX3NpemU7CmRpZmYgLS1naXQgYS9uZXQvcGFja2V0L2FmX3Bh Y2tldC5jIGIvbmV0L3BhY2tldC9hZl9wYWNrZXQuYwppbmRleCBkNmRmZTY1ZjRhNzQuLjA2MjYy NGMxYmU3ZSAxMDA2NDQKLS0tIGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYworKysgYi9uZXQvcGFj a2V0L2FmX3BhY2tldC5jCkBAIC0yNTEsOSArMjUxLDIwIEBAIHN0YXRpYyBpbnQgcGFja2V0X2Rp cmVjdF94bWl0KHN0cnVjdCBza19idWZmICpza2IpCiAJCWdvdG8gZHJvcDsKIAogCWZlYXR1cmVz ID0gbmV0aWZfc2tiX2ZlYXR1cmVzKHNrYik7CisJaWYgKHZsYW5fdHhfdGFnX3ByZXNlbnQoc2ti KSAmJgorCSAgICAhdmxhbl9od19vZmZsb2FkX2NhcGFibGUoZmVhdHVyZXMsIHNrYi0+dmxhbl9w cm90bykpCisJCWdvdG8gZHJvcDsKKwlpZiAobmV0aWZfbmVlZHNfZ3NvKHNrYiwgZmVhdHVyZXMp KQorCQlnb3RvIGRyb3A7CiAJaWYgKHNrYl9uZWVkc19saW5lYXJpemUoc2tiLCBmZWF0dXJlcykg JiYKIAkgICAgX19za2JfbGluZWFyaXplKHNrYikpCiAJCWdvdG8gZHJvcDsKKwlpZiAoc2tiLT5p cF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCkgeworCQlza2Jfc2V0X3RyYW5zcG9ydF9oZWFk ZXIoc2tiLCBza2JfY2hlY2tzdW1fc3RhcnRfb2Zmc2V0KHNrYikpOworCQlpZiAoIShmZWF0dXJl cyAmIE5FVElGX0ZfQUxMX0NTVU0pICYmCisJCSAgICBza2JfY2hlY2tzdW1faGVscChza2IpKQor CQkJZ290byBkcm9wOworCX0KIAogCXF1ZXVlX21hcCA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhz a2IpOwogCXR4cSA9IG5ldGRldl9nZXRfdHhfcXVldWUoZGV2LCBxdWV1ZV9tYXApOwpAQCAtMzI5 MywxOSArMzMwNCwyNSBAQCBwYWNrZXRfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBp bnQgbGV2ZWwsIGludCBvcHRuYW1lLCBjaGFyIF9fdXNlciAqb3B0dgogCiAJCWlmIChvcHRsZW4g IT0gc2l6ZW9mKHZhbCkpCiAJCQlyZXR1cm4gLUVJTlZBTDsKLQkJaWYgKHBvLT5yeF9yaW5nLnBn X3ZlYyB8fCBwby0+dHhfcmluZy5wZ192ZWMpCi0JCQlyZXR1cm4gLUVCVVNZOwogCQlpZiAoY29w eV9mcm9tX3VzZXIoJnZhbCwgb3B0dmFsLCBzaXplb2YodmFsKSkpCiAJCQlyZXR1cm4gLUVGQVVM VDsKIAkJc3dpdGNoICh2YWwpIHsKIAkJY2FzZSBUUEFDS0VUX1YxOgogCQljYXNlIFRQQUNLRVRf VjI6CiAJCWNhc2UgVFBBQ0tFVF9WMzoKLQkJCXBvLT50cF92ZXJzaW9uID0gdmFsOwotCQkJcmV0 dXJuIDA7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CisJ CWxvY2tfc29jayhzayk7CisJCWlmIChwby0+cnhfcmluZy5wZ192ZWMgfHwgcG8tPnR4X3Jpbmcu cGdfdmVjKSB7CisJCQlyZXQgPSAtRUJVU1k7CisJCX0gZWxzZSB7CisJCQlwby0+dHBfdmVyc2lv biA9IHZhbDsKKwkJCXJldCA9IDA7CisJCX0KKwkJcmVsZWFzZV9zb2NrKHNrKTsKKwkJcmV0dXJu IHJldDsKIAl9CiAJY2FzZSBQQUNLRVRfUkVTRVJWRToKIAl7CkBAIC0zNzY4LDYgKzM3ODUsNyBA QCBzdGF0aWMgaW50IHBhY2tldF9zZXRfcmluZyhzdHJ1Y3Qgc29jayAqc2ssIHVuaW9uIHRwYWNr ZXRfcmVxX3UgKnJlcV91LAogCS8qIEFkZGVkIHRvIGF2b2lkIG1pbmltYWwgY29kZSBjaHVybiAq LwogCXN0cnVjdCB0cGFja2V0X3JlcSAqcmVxID0gJnJlcV91LT5yZXE7CiAKKwlsb2NrX3NvY2so c2spOwogCS8qIE9wZW5pbmcgYSBUeC1yaW5nIGlzIE5PVCBzdXBwb3J0ZWQgaW4gVFBBQ0tFVF9W MyAqLwogCWlmICghY2xvc2luZyAmJiB0eF9yaW5nICYmIChwby0+dHBfdmVyc2lvbiA+IFRQQUNL RVRfVjIpKSB7CiAJCVdBUk4oMSwgIlR4LXJpbmcgaXMgbm90IHN1cHBvcnRlZC5cbiIpOwpAQCAt Mzg0OSw3ICszODY3LDYgQEAgc3RhdGljIGludCBwYWNrZXRfc2V0X3Jpbmcoc3RydWN0IHNvY2sg KnNrLCB1bmlvbiB0cGFja2V0X3JlcV91ICpyZXFfdSwKIAkJCWdvdG8gb3V0OwogCX0KIAotCWxv Y2tfc29jayhzayk7CiAKIAkvKiBEZXRhY2ggc29ja2V0IGZyb20gbmV0d29yayAqLwogCXNwaW5f bG9jaygmcG8tPmJpbmRfbG9jayk7CkBAIC0zODk4LDExICszOTE1LDExIEBAIHN0YXRpYyBpbnQg cGFja2V0X3NldF9yaW5nKHN0cnVjdCBzb2NrICpzaywgdW5pb24gdHBhY2tldF9yZXFfdSAqcmVx X3UsCiAJCWlmICghdHhfcmluZykKIAkJCXByYl9zaHV0ZG93bl9yZXRpcmVfYmxrX3RpbWVyKHBv LCB0eF9yaW5nLCByYl9xdWV1ZSk7CiAJfQotCXJlbGVhc2Vfc29jayhzayk7CiAKIAlpZiAocGdf dmVjKQogCQlmcmVlX3BnX3ZlYyhwZ192ZWMsIG9yZGVyLCByZXEtPnRwX2Jsb2NrX25yKTsKIG91 dDoKKwlyZWxlYXNlX3NvY2soc2spOwogCXJldHVybiBlcnI7CiB9CiAKZGlmZiAtLWdpdCBhL25l dC9yb3NlL3Jvc2VfaW4uYyBiL25ldC9yb3NlL3Jvc2VfaW4uYwppbmRleCA3OWM0YWJjZmE2YjQu LjBhNjM5NDc1NGU4MSAxMDA2NDQKLS0tIGEvbmV0L3Jvc2Uvcm9zZV9pbi5jCisrKyBiL25ldC9y b3NlL3Jvc2VfaW4uYwpAQCAtMTY0LDcgKzE2NCw4IEBAIHN0YXRpYyBpbnQgcm9zZV9zdGF0ZTNf bWFjaGluZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsIGludCBmcmFtZXR5 CiAJCXJvc2VfZnJhbWVzX2Fja2VkKHNrLCBucik7CiAJCWlmIChucyA9PSByb3NlLT52cikgewog CQkJcm9zZV9zdGFydF9pZGxldGltZXIoc2spOwotCQkJaWYgKHNvY2tfcXVldWVfcmN2X3NrYihz aywgc2tiKSA9PSAwKSB7CisJCQlpZiAoc2tfZmlsdGVyX3RyaW1fY2FwKHNrLCBza2IsIFJPU0Vf TUlOX0xFTikgPT0gMCAmJgorCQkJICAgIF9fc29ja19xdWV1ZV9yY3Zfc2tiKHNrLCBza2IpID09 IDApIHsKIAkJCQlyb3NlLT52ciA9IChyb3NlLT52ciArIDEpICUgUk9TRV9NT0RVTFVTOwogCQkJ CXF1ZXVlZCA9IDE7CiAJCQl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9mcS5j IGIvbmV0L3NjaGVkL3NjaF9mcS5jCmluZGV4IDgyMGVjZWI5OGQyNC4uYmRjZWRmZWRjNDg5IDEw MDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2ZxLmMKKysrIGIvbmV0L3NjaGVkL3NjaF9mcS5jCkBA IC03ODksMjAgKzc4OSwyNCBAQCBubGFfcHV0X2ZhaWx1cmU6CiBzdGF0aWMgaW50IGZxX2R1bXBf c3RhdHMoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBnbmV0X2R1bXAgKmQpCiB7CiAJc3RydWN0 IGZxX3NjaGVkX2RhdGEgKnEgPSBxZGlzY19wcml2KHNjaCk7Ci0JdTY0IG5vdyA9IGt0aW1lX3Rv X25zKGt0aW1lX2dldCgpKTsKLQlzdHJ1Y3QgdGNfZnFfcWRfc3RhdHMgc3QgPSB7Ci0JCS5nY19m bG93cwkJPSBxLT5zdGF0X2djX2Zsb3dzLAotCQkuaGlnaHByaW9fcGFja2V0cwk9IHEtPnN0YXRf aW50ZXJuYWxfcGFja2V0cywKLQkJLnRjcF9yZXRyYW5zCQk9IHEtPnN0YXRfdGNwX3JldHJhbnMs Ci0JCS50aHJvdHRsZWQJCT0gcS0+c3RhdF90aHJvdHRsZWQsCi0JCS5mbG93c19wbGltaXQJCT0g cS0+c3RhdF9mbG93c19wbGltaXQsCi0JCS5wa3RzX3Rvb19sb25nCQk9IHEtPnN0YXRfcGt0c190 b29fbG9uZywKLQkJLmFsbG9jYXRpb25fZXJyb3JzCT0gcS0+c3RhdF9hbGxvY2F0aW9uX2Vycm9y cywKLQkJLmZsb3dzCQkJPSBxLT5mbG93cywKLQkJLmluYWN0aXZlX2Zsb3dzCQk9IHEtPmluYWN0 aXZlX2Zsb3dzLAotCQkudGhyb3R0bGVkX2Zsb3dzCT0gcS0+dGhyb3R0bGVkX2Zsb3dzLAotCQku dGltZV9uZXh0X2RlbGF5ZWRfZmxvdwk9IHEtPnRpbWVfbmV4dF9kZWxheWVkX2Zsb3cgLSBub3cs Ci0JfTsKKwlzdHJ1Y3QgdGNfZnFfcWRfc3RhdHMgc3Q7CisKKwlzY2hfdHJlZV9sb2NrKHNjaCk7 CisKKwlzdC5nY19mbG93cwkJICA9IHEtPnN0YXRfZ2NfZmxvd3M7CisJc3QuaGlnaHByaW9fcGFj a2V0cwkgID0gcS0+c3RhdF9pbnRlcm5hbF9wYWNrZXRzOworCXN0LnRjcF9yZXRyYW5zCQkgID0g cS0+c3RhdF90Y3BfcmV0cmFuczsKKwlzdC50aHJvdHRsZWQJCSAgPSBxLT5zdGF0X3Rocm90dGxl ZDsKKwlzdC5mbG93c19wbGltaXQJCSAgPSBxLT5zdGF0X2Zsb3dzX3BsaW1pdDsKKwlzdC5wa3Rz X3Rvb19sb25nCSAgPSBxLT5zdGF0X3BrdHNfdG9vX2xvbmc7CisJc3QuYWxsb2NhdGlvbl9lcnJv cnMJICA9IHEtPnN0YXRfYWxsb2NhdGlvbl9lcnJvcnM7CisJc3QudGltZV9uZXh0X2RlbGF5ZWRf ZmxvdyA9IHEtPnRpbWVfbmV4dF9kZWxheWVkX2Zsb3cgLSBrdGltZV90b19ucyhrdGltZV9nZXQo KSk7CisJc3QuZmxvd3MJCSAgPSBxLT5mbG93czsKKwlzdC5pbmFjdGl2ZV9mbG93cwkgID0gcS0+ aW5hY3RpdmVfZmxvd3M7CisJc3QudGhyb3R0bGVkX2Zsb3dzCSAgPSBxLT50aHJvdHRsZWRfZmxv d3M7CisJc3QucGFkCQkJICA9IDA7CisKKwlzY2hfdHJlZV91bmxvY2soc2NoKTsKIAogCXJldHVy biBnbmV0X3N0YXRzX2NvcHlfYXBwKGQsICZzdCwgc2l6ZW9mKHN0KSk7CiB9CmRpZmYgLS1naXQg YS9uZXQvc2N0cC9zbV9zaWRlZWZmZWN0LmMgYi9uZXQvc2N0cC9zbV9zaWRlZWZmZWN0LmMKaW5k ZXggOTM2NjUxMGE1ODY3Li4xOThjZWI3MjE3OTQgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3NtX3Np ZGVlZmZlY3QuYworKysgYi9uZXQvc2N0cC9zbV9zaWRlZWZmZWN0LmMKQEAgLTEwMjgsMTkgKzEw MjgsMTMgQEAgc3RhdGljIHZvaWQgc2N0cF9jbWRfdDFfdGltZXJfdXBkYXRlKHN0cnVjdCBzY3Rw X2Fzc29jaWF0aW9uICphc29jLAogICogVGhpcyB3YXkgdGhlIHdob2xlIG1lc3NhZ2UgaXMgcXVl dWVkIHVwIGFuZCBidW5kbGluZyBpZgogICogZW5jb3VyYWdlZCBmb3Igc21hbGwgZnJhZ21lbnRz LgogICovCi1zdGF0aWMgaW50IHNjdHBfY21kX3NlbmRfbXNnKHN0cnVjdCBzY3RwX2Fzc29jaWF0 aW9uICphc29jLAotCQkJCXN0cnVjdCBzY3RwX2RhdGFtc2cgKm1zZykKK3N0YXRpYyB2b2lkIHNj dHBfY21kX3NlbmRfbXNnKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAorCQkJICAgICAg c3RydWN0IHNjdHBfZGF0YW1zZyAqbXNnKQogewogCXN0cnVjdCBzY3RwX2NodW5rICpjaHVuazsK LQlpbnQgZXJyb3IgPSAwOwotCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShjaHVuaywgJm1zZy0+Y2h1 bmtzLCBmcmFnX2xpc3QpIHsKLQkJZXJyb3IgPSBzY3RwX291dHFfdGFpbCgmYXNvYy0+b3V0cXVl dWUsIGNodW5rKTsKLQkJaWYgKGVycm9yKQotCQkJYnJlYWs7Ci0JfQogCi0JcmV0dXJuIGVycm9y OworCWxpc3RfZm9yX2VhY2hfZW50cnkoY2h1bmssICZtc2ctPmNodW5rcywgZnJhZ19saXN0KQor CQlzY3RwX291dHFfdGFpbCgmYXNvYy0+b3V0cXVldWUsIGNodW5rKTsKIH0KIAogCkBAIC0xNzE0 LDcgKzE3MDgsNyBAQCBzdGF0aWMgaW50IHNjdHBfY21kX2ludGVycHJldGVyKHNjdHBfZXZlbnRf dCBldmVudF90eXBlLAogCQkJCXNjdHBfb3V0cV9jb3JrKCZhc29jLT5vdXRxdWV1ZSk7CiAJCQkJ bG9jYWxfY29yayA9IDE7CiAJCQl9Ci0JCQllcnJvciA9IHNjdHBfY21kX3NlbmRfbXNnKGFzb2Ms IGNtZC0+b2JqLm1zZyk7CisJCQlzY3RwX2NtZF9zZW5kX21zZyhhc29jLCBjbWQtPm9iai5tc2cp OwogCQkJYnJlYWs7CiAJCWNhc2UgU0NUUF9DTURfU0VORF9ORVhUX0FTQ09ORjoKIAkJCXNjdHBf Y21kX3NlbmRfYXNjb25mKGFzb2MpOwpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc21fc3RhdGVmdW5z LmMgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYwppbmRleCA0ZjAzYmQwY2I0NGQuLmI2YzJkODEw N2EwNiAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMKKysrIGIvbmV0L3NjdHAv c21fc3RhdGVmdW5zLmMKQEAgLTM0MjYsNiArMzQyNiwxMiBAQCBzY3RwX2Rpc3Bvc2l0aW9uX3Qg c2N0cF9zZl9vb3RiKHN0cnVjdCBuZXQgKm5ldCwKIAkJCXJldHVybiBzY3RwX3NmX3Zpb2xhdGlv bl9jaHVua2xlbihuZXQsIGVwLCBhc29jLCB0eXBlLCBhcmcsCiAJCQkJCQkgIGNvbW1hbmRzKTsK IAorCQkvKiBSZXBvcnQgdmlvbGF0aW9uIGlmIGNodW5rIGxlbiBvdmVyZmxvd3MgKi8KKwkJY2hf ZW5kID0gKChfX3U4ICopY2gpICsgV09SRF9ST1VORChudG9ocyhjaC0+bGVuZ3RoKSk7CisJCWlm IChjaF9lbmQgPiBza2JfdGFpbF9wb2ludGVyKHNrYikpCisJCQlyZXR1cm4gc2N0cF9zZl92aW9s YXRpb25fY2h1bmtsZW4obmV0LCBlcCwgYXNvYywgdHlwZSwgYXJnLAorCQkJCQkJICBjb21tYW5k cyk7CisKIAkJLyogTm93IHRoYXQgd2Uga25vdyB3ZSBhdCBsZWFzdCBoYXZlIGEgY2h1bmsgaGVh ZGVyLAogCQkgKiBkbyB0aGluZ3MgdGhhdCBhcmUgdHlwZSBhcHByb3ByaWF0ZS4KIAkJICovCkBA IC0zNDU3LDEyICszNDYzLDYgQEAgc2N0cF9kaXNwb3NpdGlvbl90IHNjdHBfc2Zfb290YihzdHJ1 Y3QgbmV0ICpuZXQsCiAJCQl9CiAJCX0KIAotCQkvKiBSZXBvcnQgdmlvbGF0aW9uIGlmIGNodW5r IGxlbiBvdmVyZmxvd3MgKi8KLQkJY2hfZW5kID0gKChfX3U4ICopY2gpICsgV09SRF9ST1VORChu dG9ocyhjaC0+bGVuZ3RoKSk7Ci0JCWlmIChjaF9lbmQgPiBza2JfdGFpbF9wb2ludGVyKHNrYikp Ci0JCQlyZXR1cm4gc2N0cF9zZl92aW9sYXRpb25fY2h1bmtsZW4obmV0LCBlcCwgYXNvYywgdHlw ZSwgYXJnLAotCQkJCQkJICBjb21tYW5kcyk7Ci0KIAkJY2ggPSAoc2N0cF9jaHVua2hkcl90ICop IGNoX2VuZDsKIAl9IHdoaWxlIChjaF9lbmQgPCBza2JfdGFpbF9wb2ludGVyKHNrYikpOwogCmRp ZmYgLS1naXQgYS9uZXQvc3VucnBjL3hwcnRyZG1hL3N2Y19yZG1hX3JlY3Zmcm9tLmMgYi9uZXQv c3VucnBjL3hwcnRyZG1hL3N2Y19yZG1hX3JlY3Zmcm9tLmMKaW5kZXggMWI2OTI5NTgzYTM0Li5l MTVlOWZhNmEwNzEgMTAwNjQ0Ci0tLSBhL25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3JkbWFfcmVj dmZyb20uYworKysgYi9uZXQvc3VucnBjL3hwcnRyZG1hL3N2Y19yZG1hX3JlY3Zmcm9tLmMKQEAg LTE3OCw3ICsxNzgsNyBAQCBzdGF0aWMgaW50IHJkbWFfcmVhZF9jaHVua19sY2woc3RydWN0IHN2 Y3hwcnRfcmRtYSAqeHBydCwKIAkJCQkJICAgY3R4dC0+c2dlW3Bub10uYWRkcik7CiAJCWlmIChy ZXQpCiAJCQlnb3RvIGVycjsKLQkJYXRvbWljX2luYygmeHBydC0+c2NfZG1hX3VzZWQpOworCQlz dmNfcmRtYV9jb3VudF9tYXBwaW5ncyh4cHJ0LCBjdHh0KTsKIAogCQkvKiBUaGUgbGtleSBoZXJl IGlzIGVpdGhlciBhIGxvY2FsIGRtYSBsa2V5IG9yIGEgZG1hX21yIGxrZXkgKi8KIAkJY3R4dC0+ c2dlW3Bub10ubGtleSA9IHhwcnQtPnNjX2RtYV9sa2V5OwpkaWZmIC0tZ2l0IGEvbmV0L3N1bnJw Yy94cHJ0cmRtYS9zdmNfcmRtYV9zZW5kdG8uYyBiL25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3Jk bWFfc2VuZHRvLmMKaW5kZXggMGNmOWY0MzkwMjVlLi5mM2NmYWJlNTk4ZTEgMTAwNjQ0Ci0tLSBh L25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3JkbWFfc2VuZHRvLmMKKysrIGIvbmV0L3N1bnJwYy94 cHJ0cmRtYS9zdmNfcmRtYV9zZW5kdG8uYwpAQCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRpYyBpbnQg c2VuZF93cml0ZShzdHJ1Y3Qgc3ZjeHBydF9yZG1hICp4cHJ0LCBzdHJ1Y3Qgc3ZjX3Jxc3QgKnJx c3RwLAogCQlpZiAoaWJfZG1hX21hcHBpbmdfZXJyb3IoeHBydC0+c2NfY21faWQtPmRldmljZSwK IAkJCQkJIHNnZVtzZ2Vfbm9dLmFkZHIpKQogCQkJZ290byBlcnI7Ci0JCWF0b21pY19pbmMoJnhw cnQtPnNjX2RtYV91c2VkKTsKKwkJc3ZjX3JkbWFfY291bnRfbWFwcGluZ3MoeHBydCwgY3R4dCk7 CiAJCXNnZVtzZ2Vfbm9dLmxrZXkgPSB4cHJ0LT5zY19kbWFfbGtleTsKIAkJY3R4dC0+Y291bnQr KzsKIAkJc2dlX29mZiA9IDA7CkBAIC00MTEsNyArNDExLDcgQEAgc3RhdGljIGludCBzZW5kX3Jl cGx5KHN0cnVjdCBzdmN4cHJ0X3JkbWEgKnJkbWEsCiAJCQkgICAgY3R4dC0+c2dlWzBdLmxlbmd0 aCwgRE1BX1RPX0RFVklDRSk7CiAJaWYgKGliX2RtYV9tYXBwaW5nX2Vycm9yKHJkbWEtPnNjX2Nt X2lkLT5kZXZpY2UsIGN0eHQtPnNnZVswXS5hZGRyKSkKIAkJZ290byBlcnI7Ci0JYXRvbWljX2lu YygmcmRtYS0+c2NfZG1hX3VzZWQpOworCXN2Y19yZG1hX2NvdW50X21hcHBpbmdzKHJkbWEsIGN0 eHQpOwogCiAJY3R4dC0+ZGlyZWN0aW9uID0gRE1BX1RPX0RFVklDRTsKIApAQCAtNDI3LDcgKzQy Nyw3IEBAIHN0YXRpYyBpbnQgc2VuZF9yZXBseShzdHJ1Y3Qgc3ZjeHBydF9yZG1hICpyZG1hLAog CQlpZiAoaWJfZG1hX21hcHBpbmdfZXJyb3IocmRtYS0+c2NfY21faWQtPmRldmljZSwKIAkJCQkJ IGN0eHQtPnNnZVtzZ2Vfbm9dLmFkZHIpKQogCQkJZ290byBlcnI7Ci0JCWF0b21pY19pbmMoJnJk bWEtPnNjX2RtYV91c2VkKTsKKwkJc3ZjX3JkbWFfY291bnRfbWFwcGluZ3MocmRtYSwgY3R4dCk7 CiAJCWN0eHQtPnNnZVtzZ2Vfbm9dLmxrZXkgPSByZG1hLT5zY19kbWFfbGtleTsKIAkJY3R4dC0+ c2dlW3NnZV9ub10ubGVuZ3RoID0gc2dlX2J5dGVzOwogCX0KQEAgLTQ0MiwyMyArNDQyLDkgQEAg c3RhdGljIGludCBzZW5kX3JlcGx5KHN0cnVjdCBzdmN4cHJ0X3JkbWEgKnJkbWEsCiAJCWN0eHQt PnBhZ2VzW3BhZ2Vfbm8rMV0gPSBycXN0cC0+cnFfcmVzcGFnZXNbcGFnZV9ub107CiAJCWN0eHQt PmNvdW50Kys7CiAJCXJxc3RwLT5ycV9yZXNwYWdlc1twYWdlX25vXSA9IE5VTEw7Ci0JCS8qCi0J CSAqIElmIHRoZXJlIGFyZSBtb3JlIHBhZ2VzIHRoYW4gU0dFLCB0ZXJtaW5hdGUgU0dFCi0JCSAq IGxpc3Qgc28gdGhhdCBzdmNfcmRtYV91bm1hcF9kbWEgZG9lc24ndCBhdHRlbXB0IHRvCi0JCSAq IHVubWFwIGdhcmJhZ2UuCi0JCSAqLwotCQlpZiAocGFnZV9ubysxID49IHNnZV9ubykKLQkJCWN0 eHQtPnNnZVtwYWdlX25vKzFdLmxlbmd0aCA9IDA7CiAJfQogCXJxc3RwLT5ycV9uZXh0X3BhZ2Ug PSBycXN0cC0+cnFfcmVzcGFnZXMgKyAxOwogCi0JLyogVGhlIGxvb3AgYWJvdmUgYnVtcHMgc2Nf ZG1hX3VzZWQgZm9yIGVhY2ggc2dlLiBUaGUKLQkgKiB4ZHJfYnVmLnRhaWwgZ2V0cyBhIHNlcGFy YXRlIHNnZSwgYnV0IHJlc2lkZXMgaW4gdGhlCi0JICogc2FtZSBwYWdlIGFzIHhkcl9idWYuaGVh ZC4gRG9uJ3QgY291bnQgaXQgdHdpY2UuCi0JICovCi0JaWYgKHNnZV9ubyA+IGN0eHQtPmNvdW50 KQotCQlhdG9taWNfZGVjKCZyZG1hLT5zY19kbWFfdXNlZCk7Ci0KIAlCVUdfT04oc2dlX25vID4g cmRtYS0+c2NfbWF4X3NnZSk7CiAJbWVtc2V0KCZzZW5kX3dyLCAwLCBzaXplb2Ygc2VuZF93cik7 CiAJY3R4dC0+d3Jfb3AgPSBJQl9XUl9TRU5EOwpkaWZmIC0tZ2l0IGEvbmV0L3N1bnJwYy94cHJ0 cmRtYS9zdmNfcmRtYV90cmFuc3BvcnQuYyBiL25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3JkbWFf dHJhbnNwb3J0LmMKaW5kZXggMDZhNWQ5MjM1MTA3Li4yZjY3YzVlZTljYWYgMTAwNjQ0Ci0tLSBh L25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3JkbWFfdHJhbnNwb3J0LmMKKysrIGIvbmV0L3N1bnJw Yy94cHJ0cmRtYS9zdmNfcmRtYV90cmFuc3BvcnQuYwpAQCAtMTA4LDYgKzEwOCw3IEBAIHN0cnVj dCBzdmNfcmRtYV9vcF9jdHh0ICpzdmNfcmRtYV9nZXRfY29udGV4dChzdHJ1Y3Qgc3ZjeHBydF9y ZG1hICp4cHJ0KQogCWN0eHQtPnhwcnQgPSB4cHJ0OwogCUlOSVRfTElTVF9IRUFEKCZjdHh0LT5k dG9fcSk7CiAJY3R4dC0+Y291bnQgPSAwOworCWN0eHQtPm1hcHBlZF9zZ2VzID0gMDsKIAljdHh0 LT5mcm1yID0gTlVMTDsKIAlhdG9taWNfaW5jKCZ4cHJ0LT5zY19jdHh0X3VzZWQpOwogCXJldHVy biBjdHh0OwpAQCAtMTE2LDIyICsxMTcsMjcgQEAgc3RydWN0IHN2Y19yZG1hX29wX2N0eHQgKnN2 Y19yZG1hX2dldF9jb250ZXh0KHN0cnVjdCBzdmN4cHJ0X3JkbWEgKnhwcnQpCiB2b2lkIHN2Y19y ZG1hX3VubWFwX2RtYShzdHJ1Y3Qgc3ZjX3JkbWFfb3BfY3R4dCAqY3R4dCkKIHsKIAlzdHJ1Y3Qg c3ZjeHBydF9yZG1hICp4cHJ0ID0gY3R4dC0+eHBydDsKLQlpbnQgaTsKLQlmb3IgKGkgPSAwOyBp IDwgY3R4dC0+Y291bnQgJiYgY3R4dC0+c2dlW2ldLmxlbmd0aDsgaSsrKSB7CisJc3RydWN0IGli X2RldmljZSAqZGV2aWNlID0geHBydC0+c2NfY21faWQtPmRldmljZTsKKwl1MzIgbGtleSA9IHhw cnQtPnNjX2RtYV9sa2V5OworCXVuc2lnbmVkIGludCBpLCBjb3VudDsKKworCWZvciAoY291bnQg PSAwLCBpID0gMDsgaSA8IGN0eHQtPm1hcHBlZF9zZ2VzOyBpKyspIHsKIAkJLyoKIAkJICogVW5t YXAgdGhlIERNQSBhZGRyIGluIHRoZSBTR0UgaWYgdGhlIGxrZXkgbWF0Y2hlcwogCQkgKiB0aGUg c2NfZG1hX2xrZXksIG90aGVyd2lzZSwgaWdub3JlIGl0IHNpbmNlIGl0IGlzCiAJCSAqIGFuIEZS TVIgbGtleSBhbmQgd2lsbCBiZSB1bm1hcHBlZCBsYXRlciB3aGVuIHRoZQogCQkgKiBsYXN0IFdS IHRoYXQgdXNlcyBpdCBjb21wbGV0ZXMuCiAJCSAqLwotCQlpZiAoY3R4dC0+c2dlW2ldLmxrZXkg PT0geHBydC0+c2NfZG1hX2xrZXkpIHsKLQkJCWF0b21pY19kZWMoJnhwcnQtPnNjX2RtYV91c2Vk KTsKLQkJCWliX2RtYV91bm1hcF9wYWdlKHhwcnQtPnNjX2NtX2lkLT5kZXZpY2UsCisJCWlmIChj dHh0LT5zZ2VbaV0ubGtleSA9PSBsa2V5KSB7CisJCQljb3VudCsrOworCQkJaWJfZG1hX3VubWFw X3BhZ2UoZGV2aWNlLAogCQkJCQkgICAgY3R4dC0+c2dlW2ldLmFkZHIsCiAJCQkJCSAgICBjdHh0 LT5zZ2VbaV0ubGVuZ3RoLAogCQkJCQkgICAgY3R4dC0+ZGlyZWN0aW9uKTsKIAkJfQogCX0KKwlj dHh0LT5tYXBwZWRfc2dlcyA9IDA7CisJYXRvbWljX3N1Yihjb3VudCwgJnhwcnQtPnNjX2RtYV91 c2VkKTsKIH0KIAogdm9pZCBzdmNfcmRtYV9wdXRfY29udGV4dChzdHJ1Y3Qgc3ZjX3JkbWFfb3Bf Y3R4dCAqY3R4dCwgaW50IGZyZWVfcGFnZXMpCkBAIC01MjEsNyArNTI3LDcgQEAgaW50IHN2Y19y ZG1hX3Bvc3RfcmVjdihzdHJ1Y3Qgc3ZjeHBydF9yZG1hICp4cHJ0KQogCQkJCSAgICAgRE1BX0ZS T01fREVWSUNFKTsKIAkJaWYgKGliX2RtYV9tYXBwaW5nX2Vycm9yKHhwcnQtPnNjX2NtX2lkLT5k ZXZpY2UsIHBhKSkKIAkJCWdvdG8gZXJyX3B1dF9jdHh0OwotCQlhdG9taWNfaW5jKCZ4cHJ0LT5z Y19kbWFfdXNlZCk7CisJCXN2Y19yZG1hX2NvdW50X21hcHBpbmdzKHhwcnQsIGN0eHQpOwogCQlj dHh0LT5zZ2Vbc2dlX25vXS5hZGRyID0gcGE7CiAJCWN0eHQtPnNnZVtzZ2Vfbm9dLmxlbmd0aCA9 IFBBR0VfU0laRTsKIAkJY3R4dC0+c2dlW3NnZV9ub10ubGtleSA9IHhwcnQtPnNjX2RtYV9sa2V5 OwpAQCAtMTM0Niw3ICsxMzUyLDcgQEAgdm9pZCBzdmNfcmRtYV9zZW5kX2Vycm9yKHN0cnVjdCBz dmN4cHJ0X3JkbWEgKnhwcnQsIHN0cnVjdCBycGNyZG1hX21zZyAqcm1zZ3AsCiAJCXN2Y19yZG1h X3B1dF9jb250ZXh0KGN0eHQsIDEpOwogCQlyZXR1cm47CiAJfQotCWF0b21pY19pbmMoJnhwcnQt PnNjX2RtYV91c2VkKTsKKwlzdmNfcmRtYV9jb3VudF9tYXBwaW5ncyh4cHJ0LCBjdHh0KTsKIAlj dHh0LT5zZ2VbMF0ubGtleSA9IHhwcnQtPnNjX2RtYV9sa2V5OwogCWN0eHQtPnNnZVswXS5sZW5n dGggPSBsZW5ndGg7CiAKZGlmZiAtLWdpdCBhL25ldC90aXBjL2JlYXJlci5jIGIvbmV0L3RpcGMv YmVhcmVyLmMKaW5kZXggMjY0NDc0Mzk0ZjlmLi4wMDBkMWJhNDhiOGIgMTAwNjQ0Ci0tLSBhL25l dC90aXBjL2JlYXJlci5jCisrKyBiL25ldC90aXBjL2JlYXJlci5jCkBAIC00MjAsNiArNDIwLDEw IEBAIGludCB0aXBjX2VuYWJsZV9sMl9tZWRpYShzdHJ1Y3QgdGlwY19iZWFyZXIgKmIpCiAJZGV2 ID0gZGV2X2dldF9ieV9uYW1lKCZpbml0X25ldCwgZHJpdmVyX25hbWUpOwogCWlmICghZGV2KQog CQlyZXR1cm4gLUVOT0RFVjsKKwlpZiAodGlwY19tdHVfYmFkKGRldiwgMCkpIHsKKwkJZGV2X3B1 dChkZXYpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CiAKIAkvKiBBc3NvY2lhdGUgVElQQyBiZWFy ZXIgd2l0aCBMMiBiZWFyZXIgKi8KIAlyY3VfYXNzaWduX3BvaW50ZXIoYi0+bWVkaWFfcHRyLCBk ZXYpOwpAQCAtNTY0LDE0ICs1NjgsMTkgQEAgc3RhdGljIGludCB0aXBjX2wyX2RldmljZV9ldmVu dChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2dCwKIAlpZiAoIWJf cHRyKQogCQlyZXR1cm4gTk9USUZZX0RPTkU7CiAKLQliX3B0ci0+bXR1ID0gZGV2LT5tdHU7Ci0K IAlzd2l0Y2ggKGV2dCkgewogCWNhc2UgTkVUREVWX0NIQU5HRToKIAkJaWYgKG5ldGlmX2NhcnJp ZXJfb2soZGV2KSkKIAkJCWJyZWFrOwogCWNhc2UgTkVUREVWX0RPV046CisJCXRpcGNfcmVzZXRf YmVhcmVyKGJfcHRyKTsKKwkJYnJlYWs7CiAJY2FzZSBORVRERVZfQ0hBTkdFTVRVOgorCQlpZiAo dGlwY19tdHVfYmFkKGRldiwgMCkpIHsKKwkJCWJlYXJlcl9kaXNhYmxlKGJfcHRyLCBmYWxzZSk7 CisJCQlicmVhazsKKwkJfQorCQliX3B0ci0+bXR1ID0gZGV2LT5tdHU7CiAJCXRpcGNfcmVzZXRf YmVhcmVyKGJfcHRyKTsKIAkJYnJlYWs7CiAJY2FzZSBORVRERVZfQ0hBTkdFQUREUjoKZGlmZiAt LWdpdCBhL25ldC90aXBjL2JlYXJlci5oIGIvbmV0L3RpcGMvYmVhcmVyLmgKaW5kZXggNzhmY2Nj NDlkZTIzLi44ZTAyNDI1MDEzMTggMTAwNjQ0Ci0tLSBhL25ldC90aXBjL2JlYXJlci5oCisrKyBi L25ldC90aXBjL2JlYXJlci5oCkBAIC01MCw2ICs1MCwxMyBAQAogI2RlZmluZSBUSVBDX01FRElB X0FERFJfU0laRQkzMgogI2RlZmluZSBUSVBDX01FRElBX1RZUEVfT0ZGU0VUCTMKIAorLyogTWVz c2FnZSBoZWFkZXIgc2l6ZXMgZnJvbSBtc2cuaCAtIGR1cGxpY2F0ZWQgdG8gYXZvaWQgbXV0dWFs IGluY2x1c2lvbiAqLworI2RlZmluZSBJTlRfSF9TSVpFICAgICAgICAgICAgICAgIDQwCisjZGVm aW5lIE1BWF9IX1NJWkUgICAgICAgICAgICAgICAgNjAKKworLyogbWluaW11bSBiZWFyZXIgTVRV ICovCisjZGVmaW5lIFRJUENfTUlOX0JFQVJFUl9NVFUJKE1BWF9IX1NJWkUgKyBJTlRfSF9TSVpF KQorCiAvKgogICogSWRlbnRpZmllcnMgb2Ygc3VwcG9ydGVkIFRJUEMgbWVkaWEgdHlwZXMKICAq LwpAQCAtMTk2LDQgKzIwMywxMyBAQCB2b2lkIHRpcGNfYmVhcmVyX3N0b3Aodm9pZCk7CiB2b2lk IHRpcGNfYmVhcmVyX3NlbmQodTMyIGJlYXJlcl9pZCwgc3RydWN0IHNrX2J1ZmYgKmJ1ZiwKIAkJ ICAgICAgc3RydWN0IHRpcGNfbWVkaWFfYWRkciAqZGVzdCk7CiAKKy8qIGNoZWNrIGlmIGRldmlj ZSBNVFUgaXMgdG9vIGxvdyBmb3IgdGlwYyBoZWFkZXJzICovCitzdGF0aWMgaW5saW5lIGJvb2wg dGlwY19tdHVfYmFkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByZXNlcnZl KQoreworCWlmIChkZXYtPm10dSA+PSBUSVBDX01JTl9CRUFSRVJfTVRVICsgcmVzZXJ2ZSkKKwkJ cmV0dXJuIGZhbHNlOworCW5ldGRldl93YXJuKGRldiwgIk1UVSB0b28gbG93IGZvciB0aXBjIGJl YXJlclxuIik7CisJcmV0dXJuIHRydWU7Cit9CisKICNlbmRpZgkvKiBfVElQQ19CRUFSRVJfSCAq LwpkaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL2NvcmUuaCBiL25ldC93aXJlbGVzcy9jb3JlLmgK aW5kZXggN2UzYTNjZWY3ZGY5Li5jNGQ0YjBjNGYwZTYgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVz cy9jb3JlLmgKKysrIGIvbmV0L3dpcmVsZXNzL2NvcmUuaApAQCAtNjEsNiArNjEsNyBAQCBzdHJ1 Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgewogCXN0cnVjdCBsaXN0X2hlYWQgYnNzX2xp c3Q7CiAJc3RydWN0IHJiX3Jvb3QgYnNzX3RyZWU7CiAJdTMyIGJzc19nZW5lcmF0aW9uOworCXUz MiBic3NfZW50cmllczsKIAlzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0ICpzY2FuX3JlcTsg LyogcHJvdGVjdGVkIGJ5IFJUTkwgKi8KIAlzdHJ1Y3Qgc2tfYnVmZiAqc2Nhbl9tc2c7CiAJc3Ry dWN0IGNmZzgwMjExX3NjaGVkX3NjYW5fcmVxdWVzdCAqc2NoZWRfc2Nhbl9yZXE7CmRpZmYgLS1n aXQgYS9uZXQvd2lyZWxlc3Mvc2Nhbi5jIGIvbmV0L3dpcmVsZXNzL3NjYW4uYwppbmRleCAwNzk4 YzYyZTYwODUuLmI2NTBhMzU4ZmU4ZSAxMDA2NDQKLS0tIGEvbmV0L3dpcmVsZXNzL3NjYW4uYwor KysgYi9uZXQvd2lyZWxlc3Mvc2Nhbi5jCkBAIC01NSw2ICs1NSwxOSBAQAogICogYWxzbyBsaW5r ZWQgaW50byB0aGUgcHJvYmUgcmVzcG9uc2Ugc3RydWN0LgogICovCiAKKy8qCisgKiBMaW1pdCB0 aGUgbnVtYmVyIG9mIEJTUyBlbnRyaWVzIHN0b3JlZCBpbiBtYWM4MDIxMS4gRWFjaCBvbmUgaXMK KyAqIGEgYml0IG92ZXIgNGsgYXQgbW9zdCwgc28gdGhpcyBsaW1pdHMgdG8gcm91Z2hseSA0LTVN IG9mIG1lbW9yeS4KKyAqIElmIHNvbWVib2R5IHdhbnRzIHRvIHJlYWxseSBhdHRhY2sgdGhpcyB0 aG91Z2gsIHRoZXknZCBsaWtlbHkKKyAqIHVzZSBzbWFsbCBiZWFjb25zLCBhbmQgb25seSBvbmUg dHlwZSBvZiBmcmFtZSwgbGltaXRpbmcgZWFjaCBvZgorICogdGhlIGVudHJpZXMgdG8gYSBtdWNo IHNtYWxsZXIgc2l6ZSAoaW4gb3JkZXIgdG8gZ2VuZXJhdGUgbW9yZQorICogZW50cmllcyBpbiB0 b3RhbCwgc28gb3ZlcmhlYWQgaXMgYmlnZ2VyLikKKyAqLworc3RhdGljIGludCBic3NfZW50cmll c19saW1pdCA9IDEwMDA7Cittb2R1bGVfcGFyYW0oYnNzX2VudHJpZXNfbGltaXQsIGludCwgMDY0 NCk7CitNT0RVTEVfUEFSTV9ERVNDKGJzc19lbnRyaWVzX2xpbWl0LAorICAgICAgICAgICAgICAg ICAibGltaXQgdG8gbnVtYmVyIG9mIHNjYW4gQlNTIGVudHJpZXMgKHBlciB3aXBoeSwgZGVmYXVs dCAxMDAwKSIpOworCiAjZGVmaW5lIElFRUU4MDIxMV9TQ0FOX1JFU1VMVF9FWFBJUkUJKDMwICog SFopCiAKIHN0YXRpYyB2b2lkIGJzc19mcmVlKHN0cnVjdCBjZmc4MDIxMV9pbnRlcm5hbF9ic3Mg KmJzcykKQEAgLTEzNSw2ICsxNDgsMTAgQEAgc3RhdGljIGJvb2wgX19jZmc4MDIxMV91bmxpbmtf YnNzKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiwKIAogCWxpc3RfZGVs X2luaXQoJmJzcy0+bGlzdCk7CiAJcmJfZXJhc2UoJmJzcy0+cmJuLCAmcmRldi0+YnNzX3RyZWUp OworCXJkZXYtPmJzc19lbnRyaWVzLS07CisJV0FSTl9PTkNFKChyZGV2LT5ic3NfZW50cmllcyA9 PSAwKSBeIGxpc3RfZW1wdHkoJnJkZXYtPmJzc19saXN0KSwKKwkJICAicmRldiBic3MgZW50cmll c1slZF0vbGlzdFtlbXB0eTolZF0gY29ycnVwdGlvblxuIiwKKwkJICByZGV2LT5ic3NfZW50cmll cywgbGlzdF9lbXB0eSgmcmRldi0+YnNzX2xpc3QpKTsKIAlic3NfcmVmX3B1dChyZGV2LCBic3Mp OwogCXJldHVybiB0cnVlOwogfQpAQCAtMTYxLDYgKzE3OCw0MCBAQCBzdGF0aWMgdm9pZCBfX2Nm ZzgwMjExX2Jzc19leHBpcmUoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2 LAogCQlyZGV2LT5ic3NfZ2VuZXJhdGlvbisrOwogfQogCitzdGF0aWMgYm9vbCBjZmc4MDIxMV9i c3NfZXhwaXJlX29sZGVzdChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYp Cit7CisJc3RydWN0IGNmZzgwMjExX2ludGVybmFsX2JzcyAqYnNzLCAqb2xkZXN0ID0gTlVMTDsK Kwlib29sIHJldDsKKworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnJkZXYtPmJzc19sb2NrKTsKKwor CWxpc3RfZm9yX2VhY2hfZW50cnkoYnNzLCAmcmRldi0+YnNzX2xpc3QsIGxpc3QpIHsKKwkJaWYg KGF0b21pY19yZWFkKCZic3MtPmhvbGQpKQorCQkJY29udGludWU7CisKKwkJaWYgKCFsaXN0X2Vt cHR5KCZic3MtPmhpZGRlbl9saXN0KSAmJgorCQkgICAgIWJzcy0+cHViLmhpZGRlbl9iZWFjb25f YnNzKQorCQkJY29udGludWU7CisKKwkJaWYgKG9sZGVzdCAmJiB0aW1lX2JlZm9yZShvbGRlc3Qt PnRzLCBic3MtPnRzKSkKKwkJCWNvbnRpbnVlOworCQlvbGRlc3QgPSBic3M7CisJfQorCisJaWYg KFdBUk5fT04oIW9sZGVzdCkpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogVGhlIGNhbGxl cnMgbWFrZSBzdXJlIHRvIGluY3JlYXNlIHJkZXYtPmJzc19nZW5lcmF0aW9uIGlmIGFueXRoaW5n CisJICogZ2V0cyByZW1vdmVkIChhbmQgYSBuZXcgZW50cnkgYWRkZWQpLCBzbyB0aGVyZSdzIG5v IG5lZWQgdG8gYWxzbyBkbworCSAqIGl0IGhlcmUuCisJICovCisKKwlyZXQgPSBfX2NmZzgwMjEx X3VubGlua19ic3MocmRldiwgb2xkZXN0KTsKKwlXQVJOX09OKCFyZXQpOworCXJldHVybiByZXQ7 Cit9CisKIHZvaWQgX19fY2ZnODAyMTFfc2Nhbl9kb25lKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3Rl cmVkX2RldmljZSAqcmRldiwKIAkJCSAgIGJvb2wgc2VuZF9tZXNzYWdlKQogewpAQCAtNjMwLDYg KzY4MSw3IEBAIHN0YXRpYyBib29sIGNmZzgwMjExX2NvbWJpbmVfYnNzZXMoc3RydWN0IGNmZzgw MjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LAogCWNvbnN0IHU4ICppZTsKIAlpbnQgaSwgc3Np ZGxlbjsKIAl1OCBmb2xkID0gMDsKKwl1MzIgbl9lbnRyaWVzID0gMDsKIAogCWllcyA9IHJjdV9h Y2Nlc3NfcG9pbnRlcihuZXctPnB1Yi5iZWFjb25faWVzKTsKIAlpZiAoV0FSTl9PTighaWVzKSkK QEAgLTY1Myw2ICs3MDUsMTIgQEAgc3RhdGljIGJvb2wgY2ZnODAyMTFfY29tYmluZV9ic3Nlcyhz dHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsCiAJLyogVGhpcyBpcyB0aGUg YmFkIHBhcnQgLi4uICovCiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJzcywgJnJkZXYtPmJzc19s aXN0LCBsaXN0KSB7CisJCS8qCisJCSAqIHdlJ3JlIGl0ZXJhdGluZyBhbGwgdGhlIGVudHJpZXMg YW55d2F5LCBzbyB0YWtlIHRoZQorCQkgKiBvcHBvcnR1bml0eSB0byB2YWxpZGF0ZSB0aGUgbGlz dCBsZW5ndGggYWNjb3VudGluZworCQkgKi8KKwkJbl9lbnRyaWVzKys7CisKIAkJaWYgKCFldGhl cl9hZGRyX2VxdWFsKGJzcy0+cHViLmJzc2lkLCBuZXctPnB1Yi5ic3NpZCkpCiAJCQljb250aW51 ZTsKIAkJaWYgKGJzcy0+cHViLmNoYW5uZWwgIT0gbmV3LT5wdWIuY2hhbm5lbCkKQEAgLTY4MSw2 ICs3MzksMTAgQEAgc3RhdGljIGJvb2wgY2ZnODAyMTFfY29tYmluZV9ic3NlcyhzdHJ1Y3QgY2Zn ODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsCiAJCQkJICAgbmV3LT5wdWIuYmVhY29uX2ll cyk7CiAJfQogCisJV0FSTl9PTkNFKG5fZW50cmllcyAhPSByZGV2LT5ic3NfZW50cmllcywKKwkJ ICAicmRldiBic3MgZW50cmllc1slZF0vbGlzdFtsZW46JWRdIGNvcnJ1cHRpb25cbiIsCisJCSAg cmRldi0+YnNzX2VudHJpZXMsIG5fZW50cmllcyk7CisKIAlyZXR1cm4gdHJ1ZTsKIH0KIApAQCAt ODMyLDcgKzg5NCwxNCBAQCBjZmc4MDIxMV9ic3NfdXBkYXRlKHN0cnVjdCBjZmc4MDIxMV9yZWdp c3RlcmVkX2RldmljZSAqcmRldiwKIAkJCX0KIAkJfQogCisJCWlmIChyZGV2LT5ic3NfZW50cmll cyA+PSBic3NfZW50cmllc19saW1pdCAmJgorCQkgICAgIWNmZzgwMjExX2Jzc19leHBpcmVfb2xk ZXN0KHJkZXYpKSB7CisJCQlrZnJlZShuZXcpOworCQkJZ290byBkcm9wOworCQl9CisKIAkJbGlz dF9hZGRfdGFpbCgmbmV3LT5saXN0LCAmcmRldi0+YnNzX2xpc3QpOworCQlyZGV2LT5ic3NfZW50 cmllcysrOwogCQlyYl9pbnNlcnRfYnNzKHJkZXYsIG5ldyk7CiAJCWZvdW5kID0gbmV3OwogCX0K ZGlmZiAtLWdpdCBhL3NjcmlwdHMvZ2NjLXg4Nl82NC1oYXMtc3RhY2stcHJvdGVjdG9yLnNoIGIv c2NyaXB0cy9nY2MteDg2XzY0LWhhcy1zdGFjay1wcm90ZWN0b3Iuc2gKaW5kZXggOTczZThjMTQx NTY3Li4xNzg2N2U3MjNhNTEgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvZ2NjLXg4Nl82NC1oYXMtc3Rh Y2stcHJvdGVjdG9yLnNoCisrKyBiL3NjcmlwdHMvZ2NjLXg4Nl82NC1oYXMtc3RhY2stcHJvdGVj dG9yLnNoCkBAIC0xLDYgKzEsNiBAQAogIyEvYmluL3NoCiAKLWVjaG8gImludCBmb28odm9pZCkg eyBjaGFyIFhbMjAwXTsgcmV0dXJuIDM7IH0iIHwgJCogLVMgLXggYyAtYyAtTzAgLW1jbW9kZWw9 a2VybmVsIC1mc3RhY2stcHJvdGVjdG9yIC0gLW8gLSAyPiAvZGV2L251bGwgfCBncmVwIC1xICIl Z3MiCitlY2hvICJpbnQgZm9vKHZvaWQpIHsgY2hhciBYWzIwMF07IHJldHVybiAzOyB9IiB8ICQq IC1TIC14IGMgLWMgLU8wIC1tY21vZGVsPWtlcm5lbCAtZm5vLVBJRSAtZnN0YWNrLXByb3RlY3Rv ciAtIC1vIC0gMj4gL2Rldi9udWxsIHwgZ3JlcCAtcSAiJWdzIgogaWYgWyAiJD8iIC1lcSAiMCIg XSA7IHRoZW4KIAllY2hvIHkKIGVsc2UKZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2FwcGFybW9yL2Rv bWFpbi5jIGIvc2VjdXJpdHkvYXBwYXJtb3IvZG9tYWluLmMKaW5kZXggNDUyNTY3ZDNhMDhlLi5j MGVlMDRkYTkzZTYgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L2FwcGFybW9yL2RvbWFpbi5jCisrKyBi L3NlY3VyaXR5L2FwcGFybW9yL2RvbWFpbi5jCkBAIC02MjcsOCArNjI3LDggQEAgaW50IGFhX2No YW5nZV9oYXQoY29uc3QgY2hhciAqaGF0c1tdLCBpbnQgY291bnQsIHU2NCB0b2tlbiwgYm9vbCBw ZXJtdGVzdCkKIAkvKiByZWxlYXNlZCBiZWxvdyAqLwogCWNyZWQgPSBnZXRfY3VycmVudF9jcmVk KCk7CiAJY3h0ID0gY3JlZF9jeHQoY3JlZCk7Ci0JcHJvZmlsZSA9IGFhX2NyZWRfcHJvZmlsZShj cmVkKTsKLQlwcmV2aW91c19wcm9maWxlID0gY3h0LT5wcmV2aW91czsKKwlwcm9maWxlID0gYWFf Z2V0X25ld2VzdF9wcm9maWxlKGFhX2NyZWRfcHJvZmlsZShjcmVkKSk7CisJcHJldmlvdXNfcHJv ZmlsZSA9IGFhX2dldF9uZXdlc3RfcHJvZmlsZShjeHQtPnByZXZpb3VzKTsKIAogCWlmICh1bmNv bmZpbmVkKHByb2ZpbGUpKSB7CiAJCWluZm8gPSAidW5jb25maW5lZCI7CkBAIC03MjQsNiArNzI0 LDggQEAgYXVkaXQ6CiBvdXQ6CiAJYWFfcHV0X3Byb2ZpbGUoaGF0KTsKIAlrZnJlZShuYW1lKTsK KwlhYV9wdXRfcHJvZmlsZShwcm9maWxlKTsKKwlhYV9wdXRfcHJvZmlsZShwcmV2aW91c19wcm9m aWxlKTsKIAlwdXRfY3JlZChjcmVkKTsKIAogCXJldHVybiBlcnJvcjsKZGlmZiAtLWdpdCBhL3Nv dW5kL2NvcmUvcGNtX2xpYi5jIGIvc291bmQvY29yZS9wY21fbGliLmMKaW5kZXggMDAzMjI3ODU2 N2FkLi4wYjRkMjg2Y2JkM2MgMTAwNjQ0Ci0tLSBhL3NvdW5kL2NvcmUvcGNtX2xpYi5jCisrKyBi L3NvdW5kL2NvcmUvcGNtX2xpYi5jCkBAIC0xODU2LDEwICsxODU2LDEwIEBAIHZvaWQgc25kX3Bj bV9wZXJpb2RfZWxhcHNlZChzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKIAlp ZiAoc3Vic3RyZWFtLT50aW1lcl9ydW5uaW5nKQogCQlzbmRfdGltZXJfaW50ZXJydXB0KHN1YnN0 cmVhbS0+dGltZXIsIDEpOwogIF9lbmQ6Ci0Jc25kX3BjbV9zdHJlYW1fdW5sb2NrX2lycXJlc3Rv cmUoc3Vic3RyZWFtLCBmbGFncyk7CiAJaWYgKHJ1bnRpbWUtPnRyYW5zZmVyX2Fja19lbmQpCiAJ CXJ1bnRpbWUtPnRyYW5zZmVyX2Fja19lbmQoc3Vic3RyZWFtKTsKIAlraWxsX2Zhc3luYygmcnVu dGltZS0+ZmFzeW5jLCBTSUdJTywgUE9MTF9JTik7CisJc25kX3BjbV9zdHJlYW1fdW5sb2NrX2ly cXJlc3RvcmUoc3Vic3RyZWFtLCBmbGFncyk7CiB9CiAKIEVYUE9SVF9TWU1CT0woc25kX3BjbV9w ZXJpb2RfZWxhcHNlZCk7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYWxpNTQ1MS9hbGk1NDUxLmMg Yi9zb3VuZC9wY2kvYWxpNTQ1MS9hbGk1NDUxLmMKaW5kZXggZmViMjljMjRjYWIxLi5mODdmOTFi NDYwYzYgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9hbGk1NDUxL2FsaTU0NTEuYworKysgYi9zb3Vu ZC9wY2kvYWxpNTQ1MS9hbGk1NDUxLmMKQEAgLTE0MDgsNiArMTQwOCw3IEBAIHNuZF9hbGlfcGxh eWJhY2tfcG9pbnRlcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKIAlzcGlu X3VubG9jaygmY29kZWMtPnJlZ19sb2NrKTsKIAlkZXZfZGJnKGNvZGVjLT5jYXJkLT5kZXYsICJw bGF5YmFjayBwb2ludGVyIHJldHVybmVkIGNzbz0leGguXG4iLCBjc28pOwogCisJY3NvICU9IHJ1 bnRpbWUtPmJ1ZmZlcl9zaXplOwogCXJldHVybiBjc287CiB9CiAKQEAgLTE0MjgsNiArMTQyOSw3 IEBAIHN0YXRpYyBzbmRfcGNtX3VmcmFtZXNfdCBzbmRfYWxpX3BvaW50ZXIoc3RydWN0IHNuZF9w Y21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCiAJY3NvID0gaW53KEFMSV9SRUcoY29kZWMsIEFMSV9D U09fQUxQSEFfRk1TICsgMikpOwogCXNwaW5fdW5sb2NrKCZjb2RlYy0+cmVnX2xvY2spOwogCisJ Y3NvICU9IHJ1bnRpbWUtPmJ1ZmZlcl9zaXplOwogCXJldHVybiBjc287CiB9CiAKZGlmZiAtLWdp dCBhL3NvdW5kL3BjaS9oZGEvaGRhX2ludGVsLmMgYi9zb3VuZC9wY2kvaGRhL2hkYV9pbnRlbC5j CmluZGV4IDhmZjE1ZDgzNGFjZS4uNzgyM2RjMGFhYmQ3IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kv aGRhL2hkYV9pbnRlbC5jCisrKyBiL3NvdW5kL3BjaS9oZGEvaGRhX2ludGVsLmMKQEAgLTI1OCw4 ICsyNTgsNyBAQCBlbnVtIHsKIC8qIHF1aXJrcyBmb3IgTnZpZGlhICovCiAjZGVmaW5lIEFaWF9E Q0FQU19QUkVTRVRfTlZJRElBIFwKIAkoQVpYX0RDQVBTX05WSURJQV9TTk9PUCB8IEFaWF9EQ0FQ U19SSVJCX0RFTEFZIHwgQVpYX0RDQVBTX05PX01TSSB8XAotCSBBWlhfRENBUFNfQUxJR05fQlVG U0laRSB8IEFaWF9EQ0FQU19OT182NEJJVCB8XAotCSBBWlhfRENBUFNfQ09SQlJQX1NFTEZfQ0xF QVIpCisJIEFaWF9EQ0FQU19BTElHTl9CVUZTSVpFIHwgQVpYX0RDQVBTX0NPUkJSUF9TRUxGX0NM RUFSKQogCiAjZGVmaW5lIEFaWF9EQ0FQU19QUkVTRVRfQ1RIREEgXAogCShBWlhfRENBUFNfTk9f TVNJIHwgQVpYX0RDQVBTX1BPU0ZJWF9MUElCIHwgQVpYX0RDQVBTXzRLX0JETEVfQk9VTkRBUlkg fFwKQEAgLTEzNzEsNiArMTM3MCwxMCBAQCBzdGF0aWMgaW50IGF6eF9maXJzdF9pbml0KHN0cnVj dCBhenggKmNoaXApCiAJCX0KIAl9CiAKKwkvKiBOVmlkaWEgaGFyZHdhcmUgbm9ybWFsbHkgb25s eSBzdXBwb3J0cyB1cCB0byA0MCBiaXRzIG9mIERNQSAqLworCWlmIChjaGlwLT5wY2ktPnZlbmRv ciA9PSBQQ0lfVkVORE9SX0lEX05WSURJQSkKKwkJZG1hX2JpdHMgPSA0MDsKKwogCS8qIGRpc2Fi bGUgNjRiaXQgRE1BIGFkZHJlc3Mgb24gc29tZSBkZXZpY2VzICovCiAJaWYgKGNoaXAtPmRyaXZl cl9jYXBzICYgQVpYX0RDQVBTX05PXzY0QklUKSB7CiAJCWRldl9kYmcoY2FyZC0+ZGV2LCAiRGlz YWJsaW5nIDY0Yml0IERNQVxuIik7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvaGRhL3BhdGNoX3Jl YWx0ZWsuYyBiL3NvdW5kL3BjaS9oZGEvcGF0Y2hfcmVhbHRlay5jCmluZGV4IDE4N2QzMzcyOWI1 MC4uYjc2ZjRmZjExN2EyIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvaGRhL3BhdGNoX3JlYWx0ZWsu YworKysgYi9zb3VuZC9wY2kvaGRhL3BhdGNoX3JlYWx0ZWsuYwpAQCAtNTEwMyw2ICs1MTAzLDEw IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaGRhX21vZGVsX2ZpeHVwIGFsYzI2OV9maXh1cF9tb2Rl bHNbXSA9IHsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfaGRhX3Bpbl9xdWlyayBhbGMyNjlf cGluX2ZpeHVwX3RibFtdID0gewogCVNORF9IREFfUElOX1FVSVJLKDB4MTBlYzAyNTUsIDB4MTAy OCwgIkRlbGwiLCBBTEMyNTVfRklYVVBfREVMTDFfTUlDX05PX1BSRVNFTkNFLAorCQl7MHgxNCwg MHg5MDE3MDExMH0sCisJCXsweDFiLCAweDAyMDExMDIwfSwKKwkJezB4MjEsIDB4MDIyMTEwMWZ9 KSwKKwlTTkRfSERBX1BJTl9RVUlSSygweDEwZWMwMjU1LCAweDEwMjgsICJEZWxsIiwgQUxDMjU1 X0ZJWFVQX0RFTEwxX01JQ19OT19QUkVTRU5DRSwKIAkJezB4MTQsIDB4OTAxNzAxMzB9LAogCQl7 MHgyMSwgMHgwMjIxMTA0MH0pLAogCVNORF9IREFfUElOX1FVSVJLKDB4MTBlYzAyNTUsIDB4MTAy OCwgIkRlbGwiLCBBTEMyNTVfRklYVVBfREVMTDFfTUlDX05PX1BSRVNFTkNFLApAQCAtNTgzOCw2 ICs1ODQyLDcgQEAgZW51bSB7CiAJQUxDNjYyX0ZJWFVQX0FTVVNfTng1MCwKIAlBTEM2NjhfRklY VVBfQVNVU19OeDUxLAogCUFMQzY2Ml9GSVhVUF9BQ0VSX1ZFUklUT04sCisJQUxDODkyX0ZJWFVQ X0FTUk9DS19NT0JPLAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBoZGFfZml4dXAgYWxjNjYy X2ZpeHVwc1tdID0gewpAQCAtNjA4Niw2ICs2MDkxLDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg aGRhX2ZpeHVwIGFsYzY2Ml9maXh1cHNbXSA9IHsKIAkJCXsgfQogCQl9CiAJfSwKKwlbQUxDODky X0ZJWFVQX0FTUk9DS19NT0JPXSA9IHsKKwkJLnR5cGUgPSBIREFfRklYVVBfUElOUywKKwkJLnYu cGlucyA9IChjb25zdCBzdHJ1Y3QgaGRhX3BpbnRibFtdKSB7CisJCQl7IDB4MTUsIDB4NDBmMDAw ZjAgfSwgLyogZGlzYWJsZWQgKi8KKwkJCXsgMHgxNiwgMHg0MGYwMDBmMCB9LCAvKiBkaXNhYmxl ZCAqLworCQkJeyB9CisJCX0KKwl9LAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfcGNp X3F1aXJrIGFsYzY2Ml9maXh1cF90YmxbXSA9IHsKQEAgLTYxMjAsNiArNjEzMyw3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3Qgc25kX3BjaV9xdWlyayBhbGM2NjJfZml4dXBfdGJsW10gPSB7CiAJU05E X1BDSV9RVUlSSygweDE0NGQsIDB4YzA1MSwgIlNhbXN1bmcgUjcyMCIsIEFMQzY2Ml9GSVhVUF9J REVBUEFEKSwKIAlTTkRfUENJX1FVSVJLKDB4MTdhYSwgMHgzOGFmLCAiTGVub3ZvIElkZWFwYWQg WTU1MFAiLCBBTEM2NjJfRklYVVBfSURFQVBBRCksCiAJU05EX1BDSV9RVUlSSygweDE3YWEsIDB4 M2EwZCwgIkxlbm92byBJZGVhcGFkIFk1NTAiLCBBTEM2NjJfRklYVVBfSURFQVBBRCksCisJU05E X1BDSV9RVUlSSygweDE4NDksIDB4NTg5MiwgIkFTUm9jayBCMTUwTSIsIEFMQzg5Ml9GSVhVUF9B U1JPQ0tfTU9CTyksCiAJU05EX1BDSV9RVUlSSygweDE5ZGEsIDB4YTEzMCwgIlpvdGFjIFo2OCIs IEFMQzY2Ml9GSVhVUF9aT1RBQ19aNjgpLAogCVNORF9QQ0lfUVVJUksoMHgxYjBhLCAweDAxYjgs ICJBQ0VSIFZlcml0b24iLCBBTEM2NjJfRklYVVBfQUNFUl9WRVJJVE9OKSwKIAlTTkRfUENJX1FV SVJLKDB4MWIzNSwgMHgyMjA2LCAiQ1pDIFAxMFQiLCBBTEM2NjJfRklYVVBfQ1pDX1AxMFQpLApk aWZmIC0tZ2l0IGEvc291bmQvcGNpL2hkYS90aGlua3BhZF9oZWxwZXIuYyBiL3NvdW5kL3BjaS9o ZGEvdGhpbmtwYWRfaGVscGVyLmMKaW5kZXggNmJhMGI1NTE3YzQwLi5mMjMzZTkwZmE2MTQgMTAw NjQ0Ci0tLSBhL3NvdW5kL3BjaS9oZGEvdGhpbmtwYWRfaGVscGVyLmMKKysrIGIvc291bmQvcGNp L2hkYS90aGlua3BhZF9oZWxwZXIuYwpAQCAtMjYsNiArMjYsOSBAQCBzdGF0aWMgYm9vbCBpc190 aGlua3BhZChzdHJ1Y3QgaGRhX2NvZGVjICpjb2RlYykKIAlpZiAoQUNQSV9TVUNDRVNTKGFjcGlf Z2V0X2RldmljZXMoIkxFTjAwNjgiLCBhY3BpX2NoZWNrX2NiLCAmZm91bmQsIE5VTEwpKSAmJiBm b3VuZCkKIAkJcmV0dXJuIHRydWU7CiAJZm91bmQgPSBmYWxzZTsKKwlpZiAoQUNQSV9TVUNDRVNT KGFjcGlfZ2V0X2RldmljZXMoIkxFTjAyNjgiLCBhY3BpX2NoZWNrX2NiLCAmZm91bmQsIE5VTEwp KSAmJiBmb3VuZCkKKwkJcmV0dXJuIHRydWU7CisJZm91bmQgPSBmYWxzZTsKIAlyZXR1cm4gQUNQ SV9TVUNDRVNTKGFjcGlfZ2V0X2RldmljZXMoIklCTTAwNjgiLCBhY3BpX2NoZWNrX2NiLCAmZm91 bmQsIE5VTEwpKSAmJiBmb3VuZDsKIH0KIApkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9j czQyNzAuYyBiL3NvdW5kL3NvYy9jb2RlY3MvY3M0MjcwLmMKaW5kZXggOTk0N2E5NTgzNjc5Li42 Mzk5ZmZiZDFhNjEgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvY3M0MjcwLmMKKysrIGIv c291bmQvc29jL2NvZGVjcy9jczQyNzAuYwpAQCAtMTQ4LDExICsxNDgsMTEgQEAgU05EX1NPQ19E QVBNX09VVFBVVCgiQU9VVFIiKSwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX3NvY19k YXBtX3JvdXRlIGNzNDI3MF9kYXBtX3JvdXRlc1tdID0gewotCXsgIkNhcHR1cmUiLCBOVUxMLCAi QUlOQSIgfSwKLQl7ICJDYXB0dXJlIiwgTlVMTCwgIkFJTkIiIH0sCisJeyAiQ2FwdHVyZSIsIE5V TEwsICJBSU5MIiB9LAorCXsgIkNhcHR1cmUiLCBOVUxMLCAiQUlOUiIgfSwKIAotCXsgIkFPVVRB IiwgTlVMTCwgIlBsYXliYWNrIiB9LAotCXsgIkFPVVRCIiwgTlVMTCwgIlBsYXliYWNrIiB9LAor CXsgIkFPVVRMIiwgTlVMTCwgIlBsYXliYWNrIiB9LAorCXsgIkFPVVRSIiwgTlVMTCwgIlBsYXli YWNrIiB9LAogfTsKIAogLyoqCmRpZmYgLS1naXQgYS9zb3VuZC9zb2Mvc29jLWRhcG0uYyBiL3Nv dW5kL3NvYy9zb2MtZGFwbS5jCmluZGV4IDgwNjVmZDgxYjQwYy4uYmEyZTI1MzE4ZDdlIDEwMDY0 NAotLS0gYS9zb3VuZC9zb2Mvc29jLWRhcG0uYworKysgYi9zb3VuZC9zb2Mvc29jLWRhcG0uYwpA QCAtMjg3MCw3ICsyODcwLDcgQEAgaW50IHNuZF9zb2NfZGFwbV9wdXRfZW51bV9kb3VibGUoc3Ry dWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCiAJaWYgKGUtPnNoaWZ0X2wgIT0gZS0+c2hpZnRf cikgewogCQlpZiAoaXRlbVsxXSA+IGUtPml0ZW1zKQogCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCXZh bCB8PSBzbmRfc29jX2VudW1faXRlbV90b192YWwoZSwgaXRlbVsxXSkgPDwgZS0+c2hpZnRfbDsK KwkJdmFsIHw9IHNuZF9zb2NfZW51bV9pdGVtX3RvX3ZhbChlLCBpdGVtWzFdKSA8PCBlLT5zaGlm dF9yOwogCQltYXNrIHw9IGUtPm1hc2sgPDwgZS0+c2hpZnRfcjsKIAl9CiAKZGlmZiAtLWdpdCBh L3NvdW5kL3VzYi9taXhlcl9xdWlya3MuYyBiL3NvdW5kL3VzYi9taXhlcl9xdWlya3MuYwppbmRl eCA1YmNmNTQyYjNhMzguLjEwZWY2Y2U4ZjhiYiAxMDA2NDQKLS0tIGEvc291bmQvdXNiL21peGVy X3F1aXJrcy5jCisrKyBiL3NvdW5kL3VzYi9taXhlcl9xdWlya3MuYwpAQCAtMTcxNyw2ICsxNzE3 LDcgQEAgdm9pZCBzbmRfdXNiX21peGVyX3JjX21lbW9yeV9jaGFuZ2Uoc3RydWN0IHVzYl9taXhl cl9pbnRlcmZhY2UgKm1peGVyLAogfQogCiBzdGF0aWMgdm9pZCBzbmRfZHJhZ29uZmx5X3F1aXJr X2RiX3NjYWxlKHN0cnVjdCB1c2JfbWl4ZXJfaW50ZXJmYWNlICptaXhlciwKKwkJCQkJIHN0cnVj dCB1c2JfbWl4ZXJfZWxlbV9pbmZvICpjdmFsLAogCQkJCQkgc3RydWN0IHNuZF9rY29udHJvbCAq a2N0bCkKIHsKIAkvKiBBcHByb3hpbWF0aW9uIHVzaW5nIDEwIHJhbmdlcyBiYXNlZCBvbiBvdXRw dXQgbWVhc3VyZW1lbnQgb24gaHcgdjEuMi4KQEAgLTE3MzQsMTAgKzE3MzUsMTkgQEAgc3RhdGlj IHZvaWQgc25kX2RyYWdvbmZseV9xdWlya19kYl9zY2FsZShzdHJ1Y3QgdXNiX21peGVyX2ludGVy ZmFjZSAqbWl4ZXIsCiAJCTQxLCA1MCwgVExWX0RCX01JTk1BWF9JVEVNKC00NDEsIDApLAogCSk7 CiAKLQl1c2JfYXVkaW9faW5mbyhtaXhlci0+Y2hpcCwgImFwcGx5aW5nIERyYWdvbkZseSBkQiBz Y2FsZSBxdWlya1xuIik7Ci0Ja2N0bC0+dGx2LnAgPSBzY2FsZTsKLQlrY3RsLT52ZFswXS5hY2Nl c3MgfD0gU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RMVl9SRUFEOwotCWtjdGwtPnZkWzBdLmFjY2Vz cyAmPSB+U05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RMVl9DQUxMQkFDSzsKKwlpZiAoY3ZhbC0+bWlu ID09IDAgJiYgY3ZhbC0+bWF4ID09IDUwKSB7CisJCXVzYl9hdWRpb19pbmZvKG1peGVyLT5jaGlw LCAiYXBwbHlpbmcgRHJhZ29uRmx5IGRCIHNjYWxlIHF1aXJrICgwLTUwIHZhcmlhbnQpXG4iKTsK KwkJa2N0bC0+dGx2LnAgPSBzY2FsZTsKKwkJa2N0bC0+dmRbMF0uYWNjZXNzIHw9IFNORFJWX0NU TF9FTEVNX0FDQ0VTU19UTFZfUkVBRDsKKwkJa2N0bC0+dmRbMF0uYWNjZXNzICY9IH5TTkRSVl9D VExfRUxFTV9BQ0NFU1NfVExWX0NBTExCQUNLOworCisJfSBlbHNlIGlmIChjdmFsLT5taW4gPT0g MCAmJiBjdmFsLT5tYXggPD0gMTAwMCkgeworCQkvKiBTb21lIG90aGVyIGNsZWFybHkgYnJva2Vu IERyYWdvbkZseSB2YXJpYW50LgorCQkgKiBBdCBsZWFzdCBhIDAuLjUzIHZhcmlhbnQgKGh3IHYx LjApIGV4aXN0cy4KKwkJICovCisJCXVzYl9hdWRpb19pbmZvKG1peGVyLT5jaGlwLCAiaWdub3Jp bmcgdG9vIG5hcnJvdyBkQiByYW5nZSBvbiBhIERyYWdvbkZseSBkZXZpY2UiKTsKKwkJa2N0bC0+ dmRbMF0uYWNjZXNzICY9IH5TTkRSVl9DVExfRUxFTV9BQ0NFU1NfVExWX0NBTExCQUNLOworCX0K IH0KIAogdm9pZCBzbmRfdXNiX21peGVyX2Z1X2FwcGx5X3F1aXJrKHN0cnVjdCB1c2JfbWl4ZXJf aW50ZXJmYWNlICptaXhlciwKQEAgLTE3NDYsOCArMTc1Niw4IEBAIHZvaWQgc25kX3VzYl9taXhl cl9mdV9hcHBseV9xdWlyayhzdHJ1Y3QgdXNiX21peGVyX2ludGVyZmFjZSAqbWl4ZXIsCiB7CiAJ c3dpdGNoIChtaXhlci0+Y2hpcC0+dXNiX2lkKSB7CiAJY2FzZSBVU0JfSUQoMHgyMWI0LCAweDAw ODEpOiAvKiBBdWRpb1F1ZXN0IERyYWdvbkZseSAqLwotCQlpZiAodW5pdGlkID09IDcgJiYgY3Zh bC0+bWluID09IDAgJiYgY3ZhbC0+bWF4ID09IDUwKQotCQkJc25kX2RyYWdvbmZseV9xdWlya19k Yl9zY2FsZShtaXhlciwga2N0bCk7CisJCWlmICh1bml0aWQgPT0gNyAmJiBjdmFsLT5jb250cm9s ID09IFVBQ19GVV9WT0xVTUUpCisJCQlzbmRfZHJhZ29uZmx5X3F1aXJrX2RiX3NjYWxlKG1peGVy LCBjdmFsLCBrY3RsKTsKIAkJYnJlYWs7CiAJfQogfQpkaWZmIC0tZ2l0IGEvc291bmQvdXNiL3F1 aXJrcy10YWJsZS5oIGIvc291bmQvdXNiL3F1aXJrcy10YWJsZS5oCmluZGV4IGM2MDBkNDI3Nzk3 NC4uYTFmMDhkOGM3YmQyIDEwMDY0NAotLS0gYS9zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmgKKysr IGIvc291bmQvdXNiL3F1aXJrcy10YWJsZS5oCkBAIC0yOTUzLDYgKzI5NTMsMjMgQEAgQVUwODI4 X0RFVklDRSgweDIwNDAsIDB4NzI2MCwgIkhhdXBwYXVnZSIsICJIVlItOTUwUSIpLAogQVUwODI4 X0RFVklDRSgweDIwNDAsIDB4NzIxMywgIkhhdXBwYXVnZSIsICJIVlItOTUwUSIpLAogQVUwODI4 X0RFVklDRSgweDIwNDAsIDB4NzI3MCwgIkhhdXBwYXVnZSIsICJIVlItOTUwUSIpLAogCisvKiBT eW50ZWsgU1RLMTE2MCAqLworeworCS5tYXRjaF9mbGFncyA9IFVTQl9ERVZJQ0VfSURfTUFUQ0hf REVWSUNFIHwKKwkJICAgICAgIFVTQl9ERVZJQ0VfSURfTUFUQ0hfSU5UX0NMQVNTIHwKKwkJICAg ICAgIFVTQl9ERVZJQ0VfSURfTUFUQ0hfSU5UX1NVQkNMQVNTLAorCS5pZFZlbmRvciA9IDB4MDVl MSwKKwkuaWRQcm9kdWN0ID0gMHgwNDA4LAorCS5iSW50ZXJmYWNlQ2xhc3MgPSBVU0JfQ0xBU1Nf QVVESU8sCisJLmJJbnRlcmZhY2VTdWJDbGFzcyA9IFVTQl9TVUJDTEFTU19BVURJT0NPTlRST0ws CisJLmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpICYoY29uc3Qgc3RydWN0IHNuZF91c2Jf YXVkaW9fcXVpcmspIHsKKwkJLnZlbmRvcl9uYW1lID0gIlN5bnRlayIsCisJCS5wcm9kdWN0X25h bWUgPSAiU1RLMTE2MCIsCisJCS5pZm51bSA9IFFVSVJLX0FOWV9JTlRFUkZBQ0UsCisJCS50eXBl ID0gUVVJUktfQVVESU9fQUxJR05fVFJBTlNGRVIKKwl9Cit9LAorCiAvKiBEaWdpZGVzaWduIE1i b3ggKi8KIHsKIAkvKiBUaGFua3MgdG8gQ2xlbWVucyBMYWRpc2NoIDxjbGVtZW5zQGxhZGlzY2gu ZGU+ICovCmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvc3ltYm9sLWVsZi5jIGIvdG9vbHMv cGVyZi91dGlsL3N5bWJvbC1lbGYuYwppbmRleCBhOWVmNWMxZjc4ZGYuLmU5OTI5M2I5Yzc2ZiAx MDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91dGlsL3N5bWJvbC1lbGYuYworKysgYi90b29scy9wZXJm L3V0aWwvc3ltYm9sLWVsZi5jCkBAIC05NTgsOCArOTU4LDggQEAgbmV3X3N5bWJvbDoKIAkgKiBG b3IgbWlzYW5ub3RhdGVkLCB6ZXJvZWQsIEFTTSBmdW5jdGlvbiBzaXplcy4KIAkgKi8KIAlpZiAo bnIgPiAwKSB7Ci0JCXN5bWJvbHNfX2ZpeHVwX2R1cGxpY2F0ZSgmZHNvLT5zeW1ib2xzW21hcC0+ dHlwZV0pOwogCQlzeW1ib2xzX19maXh1cF9lbmQoJmRzby0+c3ltYm9sc1ttYXAtPnR5cGVdKTsK KwkJc3ltYm9sc19fZml4dXBfZHVwbGljYXRlKCZkc28tPnN5bWJvbHNbbWFwLT50eXBlXSk7CiAJ CWlmIChrbWFwKSB7CiAJCQkvKgogCQkJICogV2UgbmVlZCB0byBmaXh1cCB0aGlzIGhlcmUgdG9v IGJlY2F1c2Ugd2UgY3JlYXRlIG5ldwpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL3N5bWJv bC5jIGIvdG9vbHMvcGVyZi91dGlsL3N5bWJvbC5jCmluZGV4IGY4YmRiYTA5NzFjYy4uYTNmMDM5 MDhmNDIxIDEwMDY0NAotLS0gYS90b29scy9wZXJmL3V0aWwvc3ltYm9sLmMKKysrIGIvdG9vbHMv cGVyZi91dGlsL3N5bWJvbC5jCkBAIC0xMTc2LDggKzExNzYsOCBAQCBpbnQgZHNvX19sb2FkX2th bGxzeW1zKHN0cnVjdCBkc28gKmRzbywgY29uc3QgY2hhciAqZmlsZW5hbWUsCiAJaWYgKGthbGxz eW1zX19kZWx0YShtYXAsIGZpbGVuYW1lLCAmZGVsdGEpKQogCQlyZXR1cm4gLTE7CiAKLQlzeW1i b2xzX19maXh1cF9kdXBsaWNhdGUoJmRzby0+c3ltYm9sc1ttYXAtPnR5cGVdKTsKIAlzeW1ib2xz X19maXh1cF9lbmQoJmRzby0+c3ltYm9sc1ttYXAtPnR5cGVdKTsKKwlzeW1ib2xzX19maXh1cF9k dXBsaWNhdGUoJmRzby0+c3ltYm9sc1ttYXAtPnR5cGVdKTsKIAogCWlmIChkc28tPmtlcm5lbCA9 PSBEU09fVFlQRV9HVUVTVF9LRVJORUwpCiAJCWRzby0+c3ltdGFiX3R5cGUgPSBEU09fQklOQVJZ X1RZUEVfX0dVRVNUX0tBTExTWU1TOwo= --=-cM6RVI0KA3ms4QfUW2nW-- --=-YkAbV5QmiXt6Eb8CPES7 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEErCspvTSmr92z9o8157/I7JWGEQkFAlik7JMACgkQ57/I7JWG EQlS6Q/+MoVhRb7C5uK69jgLyGwy2cS61Y3+fzQmZ4SF0JVIO9RGj/XB+n3hxsJp MyJAObm8aEQ2WIdV+8CAXhd3bMuv4cVX9Rd112i70O3Odfz++OfLGqNv5glYYdnX JwKxQqzyuYenqGJkslu4nKNXIIduLK6sSu0bsOAInCA+ak13rQVgIqERqHP+kBJj vv8P0J1+b+zXkQXhJxeodKpaPhpnBYjyN+Th0DGAiUeM5NGNGuMhm1wqby3wF/lw x/2+NOJOt5gjBYx5AA8K8nZWnNh265MZF5ZZieXUtcU1ysMBYcBN2ulrEaUYzSkM hCUmQiFEp0+xpG94ZIGMXNQ8ZtbnRh+tRD2L0nP+s7+QvVp7lg88q5Doc7M8Ocbk XiGR8aulvhQ+UcWVo5290fhfl6UoMHN7fCgY0qi0LGlgLtajfajjL46RoFMddsWT a9LYvid141xMlU9zgKKYxds4vqRyxN4Q4G3CZRR8hqwnRJKx0y2eI8FI/dku5EEd xsg+3Tnh3jtIudRb2qZsRaSQH9USBkETGQ+b9fUHW/8sRACf4W4m+sTHvCHJoTXg CKxRNcN3Oj1m/rtgdzI7icm/CXx9+eKNtWkiaSWVN8ebgI5HgK1Xaa58fEaWUR7P me7q4X0gXwT7q6VgK8x0eUY1HGDJnKiqfzI20WraxRg9+E0mGG4= =rM9+ -----END PGP SIGNATURE----- --=-YkAbV5QmiXt6Eb8CPES7--