From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933275AbdCKQxP (ORCPT ); Sat, 11 Mar 2017 11:53:15 -0500 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:54085 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932877AbdCKQw5 (ORCPT ); Sat, 11 Mar 2017 11:52:57 -0500 Message-ID: <1489251166.2838.2.camel@decadent.org.uk> Subject: Re: [PATCH 3.2 000/202] 3.2.87-rc2 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: Sat, 11 Mar 2017 16:52:46 +0000 In-Reply-To: References: Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-+sg0QKDEbhq6B/bsFMya" X-Mailer: Evolution 3.22.5-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 --=-+sg0QKDEbhq6B/bsFMya Content-Type: multipart/mixed; boundary="=-YiKj9cgTXxQfPM9Dwj62" --=-YiKj9cgTXxQfPM9Dwj62 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This is the combined diff for 3.2.87-rc2 relative to 3.2.86. Ben. --=20 Ben Hutchings If you seem to know what you are doing, you'll be given more to do. --=-YiKj9cgTXxQfPM9Dwj62 Content-Disposition: attachment; filename="linux-3.2.87-rc2.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="linux-3.2.87-rc2.patch"; charset="UTF-8" ZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggZDNmNzc1Y2IwYTVhLi41MWVi NTRkZTI4YWEgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC0xLDcgKzEs NyBAQAogVkVSU0lPTiA9IDMKIFBBVENITEVWRUwgPSAyCi1TVUJMRVZFTCA9IDg2Ci1FWFRSQVZF UlNJT04gPQorU1VCTEVWRUwgPSA4NworRVhUUkFWRVJTSU9OID0gLXJjMgogTkFNRSA9IFNhYmVy LXRvb3RoZWQgU3F1aXJyZWwKIAogIyAqRE9DVU1FTlRBVElPTioKZGlmZiAtLWdpdCBhL2FyY2gv YXJtL2luY2x1ZGUvYXNtL2NwdXR5cGUuaCBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2NwdXR5cGUu aAppbmRleCBjYjQ3ZDI4Y2JlMWYuLmE2ZjkyNmJlOTEwZiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0v aW5jbHVkZS9hc20vY3B1dHlwZS5oCisrKyBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2NwdXR5cGUu aApAQCAtMjUsNiArMjUsOSBAQAogI2RlZmluZSBDUFVJRF9FWFRfSVNBUjQJImMyLCA0IgogI2Rl ZmluZSBDUFVJRF9FWFRfSVNBUjUJImMyLCA1IgogCisvKiBRdWFsY29tbSBpbXBsZW1lbnRlZCBj b3JlcyAqLworI2RlZmluZSBBUk1fQ1BVX1BBUlRfU0NPUlBJT04JCTB4NTEwMDAyZDAKKwogZXh0 ZXJuIHVuc2lnbmVkIGludCBwcm9jZXNzb3JfaWQ7CiAKICNpZmRlZiBDT05GSUdfQ1BVX0NQMTUK ZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2tlcm5lbC9od19icmVha3BvaW50LmMgYi9hcmNoL2FybS9r ZXJuZWwvaHdfYnJlYWtwb2ludC5jCmluZGV4IDJiYzFhOGU5MjMwNS4uYmRhZmI4M2NkNTJlIDEw MDY0NAotLS0gYS9hcmNoL2FybS9rZXJuZWwvaHdfYnJlYWtwb2ludC5jCisrKyBiL2FyY2gvYXJt L2tlcm5lbC9od19icmVha3BvaW50LmMKQEAgLTEwMDEsNiArMTAwMSwyMiBAQCBzdGF0aWMgaW50 IF9faW5pdCBhcmNoX2h3X2JyZWFrcG9pbnRfaW5pdCh2b2lkKQogCQlyZXR1cm4gMDsKIAl9CiAK KwkvKgorCSAqIFNjb3JwaW9uIENQVXMgKGF0IGxlYXN0IHRob3NlIGluIEFQUTgwNjApIHNlZW0g dG8gc2V0IERCR1BSU1IuU1BECisJICogd2hlbmV2ZXIgYSBXRkkgaXMgaXNzdWVkLCBldmVuIGlm IHRoZSBjb3JlIGlzIG5vdCBwb3dlcmVkIGRvd24sIGluCisJICogdmlvbGF0aW9uIG9mIHRoZSBh cmNoaXRlY3R1cmUuICBXaGVuIERCR1BSU1IuU1BEIGlzIHNldCwgYWNjZXNzZXMgdG8KKwkgKiBi cmVha3BvaW50IGFuZCB3YXRjaHBvaW50IHJlZ2lzdGVycyBhcmUgdHJlYXRlZCBhcyB1bmRlZmlu ZWQsIHNvCisJICogdGhpcyByZXN1bHRzIGluIGJvb3QgdGltZSBhbmQgcnVudGltZSBmYWlsdXJl cyB3aGVuIHRoZXNlIGFyZQorCSAqIGFjY2Vzc2VkIGFuZCB3ZSB1bmV4cGVjdGVkbHkgdGFrZSBh IHRyYXAuCisJICoKKwkgKiBJdCdzIG5vdCBjbGVhciBpZi9ob3cgdGhpcyBjYW4gYmUgd29ya2Vk IGFyb3VuZCwgc28gd2UgYmxhY2tsaXN0CisJICogU2NvcnBpb24gQ1BVcyB0byBhdm9pZCB0aGVz ZSBpc3N1ZXMuCisJKi8KKwlpZiAoKHJlYWRfY3B1aWRfaWQoKSAmIDB4ZmYwMGZmZjApID09IEFS TV9DUFVfUEFSVF9TQ09SUElPTikgeworCQlwcl9pbmZvKCJTY29ycGlvbiBDUFUgZGV0ZWN0ZWQu IEhhcmR3YXJlIGJyZWFrcG9pbnRzIGFuZCB3YXRjaHBvaW50cyBkaXNhYmxlZFxuIik7CisJCXJl dHVybiAwOworCX0KKwogCS8qIERldGVybWluZSBob3cgbWFueSBCUlBzL1dSUHMgYXJlIGF2YWls YWJsZS4gKi8KIAljb3JlX251bV9icnBzID0gZ2V0X251bV9icnBzKCk7CiAJY29yZV9udW1fd3Jw cyA9IGdldF9udW1fd3JwcygpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0va2VybmVsL3B0cmFjZS5j IGIvYXJjaC9hcm0va2VybmVsL3B0cmFjZS5jCmluZGV4IDhiMTdmYjQ1MmFmOC4uYjczYWU2ZTU4 MjRkIDEwMDY0NAotLS0gYS9hcmNoL2FybS9rZXJuZWwvcHRyYWNlLmMKKysrIGIvYXJjaC9hcm0v a2VybmVsL3B0cmFjZS5jCkBAIC01OTMsNyArNTkzLDcgQEAgc3RhdGljIGludCBncHJfc2V0KHN0 cnVjdCB0YXNrX3N0cnVjdCAqdGFyZ2V0LAogCQkgICBjb25zdCB2b2lkICprYnVmLCBjb25zdCB2 b2lkIF9fdXNlciAqdWJ1ZikKIHsKIAlpbnQgcmV0OwotCXN0cnVjdCBwdF9yZWdzIG5ld3JlZ3M7 CisJc3RydWN0IHB0X3JlZ3MgbmV3cmVncyA9ICp0YXNrX3B0X3JlZ3ModGFyZ2V0KTsKIAogCXJl dCA9IHVzZXJfcmVnc2V0X2NvcHlpbigmcG9zLCAmY291bnQsICZrYnVmLCAmdWJ1ZiwKIAkJCQkg Jm5ld3JlZ3MsCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYm9vdC9yZXNjdWUvTWFrZWZpbGUgYi9h cmNoL2NyaXMvYm9vdC9yZXNjdWUvTWFrZWZpbGUKaW5kZXggNTJiZDBiZDFkZDIyLi5kOThlZGJi MzBhMTggMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9ib290L3Jlc2N1ZS9NYWtlZmlsZQorKysgYi9h cmNoL2NyaXMvYm9vdC9yZXNjdWUvTWFrZWZpbGUKQEAgLTEwLDYgKzEwLDkgQEAKIAogYXNmbGFn cy15ICs9ICQoTElOVVhJTkNMVURFKQogY2NmbGFncy15ICs9IC1PMiAkKExJTlVYSU5DTFVERSkK KworaWZkZWYgQ09ORklHX0VUUkFYX0FYSVNGTEFTSE1BUAorCiBhcmNoLSQoQ09ORklHX0VUUkFY X0FSQ0hfVjEwKSA9IHYxMAogYXJjaC0kKENPTkZJR19FVFJBWF9BUkNIX1YzMikgPSB2MzIKIApA QCAtMjgsNiArMzEsMTEgQEAgJChvYmopL3Jlc2N1ZS5iaW46ICQob2JqKS9yZXNjdWUubyBGT1JD RQogCSQoY2FsbCBpZl9jaGFuZ2VkLG9iamNvcHkpCiAJY3AgLXAgJChvYmopL3Jlc2N1ZS5iaW4g JChvYmp0cmVlKQogCitlbHNlCiskKG9iaikvcmVzY3VlLmJpbjoKKworZW5kaWYKKwogJChvYmop L3Rlc3RyZXNjdWUuYmluOiAkKG9iaikvdGVzdHJlc2N1ZS5vCiAJJChPQkpDT1BZKSAkKE9CSkNP UFlGTEFHUykgJChvYmopL3Rlc3RyZXNjdWUubyB0ci5iaW4KICMgUGFkIGl0IHRvIDc4NCBieXRl cwpkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vYml0b3BzLmggYi9hcmNoL3Bh cmlzYy9pbmNsdWRlL2FzbS9iaXRvcHMuaAppbmRleCA4YzliNjMxZDJhNzguLjhjMDBlNmMwNjI2 NiAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vYml0b3BzLmgKKysrIGIvYXJj aC9wYXJpc2MvaW5jbHVkZS9hc20vYml0b3BzLmgKQEAgLTYsNyArNiw3IEBACiAjZW5kaWYKIAog I2luY2x1ZGUgPGxpbnV4L2NvbXBpbGVyLmg+Ci0jaW5jbHVkZSA8YXNtL3R5cGVzLmg+CQkvKiBm b3IgQklUU19QRVJfTE9ORy9TSElGVF9QRVJfTE9ORyAqLworI2luY2x1ZGUgPGFzbS90eXBlcy5o PgogI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4KICNpbmNsdWRlIDxsaW51eC9hdG9taWMuaD4K IApAQCAtMTYsNiArMTYsMTIgQEAKICAqIHRvIGluY2x1ZGUvYXNtLWkzODYvYml0b3BzLmggb3Ig a2VybmVsZG9jCiAgKi8KIAorI2lmIF9fQklUU19QRVJfTE9ORyA9PSA2NAorI2RlZmluZSBTSElG VF9QRVJfTE9ORyA2CisjZWxzZQorI2RlZmluZSBTSElGVF9QRVJfTE9ORyA1CisjZW5kaWYKKwog I2RlZmluZSBDSE9QX1NISUZUQ09VTlQoeCkgKCgodW5zaWduZWQgbG9uZykgKHgpKSAmIChCSVRT X1BFUl9MT05HIC0gMSkpCiAKIApkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20v Yml0c3BlcmxvbmcuaCBiL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL2JpdHNwZXJsb25nLmgKaW5k ZXggNzUxOTZiNDE1ZDNmLi41NDBjOTRkZTQ0MjcgMTAwNjQ0Ci0tLSBhL2FyY2gvcGFyaXNjL2lu Y2x1ZGUvYXNtL2JpdHNwZXJsb25nLmgKKysrIGIvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vYml0 c3BlcmxvbmcuaApAQCAtOSwxMCArOSw4IEBACiAgKi8KICNpZiAoZGVmaW5lZChfX0tFUk5FTF9f KSAmJiBkZWZpbmVkKENPTkZJR182NEJJVCkpIHx8IGRlZmluZWQgKF9fTFA2NF9fKQogI2RlZmlu ZSBfX0JJVFNfUEVSX0xPTkcgNjQKLSNkZWZpbmUgU0hJRlRfUEVSX0xPTkcgNgogI2Vsc2UKICNk ZWZpbmUgX19CSVRTX1BFUl9MT05HIDMyCi0jZGVmaW5lIFNISUZUX1BFUl9MT05HIDUKICNlbmRp ZgogCiAjaW5jbHVkZSA8YXNtLWdlbmVyaWMvYml0c3BlcmxvbmcuaD4KZGlmZiAtLWdpdCBhL2Fy Y2gvcGFyaXNjL2luY2x1ZGUvYXNtL3N3YWIuaCBiL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL3N3 YWIuaAppbmRleCBlNzg0MDNiMTI5ZWYuLjkyOGUxYmJhYzk4ZiAxMDA2NDQKLS0tIGEvYXJjaC9w YXJpc2MvaW5jbHVkZS9hc20vc3dhYi5oCisrKyBiL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL3N3 YWIuaApAQCAtMSw2ICsxLDcgQEAKICNpZm5kZWYgX1BBUklTQ19TV0FCX0gKICNkZWZpbmUgX1BB UklTQ19TV0FCX0gKIAorI2luY2x1ZGUgPGFzbS9iaXRzcGVybG9uZy5oPgogI2luY2x1ZGUgPGxp bnV4L3R5cGVzLmg+CiAjaW5jbHVkZSA8bGludXgvY29tcGlsZXIuaD4KIApAQCAtMzgsNyArMzks NyBAQCBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX2NvbnN0X18gX191MzIgX19hcmNoX3N3YWIz MihfX3UzMiB4KQogfQogI2RlZmluZSBfX2FyY2hfc3dhYjMyIF9fYXJjaF9zd2FiMzIKIAotI2lm IEJJVFNfUEVSX0xPTkcgPiAzMgorI2lmIF9fQklUU19QRVJfTE9ORyA+IDMyCiAvKgogKiogRnJv bSAiUEEtUklTQyAyLjAgQXJjaGl0ZWN0dXJlIiwgSFAgUHJvZmVzc2lvbmFsIEJvb2tzLgogKiog U2VlIEFwcGVuZGl4IEkgcGFnZSA4ICwgIkVuZGlhbiBCeXRlIFN3YXBwaW5nIi4KQEAgLTYxLDYg KzYyLDYgQEAgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9jb25zdF9fIF9fdTY0IF9fYXJjaF9z d2FiNjQoX191NjQgeCkKIAlyZXR1cm4geDsKIH0KICNkZWZpbmUgX19hcmNoX3N3YWI2NCBfX2Fy Y2hfc3dhYjY0Ci0jZW5kaWYgLyogQklUU19QRVJfTE9ORyA+IDMyICovCisjZW5kaWYgLyogX19C SVRTX1BFUl9MT05HID4gMzIgKi8KIAogI2VuZGlmIC8qIF9QQVJJU0NfU1dBQl9IICovCmRpZmYg LS1naXQgYS9hcmNoL3Bvd2VycGMvYm9vdC9wczMtaGVhZC5TIGIvYXJjaC9wb3dlcnBjL2Jvb3Qv cHMzLWhlYWQuUwppbmRleCBiNmZjYmFmNTAyN2IuLjNkYzQ0YjA1ZmI5NyAxMDA2NDQKLS0tIGEv YXJjaC9wb3dlcnBjL2Jvb3QvcHMzLWhlYWQuUworKysgYi9hcmNoL3Bvd2VycGMvYm9vdC9wczMt aGVhZC5TCkBAIC01NywxMSArNTcsNiBAQCBfX3N5c3RlbV9yZXNldF9vdmVybGF5OgogCWJjdHIK IAogMToKLQkvKiBTYXZlIHRoZSB2YWx1ZSBhdCBhZGRyIHplcm8gZm9yIGEgbnVsbCBwb2ludGVy IHdyaXRlIGNoZWNrIGxhdGVyLiAqLwotCi0JbGkJcjQsIDAKLQlsd3oJcjMsIDAocjQpCi0KIAkv KiBQcmltYXJ5IGRlbGF5cyB0aGVuIGdvZXMgdG8gX3ppbWFnZV9zdGFydCBpbiB3cmFwcGVyLiAq LwogCiAJb3IJMzEsIDMxLCAzMSAvKiBkYjE2Y3ljICovCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2Vy cGMvYm9vdC9wczMuYyBiL2FyY2gvcG93ZXJwYy9ib290L3BzMy5jCmluZGV4IDk5NTRkOTg4NzFk MC4uMDI5ZWEzY2UxNTg4IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvYm9vdC9wczMuYworKysg Yi9hcmNoL3Bvd2VycGMvYm9vdC9wczMuYwpAQCAtMTE5LDEzICsxMTksMTIgQEAgdm9pZCBwczNf Y29weV92ZWN0b3JzKHZvaWQpCiAJZmx1c2hfY2FjaGUoKHZvaWQgKikweDEwMCwgNTEyKTsKIH0K IAotdm9pZCBwbGF0Zm9ybV9pbml0KHVuc2lnbmVkIGxvbmcgbnVsbF9jaGVjaykKK3ZvaWQgcGxh dGZvcm1faW5pdCh2b2lkKQogewogCWNvbnN0IHUzMiBoZWFwc2l6ZSA9IDB4MTAwMDAwMCAtICh1 MzIpX2VuZDsgLyogMTZNaUIgKi8KIAl2b2lkICpjaG9zZW47CiAJdW5zaWduZWQgbG9uZyBmdF9h ZGRyOwogCXU2NCBybV9zaXplOwotCXVuc2lnbmVkIGxvbmcgdmFsOwogCiAJY29uc29sZV9vcHMu d3JpdGUgPSBwczNfY29uc29sZV93cml0ZTsKIAlwbGF0Zm9ybV9vcHMuZXhpdCA9IHBzM19leGl0 OwpAQCAtMTUzLDExICsxNTIsNiBAQCB2b2lkIHBsYXRmb3JtX2luaXQodW5zaWduZWQgbG9uZyBu dWxsX2NoZWNrKQogCiAJcHJpbnRmKCIgZmxhdCB0cmVlIGF0IDB4JWx4XG5cciIsIGZ0X2FkZHIp OwogCi0JdmFsID0gKih1bnNpZ25lZCBsb25nICopMDsKLQotCWlmICh2YWwgIT0gbnVsbF9jaGVj aykKLQkJcHJpbnRmKCJudWxsIGNoZWNrIGZhaWxlZDogJWx4ICE9ICVseFxuXHIiLCB2YWwsIG51 bGxfY2hlY2spOwotCiAJKChrZXJuZWxfZW50cnlfdCkwKShmdF9hZGRyLCAwLCBOVUxMKTsKIAog CXBzM19leGl0KCk7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHBjLW9w Y29kZS5oIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BwYy1vcGNvZGUuaAppbmRleCBlOTgw ZmFhZTQyMjUuLmM4ZDdmMjQ0MjYyMCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUv YXNtL3BwYy1vcGNvZGUuaAorKysgYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHBjLW9wY29k ZS5oCkBAIC0zMSw3ICszMSw3IEBACiAjZGVmaW5lIFBQQ19JTlNUX01DUlhSCQkJMHg3YzAwMDQw MAogI2RlZmluZSBQUENfSU5TVF9NQ1JYUl9NQVNLCQkweGZjMDAwN2ZlCiAjZGVmaW5lIFBQQ19J TlNUX01GU1BSX1BWUgkJMHg3YzFmNDJhNgotI2RlZmluZSBQUENfSU5TVF9NRlNQUl9QVlJfTUFT SwkJMHhmYzFmZmZmZgorI2RlZmluZSBQUENfSU5TVF9NRlNQUl9QVlJfTUFTSwkJMHhmYzFmZmZm ZQogI2RlZmluZSBQUENfSU5TVF9NU0dTTkQJCQkweDdjMDAwMTljCiAjZGVmaW5lIFBQQ19JTlNU X05PUAkJCTB4NjAwMDAwMDAKICNkZWZpbmUgUFBDX0lOU1RfUE9QQ05UQgkJMHg3YzAwMDBmNApA QCAtNDIsOSArNDIsOSBAQAogI2RlZmluZSBQUENfSU5TVF9SRkRJCQkJMHg0YzAwMDA0ZQogI2Rl ZmluZSBQUENfSU5TVF9SRk1DSQkJCTB4NGMwMDAwNGMKICNkZWZpbmUgUFBDX0lOU1RfTUZTUFJf RFNDUgkJMHg3YzExMDJhNgotI2RlZmluZSBQUENfSU5TVF9NRlNQUl9EU0NSX01BU0sJMHhmYzFm ZmZmZgorI2RlZmluZSBQUENfSU5TVF9NRlNQUl9EU0NSX01BU0sJMHhmYzFmZmZmZQogI2RlZmlu ZSBQUENfSU5TVF9NVFNQUl9EU0NSCQkweDdjMTEwM2E2Ci0jZGVmaW5lIFBQQ19JTlNUX01UU1BS X0RTQ1JfTUFTSwkweGZjMWZmZmZmCisjZGVmaW5lIFBQQ19JTlNUX01UU1BSX0RTQ1JfTUFTSwkw eGZjMWZmZmZlCiAKICNkZWZpbmUgUFBDX0lOU1RfU1RSSU5HCQkJMHg3YzAwMDQyYQogI2RlZmlu ZSBQUENfSU5TVF9TVFJJTkdfTUFTSwkJMHhmYzAwMDdmZQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dl cnBjL2tlcm5lbC9pYm1lYnVzLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL2libWVidXMuYwppbmRl eCBkMzlhZTYwNmZmOGQuLmI4Y2Q5MjRlYjlkZSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tl cm5lbC9pYm1lYnVzLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9pYm1lYnVzLmMKQEAgLTE3 OSw2ICsxNzksNyBAQCBzdGF0aWMgaW50IGlibWVidXNfY3JlYXRlX2RldmljZShzdHJ1Y3QgZGV2 aWNlX25vZGUgKmRuKQogc3RhdGljIGludCBpYm1lYnVzX2NyZWF0ZV9kZXZpY2VzKGNvbnN0IHN0 cnVjdCBvZl9kZXZpY2VfaWQgKm1hdGNoZXMpCiB7CiAJc3RydWN0IGRldmljZV9ub2RlICpyb290 LCAqY2hpbGQ7CisJc3RydWN0IGRldmljZSAqZGV2OwogCWludCByZXQgPSAwOwogCiAJcm9vdCA9 IG9mX2ZpbmRfbm9kZV9ieV9wYXRoKCIvIik7CkBAIC0xODcsOSArMTg4LDEyIEBAIHN0YXRpYyBp bnQgaWJtZWJ1c19jcmVhdGVfZGV2aWNlcyhjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRj aGVzKQogCQlpZiAoIW9mX21hdGNoX25vZGUobWF0Y2hlcywgY2hpbGQpKQogCQkJY29udGludWU7 CiAKLQkJaWYgKGJ1c19maW5kX2RldmljZSgmaWJtZWJ1c19idXNfdHlwZSwgTlVMTCwgY2hpbGQs Ci0JCQkJICAgIGlibWVidXNfbWF0Y2hfbm9kZSkpCisJCWRldiA9IGJ1c19maW5kX2RldmljZSgm aWJtZWJ1c19idXNfdHlwZSwgTlVMTCwgY2hpbGQsCisJCQkJICAgICAgaWJtZWJ1c19tYXRjaF9u b2RlKTsKKwkJaWYgKGRldikgeworCQkJcHV0X2RldmljZShkZXYpOwogCQkJY29udGludWU7CisJ CX0KIAogCQlyZXQgPSBpYm1lYnVzX2NyZWF0ZV9kZXZpY2UoY2hpbGQpOwogCQlpZiAocmV0KSB7 CkBAIC0yNjEsNiArMjY1LDcgQEAgc3RhdGljIHNzaXplX3QgaWJtZWJ1c19zdG9yZV9wcm9iZShz dHJ1Y3QgYnVzX3R5cGUgKmJ1cywKIAkJCQkgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3Vu dCkKIHsKIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKmRuID0gTlVMTDsKKwlzdHJ1Y3QgZGV2aWNlICpk ZXY7CiAJY2hhciAqcGF0aDsKIAlzc2l6ZV90IHJjID0gMDsKIApAQCAtMjY4LDggKzI3MywxMCBA QCBzdGF0aWMgc3NpemVfdCBpYm1lYnVzX3N0b3JlX3Byb2JlKHN0cnVjdCBidXNfdHlwZSAqYnVz LAogCWlmICghcGF0aCkKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQlpZiAoYnVzX2ZpbmRfZGV2aWNl KCZpYm1lYnVzX2J1c190eXBlLCBOVUxMLCBwYXRoLAotCQkJICAgIGlibWVidXNfbWF0Y2hfcGF0 aCkpIHsKKwlkZXYgPSBidXNfZmluZF9kZXZpY2UoJmlibWVidXNfYnVzX3R5cGUsIE5VTEwsIHBh dGgsCisJCQkgICAgICBpYm1lYnVzX21hdGNoX3BhdGgpOworCWlmIChkZXYpIHsKKwkJcHV0X2Rl dmljZShkZXYpOwogCQlwcmludGsoS0VSTl9XQVJOSU5HICIlczogJXMgaGFzIGFscmVhZHkgYmVl biBwcm9iZWRcbiIsCiAJCSAgICAgICBfX2Z1bmNfXywgcGF0aCk7CiAJCXJjID0gLUVFWElTVDsK QEAgLTMwNSw2ICszMTIsNyBAQCBzdGF0aWMgc3NpemVfdCBpYm1lYnVzX3N0b3JlX3JlbW92ZShz dHJ1Y3QgYnVzX3R5cGUgKmJ1cywKIAlpZiAoKGRldiA9IGJ1c19maW5kX2RldmljZSgmaWJtZWJ1 c19idXNfdHlwZSwgTlVMTCwgcGF0aCwKIAkJCQkgICBpYm1lYnVzX21hdGNoX3BhdGgpKSkgewog CQlvZl9kZXZpY2VfdW5yZWdpc3Rlcih0b19wbGF0Zm9ybV9kZXZpY2UoZGV2KSk7CisJCXB1dF9k ZXZpY2UoZGV2KTsKIAogCQlrZnJlZShwYXRoKTsKIAkJcmV0dXJuIGNvdW50OwpkaWZmIC0tZ2l0 IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wdHJhY2UuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcHRy YWNlLmMKaW5kZXggNWRlNzNkYmQxNWM3Li5iN2FiNGI0ODNlNjUgMTAwNjQ0Ci0tLSBhL2FyY2gv cG93ZXJwYy9rZXJuZWwvcHRyYWNlLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9wdHJhY2Uu YwpAQCAtMzU5LDYgKzM1OSwxMCBAQCBzdGF0aWMgaW50IGZwcl9zZXQoc3RydWN0IHRhc2tfc3Ry dWN0ICp0YXJnZXQsIGNvbnN0IHN0cnVjdCB1c2VyX3JlZ3NldCAqcmVnc2V0LAogCWZsdXNoX2Zw X3RvX3RocmVhZCh0YXJnZXQpOwogCiAjaWZkZWYgQ09ORklHX1ZTWAorCWZvciAoaSA9IDA7IGkg PCAzMiA7IGkrKykKKwkJYnVmW2ldID0gdGFyZ2V0LT50aHJlYWQuVFNfRlBSKGkpOworCW1lbWNw eSgmYnVmWzMyXSwgJnRhcmdldC0+dGhyZWFkLmZwc2NyLCBzaXplb2YoZG91YmxlKSk7CisKIAkv KiBjb3B5IHRvIGxvY2FsIGJ1ZmZlciB0aGVuIHdyaXRlIHRoYXQgb3V0ICovCiAJaSA9IHVzZXJf cmVnc2V0X2NvcHlpbigmcG9zLCAmY291bnQsICZrYnVmLCAmdWJ1ZiwgYnVmLCAwLCAtMSk7CiAJ aWYgKGkpCkBAIC01MDEsNiArNTA1LDkgQEAgc3RhdGljIGludCB2c3Jfc2V0KHN0cnVjdCB0YXNr X3N0cnVjdCAqdGFyZ2V0LCBjb25zdCBzdHJ1Y3QgdXNlcl9yZWdzZXQgKnJlZ3NldCwKIAogCWZs dXNoX3ZzeF90b190aHJlYWQodGFyZ2V0KTsKIAorCWZvciAoaSA9IDA7IGkgPCAzMiA7IGkrKykK KwkJYnVmW2ldID0gdGFyZ2V0LT50aHJlYWQuZnByW2ldW1RTX1ZTUkxPV09GRlNFVF07CisKIAly ZXQgPSB1c2VyX3JlZ3NldF9jb3B5aW4oJnBvcywgJmNvdW50LCAma2J1ZiwgJnVidWYsCiAJCQkJ IGJ1ZiwgMCwgMzIgKiBzaXplb2YoZG91YmxlKSk7CiAJZm9yIChpID0gMDsgaSA8IDMyIDsgaSsr KQpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9rZXJuZWwvbGVvbl9rZXJuZWwuYyBiL2FyY2gvc3Bh cmMva2VybmVsL2xlb25fa2VybmVsLmMKaW5kZXggYTE5YzhhMDYzNjgzLi44NjNhMDM1ZTgwZDkg MTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMva2VybmVsL2xlb25fa2VybmVsLmMKKysrIGIvYXJjaC9z cGFyYy9rZXJuZWwvbGVvbl9rZXJuZWwuYwpAQCAtMjg4LDM3ICsyODgsMzcgQEAgdm9pZCBfX2lu aXQgbGVvbl9pbml0X3RpbWVycyhpcnFfaGFuZGxlcl90IGNvdW50ZXJfZm4pCiAKIAkvKiBGaW5k IEdQVElNRVIgVGltZXIgUmVnaXN0ZXJzIGJhc2UgYWRkcmVzcyBvdGhlcndpc2UgYmFpbCBvdXQu ICovCiAJbm5wID0gcm9vdG5wOwotCWRvIHsKLQkJbnAgPSBvZl9maW5kX25vZGVfYnlfbmFtZShu bnAsICJHQUlTTEVSX0dQVElNRVIiKTsKLQkJaWYgKCFucCkgewotCQkJbnAgPSBvZl9maW5kX25v ZGVfYnlfbmFtZShubnAsICIwMV8wMTEiKTsKLQkJCWlmICghbnApCi0JCQkJZ290byBiYWQ7Ci0J CX0KIAotCQlhbXBvcHRzID0gMDsKLQkJcHAgPSBvZl9maW5kX3Byb3BlcnR5KG5wLCAiYW1wb3B0 cyIsICZsZW4pOwotCQlpZiAocHApIHsKLQkJCWFtcG9wdHMgPSAqKGludCAqKXBwLT52YWx1ZTsK LQkJCWlmIChhbXBvcHRzID09IDApIHsKLQkJCQkvKiBTa2lwIHRoaXMgaW5zdGFuY2UsIHJlc291 cmNlIGFscmVhZHkKLQkJCQkgKiBhbGxvY2F0ZWQgYnkgb3RoZXIgT1MgKi8KLQkJCQlubnAgPSBu cDsKLQkJCQljb250aW51ZTsKLQkJCX0KK3JldHJ5OgorCW5wID0gb2ZfZmluZF9ub2RlX2J5X25h bWUobm5wLCAiR0FJU0xFUl9HUFRJTUVSIik7CisJaWYgKCFucCkgeworCQlucCA9IG9mX2ZpbmRf bm9kZV9ieV9uYW1lKG5ucCwgIjAxXzAxMSIpOworCQlpZiAoIW5wKQorCQkJZ290byBiYWQ7CisJ fQorCisJYW1wb3B0cyA9IDA7CisJcHAgPSBvZl9maW5kX3Byb3BlcnR5KG5wLCAiYW1wb3B0cyIs ICZsZW4pOworCWlmIChwcCkgeworCQlhbXBvcHRzID0gKihpbnQgKilwcC0+dmFsdWU7CisJCWlm IChhbXBvcHRzID09IDApIHsKKwkJCS8qIFNraXAgdGhpcyBpbnN0YW5jZSwgcmVzb3VyY2UgYWxy ZWFkeQorCQkJICogYWxsb2NhdGVkIGJ5IG90aGVyIE9TICovCisJCQlubnAgPSBucDsKKwkJCWdv dG8gcmV0cnk7CiAJCX0KKwl9CisKKwkvKiBTZWxlY3QgVGltZXItSW5zdGFuY2Ugb24gVGltZXIg Q29yZS4gRGVmYXVsdCBpcyB6ZXJvICovCisJbGVvbjNfZ3B0aW1lcl9pZHggPSBhbXBvcHRzICYg MHg3OwogCi0JCS8qIFNlbGVjdCBUaW1lci1JbnN0YW5jZSBvbiBUaW1lciBDb3JlLiBEZWZhdWx0 IGlzIHplcm8gKi8KLQkJbGVvbjNfZ3B0aW1lcl9pZHggPSBhbXBvcHRzICYgMHg3OwotCi0JCXBw ID0gb2ZfZmluZF9wcm9wZXJ0eShucCwgInJlZyIsICZsZW4pOwotCQlpZiAocHApCi0JCQlsZW9u M19ncHRpbWVyX3JlZ3MgPSAqKHN0cnVjdCBsZW9uM19ncHRpbWVyX3JlZ3NfbWFwICoqKQotCQkJ CQkJcHAtPnZhbHVlOwotCQlwcCA9IG9mX2ZpbmRfcHJvcGVydHkobnAsICJpbnRlcnJ1cHRzIiwg Jmxlbik7Ci0JCWlmIChwcCkKLQkJCWxlb24zX2dwdGltZXJfaXJxID0gKih1bnNpZ25lZCBpbnQg KilwcC0+dmFsdWU7Ci0JfSB3aGlsZSAoMCk7CisJcHAgPSBvZl9maW5kX3Byb3BlcnR5KG5wLCAi cmVnIiwgJmxlbik7CisJaWYgKHBwKQorCQlsZW9uM19ncHRpbWVyX3JlZ3MgPSAqKHN0cnVjdCBs ZW9uM19ncHRpbWVyX3JlZ3NfbWFwICoqKQorCQkJCQlwcC0+dmFsdWU7CisJcHAgPSBvZl9maW5k X3Byb3BlcnR5KG5wLCAiaW50ZXJydXB0cyIsICZsZW4pOworCWlmIChwcCkKKwkJbGVvbjNfZ3B0 aW1lcl9pcnEgPSAqKHVuc2lnbmVkIGludCAqKXBwLT52YWx1ZTsKIAogCWlmICghKGxlb24zX2dw dGltZXJfcmVncyAmJiBsZW9uM19pcnFjdHJsX3JlZ3MgJiYgbGVvbjNfZ3B0aW1lcl9pcnEpKQog CQlnb3RvIGJhZDsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmMgYi9h cmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jCmluZGV4IDBjYmRlYmZhODRkZi4uODNkZjAxZGNh M2FjIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jCisrKyBiL2FyY2gv eDg2L2tlcm5lbC9jcHUvY29tbW9uLmMKQEAgLTEwMTIsNyArMTAxMiw3IEBAIHN0YXRpYyBfX2lu aXQgaW50IHNldHVwX2Rpc2FibGVjcHVpZChjaGFyICphcmcpCiB7CiAJaW50IGJpdDsKIAotCWlm IChnZXRfb3B0aW9uKCZhcmcsICZiaXQpICYmIGJpdCA8IE5DQVBJTlRTKjMyKQorCWlmIChnZXRf b3B0aW9uKCZhcmcsICZiaXQpICYmIGJpdCA+PSAwICYmIGJpdCA8IE5DQVBJTlRTICogMzIpCiAJ CXNldHVwX2NsZWFyX2NwdV9jYXAoYml0KTsKIAllbHNlCiAJCXJldHVybiAwOwpkaWZmIC0tZ2l0 IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jCmluZGV4IDQ0MDhhZWU4 MjM2ZC4uZDAyODRiNDkzMTdiIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmMKKysrIGIv YXJjaC94ODYva3ZtL3g4Ni5jCkBAIC04NDMsOCArODQzLDcgQEAgc3RhdGljIHUzMiBtc3JzX3Rv X3NhdmVbXSA9IHsKICNpZmRlZiBDT05GSUdfWDg2XzY0CiAJTVNSX0NTVEFSLCBNU1JfS0VSTkVM X0dTX0JBU0UsIE1TUl9TWVNDQUxMX01BU0ssIE1TUl9MU1RBUiwKICNlbmRpZgotCU1TUl9JQTMy X1RTQywgTVNSX0lBMzJfQ1JfUEFULCBNU1JfVk1fSFNBVkVfUEEsCi0JTVNSX1RTQ19BVVgsCisJ TVNSX0lBMzJfVFNDLCBNU1JfSUEzMl9DUl9QQVQsIE1TUl9WTV9IU0FWRV9QQQogfTsKIAogc3Rh dGljIHVuc2lnbmVkIG51bV9tc3JzX3RvX3NhdmU7CkBAIC0zODgyLDIwICszODgxLDYgQEAgc3Rh dGljIHZvaWQga3ZtX2luaXRfbXNyX2xpc3Qodm9pZCkKIAlmb3IgKGkgPSBqID0gS1ZNX1NBVkVf TVNSU19CRUdJTjsgaSA8IEFSUkFZX1NJWkUobXNyc190b19zYXZlKTsgaSsrKSB7CiAJCWlmIChy ZG1zcl9zYWZlKG1zcnNfdG9fc2F2ZVtpXSwgJmR1bW15WzBdLCAmZHVtbXlbMV0pIDwgMCkKIAkJ CWNvbnRpbnVlOwotCi0JCS8qCi0JCSAqIEV2ZW4gTVNScyB0aGF0IGFyZSB2YWxpZCBpbiB0aGUg aG9zdCBtYXkgbm90IGJlIGV4cG9zZWQKLQkJICogdG8gdGhlIGd1ZXN0cyBpbiBzb21lIGNhc2Vz LgotCQkgKi8KLQkJc3dpdGNoIChtc3JzX3RvX3NhdmVbaV0pIHsKLQkJY2FzZSBNU1JfVFNDX0FV WDoKLQkJCWlmICgha3ZtX3g4Nl9vcHMtPnJkdHNjcF9zdXBwb3J0ZWQoKSkKLQkJCQljb250aW51 ZTsKLQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJYnJlYWs7Ci0JCX0KLQogCQlpZiAoaiA8IGkp CiAJCQltc3JzX3RvX3NhdmVbal0gPSBtc3JzX3RvX3NhdmVbaV07CiAJCWorKzsKZGlmZiAtLWdp dCBhL2NyeXB0by9hbGdhcGkuYyBiL2NyeXB0by9hbGdhcGkuYwppbmRleCA1NTkzYWZkODU0NTUu LjJmMTk1NDg4NWZmOSAxMDA2NDQKLS0tIGEvY3J5cHRvL2FsZ2FwaS5jCisrKyBiL2NyeXB0by9h bGdhcGkuYwpAQCAtMzU0LDYgKzM1NCw3IEBAIGludCBjcnlwdG9fcmVnaXN0ZXJfYWxnKHN0cnVj dCBjcnlwdG9fYWxnICphbGcpCiAJc3RydWN0IGNyeXB0b19sYXJ2YWwgKmxhcnZhbDsKIAlpbnQg ZXJyOwogCisJYWxnLT5jcmFfZmxhZ3MgJj0gfkNSWVBUT19BTEdfREVBRDsKIAllcnIgPSBjcnlw dG9fY2hlY2tfYWxnKGFsZyk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvYXRhL3NhdGFfbXYuYyBiL2RyaXZlcnMvYXRhL3NhdGFfbXYuYwppbmRleCAwYjhi OGI0ODhlZTguLmQ1MDkxZjNhMzIzMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvc2F0YV9tdi5j CisrKyBiL2RyaXZlcnMvYXRhL3NhdGFfbXYuYwpAQCAtNDA1OSw2ICs0MDU5LDkgQEAgc3RhdGlj IGludCBtdl9wbGF0Zm9ybV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCWhv c3QtPmlvbWFwID0gTlVMTDsKIAlocHJpdi0+YmFzZSA9IGRldm1faW9yZW1hcCgmcGRldi0+ZGV2 LCByZXMtPnN0YXJ0LAogCQkJCSAgIHJlc291cmNlX3NpemUocmVzKSk7CisJaWYgKCFocHJpdi0+ YmFzZSkKKwkJcmV0dXJuIC1FTk9NRU07CisKIAlocHJpdi0+YmFzZSAtPSBTQVRBSEMwX1JFR19C QVNFOwogCiAjaWYgZGVmaW5lZChDT05GSUdfSEFWRV9DTEspCmRpZmYgLS1naXQgYS9kcml2ZXJz L2Jhc2UvZG1hLW1hcHBpbmcuYyBiL2RyaXZlcnMvYmFzZS9kbWEtbWFwcGluZy5jCmluZGV4IDZm MzY3NmYxNTU5Zi4uOThhOGI3NjNmMThkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jhc2UvZG1hLW1h cHBpbmcuYworKysgYi9kcml2ZXJzL2Jhc2UvZG1hLW1hcHBpbmcuYwpAQCAtMTA2LDEzICsxMDYs MTMgQEAgdm9pZCBkbWFtX2ZyZWVfY29oZXJlbnQoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qg c2l6ZSwgdm9pZCAqdmFkZHIsCiBFWFBPUlRfU1lNQk9MKGRtYW1fZnJlZV9jb2hlcmVudCk7CiAK IC8qKgotICogZG1hbV9hbGxvY19ub25fY29oZXJlbnQgLSBNYW5hZ2VkIGRtYV9hbGxvY19ub25f Y29oZXJlbnQoKQorICogZG1hbV9hbGxvY19ub25fY29oZXJlbnQgLSBNYW5hZ2VkIGRtYV9hbGxv Y19ub25jb2hlcmVudCgpCiAgKiBAZGV2OiBEZXZpY2UgdG8gYWxsb2NhdGUgbm9uX2NvaGVyZW50 IG1lbW9yeSBmb3IKICAqIEBzaXplOiBTaXplIG9mIGFsbG9jYXRpb24KICAqIEBkbWFfaGFuZGxl OiBPdXQgYXJndW1lbnQgZm9yIGFsbG9jYXRlZCBETUEgaGFuZGxlCiAgKiBAZ2ZwOiBBbGxvY2F0 aW9uIGZsYWdzCiAgKgotICogTWFuYWdlZCBkbWFfYWxsb2Nfbm9uX2NvaGVyZW50KCkuICBNZW1v cnkgYWxsb2NhdGVkIHVzaW5nIHRoaXMKKyAqIE1hbmFnZWQgZG1hX2FsbG9jX25vbmNvaGVyZW50 KCkuICBNZW1vcnkgYWxsb2NhdGVkIHVzaW5nIHRoaXMKICAqIGZ1bmN0aW9uIHdpbGwgYmUgYXV0 b21hdGljYWxseSByZWxlYXNlZCBvbiBkcml2ZXIgZGV0YWNoLgogICoKICAqIFJFVFVSTlM6CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvcmVnbWFwL3JlZ2NhY2hlLWx6by5jIGIvZHJpdmVycy9i YXNlL3JlZ21hcC9yZWdjYWNoZS1sem8uYwppbmRleCAwNjZhZWVjZTM2MjYuLjRhNDJmMDc4MjBj OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9iYXNlL3JlZ21hcC9yZWdjYWNoZS1sem8uYworKysgYi9k cml2ZXJzL2Jhc2UvcmVnbWFwL3JlZ2NhY2hlLWx6by5jCkBAIC0yMjksMTUgKzIyOSwxMyBAQCBz dGF0aWMgaW50IHJlZ2NhY2hlX2x6b19yZWFkKHN0cnVjdCByZWdtYXAgKm1hcCwKIHsKIAlzdHJ1 Y3QgcmVnY2FjaGVfbHpvX2N0eCAqbHpvX2Jsb2NrLCAqKmx6b19ibG9ja3M7CiAJaW50IHJldCwg YmxraW5kZXgsIGJsa3BvczsKLQlzaXplX3QgYmxrc2l6ZSwgdG1wX2RzdF9sZW47CisJc2l6ZV90 IHRtcF9kc3RfbGVuOwogCXZvaWQgKnRtcF9kc3Q7CiAKIAkvKiBpbmRleCBvZiB0aGUgY29tcHJl c3NlZCBsem8gYmxvY2sgKi8KIAlibGtpbmRleCA9IHJlZ2NhY2hlX2x6b19nZXRfYmxraW5kZXgo bWFwLCByZWcpOwogCS8qIHJlZ2lzdGVyIGluZGV4IHdpdGhpbiB0aGUgZGVjb21wcmVzc2VkIGJs b2NrICovCiAJYmxrcG9zID0gcmVnY2FjaGVfbHpvX2dldF9ibGtwb3MobWFwLCByZWcpOwotCS8q IHNpemUgb2YgdGhlIGNvbXByZXNzZWQgYmxvY2sgKi8KLQlibGtzaXplID0gcmVnY2FjaGVfbHpv X2dldF9ibGtzaXplKG1hcCk7CiAJbHpvX2Jsb2NrcyA9IG1hcC0+Y2FjaGU7CiAJbHpvX2Jsb2Nr ID0gbHpvX2Jsb2Nrc1tibGtpbmRleF07CiAKQEAgLTI2OSwxNSArMjY3LDEzIEBAIHN0YXRpYyBp bnQgcmVnY2FjaGVfbHpvX3dyaXRlKHN0cnVjdCByZWdtYXAgKm1hcCwKIHsKIAlzdHJ1Y3QgcmVn Y2FjaGVfbHpvX2N0eCAqbHpvX2Jsb2NrLCAqKmx6b19ibG9ja3M7CiAJaW50IHJldCwgYmxraW5k ZXgsIGJsa3BvczsKLQlzaXplX3QgYmxrc2l6ZSwgdG1wX2RzdF9sZW47CisJc2l6ZV90IHRtcF9k c3RfbGVuOwogCXZvaWQgKnRtcF9kc3Q7CiAKIAkvKiBpbmRleCBvZiB0aGUgY29tcHJlc3NlZCBs em8gYmxvY2sgKi8KIAlibGtpbmRleCA9IHJlZ2NhY2hlX2x6b19nZXRfYmxraW5kZXgobWFwLCBy ZWcpOwogCS8qIHJlZ2lzdGVyIGluZGV4IHdpdGhpbiB0aGUgZGVjb21wcmVzc2VkIGJsb2NrICov CiAJYmxrcG9zID0gcmVnY2FjaGVfbHpvX2dldF9ibGtwb3MobWFwLCByZWcpOwotCS8qIHNpemUg b2YgdGhlIGNvbXByZXNzZWQgYmxvY2sgKi8KLQlibGtzaXplID0gcmVnY2FjaGVfbHpvX2dldF9i bGtzaXplKG1hcCk7CiAJbHpvX2Jsb2NrcyA9IG1hcC0+Y2FjaGU7CiAJbHpvX2Jsb2NrID0gbHpv X2Jsb2Nrc1tibGtpbmRleF07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbmJkLmMgYi9k cml2ZXJzL2Jsb2NrL25iZC5jCmluZGV4IDc4ODU4MWU3ODJkNC4uMmE4MDU1MjYzM2RkIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2Jsb2NrL25iZC5jCisrKyBiL2RyaXZlcnMvYmxvY2svbmJkLmMKQEAg LTIzMiw5ICsyMzIsMTAgQEAgc3RhdGljIGlubGluZSBpbnQgc29ja19zZW5kX2J2ZWMoc3RydWN0 IG5iZF9kZXZpY2UgKmxvLCBzdHJ1Y3QgYmlvX3ZlYyAqYnZlYywKIC8qIGFsd2F5cyBjYWxsIHdp dGggdGhlIHR4X2xvY2sgaGVsZCAqLwogc3RhdGljIGludCBuYmRfc2VuZF9yZXEoc3RydWN0IG5i ZF9kZXZpY2UgKmxvLCBzdHJ1Y3QgcmVxdWVzdCAqcmVxKQogewotCWludCByZXN1bHQsIGZsYWdz OworCWludCByZXN1bHQ7CiAJc3RydWN0IG5iZF9yZXF1ZXN0IHJlcXVlc3Q7CiAJdW5zaWduZWQg bG9uZyBzaXplID0gYmxrX3JxX2J5dGVzKHJlcSk7CisJc3RydWN0IGJpbyAqYmlvOwogCiAJcmVx dWVzdC5tYWdpYyA9IGh0b25sKE5CRF9SRVFVRVNUX01BR0lDKTsKIAlyZXF1ZXN0LnR5cGUgPSBo dG9ubChuYmRfY21kKHJlcSkpOwpAQCAtMjU1LDE3ICsyNTYsMTkgQEAgc3RhdGljIGludCBuYmRf c2VuZF9yZXEoc3RydWN0IG5iZF9kZXZpY2UgKmxvLCBzdHJ1Y3QgcmVxdWVzdCAqcmVxKQogCQln b3RvIGVycm9yX291dDsKIAl9CiAKLQlpZiAobmJkX2NtZChyZXEpID09IE5CRF9DTURfV1JJVEUp IHsKLQkJc3RydWN0IHJlcV9pdGVyYXRvciBpdGVyOworCWlmIChuYmRfY21kKHJlcSkgIT0gTkJE X0NNRF9XUklURSkKKwkJcmV0dXJuIDA7CisKKwliaW8gPSByZXEtPmJpbzsKKwl3aGlsZSAoYmlv KSB7CisJCXN0cnVjdCBiaW8gKm5leHQgPSBiaW8tPmJpX25leHQ7CisJCWludCBpOwogCQlzdHJ1 Y3QgYmlvX3ZlYyAqYnZlYzsKLQkJLyoKLQkJICogd2UgYXJlIHJlYWxseSBwcm9iaW5nIGF0IGlu dGVybmFscyB0byBkZXRlcm1pbmUKLQkJICogd2hldGhlciB0byBzZXQgTVNHX01PUkUgb3Igbm90 Li4uCi0JCSAqLwotCQlycV9mb3JfZWFjaF9zZWdtZW50KGJ2ZWMsIHJlcSwgaXRlcikgewotCQkJ ZmxhZ3MgPSAwOwotCQkJaWYgKCFycV9pdGVyX2xhc3QocmVxLCBpdGVyKSkKLQkJCQlmbGFncyA9 IE1TR19NT1JFOworCisJCWJpb19mb3JfZWFjaF9zZWdtZW50KGJ2ZWMsIGJpbywgaSkgeworCQkJ Ym9vbCBpc19sYXN0ID0gIW5leHQgJiYgaSA9PSBiaW8tPmJpX3ZjbnQgLSAxOworCQkJaW50IGZs YWdzID0gaXNfbGFzdCA/IDAgOiBNU0dfTU9SRTsKKwogCQkJZHByaW50ayhEQkdfVFgsICIlczog cmVxdWVzdCAlcDogc2VuZGluZyAlZCBieXRlcyBkYXRhXG4iLAogCQkJCQlsby0+ZGlzay0+ZGlz a19uYW1lLCByZXEsIGJ2ZWMtPmJ2X2xlbik7CiAJCQlyZXN1bHQgPSBzb2NrX3NlbmRfYnZlYyhs bywgYnZlYywgZmxhZ3MpOwpAQCAtMjc1LDcgKzI3OCwxNiBAQCBzdGF0aWMgaW50IG5iZF9zZW5k X3JlcShzdHJ1Y3QgbmJkX2RldmljZSAqbG8sIHN0cnVjdCByZXF1ZXN0ICpyZXEpCiAJCQkJCXJl c3VsdCk7CiAJCQkJZ290byBlcnJvcl9vdXQ7CiAJCQl9CisJCQkvKgorCQkJICogVGhlIGNvbXBs ZXRpb24gbWlnaHQgYWxyZWFkeSBoYXZlIGNvbWUgaW4sCisJCQkgKiBzbyBicmVhayBmb3IgdGhl IGxhc3Qgb25lIGluc3RlYWQgb2YgbGV0dGluZworCQkJICogdGhlIGl0ZXJhdG9yIGRvIGl0LiBU aGlzIHByZXZlbnRzIHVzZS1hZnRlci1mcmVlCisJCQkgKiBvZiB0aGUgYmlvLgorCQkJICovCisJ CQlpZiAoaXNfbGFzdCkKKwkJCQlicmVhazsKIAkJfQorCQliaW8gPSBuZXh0OwogCX0KIAlyZXR1 cm4gMDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnLmMgYi9kcml2 ZXJzL2NyeXB0by9jYWFtL2NhYW1hbGcuYwppbmRleCA0MTU5MjY1YjQ1M2IuLjFjMWI4YmUyZmVj MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9jcnlwdG8vY2FhbS9jYWFtYWxnLmMKKysrIGIvZHJpdmVy cy9jcnlwdG8vY2FhbS9jYWFtYWxnLmMKQEAgLTQxOSw3ICs0MTksOSBAQCBzdGF0aWMgaW50IGFl YWRfc2V0X3NoX2Rlc2Moc3RydWN0IGNyeXB0b19hZWFkICphZWFkKQogCiAJLyogV2lsbCByZWFk IGNyeXB0bGVuICovCiAJYXBwZW5kX21hdGhfYWRkKGRlc2MsIFZBUlNFUUlOTEVOLCBTRVFJTkxF TiwgUkVHMCwgQ0FBTV9DTURfU1opOwotCWFlYWRfYXBwZW5kX3NyY19kc3QoZGVzYywgRklGT0xE X1RZUEVfTVNHMU9VVDIpOworCWFwcGVuZF9zZXFfZmlmb19sb2FkKGRlc2MsIDAsIEZJRk9MRF9D TEFTU19CT1RIIHwgS0VZX1ZMRiB8CisJCQkgICAgIEZJRk9MRF9UWVBFX01TRzFPVVQyIHwgRklG T0xEX1RZUEVfTEFTVEJPVEgpOworCWFwcGVuZF9zZXFfZmlmb19zdG9yZShkZXNjLCAwLCBGSUZP U1RfVFlQRV9NRVNTQUdFX0RBVEEgfCBLRVlfVkxGKTsKIAogCS8qIFdyaXRlIElDViAqLwogCWFw cGVuZF9zZXFfc3RvcmUoZGVzYywgY3R4LT5hdXRoc2l6ZSwgTERTVF9DTEFTU18yX0NDQiB8CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9oaWQtY3lwcmVzcy5jIGIvZHJpdmVycy9oaWQvaGlkLWN5 cHJlc3MuYwppbmRleCA5ZTQzYWFjYTk3NzQuLmQ2Y2FlMjYzMmNiYSAxMDA2NDQKLS0tIGEvZHJp dmVycy9oaWQvaGlkLWN5cHJlc3MuYworKysgYi9kcml2ZXJzL2hpZC9oaWQtY3lwcmVzcy5jCkBA IC00MCw2ICs0MCw5IEBAIHN0YXRpYyBfX3U4ICpjcF9yZXBvcnRfZml4dXAoc3RydWN0IGhpZF9k ZXZpY2UgKmhkZXYsIF9fdTggKnJkZXNjLAogCWlmICghKHF1aXJrcyAmIENQX1JERVNDX1NXQVBQ RURfTUlOX01BWCkpCiAJCXJldHVybiByZGVzYzsKIAorCWlmICgqcnNpemUgPCA0KQorCQlyZXR1 cm4gcmRlc2M7CisKIAlmb3IgKGkgPSAwOyBpIDwgKnJzaXplIC0gNDsgaSsrKQogCQlpZiAocmRl c2NbaV0gPT0gMHgyOSAmJiByZGVzY1tpICsgMl0gPT0gMHgxOSkgewogCQkJX191OCB0bXA7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2RzNjIwLmMgYi9kcml2ZXJzL2h3bW9uL2RzNjIwLmMK aW5kZXggMjI1YWU0ZjM2NTgzLi4wNmRhNzdiNjU4ODcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdt b24vZHM2MjAuYworKysgYi9kcml2ZXJzL2h3bW9uL2RzNjIwLmMKQEAgLTE2Niw3ICsxNjYsNyBA QCBzdGF0aWMgc3NpemVfdCBzZXRfdGVtcChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlICpkYSwKIAlpZiAocmVzKQogCQlyZXR1cm4gcmVzOwogCi0JdmFsID0gKHZh bCAqIDEwIC8gNjI1KSAqIDg7CisJdmFsID0gKGNsYW1wX3ZhbCh2YWwsIC0xMjgwMDAsIDEyODAw MCkgKiAxMCAvIDYyNSkgKiA4OwogCiAJbXV0ZXhfbG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOwog CWRhdGEtPnRlbXBbYXR0ci0+aW5kZXhdID0gdmFsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMv aTJjLWRldi5jIGIvZHJpdmVycy9pMmMvaTJjLWRldi5jCmluZGV4IDU3YTQ1Y2U4NGIyZC4uZmVk NDk3OTRkMTdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9pMmMtZGV2LmMKKysrIGIvZHJpdmVy cy9pMmMvaTJjLWRldi5jCkBAIC0zMTAsNyArMzEwLDcgQEAgc3RhdGljIG5vaW5saW5lIGludCBp MmNkZXZfaW9jdGxfc21idXMoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKIAkJdW5zaWduZWQg bG9uZyBhcmcpCiB7CiAJc3RydWN0IGkyY19zbWJ1c19pb2N0bF9kYXRhIGRhdGFfYXJnOwotCXVu aW9uIGkyY19zbWJ1c19kYXRhIHRlbXA7CisJdW5pb24gaTJjX3NtYnVzX2RhdGEgdGVtcCA9IHt9 OwogCWludCBkYXRhc2l6ZSwgcmVzOwogCiAJaWYgKGNvcHlfZnJvbV91c2VyKCZkYXRhX2FyZywK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL21hZC5jIGIvZHJpdmVycy9pbmZp bmliYW5kL2NvcmUvbWFkLmMKaW5kZXggMmZlNDI4YmJhNTRjLi43OGQ0MDZiM2Q4ZjQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL21hZC5jCisrKyBiL2RyaXZlcnMvaW5maW5p YmFuZC9jb3JlL21hZC5jCkBAIC0xNTk4LDcgKzE1OTgsNyBAQCBmaW5kX21hZF9hZ2VudChzdHJ1 Y3QgaWJfbWFkX3BvcnRfcHJpdmF0ZSAqcG9ydF9wcml2LAogCQkJaWYgKCFjbGFzcykKIAkJCQln b3RvIG91dDsKIAkJCWlmIChjb252ZXJ0X21nbXRfY2xhc3MobWFkLT5tYWRfaGRyLm1nbXRfY2xh c3MpID49Ci0JCQkgICAgSUJfTUdNVF9NQVhfTUVUSE9EUykKKwkJCSAgICBBUlJBWV9TSVpFKGNs YXNzLT5tZXRob2RfdGFibGUpKQogCQkJCWdvdG8gb3V0OwogCQkJbWV0aG9kID0gY2xhc3MtPm1l dGhvZF90YWJsZVtjb252ZXJ0X21nbXRfY2xhc3MoCiAJCQkJCQkJbWFkLT5tYWRfaGRyLm1nbXRf Y2xhc3MpXTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL211bHRpY2FzdC5j IGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvbXVsdGljYXN0LmMKaW5kZXggMTgwZDdmNDM2ZWQ1 Li4yZjg2MWI1OWNiYzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL211bHRp Y2FzdC5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL211bHRpY2FzdC5jCkBAIC01MTYs OCArNTE2LDExIEBAIHN0YXRpYyB2b2lkIGpvaW5faGFuZGxlcihpbnQgc3RhdHVzLCBzdHJ1Y3Qg aWJfc2FfbWNtZW1iZXJfcmVjICpyZWMsCiAJaWYgKHN0YXR1cykKIAkJcHJvY2Vzc19qb2luX2Vy cm9yKGdyb3VwLCBzdGF0dXMpOwogCWVsc2UgewotCQlpYl9maW5kX3BrZXkoZ3JvdXAtPnBvcnQt PmRldi0+ZGV2aWNlLCBncm91cC0+cG9ydC0+cG9ydF9udW0sCi0JCQkgICAgIGJlMTZfdG9fY3B1 KHJlYy0+cGtleSksICZwa2V5X2luZGV4KTsKKworCQlpZiAoaWJfZmluZF9wa2V5KGdyb3VwLT5w b3J0LT5kZXYtPmRldmljZSwKKwkJCQkgZ3JvdXAtPnBvcnQtPnBvcnRfbnVtLCBiZTE2X3RvX2Nw dShyZWMtPnBrZXkpLAorCQkJCSAmcGtleV9pbmRleCkpCisJCQlwa2V5X2luZGV4ID0gTUNBU1Rf SU5WQUxJRF9QS0VZX0lOREVYOwogCiAJCXNwaW5fbG9ja19pcnEoJmdyb3VwLT5wb3J0LT5sb2Nr KTsKIAkJZ3JvdXAtPnJlYyA9ICpyZWM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQv aHcvbWx4NC9tYWluLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NC9tYWluLmMKaW5kZXgg MTg4MzZjZGYxZTEwLi5jNjkzZTMwZTI2M2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFu ZC9ody9tbHg0L21haW4uYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NC9tYWluLmMK QEAgLTE2NCw2ICsxNjQsNyBAQCBzdGF0aWMgaW50IG1seDRfaWJfcXVlcnlfZGV2aWNlKHN0cnVj dCBpYl9kZXZpY2UgKmliZGV2LAogCXByb3BzLT5tYXhfdG90YWxfbWNhc3RfcXBfYXR0YWNoID0g cHJvcHMtPm1heF9tY2FzdF9xcF9hdHRhY2ggKgogCQkJCQkgICBwcm9wcy0+bWF4X21jYXN0X2dy cDsKIAlwcm9wcy0+bWF4X21hcF9wZXJfZm1yID0gKDEgPDwgKDMyIC0gaWxvZzIoZGV2LT5kZXYt PmNhcHMubnVtX21wdHMpKSkgLSAxOworCXByb3BzLT5tYXhfYWggPSBJTlRfTUFYOwogCiBvdXQ6 CiAJa2ZyZWUoaW5fbWFkKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvc2VyaW8vaTgwNDIt eDg2aWE2NGlvLmggYi9kcml2ZXJzL2lucHV0L3NlcmlvL2k4MDQyLXg4NmlhNjRpby5oCmluZGV4 IGM4NmRhNTAxY2E3ZC4uOTBlMTgyNDQxYzgxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3Nl cmlvL2k4MDQyLXg4NmlhNjRpby5oCisrKyBiL2RyaXZlcnMvaW5wdXQvc2VyaW8vaTgwNDIteDg2 aWE2NGlvLmgKQEAgLTIxMSw2ICsyMTEsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkbWlfc3lz dGVtX2lkIF9faW5pdGNvbnN0IGk4MDQyX2RtaV9ub2xvb3BfdGFibGVbXSA9IHsKIAkJCURNSV9N QVRDSChETUlfUFJPRFVDVF9WRVJTSU9OLCAiUmV2IDEiKSwKIAkJfSwKIAl9LAorCXsKKwkJLm1h dGNoZXMgPSB7CisJCQlETUlfTUFUQ0goRE1JX1NZU19WRU5ET1IsICJQRUdBVFJPTiBDT1JQT1JB VElPTiIpLAorCQkJRE1JX01BVENIKERNSV9QUk9EVUNUX05BTUUsICJDMTVCIiksCisJCX0sCisJ fSwKIAl7IH0KIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvYW1kX2lvbW11LmMgYi9k cml2ZXJzL2lvbW11L2FtZF9pb21tdS5jCmluZGV4IDQzYTg0ZTMyYzg5My4uYTgwMzY5MDMyYmQ4 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lvbW11L2FtZF9pb21tdS5jCisrKyBiL2RyaXZlcnMvaW9t bXUvYW1kX2lvbW11LmMKQEAgLTY0MSw3ICs2NDEsNyBAQCBhZ2FpbjoKIAluZXh0X3RhaWwgPSAo dGFpbCArIHNpemVvZigqY21kKSkgJSBpb21tdS0+Y21kX2J1Zl9zaXplOwogCWxlZnQgICAgICA9 IChoZWFkIC0gbmV4dF90YWlsKSAlIGlvbW11LT5jbWRfYnVmX3NpemU7CiAKLQlpZiAobGVmdCA8 PSAyKSB7CisJaWYgKGxlZnQgPD0gMHgyMCkgewogCQlzdHJ1Y3QgaW9tbXVfY21kIHN5bmNfY21k OwogCQl2b2xhdGlsZSB1NjQgc2VtID0gMDsKIAkJaW50IHJldDsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvbWQvZG0tY3J5cHQuYyBiL2RyaXZlcnMvbWQvZG0tY3J5cHQuYwppbmRleCA0ODc4ZDkxMGU1 YTQuLmFjZGFkMmRiODE0OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1jcnlwdC5jCisrKyBi L2RyaXZlcnMvbWQvZG0tY3J5cHQuYwpAQCAtMTMyMiwxMiArMTMyMiwxNSBAQCBzdGF0aWMgaW50 IGNyeXB0X3NldF9rZXkoc3RydWN0IGNyeXB0X2NvbmZpZyAqY2MsIGNoYXIgKmtleSkKIAlpZiAo IWNjLT5rZXlfc2l6ZSAmJiBzdHJjbXAoa2V5LCAiLSIpKQogCQlnb3RvIG91dDsKIAorCS8qIGNs ZWFyIHRoZSBmbGFnIHNpbmNlIGZvbGxvd2luZyBvcGVyYXRpb25zIG1heSBpbnZhbGlkYXRlIHBy ZXZpb3VzbHkgdmFsaWQga2V5ICovCisJY2xlYXJfYml0KERNX0NSWVBUX0tFWV9WQUxJRCwgJmNj LT5mbGFncyk7CisKIAlpZiAoY2MtPmtleV9zaXplICYmIGNyeXB0X2RlY29kZV9rZXkoY2MtPmtl eSwga2V5LCBjYy0+a2V5X3NpemUpIDwgMCkKIAkJZ290byBvdXQ7CiAKLQlzZXRfYml0KERNX0NS WVBUX0tFWV9WQUxJRCwgJmNjLT5mbGFncyk7Ci0KIAlyID0gY3J5cHRfc2V0a2V5X2FsbGNwdXMo Y2MpOworCWlmICghcikKKwkJc2V0X2JpdChETV9DUllQVF9LRVlfVkFMSUQsICZjYy0+ZmxhZ3Mp OwogCiBvdXQ6CiAJLyogSGV4IGtleSBzdHJpbmcgbm90IG5lZWRlZCBhZnRlciBoZXJlLCBzbyB3 aXBlIGl0LiAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvc2lhbm8vc21zdXNiLmMg Yi9kcml2ZXJzL21lZGlhL2R2Yi9zaWFuby9zbXN1c2IuYwppbmRleCAwMjc1NTBkNjQ1YmMuLjM3 OWNlMDVjZjdmMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvc2lhbm8vc21zdXNiLmMK KysrIGIvZHJpdmVycy9tZWRpYS9kdmIvc2lhbm8vc21zdXNiLmMKQEAgLTE4MSwxMSArMTgxLDIw IEBAIHN0YXRpYyBpbnQgc21zdXNiX3N0YXJ0X3N0cmVhbWluZyhzdHJ1Y3Qgc21zdXNiX2Rldmlj ZV90ICpkZXYpCiBzdGF0aWMgaW50IHNtc3VzYl9zZW5kcmVxdWVzdCh2b2lkICpjb250ZXh0LCB2 b2lkICpidWZmZXIsIHNpemVfdCBzaXplKQogewogCXN0cnVjdCBzbXN1c2JfZGV2aWNlX3QgKmRl diA9IChzdHJ1Y3Qgc21zdXNiX2RldmljZV90ICopIGNvbnRleHQ7Ci0JaW50IGR1bW15OworCXN0 cnVjdCBTbXNNc2dIZHJfU1QgKnBoZHI7CisJaW50IGR1bW15LCByZXQ7CiAKLQlzbXNlbmRpYW5f aGFuZGxlX21lc3NhZ2VfaGVhZGVyKChzdHJ1Y3QgU21zTXNnSGRyX1NUICopYnVmZmVyKTsKLQly ZXR1cm4gdXNiX2J1bGtfbXNnKGRldi0+dWRldiwgdXNiX3NuZGJ1bGtwaXBlKGRldi0+dWRldiwg MiksCi0JCQkgICAgYnVmZmVyLCBzaXplLCAmZHVtbXksIDEwMDApOworCXBoZHIgPSBrbWFsbG9j KHNpemUsIEdGUF9LRVJORUwpOworCWlmICghcGhkcikKKwkJcmV0dXJuIC1FTk9NRU07CisJbWVt Y3B5KHBoZHIsIGJ1ZmZlciwgc2l6ZSk7CisKKwlzbXNlbmRpYW5faGFuZGxlX21lc3NhZ2VfaGVh ZGVyKChzdHJ1Y3QgU21zTXNnSGRyX1NUICopcGhkcik7CisJcmV0ID0gdXNiX2J1bGtfbXNnKGRl di0+dWRldiwgdXNiX3NuZGJ1bGtwaXBlKGRldi0+dWRldiwgMiksCisJCQkgICAgcGhkciwgc2l6 ZSwgJmR1bW15LCAxMDAwKTsKKworCWtmcmVlKHBoZHIpOworCXJldHVybiByZXQ7CiB9CiAKIHN0 YXRpYyBjaGFyICpzbXN1c2IxX2Z3X2xrdXBbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVk aWEvcmMvaXRlLWNpci5jIGIvZHJpdmVycy9tZWRpYS9yYy9pdGUtY2lyLmMKaW5kZXggYzA2OTky ZTEzMjBkLi4zNDI5YjlhYmYxMWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcmMvaXRlLWNp ci5jCisrKyBiL2RyaXZlcnMvbWVkaWEvcmMvaXRlLWNpci5jCkBAIC0yNjMsNiArMjYzLDggQEAg c3RhdGljIHZvaWQgaXRlX3NldF9jYXJyaWVyX3BhcmFtcyhzdHJ1Y3QgaXRlX2RldiAqZGV2KQog CiAJCQlpZiAoYWxsb3dhbmNlID4gSVRFX1JYRENSX01BWCkKIAkJCQlhbGxvd2FuY2UgPSBJVEVf UlhEQ1JfTUFYOworCisJCQl1c2VfZGVtb2R1bGF0b3IgPSB0cnVlOwogCQl9CiAJfQogCmRpZmYg LS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2RhdmluY2kvdnBmZV9jYXB0dXJlLmMgYi9kcml2 ZXJzL21lZGlhL3ZpZGVvL2RhdmluY2kvdnBmZV9jYXB0dXJlLmMKaW5kZXggNWIzOGZjOTNmZjI4 Li4wNmU4MGYwZGUwNDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZGF2aW5jaS92 cGZlX2NhcHR1cmUuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2RhdmluY2kvdnBmZV9jYXB0 dXJlLmMKQEAgLTIwMDIsNiArMjAwMiw3IEBAIHN0YXRpYyBfX2luaXQgaW50IHZwZmVfcHJvYmUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJCXY0bDJfaW5mbygmdnBmZV9kZXYtPnY0 bDJfZGV2LAogCQkJCSAgInY0bDIgc3ViIGRldmljZSAlcyByZWdpc3RlciBmYWlsc1xuIiwKIAkJ CQkgIHNkaW5mby0+bmFtZSk7CisJCQlyZXQgPSAtRU5YSU87CiAJCQlnb3RvIHByb2JlX3NkX291 dDsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2hvc3QvbXhzLW1tYy5jIGIvZHJp dmVycy9tbWMvaG9zdC9teHMtbW1jLmMKaW5kZXggMGM3ODFhY2YzZGY0Li4xMmI4NjRlNWQyMDUg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2hvc3QvbXhzLW1tYy5jCisrKyBiL2RyaXZlcnMvbW1j L2hvc3QvbXhzLW1tYy5jCkBAIC0zODYsNiArMzg2LDkgQEAgc3RhdGljIHZvaWQgbXhzX21tY19h YyhzdHJ1Y3QgbXhzX21tY19ob3N0ICpob3N0KQogCWNtZDAgPSBCRl9TU1AoY21kLT5vcGNvZGUs IENNRDBfQ01EKTsKIAljbWQxID0gY21kLT5hcmc7CiAKKwlpZiAoY21kLT5vcGNvZGUgPT0gTU1D X1NUT1BfVFJBTlNNSVNTSU9OKQorCQljbWQwIHw9IEJNX1NTUF9DTUQwX0FQUEVORF84Q1lDOwor CiAJaWYgKGhvc3QtPnNkaW9faXJxX2VuKSB7CiAJCWN0cmwwIHw9IEJNX1NTUF9DVFJMMF9TRElP X0lSUV9DSEVDSzsKIAkJY21kMCB8PSBCTV9TU1BfQ01EMF9DT05UX0NMS0lOR19FTiB8IEJNX1NT UF9DTUQwX1NMT1dfQ0xLSU5HX0VOOwpAQCAtNDg3LDggKzQ5MCw3IEBAIHN0YXRpYyB2b2lkIG14 c19tbWNfYWR0YyhzdHJ1Y3QgbXhzX21tY19ob3N0ICpob3N0KQogCQkgICAgICAgaG9zdC0+YmFz ZSArIEhXX1NTUF9CTE9DS19TSVpFKTsKIAl9CiAKLQlpZiAoKGNtZC0+b3Bjb2RlID09IE1NQ19T VE9QX1RSQU5TTUlTU0lPTikgfHwKLQkgICAgKGNtZC0+b3Bjb2RlID09IFNEX0lPX1JXX0VYVEVO REVEKSkKKwlpZiAoY21kLT5vcGNvZGUgPT0gU0RfSU9fUldfRVhURU5ERUQpCiAJCWNtZDAgfD0g Qk1fU1NQX0NNRDBfQVBQRU5EXzhDWUM7CiAKIAljbWQxID0gY21kLT5hcmc7CmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC9jYW4vdGlfaGVjYy5jIGIvZHJpdmVycy9uZXQvY2FuL3RpX2hlY2MuYwpp bmRleCAxZWY5ZGY4ZGU5NzkuLmE1ZWVlYjE4OTc2NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQv Y2FuL3RpX2hlY2MuYworKysgYi9kcml2ZXJzL25ldC9jYW4vdGlfaGVjYy5jCkBAIC05NDIsNyAr OTQyLDEyIEBAIHN0YXRpYyBpbnQgdGlfaGVjY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2KQogCW5ldGlmX25hcGlfYWRkKG5kZXYsICZwcml2LT5uYXBpLCB0aV9oZWNjX3J4X3Bv bGwsCiAJCUhFQ0NfREVGX05BUElfV0VJR0hUKTsKIAotCWNsa19lbmFibGUocHJpdi0+Y2xrKTsK KwllcnIgPSBjbGtfcHJlcGFyZV9lbmFibGUocHJpdi0+Y2xrKTsKKwlpZiAoZXJyKSB7CisJCWRl dl9lcnIoJnBkZXYtPmRldiwgImNsa19wcmVwYXJlX2VuYWJsZSgpIGZhaWxlZFxuIik7CisJCWdv dG8gcHJvYmVfZXhpdF9jbGs7CisJfQorCiAJZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5kZXYpOwog CWlmIChlcnIpIHsKIAkJZGV2X2VycigmcGRldi0+ZGV2LCAicmVnaXN0ZXJfY2FuZGV2KCkgZmFp bGVkXG4iKTsKQEAgLTk3Miw3ICs5NzcsNyBAQCBzdGF0aWMgaW50IF9fZGV2ZXhpdCB0aV9oZWNj X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXN0cnVjdCB0aV9oZWNjX3By aXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTsKIAogCXVucmVnaXN0ZXJfY2FuZGV2KG5kZXYp OwotCWNsa19kaXNhYmxlKHByaXYtPmNsayk7CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHByaXYt PmNsayk7CiAJY2xrX3B1dChwcml2LT5jbGspOwogCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJj ZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7CiAJaW91bm1hcChwcml2LT5iYXNlKTsKQEAgLTk5 OCw3ICsxMDAzLDcgQEAgc3RhdGljIGludCB0aV9oZWNjX3N1c3BlbmQoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldiwgcG1fbWVzc2FnZV90IHN0YXRlKQogCWhlY2Nfc2V0X2JpdChwcml2LCBI RUNDX0NBTk1DLCBIRUNDX0NBTk1DX1BEUik7CiAJcHJpdi0+Y2FuLnN0YXRlID0gQ0FOX1NUQVRF X1NMRUVQSU5HOwogCi0JY2xrX2Rpc2FibGUocHJpdi0+Y2xrKTsKKwljbGtfZGlzYWJsZV91bnBy ZXBhcmUocHJpdi0+Y2xrKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTAwNyw4ICsxMDEyLDExIEBA IHN0YXRpYyBpbnQgdGlfaGVjY19yZXN1bWUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK IHsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7 CiAJc3RydWN0IHRpX2hlY2NfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7CisJaW50IGVy cjsKIAotCWNsa19lbmFibGUocHJpdi0+Y2xrKTsKKwllcnIgPSBjbGtfcHJlcGFyZV9lbmFibGUo cHJpdi0+Y2xrKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOwogCiAJaGVjY19jbGVhcl9iaXQo cHJpdiwgSEVDQ19DQU5NQywgSEVDQ19DQU5NQ19QRFIpOwogCXByaXYtPmNhbi5zdGF0ZSA9IENB Tl9TVEFURV9FUlJPUl9BQ1RJVkU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9r b3JpbmEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2tvcmluYS5jCmluZGV4IGQ4NDMwZjQ4N2I4 NC4uZmNmNjVjYzA4NjViIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9rb3JpbmEu YworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9rb3JpbmEuYwpAQCAtOTA2LDEwICs5MDYsMTAg QEAgc3RhdGljIHZvaWQga29yaW5hX3Jlc3RhcnRfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndv cmspCiAJCQkJRE1BX1NUQVRfRE9ORSB8IERNQV9TVEFUX0hBTFQgfCBETUFfU1RBVF9FUlIsCiAJ CQkJJmxwLT5yeF9kbWFfcmVncy0+ZG1hc20pOwogCi0Ja29yaW5hX2ZyZWVfcmluZyhkZXYpOwot CiAJbmFwaV9kaXNhYmxlKCZscC0+bmFwaSk7CiAKKwlrb3JpbmFfZnJlZV9yaW5nKGRldik7CisK IAlpZiAoa29yaW5hX2luaXQoZGV2KSA8IDApIHsKIAkJcHJpbnRrKEtFUk5fRVJSICIlczogY2Fu bm90IHJlc3RhcnQgZGV2aWNlXG4iLCBkZXYtPm5hbWUpOwogCQlyZXR1cm47CkBAIC0xMDcwLDEy ICsxMDcwLDEyIEBAIHN0YXRpYyBpbnQga29yaW5hX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpk ZXYpCiAJdG1wID0gdG1wIHwgRE1BX1NUQVRfRE9ORSB8IERNQV9TVEFUX0hBTFQgfCBETUFfU1RB VF9FUlI7CiAJd3JpdGVsKHRtcCwgJmxwLT5yeF9kbWFfcmVncy0+ZG1hc20pOwogCi0Ja29yaW5h X2ZyZWVfcmluZyhkZXYpOwotCiAJbmFwaV9kaXNhYmxlKCZscC0+bmFwaSk7CiAKIAljYW5jZWxf d29ya19zeW5jKCZscC0+cmVzdGFydF90YXNrKTsKIAorCWtvcmluYV9mcmVlX3JpbmcoZGV2KTsK KwogCWZyZWVfaXJxKGxwLT5yeF9pcnEsIGRldik7CiAJZnJlZV9pcnEobHAtPnR4X2lycSwgZGV2 KTsKIAlmcmVlX2lycShscC0+b3ZyX2lycSwgZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0 L2V0aGVybmV0L21hcnZlbGwvc2t5Mi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9z a3kyLmMKaW5kZXggOTRmOWE4ZmY2ZmRiLi44YWZlMDFiODQ3MWQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbmV0L2V0aGVybmV0L21hcnZlbGwvc2t5Mi5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0 L21hcnZlbGwvc2t5Mi5jCkBAIC01MTY1LDYgKzUxNjUsMTkgQEAgc3RhdGljIFNJTVBMRV9ERVZf UE1fT1BTKHNreTJfcG1fb3BzLCBza3kyX3N1c3BlbmQsIHNreTJfcmVzdW1lKTsKIAogc3RhdGlj IHZvaWQgc2t5Ml9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldikKIHsKKwlzdHJ1Y3Qgc2t5 Ml9odyAqaHcgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7CisJaW50IHBvcnQ7CisKKwlmb3IgKHBv cnQgPSAwOyBwb3J0IDwgaHctPnBvcnRzOyBwb3J0KyspIHsKKwkJc3RydWN0IG5ldF9kZXZpY2Ug Km5kZXYgPSBody0+ZGV2W3BvcnRdOworCisJCXJ0bmxfbG9jaygpOworCQlpZiAobmV0aWZfcnVu bmluZyhuZGV2KSkgeworCQkJZGV2X2Nsb3NlKG5kZXYpOworCQkJbmV0aWZfZGV2aWNlX2RldGFj aChuZGV2KTsKKwkJfQorCQlydG5sX3VubG9jaygpOworCX0KIAlza3kyX3N1c3BlbmQoJnBkZXYt PmRldik7CiAJcGNpX3dha2VfZnJvbV9kMyhwZGV2LCBkZXZpY2VfbWF5X3dha2V1cCgmcGRldi0+ ZGV2KSk7CiAJcGNpX3NldF9wb3dlcl9zdGF0ZShwZGV2LCBQQ0lfRDNob3QpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9jcS5jIGIvZHJpdmVycy9uZXQv ZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9jcS5jCmluZGV4IDQ5OWE1MTY4ODkyYS4uNzUzZDI2YjVm ZWUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2NxLmMK KysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9jcS5jCkBAIC03OCwxMyAr NzgsMTkgQEAgdm9pZCBtbHg0X2NxX2NvbXBsZXRpb24oc3RydWN0IG1seDRfZGV2ICpkZXYsIHUz MiBjcW4pCiB7CiAJc3RydWN0IG1seDRfY3EgKmNxOwogCisJcmN1X3JlYWRfbG9jaygpOwogCWNx ID0gcmFkaXhfdHJlZV9sb29rdXAoJm1seDRfcHJpdihkZXYpLT5jcV90YWJsZS50cmVlLAogCQkJ ICAgICAgIGNxbiAmIChkZXYtPmNhcHMubnVtX2NxcyAtIDEpKTsKKwlyY3VfcmVhZF91bmxvY2so KTsKKwogCWlmICghY3EpIHsKIAkJbWx4NF93YXJuKGRldiwgIkNvbXBsZXRpb24gZXZlbnQgZm9y IGJvZ3VzIENRICUwOHhcbiIsIGNxbik7CiAJCXJldHVybjsKIAl9CiAKKwkvKiBBY2Vzc2luZyB0 aGUgQ1Egb3V0c2lkZSBvZiByY3VfcmVhZF9sb2NrIGlzIHNhZmUsIGJlY2F1c2UKKwkgKiB0aGUg Q1EgaXMgZnJlZWQgb25seSBhZnRlciBpbnRlcnJ1cHQgaGFuZGxpbmcgaXMgY29tcGxldGVkLgor CSAqLwogCSsrY3EtPmFybV9zbjsKIAogCWNxLT5jb21wKGNxKTsKQEAgLTk1LDIzICsxMDEsMTkg QEAgdm9pZCBtbHg0X2NxX2V2ZW50KHN0cnVjdCBtbHg0X2RldiAqZGV2LCB1MzIgY3FuLCBpbnQg ZXZlbnRfdHlwZSkKIAlzdHJ1Y3QgbWx4NF9jcV90YWJsZSAqY3FfdGFibGUgPSAmbWx4NF9wcml2 KGRldiktPmNxX3RhYmxlOwogCXN0cnVjdCBtbHg0X2NxICpjcTsKIAotCXNwaW5fbG9jaygmY3Ff dGFibGUtPmxvY2spOwotCisJcmN1X3JlYWRfbG9jaygpOwogCWNxID0gcmFkaXhfdHJlZV9sb29r dXAoJmNxX3RhYmxlLT50cmVlLCBjcW4gJiAoZGV2LT5jYXBzLm51bV9jcXMgLSAxKSk7Ci0JaWYg KGNxKQotCQlhdG9taWNfaW5jKCZjcS0+cmVmY291bnQpOwotCi0Jc3Bpbl91bmxvY2soJmNxX3Rh YmxlLT5sb2NrKTsKKwlyY3VfcmVhZF91bmxvY2soKTsKIAogCWlmICghY3EpIHsKLQkJbWx4NF93 YXJuKGRldiwgIkFzeW5jIGV2ZW50IGZvciBib2d1cyBDUSAlMDh4XG4iLCBjcW4pOworCQltbHg0 X2RiZyhkZXYsICJBc3luYyBldmVudCBmb3IgYm9ndXMgQ1EgJTA4eFxuIiwgY3FuKTsKIAkJcmV0 dXJuOwogCX0KIAorCS8qIEFjZXNzaW5nIHRoZSBDUSBvdXRzaWRlIG9mIHJjdV9yZWFkX2xvY2sg aXMgc2FmZSwgYmVjYXVzZQorCSAqIHRoZSBDUSBpcyBmcmVlZCBvbmx5IGFmdGVyIGludGVycnVw dCBoYW5kbGluZyBpcyBjb21wbGV0ZWQuCisJICovCiAJY3EtPmV2ZW50KGNxLCBldmVudF90eXBl KTsKLQotCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZjcS0+cmVmY291bnQpKQotCQljb21wbGV0 ZSgmY3EtPmZyZWUpOwogfQogCiBzdGF0aWMgaW50IG1seDRfU1cySFdfQ1Eoc3RydWN0IG1seDRf ZGV2ICpkZXYsIHN0cnVjdCBtbHg0X2NtZF9tYWlsYm94ICptYWlsYm94LApAQCAtMjE2LDkgKzIx OCw5IEBAIGludCBtbHg0X2NxX2FsbG9jKHN0cnVjdCBtbHg0X2RldiAqZGV2LCBpbnQgbmVudCwg c3RydWN0IG1seDRfbXR0ICptdHQsCiAJaWYgKGVycikKIAkJZ290byBlcnJfcHV0OwogCi0Jc3Bp bl9sb2NrX2lycSgmY3FfdGFibGUtPmxvY2spOworCXNwaW5fbG9jaygmY3FfdGFibGUtPmxvY2sp OwogCWVyciA9IHJhZGl4X3RyZWVfaW5zZXJ0KCZjcV90YWJsZS0+dHJlZSwgY3EtPmNxbiwgY3Ep OwotCXNwaW5fdW5sb2NrX2lycSgmY3FfdGFibGUtPmxvY2spOworCXNwaW5fdW5sb2NrKCZjcV90 YWJsZS0+bG9jayk7CiAJaWYgKGVycikKIAkJZ290byBlcnJfY21wdF9wdXQ7CiAKQEAgLTI1NSw5 ICsyNTcsOSBAQCBpbnQgbWx4NF9jcV9hbGxvYyhzdHJ1Y3QgbWx4NF9kZXYgKmRldiwgaW50IG5l bnQsIHN0cnVjdCBtbHg0X210dCAqbXR0LAogCXJldHVybiAwOwogCiBlcnJfcmFkaXg6Ci0Jc3Bp bl9sb2NrX2lycSgmY3FfdGFibGUtPmxvY2spOworCXNwaW5fbG9jaygmY3FfdGFibGUtPmxvY2sp OwogCXJhZGl4X3RyZWVfZGVsZXRlKCZjcV90YWJsZS0+dHJlZSwgY3EtPmNxbik7Ci0Jc3Bpbl91 bmxvY2tfaXJxKCZjcV90YWJsZS0+bG9jayk7CisJc3Bpbl91bmxvY2soJmNxX3RhYmxlLT5sb2Nr KTsKIAogZXJyX2NtcHRfcHV0OgogCW1seDRfdGFibGVfcHV0KGRldiwgJmNxX3RhYmxlLT5jbXB0 X3RhYmxlLCBjcS0+Y3FuKTsKQEAgLTI4MiwxMSArMjg0LDExIEBAIHZvaWQgbWx4NF9jcV9mcmVl KHN0cnVjdCBtbHg0X2RldiAqZGV2LCBzdHJ1Y3QgbWx4NF9jcSAqY3EpCiAJaWYgKGVycikKIAkJ bWx4NF93YXJuKGRldiwgIkhXMlNXX0NRIGZhaWxlZCAoJWQpIGZvciBDUU4gJTA2eFxuIiwgZXJy LCBjcS0+Y3FuKTsKIAotCXN5bmNocm9uaXplX2lycShwcml2LT5lcV90YWJsZS5lcVtjcS0+dmVj dG9yXS5pcnEpOwotCi0Jc3Bpbl9sb2NrX2lycSgmY3FfdGFibGUtPmxvY2spOworCXNwaW5fbG9j aygmY3FfdGFibGUtPmxvY2spOwogCXJhZGl4X3RyZWVfZGVsZXRlKCZjcV90YWJsZS0+dHJlZSwg Y3EtPmNxbik7Ci0Jc3Bpbl91bmxvY2tfaXJxKCZjcV90YWJsZS0+bG9jayk7CisJc3Bpbl91bmxv Y2soJmNxX3RhYmxlLT5sb2NrKTsKKworCXN5bmNocm9uaXplX2lycShwcml2LT5lcV90YWJsZS5l cVtjcS0+dmVjdG9yXS5pcnEpOwogCiAJaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJmNxLT5yZWZj b3VudCkpCiAJCWNvbXBsZXRlKCZjcS0+ZnJlZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9l dGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX3J4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxs YW5veC9tbHg0L2VuX3J4LmMKaW5kZXggYzJkZjZjMzU4NjAzLi4xZTdjZjgwZmE4ZWIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fcnguYworKysgYi9k cml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX3J4LmMKQEAgLTMyOCw4ICszMjgs MTQgQEAgaW50IG1seDRfZW5fYWN0aXZhdGVfcnhfcmluZ3Moc3RydWN0IG1seDRfZW5fcHJpdiAq cHJpdikKIAkJcmluZy0+Y3FuID0gcHJpdi0+cnhfY3FbcmluZ19pbmRdLm1jcS5jcW47CiAKIAkJ cmluZy0+c3RyaWRlID0gc3RyaWRlOwotCQlpZiAocmluZy0+c3RyaWRlIDw9IFRYQkJfU0laRSkK KwkJaWYgKHJpbmctPnN0cmlkZSA8PSBUWEJCX1NJWkUpIHsKKwkJCS8qIFN0YW1wIGZpcnN0IHVu dXNlZCBzZW5kIHdxZSAqLworCQkJX19iZTMyICpwdHIgPSAoX19iZTMyICopcmluZy0+YnVmOwor CQkJX19iZTMyIHN0YW1wID0gY3B1X3RvX2JlMzIoMSA8PCBTVEFNUF9TSElGVCk7CisJCQkqcHRy ID0gc3RhbXA7CisJCQkvKiBNb3ZlIHBvaW50ZXIgdG8gc3RhcnQgb2Ygcnggc2VjdGlvbiAqLwog CQkJcmluZy0+YnVmICs9IFRYQkJfU0laRTsKKwkJfQogCiAJCXJpbmctPmxvZ19zdHJpZGUgPSBm ZnMocmluZy0+c3RyaWRlKSAtIDE7CiAJCXJpbmctPmJ1Zl9zaXplID0gcmluZy0+c2l6ZSAqIHJp bmctPnN0cmlkZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21s eDQvaWNtLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2ljbS5jCmluZGV4 IDAyMzkzZmRmNDRjMS4uNTEwZjhlY2ExYzI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhl cm5ldC9tZWxsYW5veC9tbHg0L2ljbS5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxh bm94L21seDQvaWNtLmMKQEAgLTExMyw4ICsxMTMsMTMgQEAgc3RhdGljIGludCBtbHg0X2FsbG9j X2ljbV9jb2hlcmVudChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzY2F0dGVybGlzdCAqbWVt LAogCWlmICghYnVmKQogCQlyZXR1cm4gLUVOT01FTTsKIAorCWlmIChvZmZzZXRfaW5fcGFnZShi dWYpKSB7CisJCWRtYV9mcmVlX2NvaGVyZW50KGRldiwgUEFHRV9TSVpFIDw8IG9yZGVyLAorCQkJ CSAgYnVmLCBzZ19kbWFfYWRkcmVzcyhtZW0pKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCiAJ c2dfc2V0X2J1ZihtZW0sIGJ1ZiwgUEFHRV9TSVpFIDw8IG9yZGVyKTsKLQlCVUdfT04obWVtLT5v ZmZzZXQpOwogCXNnX2RtYV9sZW4obWVtKSA9IFBBR0VfU0laRSA8PCBvcmRlcjsKIAlyZXR1cm4g MDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfZW1h Y2xpdGUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfZW1hY2xpdGUuYwpp bmRleCA4MDE4ZDdkMDQ1YjAuLmY0NzBhNWM4NmFlYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQv ZXRoZXJuZXQveGlsaW54L3hpbGlueF9lbWFjbGl0ZS5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVy bmV0L3hpbGlueC94aWxpbnhfZW1hY2xpdGUuYwpAQCAtMzk4LDcgKzM5OCw3IEBAIHN0YXRpYyBp bnQgeGVtYWNsaXRlX3NlbmRfZGF0YShzdHJ1Y3QgbmV0X2xvY2FsICpkcnZkYXRhLCB1OCAqZGF0 YSwKICAqCiAgKiBSZXR1cm46CVRvdGFsIG51bWJlciBvZiBieXRlcyByZWNlaXZlZAogICovCi1z dGF0aWMgdTE2IHhlbWFjbGl0ZV9yZWN2X2RhdGEoc3RydWN0IG5ldF9sb2NhbCAqZHJ2ZGF0YSwg dTggKmRhdGEpCitzdGF0aWMgdTE2IHhlbWFjbGl0ZV9yZWN2X2RhdGEoc3RydWN0IG5ldF9sb2Nh bCAqZHJ2ZGF0YSwgdTggKmRhdGEsIGludCBtYXhsZW4pCiB7CiAJdm9pZCBfX2lvbWVtICphZGRy OwogCXUxNiBsZW5ndGgsIHByb3RvX3R5cGU7CkBAIC00MzgsNyArNDM4LDcgQEAgc3RhdGljIHUx NiB4ZW1hY2xpdGVfcmVjdl9kYXRhKHN0cnVjdCBuZXRfbG9jYWwgKmRydmRhdGEsIHU4ICpkYXRh KQogCiAJLyogQ2hlY2sgaWYgcmVjZWl2ZWQgZXRoZXJuZXQgZnJhbWUgaXMgYSByYXcgZXRoZXJu ZXQgZnJhbWUKIAkgKiBvciBhbiBJUCBwYWNrZXQgb3IgYW4gQVJQIHBhY2tldCAqLwotCWlmIChw cm90b190eXBlID4gKEVUSF9GUkFNRV9MRU4gKyBFVEhfRkNTX0xFTikpIHsKKwlpZiAocHJvdG9f dHlwZSA+IEVUSF9EQVRBX0xFTikgewogCiAJCWlmIChwcm90b190eXBlID09IEVUSF9QX0lQKSB7 CiAJCQlsZW5ndGggPSAoKG50b2hsKGluX2JlMzIoYWRkciArCkBAIC00NDYsNiArNDQ2LDcgQEAg c3RhdGljIHUxNiB4ZW1hY2xpdGVfcmVjdl9kYXRhKHN0cnVjdCBuZXRfbG9jYWwgKmRydmRhdGEs IHU4ICpkYXRhKQogCQkJCQlYRUxfUlhCVUZGX09GRlNFVCkpID4+CiAJCQkJCVhFTF9IRUFERVJf U0hJRlQpICYKIAkJCQkJWEVMX1JQTFJfTEVOR1RIX01BU0spOworCQkJbGVuZ3RoID0gbWluX3Qo dTE2LCBsZW5ndGgsIEVUSF9EQVRBX0xFTik7CiAJCQlsZW5ndGggKz0gRVRIX0hMRU4gKyBFVEhf RkNTX0xFTjsKIAogCQl9IGVsc2UgaWYgKHByb3RvX3R5cGUgPT0gRVRIX1BfQVJQKQpAQCAtNDU4 LDYgKzQ1OSw5IEBAIHN0YXRpYyB1MTYgeGVtYWNsaXRlX3JlY3ZfZGF0YShzdHJ1Y3QgbmV0X2xv Y2FsICpkcnZkYXRhLCB1OCAqZGF0YSkKIAkJLyogVXNlIHRoZSBsZW5ndGggaW4gdGhlIGZyYW1l LCBwbHVzIHRoZSBoZWFkZXIgYW5kIHRyYWlsZXIgKi8KIAkJbGVuZ3RoID0gcHJvdG9fdHlwZSAr IEVUSF9ITEVOICsgRVRIX0ZDU19MRU47CiAKKwlpZiAoV0FSTl9PTihsZW5ndGggPiBtYXhsZW4p KQorCQlsZW5ndGggPSBtYXhsZW47CisKIAkvKiBSZWFkIGZyb20gdGhlIEVtYWNMaXRlIGRldmlj ZSAqLwogCXhlbWFjbGl0ZV9hbGlnbmVkX3JlYWQoKHUzMiBfX2ZvcmNlICopIChhZGRyICsgWEVM X1JYQlVGRl9PRkZTRVQpLAogCQkJCWRhdGEsIGxlbmd0aCk7CkBAIC02MzIsNyArNjM2LDcgQEAg c3RhdGljIHZvaWQgeGVtYWNsaXRlX3J4X2hhbmRsZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldikK IAogCXNrYl9yZXNlcnZlKHNrYiwgMik7CiAKLQlsZW4gPSB4ZW1hY2xpdGVfcmVjdl9kYXRhKGxw LCAodTggKikgc2tiLT5kYXRhKTsKKwlsZW4gPSB4ZW1hY2xpdGVfcmVjdl9kYXRhKGxwLCAodTgg Kikgc2tiLT5kYXRhLCBsZW4pOwogCiAJaWYgKCFsZW4pIHsKIAkJZGV2LT5zdGF0cy5yeF9lcnJv cnMrKzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21hY3Z0YXAuYyBiL2RyaXZlcnMvbmV0L21h Y3Z0YXAuYwppbmRleCAyZmNkZWRlZmNlNDIuLjFjM2RiOTRlNDIzNyAxMDA2NDQKLS0tIGEvZHJp dmVycy9uZXQvbWFjdnRhcC5jCisrKyBiL2RyaXZlcnMvbmV0L21hY3Z0YXAuYwpAQCAtNjg3LDcg KzY4Nyw3IEBAIHN0YXRpYyBzc2l6ZV90IG1hY3Z0YXBfZ2V0X3VzZXIoc3RydWN0IG1hY3Z0YXBf cXVldWUgKnEsIHN0cnVjdCBtc2doZHIgKm0sCiAJc2l6ZV90IGxpbmVhcjsKIAogCWlmIChxLT5m bGFncyAmIElGRl9WTkVUX0hEUikgewotCQl2bmV0X2hkcl9sZW4gPSBxLT52bmV0X2hkcl9zejsK KwkJdm5ldF9oZHJfbGVuID0gQUNDRVNTX09OQ0UocS0+dm5ldF9oZHJfc3opOwogCiAJCWVyciA9 IC1FSU5WQUw7CiAJCWlmIChsZW4gPCB2bmV0X2hkcl9sZW4pCkBAIC04MTcsNyArODE3LDcgQEAg c3RhdGljIHNzaXplX3QgbWFjdnRhcF9wdXRfdXNlcihzdHJ1Y3QgbWFjdnRhcF9xdWV1ZSAqcSwK IAogCWlmIChxLT5mbGFncyAmIElGRl9WTkVUX0hEUikgewogCQlzdHJ1Y3QgdmlydGlvX25ldF9o ZHIgdm5ldF9oZHI7Ci0JCXZuZXRfaGRyX2xlbiA9IHEtPnZuZXRfaGRyX3N6OworCQl2bmV0X2hk cl9sZW4gPSBBQ0NFU1NfT05DRShxLT52bmV0X2hkcl9zeik7CiAJCWlmICgobGVuIC09IHZuZXRf aGRyX2xlbikgPCAwKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L3R1bi5jIGIvZHJpdmVycy9uZXQvdHVuLmMKaW5kZXggMmZiYmNhNjcwNDU3Li45YzJlOTFj NWE2YmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3R1bi5jCisrKyBiL2RyaXZlcnMvbmV0L3R1 bi5jCkBAIC02MjUsOSArNjI1LDExIEBAIHN0YXRpYyBzc2l6ZV90IHR1bl9nZXRfdXNlcihzdHJ1 Y3QgdHVuX3N0cnVjdCAqdHVuLAogCX0KIAogCWlmICh0dW4tPmZsYWdzICYgVFVOX1ZORVRfSERS KSB7Ci0JCWlmIChsZW4gPCB0dW4tPnZuZXRfaGRyX3N6KQorCQlpbnQgdm5ldF9oZHJfc3ogPSBB Q0NFU1NfT05DRSh0dW4tPnZuZXRfaGRyX3N6KTsKKworCQlpZiAobGVuIDwgdm5ldF9oZHJfc3op CiAJCQlyZXR1cm4gLUVJTlZBTDsKLQkJbGVuIC09IHR1bi0+dm5ldF9oZHJfc3o7CisJCWxlbiAt PSB2bmV0X2hkcl9zejsKIAogCQlpZiAobWVtY3B5X2Zyb21pb3ZlY2VuZCgodm9pZCAqKSZnc28s IGl2LCBvZmZzZXQsIHNpemVvZihnc28pKSkKIAkJCXJldHVybiAtRUZBVUxUOwpAQCAtNjM4LDcg KzY0MCw3IEBAIHN0YXRpYyBzc2l6ZV90IHR1bl9nZXRfdXNlcihzdHJ1Y3QgdHVuX3N0cnVjdCAq dHVuLAogCiAJCWlmIChnc28uaGRyX2xlbiA+IGxlbikKIAkJCXJldHVybiAtRUlOVkFMOwotCQlv ZmZzZXQgKz0gdHVuLT52bmV0X2hkcl9zejsKKwkJb2Zmc2V0ICs9IHZuZXRfaGRyX3N6OwogCX0K IAogCWlmICgodHVuLT5mbGFncyAmIFRVTl9UWVBFX01BU0spID09IFRVTl9UQVBfREVWKSB7CkBA IC03NjcsMTIgKzc2OSwxNiBAQCBzdGF0aWMgc3NpemVfdCB0dW5fcHV0X3VzZXIoc3RydWN0IHR1 bl9zdHJ1Y3QgKnR1biwKIHsKIAlzdHJ1Y3QgdHVuX3BpIHBpID0geyAwLCBza2ItPnByb3RvY29s IH07CiAJc3NpemVfdCB0b3RhbCA9IDA7CisJaW50IHZuZXRfaGRyX3N6ID0gMDsKKworCWlmICh0 dW4tPmZsYWdzICYgVFVOX1ZORVRfSERSKQorCQl2bmV0X2hkcl9zeiA9IEFDQ0VTU19PTkNFKHR1 bi0+dm5ldF9oZHJfc3opOwogCiAJaWYgKCEodHVuLT5mbGFncyAmIFRVTl9OT19QSSkpIHsKIAkJ aWYgKChsZW4gLT0gc2l6ZW9mKHBpKSkgPCAwKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAKLQkJaWYg KGxlbiA8IHNrYi0+bGVuKSB7CisJCWlmIChsZW4gPCBza2ItPmxlbiArIHZuZXRfaGRyX3N6KSB7 CiAJCQkvKiBQYWNrZXQgd2lsbCBiZSBzdHJpcGVkICovCiAJCQlwaS5mbGFncyB8PSBUVU5fUEtU X1NUUklQOwogCQl9CkBAIC03ODIsOSArNzg4LDkgQEAgc3RhdGljIHNzaXplX3QgdHVuX3B1dF91 c2VyKHN0cnVjdCB0dW5fc3RydWN0ICp0dW4sCiAJCXRvdGFsICs9IHNpemVvZihwaSk7CiAJfQog Ci0JaWYgKHR1bi0+ZmxhZ3MgJiBUVU5fVk5FVF9IRFIpIHsKKwlpZiAodm5ldF9oZHJfc3opIHsK IAkJc3RydWN0IHZpcnRpb19uZXRfaGRyIGdzbyA9IHsgMCB9OyAvKiBubyBpbmZvIGxlYWsgKi8K LQkJaWYgKChsZW4gLT0gdHVuLT52bmV0X2hkcl9zeikgPCAwKQorCQlpZiAoKGxlbiAtPSB2bmV0 X2hkcl9zeikgPCAwKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAKIAkJaWYgKHNrYl9pc19nc28oc2ti KSkgewpAQCAtODI3LDcgKzgzMyw3IEBAIHN0YXRpYyBzc2l6ZV90IHR1bl9wdXRfdXNlcihzdHJ1 Y3QgdHVuX3N0cnVjdCAqdHVuLAogCQlpZiAodW5saWtlbHkobWVtY3B5X3RvaW92ZWNlbmQoaXYs ICh2b2lkICopJmdzbywgdG90YWwsCiAJCQkJCSAgICAgICBzaXplb2YoZ3NvKSkpKQogCQkJcmV0 dXJuIC1FRkFVTFQ7Ci0JCXRvdGFsICs9IHR1bi0+dm5ldF9oZHJfc3o7CisJCXRvdGFsICs9IHZu ZXRfaGRyX3N6OwogCX0KIAogCWxlbiA9IG1pbl90KGludCwgc2tiLT5sZW4sIGxlbik7CmRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC91c2IvY2F0Yy5jIGIvZHJpdmVycy9uZXQvdXNiL2NhdGMuYwpp bmRleCBhNjgyNzJjOTMzODEuLjBmYmU2NmM5OGU3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQv dXNiL2NhdGMuYworKysgYi9kcml2ZXJzL25ldC91c2IvY2F0Yy5jCkBAIC03NjUsNyArNzY1LDcg QEAgc3RhdGljIGludCBjYXRjX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25z dCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2Owog CXN0cnVjdCBjYXRjICpjYXRjOwogCXU4IGJyb2FkY2FzdFs2XTsKLQlpbnQgaSwgcGt0c3o7CisJ aW50IHBrdHN6LCByZXQ7CiAKIAlpZiAodXNiX3NldF9pbnRlcmZhY2UodXNiZGV2LAogCQkJaW50 Zi0+YWx0c2V0dGluZy0+ZGVzYy5iSW50ZXJmYWNlTnVtYmVyLCAxKSkgewpAQCAtODAwLDEyICs4 MDAsOCBAQCBzdGF0aWMgaW50IGNhdGNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYs IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZAogCWlmICgoIWNhdGMtPmN0cmxfdXJiKSB8 fCAoIWNhdGMtPnR4X3VyYikgfHwgCiAJICAgICghY2F0Yy0+cnhfdXJiKSB8fCAoIWNhdGMtPmly cV91cmIpKSB7CiAJCWVycigiTm8gZnJlZSB1cmJzIGF2YWlsYWJsZS4iKTsKLQkJdXNiX2ZyZWVf dXJiKGNhdGMtPmN0cmxfdXJiKTsKLQkJdXNiX2ZyZWVfdXJiKGNhdGMtPnR4X3VyYik7Ci0JCXVz Yl9mcmVlX3VyYihjYXRjLT5yeF91cmIpOwotCQl1c2JfZnJlZV91cmIoY2F0Yy0+aXJxX3VyYik7 Ci0JCWZyZWVfbmV0ZGV2KG5ldGRldik7Ci0JCXJldHVybiAtRU5PTUVNOworCQlyZXQgPSAtRU5P TUVNOworCQlnb3RvIGZhaWxfZnJlZTsKIAl9CiAKIAkvKiBUaGUgRjVVMDExIGhhcyB0aGUgc2Ft ZSB2ZW5kb3IvcHJvZHVjdCBhcyB0aGUgbmV0bWF0ZSBidXQgYSBkZXZpY2UgdmVyc2lvbiBvZiAw eDEzMCAqLwpAQCAtODMzLDE1ICs4MjksMjQgQEAgc3RhdGljIGludCBjYXRjX3Byb2JlKHN0cnVj dCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQKICAg ICAgICAgICAgICAgICBjYXRjLT5pcnFfYnVmLCAyLCBjYXRjX2lycV9kb25lLCBjYXRjLCAxKTsK IAogCWlmICghY2F0Yy0+aXNfZjV1MDExKSB7CisJCXUzMiAqYnVmOworCQlpbnQgaTsKKwogCQlk YmcoIkNoZWNraW5nIG1lbW9yeSBzaXplXG4iKTsKIAotCQlpID0gMHgxMjM0NTY3ODsKLQkJY2F0 Y193cml0ZV9tZW0oY2F0YywgMHg3YTgwLCAmaSwgNCk7Ci0JCWkgPSAweDg3NjU0MzIxOwkKLQkJ Y2F0Y193cml0ZV9tZW0oY2F0YywgMHhmYTgwLCAmaSwgNCk7Ci0JCWNhdGNfcmVhZF9tZW0oY2F0 YywgMHg3YTgwLCAmaSwgNCk7CisJCWJ1ZiA9IGttYWxsb2MoNCwgR0ZQX0tFUk5FTCk7CisJCWlm ICghYnVmKSB7CisJCQlyZXQgPSAtRU5PTUVNOworCQkJZ290byBmYWlsX2ZyZWU7CisJCX0KKwor CQkqYnVmID0gMHgxMjM0NTY3ODsKKwkJY2F0Y193cml0ZV9tZW0oY2F0YywgMHg3YTgwLCBidWYs IDQpOworCQkqYnVmID0gMHg4NzY1NDMyMTsKKwkJY2F0Y193cml0ZV9tZW0oY2F0YywgMHhmYTgw LCBidWYsIDQpOworCQljYXRjX3JlYWRfbWVtKGNhdGMsIDB4N2E4MCwgYnVmLCA0KTsKIAkgIAot CQlzd2l0Y2ggKGkpIHsKKwkJc3dpdGNoICgqYnVmKSB7CiAJCWNhc2UgMHgxMjM0NTY3ODoKIAkJ CWNhdGNfc2V0X3JlZyhjYXRjLCBUeEJ1ZkNvdW50LCA4KTsKIAkJCWNhdGNfc2V0X3JlZyhjYXRj LCBSeEJ1ZkNvdW50LCAzMik7CkBAIC04NTYsNiArODYxLDggQEAgc3RhdGljIGludCBjYXRjX3By b2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9p ZCAqaWQKIAkJCWRiZygiMzJrIE1lbW9yeVxuIik7CiAJCQlicmVhazsKIAkJfQorCisJCWtmcmVl KGJ1Zik7CiAJICAKIAkJZGJnKCJHZXR0aW5nIE1BQyBmcm9tIFNFRVJPTS4iKTsKIAkgIApAQCAt OTAyLDE2ICs5MDksMjEgQEAgc3RhdGljIGludCBjYXRjX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJm YWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQKIAl1c2Jfc2V0X2ludGZk YXRhKGludGYsIGNhdGMpOwogCiAJU0VUX05FVERFVl9ERVYobmV0ZGV2LCAmaW50Zi0+ZGV2KTsK LQlpZiAocmVnaXN0ZXJfbmV0ZGV2KG5ldGRldikgIT0gMCkgewotCQl1c2Jfc2V0X2ludGZkYXRh KGludGYsIE5VTEwpOwotCQl1c2JfZnJlZV91cmIoY2F0Yy0+Y3RybF91cmIpOwotCQl1c2JfZnJl ZV91cmIoY2F0Yy0+dHhfdXJiKTsKLQkJdXNiX2ZyZWVfdXJiKGNhdGMtPnJ4X3VyYik7Ci0JCXVz Yl9mcmVlX3VyYihjYXRjLT5pcnFfdXJiKTsKLQkJZnJlZV9uZXRkZXYobmV0ZGV2KTsKLQkJcmV0 dXJuIC1FSU87Ci0JfQorCXJldCA9IHJlZ2lzdGVyX25ldGRldihuZXRkZXYpOworCWlmIChyZXQp CisJCWdvdG8gZmFpbF9jbGVhcl9pbnRmZGF0YTsKKwogCXJldHVybiAwOworCitmYWlsX2NsZWFy X2ludGZkYXRhOgorCXVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgTlVMTCk7CitmYWlsX2ZyZWU6CisJ dXNiX2ZyZWVfdXJiKGNhdGMtPmN0cmxfdXJiKTsKKwl1c2JfZnJlZV91cmIoY2F0Yy0+dHhfdXJi KTsKKwl1c2JfZnJlZV91cmIoY2F0Yy0+cnhfdXJiKTsKKwl1c2JfZnJlZV91cmIoY2F0Yy0+aXJx X3VyYik7CisJZnJlZV9uZXRkZXYobmV0ZGV2KTsKKwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMg dm9pZCBjYXRjX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpCmRpZmYgLS1n aXQgYS9kcml2ZXJzL25ldC91c2IvcnRsODE1MC5jIGIvZHJpdmVycy9uZXQvdXNiL3J0bDgxNTAu YwppbmRleCBiZjhjODRkMGFkZjIuLjU0NTM3ZDBjMDQyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9u ZXQvdXNiL3J0bDgxNTAuYworKysgYi9kcml2ZXJzL25ldC91c2IvcnRsODE1MC5jCkBAIC0xNzgs MTYgKzE3OCwzNiBAQCBzdGF0aWMgY29uc3QgY2hhciBkcml2ZXJfbmFtZSBbXSA9ICJydGw4MTUw IjsKICovCiBzdGF0aWMgaW50IGdldF9yZWdpc3RlcnMocnRsODE1MF90ICogZGV2LCB1MTYgaW5k eCwgdTE2IHNpemUsIHZvaWQgKmRhdGEpCiB7Ci0JcmV0dXJuIHVzYl9jb250cm9sX21zZyhkZXYt PnVkZXYsIHVzYl9yY3ZjdHJscGlwZShkZXYtPnVkZXYsIDApLAotCQkJICAgICAgIFJUTDgxNTBf UkVRX0dFVF9SRUdTLCBSVEw4MTUwX1JFUVRfUkVBRCwKLQkJCSAgICAgICBpbmR4LCAwLCBkYXRh LCBzaXplLCA1MDApOworCXZvaWQgKmJ1ZjsKKwlpbnQgcmV0OworCisJYnVmID0ga21hbGxvYyhz aXplLCBHRlBfTk9JTyk7CisJaWYgKCFidWYpCisJCXJldHVybiAtRU5PTUVNOworCisJcmV0ID0g dXNiX2NvbnRyb2xfbXNnKGRldi0+dWRldiwgdXNiX3JjdmN0cmxwaXBlKGRldi0+dWRldiwgMCks CisJCQkgICAgICBSVEw4MTUwX1JFUV9HRVRfUkVHUywgUlRMODE1MF9SRVFUX1JFQUQsCisJCQkg ICAgICBpbmR4LCAwLCBidWYsIHNpemUsIDUwMCk7CisJaWYgKHJldCA+IDAgJiYgcmV0IDw9IHNp emUpCisJCW1lbWNweShkYXRhLCBidWYsIHJldCk7CisJa2ZyZWUoYnVmKTsKKwlyZXR1cm4gcmV0 OwogfQogCi1zdGF0aWMgaW50IHNldF9yZWdpc3RlcnMocnRsODE1MF90ICogZGV2LCB1MTYgaW5k eCwgdTE2IHNpemUsIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IHNldF9yZWdpc3RlcnMocnRsODE1 MF90ICogZGV2LCB1MTYgaW5keCwgdTE2IHNpemUsIGNvbnN0IHZvaWQgKmRhdGEpCiB7Ci0JcmV0 dXJuIHVzYl9jb250cm9sX21zZyhkZXYtPnVkZXYsIHVzYl9zbmRjdHJscGlwZShkZXYtPnVkZXYs IDApLAotCQkJICAgICAgIFJUTDgxNTBfUkVRX1NFVF9SRUdTLCBSVEw4MTUwX1JFUVRfV1JJVEUs Ci0JCQkgICAgICAgaW5keCwgMCwgZGF0YSwgc2l6ZSwgNTAwKTsKKwl2b2lkICpidWY7CisJaW50 IHJldDsKKworCWJ1ZiA9IGttZW1kdXAoZGF0YSwgc2l6ZSwgR0ZQX05PSU8pOworCWlmICghYnVm KQorCQlyZXR1cm4gLUVOT01FTTsKKworCXJldCA9IHVzYl9jb250cm9sX21zZyhkZXYtPnVkZXYs IHVzYl9zbmRjdHJscGlwZShkZXYtPnVkZXYsIDApLAorCQkJICAgICAgUlRMODE1MF9SRVFfU0VU X1JFR1MsIFJUTDgxNTBfUkVRVF9XUklURSwKKwkJCSAgICAgIGluZHgsIDAsIGJ1Ziwgc2l6ZSwg NTAwKTsKKwlrZnJlZShidWYpOworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyB2b2lkIGN0cmxf Y2FsbGJhY2soc3RydWN0IHVyYiAqdXJiKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQveGVuLW5l dGZyb250LmMgYi9kcml2ZXJzL25ldC94ZW4tbmV0ZnJvbnQuYwppbmRleCBjNjRhNjBlNWFkYzUu LjQ3YTQwNDY5NTQ4MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQveGVuLW5ldGZyb250LmMKKysr IGIvZHJpdmVycy9uZXQveGVuLW5ldGZyb250LmMKQEAgLTE0MDQsNiArMTQwNCw4IEBAIHN0YXRp YyB2b2lkIHhlbm5ldF9kaXNjb25uZWN0X2JhY2tlbmQoc3RydWN0IG5ldGZyb250X2luZm8gKmlu Zm8pCiAJc3Bpbl91bmxvY2tfaXJxKCZpbmZvLT50eF9sb2NrKTsKIAlzcGluX3VubG9ja19iaCgm aW5mby0+cnhfbG9jayk7CiAKKwlkZWxfdGltZXJfc3luYygmaW5mby0+cnhfcmVmaWxsX3RpbWVy KTsKKwogCWlmIChpbmZvLT5uZXRkZXYtPmlycSkKIAkJdW5iaW5kX2Zyb21faXJxaGFuZGxlcihp bmZvLT5uZXRkZXYtPmlycSwgaW5mby0+bmV0ZGV2KTsKIAlpbmZvLT5ldnRjaG4gPSBpbmZvLT5u ZXRkZXYtPmlycSA9IDA7CkBAIC0xOTQwLDggKzE5NDIsNiBAQCBzdGF0aWMgaW50IF9fZGV2ZXhp dCB4ZW5uZXRfcmVtb3ZlKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYpCiAKIAl1bnJlZ2lzdGVy X25ldGRldihpbmZvLT5uZXRkZXYpOwogCi0JZGVsX3RpbWVyX3N5bmMoJmluZm8tPnJ4X3JlZmls bF90aW1lcik7Ci0KIAlmcmVlX3BlcmNwdShpbmZvLT5zdGF0cyk7CiAKIAlmcmVlX25ldGRldihp bmZvLT5uZXRkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvaG90cGx1Zy9ycGFkbHBhcl9j b3JlLmMgYi9kcml2ZXJzL3BjaS9ob3RwbHVnL3JwYWRscGFyX2NvcmUuYwppbmRleCBjNTZhOTQx M2UxYWYuLjlkZTNmN2NmNTM1ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvaG90cGx1Zy9ycGFk bHBhcl9jb3JlLmMKKysrIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9ycGFkbHBhcl9jb3JlLmMKQEAg LTI1OSw4ICsyNTksMTMgQEAgc3RhdGljIGludCBkbHBhcl9hZGRfcGhiKGNoYXIgKmRyY19uYW1l LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKmRuKQogCiBzdGF0aWMgaW50IGRscGFyX2FkZF92aW9fc2xv dChjaGFyICpkcmNfbmFtZSwgc3RydWN0IGRldmljZV9ub2RlICpkbikKIHsKLQlpZiAodmlvX2Zp bmRfbm9kZShkbikpCisJc3RydWN0IHZpb19kZXYgKnZpb19kZXY7CisKKwl2aW9fZGV2ID0gdmlv X2ZpbmRfbm9kZShkbik7CisJaWYgKHZpb19kZXYpIHsKKwkJcHV0X2RldmljZSgmdmlvX2Rldi0+ ZGV2KTsKIAkJcmV0dXJuIC1FSU5WQUw7CisJfQogCiAJaWYgKCF2aW9fcmVnaXN0ZXJfZGV2aWNl X25vZGUoZG4pKSB7CiAJCXByaW50ayhLRVJOX0VSUgpAQCAtMzM2LDYgKzM0MSw5IEBAIHN0YXRp YyBpbnQgZGxwYXJfcmVtb3ZlX3Zpb19zbG90KGNoYXIgKmRyY19uYW1lLCBzdHJ1Y3QgZGV2aWNl X25vZGUgKmRuKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCXZpb191bnJlZ2lzdGVyX2RldmljZSh2 aW9fZGV2KTsKKworCXB1dF9kZXZpY2UoJnZpb19kZXYtPmRldik7CisKIAlyZXR1cm4gMDsKIH0K IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcGNpLmMgYi9kcml2ZXJzL3BjaS9wY2kuYwppbmRl eCA0YzNhOWU5YmYyODkuLjZiNzJlNGEwYjFiOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvcGNp LmMKKysrIGIvZHJpdmVycy9wY2kvcGNpLmMKQEAgLTE3NjMsNiArMTc2MywxMCBAQCBib29sIHBj aV9kZXZfcnVuX3dha2Uoc3RydWN0IHBjaV9kZXYgKmRldikKIAlpZiAoIWRldi0+cG1lX3N1cHBv cnQpCiAJCXJldHVybiBmYWxzZTsKIAorCS8qIFBNRS1jYXBhYmxlIGluIHByaW5jaXBsZSwgYnV0 IG5vdCBmcm9tIHRoZSBpbnRlbmRlZCBzbGVlcCBzdGF0ZSAqLworCWlmICghcGNpX3BtZV9jYXBh YmxlKGRldiwgcGNpX3RhcmdldF9zdGF0ZShkZXYpKSkKKwkJcmV0dXJuIGZhbHNlOworCiAJd2hp bGUgKGJ1cy0+cGFyZW50KSB7CiAJCXN0cnVjdCBwY2lfZGV2ICpicmlkZ2UgPSBidXMtPnNlbGY7 CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsX21pZF9wb3dlcmJ0bi5j IGIvZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWxfbWlkX3Bvd2VyYnRuLmMKaW5kZXggZjFhZTUw NzhiN2VjLi44Yzk2NzAyMjk3MTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGxhdGZvcm0veDg2L2lu dGVsX21pZF9wb3dlcmJ0bi5jCisrKyBiL2RyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsX21pZF9w b3dlcmJ0bi5jCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBpbnQgX19kZXZpbml0IG1mbGRfcGJf cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAogCWlucHV0X3NldF9jYXBhYmls aXR5KGlucHV0LCBFVl9LRVksIEtFWV9QT1dFUik7CiAKLQllcnJvciA9IHJlcXVlc3RfdGhyZWFk ZWRfaXJxKGlycSwgTlVMTCwgbWZsZF9wYl9pc3IsIDAsCisJZXJyb3IgPSByZXF1ZXN0X3RocmVh ZGVkX2lycShpcnEsIE5VTEwsIG1mbGRfcGJfaXNyLCBJUlFGX09ORVNIT1QsCiAJCQlEUklWRVJf TkFNRSwgaW5wdXQpOwogCWlmIChlcnJvcikgewogCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJVbmFi bGUgdG8gcmVxdWVzdCBpcnEgJWQgZm9yIG1mbGQgcG93ZXIiCmRpZmYgLS1naXQgYS9kcml2ZXJz L3MzOTAvY2hhci92bWxvZ3Jkci5jIGIvZHJpdmVycy9zMzkwL2NoYXIvdm1sb2dyZHIuYwppbmRl eCA1MjRkOTg4ZDg5ZGQuLjhkMmEzYzcxYTAwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL2No YXIvdm1sb2dyZHIuYworKysgYi9kcml2ZXJzL3MzOTAvY2hhci92bWxvZ3Jkci5jCkBAIC04NzYs NyArODc2LDcgQEAgc3RhdGljIGludCBfX2luaXQgdm1sb2dyZHJfaW5pdCh2b2lkKQogCQlnb3Rv IGNsZWFudXA7CiAKIAlmb3IgKGk9MDsgaSA8IE1BWE1JTk9SOyArK2kgKSB7Ci0JCXN5c19zZXJb aV0uYnVmZmVyID0gKGNoYXIgKikgZ2V0X3plcm9lZF9wYWdlKEdGUF9LRVJORUwpOworCQlzeXNf c2VyW2ldLmJ1ZmZlciA9IChjaGFyICopIGdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMIHwgR0ZQ X0RNQSk7CiAJCWlmICghc3lzX3NlcltpXS5idWZmZXIpIHsKIAkJCXJjID0gLUVOT01FTTsKIAkJ CWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9kYmYuYyBiL2RyaXZl cnMvczM5MC9zY3NpL3pmY3BfZGJmLmMKaW5kZXggYzg0NmE2M2VhNjcyLi5iZjEzZTczZWNhYmMg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZGJmLmMKKysrIGIvZHJpdmVycy9z MzkwL3Njc2kvemZjcF9kYmYuYwpAQCAtMjgyLDExICsyODIsMTIgQEAgdm9pZCB6ZmNwX2RiZl9y ZWNfdHJpZyhjaGFyICp0YWcsIHN0cnVjdCB6ZmNwX2FkYXB0ZXIgKmFkYXB0ZXIsCiAKIAogLyoq Ci0gKiB6ZmNwX2RiZl9yZWNfcnVuIC0gdHJhY2UgZXZlbnQgcmVsYXRlZCB0byBydW5uaW5nIHJl Y292ZXJ5CisgKiB6ZmNwX2RiZl9yZWNfcnVuX2x2bCAtIHRyYWNlIGV2ZW50IHJlbGF0ZWQgdG8g cnVubmluZyByZWNvdmVyeQorICogQGxldmVsOiB0cmFjZSBsZXZlbCB0byBiZSB1c2VkIGZvciBl dmVudAogICogQHRhZzogaWRlbnRpZmllciBmb3IgZXZlbnQKICAqIEBlcnA6IGVycF9hY3Rpb24g cnVubmluZwogICovCi12b2lkIHpmY3BfZGJmX3JlY19ydW4oY2hhciAqdGFnLCBzdHJ1Y3QgemZj cF9lcnBfYWN0aW9uICplcnApCit2b2lkIHpmY3BfZGJmX3JlY19ydW5fbHZsKGludCBsZXZlbCwg Y2hhciAqdGFnLCBzdHJ1Y3QgemZjcF9lcnBfYWN0aW9uICplcnApCiB7CiAJc3RydWN0IHpmY3Bf ZGJmICpkYmYgPSBlcnAtPmFkYXB0ZXItPmRiZjsKIAlzdHJ1Y3QgemZjcF9kYmZfcmVjICpyZWMg PSAmZGJmLT5yZWNfYnVmOwpAQCAtMzEyLDExICszMTMsMjEgQEAgdm9pZCB6ZmNwX2RiZl9yZWNf cnVuKGNoYXIgKnRhZywgc3RydWN0IHpmY3BfZXJwX2FjdGlvbiAqZXJwKQogCWVsc2UKIAkJcmVj LT51LnJ1bi5yZWNfY291bnQgPSBhdG9taWNfcmVhZCgmZXJwLT5hZGFwdGVyLT5lcnBfY291bnRl cik7CiAKLQlkZWJ1Z19ldmVudChkYmYtPnJlYywgMSwgcmVjLCBzaXplb2YoKnJlYykpOworCWRl YnVnX2V2ZW50KGRiZi0+cmVjLCBsZXZlbCwgcmVjLCBzaXplb2YoKnJlYykpOwogCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmRiZi0+cmVjX2xvY2ssIGZsYWdzKTsKIH0KIAogLyoqCisgKiB6ZmNw X2RiZl9yZWNfcnVuIC0gdHJhY2UgZXZlbnQgcmVsYXRlZCB0byBydW5uaW5nIHJlY292ZXJ5Cisg KiBAdGFnOiBpZGVudGlmaWVyIGZvciBldmVudAorICogQGVycDogZXJwX2FjdGlvbiBydW5uaW5n CisgKi8KK3ZvaWQgemZjcF9kYmZfcmVjX3J1bihjaGFyICp0YWcsIHN0cnVjdCB6ZmNwX2VycF9h Y3Rpb24gKmVycCkKK3sKKwl6ZmNwX2RiZl9yZWNfcnVuX2x2bCgxLCB0YWcsIGVycCk7Cit9CisK Ky8qKgogICogemZjcF9kYmZfcmVjX3J1bl93a2EgLSB0cmFjZSB3a2EgcG9ydCBldmVudCB3aXRo IGluZm8gbGlrZSBydW5uaW5nIHJlY292ZXJ5CiAgKiBAdGFnOiBpZGVudGlmaWVyIGZvciBldmVu dAogICogQHdrYV9wb3J0OiB3ZWxsIGtub3duIGFkZHJlc3MgcG9ydApkaWZmIC0tZ2l0IGEvZHJp dmVycy9zMzkwL3Njc2kvemZjcF9kYmYuaCBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZGJmLmgK aW5kZXggNDQwYWE2MTlkYTFkLi5hODE2NWYxNDI1NTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5 MC9zY3NpL3pmY3BfZGJmLmgKKysrIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9kYmYuaApAQCAt Miw3ICsyLDcgQEAKICAqIHpmY3AgZGV2aWNlIGRyaXZlcgogICogZGVidWcgZmVhdHVyZSBkZWNs YXJhdGlvbnMKICAqCi0gKiBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDgsIDIwMTUKKyAqIENvcHly aWdodCBJQk0gQ29ycC4gMjAwOCwgMjAxNgogICovCiAKICNpZm5kZWYgWkZDUF9EQkZfSApAQCAt MjgzLDYgKzI4MywzMCBAQCBzdHJ1Y3QgemZjcF9kYmYgewogCXN0cnVjdCB6ZmNwX2RiZl9zY3Np CQlzY3NpX2J1ZjsKIH07CiAKKy8qKgorICogemZjcF9kYmZfaGJhX2ZzZl9yZXNwX3N1cHByZXNz IC0gdHJ1ZSBpZiB3ZSBzaG91bGQgbm90IHRyYWNlIGJ5IGRlZmF1bHQKKyAqIEByZXE6IHJlcXVl c3QgdGhhdCBoYXMgYmVlbiBjb21wbGV0ZWQKKyAqCisgKiBSZXR1cm5zIHRydWUgaWYgRkNQIHJl c3BvbnNlIHdpdGggb25seSBiZW5pZ24gcmVzaWR1YWwgdW5kZXIgY291bnQuCisgKi8KK3N0YXRp YyBpbmxpbmUKK2Jvb2wgemZjcF9kYmZfaGJhX2ZzZl9yZXNwX3N1cHByZXNzKHN0cnVjdCB6ZmNw X2ZzZl9yZXEgKnJlcSkKK3sKKwlzdHJ1Y3QgZnNmX3F0Y2IgKnF0Y2IgPSByZXEtPnF0Y2I7CisJ dTMyIGZzZl9zdGF0ID0gcXRjYi0+aGVhZGVyLmZzZl9zdGF0dXM7CisJc3RydWN0IGZjcF9yZXNw ICpmY3BfcnNwOworCXU4IHJzcF9mbGFncywgZnJfc3RhdHVzOworCisJaWYgKHF0Y2ItPnByZWZp eC5xdGNiX3R5cGUgIT0gRlNGX0lPX0NPTU1BTkQpCisJCXJldHVybiBmYWxzZTsgLyogbm90IGFu IEZDUCByZXNwb25zZSAqLworCWZjcF9yc3AgPSAoc3RydWN0IGZjcF9yZXNwICopJnF0Y2ItPmJv dHRvbS5pby5mY3BfcnNwOworCXJzcF9mbGFncyA9IGZjcF9yc3AtPmZyX2ZsYWdzOworCWZyX3N0 YXR1cyA9IGZjcF9yc3AtPmZyX3N0YXR1czsKKwlyZXR1cm4gKGZzZl9zdGF0ID09IEZTRl9GQ1Bf UlNQX0FWQUlMQUJMRSkgJiYKKwkJKHJzcF9mbGFncyA9PSBGQ1BfUkVTSURfVU5ERVIpICYmCisJ CShmcl9zdGF0dXMgPT0gU0FNX1NUQVRfR09PRCk7Cit9CisKIHN0YXRpYyBpbmxpbmUKIHZvaWQg emZjcF9kYmZfaGJhX2ZzZl9yZXNwKGNoYXIgKnRhZywgaW50IGxldmVsLCBzdHJ1Y3QgemZjcF9m c2ZfcmVxICpyZXEpCiB7CkBAIC0zMDQsNyArMzI4LDkgQEAgdm9pZCB6ZmNwX2RiZl9oYmFfZnNm X3Jlc3BvbnNlKHN0cnVjdCB6ZmNwX2ZzZl9yZXEgKnJlcSkKIAkJemZjcF9kYmZfaGJhX2ZzZl9y ZXNwKCJmc19wZXJyIiwgMSwgcmVxKTsKIAogCX0gZWxzZSBpZiAocXRjYi0+aGVhZGVyLmZzZl9z dGF0dXMgIT0gRlNGX0dPT0QpIHsKLQkJemZjcF9kYmZfaGJhX2ZzZl9yZXNwKCJmc19mZXJyIiwg MSwgcmVxKTsKKwkJemZjcF9kYmZfaGJhX2ZzZl9yZXNwKCJmc19mZXJyIiwKKwkJCQkgICAgICB6 ZmNwX2RiZl9oYmFfZnNmX3Jlc3Bfc3VwcHJlc3MocmVxKQorCQkJCSAgICAgID8gNSA6IDEsIHJl cSk7CiAKIAl9IGVsc2UgaWYgKChyZXEtPmZzZl9jb21tYW5kID09IEZTRl9RVENCX09QRU5fUE9S VF9XSVRIX0RJRCkgfHwKIAkJICAgKHJlcS0+ZnNmX2NvbW1hbmQgPT0gRlNGX1FUQ0JfT1BFTl9M VU4pKSB7CkBAIC0zODgsNCArNDE0LDE1IEBAIHZvaWQgemZjcF9kYmZfc2NzaV9kZXZyZXNldChj aGFyICp0YWcsIHN0cnVjdCBzY3NpX2NtbmQgKnNjbW5kLCB1OCBmbGFnKQogCV96ZmNwX2RiZl9z Y3NpKHRtcF90YWcsIDEsIHNjbW5kLCBOVUxMKTsKIH0KIAorLyoqCisgKiB6ZmNwX2RiZl9zY3Np X251bGxjbW5kKCkgLSB0cmFjZSBOVUxMaWZ5IG9mIFNDU0kgY29tbWFuZCBpbiBkZXYvdGd0LXJl c2V0LgorICogQHNjbW5kOiBTQ1NJIGNvbW1hbmQgdGhhdCB3YXMgTlVMTGlmaWVkLgorICogQGZz Zl9yZXE6IHJlcXVlc3QgdGhhdCBvd25lZCBAc2NtbmQuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9p ZCB6ZmNwX2RiZl9zY3NpX251bGxjbW5kKHN0cnVjdCBzY3NpX2NtbmQgKnNjbW5kLAorCQkJCQkg IHN0cnVjdCB6ZmNwX2ZzZl9yZXEgKmZzZl9yZXEpCit7CisJX3pmY3BfZGJmX3Njc2koInNjZmNf XzEiLCAzLCBzY21uZCwgZnNmX3JlcSk7Cit9CisKICNlbmRpZiAvKiBaRkNQX0RCRl9IICovCmRp ZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2VycC5jIGIvZHJpdmVycy9zMzkwL3Nj c2kvemZjcF9lcnAuYwppbmRleCA3MjNjYmUzOTg1ZjAuLjEyNmZhNDEyYTA1OSAxMDA2NDQKLS0t IGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9lcnAuYworKysgYi9kcml2ZXJzL3MzOTAvc2NzaS96 ZmNwX2VycC5jCkBAIC0zLDcgKzMsNyBAQAogICoKICAqIEVycm9yIFJlY292ZXJ5IFByb2NlZHVy ZXMgKEVSUCkuCiAgKgotICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyLCAyMDE1CisgKiBDb3B5 cmlnaHQgSUJNIENvcnAuIDIwMDIsIDIwMTYKICAqLwogCiAjZGVmaW5lIEtNU0dfQ09NUE9ORU5U ICJ6ZmNwIgpAQCAtMTIxMiw2ICsxMjEyLDYyIEBAIHN0YXRpYyB2b2lkIHpmY3BfZXJwX2FjdGlv bl9kZXF1ZXVlKHN0cnVjdCB6ZmNwX2VycF9hY3Rpb24gKmVycF9hY3Rpb24pCiAJfQogfQogCisv KioKKyAqIHpmY3BfZXJwX3RyeV9ycG9ydF91bmJsb2NrIC0gdW5ibG9jayBycG9ydCBpZiBubyBt b3JlL25ldyByZWNvdmVyeQorICogQHBvcnQ6IHpmY3BfcG9ydCB3aG9zZSBmY19ycG9ydCB3ZSBz aG91bGQgdHJ5IHRvIHVuYmxvY2sKKyAqLworc3RhdGljIHZvaWQgemZjcF9lcnBfdHJ5X3Jwb3J0 X3VuYmxvY2soc3RydWN0IHpmY3BfcG9ydCAqcG9ydCkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdz OworCXN0cnVjdCB6ZmNwX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwb3J0LT5hZGFwdGVyOworCWludCBw b3J0X3N0YXR1czsKKwlzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCA9IGFkYXB0ZXItPnNjc2lfaG9z dDsKKwlzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXY7CisKKwl3cml0ZV9sb2NrX2lycXNhdmUoJmFk YXB0ZXItPmVycF9sb2NrLCBmbGFncyk7CisJcG9ydF9zdGF0dXMgPSBhdG9taWNfcmVhZCgmcG9y dC0+c3RhdHVzKTsKKwlpZiAoKHBvcnRfc3RhdHVzICYgWkZDUF9TVEFUVVNfQ09NTU9OX1VOQkxP Q0tFRCkgICAgPT0gMCB8fAorCSAgICAocG9ydF9zdGF0dXMgJiAoWkZDUF9TVEFUVVNfQ09NTU9O X0VSUF9JTlVTRSB8CisJCQkgICAgWkZDUF9TVEFUVVNfQ09NTU9OX0VSUF9GQUlMRUQpKSAhPSAw KSB7CisJCS8qIG5ldyBFUlAgb2Ygc2V2ZXJpdHkgPj0gcG9ydCB0cmlnZ2VyZWQgZWxzZXdoZXJl IG1lYW53aGlsZSBvcgorCQkgKiBsb2NhbCBsaW5rIGRvd24gKGFkYXB0ZXIgZXJwX2ZhaWxlZCBi dXQgbm90IGNsZWFyIHVuYmxvY2spCisJCSAqLworCQl6ZmNwX2RiZl9yZWNfcnVuX2x2bCg0LCAi ZXJ0cnVfcCIsICZwb3J0LT5lcnBfYWN0aW9uKTsKKwkJd3JpdGVfdW5sb2NrX2lycXJlc3RvcmUo JmFkYXB0ZXItPmVycF9sb2NrLCBmbGFncyk7CisJCXJldHVybjsKKwl9CisJc3Bpbl9sb2NrKHNo b3N0LT5ob3N0X2xvY2spOworCV9fc2hvc3RfZm9yX2VhY2hfZGV2aWNlKHNkZXYsIHNob3N0KSB7 CisJCXN0cnVjdCB6ZmNwX3Njc2lfZGV2ICp6c2RldiA9IHNkZXZfdG9femZjcChzZGV2KTsKKwkJ aW50IGx1bl9zdGF0dXM7CisKKwkJaWYgKHpzZGV2LT5wb3J0ICE9IHBvcnQpCisJCQljb250aW51 ZTsKKwkJLyogTFVOIHVuZGVyIHBvcnQgb2YgaW50ZXJlc3QgKi8KKwkJbHVuX3N0YXR1cyA9IGF0 b21pY19yZWFkKCZ6c2Rldi0+c3RhdHVzKTsKKwkJaWYgKChsdW5fc3RhdHVzICYgWkZDUF9TVEFU VVNfQ09NTU9OX0VSUF9GQUlMRUQpICE9IDApCisJCQljb250aW51ZTsgLyogdW5ibG9jayBycG9y dCBkZXNwaXRlIGZhaWxlZCBMVU5zICovCisJCS8qIExVTiByZWNvdmVyeSBub3QgZ2l2ZW4gdXAg eWV0IFttYXliZSBmb2xsb3ctdXAgcGVuZGluZ10gKi8KKwkJaWYgKChsdW5fc3RhdHVzICYgWkZD UF9TVEFUVVNfQ09NTU9OX1VOQkxPQ0tFRCkgPT0gMCB8fAorCQkgICAgKGx1bl9zdGF0dXMgJiBa RkNQX1NUQVRVU19DT01NT05fRVJQX0lOVVNFKSAhPSAwKSB7CisJCQkvKiBMVU4gYmxvY2tlZDoK KwkJCSAqIG5vdCB5ZXQgdW5ibG9ja2VkIFtMVU4gcmVjb3ZlcnkgcGVuZGluZ10KKwkJCSAqIG9y IG1lYW53aGlsZSBibG9ja2VkIFtuZXcgTFVOIHJlY292ZXJ5IHRyaWdnZXJlZF0KKwkJCSAqLwor CQkJemZjcF9kYmZfcmVjX3J1bl9sdmwoNCwgImVydHJ1X2wiLCAmenNkZXYtPmVycF9hY3Rpb24p OworCQkJc3Bpbl91bmxvY2soc2hvc3QtPmhvc3RfbG9jayk7CisJCQl3cml0ZV91bmxvY2tfaXJx cmVzdG9yZSgmYWRhcHRlci0+ZXJwX2xvY2ssIGZsYWdzKTsKKwkJCXJldHVybjsKKwkJfQorCX0K KwkvKiBub3cgcG9ydCBoYXMgbm8gY2hpbGQgb3IgYWxsIGNoaWxkcmVuIGhhdmUgY29tcGxldGVk IHJlY292ZXJ5LAorCSAqIGFuZCBubyBFUlAgb2Ygc2V2ZXJpdHkgPj0gcG9ydCB3YXMgbWVhbndo aWxlIHRyaWdnZXJlZCBlbHNld2hlcmUKKwkgKi8KKwl6ZmNwX3Njc2lfc2NoZWR1bGVfcnBvcnRf cmVnaXN0ZXIocG9ydCk7CisJc3Bpbl91bmxvY2soc2hvc3QtPmhvc3RfbG9jayk7CisJd3JpdGVf dW5sb2NrX2lycXJlc3RvcmUoJmFkYXB0ZXItPmVycF9sb2NrLCBmbGFncyk7Cit9CisKIHN0YXRp YyB2b2lkIHpmY3BfZXJwX2FjdGlvbl9jbGVhbnVwKHN0cnVjdCB6ZmNwX2VycF9hY3Rpb24gKmFj dCwgaW50IHJlc3VsdCkKIHsKIAlzdHJ1Y3QgemZjcF9hZGFwdGVyICphZGFwdGVyID0gYWN0LT5h ZGFwdGVyOwpAQCAtMTIyMiw2ICsxMjc4LDcgQEAgc3RhdGljIHZvaWQgemZjcF9lcnBfYWN0aW9u X2NsZWFudXAoc3RydWN0IHpmY3BfZXJwX2FjdGlvbiAqYWN0LCBpbnQgcmVzdWx0KQogCWNhc2Ug WkZDUF9FUlBfQUNUSU9OX1JFT1BFTl9MVU46CiAJCWlmICghKGFjdC0+c3RhdHVzICYgWkZDUF9T VEFUVVNfRVJQX05PX1JFRikpCiAJCQlzY3NpX2RldmljZV9wdXQoc2Rldik7CisJCXpmY3BfZXJw X3RyeV9ycG9ydF91bmJsb2NrKHBvcnQpOwogCQlicmVhazsKIAogCWNhc2UgWkZDUF9FUlBfQUNU SU9OX1JFT1BFTl9QT1JUOgpAQCAtMTIzMiw3ICsxMjg5LDcgQEAgc3RhdGljIHZvaWQgemZjcF9l cnBfYWN0aW9uX2NsZWFudXAoc3RydWN0IHpmY3BfZXJwX2FjdGlvbiAqYWN0LCBpbnQgcmVzdWx0 KQogCQkgKi8KIAkJaWYgKGFjdC0+c3RlcCAhPSBaRkNQX0VSUF9TVEVQX1VOSU5JVElBTElaRUQp CiAJCQlpZiAocmVzdWx0ID09IFpGQ1BfRVJQX1NVQ0NFRURFRCkKLQkJCQl6ZmNwX3Njc2lfc2No ZWR1bGVfcnBvcnRfcmVnaXN0ZXIocG9ydCk7CisJCQkJemZjcF9lcnBfdHJ5X3Jwb3J0X3VuYmxv Y2socG9ydCk7CiAJCS8qIGZhbGwgdGhyb3VnaCAqLwogCWNhc2UgWkZDUF9FUlBfQUNUSU9OX1JF T1BFTl9QT1JUX0ZPUkNFRDoKIAkJcHV0X2RldmljZSgmcG9ydC0+ZGV2KTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZXh0LmggYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2V4 dC5oCmluZGV4IGI1MTUwMGFjY2NlMi4uYjBlMTZhZWQ0M2FjIDEwMDY0NAotLS0gYS9kcml2ZXJz L3MzOTAvc2NzaS96ZmNwX2V4dC5oCisrKyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZXh0LmgK QEAgLTMsNyArMyw3IEBACiAgKgogICogRXh0ZXJuYWwgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgog ICoKLSAqIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwMiwgMjAxNQorICogQ29weXJpZ2h0IElCTSBD b3JwLiAyMDAyLCAyMDE2CiAgKi8KIAogI2lmbmRlZiBaRkNQX0VYVF9ICkBAIC00OSw2ICs0OSw4 IEBAIGV4dGVybiB2b2lkIHpmY3BfZGJmX2FkYXB0ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgemZjcF9h ZGFwdGVyICopOwogZXh0ZXJuIHZvaWQgemZjcF9kYmZfcmVjX3RyaWcoY2hhciAqLCBzdHJ1Y3Qg emZjcF9hZGFwdGVyICosCiAJCQkgICAgICBzdHJ1Y3QgemZjcF9wb3J0ICosIHN0cnVjdCBzY3Np X2RldmljZSAqLCB1OCwgdTgpOwogZXh0ZXJuIHZvaWQgemZjcF9kYmZfcmVjX3J1bihjaGFyICos IHN0cnVjdCB6ZmNwX2VycF9hY3Rpb24gKik7CitleHRlcm4gdm9pZCB6ZmNwX2RiZl9yZWNfcnVu X2x2bChpbnQgbGV2ZWwsIGNoYXIgKnRhZywKKwkJCQkgc3RydWN0IHpmY3BfZXJwX2FjdGlvbiAq ZXJwKTsKIGV4dGVybiB2b2lkIHpmY3BfZGJmX3JlY19ydW5fd2thKGNoYXIgKiwgc3RydWN0IHpm Y3BfZmNfd2thX3BvcnQgKiwgdTY0KTsKIGV4dGVybiB2b2lkIHpmY3BfZGJmX2hiYV9mc2ZfdXNz KGNoYXIgKiwgc3RydWN0IHpmY3BfZnNmX3JlcSAqKTsKIGV4dGVybiB2b2lkIHpmY3BfZGJmX2hi YV9mc2ZfcmVzKGNoYXIgKiwgaW50LCBzdHJ1Y3QgemZjcF9mc2ZfcmVxICopOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9mc2YuYyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3Bf ZnNmLmMKaW5kZXggMGNiYWViYjUyNDAyLi45OGJiODU5Y2I2OTkgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvczM5MC9zY3NpL3pmY3BfZnNmLmMKKysrIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9mc2Yu YwpAQCAtMTU3Nyw3ICsxNTc3LDcgQEAgb3V0OgogaW50IHpmY3BfZnNmX29wZW5fd2thX3BvcnQo c3RydWN0IHpmY3BfZmNfd2thX3BvcnQgKndrYV9wb3J0KQogewogCXN0cnVjdCB6ZmNwX3FkaW8g KnFkaW8gPSB3a2FfcG9ydC0+YWRhcHRlci0+cWRpbzsKLQlzdHJ1Y3QgemZjcF9mc2ZfcmVxICpy ZXEgPSBOVUxMOworCXN0cnVjdCB6ZmNwX2ZzZl9yZXEgKnJlcTsKIAlpbnQgcmV0dmFsID0gLUVJ TzsKIAogCXNwaW5fbG9ja19pcnEoJnFkaW8tPnJlcV9xX2xvY2spOwpAQCAtMTYwNiw3ICsxNjA2 LDcgQEAgaW50IHpmY3BfZnNmX29wZW5fd2thX3BvcnQoc3RydWN0IHpmY3BfZmNfd2thX3BvcnQg KndrYV9wb3J0KQogCQl6ZmNwX2ZzZl9yZXFfZnJlZShyZXEpOwogb3V0OgogCXNwaW5fdW5sb2Nr X2lycSgmcWRpby0+cmVxX3FfbG9jayk7Ci0JaWYgKHJlcSAmJiAhSVNfRVJSKHJlcSkpCisJaWYg KCFyZXR2YWwpCiAJCXpmY3BfZGJmX3JlY19ydW5fd2thKCJmc293cF8xIiwgd2thX3BvcnQsIHJl cS0+cmVxX2lkKTsKIAlyZXR1cm4gcmV0dmFsOwogfQpAQCAtMTYzMiw3ICsxNjMyLDcgQEAgc3Rh dGljIHZvaWQgemZjcF9mc2ZfY2xvc2Vfd2thX3BvcnRfaGFuZGxlcihzdHJ1Y3QgemZjcF9mc2Zf cmVxICpyZXEpCiBpbnQgemZjcF9mc2ZfY2xvc2Vfd2thX3BvcnQoc3RydWN0IHpmY3BfZmNfd2th X3BvcnQgKndrYV9wb3J0KQogewogCXN0cnVjdCB6ZmNwX3FkaW8gKnFkaW8gPSB3a2FfcG9ydC0+ YWRhcHRlci0+cWRpbzsKLQlzdHJ1Y3QgemZjcF9mc2ZfcmVxICpyZXEgPSBOVUxMOworCXN0cnVj dCB6ZmNwX2ZzZl9yZXEgKnJlcTsKIAlpbnQgcmV0dmFsID0gLUVJTzsKIAogCXNwaW5fbG9ja19p cnEoJnFkaW8tPnJlcV9xX2xvY2spOwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAgaW50IHpmY3BfZnNm X2Nsb3NlX3drYV9wb3J0KHN0cnVjdCB6ZmNwX2ZjX3drYV9wb3J0ICp3a2FfcG9ydCkKIAkJemZj cF9mc2ZfcmVxX2ZyZWUocmVxKTsKIG91dDoKIAlzcGluX3VubG9ja19pcnEoJnFkaW8tPnJlcV9x X2xvY2spOwotCWlmIChyZXEgJiYgIUlTX0VSUihyZXEpKQorCWlmICghcmV0dmFsKQogCQl6ZmNw X2RiZl9yZWNfcnVuX3drYSgiZnNjd3BfMSIsIHdrYV9wb3J0LCByZXEtPnJlcV9pZCk7CiAJcmV0 dXJuIHJldHZhbDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZnNmLmgg Yi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2ZzZi5oCmluZGV4IDhjYWQ0MWZmYjZiOC4uMzU4Yjky ZWNlOGQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2ZzZi5oCisrKyBiL2Ry aXZlcnMvczM5MC9zY3NpL3pmY3BfZnNmLmgKQEAgLTMsNyArMyw3IEBACiAgKgogICogSW50ZXJm YWNlIHRvIHRoZSBGU0Ygc3VwcG9ydCBmdW5jdGlvbnMuCiAgKgotICogQ29weXJpZ2h0IElCTSBD b3JwLiAyMDAyLCAyMDE1CisgKiBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDIsIDIwMTYKICAqLwog CiAjaWZuZGVmIEZTRl9ICkBAIC04Niw2ICs4Niw3IEBACiAjZGVmaW5lIEZTRl9BUFBfVEFHX0NI RUNLX0ZBSUxVUkUJCTB4MDAwMDAwODIKICNkZWZpbmUgRlNGX1JFRl9UQUdfQ0hFQ0tfRkFJTFVS RQkJMHgwMDAwMDA4MwogI2RlZmluZSBGU0ZfQURBUFRFUl9TVEFUVVNfQVZBSUxBQkxFCQkweDAw MDAwMEFECisjZGVmaW5lIEZTRl9GQ1BfUlNQX0FWQUlMQUJMRQkJCTB4MDAwMDAwQUYKICNkZWZp bmUgRlNGX1VOS05PV05fQ09NTUFORAkJCTB4MDAwMDAwRTIKICNkZWZpbmUgRlNGX1VOS05PV05f T1BfU1VCVFlQRSAgICAgICAgICAgICAgICAgIDB4MDAwMDAwRTMKICNkZWZpbmUgRlNGX0lOVkFM SURfQ09NTUFORF9PUFRJT04gICAgICAgICAgICAgIDB4MDAwMDAwRTUKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvczM5MC9zY3NpL3pmY3BfcmVxbGlzdC5oIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9y ZXFsaXN0LmgKaW5kZXggYTcyZDFiNzMwYWJhLi43MDNmY2U1OWJlZmUgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvczM5MC9zY3NpL3pmY3BfcmVxbGlzdC5oCisrKyBiL2RyaXZlcnMvczM5MC9zY3NpL3pm Y3BfcmVxbGlzdC5oCkBAIC00LDcgKzQsNyBAQAogICogRGF0YSBzdHJ1Y3R1cmUgYW5kIGhlbHBl ciBmdW5jdGlvbnMgZm9yIHRyYWNraW5nIHBlbmRpbmcgRlNGCiAgKiByZXF1ZXN0cy4KICAqCi0g KiBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDkKKyAqIENvcHlyaWdodCBJQk0gQ29ycC4g MjAwOSwgMjAxNgogICovCiAKICNpZm5kZWYgWkZDUF9SRVFMSVNUX0gKQEAgLTE4MCw0ICsxODAs MzIgQEAgc3RhdGljIGlubGluZSB2b2lkIHpmY3BfcmVxbGlzdF9tb3ZlKHN0cnVjdCB6ZmNwX3Jl cWxpc3QgKnJsLAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJsLT5sb2NrLCBmbGFncyk7CiB9 CiAKKy8qKgorICogemZjcF9yZXFsaXN0X2FwcGx5X2Zvcl9hbGwoKSAtIGFwcGx5IGEgZnVuY3Rp b24gdG8gZXZlcnkgcmVxdWVzdC4KKyAqIEBybDogdGhlIHJlcXVlc3RsaXN0IHRoYXQgY29udGFp bnMgdGhlIHRhcmdldCByZXF1ZXN0cy4KKyAqIEBmOiB0aGUgZnVuY3Rpb24gdG8gYXBwbHkgdG8g ZWFjaCByZXF1ZXN0OyB0aGUgZmlyc3QgcGFyYW1ldGVyIG9mIHRoZQorICogICAgIGZ1bmN0aW9u IHdpbGwgYmUgdGhlIHRhcmdldC1yZXF1ZXN0OyB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0aGUg c2FtZQorICogICAgIHBvaW50ZXIgYXMgZ2l2ZW4gd2l0aCB0aGUgYXJndW1lbnQgQGRhdGEuCisg KiBAZGF0YTogZnJlZWx5IGNob3NlbiBhcmd1bWVudDsgcGFzc2VkIHRocm91Z2ggdG8gQGYgYXMg c2Vjb25kIHBhcmFtZXRlci4KKyAqCisgKiBVc2VzIDpjOm1hY3JvOmBsaXN0X2Zvcl9lYWNoX2Vu dHJ5YCB0byBpdGVyYXRlIG92ZXIgdGhlIGxpc3RzIGluIHRoZSBoYXNoLQorICogdGFibGUgKG5v dCBhICdzYWZlJyB2YXJpYW50LCBzbyBkb24ndCBtb2RpZnkgdGhlIGxpc3QpLgorICoKKyAqIEhv bGRzIEBybC0+bG9jayBvdmVyIHRoZSBlbnRpcmUgcmVxdWVzdC1pdGVyYXRpb24uCisgKi8KK3N0 YXRpYyBpbmxpbmUgdm9pZAoremZjcF9yZXFsaXN0X2FwcGx5X2Zvcl9hbGwoc3RydWN0IHpmY3Bf cmVxbGlzdCAqcmwsCisJCQkgICB2b2lkICgqZikoc3RydWN0IHpmY3BfZnNmX3JlcSAqLCB2b2lk ICopLCB2b2lkICpkYXRhKQoreworCXN0cnVjdCB6ZmNwX2ZzZl9yZXEgKnJlcTsKKwl1bnNpZ25l ZCBsb25nIGZsYWdzOworCXVuc2lnbmVkIGludCBpOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnJs LT5sb2NrLCBmbGFncyk7CisJZm9yIChpID0gMDsgaSA8IFpGQ1BfUkVRX0xJU1RfQlVDS0VUUzsg aSsrKQorCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcSwgJnJsLT5idWNrZXRzW2ldLCBsaXN0KQor CQkJZihyZXEsIGRhdGEpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJsLT5sb2NrLCBmbGFn cyk7Cit9CisKICNlbmRpZiAvKiBaRkNQX1JFUUxJU1RfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9zMzkwL3Njc2kvemZjcF9zY3NpLmMgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX3Njc2kuYwpp bmRleCAzOGVlMGRmNjMzYTMuLjY2YzM3ZTc3YWM3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkw L3Njc2kvemZjcF9zY3NpLmMKKysrIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9zY3NpLmMKQEAg LTMsNyArMyw3IEBACiAgKgogICogSW50ZXJmYWNlIHRvIExpbnV4IFNDU0kgbWlkbGF5ZXIuCiAg KgotICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAyLCAyMDE1CisgKiBDb3B5cmlnaHQgSUJNIENv cnAuIDIwMDIsIDIwMTYKICAqLwogCiAjZGVmaW5lIEtNU0dfQ09NUE9ORU5UICJ6ZmNwIgpAQCAt MTA5LDkgKzEwOSw3IEBAIGludCB6ZmNwX3Njc2lfcXVldWVjb21tYW5kKHN0cnVjdCBTY3NpX0hv c3QgKnNob3N0LCBzdHJ1Y3Qgc2NzaV9jbW5kICpzY3BudCkKIAl9CiAKIAlpZiAodW5saWtlbHko IShzdGF0dXMgJiBaRkNQX1NUQVRVU19DT01NT05fVU5CTE9DS0VEKSkpIHsKLQkJLyogVGhpcyBj b3VsZCBiZSBlaXRoZXIKLQkJICogb3BlbiBMVU4gcGVuZGluZzogdGhpcyBpcyB0ZW1wb3Jhcnks IHdpbGwgcmVzdWx0IGluCi0JCSAqCW9wZW4gTFVOIG9yIEVSUF9GQUlMRUQsIHNvIHJldHJ5IGNv bW1hbmQKKwkJLyogVGhpcyBjb3VsZCBiZQogCQkgKiBjYWxsIHRvIHJwb3J0X2RlbGV0ZSBwZW5k aW5nOiBtaW1pYyByZXRyeSBmcm9tCiAJCSAqIAlmY19yZW1vdGVfcG9ydF9jaGtyZWFkeSB1bnRp bCBycG9ydCBpcyBCTE9DS0VECiAJCSAqLwpAQCAtMjMwLDYgKzIyOCw1NyBAQCBzdGF0aWMgaW50 IHpmY3Bfc2NzaV9laF9hYm9ydF9oYW5kbGVyKHN0cnVjdCBzY3NpX2NtbmQgKnNjcG50KQogCXJl dHVybiByZXR2YWw7CiB9CiAKK3N0cnVjdCB6ZmNwX3Njc2lfcmVxX2ZpbHRlciB7CisJdTggdG1m X3Njb3BlOworCXUzMiBsdW5faGFuZGxlOworCXUzMiBwb3J0X2hhbmRsZTsKK307CisKK3N0YXRp YyB2b2lkIHpmY3Bfc2NzaV9mb3JnZXRfY21uZChzdHJ1Y3QgemZjcF9mc2ZfcmVxICpvbGRfcmVx LCB2b2lkICpkYXRhKQoreworCXN0cnVjdCB6ZmNwX3Njc2lfcmVxX2ZpbHRlciAqZmlsdGVyID0K KwkJKHN0cnVjdCB6ZmNwX3Njc2lfcmVxX2ZpbHRlciAqKWRhdGE7CisKKwkvKiBhbHJlYWR5IGFi b3J0ZWQgLSBwcmV2ZW50IHNpZGUtZWZmZWN0cyAtIG9yIG5vdCBhIFNDU0kgY29tbWFuZCAqLwor CWlmIChvbGRfcmVxLT5kYXRhID09IE5VTEwgfHwgb2xkX3JlcS0+ZnNmX2NvbW1hbmQgIT0gRlNG X1FUQ0JfRkNQX0NNTkQpCisJCXJldHVybjsKKworCS8qICh0bWZfc2NvcGUgPT0gRkNQX1RNRl9U R1RfUkVTRVQgfHwgdG1mX3Njb3BlID09IEZDUF9UTUZfTFVOX1JFU0VUKSAqLworCWlmIChvbGRf cmVxLT5xdGNiLT5oZWFkZXIucG9ydF9oYW5kbGUgIT0gZmlsdGVyLT5wb3J0X2hhbmRsZSkKKwkJ cmV0dXJuOworCisJaWYgKGZpbHRlci0+dG1mX3Njb3BlID09IEZDUF9UTUZfTFVOX1JFU0VUICYm CisJICAgIG9sZF9yZXEtPnF0Y2ItPmhlYWRlci5sdW5faGFuZGxlICE9IGZpbHRlci0+bHVuX2hh bmRsZSkKKwkJcmV0dXJuOworCisJemZjcF9kYmZfc2NzaV9udWxsY21uZCgoc3RydWN0IHNjc2lf Y21uZCAqKW9sZF9yZXEtPmRhdGEsIG9sZF9yZXEpOworCW9sZF9yZXEtPmRhdGEgPSBOVUxMOwor fQorCitzdGF0aWMgdm9pZCB6ZmNwX3Njc2lfZm9yZ2V0X2NtbmRzKHN0cnVjdCB6ZmNwX3Njc2lf ZGV2ICp6c2RldiwgdTggdG1fZmxhZ3MpCit7CisJc3RydWN0IHpmY3BfYWRhcHRlciAqYWRhcHRl ciA9IHpzZGV2LT5wb3J0LT5hZGFwdGVyOworCXN0cnVjdCB6ZmNwX3Njc2lfcmVxX2ZpbHRlciBm aWx0ZXIgPSB7CisJCS50bWZfc2NvcGUgPSBGQ1BfVE1GX1RHVF9SRVNFVCwKKwkJLnBvcnRfaGFu ZGxlID0genNkZXYtPnBvcnQtPmhhbmRsZSwKKwl9OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisK KwlpZiAodG1fZmxhZ3MgPT0gRkNQX1RNRl9MVU5fUkVTRVQpIHsKKwkJZmlsdGVyLnRtZl9zY29w ZSA9IEZDUF9UTUZfTFVOX1JFU0VUOworCQlmaWx0ZXIubHVuX2hhbmRsZSA9IHpzZGV2LT5sdW5f aGFuZGxlOworCX0KKworCS8qCisJICogYWJvcnRfbG9jayBzZWN1cmVzIGFnYWluc3Qgb3RoZXIg cHJvY2Vzc2luZ3MgLSBpbiB0aGUgYWJvcnQtZnVuY3Rpb24KKwkgKiBhbmQgbm9ybWFsIGNtbmQt aGFuZGxlciAtIG9mIChzdHJ1Y3QgemZjcF9mc2ZfcmVxICopLT5kYXRhCisJICovCisJd3JpdGVf bG9ja19pcnFzYXZlKCZhZGFwdGVyLT5hYm9ydF9sb2NrLCBmbGFncyk7CisJemZjcF9yZXFsaXN0 X2FwcGx5X2Zvcl9hbGwoYWRhcHRlci0+cmVxX2xpc3QsIHpmY3Bfc2NzaV9mb3JnZXRfY21uZCwK KwkJCQkgICAmZmlsdGVyKTsKKwl3cml0ZV91bmxvY2tfaXJxcmVzdG9yZSgmYWRhcHRlci0+YWJv cnRfbG9jaywgZmxhZ3MpOworfQorCiBzdGF0aWMgaW50IHpmY3BfdGFza19tZ210X2Z1bmN0aW9u KHN0cnVjdCBzY3NpX2NtbmQgKnNjcG50LCB1OCB0bV9mbGFncykKIHsKIAlzdHJ1Y3QgemZjcF9z Y3NpX2RldiAqemZjcF9zZGV2ID0gc2Rldl90b196ZmNwKHNjcG50LT5kZXZpY2UpOwpAQCAtMjYy LDggKzMxMSwxMCBAQCBzdGF0aWMgaW50IHpmY3BfdGFza19tZ210X2Z1bmN0aW9uKHN0cnVjdCBz Y3NpX2NtbmQgKnNjcG50LCB1OCB0bV9mbGFncykKIAlpZiAoZnNmX3JlcS0+c3RhdHVzICYgWkZD UF9TVEFUVVNfRlNGUkVRX1RNRlVOQ0ZBSUxFRCkgewogCQl6ZmNwX2RiZl9zY3NpX2RldnJlc2V0 KCJmYWlsIiwgc2NwbnQsIHRtX2ZsYWdzKTsKIAkJcmV0dmFsID0gRkFJTEVEOwotCX0gZWxzZQor CX0gZWxzZSB7CiAJCXpmY3BfZGJmX3Njc2lfZGV2cmVzZXQoIm9rYXkiLCBzY3BudCwgdG1fZmxh Z3MpOworCQl6ZmNwX3Njc2lfZm9yZ2V0X2NtbmRzKHpmY3Bfc2RldiwgdG1fZmxhZ3MpOworCX0K IAogCXpmY3BfZnNmX3JlcV9mcmVlKGZzZl9yZXEpOwogCXJldHVybiByZXR2YWw7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL3Njc2kvbXZzYXMvbXZfOTR4eC5jIGIvZHJpdmVycy9zY3NpL212c2FzL212 Xzk0eHguYwppbmRleCA3ZTQyM2U1YWQ1ZTEuLjE2MzQ5YWE3Njk1NiAxMDA2NDQKLS0tIGEvZHJp dmVycy9zY3NpL212c2FzL212Xzk0eHguYworKysgYi9kcml2ZXJzL3Njc2kvbXZzYXMvbXZfOTR4 eC5jCkBAIC02MjIsNyArNjIyLDcgQEAgc3RhdGljIHZvaWQgbXZzXzk0eHhfY29tbWFuZF9hY3Rp dmUoc3RydWN0IG12c19pbmZvICptdmksIHUzMiBzbG90X2lkeCkKIHsKIAl1MzIgdG1wOwogCXRt cCA9IG12c19jcjMyKG12aSwgTVZTX0NPTU1BTkRfQUNUSVZFKyhzbG90X2lkeCA+PiAzKSk7Ci0J aWYgKHRtcCAmJiAxIDw8IChzbG90X2lkeCAlIDMyKSkgeworCWlmICh0bXAgJiAxIDw8IChzbG90 X2lkeCAlIDMyKSkgewogCQltdl9wcmludGsoImNvbW1hbmQgYWN0aXZlICUwOFgsICBzbG90IFsl eF0uXG4iLCB0bXAsIHNsb3RfaWR4KTsKIAkJbXZzX2N3MzIobXZpLCBNVlNfQ09NTUFORF9BQ1RJ VkUgKyAoc2xvdF9pZHggPj4gMyksCiAJCQkxIDw8IChzbG90X2lkeCAlIDMyKSk7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL3Njc2kvc2NzaV9zeXNmcy5jIGIvZHJpdmVycy9zY3NpL3Njc2lfc3lzZnMu YwppbmRleCBkNzZjMzQ3YmQ0NzMuLjE5NWRkM2M5YTZhOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9z Y3NpL3Njc2lfc3lzZnMuYworKysgYi9kcml2ZXJzL3Njc2kvc2NzaV9zeXNmcy5jCkBAIC04NjQs MTAgKzg2NCw2IEBAIGludCBzY3NpX3N5c2ZzX2FkZF9zZGV2KHN0cnVjdCBzY3NpX2RldmljZSAq c2RldikKIAlzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcnEgPSBzZGV2LT5yZXF1ZXN0X3F1ZXVlOwog CXN0cnVjdCBzY3NpX3RhcmdldCAqc3RhcmdldCA9IHNkZXYtPnNkZXZfdGFyZ2V0OwogCi0JZXJy b3IgPSBzY3NpX2RldmljZV9zZXRfc3RhdGUoc2RldiwgU0RFVl9SVU5OSU5HKTsKLQlpZiAoZXJy b3IpCi0JCXJldHVybiBlcnJvcjsKLQogCWVycm9yID0gc2NzaV90YXJnZXRfYWRkKHN0YXJnZXQp OwogCWlmIChlcnJvcikKIAkJcmV0dXJuIGVycm9yOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3Np L3NnLmMgYi9kcml2ZXJzL3Njc2kvc2cuYwppbmRleCBmYjU5YTQ5ZGQwMWQuLjQzODYyZjI1Yzc1 NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3NnLmMKKysrIGIvZHJpdmVycy9zY3NpL3NnLmMK QEAgLTE3MTAsNiArMTcxMCwxMCBAQCBzdGF0aWMgaW50IHNnX3N0YXJ0X3JlcShTZ19yZXF1ZXN0 ICpzcnAsIHVuc2lnbmVkIGNoYXIgKmNtZCkKIAkJCWlvdl9jb3VudCA9IGlvdl9zaG9ydGVuKGlv diwgaW92X2NvdW50LCBocC0+ZHhmZXJfbGVuKTsKIAkJCWxlbiA9IGhwLT5keGZlcl9sZW47CiAJ CX0KKwkJaWYgKGxlbiA9PSAwKSB7CisJCQlrZnJlZShpb3YpOworCQkJcmV0dXJuIC1FSU5WQUw7 CisJCX0KIAogCQlyZXMgPSBibGtfcnFfbWFwX3VzZXJfaW92KHEsIHJxLCBtZCwgKHN0cnVjdCBz Z19pb3ZlYyAqKWlvdiwKIAkJCQkJICBpb3ZfY291bnQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Nz Yi9wY2kuYyBiL2RyaXZlcnMvc3NiL3BjaS5jCmluZGV4IDM0YzNiYWI5MGI5YS4uOGQ0ZGRkMWNk YmI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3NzYi9wY2kuYworKysgYi9kcml2ZXJzL3NzYi9wY2ku YwpAQCAtNzEzLDYgKzcxMyw3IEBAIHN0YXRpYyBpbnQgc3NiX3BjaV9zcHJvbV9nZXQoc3RydWN0 IHNzYl9idXMgKmJ1cywKIAkJCQlzc2JfcHJpbnRrKEtFUk5fV0FSTklORyBQRlggIldBUk5JTkc6 IFVzaW5nIgogCQkJCQkgICAiIGZhbGxiYWNrIFNQUk9NIGZhaWxlZCAoZXJyICVkKVxuIiwKIAkJ CQkJICAgZXJyKTsKKwkJCQlnb3RvIG91dF9mcmVlOwogCQkJfSBlbHNlIHsKIAkJCQlzc2JfZHBy aW50ayhLRVJOX0RFQlVHIFBGWCAiVXNpbmcgU1BST00iCiAJCQkJCSAgICAiIHJldmlzaW9uICVk IHByb3ZpZGVkIGJ5IgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfZHJ2 LmMgYi9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9kcnYuYwppbmRleCA5ODZhMDRkMTZiYTgu LmRhMDk3YjIyODk4MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfZHJ2 LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfZHJ2LmMKQEAgLTExODUsNiArMTE4 NSw5IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBkcml2ZXIgPSB7CiAJCSAub3BlbiA9IGRy bV9vcGVuLAogCQkgLnJlbGVhc2UgPSBkcm1fcmVsZWFzZSwKIAkJIC51bmxvY2tlZF9pb2N0bCA9 IHBzYl91bmxvY2tlZF9pb2N0bCwKKyNpZmRlZiBDT05GSUdfQ09NUEFUCisJCSAuY29tcGF0X2lv Y3RsID0gZHJtX2NvbXBhdF9pb2N0bCwKKyNlbmRpZgogCQkgLm1tYXAgPSBkcm1fZ2VtX21tYXAs CiAJCSAucG9sbCA9IGRybV9wb2xsLAogCQkgLmZhc3luYyA9IGRybV9mYXN5bmMsCmRpZmYgLS1n aXQgYS9kcml2ZXJzL3N0YWdpbmcvaHYvbmV0dnNjX2Rydi5jIGIvZHJpdmVycy9zdGFnaW5nL2h2 L25ldHZzY19kcnYuYwppbmRleCA5M2IwZTkxY2JmOTguLmM5OTNkZmQ4NjcxYiAxMDA2NDQKLS0t IGEvZHJpdmVycy9zdGFnaW5nL2h2L25ldHZzY19kcnYuYworKysgYi9kcml2ZXJzL3N0YWdpbmcv aHYvbmV0dnNjX2Rydi5jCkBAIC01Miw2ICs1Miw5IEBAIHN0cnVjdCBuZXRfZGV2aWNlX2NvbnRl eHQgewogLyogTmVlZCB0aGlzIG1hbnkgcGFnZXMgdG8gaGFuZGxlIHdvcnN0IGNhc2UgZnJhZ21l bnRlZCBwYWNrZXQgKi8KICNkZWZpbmUgUEFDS0VUX1BBR0VTX0hJV0FURVIgIChNQVhfU0tCX0ZS QUdTICsgMikKIAorLyogUmVzdHJpY3QgR1NPIHNpemUgdG8gYWNjb3VudCBmb3IgTlZHUkUgKi8K KyNkZWZpbmUgTkVUVlNDX0dTT19NQVhfU0laRQk2Mjc2OAorCiBzdGF0aWMgaW50IHJpbmdfc2l6 ZSA9IDEyODsKIG1vZHVsZV9wYXJhbShyaW5nX3NpemUsIGludCwgU19JUlVHTyk7CiBNT0RVTEVf UEFSTV9ERVNDKHJpbmdfc2l6ZSwgIlJpbmcgYnVmZmVyIHNpemUgKCMgb2YgcGFnZXMpIik7CkBA IC0zNjMsNiArMzY2LDcgQEAgc3RhdGljIGludCBuZXR2c2NfcHJvYmUoc3RydWN0IGh2X2Rldmlj ZSAqZGV2LAogCiAJU0VUX0VUSFRPT0xfT1BTKG5ldCwgJmV0aHRvb2xfb3BzKTsKIAlTRVRfTkVU REVWX0RFVihuZXQsICZkZXYtPmRldmljZSk7CisJbmV0aWZfc2V0X2dzb19tYXhfc2l6ZShuZXQs IE5FVFZTQ19HU09fTUFYX1NJWkUpOwogCiAJcmV0ID0gcmVnaXN0ZXJfbmV0ZGV2KG5ldCk7CiAJ aWYgKHJldCAhPSAwKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc2 MDZfY29yZS5jIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NjA2X2NvcmUuYwppbmRleCAy ZWUxODdmZDI2OGUuLjE5YWY2NjEwNDAzMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lp by9hZGMvYWQ3NjA2X2NvcmUuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc2MDZf Y29yZS5jCkBAIC0xODUsNyArMTg1LDcgQEAgc3RhdGljIHNzaXplX3QgYWQ3NjA2X3N0b3JlX292 ZXJzYW1wbGluZ19yYXRpbyhzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJbXV0ZXhfbG9jaygmaW5kaW9f ZGV2LT5tbG9jayk7CiAJZ3Bpb19zZXRfdmFsdWUoc3QtPnBkYXRhLT5ncGlvX29zMCwgKHJldCA+ PiAwKSAmIDEpOwogCWdwaW9fc2V0X3ZhbHVlKHN0LT5wZGF0YS0+Z3Bpb19vczEsIChyZXQgPj4g MSkgJiAxKTsKLQlncGlvX3NldF92YWx1ZShzdC0+cGRhdGEtPmdwaW9fb3MxLCAocmV0ID4+IDIp ICYgMSk7CisJZ3Bpb19zZXRfdmFsdWUoc3QtPnBkYXRhLT5ncGlvX29zMiwgKHJldCA+PiAyKSAm IDEpOwogCXN0LT5vdmVyc2FtcGxpbmcgPSBsdmFsOwogCW11dGV4X3VubG9jaygmaW5kaW9fZGV2 LT5tbG9jayk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy92bWUvYnJpZGdlcy92bWVf Y2E5MWN4NDIuYyBiL2RyaXZlcnMvc3RhZ2luZy92bWUvYnJpZGdlcy92bWVfY2E5MWN4NDIuYwpp bmRleCAwZTRmZWFjMTM4ZWIuLmVlMmUyZmQxMTA2ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFn aW5nL3ZtZS9icmlkZ2VzL3ZtZV9jYTkxY3g0Mi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy92bWUv YnJpZGdlcy92bWVfY2E5MWN4NDIuYwpAQCAtNDY2LDcgKzQ2Niw3IEBAIHN0YXRpYyBpbnQgY2E5 MWN4NDJfc2xhdmVfZ2V0KHN0cnVjdCB2bWVfc2xhdmVfcmVzb3VyY2UgKmltYWdlLCBpbnQgKmVu YWJsZWQsCiAJdm1lX2JvdW5kID0gaW9yZWFkMzIoYnJpZGdlLT5iYXNlICsgQ0E5MUNYNDJfVlNJ X0JEW2ldKTsKIAlwY2lfb2Zmc2V0ID0gaW9yZWFkMzIoYnJpZGdlLT5iYXNlICsgQ0E5MUNYNDJf VlNJX1RPW2ldKTsKIAotCSpwY2lfYmFzZSA9IChkbWFfYWRkcl90KXZtZV9iYXNlICsgcGNpX29m ZnNldDsKKwkqcGNpX2Jhc2UgPSAoZG1hX2FkZHJfdCkqdm1lX2Jhc2UgKyBwY2lfb2Zmc2V0Owog CSpzaXplID0gKHVuc2lnbmVkIGxvbmcgbG9uZykoKHZtZV9ib3VuZCAtICp2bWVfYmFzZSkgKyBn cmFudWxhcml0eSk7CiAKIAkqZW5hYmxlZCA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Rhcmdl dC9pc2NzaS9pc2NzaV90YXJnZXRfdHBnLmMgYi9kcml2ZXJzL3RhcmdldC9pc2NzaS9pc2NzaV90 YXJnZXRfdHBnLmMKaW5kZXggMzA5ZjE0Y2JmYzFjLi4zYWYzMjU1NGZkYTIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvdGFyZ2V0L2lzY3NpL2lzY3NpX3RhcmdldF90cGcuYworKysgYi9kcml2ZXJzL3Rh cmdldC9pc2NzaS9pc2NzaV90YXJnZXRfdHBnLmMKQEAgLTI1Myw3ICsyNTMsNiBAQCBlcnJfb3V0 OgogCQlpc2NzaV9yZWxlYXNlX3BhcmFtX2xpc3QodHBnLT5wYXJhbV9saXN0KTsKIAkJdHBnLT5w YXJhbV9saXN0ID0gTlVMTDsKIAl9Ci0Ja2ZyZWUodHBnKTsKIAlyZXR1cm4gLUVOT01FTTsKIH0K IApkaWZmIC0tZ2l0IGEvZHJpdmVycy90aGVybWFsL3RoZXJtYWxfc3lzLmMgYi9kcml2ZXJzL3Ro ZXJtYWwvdGhlcm1hbF9zeXMuYwppbmRleCBmNmZiMjkyMWJhMTEuLmQ5ZDI1MzNlZGQ2MyAxMDA2 NDQKLS0tIGEvZHJpdmVycy90aGVybWFsL3RoZXJtYWxfc3lzLmMKKysrIGIvZHJpdmVycy90aGVy bWFsL3RoZXJtYWxfc3lzLmMKQEAgLTQ4Niw3ICs0ODYsNyBAQCB0ZW1wX2NyaXRfc2hvdyhzdHJ1 Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogCWxvbmcgdGVt cGVyYXR1cmU7CiAJaW50IHJldDsKIAotCXJldCA9IHR6LT5vcHMtPmdldF90cmlwX3RlbXAodHos IDAsICZ0ZW1wZXJhdHVyZSk7CisJcmV0ID0gdHotPm9wcy0+Z2V0X2NyaXRfdGVtcCh0eiwgJnRl bXBlcmF0dXJlKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL3R0eS9uX2hkbGMuYyBiL2RyaXZlcnMvdHR5L25faGRsYy5jCmluZGV4IGNlYTU2MDMzYjM0 Yy4uYjJiMDk2YmViODcwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9uX2hkbGMuYworKysgYi9k cml2ZXJzL3R0eS9uX2hkbGMuYwpAQCAtMTE1LDcgKzExNSw3IEBACiAjZGVmaW5lIERFRkFVTFRf VFhfQlVGX0NPVU5UIDMKIAogc3RydWN0IG5faGRsY19idWYgewotCXN0cnVjdCBuX2hkbGNfYnVm ICpsaW5rOworCXN0cnVjdCBsaXN0X2hlYWQgIGxpc3RfaXRlbTsKIAlpbnQJCSAgY291bnQ7CiAJ Y2hhcgkJICBidWZbMV07CiB9OwpAQCAtMTIzLDggKzEyMyw3IEBAIHN0cnVjdCBuX2hkbGNfYnVm IHsKICNkZWZpbmUJTl9IRExDX0JVRl9TSVpFCShzaXplb2Yoc3RydWN0IG5faGRsY19idWYpICsg bWF4ZnJhbWUpCiAKIHN0cnVjdCBuX2hkbGNfYnVmX2xpc3QgewotCXN0cnVjdCBuX2hkbGNfYnVm ICpoZWFkOwotCXN0cnVjdCBuX2hkbGNfYnVmICp0YWlsOworCXN0cnVjdCBsaXN0X2hlYWQgIGxp c3Q7CiAJaW50CQkgIGNvdW50OwogCXNwaW5sb2NrX3QJICBzcGlubG9jazsKIH07CkBAIC0xMzcs NyArMTM2LDYgQEAgc3RydWN0IG5faGRsY19idWZfbGlzdCB7CiAgKiBAYmFja3VwX3R0eSAtIFRU WSB0byB1c2UgaWYgdHR5IGdldHMgY2xvc2VkCiAgKiBAdGJ1c3kgLSByZWVudHJhbmN5IGZsYWcg Zm9yIHR4IHdha2V1cCBjb2RlCiAgKiBAd29rZV91cCAtIEZJWE1FOiBkZXNjcmliZSB0aGlzIGZp ZWxkCi0gKiBAdGJ1ZiAtIGN1cnJlbnRseSB0cmFuc21pdHRpbmcgdHggYnVmZmVyCiAgKiBAdHhf YnVmX2xpc3QgLSBsaXN0IG9mIHBlbmRpbmcgdHJhbnNtaXQgZnJhbWUgYnVmZmVycwogICogQHJ4 X2J1Zl9saXN0IC0gbGlzdCBvZiByZWNlaXZlZCBmcmFtZSBidWZmZXJzCiAgKiBAdHhfZnJlZV9i dWZfbGlzdCAtIGxpc3QgdW51c2VkIHRyYW5zbWl0IGZyYW1lIGJ1ZmZlcnMKQEAgLTE1MCw3ICsx NDgsNiBAQCBzdHJ1Y3Qgbl9oZGxjIHsKIAlzdHJ1Y3QgdHR5X3N0cnVjdAkqYmFja3VwX3R0eTsK IAlpbnQJCQl0YnVzeTsKIAlpbnQJCQl3b2tlX3VwOwotCXN0cnVjdCBuX2hkbGNfYnVmCSp0YnVm OwogCXN0cnVjdCBuX2hkbGNfYnVmX2xpc3QJdHhfYnVmX2xpc3Q7CiAJc3RydWN0IG5faGRsY19i dWZfbGlzdAlyeF9idWZfbGlzdDsKIAlzdHJ1Y3Qgbl9oZGxjX2J1Zl9saXN0CXR4X2ZyZWVfYnVm X2xpc3Q7CkBAIC0xNjAsNyArMTU3LDggQEAgc3RydWN0IG5faGRsYyB7CiAvKgogICogSERMQyBi dWZmZXIgbGlzdCBtYW5pcHVsYXRpb24gZnVuY3Rpb25zCiAgKi8KLXN0YXRpYyB2b2lkIG5faGRs Y19idWZfbGlzdF9pbml0KHN0cnVjdCBuX2hkbGNfYnVmX2xpc3QgKmxpc3QpOworc3RhdGljIHZv aWQgbl9oZGxjX2J1Zl9yZXR1cm4oc3RydWN0IG5faGRsY19idWZfbGlzdCAqYnVmX2xpc3QsCisJ CQkJCQlzdHJ1Y3Qgbl9oZGxjX2J1ZiAqYnVmKTsKIHN0YXRpYyB2b2lkIG5faGRsY19idWZfcHV0 KHN0cnVjdCBuX2hkbGNfYnVmX2xpc3QgKmxpc3QsCiAJCQkgICBzdHJ1Y3Qgbl9oZGxjX2J1ZiAq YnVmKTsKIHN0YXRpYyBzdHJ1Y3Qgbl9oZGxjX2J1ZiAqbl9oZGxjX2J1Zl9nZXQoc3RydWN0IG5f aGRsY19idWZfbGlzdCAqbGlzdCk7CkBAIC0yMTAsMTYgKzIwOCw5IEBAIHN0YXRpYyB2b2lkIGZs dXNoX3R4X3F1ZXVlKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpCiB7CiAJc3RydWN0IG5faGRsYyAq bl9oZGxjID0gdHR5Mm5faGRsYyh0dHkpOwogCXN0cnVjdCBuX2hkbGNfYnVmICpidWY7Ci0JdW5z aWduZWQgbG9uZyBmbGFnczsKIAogCXdoaWxlICgoYnVmID0gbl9oZGxjX2J1Zl9nZXQoJm5faGRs Yy0+dHhfYnVmX2xpc3QpKSkKIAkJbl9oZGxjX2J1Zl9wdXQoJm5faGRsYy0+dHhfZnJlZV9idWZf bGlzdCwgYnVmKTsKLSAJc3Bpbl9sb2NrX2lycXNhdmUoJm5faGRsYy0+dHhfYnVmX2xpc3Quc3Bp bmxvY2ssIGZsYWdzKTsKLQlpZiAobl9oZGxjLT50YnVmKSB7Ci0JCW5faGRsY19idWZfcHV0KCZu X2hkbGMtPnR4X2ZyZWVfYnVmX2xpc3QsIG5faGRsYy0+dGJ1Zik7Ci0JCW5faGRsYy0+dGJ1ZiA9 IE5VTEw7Ci0JfQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm5faGRsYy0+dHhfYnVmX2xpc3Qu c3BpbmxvY2ssIGZsYWdzKTsKIH0KIAogc3RhdGljIHN0cnVjdCB0dHlfbGRpc2Nfb3BzIG5faGRs Y19sZGlzYyA9IHsKQEAgLTI4NSw3ICsyNzYsNiBAQCBzdGF0aWMgdm9pZCBuX2hkbGNfcmVsZWFz ZShzdHJ1Y3Qgbl9oZGxjICpuX2hkbGMpCiAJCX0gZWxzZQogCQkJYnJlYWs7CiAJfQotCWtmcmVl KG5faGRsYy0+dGJ1Zik7CiAJa2ZyZWUobl9oZGxjKTsKIAkKIH0JLyogZW5kIG9mIG5faGRsY19y ZWxlYXNlKCkgKi8KQEAgLTQwNCwxMyArMzk0LDcgQEAgc3RhdGljIHZvaWQgbl9oZGxjX3NlbmRf ZnJhbWVzKHN0cnVjdCBuX2hkbGMgKm5faGRsYywgc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSkKIAlu X2hkbGMtPndva2VfdXAgPSAwOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm5faGRsYy0+dHhf YnVmX2xpc3Quc3BpbmxvY2ssIGZsYWdzKTsKIAotCS8qIGdldCBjdXJyZW50IHRyYW5zbWl0IGJ1 ZmZlciBvciBnZXQgbmV3IHRyYW5zbWl0ICovCi0JLyogYnVmZmVyIGZyb20gbGlzdCBvZiBwZW5k aW5nIHRyYW5zbWl0IGJ1ZmZlcnMgKi8KLQkJCi0JdGJ1ZiA9IG5faGRsYy0+dGJ1ZjsKLQlpZiAo IXRidWYpCi0JCXRidWYgPSBuX2hkbGNfYnVmX2dldCgmbl9oZGxjLT50eF9idWZfbGlzdCk7Ci0J CQorCXRidWYgPSBuX2hkbGNfYnVmX2dldCgmbl9oZGxjLT50eF9idWZfbGlzdCk7CiAJd2hpbGUg KHRidWYpIHsKIAkJaWYgKGRlYnVnbGV2ZWwgPj0gREVCVUdfTEVWRUxfSU5GTykJCiAJCQlwcmlu dGsoIiVzKCVkKXNlbmRpbmcgZnJhbWUgJXAsIGNvdW50PSVkXG4iLApAQCAtNDIyLDcgKzQwNiw3 IEBAIHN0YXRpYyB2b2lkIG5faGRsY19zZW5kX2ZyYW1lcyhzdHJ1Y3Qgbl9oZGxjICpuX2hkbGMs IHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpCiAKIAkJLyogcm9sbGJhY2sgd2FzIHBvc3NpYmxlIGFu ZCBoYXMgYmVlbiBkb25lICovCiAJCWlmIChhY3R1YWwgPT0gLUVSRVNUQVJUU1lTKSB7Ci0JCQlu X2hkbGMtPnRidWYgPSB0YnVmOworCQkJbl9oZGxjX2J1Zl9yZXR1cm4oJm5faGRsYy0+dHhfYnVm X2xpc3QsIHRidWYpOwogCQkJYnJlYWs7CiAJCX0KIAkJLyogaWYgdHJhbnNtaXQgZXJyb3IsIHRo cm93IGZyYW1lIGF3YXkgYnkgKi8KQEAgLTQzNywxMCArNDIxLDcgQEAgc3RhdGljIHZvaWQgbl9o ZGxjX3NlbmRfZnJhbWVzKHN0cnVjdCBuX2hkbGMgKm5faGRsYywgc3RydWN0IHR0eV9zdHJ1Y3Qg KnR0eSkKIAkJCQkJCiAJCQkvKiBmcmVlIGN1cnJlbnQgdHJhbnNtaXQgYnVmZmVyICovCiAJCQlu X2hkbGNfYnVmX3B1dCgmbl9oZGxjLT50eF9mcmVlX2J1Zl9saXN0LCB0YnVmKTsKLQkJCQotCQkJ LyogdGhpcyB0eCBidWZmZXIgaXMgZG9uZSAqLwotCQkJbl9oZGxjLT50YnVmID0gTlVMTDsKLQkJ CQorCiAJCQkvKiB3YWl0IHVwIHNsZWVwaW5nIHdyaXRlcnMgKi8KIAkJCXdha2VfdXBfaW50ZXJy dXB0aWJsZSgmdHR5LT53cml0ZV93YWl0KTsKIAkKQEAgLTQ1MCwxMCArNDMxLDEyIEBAIHN0YXRp YyB2b2lkIG5faGRsY19zZW5kX2ZyYW1lcyhzdHJ1Y3Qgbl9oZGxjICpuX2hkbGMsIHN0cnVjdCB0 dHlfc3RydWN0ICp0dHkpCiAJCQlpZiAoZGVidWdsZXZlbCA+PSBERUJVR19MRVZFTF9JTkZPKQkK IAkJCQlwcmludGsoIiVzKCVkKWZyYW1lICVwIHBlbmRpbmdcbiIsCiAJCQkJCV9fRklMRV9fLF9f TElORV9fLHRidWYpOwotCQkJCQkKLQkJCS8qIGJ1ZmZlciBub3QgYWNjZXB0ZWQgYnkgZHJpdmVy ICovCi0JCQkvKiBzZXQgdGhpcyBidWZmZXIgYXMgcGVuZGluZyBidWZmZXIgKi8KLQkJCW5faGRs Yy0+dGJ1ZiA9IHRidWY7CisKKwkJCS8qCisJCQkgKiB0aGUgYnVmZmVyIHdhcyBub3QgYWNjZXB0 ZWQgYnkgZHJpdmVyLAorCQkJICogcmV0dXJuIGl0IGJhY2sgaW50byB0eCBxdWV1ZQorCQkJICov CisJCQluX2hkbGNfYnVmX3JldHVybigmbl9oZGxjLT50eF9idWZfbGlzdCwgdGJ1Zik7CiAJCQli cmVhazsKIAkJfQogCX0KQEAgLTc1MSw3ICs3MzQsOCBAQCBzdGF0aWMgaW50IG5faGRsY190dHlf aW9jdGwoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKmZpbGUsCiAJaW50IGVy cm9yID0gMDsKIAlpbnQgY291bnQ7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKLQkKKwlzdHJ1Y3Qg bl9oZGxjX2J1ZiAqYnVmID0gTlVMTDsKKwogCWlmIChkZWJ1Z2xldmVsID49IERFQlVHX0xFVkVM X0lORk8pCQogCQlwcmludGsoIiVzKCVkKW5faGRsY190dHlfaW9jdGwoKSBjYWxsZWQgJWRcbiIs CiAJCQlfX0ZJTEVfXyxfX0xJTkVfXyxjbWQpOwpAQCAtNzY1LDggKzc0OSwxMCBAQCBzdGF0aWMg aW50IG5faGRsY190dHlfaW9jdGwoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUg KmZpbGUsCiAJCS8qIHJlcG9ydCBjb3VudCBvZiByZWFkIGRhdGEgYXZhaWxhYmxlICovCiAJCS8q IGluIG5leHQgYXZhaWxhYmxlIGZyYW1lIChpZiBhbnkpICovCiAJCXNwaW5fbG9ja19pcnFzYXZl KCZuX2hkbGMtPnJ4X2J1Zl9saXN0LnNwaW5sb2NrLGZsYWdzKTsKLQkJaWYgKG5faGRsYy0+cnhf YnVmX2xpc3QuaGVhZCkKLQkJCWNvdW50ID0gbl9oZGxjLT5yeF9idWZfbGlzdC5oZWFkLT5jb3Vu dDsKKwkJYnVmID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZuX2hkbGMtPnJ4X2J1Zl9saXN0 Lmxpc3QsCisJCQkJCQlzdHJ1Y3Qgbl9oZGxjX2J1ZiwgbGlzdF9pdGVtKTsKKwkJaWYgKGJ1ZikK KwkJCWNvdW50ID0gYnVmLT5jb3VudDsKIAkJZWxzZQogCQkJY291bnQgPSAwOwogCQlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZuX2hkbGMtPnJ4X2J1Zl9saXN0LnNwaW5sb2NrLGZsYWdzKTsKQEAg LTc3OCw4ICs3NjQsMTAgQEAgc3RhdGljIGludCBuX2hkbGNfdHR5X2lvY3RsKHN0cnVjdCB0dHlf c3RydWN0ICp0dHksIHN0cnVjdCBmaWxlICpmaWxlLAogCQljb3VudCA9IHR0eV9jaGFyc19pbl9i dWZmZXIodHR5KTsKIAkJLyogYWRkIHNpemUgb2YgbmV4dCBvdXRwdXQgZnJhbWUgaW4gcXVldWUg Ki8KIAkJc3Bpbl9sb2NrX2lycXNhdmUoJm5faGRsYy0+dHhfYnVmX2xpc3Quc3BpbmxvY2ssZmxh Z3MpOwotCQlpZiAobl9oZGxjLT50eF9idWZfbGlzdC5oZWFkKQotCQkJY291bnQgKz0gbl9oZGxj LT50eF9idWZfbGlzdC5oZWFkLT5jb3VudDsKKwkJYnVmID0gbGlzdF9maXJzdF9lbnRyeV9vcl9u dWxsKCZuX2hkbGMtPnR4X2J1Zl9saXN0Lmxpc3QsCisJCQkJCQlzdHJ1Y3Qgbl9oZGxjX2J1Ziwg bGlzdF9pdGVtKTsKKwkJaWYgKGJ1ZikKKwkJCWNvdW50ICs9IGJ1Zi0+Y291bnQ7CiAJCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJm5faGRsYy0+dHhfYnVmX2xpc3Quc3BpbmxvY2ssZmxhZ3MpOwog CQllcnJvciA9IHB1dF91c2VyKGNvdW50LCAoaW50IF9fdXNlciAqKWFyZyk7CiAJCWJyZWFrOwpA QCAtODI3LDE0ICs4MTUsMTQgQEAgc3RhdGljIHVuc2lnbmVkIGludCBuX2hkbGNfdHR5X3BvbGwo c3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKmZpbHAsCiAJCXBvbGxfd2FpdChm aWxwLCAmdHR5LT53cml0ZV93YWl0LCB3YWl0KTsKIAogCQkvKiBzZXQgYml0cyBmb3Igb3BlcmF0 aW9ucyB0aGF0IHdvbid0IGJsb2NrICovCi0JCWlmIChuX2hkbGMtPnJ4X2J1Zl9saXN0LmhlYWQp CisJCWlmICghbGlzdF9lbXB0eSgmbl9oZGxjLT5yeF9idWZfbGlzdC5saXN0KSkKIAkJCW1hc2sg fD0gUE9MTElOIHwgUE9MTFJETk9STTsJLyogcmVhZGFibGUgKi8KIAkJaWYgKHRlc3RfYml0KFRU WV9PVEhFUl9DTE9TRUQsICZ0dHktPmZsYWdzKSkKIAkJCW1hc2sgfD0gUE9MTEhVUDsKIAkJaWYg KHR0eV9odW5nX3VwX3AoZmlscCkpCiAJCQltYXNrIHw9IFBPTExIVVA7CiAJCWlmICghdHR5X2lz X3dyaXRlbG9ja2VkKHR0eSkgJiYKLQkJCQluX2hkbGMtPnR4X2ZyZWVfYnVmX2xpc3QuaGVhZCkK KwkJCQkhbGlzdF9lbXB0eSgmbl9oZGxjLT50eF9mcmVlX2J1Zl9saXN0Lmxpc3QpKQogCQkJbWFz ayB8PSBQT0xMT1VUIHwgUE9MTFdSTk9STTsJLyogd3JpdGFibGUgKi8KIAl9CiAJcmV0dXJuIG1h c2s7CkBAIC04NTYsMTEgKzg0NCwxNiBAQCBzdGF0aWMgc3RydWN0IG5faGRsYyAqbl9oZGxjX2Fs bG9jKHZvaWQpCiAKIAltZW1zZXQobl9oZGxjLCAwLCBzaXplb2YoKm5faGRsYykpOwogCi0Jbl9o ZGxjX2J1Zl9saXN0X2luaXQoJm5faGRsYy0+cnhfZnJlZV9idWZfbGlzdCk7Ci0Jbl9oZGxjX2J1 Zl9saXN0X2luaXQoJm5faGRsYy0+dHhfZnJlZV9idWZfbGlzdCk7Ci0Jbl9oZGxjX2J1Zl9saXN0 X2luaXQoJm5faGRsYy0+cnhfYnVmX2xpc3QpOwotCW5faGRsY19idWZfbGlzdF9pbml0KCZuX2hk bGMtPnR4X2J1Zl9saXN0KTsKLQkKKwlzcGluX2xvY2tfaW5pdCgmbl9oZGxjLT5yeF9mcmVlX2J1 Zl9saXN0LnNwaW5sb2NrKTsKKwlzcGluX2xvY2tfaW5pdCgmbl9oZGxjLT50eF9mcmVlX2J1Zl9s aXN0LnNwaW5sb2NrKTsKKwlzcGluX2xvY2tfaW5pdCgmbl9oZGxjLT5yeF9idWZfbGlzdC5zcGlu bG9jayk7CisJc3Bpbl9sb2NrX2luaXQoJm5faGRsYy0+dHhfYnVmX2xpc3Quc3BpbmxvY2spOwor CisJSU5JVF9MSVNUX0hFQUQoJm5faGRsYy0+cnhfZnJlZV9idWZfbGlzdC5saXN0KTsKKwlJTklU X0xJU1RfSEVBRCgmbl9oZGxjLT50eF9mcmVlX2J1Zl9saXN0Lmxpc3QpOworCUlOSVRfTElTVF9I RUFEKCZuX2hkbGMtPnJ4X2J1Zl9saXN0Lmxpc3QpOworCUlOSVRfTElTVF9IRUFEKCZuX2hkbGMt PnR4X2J1Zl9saXN0Lmxpc3QpOworCiAJLyogYWxsb2NhdGUgZnJlZSByeCBidWZmZXIgbGlzdCAq LwogCWZvcihpPTA7aTxERUZBVUxUX1JYX0JVRl9DT1VOVDtpKyspIHsKIAkJYnVmID0ga21hbGxv YyhOX0hETENfQlVGX1NJWkUsIEdGUF9LRVJORUwpOwpAQCAtODg4LDYzICs4ODEsNjUgQEAgc3Rh dGljIHN0cnVjdCBuX2hkbGMgKm5faGRsY19hbGxvYyh2b2lkKQogfQkvKiBlbmQgb2Ygbl9oZGxj X2FsbG9jKCkgKi8KIAogLyoqCi0gKiBuX2hkbGNfYnVmX2xpc3RfaW5pdCAtIGluaXRpYWxpemUg c3BlY2lmaWVkIEhETEMgYnVmZmVyIGxpc3QKLSAqIEBsaXN0IC0gcG9pbnRlciB0byBidWZmZXIg bGlzdAorICogbl9oZGxjX2J1Zl9yZXR1cm4gLSBwdXQgdGhlIEhETEMgYnVmZmVyIGFmdGVyIHRo ZSBoZWFkIG9mIHRoZSBzcGVjaWZpZWQgbGlzdAorICogQGJ1Zl9saXN0IC0gcG9pbnRlciB0byB0 aGUgYnVmZmVyIGxpc3QKKyAqIEBidWYgLSBwb2ludGVyIHRvIHRoZSBidWZmZXIKICAqLwotc3Rh dGljIHZvaWQgbl9oZGxjX2J1Zl9saXN0X2luaXQoc3RydWN0IG5faGRsY19idWZfbGlzdCAqbGlz dCkKK3N0YXRpYyB2b2lkIG5faGRsY19idWZfcmV0dXJuKHN0cnVjdCBuX2hkbGNfYnVmX2xpc3Qg KmJ1Zl9saXN0LAorCQkJCQkJc3RydWN0IG5faGRsY19idWYgKmJ1ZikKIHsKLQltZW1zZXQobGlz dCwgMCwgc2l6ZW9mKCpsaXN0KSk7Ci0Jc3Bpbl9sb2NrX2luaXQoJmxpc3QtPnNwaW5sb2NrKTsK LX0JLyogZW5kIG9mIG5faGRsY19idWZfbGlzdF9pbml0KCkgKi8KKwl1bnNpZ25lZCBsb25nIGZs YWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmJ1Zl9saXN0LT5zcGlubG9jaywgZmxhZ3MpOwor CisJbGlzdF9hZGQoJmJ1Zi0+bGlzdF9pdGVtLCAmYnVmX2xpc3QtPmxpc3QpOworCWJ1Zl9saXN0 LT5jb3VudCsrOworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYnVmX2xpc3QtPnNwaW5sb2Nr LCBmbGFncyk7Cit9CiAKIC8qKgogICogbl9oZGxjX2J1Zl9wdXQgLSBhZGQgc3BlY2lmaWVkIEhE TEMgYnVmZmVyIHRvIHRhaWwgb2Ygc3BlY2lmaWVkIGxpc3QKLSAqIEBsaXN0IC0gcG9pbnRlciB0 byBidWZmZXIgbGlzdAorICogQGJ1Zl9saXN0IC0gcG9pbnRlciB0byBidWZmZXIgbGlzdAogICog QGJ1ZgktIHBvaW50ZXIgdG8gYnVmZmVyCiAgKi8KLXN0YXRpYyB2b2lkIG5faGRsY19idWZfcHV0 KHN0cnVjdCBuX2hkbGNfYnVmX2xpc3QgKmxpc3QsCitzdGF0aWMgdm9pZCBuX2hkbGNfYnVmX3B1 dChzdHJ1Y3Qgbl9oZGxjX2J1Zl9saXN0ICpidWZfbGlzdCwKIAkJCSAgIHN0cnVjdCBuX2hkbGNf YnVmICpidWYpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKLQlzcGluX2xvY2tfaXJxc2F2ZSgm bGlzdC0+c3BpbmxvY2ssZmxhZ3MpOwotCQotCWJ1Zi0+bGluaz1OVUxMOwotCWlmIChsaXN0LT50 YWlsKQotCQlsaXN0LT50YWlsLT5saW5rID0gYnVmOwotCWVsc2UKLQkJbGlzdC0+aGVhZCA9IGJ1 ZjsKLQlsaXN0LT50YWlsID0gYnVmOwotCShsaXN0LT5jb3VudCkrKzsKLQkKLQlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZsaXN0LT5zcGlubG9jayxmbGFncyk7Ci0JCisKKwlzcGluX2xvY2tfaXJx c2F2ZSgmYnVmX2xpc3QtPnNwaW5sb2NrLCBmbGFncyk7CisKKwlsaXN0X2FkZF90YWlsKCZidWYt Pmxpc3RfaXRlbSwgJmJ1Zl9saXN0LT5saXN0KTsKKwlidWZfbGlzdC0+Y291bnQrKzsKKworCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJmJ1Zl9saXN0LT5zcGlubG9jaywgZmxhZ3MpOwogfQkvKiBl bmQgb2Ygbl9oZGxjX2J1Zl9wdXQoKSAqLwogCiAvKioKICAqIG5faGRsY19idWZfZ2V0IC0gcmVt b3ZlIGFuZCByZXR1cm4gYW4gSERMQyBidWZmZXIgZnJvbSBsaXN0Ci0gKiBAbGlzdCAtIHBvaW50 ZXIgdG8gSERMQyBidWZmZXIgbGlzdAorICogQGJ1Zl9saXN0IC0gcG9pbnRlciB0byBIRExDIGJ1 ZmZlciBsaXN0CiAgKiAKICAqIFJlbW92ZSBhbmQgcmV0dXJuIGFuIEhETEMgYnVmZmVyIGZyb20g dGhlIGhlYWQgb2YgdGhlIHNwZWNpZmllZCBIRExDIGJ1ZmZlcgogICogbGlzdC4KICAqIFJldHVy bnMgYSBwb2ludGVyIHRvIEhETEMgYnVmZmVyIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlICVOVUxM LgogICovCi1zdGF0aWMgc3RydWN0IG5faGRsY19idWYqIG5faGRsY19idWZfZ2V0KHN0cnVjdCBu X2hkbGNfYnVmX2xpc3QgKmxpc3QpCitzdGF0aWMgc3RydWN0IG5faGRsY19idWYgKm5faGRsY19i dWZfZ2V0KHN0cnVjdCBuX2hkbGNfYnVmX2xpc3QgKmJ1Zl9saXN0KQogewogCXVuc2lnbmVkIGxv bmcgZmxhZ3M7CiAJc3RydWN0IG5faGRsY19idWYgKmJ1ZjsKLQlzcGluX2xvY2tfaXJxc2F2ZSgm bGlzdC0+c3BpbmxvY2ssZmxhZ3MpOwotCQotCWJ1ZiA9IGxpc3QtPmhlYWQ7CisKKwlzcGluX2xv Y2tfaXJxc2F2ZSgmYnVmX2xpc3QtPnNwaW5sb2NrLCBmbGFncyk7CisKKwlidWYgPSBsaXN0X2Zp cnN0X2VudHJ5X29yX251bGwoJmJ1Zl9saXN0LT5saXN0LAorCQkJCQkJc3RydWN0IG5faGRsY19i dWYsIGxpc3RfaXRlbSk7CiAJaWYgKGJ1ZikgewotCQlsaXN0LT5oZWFkID0gYnVmLT5saW5rOwot CQkobGlzdC0+Y291bnQpLS07CisJCWxpc3RfZGVsKCZidWYtPmxpc3RfaXRlbSk7CisJCWJ1Zl9s aXN0LT5jb3VudC0tOwogCX0KLQlpZiAoIWxpc3QtPmhlYWQpCi0JCWxpc3QtPnRhaWwgPSBOVUxM OwotCQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmxpc3QtPnNwaW5sb2NrLGZsYWdzKTsKKwor CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmJ1Zl9saXN0LT5zcGlubG9jaywgZmxhZ3MpOwogCXJl dHVybiBidWY7Ci0JCiB9CS8qIGVuZCBvZiBuX2hkbGNfYnVmX2dldCgpICovCiAKIHN0YXRpYyBj aGFyIGhkbGNfYmFubmVyW10gX19pbml0ZGF0YSA9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9z eXNycS5jIGIvZHJpdmVycy90dHkvc3lzcnEuYwppbmRleCA0M2RiNzE1ZjE1MDIuLjUzZDQzYzA2 YWI4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvc3lzcnEuYworKysgYi9kcml2ZXJzL3R0eS9z eXNycS5jCkBAIC03NjMsOCArNzYzLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnB1dF9kZXZp Y2VfaWQgc3lzcnFfaWRzW10gPSB7CiAJewogCQkuZmxhZ3MgPSBJTlBVVF9ERVZJQ0VfSURfTUFU Q0hfRVZCSVQgfAogCQkJCUlOUFVUX0RFVklDRV9JRF9NQVRDSF9LRVlCSVQsCi0JCS5ldmJpdCA9 IHsgQklUX01BU0soRVZfS0VZKSB9LAotCQkua2V5Yml0ID0geyBCSVRfTUFTSyhLRVlfTEVGVEFM VCkgfSwKKwkJLmV2Yml0ID0geyBbQklUX1dPUkQoRVZfS0VZKV0gPSBCSVRfTUFTSyhFVl9LRVkp IH0sCisJCS5rZXliaXQgPSB7IFtCSVRfV09SRChLRVlfTEVGVEFMVCldID0gQklUX01BU0soS0VZ X0xFRlRBTFQpIH0sCiAJfSwKIAl7IH0sCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2xh c3MvY2RjLWFjbS5jIGIvZHJpdmVycy91c2IvY2xhc3MvY2RjLWFjbS5jCmluZGV4IGExYjM4NGVj YWJiYS4uOTMyNDlhYTRiYjE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jbGFzcy9jZGMtYWNt LmMKKysrIGIvZHJpdmVycy91c2IvY2xhc3MvY2RjLWFjbS5jCkBAIC0xNTQxLDYgKzE1NDEsNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgYWNtX2lkc1tdID0gewogCS5kcml2 ZXJfaW5mbyA9IE5PX1VOSU9OX05PUk1BTCwgLyogaGFzIG5vIHVuaW9uIGRlc2NyaXB0b3IgKi8K IAl9LAogCXsgVVNCX0RFVklDRSgweDIxODQsIDB4MDAxYykgfSwJLyogR1cgSW5zdGVrIEFGRy0y MjI1ICovCisJeyBVU0JfREVWSUNFKDB4MjE4NCwgMHgwMDM2KSB9LAkvKiBHVyBJbnN0ZWsgQUZH LTEyNSAqLwogCXsgVVNCX0RFVklDRSgweDIyYjgsIDB4NjQyNSksIC8qIE1vdG9yb2xhIE1PVE9N QUdYIHBob25lcyAqLwogCX0sCiAJLyogTW90b3JvbGEgSDI0IEhTUEEgbW9kdWxlOiAqLwpkaWZm IC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9jb25maWcuYyBiL2RyaXZlcnMvdXNiL2NvcmUvY29u ZmlnLmMKaW5kZXggNWEyOGExNGZmYTFiLi40M2YwYzEzYjBlODEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvdXNiL2NvcmUvY29uZmlnLmMKKysrIGIvZHJpdmVycy91c2IvY29yZS9jb25maWcuYwpAQCAt MjA3LDYgKzIwNywxNiBAQCBzdGF0aWMgaW50IHVzYl9wYXJzZV9lbmRwb2ludChzdHJ1Y3QgZGV2 aWNlICpkZGV2LCBpbnQgY2Znbm8sIGludCBpbnVtLAogCWlmIChpZnAtPmRlc2MuYk51bUVuZHBv aW50cyA+PSBudW1fZXApCiAJCWdvdG8gc2tpcF90b19uZXh0X2VuZHBvaW50X29yX2ludGVyZmFj ZV9kZXNjcmlwdG9yOwogCisJLyogQ2hlY2sgZm9yIGR1cGxpY2F0ZSBlbmRwb2ludCBhZGRyZXNz ZXMgKi8KKwlmb3IgKGkgPSAwOyBpIDwgaWZwLT5kZXNjLmJOdW1FbmRwb2ludHM7ICsraSkgewor CQlpZiAoaWZwLT5lbmRwb2ludFtpXS5kZXNjLmJFbmRwb2ludEFkZHJlc3MgPT0KKwkJICAgIGQt PmJFbmRwb2ludEFkZHJlc3MpIHsKKwkJCWRldl93YXJuKGRkZXYsICJjb25maWcgJWQgaW50ZXJm YWNlICVkIGFsdHNldHRpbmcgJWQgaGFzIGEgZHVwbGljYXRlIGVuZHBvaW50IHdpdGggYWRkcmVz cyAweCVYLCBza2lwcGluZ1xuIiwKKwkJCSAgICBjZmdubywgaW51bSwgYXNudW0sIGQtPmJFbmRw b2ludEFkZHJlc3MpOworCQkJZ290byBza2lwX3RvX25leHRfZW5kcG9pbnRfb3JfaW50ZXJmYWNl X2Rlc2NyaXB0b3I7CisJCX0KKwl9CisKIAllbmRwb2ludCA9ICZpZnAtPmVuZHBvaW50W2lmcC0+ ZGVzYy5iTnVtRW5kcG9pbnRzXTsKIAkrK2lmcC0+ZGVzYy5iTnVtRW5kcG9pbnRzOwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL3F1aXJrcy5jIGIvZHJpdmVycy91c2IvY29yZS9xdWly a3MuYwppbmRleCAxMzUzMzI2ZjI2ZjIuLjg2Y2QwNzgyNTAwZCAxMDA2NDQKLS0tIGEvZHJpdmVy cy91c2IvY29yZS9xdWlya3MuYworKysgYi9kcml2ZXJzL3VzYi9jb3JlL3F1aXJrcy5jCkBAIC0z Niw2ICszNiwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgdXNiX3F1aXJr X2xpc3RbXSA9IHsKIAkvKiBDQk0gLSBGbGFzaCBkaXNrICovCiAJeyBVU0JfREVWSUNFKDB4MDIw NCwgMHg2MDI1KSwgLmRyaXZlcl9pbmZvID0gVVNCX1FVSVJLX1JFU0VUX1JFU1VNRSB9LAogCisJ LyogV09STERFIGVhc3kga2V5IChlYXN5a2V5LjI1KSBNSURJIGNvbnRyb2xsZXIgICovCisJeyBV U0JfREVWSUNFKDB4MDIxOCwgMHgwNDAxKSwgLmRyaXZlcl9pbmZvID0KKwkJCVVTQl9RVUlSS19D T05GSUdfSU5URl9TVFJJTkdTIH0sCisKIAkvKiBIUCA1MzAwLzUzNzBDIHNjYW5uZXIgKi8KIAl7 IFVTQl9ERVZJQ0UoMHgwM2YwLCAweDA3MDEpLCAuZHJpdmVyX2luZm8gPQogCQkJVVNCX1FVSVJL X1NUUklOR19GRVRDSF8yNTUgfSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9jb21w b3NpdGUuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9jb21wb3NpdGUuYwppbmRleCA0NDg0ZWYxYTAw ZWIuLmFkMDNjNmQwZjZjZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2NvbXBvc2l0 ZS5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9jb21wb3NpdGUuYwpAQCAtMTU2LDcgKzE1Niw3 IEBAIGludCBjb25maWdfZXBfYnlfc3BlZWQoc3RydWN0IHVzYl9nYWRnZXQgKmcsCiAKIGVwX2Zv dW5kOgogCS8qIGNvbW1pdCByZXN1bHRzICovCi0JX2VwLT5tYXhwYWNrZXQgPSB1c2JfZW5kcG9p bnRfbWF4cChjaG9zZW5fZGVzYyk7CisJX2VwLT5tYXhwYWNrZXQgPSB1c2JfZW5kcG9pbnRfbWF4 cChjaG9zZW5fZGVzYykgJiAweDdmZjsKIAlfZXAtPmRlc2MgPSBjaG9zZW5fZGVzYzsKIAlfZXAt PmNvbXBfZGVzYyA9IE5VTEw7CiAJX2VwLT5tYXhidXJzdCA9IDA7CkBAIC0xMTI2LDkgKzExMjYs NyBAQCBjb21wb3NpdGVfc2V0dXAoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCwgY29uc3Qgc3Ry dWN0IHVzYl9jdHJscmVxdWVzdCAqY3RybCkKIAkJdmFsdWUgPSBtaW4od19sZW5ndGgsICh1MTYp IDEpOwogCQlicmVhazsKIAotCS8qIGZ1bmN0aW9uIGRyaXZlcnMgbXVzdCBoYW5kbGUgZ2V0L3Nl dCBhbHRzZXR0aW5nOyBpZiB0aGVyZSdzCi0JICogbm8gZ2V0KCkgbWV0aG9kLCB3ZSBrbm93IG9u bHkgYWx0c2V0dGluZyB6ZXJvIHdvcmtzLgotCSAqLworCS8qIGZ1bmN0aW9uIGRyaXZlcnMgbXVz dCBoYW5kbGUgZ2V0L3NldCBhbHRzZXR0aW5nICovCiAJY2FzZSBVU0JfUkVRX1NFVF9JTlRFUkZB Q0U6CiAJCWlmIChjdHJsLT5iUmVxdWVzdFR5cGUgIT0gVVNCX1JFQ0lQX0lOVEVSRkFDRSkKIAkJ CWdvdG8gdW5rbm93bjsKQEAgLTExMzcsNyArMTEzNSwxMyBAQCBjb21wb3NpdGVfc2V0dXAoc3Ry dWN0IHVzYl9nYWRnZXQgKmdhZGdldCwgY29uc3Qgc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqY3Ry bCkKIAkJZiA9IGNkZXYtPmNvbmZpZy0+aW50ZXJmYWNlW2ludGZdOwogCQlpZiAoIWYpCiAJCQli cmVhazsKLQkJaWYgKHdfdmFsdWUgJiYgIWYtPnNldF9hbHQpCisKKwkJLyoKKwkJICogSWYgdGhl cmUncyBubyBnZXRfYWx0KCkgbWV0aG9kLCB3ZSBrbm93IG9ubHkgYWx0c2V0dGluZyB6ZXJvCisJ CSAqIHdvcmtzLiBUaGVyZSBpcyBubyBuZWVkIHRvIGNoZWNrIGlmIHNldF9hbHQoKSBpcyBub3Qg TlVMTAorCQkgKiBhcyB3ZSBjaGVjayB0aGlzIGluIHVzYl9hZGRfZnVuY3Rpb24oKS4KKwkJICov CisJCWlmICh3X3ZhbHVlICYmICFmLT5nZXRfYWx0KQogCQkJYnJlYWs7CiAJCXZhbHVlID0gZi0+ c2V0X2FsdChmLCB3X2luZGV4LCB3X3ZhbHVlKTsKIAkJaWYgKHZhbHVlID09IFVTQl9HQURHRVRf REVMQVlFRF9TVEFUVVMpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9kdW1teV9o Y2QuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9kdW1teV9oY2QuYwppbmRleCBjNzQyM2E3ZWM4ZjEu LjhlMGExYmQ5MmE1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2R1bW15X2hjZC5j CisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9kdW1teV9oY2QuYwpAQCAtMjYxLDcgKzI2MSw3IEBA IHN0YXRpYyB2b2lkIG51a2UgKHN0cnVjdCBkdW1teSAqZHVtLCBzdHJ1Y3QgZHVtbXlfZXAgKmVw KQogc3RhdGljIHZvaWQKIHN0b3BfYWN0aXZpdHkgKHN0cnVjdCBkdW1teSAqZHVtKQogewotCXN0 cnVjdCBkdW1teV9lcAkqZXA7CisJaW50IGk7CiAKIAkvKiBwcmV2ZW50IGFueSBtb3JlIHJlcXVl c3RzICovCiAJZHVtLT5hZGRyZXNzID0gMDsKQEAgLTI2OSw4ICsyNjksOCBAQCBzdG9wX2FjdGl2 aXR5IChzdHJ1Y3QgZHVtbXkgKmR1bSkKIAkvKiBUaGUgdGltZXIgaXMgbGVmdCBydW5uaW5nIHNv IHRoYXQgb3V0c3RhbmRpbmcgVVJCcyBjYW4gZmFpbCAqLwogCiAJLyogbnVrZSBhbnkgcGVuZGlu ZyByZXF1ZXN0cyBmaXJzdCwgc28gZHJpdmVyIGkvbyBpcyBxdWllc2NlZCAqLwotCWxpc3RfZm9y X2VhY2hfZW50cnkgKGVwLCAmZHVtLT5nYWRnZXQuZXBfbGlzdCwgZXAuZXBfbGlzdCkKLQkJbnVr ZSAoZHVtLCBlcCk7CisJZm9yIChpID0gMDsgaSA8IERVTU1ZX0VORFBPSU5UUzsgKytpKQorCQlu dWtlKGR1bSwgJmR1bS0+ZXBbaV0pOwogCiAJLyogZHJpdmVyIG5vdyBkb2VzIGFueSBub24tdXNi IHF1aWVzY2luZyBuZWNlc3NhcnkgKi8KIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdl dC9pbm9kZS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2lub2RlLmMKaW5kZXggY2U3MjUzYmZhYTk1 Li4yODdjNmFiNTA1ZDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9pbm9kZS5jCisr KyBiL2RyaXZlcnMvdXNiL2dhZGdldC9pbm9kZS5jCkBAIC0xMTk2LDcgKzExOTYsNyBAQCBlcDBf d3JpdGUgKHN0cnVjdCBmaWxlICpmZCwgY29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGxl biwgbG9mZl90ICpwdHIpCiAJLyogZGF0YSBhbmQvb3Igc3RhdHVzIHN0YWdlIGZvciBjb250cm9s IHJlcXVlc3QgKi8KIAl9IGVsc2UgaWYgKGRldi0+c3RhdGUgPT0gU1RBVEVfREVWX1NFVFVQKSB7 CiAKLQkJLyogSU4gREFUQStTVEFUVVMgY2FsbGVyIG1ha2VzIGxlbiA8PSB3TGVuZ3RoICovCisJ CWxlbiA9IG1pbl90KHNpemVfdCwgbGVuLCBkZXYtPnNldHVwX3dMZW5ndGgpOwogCQlpZiAoZGV2 LT5zZXR1cF9pbikgewogCQkJcmV0dmFsID0gc2V0dXBfcmVxIChkZXYtPmdhZGdldC0+ZXAwLCBk ZXYtPnJlcSwgbGVuKTsKIAkJCWlmIChyZXR2YWwgPT0gMCkgewpAQCAtMTg0MSwxMCArMTg0MSwx MiBAQCBzdGF0aWMgc3RydWN0IHVzYl9nYWRnZXRfZHJpdmVyIHByb2JlX2RyaXZlciA9IHsKICAq IHN1Y2ggYXMgY29uZmlndXJhdGlvbiBub3RpZmljYXRpb25zLgogICovCiAKLXN0YXRpYyBpbnQg aXNfdmFsaWRfY29uZmlnIChzdHJ1Y3QgdXNiX2NvbmZpZ19kZXNjcmlwdG9yICpjb25maWcpCitz dGF0aWMgaW50IGlzX3ZhbGlkX2NvbmZpZyhzdHJ1Y3QgdXNiX2NvbmZpZ19kZXNjcmlwdG9yICpj b25maWcsCisJCXVuc2lnbmVkIGludCB0b3RhbCkKIHsKIAlyZXR1cm4gY29uZmlnLT5iRGVzY3Jp cHRvclR5cGUgPT0gVVNCX0RUX0NPTkZJRwogCQkmJiBjb25maWctPmJMZW5ndGggPT0gVVNCX0RU X0NPTkZJR19TSVpFCisJCSYmIHRvdGFsID49IFVTQl9EVF9DT05GSUdfU0laRQogCQkmJiBjb25m aWctPmJDb25maWd1cmF0aW9uVmFsdWUgIT0gMAogCQkmJiAoY29uZmlnLT5ibUF0dHJpYnV0ZXMg JiBVU0JfQ09ORklHX0FUVF9PTkUpICE9IDAKIAkJJiYgKGNvbmZpZy0+Ym1BdHRyaWJ1dGVzICYg VVNCX0NPTkZJR19BVFRfV0FLRVVQKSA9PSAwOwpAQCAtMTg2MSw3ICsxODYzLDggQEAgZGV2X2Nv bmZpZyAoc3RydWN0IGZpbGUgKmZkLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbGVu LCBsb2ZmX3QgKnB0cikKIAl1MzIJCQl0YWc7CiAJY2hhcgkJCSprYnVmOwogCi0JaWYgKGxlbiA8 IChVU0JfRFRfQ09ORklHX1NJWkUgKyBVU0JfRFRfREVWSUNFX1NJWkUgKyA0KSkKKwlpZiAoKGxl biA8IChVU0JfRFRfQ09ORklHX1NJWkUgKyBVU0JfRFRfREVWSUNFX1NJWkUgKyA0KSkgfHwKKwkg ICAgKGxlbiA+IFBBR0VfU0laRSAqIDQpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCS8qIHdlIG1p Z2h0IG5lZWQgdG8gY2hhbmdlIG1lc3NhZ2UgZm9ybWF0IHNvbWVkYXkgKi8KQEAgLTE4ODUsNyAr MTg4OCw4IEBAIGRldl9jb25maWcgKHN0cnVjdCBmaWxlICpmZCwgY29uc3QgY2hhciBfX3VzZXIg KmJ1Ziwgc2l6ZV90IGxlbiwgbG9mZl90ICpwdHIpCiAJLyogZnVsbCBvciBsb3cgc3BlZWQgY29u ZmlnICovCiAJZGV2LT5jb25maWcgPSAodm9pZCAqKSBrYnVmOwogCXRvdGFsID0gbGUxNl90b19j cHUoZGV2LT5jb25maWctPndUb3RhbExlbmd0aCk7Ci0JaWYgKCFpc192YWxpZF9jb25maWcgKGRl di0+Y29uZmlnKSB8fCB0b3RhbCA+PSBsZW5ndGgpCisJaWYgKCFpc192YWxpZF9jb25maWcoZGV2 LT5jb25maWcsIHRvdGFsKSB8fAorCQkJdG90YWwgPiBsZW5ndGggLSBVU0JfRFRfREVWSUNFX1NJ WkUpCiAJCWdvdG8gZmFpbDsKIAlrYnVmICs9IHRvdGFsOwogCWxlbmd0aCAtPSB0b3RhbDsKQEAg LTE4OTQsMTAgKzE4OTgsMTMgQEAgZGV2X2NvbmZpZyAoc3RydWN0IGZpbGUgKmZkLCBjb25zdCBj aGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbGVuLCBsb2ZmX3QgKnB0cikKIAlpZiAoa2J1ZiBbMV0g PT0gVVNCX0RUX0NPTkZJRykgewogCQlkZXYtPmhzX2NvbmZpZyA9ICh2b2lkICopIGtidWY7CiAJ CXRvdGFsID0gbGUxNl90b19jcHUoZGV2LT5oc19jb25maWctPndUb3RhbExlbmd0aCk7Ci0JCWlm ICghaXNfdmFsaWRfY29uZmlnIChkZXYtPmhzX2NvbmZpZykgfHwgdG90YWwgPj0gbGVuZ3RoKQor CQlpZiAoIWlzX3ZhbGlkX2NvbmZpZyhkZXYtPmhzX2NvbmZpZywgdG90YWwpIHx8CisJCQkJdG90 YWwgPiBsZW5ndGggLSBVU0JfRFRfREVWSUNFX1NJWkUpCiAJCQlnb3RvIGZhaWw7CiAJCWtidWYg Kz0gdG90YWw7CiAJCWxlbmd0aCAtPSB0b3RhbDsKKwl9IGVsc2UgeworCQlkZXYtPmhzX2NvbmZp ZyA9IE5VTEw7CiAJfQogCiAJLyogY291bGQgc3VwcG9ydCBtdWx0aXBsZSBjb25maWdzLCB1c2lu ZyBhbm90aGVyIGVuY29kaW5nISAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC91aGNp LXBjaS5jIGIvZHJpdmVycy91c2IvaG9zdC91aGNpLXBjaS5jCmluZGV4IDBmMjI4YzQ2ZWVkYS4u YWQ0NThlZjRiN2U5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L3VoY2ktcGNpLmMKKysr IGIvZHJpdmVycy91c2IvaG9zdC91aGNpLXBjaS5jCkBAIC0xMjksNiArMTI5LDEwIEBAIHN0YXRp YyBpbnQgdWhjaV9wY2lfaW5pdChzdHJ1Y3QgdXNiX2hjZCAqaGNkKQogCWlmICh0b19wY2lfZGV2 KHVoY2lfZGV2KHVoY2kpKS0+dmVuZG9yID09IFBDSV9WRU5ET1JfSURfSFApCiAJCXVoY2ktPndh aXRfZm9yX2hwID0gMTsKIAorCS8qIEludGVsIGNvbnRyb2xsZXJzIHVzZSBub24tUE1FIHdha2V1 cCBzaWduYWxsaW5nICovCisJaWYgKHRvX3BjaV9kZXYodWhjaV9kZXYodWhjaSkpLT52ZW5kb3Ig PT0gUENJX1ZFTkRPUl9JRF9JTlRFTCkKKwkJZGV2aWNlX3NldF9ydW5fd2FrZSh1aGNpX2Rldih1 aGNpKSwgMSk7CisKIAkvKiBTZXQgdXAgcG9pbnRlcnMgdG8gUENJLXNwZWNpZmljIGZ1bmN0aW9u cyAqLwogCXVoY2ktPnJlc2V0X2hjID0gdWhjaV9wY2lfcmVzZXRfaGM7CiAJdWhjaS0+Y2hlY2tf YW5kX3Jlc2V0X2hjID0gdWhjaV9wY2lfY2hlY2tfYW5kX3Jlc2V0X2hjOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy91c2IvaG9zdC94aGNpLW1lbS5jIGIvZHJpdmVycy91c2IvaG9zdC94aGNpLW1lbS5j CmluZGV4IGUzZjcwZDNmYjQ0Yy4uOWEyOTE1MjkzMzhjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Vz Yi9ob3N0L3hoY2ktbWVtLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC94aGNpLW1lbS5jCkBAIC04 MjcsNiArODI3LDQwIEBAIHZvaWQgeGhjaV9mcmVlX3ZpcnRfZGV2aWNlKHN0cnVjdCB4aGNpX2hj ZCAqeGhjaSwgaW50IHNsb3RfaWQpCiAJeGhjaS0+ZGV2c1tzbG90X2lkXSA9IE5VTEw7CiB9CiAK Ky8qCisgKiBGcmVlIGEgdmlydF9kZXZpY2Ugc3RydWN0dXJlLgorICogSWYgdGhlIHZpcnRfZGV2 aWNlIGFkZGVkIGEgdHRfaW5mbyAoYSBodWIpIGFuZCBoYXMgY2hpbGRyZW4gcG9pbnRpbmcgdG8K KyAqIHRoYXQgdHRfaW5mbywgdGhlbiBmcmVlIHRoZSBjaGlsZCBmaXJzdC4gUmVjdXJzaXZlLgor ICogV2UgY2FuJ3QgcmVseSBvbiB1ZGV2IGF0IHRoaXMgcG9pbnQgdG8gZmluZCBjaGlsZC1wYXJl bnQgcmVsYXRpb25zaGlwcy4KKyAqLwordm9pZCB4aGNpX2ZyZWVfdmlydF9kZXZpY2VzX2RlcHRo X2ZpcnN0KHN0cnVjdCB4aGNpX2hjZCAqeGhjaSwgaW50IHNsb3RfaWQpCit7CisJc3RydWN0IHho Y2lfdmlydF9kZXZpY2UgKnZkZXY7CisJc3RydWN0IGxpc3RfaGVhZCAqdHRfbGlzdF9oZWFkOwor CXN0cnVjdCB4aGNpX3R0X2J3X2luZm8gKnR0X2luZm8sICpuZXh0OworCWludCBpOworCisJdmRl diA9IHhoY2ktPmRldnNbc2xvdF9pZF07CisJaWYgKCF2ZGV2KQorCQlyZXR1cm47CisKKwl0dF9s aXN0X2hlYWQgPSAmKHhoY2ktPnJoX2J3W3ZkZXYtPnJlYWxfcG9ydCAtIDFdLnR0cyk7CisJbGlz dF9mb3JfZWFjaF9lbnRyeV9zYWZlKHR0X2luZm8sIG5leHQsIHR0X2xpc3RfaGVhZCwgdHRfbGlz dCkgeworCQkvKiBpcyB0aGlzIGEgaHViIGRldmljZSB0aGF0IGFkZGVkIGEgdHRfaW5mbyB0byB0 aGUgdHRzIGxpc3QgKi8KKwkJaWYgKHR0X2luZm8tPnNsb3RfaWQgPT0gc2xvdF9pZCkgeworCQkJ LyogYXJlIGFueSBkZXZpY2VzIHVzaW5nIHRoaXMgdHRfaW5mbz8gKi8KKwkJCWZvciAoaSA9IDE7 IGkgPCBIQ1NfTUFYX1NMT1RTKHhoY2ktPmhjc19wYXJhbXMxKTsgaSsrKSB7CisJCQkJdmRldiA9 IHhoY2ktPmRldnNbaV07CisJCQkJaWYgKHZkZXYgJiYgKHZkZXYtPnR0X2luZm8gPT0gdHRfaW5m bykpCisJCQkJCXhoY2lfZnJlZV92aXJ0X2RldmljZXNfZGVwdGhfZmlyc3QoCisJCQkJCQl4aGNp LCBpKTsKKwkJCX0KKwkJfQorCX0KKwkvKiB3ZSBhcmUgbm93IGF0IGEgbGVhZiBkZXZpY2UgKi8K Kwl4aGNpX2ZyZWVfdmlydF9kZXZpY2UoeGhjaSwgc2xvdF9pZCk7Cit9CisKIGludCB4aGNpX2Fs bG9jX3ZpcnRfZGV2aWNlKHN0cnVjdCB4aGNpX2hjZCAqeGhjaSwgaW50IHNsb3RfaWQsCiAJCXN0 cnVjdCB1c2JfZGV2aWNlICp1ZGV2LCBnZnBfdCBmbGFncykKIHsKQEAgLTE3MzIsOCArMTc2Niw4 IEBAIHZvaWQgeGhjaV9tZW1fY2xlYW51cChzdHJ1Y3QgeGhjaV9oY2QgKnhoY2kpCiAJCX0KIAl9 CiAKLQlmb3IgKGkgPSAxOyBpIDwgTUFYX0hDX1NMT1RTOyArK2kpCi0JCXhoY2lfZnJlZV92aXJ0 X2RldmljZSh4aGNpLCBpKTsKKwlmb3IgKGkgPSBIQ1NfTUFYX1NMT1RTKHhoY2ktPmhjc19wYXJh bXMxKTsgaSA+IDA7IGktLSkKKwkJeGhjaV9mcmVlX3ZpcnRfZGV2aWNlc19kZXB0aF9maXJzdCh4 aGNpLCBpKTsKIAogCWlmICh4aGNpLT5zZWdtZW50X3Bvb2wpCiAJCWRtYV9wb29sX2Rlc3Ryb3ko eGhjaS0+c2VnbWVudF9wb29sKTsKQEAgLTIyMzQsNyArMjI2OCw3IEBAIGludCB4aGNpX21lbV9p bml0KHN0cnVjdCB4aGNpX2hjZCAqeGhjaSwgZ2ZwX3QgZmxhZ3MpCiAJICogInBoeXNpY2FsbHkg Y29udGlndW91cyBhbmQgNjQtYnl0ZSAoY2FjaGUgbGluZSkgYWxpZ25lZCIuCiAJICovCiAJeGhj aS0+ZGNiYWEgPSBkbWFfYWxsb2NfY29oZXJlbnQoZGV2LCBzaXplb2YoKnhoY2ktPmRjYmFhKSwg JmRtYSwKLQkJCUdGUF9LRVJORUwpOworCQkJZmxhZ3MpOwogCWlmICgheGhjaS0+ZGNiYWEpCiAJ CWdvdG8gZmFpbDsKIAltZW1zZXQoeGhjaS0+ZGNiYWEsIDAsIHNpemVvZiAqKHhoY2ktPmRjYmFh KSk7CkBAIC0yMzE1LDcgKzIzNDksNyBAQCBpbnQgeGhjaV9tZW1faW5pdChzdHJ1Y3QgeGhjaV9o Y2QgKnhoY2ksIGdmcF90IGZsYWdzKQogCiAJeGhjaS0+ZXJzdC5lbnRyaWVzID0gZG1hX2FsbG9j X2NvaGVyZW50KGRldiwKIAkJCXNpemVvZihzdHJ1Y3QgeGhjaV9lcnN0X2VudHJ5KSAqIEVSU1Rf TlVNX1NFR1MsICZkbWEsCi0JCQlHRlBfS0VSTkVMKTsKKwkJCWZsYWdzKTsKIAlpZiAoIXhoY2kt PmVyc3QuZW50cmllcykKIAkJZ290byBmYWlsOwogCXhoY2lfZGJnKHhoY2ksICIvLyBBbGxvY2F0 ZWQgZXZlbnQgcmluZyBzZWdtZW50IHRhYmxlIGF0IDB4JWxseFxuIiwKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvdXNiL2hvc3QveGhjaS1yaW5nLmMgYi9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktcmluZy5j CmluZGV4IDVmZGI4NWZiYTQ0Ny4uMzVlMWI4NDYxYmZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Vz Yi9ob3N0L3hoY2ktcmluZy5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1yaW5nLmMKQEAg LTk2OSwxMiArOTY5LDYgQEAgdm9pZCB4aGNpX3N0b3BfZW5kcG9pbnRfY29tbWFuZF93YXRjaGRv Zyh1bnNpZ25lZCBsb25nIGFyZykKIAlzcGluX2xvY2tfaXJxc2F2ZSgmeGhjaS0+bG9jaywgZmxh Z3MpOwogCiAJZXAtPnN0b3BfY21kc19wZW5kaW5nLS07Ci0JaWYgKHhoY2ktPnhoY19zdGF0ZSAm IFhIQ0lfU1RBVEVfRFlJTkcpIHsKLQkJeGhjaV9kYmcoeGhjaSwgIlN0b3AgRVAgdGltZXIgcmFu LCBidXQgYW5vdGhlciB0aW1lciBtYXJrZWQgIgotCQkJCSJ4SENJIGFzIERZSU5HLCBleGl0aW5n LlxuIik7Ci0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnhoY2ktPmxvY2ssIGZsYWdzKTsKLQkJ cmV0dXJuOwotCX0KIAlpZiAoIShlcC0+c3RvcF9jbWRzX3BlbmRpbmcgPT0gMCAmJiAoZXAtPmVw X3N0YXRlICYgRVBfSEFMVF9QRU5ESU5HKSkpIHsKIAkJeGhjaV9kYmcoeGhjaSwgIlN0b3AgRVAg dGltZXIgcmFuLCBidXQgbm8gY29tbWFuZCBwZW5kaW5nLCAiCiAJCQkJImV4aXRpbmcuXG4iKTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS5jIGIvZHJpdmVycy91c2IvaG9zdC94 aGNpLmMKaW5kZXggY2ZkNWQzYTZkMzRkLi5hODM0MzczNDExZjIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvdXNiL2hvc3QveGhjaS5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS5jCkBAIC0xNTQ5 LDE4ICsxNTQ5LDYgQEAgaW50IHhoY2lfdXJiX2RlcXVldWUoc3RydWN0IHVzYl9oY2QgKmhjZCwg c3RydWN0IHVyYiAqdXJiLCBpbnQgc3RhdHVzKQogCQl4aGNpX3VyYl9mcmVlX3ByaXYoeGhjaSwg dXJiX3ByaXYpOwogCQlyZXR1cm4gcmV0OwogCX0KLQlpZiAoKHhoY2ktPnhoY19zdGF0ZSAmIFhI Q0lfU1RBVEVfRFlJTkcpIHx8Ci0JCQkoeGhjaS0+eGhjX3N0YXRlICYgWEhDSV9TVEFURV9IQUxU RUQpKSB7Ci0JCXhoY2lfZGJnKHhoY2ksICJFcCAweCV4OiBVUkIgJXAgdG8gYmUgY2FuY2VsZWQg b24gIgotCQkJCSJub24tcmVzcG9uc2l2ZSB4SENJIGhvc3QuXG4iLAotCQkJCXVyYi0+ZXAtPmRl c2MuYkVuZHBvaW50QWRkcmVzcywgdXJiKTsKLQkJLyogTGV0IHRoZSBzdG9wIGVuZHBvaW50IGNv bW1hbmQgd2F0Y2hkb2cgdGltZXIgKHdoaWNoIHNldCB0aGlzCi0JCSAqIHN0YXRlKSBmaW5pc2gg Y2xlYW5pbmcgdXAgdGhlIGVuZHBvaW50IFREIGxpc3RzLiAgV2UgbXVzdAotCQkgKiBoYXZlIGNh dWdodCBpdCBpbiB0aGUgbWlkZGxlIG9mIGRyb3BwaW5nIGEgbG9jayBhbmQgZ2l2aW5nCi0JCSAq IGJhY2sgYW4gVVJCLgotCQkgKi8KLQkJZ290byBkb25lOwotCX0KIAogCXhoY2lfZGJnKHhoY2ks ICJDYW5jZWwgVVJCICVwXG4iLCB1cmIpOwogCXhoY2lfZGJnKHhoY2ksICJFdmVudCByaW5nOlxu Iik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9tdXNiL211c2Joc2RtYS5oIGIvZHJpdmVycy91 c2IvbXVzYi9tdXNiaHNkbWEuaAppbmRleCAzMjBmZDRhZmI5M2YuLjcxZjhlZjAwNWMxYiAxMDA2 NDQKLS0tIGEvZHJpdmVycy91c2IvbXVzYi9tdXNiaHNkbWEuaAorKysgYi9kcml2ZXJzL3VzYi9t dXNiL211c2Joc2RtYS5oCkBAIC0xNjEsNSArMTYxLDUgQEAgc3RydWN0IG11c2JfZG1hX2NvbnRy b2xsZXIgewogCXZvaWQgX19pb21lbQkJCSpiYXNlOwogCXU4CQkJCWNoYW5uZWxfY291bnQ7CiAJ dTgJCQkJdXNlZF9jaGFubmVsczsKLQl1OAkJCQlpcnE7CisJaW50CQkJCWlycTsKIH07CmRpZmYg LS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvY2gzNDEuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9j aDM0MS5jCmluZGV4IGM0ZDk1YjBkOThkNS4uZDUwYTZhNjk2YThkIDEwMDY0NAotLS0gYS9kcml2 ZXJzL3VzYi9zZXJpYWwvY2gzNDEuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvY2gzNDEuYwpA QCAtNjIsMTMgKzYyLDI2IEBACiAgKiB0aGUgTmV0L0ZyZWVCU0QgdWNoY29tLmMgZHJpdmVyIGJ5 IFRha2Fub3JpIFdhdGFuYWJlLiAgRG9tbyBhcmlnYXRvLgogICovCiAKKyNkZWZpbmUgQ0gzNDFf UkVRX1JFQURfVkVSU0lPTiAweDVGCiAjZGVmaW5lIENIMzQxX1JFUV9XUklURV9SRUcgICAgMHg5 QQogI2RlZmluZSBDSDM0MV9SRVFfUkVBRF9SRUcgICAgIDB4OTUKLSNkZWZpbmUgQ0gzNDFfUkVH X0JSRUFLMSAgICAgICAweDA1Ci0jZGVmaW5lIENIMzQxX1JFR19CUkVBSzIgICAgICAgMHgxOAot I2RlZmluZSBDSDM0MV9OQlJFQUtfQklUU19SRUcxIDB4MDEKLSNkZWZpbmUgQ0gzNDFfTkJSRUFL X0JJVFNfUkVHMiAweDQwCi0KKyNkZWZpbmUgQ0gzNDFfUkVRX1NFUklBTF9JTklUICAweEExCisj ZGVmaW5lIENIMzQxX1JFUV9NT0RFTV9DVFJMICAgMHhBNAorCisjZGVmaW5lIENIMzQxX1JFR19C UkVBSyAgICAgICAgMHgwNQorI2RlZmluZSBDSDM0MV9SRUdfTENSICAgICAgICAgIDB4MTgKKyNk ZWZpbmUgQ0gzNDFfTkJSRUFLX0JJVFMgICAgICAweDAxCisKKyNkZWZpbmUgQ0gzNDFfTENSX0VO QUJMRV9SWCAgICAweDgwCisjZGVmaW5lIENIMzQxX0xDUl9FTkFCTEVfVFggICAgMHg0MAorI2Rl ZmluZSBDSDM0MV9MQ1JfTUFSS19TUEFDRSAgIDB4MjAKKyNkZWZpbmUgQ0gzNDFfTENSX1BBUl9F VkVOICAgICAweDEwCisjZGVmaW5lIENIMzQxX0xDUl9FTkFCTEVfUEFSICAgMHgwOAorI2RlZmlu ZSBDSDM0MV9MQ1JfU1RPUF9CSVRTXzIgIDB4MDQKKyNkZWZpbmUgQ0gzNDFfTENSX0NTOCAgICAg ICAgICAweDAzCisjZGVmaW5lIENIMzQxX0xDUl9DUzcgICAgICAgICAgMHgwMgorI2RlZmluZSBD SDM0MV9MQ1JfQ1M2ICAgICAgICAgIDB4MDEKKyNkZWZpbmUgQ0gzNDFfTENSX0NTNSAgICAgICAg ICAweDAwCiAKIHN0YXRpYyBpbnQgZGVidWc7CiAKQEAgLTg4LDYgKzEwMSwxMCBAQCBzdHJ1Y3Qg Y2gzNDFfcHJpdmF0ZSB7CiAJdTggbXVsdGlfc3RhdHVzX2NoYW5nZTsgLyogc3RhdHVzIGNoYW5n ZWQgbXVsdGlwbGUgc2luY2UgbGFzdCBjYWxsICovCiB9OwogCitzdGF0aWMgdm9pZCBjaDM0MV9z ZXRfdGVybWlvcyhzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LAorCQkJICAgICAgc3RydWN0IHVzYl9z ZXJpYWxfcG9ydCAqcG9ydCwKKwkJCSAgICAgIHN0cnVjdCBrdGVybWlvcyAqb2xkX3Rlcm1pb3Mp OworCiBzdGF0aWMgaW50IGNoMzQxX2NvbnRyb2xfb3V0KHN0cnVjdCB1c2JfZGV2aWNlICpkZXYs IHU4IHJlcXVlc3QsCiAJCQkgICAgIHUxNiB2YWx1ZSwgdTE2IGluZGV4KQogewpAQCAtOTgsNiAr MTE1LDggQEAgc3RhdGljIGludCBjaDM0MV9jb250cm9sX291dChzdHJ1Y3QgdXNiX2RldmljZSAq ZGV2LCB1OCByZXF1ZXN0LAogCXIgPSB1c2JfY29udHJvbF9tc2coZGV2LCB1c2Jfc25kY3RybHBp cGUoZGV2LCAwKSwgcmVxdWVzdCwKIAkJCSAgICBVU0JfVFlQRV9WRU5ET1IgfCBVU0JfUkVDSVBf REVWSUNFIHwgVVNCX0RJUl9PVVQsCiAJCQkgICAgdmFsdWUsIGluZGV4LCBOVUxMLCAwLCBERUZB VUxUX1RJTUVPVVQpOworCWlmIChyIDwgMCkKKwkJZGV2X2VycigmZGV2LT5kZXYsICJmYWlsZWQg dG8gc2VuZCBjb250cm9sIG1lc3NhZ2U6ICVkXG4iLCByKTsKIAogCXJldHVybiByOwogfQpAQCAt MTEzLDEzICsxMzIsMjYgQEAgc3RhdGljIGludCBjaDM0MV9jb250cm9sX2luKHN0cnVjdCB1c2Jf ZGV2aWNlICpkZXYsCiAJciA9IHVzYl9jb250cm9sX21zZyhkZXYsIHVzYl9yY3ZjdHJscGlwZShk ZXYsIDApLCByZXF1ZXN0LAogCQkJICAgIFVTQl9UWVBFX1ZFTkRPUiB8IFVTQl9SRUNJUF9ERVZJ Q0UgfCBVU0JfRElSX0lOLAogCQkJICAgIHZhbHVlLCBpbmRleCwgYnVmLCBidWZzaXplLCBERUZB VUxUX1RJTUVPVVQpOwotCXJldHVybiByOworCWlmIChyIDwgYnVmc2l6ZSkgeworCQlpZiAociA+ PSAwKSB7CisJCQlkZXZfZXJyKCZkZXYtPmRldiwKKwkJCQkic2hvcnQgY29udHJvbCBtZXNzYWdl IHJlY2VpdmVkICglZCA8ICV1KVxuIiwKKwkJCQlyLCBidWZzaXplKTsKKwkJCXIgPSAtRUlPOwor CQl9CisKKwkJZGV2X2VycigmZGV2LT5kZXYsICJmYWlsZWQgdG8gcmVjZWl2ZSBjb250cm9sIG1l c3NhZ2U6ICVkXG4iLAorCQkJcik7CisJCXJldHVybiByOworCX0KKworCXJldHVybiAwOwogfQog Ci1zdGF0aWMgaW50IGNoMzQxX3NldF9iYXVkcmF0ZShzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LAot CQkJICAgICAgc3RydWN0IGNoMzQxX3ByaXZhdGUgKnByaXYpCitzdGF0aWMgaW50IGNoMzQxX3Nl dF9iYXVkcmF0ZV9sY3Ioc3RydWN0IHVzYl9kZXZpY2UgKmRldiwKKwkJCQkgIHN0cnVjdCBjaDM0 MV9wcml2YXRlICpwcml2LCB1OCBsY3IpCiB7Ci0Jc2hvcnQgYSwgYjsKKwlzaG9ydCBhOwogCWlu dCByOwogCXVuc2lnbmVkIGxvbmcgZmFjdG9yOwogCXNob3J0IGRpdmlzb3I7CkBAIC0xNDEsMTEg KzE3MywyMCBAQCBzdGF0aWMgaW50IGNoMzQxX3NldF9iYXVkcmF0ZShzdHJ1Y3QgdXNiX2Rldmlj ZSAqZGV2LAogCiAJZmFjdG9yID0gMHgxMDAwMCAtIGZhY3RvcjsKIAlhID0gKGZhY3RvciAmIDB4 ZmYwMCkgfCBkaXZpc29yOwotCWIgPSBmYWN0b3IgJiAweGZmOwogCi0JciA9IGNoMzQxX2NvbnRy b2xfb3V0KGRldiwgMHg5YSwgMHgxMzEyLCBhKTsKLQlpZiAoIXIpCi0JCXIgPSBjaDM0MV9jb250 cm9sX291dChkZXYsIDB4OWEsIDB4MGYyYywgYik7CisJLyoKKwkgKiBDSDM0MUEgYnVmZmVycyBk YXRhIHVudGlsIGEgZnVsbCBlbmRwb2ludC1zaXplIHBhY2tldCAoMzIgYnl0ZXMpCisJICogaGFz IGJlZW4gcmVjZWl2ZWQgdW5sZXNzIGJpdCA3IGlzIHNldC4KKwkgKi8KKwlhIHw9IEJJVCg3KTsK KworCXIgPSBjaDM0MV9jb250cm9sX291dChkZXYsIENIMzQxX1JFUV9XUklURV9SRUcsIDB4MTMx MiwgYSk7CisJaWYgKHIpCisJCXJldHVybiByOworCisJciA9IGNoMzQxX2NvbnRyb2xfb3V0KGRl diwgQ0gzNDFfUkVRX1dSSVRFX1JFRywgMHgyNTE4LCBsY3IpOworCWlmIChyKQorCQlyZXR1cm4g cjsKIAogCXJldHVybiByOwogfQpAQCAtMTUzLDE0ICsxOTQsMTQgQEAgc3RhdGljIGludCBjaDM0 MV9zZXRfYmF1ZHJhdGUoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwKIHN0YXRpYyBpbnQgY2gzNDFf c2V0X2hhbmRzaGFrZShzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1OCBjb250cm9sKQogewogCWRi ZygiY2gzNDFfc2V0X2hhbmRzaGFrZSgweCUwMngpIiwgY29udHJvbCk7Ci0JcmV0dXJuIGNoMzQx X2NvbnRyb2xfb3V0KGRldiwgMHhhNCwgfmNvbnRyb2wsIDApOworCXJldHVybiBjaDM0MV9jb250 cm9sX291dChkZXYsIENIMzQxX1JFUV9NT0RFTV9DVFJMLCB+Y29udHJvbCwgMCk7CiB9CiAKIHN0 YXRpYyBpbnQgY2gzNDFfZ2V0X3N0YXR1cyhzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCBzdHJ1Y3Qg Y2gzNDFfcHJpdmF0ZSAqcHJpdikKIHsKKwljb25zdCB1bnNpZ25lZCBpbnQgc2l6ZSA9IDI7CiAJ Y2hhciAqYnVmZmVyOwogCWludCByOwotCWNvbnN0IHVuc2lnbmVkIHNpemUgPSA4OwogCXVuc2ln bmVkIGxvbmcgZmxhZ3M7CiAKIAlkYmcoImNoMzQxX2dldF9zdGF0dXMoKSIpOwpAQCAtMTY5LDE5 ICsyMTAsMTQgQEAgc3RhdGljIGludCBjaDM0MV9nZXRfc3RhdHVzKHN0cnVjdCB1c2JfZGV2aWNl ICpkZXYsIHN0cnVjdCBjaDM0MV9wcml2YXRlICpwcml2KQogCWlmICghYnVmZmVyKQogCQlyZXR1 cm4gLUVOT01FTTsKIAotCXIgPSBjaDM0MV9jb250cm9sX2luKGRldiwgMHg5NSwgMHgwNzA2LCAw LCBidWZmZXIsIHNpemUpOworCXIgPSBjaDM0MV9jb250cm9sX2luKGRldiwgQ0gzNDFfUkVRX1JF QURfUkVHLCAweDA3MDYsIDAsIGJ1ZmZlciwgc2l6ZSk7CiAJaWYgKHIgPCAwKQogCQlnb3RvIG91 dDsKIAotCS8qIHNldHVwIHRoZSBwcml2YXRlIHN0YXR1cyBpZiBhdmFpbGFibGUgKi8KLQlpZiAo ciA9PSAyKSB7Ci0JCXIgPSAwOwotCQlzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdi0+bG9jaywgZmxh Z3MpOwotCQlwcml2LT5saW5lX3N0YXR1cyA9ICh+KCpidWZmZXIpKSAmIENIMzQxX0JJVFNfTU9E RU1fU1RBVDsKLQkJcHJpdi0+bXVsdGlfc3RhdHVzX2NoYW5nZSA9IDA7Ci0JCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJnByaXYtPmxvY2ssIGZsYWdzKTsKLQl9IGVsc2UKLQkJciA9IC1FUFJPVE87 CisJc3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPmxvY2ssIGZsYWdzKTsKKwlwcml2LT5saW5lX3N0 YXR1cyA9ICh+KCpidWZmZXIpKSAmIENIMzQxX0JJVFNfTU9ERU1fU1RBVDsKKwlwcml2LT5tdWx0 aV9zdGF0dXNfY2hhbmdlID0gMDsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcml2LT5sb2Nr LCBmbGFncyk7CiAKIG91dDoJa2ZyZWUoYnVmZmVyKTsKIAlyZXR1cm4gcjsKQEAgLTE5MSw5ICsy MjcsOSBAQCBvdXQ6CWtmcmVlKGJ1ZmZlcik7CiAKIHN0YXRpYyBpbnQgY2gzNDFfY29uZmlndXJl KHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsIHN0cnVjdCBjaDM0MV9wcml2YXRlICpwcml2KQogewor CWNvbnN0IHVuc2lnbmVkIGludCBzaXplID0gMjsKIAljaGFyICpidWZmZXI7CiAJaW50IHI7Ci0J Y29uc3QgdW5zaWduZWQgc2l6ZSA9IDg7CiAKIAlkYmcoImNoMzQxX2NvbmZpZ3VyZSgpIik7CiAK QEAgLTIwMiwyNCArMjM4LDIwIEBAIHN0YXRpYyBpbnQgY2gzNDFfY29uZmlndXJlKHN0cnVjdCB1 c2JfZGV2aWNlICpkZXYsIHN0cnVjdCBjaDM0MV9wcml2YXRlICpwcml2KQogCQlyZXR1cm4gLUVO T01FTTsKIAogCS8qIGV4cGVjdCB0d28gYnl0ZXMgMHgyNyAweDAwICovCi0JciA9IGNoMzQxX2Nv bnRyb2xfaW4oZGV2LCAweDVmLCAwLCAwLCBidWZmZXIsIHNpemUpOworCXIgPSBjaDM0MV9jb250 cm9sX2luKGRldiwgQ0gzNDFfUkVRX1JFQURfVkVSU0lPTiwgMCwgMCwgYnVmZmVyLCBzaXplKTsK IAlpZiAociA8IDApCiAJCWdvdG8gb3V0OwogCi0JciA9IGNoMzQxX2NvbnRyb2xfb3V0KGRldiwg MHhhMSwgMCwgMCk7Ci0JaWYgKHIgPCAwKQotCQlnb3RvIG91dDsKLQotCXIgPSBjaDM0MV9zZXRf YmF1ZHJhdGUoZGV2LCBwcml2KTsKKwlyID0gY2gzNDFfY29udHJvbF9vdXQoZGV2LCBDSDM0MV9S RVFfU0VSSUFMX0lOSVQsIDAsIDApOwogCWlmIChyIDwgMCkKIAkJZ290byBvdXQ7CiAKIAkvKiBl eHBlY3QgdHdvIGJ5dGVzIDB4NTYgMHgwMCAqLwotCXIgPSBjaDM0MV9jb250cm9sX2luKGRldiwg MHg5NSwgMHgyNTE4LCAwLCBidWZmZXIsIHNpemUpOworCXIgPSBjaDM0MV9jb250cm9sX2luKGRl diwgQ0gzNDFfUkVRX1JFQURfUkVHLCAweDI1MTgsIDAsIGJ1ZmZlciwgc2l6ZSk7CiAJaWYgKHIg PCAwKQogCQlnb3RvIG91dDsKIAotCXIgPSBjaDM0MV9jb250cm9sX291dChkZXYsIDB4OWEsIDB4 MjUxOCwgMHgwMDUwKTsKKwlyID0gY2gzNDFfY29udHJvbF9vdXQoZGV2LCBDSDM0MV9SRVFfV1JJ VEVfUkVHLCAweDI1MTgsIDB4MDA1MCk7CiAJaWYgKHIgPCAwKQogCQlnb3RvIG91dDsKIApAQCAt MjI4LDExICsyNjAsNyBAQCBzdGF0aWMgaW50IGNoMzQxX2NvbmZpZ3VyZShzdHJ1Y3QgdXNiX2Rl dmljZSAqZGV2LCBzdHJ1Y3QgY2gzNDFfcHJpdmF0ZSAqcHJpdikKIAlpZiAociA8IDApCiAJCWdv dG8gb3V0OwogCi0JciA9IGNoMzQxX2NvbnRyb2xfb3V0KGRldiwgMHhhMSwgMHg1MDFmLCAweGQ5 MGEpOwotCWlmIChyIDwgMCkKLQkJZ290byBvdXQ7Ci0KLQlyID0gY2gzNDFfc2V0X2JhdWRyYXRl KGRldiwgcHJpdik7CisJciA9IGNoMzQxX3NldF9iYXVkcmF0ZV9sY3IoZGV2LCBwcml2LCAwKTsK IAlpZiAociA8IDApCiAJCWdvdG8gb3V0OwogCkBAIC0yNjIsNyArMjkwLDYgQEAgc3RhdGljIGlu dCBjaDM0MV9hdHRhY2goc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbCkKIAogCXNwaW5fbG9ja19p bml0KCZwcml2LT5sb2NrKTsKIAlwcml2LT5iYXVkX3JhdGUgPSBERUZBVUxUX0JBVURfUkFURTsK LQlwcml2LT5saW5lX2NvbnRyb2wgPSBDSDM0MV9CSVRfUlRTIHwgQ0gzNDFfQklUX0RUUjsKIAog CXIgPSBjaDM0MV9jb25maWd1cmUoc2VyaWFsLT5kZXYsIHByaXYpOwogCWlmIChyIDwgMCkKQEAg LTMxOCwxOSArMzQ1LDEyIEBAIHN0YXRpYyBpbnQgY2gzNDFfb3BlbihzdHJ1Y3QgdHR5X3N0cnVj dCAqdHR5LCBzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQogCiAJZGJnKCJjaDM0MV9vcGVu KCkiKTsKIAotCXByaXYtPmJhdWRfcmF0ZSA9IERFRkFVTFRfQkFVRF9SQVRFOwotCiAJciA9IGNo MzQxX2NvbmZpZ3VyZShzZXJpYWwtPmRldiwgcHJpdik7CiAJaWYgKHIpCi0JCWdvdG8gb3V0Owor CQlyZXR1cm4gcjsKIAotCXIgPSBjaDM0MV9zZXRfaGFuZHNoYWtlKHNlcmlhbC0+ZGV2LCBwcml2 LT5saW5lX2NvbnRyb2wpOwotCWlmIChyKQotCQlnb3RvIG91dDsKLQotCXIgPSBjaDM0MV9zZXRf YmF1ZHJhdGUoc2VyaWFsLT5kZXYsIHByaXYpOwotCWlmIChyKQotCQlnb3RvIG91dDsKKwlpZiAo dHR5KQorCQljaDM0MV9zZXRfdGVybWlvcyh0dHksIHBvcnQsIE5VTEwpOwogCiAJZGJnKCIlcyAt IHN1Ym1pdHRpbmcgaW50ZXJydXB0IHVyYiIsIF9fZnVuY19fKTsKIAlwb3J0LT5pbnRlcnJ1cHRf aW5fdXJiLT5kZXYgPSBzZXJpYWwtPmRldjsKQEAgLTMzOCwxMyArMzU4LDE5IEBAIHN0YXRpYyBp bnQgY2gzNDFfb3BlbihzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgdXNiX3NlcmlhbF9w b3J0ICpwb3J0KQogCWlmIChyKSB7CiAJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzIC0gZmFpbGVk IHN1Ym1pdHRpbmcgaW50ZXJydXB0IHVyYiwiCiAJCQkiIGVycm9yICVkXG4iLCBfX2Z1bmNfXywg cik7Ci0JCWNoMzQxX2Nsb3NlKHBvcnQpOwotCQlyZXR1cm4gLUVQUk9UTzsKKwkJcmV0dXJuIHI7 CiAJfQogCiAJciA9IHVzYl9zZXJpYWxfZ2VuZXJpY19vcGVuKHR0eSwgcG9ydCk7CisJaWYgKHIp CisJCWdvdG8gZXJyX2tpbGxfaW50ZXJydXB0X3VyYjsKKworCXJldHVybiAwOworCitlcnJfa2ls bF9pbnRlcnJ1cHRfdXJiOgorCXVzYl9raWxsX3VyYihwb3J0LT5pbnRlcnJ1cHRfaW5fdXJiKTsK IAotb3V0OglyZXR1cm4gcjsKKwlyZXR1cm4gcjsKIH0KIAogLyogT2xkX3Rlcm1pb3MgY29udGFp bnMgdGhlIG9yaWdpbmFsIHRlcm1pb3Mgc2V0dGluZ3MgYW5kCkBAIC0zNTYsMjUgKzM4MiwzNSBA QCBzdGF0aWMgdm9pZCBjaDM0MV9zZXRfdGVybWlvcyhzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LAog CXN0cnVjdCBjaDM0MV9wcml2YXRlICpwcml2ID0gdXNiX2dldF9zZXJpYWxfcG9ydF9kYXRhKHBv cnQpOwogCXVuc2lnbmVkIGJhdWRfcmF0ZTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOworCXVuc2ln bmVkIGNoYXIgY3RybDsKKwlpbnQgcjsKKworCS8qIHJlZHVuZGFudCBjaGFuZ2VzIG1heSBjYXVz ZSB0aGUgY2hpcCB0byBsb3NlIGJ5dGVzICovCisJaWYgKG9sZF90ZXJtaW9zICYmICF0dHlfdGVy bWlvc19od19jaGFuZ2UodHR5LT50ZXJtaW9zLCBvbGRfdGVybWlvcykpCisJCXJldHVybjsKIAog CWRiZygiY2gzNDFfc2V0X3Rlcm1pb3MoKSIpOwogCiAJYmF1ZF9yYXRlID0gdHR5X2dldF9iYXVk X3JhdGUodHR5KTsKIAotCXByaXYtPmJhdWRfcmF0ZSA9IGJhdWRfcmF0ZTsKKwljdHJsID0gQ0gz NDFfTENSX0VOQUJMRV9SWCB8IENIMzQxX0xDUl9FTkFCTEVfVFggfCBDSDM0MV9MQ1JfQ1M4Owog CiAJaWYgKGJhdWRfcmF0ZSkgewotCQlzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdi0+bG9jaywgZmxh Z3MpOwotCQlwcml2LT5saW5lX2NvbnRyb2wgfD0gKENIMzQxX0JJVF9EVFIgfCBDSDM0MV9CSVRf UlRTKTsKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+bG9jaywgZmxhZ3MpOwotCQlj aDM0MV9zZXRfYmF1ZHJhdGUocG9ydC0+c2VyaWFsLT5kZXYsIHByaXYpOwotCX0gZWxzZSB7Ci0J CXNwaW5fbG9ja19pcnFzYXZlKCZwcml2LT5sb2NrLCBmbGFncyk7Ci0JCXByaXYtPmxpbmVfY29u dHJvbCAmPSB+KENIMzQxX0JJVF9EVFIgfCBDSDM0MV9CSVRfUlRTKTsKLQkJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmcHJpdi0+bG9jaywgZmxhZ3MpOworCQlwcml2LT5iYXVkX3JhdGUgPSBiYXVk X3JhdGU7CisKKwkJciA9IGNoMzQxX3NldF9iYXVkcmF0ZV9sY3IocG9ydC0+c2VyaWFsLT5kZXYs IHByaXYsIGN0cmwpOworCQlpZiAociA8IDAgJiYgb2xkX3Rlcm1pb3MpIHsKKwkJCXByaXYtPmJh dWRfcmF0ZSA9IHR0eV90ZXJtaW9zX2JhdWRfcmF0ZShvbGRfdGVybWlvcyk7CisJCQl0dHlfdGVy bWlvc19jb3B5X2h3KHR0eS0+dGVybWlvcywgb2xkX3Rlcm1pb3MpOworCQl9CiAJfQogCi0JY2gz NDFfc2V0X2hhbmRzaGFrZShwb3J0LT5zZXJpYWwtPmRldiwgcHJpdi0+bGluZV9jb250cm9sKTsK KwlzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdi0+bG9jaywgZmxhZ3MpOworCWlmIChDX0JBVUQodHR5 KSA9PSBCMCkKKwkJcHJpdi0+bGluZV9jb250cm9sICY9IH4oQ0gzNDFfQklUX0RUUiB8IENIMzQx X0JJVF9SVFMpOworCWVsc2UgaWYgKG9sZF90ZXJtaW9zICYmIChvbGRfdGVybWlvcy0+Y19jZmxh ZyAmIENCQVVEKSA9PSBCMCkKKwkJcHJpdi0+bGluZV9jb250cm9sIHw9IChDSDM0MV9CSVRfRFRS IHwgQ0gzNDFfQklUX1JUUyk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+bG9jaywg ZmxhZ3MpOwogCiAJLyogVW5pbXBsZW1lbnRlZDoKIAkgKiAoY2ZsYWcgJiBDU0laRSkgOiBkYXRh IGJpdHMgWzUsIDhdCkBAIC0zODYsNyArNDIyLDcgQEAgc3RhdGljIHZvaWQgY2gzNDFfc2V0X3Rl cm1pb3Moc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwKIHN0YXRpYyB2b2lkIGNoMzQxX2JyZWFrX2N0 bChzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgYnJlYWtfc3RhdGUpCiB7CiAJY29uc3QgdWlu dDE2X3QgY2gzNDFfYnJlYWtfcmVnID0KLQkJQ0gzNDFfUkVHX0JSRUFLMSB8ICgodWludDE2X3Qp IENIMzQxX1JFR19CUkVBSzIgPDwgOCk7CisJCQkoKHVpbnQxNl90KSBDSDM0MV9SRUdfTENSIDw8 IDgpIHwgQ0gzNDFfUkVHX0JSRUFLOwogCXN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQgPSB0 dHktPmRyaXZlcl9kYXRhOwogCWludCByOwogCXVpbnQxNl90IHJlZ19jb250ZW50czsKQEAgLTQx MSwxMiArNDQ3LDEyIEBAIHN0YXRpYyB2b2lkIGNoMzQxX2JyZWFrX2N0bChzdHJ1Y3QgdHR5X3N0 cnVjdCAqdHR5LCBpbnQgYnJlYWtfc3RhdGUpCiAJCQlfX2Z1bmNfXywgYnJlYWtfcmVnWzBdLCBi cmVha19yZWdbMV0pOwogCWlmIChicmVha19zdGF0ZSAhPSAwKSB7CiAJCWRiZygiJXMgLSBFbnRl ciBicmVhayBzdGF0ZSByZXF1ZXN0ZWQiLCBfX2Z1bmNfXyk7Ci0JCWJyZWFrX3JlZ1swXSAmPSB+ Q0gzNDFfTkJSRUFLX0JJVFNfUkVHMTsKLQkJYnJlYWtfcmVnWzFdICY9IH5DSDM0MV9OQlJFQUtf QklUU19SRUcyOworCQlicmVha19yZWdbMF0gJj0gfkNIMzQxX05CUkVBS19CSVRTOworCQlicmVh a19yZWdbMV0gJj0gfkNIMzQxX0xDUl9FTkFCTEVfVFg7CiAJfSBlbHNlIHsKIAkJZGJnKCIlcyAt IExlYXZlIGJyZWFrIHN0YXRlIHJlcXVlc3RlZCIsIF9fZnVuY19fKTsKLQkJYnJlYWtfcmVnWzBd IHw9IENIMzQxX05CUkVBS19CSVRTX1JFRzE7Ci0JCWJyZWFrX3JlZ1sxXSB8PSBDSDM0MV9OQlJF QUtfQklUU19SRUcyOworCQlicmVha19yZWdbMF0gfD0gQ0gzNDFfTkJSRUFLX0JJVFM7CisJCWJy ZWFrX3JlZ1sxXSB8PSBDSDM0MV9MQ1JfRU5BQkxFX1RYOwogCX0KIAlkYmcoIiVzIC0gTmV3IGNo MzQxIGJyZWFrIHJlZ2lzdGVyIGNvbnRlbnRzIC0gcmVnMTogJXgsIHJlZzI6ICV4IiwKIAkJCV9f ZnVuY19fLCBicmVha19yZWdbMF0sIGJyZWFrX3JlZ1sxXSk7CkBAIC02MDUsMTggKzY0MSwyNCBA QCBzdGF0aWMgaW50IGNoMzQxX3Rpb2NtZ2V0KHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpCiBzdGF0 aWMgaW50IGNoMzQxX3Jlc2V0X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZikKIHsK IAlzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRmKTsKLQlz dHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsID0gTlVMTDsKLQlzdHJ1Y3QgY2gzNDFfcHJpdmF0ZSAq cHJpdjsKLQotCXNlcmlhbCA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7Ci0JcHJpdiA9IHVzYl9n ZXRfc2VyaWFsX3BvcnRfZGF0YShzZXJpYWwtPnBvcnRbMF0pOworCXN0cnVjdCB1c2Jfc2VyaWFs ICpzZXJpYWwgPSB1c2JfZ2V0X2ludGZkYXRhKGludGYpOworCXN0cnVjdCB1c2Jfc2VyaWFsX3Bv cnQgKnBvcnQgPSBzZXJpYWwtPnBvcnRbMF07CisJc3RydWN0IGNoMzQxX3ByaXZhdGUgKnByaXYg PSB1c2JfZ2V0X3NlcmlhbF9wb3J0X2RhdGEocG9ydCk7CisJaW50IHJldDsKIAogCS8qcmVjb25m aWd1cmUgY2gzNDEgc2VyaWFsIHBvcnQgYWZ0ZXIgYnVzLXJlc2V0Ki8KIAljaDM0MV9jb25maWd1 cmUoZGV2LCBwcml2KTsKIAotCXVzYl9zZXJpYWxfcmVzdW1lKGludGYpOworCWlmIChwb3J0LT5w b3J0LmZsYWdzICYgQVNZTkNfSU5JVElBTElaRUQpIHsKKwkJcmV0ID0gdXNiX3N1Ym1pdF91cmIo cG9ydC0+aW50ZXJydXB0X2luX3VyYiwgR0ZQX05PSU8pOworCQlpZiAocmV0KSB7CisJCQlkZXZf ZXJyKCZwb3J0LT5kZXYsICJmYWlsZWQgdG8gc3VibWl0IGludGVycnVwdCB1cmI6ICVkXG4iLAor CQkJCXJldCk7CisJCQlyZXR1cm4gcmV0OworCQl9CisJfQogCi0JcmV0dXJuIDA7CisJcmV0dXJu IHVzYl9zZXJpYWxfZ2VuZXJpY19yZXN1bWUoc2VyaWFsKTsKIH0KIAogc3RhdGljIHN0cnVjdCB1 c2JfZHJpdmVyIGNoMzQxX2RyaXZlciA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3Nlcmlh bC9jeWJlcmphY2suYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9jeWJlcmphY2suYwppbmRleCBmNzQ0 YWI3YTNiMTkuLjJjZjg1ODcyZTkzOCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2N5 YmVyamFjay5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9jeWJlcmphY2suYwpAQCAtMTIyLDYg KzEyMiw5IEBAIHN0YXRpYyBpbnQgY3liZXJqYWNrX3N0YXJ0dXAoc3RydWN0IHVzYl9zZXJpYWwg KnNlcmlhbCkKIAogCWRiZygiJXMiLCBfX2Z1bmNfXyk7CiAKKwlpZiAoc2VyaWFsLT5udW1fYnVs a19vdXQgPCBzZXJpYWwtPm51bV9wb3J0cykKKwkJcmV0dXJuIC1FTk9ERVY7CisKIAkvKiBhbGxv Y2F0ZSB0aGUgcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZSAqLwogCXByaXYgPSBrbWFsbG9jKHNpemVv ZihzdHJ1Y3QgY3liZXJqYWNrX3ByaXZhdGUpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXByaXYpCmRp ZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvZ2FybWluX2dwcy5jIGIvZHJpdmVycy91c2Iv c2VyaWFsL2dhcm1pbl9ncHMuYwppbmRleCBlNjY0YmFjMjM3NTUuLjBjMWM4Y2E4NWUxZiAxMDA2 NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2dhcm1pbl9ncHMuYworKysgYi9kcml2ZXJzL3Vz Yi9zZXJpYWwvZ2FybWluX2dwcy5jCkBAIC0xMDc1LDYgKzEwNzUsNyBAQCBzdGF0aWMgaW50IGdh cm1pbl93cml0ZV9idWxrKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQsCiAJCSAgICIlcyAt IHVzYl9zdWJtaXRfdXJiKHdyaXRlIGJ1bGspIGZhaWxlZCB3aXRoIHN0YXR1cyA9ICVkXG4iLAog CQkJCV9fZnVuY19fLCBzdGF0dXMpOwogCQljb3VudCA9IHN0YXR1czsKKwkJa2ZyZWUoYnVmZmVy KTsKIAl9CiAKIAkvKiB3ZSBhcmUgZG9uZSB3aXRoIHRoaXMgdXJiLCBzbyBsZXQgdGhlIGhvc3Qg ZHJpdmVyCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYyBiL2Ry aXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jCmluZGV4IDBhZjBiNDFiYTliYy4uNWE3NmIx YzQ5M2YyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYworKysg Yi9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYwpAQCAtMjkzNiw2ICsyOTM2LDExIEBA IHN0YXRpYyBpbnQgZWRnZV9zdGFydHVwKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpCiAJCQkJ CUVER0VfQ09NUEFUSUJJTElUWV9NQVNLMSwKIAkJCQkJRURHRV9DT01QQVRJQklMSVRZX01BU0sy IH07CiAKKwlpZiAoc2VyaWFsLT5udW1fYnVsa19pbiA8IDEgfHwgc2VyaWFsLT5udW1faW50ZXJy dXB0X2luIDwgMSkgeworCQlkZXZfZXJyKCZzZXJpYWwtPmludGVyZmFjZS0+ZGV2LCAibWlzc2lu ZyBlbmRwb2ludHNcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKIAlkZXYgPSBzZXJpYWwt PmRldjsKIAogCS8qIGNyZWF0ZSBvdXIgcHJpdmF0ZSBzZXJpYWwgc3RydWN0dXJlICovCmRpZmYg LS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fdGkuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9p b190aS5jCmluZGV4IDQzODEzOGZjMzQ2YS4uNDg3NDk3MzNiMTE3IDEwMDY0NAotLS0gYS9kcml2 ZXJzL3VzYi9zZXJpYWwvaW9fdGkuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fdGkuYwpA QCAtMTUwMCw3ICsxNTAwLDcgQEAgc3RheWluYm9vdG1vZGU6CiAJZGJnKCIlcyAtIFNUQVlJTkcg SU4gQk9PVCBNT0RFIiwgX19mdW5jX18pOwogCXNlcmlhbC0+cHJvZHVjdF9pbmZvLlRpTW9kZSA9 IFRJX01PREVfQk9PVDsKIAotCXJldHVybiAwOworCXJldHVybiAxOwogfQogCiAKQEAgLTI2NDIs NiArMjY0MiwxMyBAQCBzdGF0aWMgaW50IGVkZ2Vfc3RhcnR1cChzdHJ1Y3QgdXNiX3NlcmlhbCAq c2VyaWFsKQogCiAJZGV2ID0gc2VyaWFsLT5kZXY7CiAKKwkvKiBNYWtlIHN1cmUgd2UgaGF2ZSB0 aGUgcmVxdWlyZWQgZW5kcG9pbnRzIHdoZW4gaW4gZG93bmxvYWQgbW9kZS4gKi8KKwlpZiAoc2Vy aWFsLT5pbnRlcmZhY2UtPmN1cl9hbHRzZXR0aW5nLT5kZXNjLmJOdW1FbmRwb2ludHMgPiAxKSB7 CisJCWlmIChzZXJpYWwtPm51bV9idWxrX2luIDwgc2VyaWFsLT5udW1fcG9ydHMgfHwKKwkJCQlz ZXJpYWwtPm51bV9idWxrX291dCA8IHNlcmlhbC0+bnVtX3BvcnRzKQorCQkJcmV0dXJuIC1FTk9E RVY7CisJfQorCiAJLyogY3JlYXRlIG91ciBwcml2YXRlIHNlcmlhbCBzdHJ1Y3R1cmUgKi8KIAll ZGdlX3NlcmlhbCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBlZGdlcG9ydF9zZXJpYWwpLCBHRlBf S0VSTkVMKTsKIAlpZiAoZWRnZV9zZXJpYWwgPT0gTlVMTCkgewpAQCAtMjY1MywxMSArMjY2MCwx NCBAQCBzdGF0aWMgaW50IGVkZ2Vfc3RhcnR1cChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKQog CXVzYl9zZXRfc2VyaWFsX2RhdGEoc2VyaWFsLCBlZGdlX3NlcmlhbCk7CiAKIAlzdGF0dXMgPSBk b3dubG9hZF9mdyhlZGdlX3NlcmlhbCk7Ci0JaWYgKHN0YXR1cykgeworCWlmIChzdGF0dXMgPCAw KSB7CiAJCWtmcmVlKGVkZ2Vfc2VyaWFsKTsKIAkJcmV0dXJuIHN0YXR1czsKIAl9CiAKKwlpZiAo c3RhdHVzID4gMCkKKwkJcmV0dXJuIDE7CS8qIGJpbmQgYnV0IGRvIG5vdCByZWdpc3RlciBhbnkg cG9ydHMgKi8KKwogCS8qIHNldCB1cCBvdXIgcG9ydCBwcml2YXRlIHN0cnVjdHVyZXMgKi8KIAlm b3IgKGkgPSAwOyBpIDwgc2VyaWFsLT5udW1fcG9ydHM7ICsraSkgewogCQllZGdlX3BvcnQgPSBr emFsbG9jKHNpemVvZihzdHJ1Y3QgZWRnZXBvcnRfcG9ydCksIEdGUF9LRVJORUwpOwpAQCAtMjcw OCw2ICsyNzE4LDggQEAgc3RhdGljIHZvaWQgZWRnZV9yZWxlYXNlKHN0cnVjdCB1c2Jfc2VyaWFs ICpzZXJpYWwpCiAKIAlmb3IgKGkgPSAwOyBpIDwgc2VyaWFsLT5udW1fcG9ydHM7ICsraSkgewog CQllZGdlX3BvcnQgPSB1c2JfZ2V0X3NlcmlhbF9wb3J0X2RhdGEoc2VyaWFsLT5wb3J0W2ldKTsK KwkJaWYgKCFlZGdlX3BvcnQpCisJCQljb250aW51ZTsKIAkJa2ZpZm9fZnJlZSgmZWRnZV9wb3J0 LT53cml0ZV9maWZvKTsKIAkJa2ZyZWUoZWRnZV9wb3J0KTsKIAl9CmRpZmYgLS1naXQgYS9kcml2 ZXJzL3VzYi9zZXJpYWwvaXV1X3Bob2VuaXguYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9pdXVfcGhv ZW5peC5jCmluZGV4IGNmMjY2OGViOWNkMy4uNDE4YTRlMzNhNjhiIDEwMDY0NAotLS0gYS9kcml2 ZXJzL3VzYi9zZXJpYWwvaXV1X3Bob2VuaXguYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaXV1 X3Bob2VuaXguYwpAQCAtMTEyLDcgKzExMiwxMiBAQCBzdGF0aWMgaW50IGl1dV9hbGxvY19idWYo c3RydWN0IGl1dV9wcml2YXRlICpwcml2KQogCiBzdGF0aWMgaW50IGl1dV9zdGFydHVwKHN0cnVj dCB1c2Jfc2VyaWFsICpzZXJpYWwpCiB7CisJdW5zaWduZWQgY2hhciBudW1fcG9ydHMgPSBzZXJp YWwtPm51bV9wb3J0czsKIAlzdHJ1Y3QgaXV1X3ByaXZhdGUgKnByaXY7CisKKwlpZiAoc2VyaWFs LT5udW1fYnVsa19pbiA8IG51bV9wb3J0cyB8fCBzZXJpYWwtPm51bV9idWxrX291dCA8IG51bV9w b3J0cykKKwkJcmV0dXJuIC1FTk9ERVY7CisKIAlwcml2ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0 IGl1dV9wcml2YXRlKSwgR0ZQX0tFUk5FTCk7CiAJZGJnKCIlcy0gcHJpdiBhbGxvY2F0aW9uIHN1 Y2Nlc3MiLCBfX2Z1bmNfXyk7CiAJaWYgKCFwcml2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Iv c2VyaWFsL2tleXNwYW5fcGRhLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwva2V5c3Bhbl9wZGEuYwpp bmRleCA2NjFhMWEyMjcwOTIuLjY1YTA5MDY2MGU3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Iv c2VyaWFsL2tleXNwYW5fcGRhLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2tleXNwYW5fcGRh LmMKQEAgLTgwNiw5ICs4MDYsMTUgQEAgTU9EVUxFX0ZJUk1XQVJFKCJrZXlzcGFuX3BkYS94aXJj b21fcGdzLmZ3Iik7CiAKIHN0YXRpYyBpbnQga2V5c3Bhbl9wZGFfc3RhcnR1cChzdHJ1Y3QgdXNi X3NlcmlhbCAqc2VyaWFsKQogewotCisJdW5zaWduZWQgY2hhciBudW1fcG9ydHMgPSBzZXJpYWwt Pm51bV9wb3J0czsKIAlzdHJ1Y3Qga2V5c3Bhbl9wZGFfcHJpdmF0ZSAqcHJpdjsKIAorCWlmIChz ZXJpYWwtPm51bV9idWxrX291dCA8IG51bV9wb3J0cyB8fAorCQkJc2VyaWFsLT5udW1faW50ZXJy dXB0X2luIDwgbnVtX3BvcnRzKSB7CisJCWRldl9lcnIoJnNlcmlhbC0+aW50ZXJmYWNlLT5kZXYs ICJtaXNzaW5nIGVuZHBvaW50c1xuIik7CisJCXJldHVybiAtRU5PREVWOworCX0KKwogCS8qIGFs bG9jYXRlIHRoZSBwcml2YXRlIGRhdGEgc3RydWN0dXJlcyBmb3IgYWxsIHBvcnRzLiBXZWxsLCBm b3IgYWxsCiAJICAgb25lIHBvcnRzLiAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJp YWwva2w1a3VzYjEwNS5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2tsNWt1c2IxMDUuYwppbmRleCAy Y2Y5MmYxZDI4NDcuLjU5Y2VjZTEyMDM3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFs L2tsNWt1c2IxMDUuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwva2w1a3VzYjEwNS5jCkBAIC0z MzgsNyArMzM4LDcgQEAgc3RhdGljIGludCAga2xzaV8xMDVfb3BlbihzdHJ1Y3QgdHR5X3N0cnVj dCAqdHR5LCBzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQogCXJjID0gdXNiX3NlcmlhbF9n ZW5lcmljX29wZW4odHR5LCBwb3J0KTsKIAlpZiAocmMpIHsKIAkJcmV0dmFsID0gcmM7Ci0JCWdv dG8gZXhpdDsKKwkJZ290byBlcnJfZnJlZV9jZmc7CiAJfQogCiAJcmMgPSB1c2JfY29udHJvbF9t c2cocG9ydC0+c2VyaWFsLT5kZXYsCkBAIC0zNTMsMjEgKzM1MywzOCBAQCBzdGF0aWMgaW50ICBr bHNpXzEwNV9vcGVuKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCB1c2Jfc2VyaWFsX3Bv cnQgKnBvcnQpCiAJaWYgKHJjIDwgMCkgewogCQlkZXZfZXJyKCZwb3J0LT5kZXYsICJFbmFibGlu ZyByZWFkIGZhaWxlZCAoZXJyb3IgPSAlZClcbiIsIHJjKTsKIAkJcmV0dmFsID0gcmM7CisJCWdv dG8gZXJyX2dlbmVyaWNfY2xvc2U7CiAJfSBlbHNlCiAJCWRiZygiJXMgLSBlbmFibGVkIHJlYWRp bmciLCBfX2Z1bmNfXyk7CiAKIAlyYyA9IGtsc2lfMTA1X2dldF9saW5lX3N0YXRlKHBvcnQsICZs aW5lX3N0YXRlKTsKLQlpZiAocmMgPj0gMCkgewotCQlzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdi0+ bG9jaywgZmxhZ3MpOwotCQlwcml2LT5saW5lX3N0YXRlID0gbGluZV9zdGF0ZTsKLQkJc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+bG9jaywgZmxhZ3MpOwotCQlkYmcoIiVzIC0gcmVhZCBs aW5lIHN0YXRlIDB4JWx4IiwgX19mdW5jX18sIGxpbmVfc3RhdGUpOwotCQlyZXR2YWwgPSAwOwot CX0gZWxzZQorCWlmIChyYyA8IDApIHsKIAkJcmV0dmFsID0gcmM7CisJCWdvdG8gZXJyX2Rpc2Fi bGVfcmVhZDsKKwl9CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdi0+bG9jaywgZmxhZ3MpOwor CXByaXYtPmxpbmVfc3RhdGUgPSBsaW5lX3N0YXRlOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JnByaXYtPmxvY2ssIGZsYWdzKTsKKwlkZXZfZGJnKCZwb3J0LT5kZXYsICIlcyAtIHJlYWQgbGlu ZSBzdGF0ZSAweCVseFxuIiwgX19mdW5jX18sCisJCQlsaW5lX3N0YXRlKTsKIAotZXhpdDoKKwly ZXR1cm4gMDsKKworZXJyX2Rpc2FibGVfcmVhZDoKKwl1c2JfY29udHJvbF9tc2cocG9ydC0+c2Vy aWFsLT5kZXYsCisJCQkgICAgIHVzYl9zbmRjdHJscGlwZShwb3J0LT5zZXJpYWwtPmRldiwgMCks CisJCQkgICAgIEtMNUtVU0IxMDVBX1NJT19DT05GSUdVUkUsCisJCQkgICAgIFVTQl9UWVBFX1ZF TkRPUiB8IFVTQl9ESVJfT1VULAorCQkJICAgICBLTDVLVVNCMTA1QV9TSU9fQ09ORklHVVJFX1JF QURfT0ZGLAorCQkJICAgICAwLCAvKiBpbmRleCAqLworCQkJICAgICBOVUxMLCAwLAorCQkJICAg ICBLTFNJX1RJTUVPVVQpOworZXJyX2dlbmVyaWNfY2xvc2U6CisJdXNiX3NlcmlhbF9nZW5lcmlj X2Nsb3NlKHBvcnQpOworZXJyX2ZyZWVfY2ZnOgogCWtmcmVlKGNmZyk7CisKIAlyZXR1cm4gcmV0 dmFsOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwva29iaWxfc2N0LmMgYi9k cml2ZXJzL3VzYi9zZXJpYWwva29iaWxfc2N0LmMKaW5kZXggMTZhNjQyMDgyOGI5Li5jZjVmNTMw ODNjNmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9rb2JpbF9zY3QuYworKysgYi9k cml2ZXJzL3VzYi9zZXJpYWwva29iaWxfc2N0LmMKQEAgLTE1MCw2ICsxNTAsMTEgQEAgc3RhdGlj IGludCBrb2JpbF9zdGFydHVwKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpCiAJc3RydWN0IHVz Yl9ob3N0X2ludGVyZmFjZSAqYWx0c2V0dGluZzsKIAlzdHJ1Y3QgdXNiX2hvc3RfZW5kcG9pbnQg KmVuZHBvaW50OwogCisJaWYgKHNlcmlhbC0+bnVtX2ludGVycnVwdF9vdXQgPCBzZXJpYWwtPm51 bV9wb3J0cykgeworCQlkZXZfZXJyKCZzZXJpYWwtPmludGVyZmFjZS0+ZGV2LCAibWlzc2luZyBp bnRlcnJ1cHQtb3V0IGVuZHBvaW50XG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCiAJcHJp diA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBrb2JpbF9wcml2YXRlKSwgR0ZQX0tFUk5FTCk7CiAJ aWYgKCFwcml2KQogCQlyZXR1cm4gLUVOT01FTTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3Nl cmlhbC9tb3M3NzIwLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvbW9zNzcyMC5jCmluZGV4IGUzNjA5 Yjg0YjdhOC4uZWQ0NmE3NjU2MDBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvbW9z NzcyMC5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9tb3M3NzIwLmMKQEAgLTczLDggKzczLDYg QEAgc3RydWN0IG1vc2NoaXBfcG9ydCB7CiAKIHN0YXRpYyBpbnQgZGVidWc7CiAKLXN0YXRpYyBz dHJ1Y3QgdXNiX3NlcmlhbF9kcml2ZXIgbW9zY2hpcDc3MjBfMnBvcnRfZHJpdmVyOwotCiAjZGVm aW5lIFVTQl9WRU5ET1JfSURfTU9TQ0hJUAkJMHg5NzEwCiAjZGVmaW5lIE1PU0NISVBfREVWSUNF X0lEXzc3MjAJCTB4NzcyMAogI2RlZmluZSBNT1NDSElQX0RFVklDRV9JRF83NzE1CQkweDc3MTUK QEAgLTEwMDEsMjUgKzk5OSw2IEBAIHN0YXRpYyB2b2lkIG1vczc3MjBfYnVsa19vdXRfZGF0YV9j YWxsYmFjayhzdHJ1Y3QgdXJiICp1cmIpCiAJdHR5X2tyZWZfcHV0KHR0eSk7CiB9CiAKLS8qCi0g KiBtb3M3N3h4X3Byb2JlCi0gKgl0aGlzIGZ1bmN0aW9uIGluc3RhbGxzIHRoZSBhcHByb3ByaWF0 ZSByZWFkIGludGVycnVwdCBlbmRwb2ludCBjYWxsYmFjawotICoJZGVwZW5kaW5nIG9uIHdoZXRo ZXIgdGhlIGRldmljZSBpcyBhIDc3MjAgb3IgNzcxNSwgdGh1cyBhdm9pZGluZyBjb3N0bHkKLSAq CXJ1bi10aW1lIGNoZWNrcyBpbiB0aGUgaGlnaC1mcmVxdWVuY3kgY2FsbGJhY2sgcm91dGluZSBp dHNlbGYuCi0gKi8KLXN0YXRpYyBpbnQgbW9zNzd4eF9wcm9iZShzdHJ1Y3QgdXNiX3NlcmlhbCAq c2VyaWFsLAotCQkJIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCkKLXsKLQlpZiAoaWQt PmlkUHJvZHVjdCA9PSBNT1NDSElQX0RFVklDRV9JRF83NzE1KQotCQltb3NjaGlwNzcyMF8ycG9y dF9kcml2ZXIucmVhZF9pbnRfY2FsbGJhY2sgPQotCQkJbW9zNzcxNV9pbnRlcnJ1cHRfY2FsbGJh Y2s7Ci0JZWxzZQotCQltb3NjaGlwNzcyMF8ycG9ydF9kcml2ZXIucmVhZF9pbnRfY2FsbGJhY2sg PQotCQkJbW9zNzcyMF9pbnRlcnJ1cHRfY2FsbGJhY2s7Ci0KLQlyZXR1cm4gMDsKLX0KLQogc3Rh dGljIGludCBtb3M3N3h4X2NhbGNfbnVtX3BvcnRzKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwp CiB7CiAJdTE2IHByb2R1Y3QgPSBsZTE2X3RvX2NwdShzZXJpYWwtPmRldi0+ZGVzY3JpcHRvci5p ZFByb2R1Y3QpOwpAQCAtMjA3OSw2ICsyMDU4LDExIEBAIHN0YXRpYyBpbnQgbW9zNzcyMF9zdGFy dHVwKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpCiAJCXJldHVybiAtRU5PREVWOwogCX0KIAor CWlmIChzZXJpYWwtPm51bV9idWxrX2luIDwgMiB8fCBzZXJpYWwtPm51bV9idWxrX291dCA8IDIp IHsKKwkJZGV2X2Vycigmc2VyaWFsLT5pbnRlcmZhY2UtPmRldiwgIm1pc3NpbmcgYnVsayBlbmRw b2ludHNcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKIAlwcm9kdWN0ID0gbGUxNl90b19j cHUoc2VyaWFsLT5kZXYtPmRlc2NyaXB0b3IuaWRQcm9kdWN0KTsKIAlkZXYgPSBzZXJpYWwtPmRl djsKIApAQCAtMjEwMyw2ICsyMDg3LDEyIEBAIHN0YXRpYyBpbnQgbW9zNzcyMF9zdGFydHVwKHN0 cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpCiAJCQl0bXAtPmludGVycnVwdF9pbl9lbmRwb2ludEFk ZHJlc3M7CiAJCXNlcmlhbC0+cG9ydFsxXS0+aW50ZXJydXB0X2luX3VyYiA9IE5VTEw7CiAJCXNl cmlhbC0+cG9ydFsxXS0+aW50ZXJydXB0X2luX2J1ZmZlciA9IE5VTEw7CisKKwkJaWYgKHNlcmlh bC0+cG9ydFswXS0+aW50ZXJydXB0X2luX3VyYikgeworCQkJc3RydWN0IHVyYiAqdXJiID0gc2Vy aWFsLT5wb3J0WzBdLT5pbnRlcnJ1cHRfaW5fdXJiOworCisJCQl1cmItPmNvbXBsZXRlID0gbW9z NzcxNV9pbnRlcnJ1cHRfY2FsbGJhY2s7CisJCX0KIAl9CiAKIApAQCAtMjEzMiwxMyArMjEyMiw2 IEBAIHN0YXRpYyBpbnQgbW9zNzcyMF9zdGFydHVwKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwp CiAJdXNiX2NvbnRyb2xfbXNnKHNlcmlhbC0+ZGV2LCB1c2Jfc25kY3RybHBpcGUoc2VyaWFsLT5k ZXYsIDApLAogCQkJKF9fdTgpMHgwMywgMHgwMCwgMHgwMSwgMHgwMCwgTlVMTCwgMHgwMCwgNTAw MCk7CiAKLQkvKiBzdGFydCB0aGUgaW50ZXJydXB0IHVyYiAqLwotCXJldF92YWwgPSB1c2Jfc3Vi bWl0X3VyYihzZXJpYWwtPnBvcnRbMF0tPmludGVycnVwdF9pbl91cmIsIEdGUF9LRVJORUwpOwot CWlmIChyZXRfdmFsKQotCQlkZXZfZXJyKCZkZXYtPmRldiwKLQkJCSIlcyAtIEVycm9yICVkIHN1 Ym1pdHRpbmcgY29udHJvbCB1cmJcbiIsCi0JCQlfX2Z1bmNfXywgcmV0X3ZhbCk7Ci0KICNpZmRl ZiBDT05GSUdfVVNCX1NFUklBTF9NT1M3NzE1X1BBUlBPUlQKIAlpZiAocHJvZHVjdCA9PSBNT1ND SElQX0RFVklDRV9JRF83NzE1KSB7CiAJCXJldF92YWwgPSBtb3M3NzE1X3BhcnBvcnRfaW5pdChz ZXJpYWwpOwpAQCAtMjE0Niw2ICsyMTI5LDEzIEBAIHN0YXRpYyBpbnQgbW9zNzcyMF9zdGFydHVw KHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpCiAJCQlyZXR1cm4gcmV0X3ZhbDsKIAl9CiAjZW5k aWYKKwkvKiBzdGFydCB0aGUgaW50ZXJydXB0IHVyYiAqLworCXJldF92YWwgPSB1c2Jfc3VibWl0 X3VyYihzZXJpYWwtPnBvcnRbMF0tPmludGVycnVwdF9pbl91cmIsIEdGUF9LRVJORUwpOworCWlm IChyZXRfdmFsKSB7CisJCWRldl9lcnIoJmRldi0+ZGV2LCAiZmFpbGVkIHRvIHN1Ym1pdCBpbnRl cnJ1cHQgdXJiOiAlZFxuIiwKKwkJCXJldF92YWwpOworCX0KKwogCS8qIExTUiBGb3IgUG9ydCAx ICovCiAJcmVhZF9tb3NfcmVnKHNlcmlhbCwgMCwgTFNSLCAmZGF0YSk7CiAJZGJnKCJMU1I6JXgi LCBkYXRhKTsKQEAgLTIxNTcsNiArMjE0Nyw4IEBAIHN0YXRpYyB2b2lkIG1vczc3MjBfcmVsZWFz ZShzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKQogewogCWludCBpOwogCisJdXNiX2tpbGxfdXJi KHNlcmlhbC0+cG9ydFswXS0+aW50ZXJydXB0X2luX3VyYik7CisKICNpZmRlZiBDT05GSUdfVVNC X1NFUklBTF9NT1M3NzE1X1BBUlBPUlQKIAkvKiBjbG9zZSB0aGUgcGFyYWxsZWwgcG9ydCAqLwog CkBAIC0yMjIxLDcgKzIyMTMsNiBAQCBzdGF0aWMgc3RydWN0IHVzYl9zZXJpYWxfZHJpdmVyIG1v c2NoaXA3NzIwXzJwb3J0X2RyaXZlciA9IHsKIAkuY2xvc2UJCQk9IG1vczc3MjBfY2xvc2UsCiAJ LnRocm90dGxlCQk9IG1vczc3MjBfdGhyb3R0bGUsCiAJLnVudGhyb3R0bGUJCT0gbW9zNzcyMF91 bnRocm90dGxlLAotCS5wcm9iZQkJCT0gbW9zNzd4eF9wcm9iZSwKIAkuYXR0YWNoCQkJPSBtb3M3 NzIwX3N0YXJ0dXAsCiAJLnJlbGVhc2UJCT0gbW9zNzcyMF9yZWxlYXNlLAogCS5pb2N0bAkJCT0g bW9zNzcyMF9pb2N0bCwKQEAgLTIyMzQsNyArMjIyNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgdXNiX3Nl cmlhbF9kcml2ZXIgbW9zY2hpcDc3MjBfMnBvcnRfZHJpdmVyID0gewogCS5jaGFyc19pbl9idWZm ZXIJPSBtb3M3NzIwX2NoYXJzX2luX2J1ZmZlciwKIAkuYnJlYWtfY3RsCQk9IG1vczc3MjBfYnJl YWssCiAJLnJlYWRfYnVsa19jYWxsYmFjawk9IG1vczc3MjBfYnVsa19pbl9jYWxsYmFjaywKLQku cmVhZF9pbnRfY2FsbGJhY2sJPSBOVUxMICAvKiBkeW5hbWljYWxseSBhc3NpZ25lZCBpbiBwcm9i ZSgpICovCisJLnJlYWRfaW50X2NhbGxiYWNrCT0gbW9zNzcyMF9pbnRlcnJ1cHRfY2FsbGJhY2ss CiB9OwogCiBzdGF0aWMgaW50IF9faW5pdCBtb3NjaGlwNzcyMF9pbml0KHZvaWQpCmRpZmYgLS1n aXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvbW9zNzg0MC5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL21v czc4NDAuYwppbmRleCA1OWZkYjg0ZDAxNmYuLjY0Mzg5ODk0M2ExNSAxMDA2NDQKLS0tIGEvZHJp dmVycy91c2Ivc2VyaWFsL21vczc4NDAuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvbW9zNzg0 MC5jCkBAIC0xMDcxLDkgKzEwNzEsNyBAQCBzdGF0aWMgaW50IG1vczc4NDBfb3BlbihzdHJ1Y3Qg dHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQogCQkJCXNlcmlh bCwKIAkJCQlzZXJpYWwtPnBvcnRbMF0tPmludGVycnVwdF9pbl91cmItPmludGVydmFsKTsKIAot CQkJLyogc3RhcnQgaW50ZXJydXB0IHJlYWQgZm9yIG1vczc4NDAgICAgICAgICAgICAgICAqCi0J CQkgKiB3aWxsIGNvbnRpbnVlIGFzIGxvbmcgYXMgbW9zNzg0MCBpcyBjb25uZWN0ZWQgICovCi0K KwkJCS8qIHN0YXJ0IGludGVycnVwdCByZWFkIGZvciBtb3M3ODQwICovCiAJCQlyZXNwb25zZSA9 CiAJCQkgICAgdXNiX3N1Ym1pdF91cmIoc2VyaWFsLT5wb3J0WzBdLT5pbnRlcnJ1cHRfaW5fdXJi LAogCQkJCQkgICBHRlBfS0VSTkVMKTsKQEAgLTIzODYsNiArMjM4NCwxMiBAQCBzdGF0aWMgaW50 IG1vczc4NDBfc3RhcnR1cChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKQogCQlyZXR1cm4gLTE7 CiAJfQogCisJaWYgKHNlcmlhbC0+bnVtX2J1bGtfaW4gPCBzZXJpYWwtPm51bV9wb3J0cyB8fAor CQkJc2VyaWFsLT5udW1fYnVsa19vdXQgPCBzZXJpYWwtPm51bV9wb3J0cykgeworCQlkZXZfZXJy KCZzZXJpYWwtPmludGVyZmFjZS0+ZGV2LCAibWlzc2luZyBlbmRwb2ludHNcbiIpOworCQlyZXR1 cm4gLUVOT0RFVjsKKwl9CisKIAlkZXYgPSBzZXJpYWwtPmRldjsKIAogCWRiZygiJXMiLCAiRW50 ZXJpbmcuLi4iKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9vbW5pbmV0LmMgYi9k cml2ZXJzL3VzYi9zZXJpYWwvb21uaW5ldC5jCmluZGV4IDBhOGMxZTY0YjI0Ny4uNWM3YWJmYjlh ZWE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvb21uaW5ldC5jCisrKyBiL2RyaXZl cnMvdXNiL3NlcmlhbC9vbW5pbmV0LmMKQEAgLTE1Miw2ICsxNTIsMTIgQEAgc3RhdGljIGludCBv bW5pbmV0X2F0dGFjaChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKQogCXN0cnVjdCBvbW5pbmV0 X2RhdGEgKm9kOwogCXN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQgPSBzZXJpYWwtPnBvcnRb MF07CiAKKwkvKiBUaGUgc2Vjb25kIGJ1bGstb3V0IGVuZHBvaW50IGlzIHVzZWQgZm9yIHdyaXRp bmcuICovCisJaWYgKHNlcmlhbC0+bnVtX2J1bGtfb3V0IDwgMikgeworCQlkZXZfZXJyKCZzZXJp YWwtPmludGVyZmFjZS0+ZGV2LCAibWlzc2luZyBlbmRwb2ludHNcbiIpOworCQlyZXR1cm4gLUVO T0RFVjsKKwl9CisKIAlvZCA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBvbW5pbmV0X2RhdGEpLCBH RlBfS0VSTkVMKTsKIAlpZiAoIW9kKSB7CiAJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzLSBrbWFs bG9jKCVaZCkgZmFpbGVkLlxuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9vcHRp b24uYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9vcHRpb24uYwppbmRleCAxMGU3OWI3NmU4ZDEuLmU0 MjFlYjhmYmI5ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL29wdGlvbi5jCisrKyBi L2RyaXZlcnMvdXNiL3NlcmlhbC9vcHRpb24uYwpAQCAtMjY5LDYgKzI2OSw4IEBAIHN0YXRpYyB2 b2lkIG9wdGlvbl9pbnN0YXRfY2FsbGJhY2soc3RydWN0IHVyYiAqdXJiKTsKICNkZWZpbmUgVEVM SVRfUFJPRFVDVF9DQzg2NF9TSU5HTEUJCTB4MTAwNgogI2RlZmluZSBURUxJVF9QUk9EVUNUX0RF OTEwX0RVQUwJCTB4MTAxMAogI2RlZmluZSBURUxJVF9QUk9EVUNUX1VFOTEwX1YyCQkJMHgxMDEy CisjZGVmaW5lIFRFTElUX1BST0RVQ1RfTEU5MjJfVVNCQ0ZHMQkJMHgxMDQwCisjZGVmaW5lIFRF TElUX1BST0RVQ1RfTEU5MjJfVVNCQ0ZHMgkJMHgxMDQxCiAjZGVmaW5lIFRFTElUX1BST0RVQ1Rf TEU5MjJfVVNCQ0ZHMAkJMHgxMDQyCiAjZGVmaW5lIFRFTElUX1BST0RVQ1RfTEU5MjJfVVNCQ0ZH MwkJMHgxMDQzCiAjZGVmaW5lIFRFTElUX1BST0RVQ1RfTEU5MjAJCQkweDEyMDAKQEAgLTExOTYs NiArMTE5OCwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgb3B0aW9uX2lk c1tdID0gewogCXsgVVNCX0RFVklDRShURUxJVF9WRU5ET1JfSUQsIFRFTElUX1BST0RVQ1RfVUU5 MTBfVjIpIH0sCiAJeyBVU0JfREVWSUNFKFRFTElUX1ZFTkRPUl9JRCwgVEVMSVRfUFJPRFVDVF9M RTkyMl9VU0JDRkcwKSwKIAkJLmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KSZ0ZWxpdF9s ZTkyMl9ibGFja2xpc3RfdXNiY2ZnMCB9LAorCXsgVVNCX0RFVklDRShURUxJVF9WRU5ET1JfSUQs IFRFTElUX1BST0RVQ1RfTEU5MjJfVVNCQ0ZHMSksCisJCS5kcml2ZXJfaW5mbyA9IChrZXJuZWxf dWxvbmdfdCkmdGVsaXRfbGU5MTBfYmxhY2tsaXN0IH0sCisJeyBVU0JfREVWSUNFKFRFTElUX1ZF TkRPUl9JRCwgVEVMSVRfUFJPRFVDVF9MRTkyMl9VU0JDRkcyKSwKKwkJLmRyaXZlcl9pbmZvID0g KGtlcm5lbF91bG9uZ190KSZ0ZWxpdF9sZTkyMl9ibGFja2xpc3RfdXNiY2ZnMyB9LAogCXsgVVNC X0RFVklDRShURUxJVF9WRU5ET1JfSUQsIFRFTElUX1BST0RVQ1RfTEU5MjJfVVNCQ0ZHMyksCiAJ CS5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdCkmdGVsaXRfbGU5MjJfYmxhY2tsaXN0X3Vz YmNmZzMgfSwKIAl7IFVTQl9ERVZJQ0UoVEVMSVRfVkVORE9SX0lELCBURUxJVF9QUk9EVUNUX0xF OTEwKSwKQEAgLTE5NTcsNiArMTk2Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2Rldmlj ZV9pZCBvcHRpb25faWRzW10gPSB7CiAJeyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTyhX RVRFTEVDT01fVkVORE9SX0lELCBXRVRFTEVDT01fUFJPRFVDVF9XTUQyMDAsIDB4ZmYsIDB4ZmYs IDB4ZmYpIH0sCiAJeyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTyhXRVRFTEVDT01fVkVO RE9SX0lELCBXRVRFTEVDT01fUFJPRFVDVF82ODAyLCAweGZmLCAweGZmLCAweGZmKSB9LAogCXsg VVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oV0VURUxFQ09NX1ZFTkRPUl9JRCwgV0VURUxF Q09NX1BST0RVQ1RfV01EMzAwLCAweGZmLCAweGZmLCAweGZmKSB9LAorCXsgVVNCX0RFVklDRV9B TkRfSU5URVJGQUNFX0lORk8oMHgwM2YwLCAweDQyMWQsIDB4ZmYsIDB4ZmYsIDB4ZmYpIH0sIC8q IEhQIGx0MjUyMyAoTm92YXRlbCBFMzcxKSAqLwogCXsgfSAvKiBUZXJtaW5hdGluZyBlbnRyeSAq LwogfTsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBvcHRpb25faWRzKTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvdXNiL3NlcmlhbC9vdGk2ODU4LmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvb3RpNjg1 OC5jCmluZGV4IDhjZWFhODlmZTNjOS4uZGZmYmU2MThmOWY1IDEwMDY0NAotLS0gYS9kcml2ZXJz L3VzYi9zZXJpYWwvb3RpNjg1OC5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9vdGk2ODU4LmMK QEAgLTM0Nyw5ICszNDcsMTcgQEAgc3RhdGljIHZvaWQgc2VuZF9kYXRhKHN0cnVjdCB3b3JrX3N0 cnVjdCAqd29yaykKIHN0YXRpYyBpbnQgb3RpNjg1OF9zdGFydHVwKHN0cnVjdCB1c2Jfc2VyaWFs ICpzZXJpYWwpCiB7CiAJc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCA9IHNlcmlhbC0+cG9y dFswXTsKKwl1bnNpZ25lZCBjaGFyIG51bV9wb3J0cyA9IHNlcmlhbC0+bnVtX3BvcnRzOwogCXN0 cnVjdCBvdGk2ODU4X3ByaXZhdGUgKnByaXY7CiAJaW50IGk7CiAKKwlpZiAoc2VyaWFsLT5udW1f YnVsa19pbiA8IG51bV9wb3J0cyB8fAorCQkJc2VyaWFsLT5udW1fYnVsa19vdXQgPCBudW1fcG9y dHMgfHwKKwkJCXNlcmlhbC0+bnVtX2ludGVycnVwdF9pbiA8IG51bV9wb3J0cykgeworCQlkZXZf ZXJyKCZzZXJpYWwtPmludGVyZmFjZS0+ZGV2LCAibWlzc2luZyBlbmRwb2ludHNcbiIpOworCQly ZXR1cm4gLUVOT0RFVjsKKwl9CisKIAlmb3IgKGkgPSAwOyBpIDwgc2VyaWFsLT5udW1fcG9ydHM7 ICsraSkgewogCQlwcml2ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IG90aTY4NThfcHJpdmF0ZSks IEdGUF9LRVJORUwpOwogCQlpZiAoIXByaXYpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJp YWwvcGwyMzAzLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvcGwyMzAzLmMKaW5kZXggYTQ0MDM4N2Zk M2Y3Li41OTEwZGFjZWU4Y2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9wbDIzMDMu YworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvcGwyMzAzLmMKQEAgLTU1LDYgKzU1LDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIGlkX3RhYmxlW10gPSB7CiAJeyBVU0JfREVW SUNFKElPREFUQV9WRU5ET1JfSUQsIElPREFUQV9QUk9EVUNUX0lEKSB9LAogCXsgVVNCX0RFVklD RShJT0RBVEFfVkVORE9SX0lELCBJT0RBVEFfUFJPRFVDVF9JRF9SU0FRNSkgfSwKIAl7IFVTQl9E RVZJQ0UoQVRFTl9WRU5ET1JfSUQsIEFURU5fUFJPRFVDVF9JRCkgfSwKKwl7IFVTQl9ERVZJQ0Uo QVRFTl9WRU5ET1JfSUQsIEFURU5fUFJPRFVDVF9JRDIpIH0sCiAJeyBVU0JfREVWSUNFKEFURU5f VkVORE9SX0lEMiwgQVRFTl9QUk9EVUNUX0lEKSB9LAogCXsgVVNCX0RFVklDRShFTENPTV9WRU5E T1JfSUQsIEVMQ09NX1BST0RVQ1RfSUQpIH0sCiAJeyBVU0JfREVWSUNFKEVMQ09NX1ZFTkRPUl9J RCwgRUxDT01fUFJPRFVDVF9JRF9VQ1NHVCkgfSwKQEAgLTE4NSwxMCArMTg2LDE4IEBAIHN0YXRp YyBpbnQgcGwyMzAzX3ZlbmRvcl93cml0ZShfX3UxNiB2YWx1ZSwgX191MTYgaW5kZXgsCiBzdGF0 aWMgaW50IHBsMjMwM19zdGFydHVwKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpCiB7CiAJc3Ry dWN0IHBsMjMwM19wcml2YXRlICpwcml2OworCXVuc2lnbmVkIGNoYXIgbnVtX3BvcnRzID0gc2Vy aWFsLT5udW1fcG9ydHM7CiAJZW51bSBwbDIzMDNfdHlwZSB0eXBlID0gdHlwZV8wOwogCXVuc2ln bmVkIGNoYXIgKmJ1ZjsKIAlpbnQgaTsKIAorCWlmIChzZXJpYWwtPm51bV9idWxrX2luIDwgbnVt X3BvcnRzIHx8CisJCQlzZXJpYWwtPm51bV9idWxrX291dCA8IG51bV9wb3J0cyB8fAorCQkJc2Vy aWFsLT5udW1faW50ZXJydXB0X2luIDwgbnVtX3BvcnRzKSB7CisJCWRldl9lcnIoJnNlcmlhbC0+ aW50ZXJmYWNlLT5kZXYsICJtaXNzaW5nIGVuZHBvaW50c1xuIik7CisJCXJldHVybiAtRU5PREVW OworCX0KKwogCWJ1ZiA9IGttYWxsb2MoMTAsIEdGUF9LRVJORUwpOwogCWlmIChidWYgPT0gTlVM TCkKIAkJcmV0dXJuIC1FTk9NRU07CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvcGwy MzAzLmggYi9kcml2ZXJzL3VzYi9zZXJpYWwvcGwyMzAzLmgKaW5kZXggZTNiN2FmOGFkZmI3Li4w OWQ5YmU4ODIwOWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9wbDIzMDMuaAorKysg Yi9kcml2ZXJzL3VzYi9zZXJpYWwvcGwyMzAzLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUg QVRFTl9WRU5ET1JfSUQJCTB4MDU1NwogI2RlZmluZSBBVEVOX1ZFTkRPUl9JRDIJCTB4MDU0Nwog I2RlZmluZSBBVEVOX1BST0RVQ1RfSUQJCTB4MjAwOAorI2RlZmluZSBBVEVOX1BST0RVQ1RfSUQy CTB4MjExOAogCiAjZGVmaW5lIElPREFUQV9WRU5ET1JfSUQJMHgwNGJiCiAjZGVmaW5lIElPREFU QV9QUk9EVUNUX0lECTB4MGEwMwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4 eDUuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9zcGNwOHg1LmMKaW5kZXggMmY2N2I5OTI4MmNjLi43 NjBlZTk2YzMzNDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9zcGNwOHg1LmMKKysr IGIvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuYwpAQCAtMTc2LDYgKzE3NiwxMyBAQCBzdGF0 aWMgaW50IHNwY3A4eDVfc3RhcnR1cChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKQogCWludCBp OwogCWVudW0gc3BjcDh4NV90eXBlIHR5cGUgPSBTUENQODI1XzAwN19UWVBFOwogCXUxNiBwcm9k dWN0ID0gbGUxNl90b19jcHUoc2VyaWFsLT5kZXYtPmRlc2NyaXB0b3IuaWRQcm9kdWN0KTsKKwl1 bnNpZ25lZCBjaGFyIG51bV9wb3J0cyA9IHNlcmlhbC0+bnVtX3BvcnRzOworCisJaWYgKHNlcmlh bC0+bnVtX2J1bGtfaW4gPCBudW1fcG9ydHMgfHwKKwkJCXNlcmlhbC0+bnVtX2J1bGtfb3V0IDwg bnVtX3BvcnRzKSB7CisJCWRldl9lcnIoJnNlcmlhbC0+aW50ZXJmYWNlLT5kZXYsICJtaXNzaW5n IGVuZHBvaW50c1xuIik7CisJCXJldHVybiAtRU5PREVWOworCX0KIAogCWlmIChwcm9kdWN0ID09 IDB4MDIwMSkKIAkJdHlwZSA9IFNQQ1A4MjVfMDA3X1RZUEU7CmRpZmYgLS1naXQgYS9kcml2ZXJz L3VzYi9zZXJpYWwvdGlfdXNiXzM0MTBfNTA1Mi5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL3RpX3Vz Yl8zNDEwXzUwNTIuYwppbmRleCBhZDA0NDVhNjhhMDIuLjZiZjI0ZDEwMzI0YyAxMDA2NDQKLS0t IGEvZHJpdmVycy91c2Ivc2VyaWFsL3RpX3VzYl8zNDEwXzUwNTIuYworKysgYi9kcml2ZXJzL3Vz Yi9zZXJpYWwvdGlfdXNiXzM0MTBfNTA1Mi5jCkBAIC00MzgsNiArNDM4LDEzIEBAIHN0YXRpYyBp bnQgdGlfc3RhcnR1cChzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsKQogCQlnb3RvIGZyZWVfdGRl djsKIAl9CiAKKwlpZiAoc2VyaWFsLT5udW1fYnVsa19pbiA8IHNlcmlhbC0+bnVtX3BvcnRzIHx8 CisJCQlzZXJpYWwtPm51bV9idWxrX291dCA8IHNlcmlhbC0+bnVtX3BvcnRzKSB7CisJCWRldl9l cnIoJnNlcmlhbC0+aW50ZXJmYWNlLT5kZXYsICJtaXNzaW5nIGVuZHBvaW50c1xuIik7CisJCXN0 YXR1cyA9IC1FTk9ERVY7CisJCWdvdG8gZnJlZV90ZGV2OworCX0KKwogCS8qIHNldCB1cCBwb3J0 IHN0cnVjdHVyZXMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgc2VyaWFsLT5udW1fcG9ydHM7ICsraSkg ewogCQl0cG9ydCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCB0aV9wb3J0KSwgR0ZQX0tFUk5FTCk7 CmRpZmYgLS1naXQgYS9mcy9ibG9ja19kZXYuYyBiL2ZzL2Jsb2NrX2Rldi5jCmluZGV4IGMxMDMy Njc1MzkxNS4uYTY5M2QwY2IyMWVlIDEwMDY0NAotLS0gYS9mcy9ibG9ja19kZXYuYworKysgYi9m cy9ibG9ja19kZXYuYwpAQCAtNjg3LDcgKzY4Nyw3IEBAIHN0YXRpYyBib29sIGJkX21heV9jbGFp bShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICp3aG9sZSwK IAkJcmV0dXJuIHRydWU7CSAvKiBhbHJlYWR5IGEgaG9sZGVyICovCiAJZWxzZSBpZiAoYmRldi0+ YmRfaG9sZGVyICE9IE5VTEwpCiAJCXJldHVybiBmYWxzZTsgCSAvKiBoZWxkIGJ5IHNvbWVvbmUg ZWxzZSAqLwotCWVsc2UgaWYgKGJkZXYtPmJkX2NvbnRhaW5zID09IGJkZXYpCisJZWxzZSBpZiAo d2hvbGUgPT0gYmRldikKIAkJcmV0dXJuIHRydWU7ICAJIC8qIGlzIGEgd2hvbGUgZGV2aWNlIHdo aWNoIGlzbid0IGhlbGQgKi8KIAogCWVsc2UgaWYgKHdob2xlLT5iZF9ob2xkZXIgPT0gYmRfbWF5 X2NsYWltKQpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW9jdGwuYyBiL2ZzL2J0cmZzL2lvY3RsLmMK aW5kZXggMzYwMDcyZjQyYWZlLi4yMzFmYmUxZGIzNTcgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2lv Y3RsLmMKKysrIGIvZnMvYnRyZnMvaW9jdGwuYwpAQCAtMzI3Niw2ICszMjc2LDEwIEBAIGxvbmcg YnRyZnNfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludAogI2lmZGVmIENPTkZJ R19DT01QQVQKIGxvbmcgYnRyZnNfY29tcGF0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNp Z25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIHsKKwkvKgorCSAqIFRoZXNlIGFsbCBh Y2Nlc3MgMzItYml0IHZhbHVlcyBhbnl3YXkgc28gbm8gZnVydGhlcgorCSAqIGhhbmRsaW5nIGlz IG5lY2Vzc2FyeS4KKwkgKi8KIAlzd2l0Y2ggKGNtZCkgewogCWNhc2UgRlNfSU9DMzJfR0VURkxB R1M6CiAJCWNtZCA9IEZTX0lPQ19HRVRGTEFHUzsKQEAgLTMyODYsOCArMzI5MCw2IEBAIGxvbmcg YnRyZnNfY29tcGF0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLCB1 bnNpZ25lZCBsb25nIGFyZykKIAljYXNlIEZTX0lPQzMyX0dFVFZFUlNJT046CiAJCWNtZCA9IEZT X0lPQ19HRVRWRVJTSU9OOwogCQlicmVhazsKLQlkZWZhdWx0OgotCQlyZXR1cm4gLUVOT0lPQ1RM Q01EOwogCX0KIAogCXJldHVybiBidHJmc19pb2N0bChmaWxlLCBjbWQsICh1bnNpZ25lZCBsb25n KSBjb21wYXRfcHRyKGFyZykpOwpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvdHJlZS1sb2cuYyBiL2Zz L2J0cmZzL3RyZWUtbG9nLmMKaW5kZXggYzY1OGU3Yjg4ZDU4Li42NDc5Yjg1M2MwOWEgMTAwNjQ0 Ci0tLSBhL2ZzL2J0cmZzL3RyZWUtbG9nLmMKKysrIGIvZnMvYnRyZnMvdHJlZS1sb2cuYwpAQCAt MTQxNSwxMiArMTQxNSwxMSBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGZpbmRfZGlyX3JhbmdlKHN0 cnVjdCBidHJmc19yb290ICpyb290LAogbmV4dDoKIAkvKiBjaGVjayB0aGUgbmV4dCBzbG90IGlu IHRoZSB0cmVlIHRvIHNlZSBpZiBpdCBpcyBhIHZhbGlkIGl0ZW0gKi8KIAlucml0ZW1zID0gYnRy ZnNfaGVhZGVyX25yaXRlbXMocGF0aC0+bm9kZXNbMF0pOworCXBhdGgtPnNsb3RzWzBdKys7CiAJ aWYgKHBhdGgtPnNsb3RzWzBdID49IG5yaXRlbXMpIHsKIAkJcmV0ID0gYnRyZnNfbmV4dF9sZWFm KHJvb3QsIHBhdGgpOwogCQlpZiAocmV0KQogCQkJZ290byBvdXQ7Ci0JfSBlbHNlIHsKLQkJcGF0 aC0+c2xvdHNbMF0rKzsKIAl9CiAKIAlidHJmc19pdGVtX2tleV90b19jcHUocGF0aC0+bm9kZXNb MF0sICZrZXksIHBhdGgtPnNsb3RzWzBdKTsKZGlmZiAtLWdpdCBhL2ZzL2NlcGgvbWRzX2NsaWVu dC5jIGIvZnMvY2VwaC9tZHNfY2xpZW50LmMKaW5kZXggYjI0ZTJkMzMyNzY3Li4wNDMyMjgxZmI3 NGIgMTAwNjQ0Ci0tLSBhL2ZzL2NlcGgvbWRzX2NsaWVudC5jCisrKyBiL2ZzL2NlcGgvbWRzX2Ns aWVudC5jCkBAIC0yMzgsNyArMjM4LDkgQEAgc3RhdGljIGludCBwYXJzZV9yZXBseV9pbmZvX2V4 dHJhKHZvaWQgKipwLCB2b2lkICplbmQsCiAJCQkJICBzdHJ1Y3QgY2VwaF9tZHNfcmVwbHlfaW5m b19wYXJzZWQgKmluZm8sCiAJCQkJICBpbnQgZmVhdHVyZXMpCiB7Ci0JaWYgKGluZm8tPmhlYWQt Pm9wID09IENFUEhfTURTX09QX0dFVEZJTEVMT0NLKQorCXUzMiBvcCA9IGxlMzJfdG9fY3B1KGlu Zm8tPmhlYWQtPm9wKTsKKworCWlmIChvcCA9PSBDRVBIX01EU19PUF9HRVRGSUxFTE9DSykKIAkJ cmV0dXJuIHBhcnNlX3JlcGx5X2luZm9fZmlsZWxvY2socCwgZW5kLCBpbmZvLCBmZWF0dXJlcyk7 CiAJZWxzZQogCQlyZXR1cm4gcGFyc2VfcmVwbHlfaW5mb19kaXIocCwgZW5kLCBpbmZvLCBmZWF0 dXJlcyk7CmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmMKaW5k ZXggMDkzYTc0MWQ5NjVjLi4yNzRjOTFiNWU5ZjYgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvaW5vZGUu YworKysgYi9mcy9leHQ0L2lub2RlLmMKQEAgLTM4MjksNiArMzgyOSw3IEBAIHN0cnVjdCBpbm9k ZSAqZXh0NF9pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vKQog CXN0cnVjdCBpbm9kZSAqaW5vZGU7CiAJam91cm5hbF90ICpqb3VybmFsID0gRVhUNF9TQihzYikt PnNfam91cm5hbDsKIAlsb25nIHJldDsKKwlsb2ZmX3Qgc2l6ZTsKIAlpbnQgYmxvY2s7CiAKIAlp bm9kZSA9IGlnZXRfbG9ja2VkKHNiLCBpbm8pOwpAQCAtMzg4MCw2ICszODgxLDExIEBAIHN0cnVj dCBpbm9kZSAqZXh0NF9pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcg aW5vKQogCQllaS0+aV9maWxlX2FjbCB8PQogCQkJKChfX3U2NClsZTE2X3RvX2NwdShyYXdfaW5v ZGUtPmlfZmlsZV9hY2xfaGlnaCkpIDw8IDMyOwogCWlub2RlLT5pX3NpemUgPSBleHQ0X2lzaXpl KHJhd19pbm9kZSk7CisJaWYgKChzaXplID0gaV9zaXplX3JlYWQoaW5vZGUpKSA8IDApIHsKKwkJ RVhUNF9FUlJPUl9JTk9ERShpbm9kZSwgImJhZCBpX3NpemUgdmFsdWU6ICVsbGQiLCBzaXplKTsK KwkJcmV0ID0gLUVJTzsKKwkJZ290byBiYWRfaW5vZGU7CisJfQogCWVpLT5pX2Rpc2tzaXplID0g aW5vZGUtPmlfc2l6ZTsKICNpZmRlZiBDT05GSUdfUVVPVEEKIAllaS0+aV9yZXNlcnZlZF9xdW90 YSA9IDA7CmRpZmYgLS1naXQgYS9mcy9leHQ0L21iYWxsb2MuYyBiL2ZzL2V4dDQvbWJhbGxvYy5j CmluZGV4IDI0MmZlMTFhZWEyMC4uZWJjNTBhYTczNDdjIDEwMDY0NAotLS0gYS9mcy9leHQ0L21i YWxsb2MuYworKysgYi9mcy9leHQ0L21iYWxsb2MuYwpAQCAtNjUyLDcgKzY1Miw3IEBAIHN0YXRp YyB2b2lkIGV4dDRfbWJfbWFya19mcmVlX3NpbXBsZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAog CWV4dDRfZ3JwYmxrX3QgbWluOwogCWV4dDRfZ3JwYmxrX3QgbWF4OwogCWV4dDRfZ3JwYmxrX3Qg Y2h1bms7Ci0JdW5zaWduZWQgc2hvcnQgYm9yZGVyOworCXVuc2lnbmVkIGludCBib3JkZXI7CiAK IAlCVUdfT04obGVuID4gRVhUNF9DTFVTVEVSU19QRVJfR1JPVVAoc2IpKTsKIApAQCAtMjEzNCw3 ICsyMTM0LDcgQEAgc3RhdGljIGludCBleHQ0X21iX3NlcV9ncm91cHNfc2hvdyhzdHJ1Y3Qgc2Vx X2ZpbGUgKnNlcSwgdm9pZCAqdikKIAlzdHJ1Y3QgZXh0NF9idWRkeSBlNGI7CiAJc3RydWN0IHNn IHsKIAkJc3RydWN0IGV4dDRfZ3JvdXBfaW5mbyBpbmZvOwotCQlleHQ0X2dycGJsa190IGNvdW50 ZXJzWzE2XTsKKwkJZXh0NF9ncnBibGtfdCBjb3VudGVyc1tFWFQ0X01BWF9CTE9DS19MT0dfU0la RSArIDJdOwogCX0gc2c7CiAKIAlncm91cC0tOwpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9zdXBlci5j IGIvZnMvZXh0NC9zdXBlci5jCmluZGV4IGUzY2NkZGI2YjQyNS4uNDIyZWQ3OTQ2YzIwIDEwMDY0 NAotLS0gYS9mcy9leHQ0L3N1cGVyLmMKKysrIGIvZnMvZXh0NC9zdXBlci5jCkBAIC0zMTgwLDEw ICszMTgwLDE1IEBAIHN0YXRpYyBpbnQgY291bnRfb3ZlcmhlYWQoc3RydWN0IHN1cGVyX2Jsb2Nr ICpzYiwgZXh0NF9ncm91cF90IGdycCwKIAkJCWV4dDRfc2V0X2JpdChzKyssIGJ1Zik7CiAJCQlj b3VudCsrOwogCQl9Ci0JCWZvciAoaiA9IGV4dDRfYmdfbnVtX2dkYihzYiwgZ3JwKTsgaiA+IDA7 IGotLSkgewotCQkJZXh0NF9zZXRfYml0KEVYVDRfQjJDKHNiaSwgcysrKSwgYnVmKTsKLQkJCWNv dW50Kys7CisJCWogPSBleHQ0X2JnX251bV9nZGIoc2IsIGdycCk7CisJCWlmIChzICsgaiA+IEVY VDRfQkxPQ0tTX1BFUl9HUk9VUChzYikpIHsKKwkJCWV4dDRfZXJyb3Ioc2IsICJJbnZhbGlkIG51 bWJlciBvZiBibG9jayBncm91cCAiCisJCQkJICAgImRlc2NyaXB0b3IgYmxvY2tzOiAlZCIsIGop OworCQkJaiA9IEVYVDRfQkxPQ0tTX1BFUl9HUk9VUChzYikgLSBzOwogCQl9CisJCWNvdW50ICs9 IGo7CisJCWZvciAoOyBqID4gMDsgai0tKQorCQkJZXh0NF9zZXRfYml0KEVYVDRfQjJDKHNiaSwg cysrKSwgYnVmKTsKIAl9CiAJaWYgKCFjb3VudCkKIAkJcmV0dXJuIDA7CkBAIC0zMjQwLDcgKzMy NDUsNyBAQCBzdGF0aWMgaW50IGV4dDRfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNi LCB2b2lkICpkYXRhLCBpbnQgc2lsZW50KQogCWNoYXIgKm9yaWdfZGF0YSA9IGtzdHJkdXAoZGF0 YSwgR0ZQX0tFUk5FTCk7CiAJc3RydWN0IGJ1ZmZlcl9oZWFkICpiaDsKIAlzdHJ1Y3QgZXh0NF9z dXBlcl9ibG9jayAqZXMgPSBOVUxMOwotCXN0cnVjdCBleHQ0X3NiX2luZm8gKnNiaTsKKwlzdHJ1 Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBremFsbG9jKHNpemVvZigqc2JpKSwgR0ZQX0tFUk5FTCk7 CiAJZXh0NF9mc2Jsa190IGJsb2NrOwogCWV4dDRfZnNibGtfdCBzYl9ibG9jayA9IGdldF9zYl9i bG9jaygmZGF0YSk7CiAJZXh0NF9mc2Jsa190IGxvZ2ljYWxfc2JfYmxvY2s7CkBAIC0zMjYwLDE2 ICszMjY1LDE0IEBAIHN0YXRpYyBpbnQgZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9j ayAqc2IsIHZvaWQgKmRhdGEsIGludCBzaWxlbnQpCiAJdW5zaWduZWQgaW50IGpvdXJuYWxfaW9w cmlvID0gREVGQVVMVF9KT1VSTkFMX0lPUFJJTzsKIAlleHQ0X2dyb3VwX3QgZmlyc3Rfbm90X3pl cm9lZDsKIAotCXNiaSA9IGt6YWxsb2Moc2l6ZW9mKCpzYmkpLCBHRlBfS0VSTkVMKTsKLQlpZiAo IXNiaSkKLQkJZ290byBvdXRfZnJlZV9vcmlnOworCWlmICgoZGF0YSAmJiAhb3JpZ19kYXRhKSB8 fCAhc2JpKQorCQlnb3RvIG91dF9mcmVlX2Jhc2U7CiAKIAlzYmktPnNfYmxvY2tncm91cF9sb2Nr ID0KIAkJa3phbGxvYyhzaXplb2Yoc3RydWN0IGJsb2NrZ3JvdXBfbG9jayksIEdGUF9LRVJORUwp OwotCWlmICghc2JpLT5zX2Jsb2NrZ3JvdXBfbG9jaykgewotCQlrZnJlZShzYmkpOwotCQlnb3Rv IG91dF9mcmVlX29yaWc7Ci0JfQorCWlmICghc2JpLT5zX2Jsb2NrZ3JvdXBfbG9jaykKKwkJZ290 byBvdXRfZnJlZV9iYXNlOworCiAJc2ItPnNfZnNfaW5mbyA9IHNiaTsKIAlzYmktPnNfbW91bnRf b3B0ID0gMDsKIAlzYmktPnNfcmVzdWlkID0gRVhUNF9ERUZfUkVTVUlEOwpAQCAtMzM3OCwxMSAr MzM4MSwxOSBAQCBzdGF0aWMgaW50IGV4dDRfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sg KnNiLCB2b2lkICpkYXRhLCBpbnQgc2lsZW50KQogCSAqLwogCXNiaS0+c19saV93YWl0X211bHQg PSBFWFQ0X0RFRl9MSV9XQUlUX01VTFQ7CiAKLQlpZiAoIXBhcnNlX29wdGlvbnMoKGNoYXIgKikg c2JpLT5zX2VzLT5zX21vdW50X29wdHMsIHNiLAotCQkJICAgJmpvdXJuYWxfZGV2bnVtLCAmam91 cm5hbF9pb3ByaW8sIE5VTEwsIDApKSB7Ci0JCWV4dDRfbXNnKHNiLCBLRVJOX1dBUk5JTkcsCi0J CQkgImZhaWxlZCB0byBwYXJzZSBvcHRpb25zIGluIHN1cGVyYmxvY2s6ICVzIiwKLQkJCSBzYmkt PnNfZXMtPnNfbW91bnRfb3B0cyk7CisJaWYgKHNiaS0+c19lcy0+c19tb3VudF9vcHRzWzBdKSB7 CisJCWNoYXIgKnNfbW91bnRfb3B0cyA9IGtzdHJuZHVwKHNiaS0+c19lcy0+c19tb3VudF9vcHRz LAorCQkJCQkgICAgICBzaXplb2Yoc2JpLT5zX2VzLT5zX21vdW50X29wdHMpLAorCQkJCQkgICAg ICBHRlBfS0VSTkVMKTsKKwkJaWYgKCFzX21vdW50X29wdHMpCisJCQlnb3RvIGZhaWxlZF9tb3Vu dDsKKwkJaWYgKCFwYXJzZV9vcHRpb25zKHNfbW91bnRfb3B0cywgc2IsICZqb3VybmFsX2Rldm51 bSwKKwkJCQkgICAmam91cm5hbF9pb3ByaW8sIE5VTEwsIDApKSB7CisJCQlleHQ0X21zZyhzYiwg S0VSTl9XQVJOSU5HLAorCQkJCSAiZmFpbGVkIHRvIHBhcnNlIG9wdGlvbnMgaW4gc3VwZXJibG9j azogJXMiLAorCQkJCSBzX21vdW50X29wdHMpOworCQl9CisJCWtmcmVlKHNfbW91bnRfb3B0cyk7 CiAJfQogCWlmICghcGFyc2Vfb3B0aW9ucygoY2hhciAqKSBkYXRhLCBzYiwgJmpvdXJuYWxfZGV2 bnVtLAogCQkJICAgJmpvdXJuYWxfaW9wcmlvLCBOVUxMLCAwKSkKQEAgLTM1MzUsMTIgKzM1NDYs MTYgQEAgc3RhdGljIGludCBleHQ0X2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwg dm9pZCAqZGF0YSwgaW50IHNpbGVudCkKIAogCXNiaS0+c19ibG9ja3NfcGVyX2dyb3VwID0gbGUz Ml90b19jcHUoZXMtPnNfYmxvY2tzX3Blcl9ncm91cCk7CiAJc2JpLT5zX2lub2Rlc19wZXJfZ3Jv dXAgPSBsZTMyX3RvX2NwdShlcy0+c19pbm9kZXNfcGVyX2dyb3VwKTsKLQlpZiAoRVhUNF9JTk9E RV9TSVpFKHNiKSA9PSAwIHx8IEVYVDRfSU5PREVTX1BFUl9HUk9VUChzYikgPT0gMCkKLQkJZ290 byBjYW50ZmluZF9leHQ0OwogCiAJc2JpLT5zX2lub2Rlc19wZXJfYmxvY2sgPSBibG9ja3NpemUg LyBFWFQ0X0lOT0RFX1NJWkUoc2IpOwogCWlmIChzYmktPnNfaW5vZGVzX3Blcl9ibG9jayA9PSAw KQogCQlnb3RvIGNhbnRmaW5kX2V4dDQ7CisJaWYgKHNiaS0+c19pbm9kZXNfcGVyX2dyb3VwIDwg c2JpLT5zX2lub2Rlc19wZXJfYmxvY2sgfHwKKwkgICAgc2JpLT5zX2lub2Rlc19wZXJfZ3JvdXAg PiBibG9ja3NpemUgKiA4KSB7CisJCWV4dDRfbXNnKHNiLCBLRVJOX0VSUiwgImludmFsaWQgaW5v ZGVzIHBlciBncm91cDogJWx1XG4iLAorCQkJIHNiaS0+c19ibG9ja3NfcGVyX2dyb3VwKTsKKwkJ Z290byBmYWlsZWRfbW91bnQ7CisJfQogCXNiaS0+c19pdGJfcGVyX2dyb3VwID0gc2JpLT5zX2lu b2Rlc19wZXJfZ3JvdXAgLwogCQkJCQlzYmktPnNfaW5vZGVzX3Blcl9ibG9jazsKIAlzYmktPnNf ZGVzY19wZXJfYmxvY2sgPSBibG9ja3NpemUgLyBFWFQ0X0RFU0NfU0laRShzYik7CkBAIC0zNjE5 LDEzICszNjM0LDYgQEAgc3RhdGljIGludCBleHQ0X2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Js b2NrICpzYiwgdm9pZCAqZGF0YSwgaW50IHNpbGVudCkKIAl9CiAJc2JpLT5zX2NsdXN0ZXJfcmF0 aW8gPSBjbHVzdGVyc2l6ZSAvIGJsb2Nrc2l6ZTsKIAotCWlmIChzYmktPnNfaW5vZGVzX3Blcl9n cm91cCA+IGJsb2Nrc2l6ZSAqIDgpIHsKLQkJZXh0NF9tc2coc2IsIEtFUk5fRVJSLAotCQkgICAg ICAgIiNpbm9kZXMgcGVyIGdyb3VwIHRvbyBiaWc6ICVsdSIsCi0JCSAgICAgICBzYmktPnNfaW5v ZGVzX3Blcl9ncm91cCk7Ci0JCWdvdG8gZmFpbGVkX21vdW50OwotCX0KLQogCS8qCiAJICogVGVz dCB3aGV0aGVyIHdlIGhhdmUgbW9yZSBzZWN0b3JzIHRoYW4gd2lsbCBmaXQgaW4gc2VjdG9yX3Qs CiAJICogYW5kIHdoZXRoZXIgdGhlIG1heCBvZmZzZXQgaXMgYWRkcmVzc2FibGUgYnkgdGhlIHBh Z2UgY2FjaGUuCkBAIC0zOTc4LDcgKzM5ODYsOSBAQCBub19qb3VybmFsOgogCQlkZXNjciA9ICJv dXQgam91cm5hbCI7CiAKIAlleHQ0X21zZyhzYiwgS0VSTl9JTkZPLCAibW91bnRlZCBmaWxlc3lz dGVtIHdpdGglcy4gIgotCQkgIk9wdHM6ICVzJXMlcyIsIGRlc2NyLCBzYmktPnNfZXMtPnNfbW91 bnRfb3B0cywKKwkJICJPcHRzOiAlLipzJXMlcyIsIGRlc2NyLAorCQkgKGludCkgc2l6ZW9mKHNi aS0+c19lcy0+c19tb3VudF9vcHRzKSwKKwkJIHNiaS0+c19lcy0+c19tb3VudF9vcHRzLAogCQkg KnNiaS0+c19lcy0+c19tb3VudF9vcHRzID8gIjsgIiA6ICIiLCBvcmlnX2RhdGEpOwogCiAJaWYg KGVzLT5zX2Vycm9yX2NvdW50KQpAQCAtNDAzNiw4ICs0MDQ2LDggQEAgZmFpbGVkX21vdW50Ogog b3V0X2ZhaWw6CiAJc2ItPnNfZnNfaW5mbyA9IE5VTEw7CiAJa2ZyZWUoc2JpLT5zX2Jsb2NrZ3Jv dXBfbG9jayk7CitvdXRfZnJlZV9iYXNlOgogCWtmcmVlKHNiaSk7Ci1vdXRfZnJlZV9vcmlnOgog CWtmcmVlKG9yaWdfZGF0YSk7CiAJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL2ZzL25mcy9m aWxlLmMgYi9mcy9uZnMvZmlsZS5jCmluZGV4IDk2MWU1NjJjOGE3YS4uOGI4ZDZhNTQxNDBjIDEw MDY0NAotLS0gYS9mcy9uZnMvZmlsZS5jCisrKyBiL2ZzL25mcy9maWxlLmMKQEAgLTM5Nyw3ICsz OTcsNyBAQCBzdGF0aWMgaW50IG5mc193cml0ZV9lbmQoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVj dCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogCSAqLwogCWlmICghUGFnZVVwdG9kYXRlKHBhZ2Up KSB7CiAJCXVuc2lnbmVkIHBnbGVuID0gbmZzX3BhZ2VfbGVuZ3RoKHBhZ2UpOwotCQl1bnNpZ25l ZCBlbmQgPSBvZmZzZXQgKyBsZW47CisJCXVuc2lnbmVkIGVuZCA9IG9mZnNldCArIGNvcGllZDsK IAogCQlpZiAocGdsZW4gPT0gMCkgewogCQkJemVyb191c2VyX3NlZ21lbnRzKHBhZ2UsIDAsIG9m ZnNldCwKZGlmZiAtLWdpdCBhL2ZzL25vdGlmeS9pbm9kZV9tYXJrLmMgYi9mcy9ub3RpZnkvaW5v ZGVfbWFyay5jCmluZGV4IGRmNmRhY2NmNDliYS4uNGM2MzNjYThhN2RmIDEwMDY0NAotLS0gYS9m cy9ub3RpZnkvaW5vZGVfbWFyay5jCisrKyBiL2ZzL25vdGlmeS9pbm9kZV9tYXJrLmMKQEAgLTI0 MywxMiArMjQzLDEwIEBAIG91dDoKICAqLwogdm9pZCBmc25vdGlmeV91bm1vdW50X2lub2Rlcyhz dHJ1Y3QgbGlzdF9oZWFkICpsaXN0KQogewotCXN0cnVjdCBpbm9kZSAqaW5vZGUsICpuZXh0X2ks ICpuZWVkX2lwdXQgPSBOVUxMOworCXN0cnVjdCBpbm9kZSAqaW5vZGUsICppcHV0X2lub2RlID0g TlVMTDsKIAogCXNwaW5fbG9jaygmaW5vZGVfc2JfbGlzdF9sb2NrKTsKLQlsaXN0X2Zvcl9lYWNo X2VudHJ5X3NhZmUoaW5vZGUsIG5leHRfaSwgbGlzdCwgaV9zYl9saXN0KSB7Ci0JCXN0cnVjdCBp bm9kZSAqbmVlZF9pcHV0X3RtcDsKLQorCWxpc3RfZm9yX2VhY2hfZW50cnkoaW5vZGUsIGxpc3Qs IGlfc2JfbGlzdCkgewogCQkvKgogCQkgKiBXZSBjYW5ub3QgX19pZ2V0KCkgYW4gaW5vZGUgaW4g c3RhdGUgSV9GUkVFSU5HLAogCQkgKiBJX1dJTExfRlJFRSwgb3IgSV9ORVcgd2hpY2ggaXMgZmlu ZSBiZWNhdXNlIGJ5IHRoYXQgcG9pbnQKQEAgLTI3MSw1MCArMjY5LDI0IEBAIHZvaWQgZnNub3Rp ZnlfdW5tb3VudF9pbm9kZXMoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCkKIAkJCWNvbnRpbnVlOwog CQl9CiAKLQkJbmVlZF9pcHV0X3RtcCA9IG5lZWRfaXB1dDsKLQkJbmVlZF9pcHV0ID0gTlVMTDsK LQotCQkvKiBJbiBjYXNlIGZzbm90aWZ5X2lub2RlX2RlbGV0ZSgpIGRyb3BzIGEgcmVmZXJlbmNl LiAqLwotCQlpZiAoaW5vZGUgIT0gbmVlZF9pcHV0X3RtcCkKLQkJCV9faWdldChpbm9kZSk7Ci0J CWVsc2UKLQkJCW5lZWRfaXB1dF90bXAgPSBOVUxMOworCQlfX2lnZXQoaW5vZGUpOwogCQlzcGlu X3VubG9jaygmaW5vZGUtPmlfbG9jayk7Ci0KLQkJLyogSW4gY2FzZSB0aGUgZHJvcHBpbmcgb2Yg YSByZWZlcmVuY2Ugd291bGQgbnVrZSBuZXh0X2kuICovCi0JCXdoaWxlICgmbmV4dF9pLT5pX3Ni X2xpc3QgIT0gbGlzdCkgewotCQkJc3Bpbl9sb2NrKCZuZXh0X2ktPmlfbG9jayk7Ci0JCQlpZiAo IShuZXh0X2ktPmlfc3RhdGUgJiAoSV9GUkVFSU5HIHwgSV9XSUxMX0ZSRUUpKSAmJgotCQkJCQkJ YXRvbWljX3JlYWQoJm5leHRfaS0+aV9jb3VudCkpIHsKLQkJCQlfX2lnZXQobmV4dF9pKTsKLQkJ CQluZWVkX2lwdXQgPSBuZXh0X2k7Ci0JCQkJc3Bpbl91bmxvY2soJm5leHRfaS0+aV9sb2NrKTsK LQkJCQlicmVhazsKLQkJCX0KLQkJCXNwaW5fdW5sb2NrKCZuZXh0X2ktPmlfbG9jayk7Ci0JCQlu ZXh0X2kgPSBsaXN0X2VudHJ5KG5leHRfaS0+aV9zYl9saXN0Lm5leHQsCi0JCQkJCQlzdHJ1Y3Qg aW5vZGUsIGlfc2JfbGlzdCk7Ci0JCX0KLQotCQkvKgotCQkgKiBXZSBjYW4gc2FmZWx5IGRyb3Ag aW5vZGVfc2JfbGlzdF9sb2NrIGhlcmUgYmVjYXVzZSBlaXRoZXIKLQkJICogd2UgYWN0dWFsbHkg aG9sZCByZWZlcmVuY2VzIG9uIGJvdGggaW5vZGUgYW5kIG5leHRfaSBvcgotCQkgKiBlbmQgb2Yg bGlzdC4gIEFsc28gbm8gbmV3IGlub2RlcyB3aWxsIGJlIGFkZGVkIHNpbmNlIHRoZQotCQkgKiB1 bW91bnQgaGFzIGJlZ3VuLgotCQkgKi8KIAkJc3Bpbl91bmxvY2soJmlub2RlX3NiX2xpc3RfbG9j ayk7CiAKLQkJaWYgKG5lZWRfaXB1dF90bXApCi0JCQlpcHV0KG5lZWRfaXB1dF90bXApOworCQlp ZiAoaXB1dF9pbm9kZSkKKwkJCWlwdXQoaXB1dF9pbm9kZSk7CiAKIAkJLyogZm9yIGVhY2ggd2F0 Y2gsIHNlbmQgRlNfVU5NT1VOVCBhbmQgdGhlbiByZW1vdmUgaXQgKi8KIAkJZnNub3RpZnkoaW5v ZGUsIEZTX1VOTU9VTlQsIGlub2RlLCBGU05PVElGWV9FVkVOVF9JTk9ERSwgTlVMTCwgMCk7CiAK IAkJZnNub3RpZnlfaW5vZGVfZGVsZXRlKGlub2RlKTsKIAotCQlpcHV0KGlub2RlKTsKKwkJaXB1 dF9pbm9kZSA9IGlub2RlOwogCiAJCXNwaW5fbG9jaygmaW5vZGVfc2JfbGlzdF9sb2NrKTsKIAl9 CiAJc3Bpbl91bmxvY2soJmlub2RlX3NiX2xpc3RfbG9jayk7CisKKwlpZiAoaXB1dF9pbm9kZSkK KwkJaXB1dChpcHV0X2lub2RlKTsKIH0KZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2RsbWdsdWUuYyBi L2ZzL29jZnMyL2RsbWdsdWUuYwppbmRleCA2NDY1MzE3ZTQ3YTYuLjlhYjJhY2NhNWE4NCAxMDA2 NDQKLS0tIGEvZnMvb2NmczIvZGxtZ2x1ZS5jCisrKyBiL2ZzL29jZnMyL2RsbWdsdWUuYwpAQCAt MzI3MCw2ICszMjcwLDE2IEBAIHN0YXRpYyBpbnQgb2NmczJfZG93bmNvbnZlcnRfbG9jayhzdHJ1 Y3Qgb2NmczJfc3VwZXIgKm9zYiwKIAltbG9nKE1MX0JBU1RTLCAibG9ja3JlcyAlcywgbGV2ZWwg JWQgPT4gJWRcbiIsIGxvY2tyZXMtPmxfbmFtZSwKIAkgICAgIGxvY2tyZXMtPmxfbGV2ZWwsIG5l d19sZXZlbCk7CiAKKwkvKgorCSAqIE9uIERMTV9MS0ZfVkFMQkxLLCBmc2RsbSBiZWhhdmVzIGRp ZmZlcmVudGx5IHdpdGggbzJjYi4gSXQgYWx3YXlzCisJICogZXhwZWN0cyBETE1fTEtGX1ZBTEJM SyBiZWluZyBzZXQgaWYgdGhlIExLQiBoYXMgTFZCLCBzbyB0aGF0CisJICogd2UgY2FuIHJlY292 ZXIgY29ycmVjdGx5IGZyb20gbm9kZSBmYWlsdXJlLiBPdGhlcndpc2UsIHdlIG1heSBnZXQKKwkg KiBpbnZhbGlkIExWQiBpbiBMS0IsIGJ1dCB3aXRob3V0IERMTV9TQkZfVkFMTk9UVkFMSUTCoGJl aW5nIHNldC4KKwkgKi8KKwlpZiAoIW9jZnMyX2lzX28yY2JfYWN0aXZlKCkgJiYKKwkgICAgbG9j a3Jlcy0+bF9vcHMtPmZsYWdzICYgTE9DS19UWVBFX1VTRVNfTFZCKQorCQlsdmIgPSAxOworCiAJ aWYgKGx2YikKIAkJZGxtX2ZsYWdzIHw9IERMTV9MS0ZfVkFMQkxLOwogCmRpZmYgLS1naXQgYS9m cy9vY2ZzMi9zdGFja2dsdWUuYyBiL2ZzL29jZnMyL3N0YWNrZ2x1ZS5jCmluZGV4IDM5YWJmODk2 OTdlZC4uODg2MTBiM2NiYzA0IDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9zdGFja2dsdWUuYworKysg Yi9mcy9vY2ZzMi9zdGFja2dsdWUuYwpAQCAtNDgsNiArNDgsMTIgQEAgc3RhdGljIGNoYXIgb2Nm czJfaGJfY3RsX3BhdGhbT0NGUzJfTUFYX0hCX0NUTF9QQVRIXSA9ICIvc2Jpbi9vY2ZzMl9oYl9j dGwiOwogICovCiBzdGF0aWMgc3RydWN0IG9jZnMyX3N0YWNrX3BsdWdpbiAqYWN0aXZlX3N0YWNr OwogCitpbmxpbmUgaW50IG9jZnMyX2lzX28yY2JfYWN0aXZlKHZvaWQpCit7CisJcmV0dXJuICFz dHJjbXAoYWN0aXZlX3N0YWNrLT5zcF9uYW1lLCBPQ0ZTMl9TVEFDS19QTFVHSU5fTzJDQik7Cit9 CitFWFBPUlRfU1lNQk9MX0dQTChvY2ZzMl9pc19vMmNiX2FjdGl2ZSk7CisKIHN0YXRpYyBzdHJ1 Y3Qgb2NmczJfc3RhY2tfcGx1Z2luICpvY2ZzMl9zdGFja19sb29rdXAoY29uc3QgY2hhciAqbmFt ZSkKIHsKIAlzdHJ1Y3Qgb2NmczJfc3RhY2tfcGx1Z2luICpwOwpkaWZmIC0tZ2l0IGEvZnMvb2Nm czIvc3RhY2tnbHVlLmggYi9mcy9vY2ZzMi9zdGFja2dsdWUuaAppbmRleCAxZWM1NmZkYjhkMGQu LmZhNDlkOGExZGM3YiAxMDA2NDQKLS0tIGEvZnMvb2NmczIvc3RhY2tnbHVlLmgKKysrIGIvZnMv b2NmczIvc3RhY2tnbHVlLmgKQEAgLTI4OSw0ICsyODksNyBAQCB2b2lkIG9jZnMyX3N0YWNrX2ds dWVfc2V0X21heF9wcm90b192ZXJzaW9uKHN0cnVjdCBvY2ZzMl9wcm90b2NvbF92ZXJzaW9uICpt YXhfcAogaW50IG9jZnMyX3N0YWNrX2dsdWVfcmVnaXN0ZXIoc3RydWN0IG9jZnMyX3N0YWNrX3Bs dWdpbiAqcGx1Z2luKTsKIHZvaWQgb2NmczJfc3RhY2tfZ2x1ZV91bnJlZ2lzdGVyKHN0cnVjdCBv Y2ZzMl9zdGFja19wbHVnaW4gKnBsdWdpbik7CiAKKy8qIEluIG9jZnMyX2Rvd25jb252ZXJ0X2xv Y2soKSwgd2UgbmVlZCB0byBrbm93IHdoaWNoIHN0YWNrIHdlIGFyZSB1c2luZyAqLworaW50IG9j ZnMyX2lzX28yY2JfYWN0aXZlKHZvaWQpOworCiAjZW5kaWYgIC8qIFNUQUNLR0xVRV9IICovCmRp ZmYgLS1naXQgYS9mcy9zcGxpY2UuYyBiL2ZzL3NwbGljZS5jCmluZGV4IDQ1OTEyOGJhMDg0YS4u NGNmMmNiYTAyZGZkIDEwMDY0NAotLS0gYS9mcy9zcGxpY2UuYworKysgYi9mcy9zcGxpY2UuYwpA QCAtMjE0LDYgKzIxNCw3IEBAIHNzaXplX3Qgc3BsaWNlX3RvX3BpcGUoc3RydWN0IHBpcGVfaW5v ZGVfaW5mbyAqcGlwZSwKIAkJCWJ1Zi0+bGVuID0gc3BkLT5wYXJ0aWFsW3BhZ2VfbnJdLmxlbjsK IAkJCWJ1Zi0+cHJpdmF0ZSA9IHNwZC0+cGFydGlhbFtwYWdlX25yXS5wcml2YXRlOwogCQkJYnVm LT5vcHMgPSBzcGQtPm9wczsKKwkJCWJ1Zi0+ZmxhZ3MgPSAwOwogCQkJaWYgKHNwZC0+ZmxhZ3Mg JiBTUExJQ0VfRl9HSUZUKQogCQkJCWJ1Zi0+ZmxhZ3MgfD0gUElQRV9CVUZfRkxBR19HSUZUOwog CmRpZmYgLS1naXQgYS9mcy91Ymlmcy90bmMuYyBiL2ZzL3ViaWZzL3RuYy5jCmluZGV4IDA2Njcz ODY0NzY4NS4uZjk5NmNiNTI0NDJiIDEwMDY0NAotLS0gYS9mcy91Ymlmcy90bmMuYworKysgYi9m cy91Ymlmcy90bmMuYwpAQCAtMzQsNiArMzQsMTEgQEAKICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+ CiAjaW5jbHVkZSAidWJpZnMuaCIKIAorc3RhdGljIGludCB0cnlfcmVhZF9ub2RlKGNvbnN0IHN0 cnVjdCB1Ymlmc19pbmZvICpjLCB2b2lkICpidWYsIGludCB0eXBlLAorCQkJIGludCBsZW4sIGlu dCBsbnVtLCBpbnQgb2Zmcyk7CitzdGF0aWMgaW50IGZhbGxpYmxlX3JlYWRfbm9kZShzdHJ1Y3Qg dWJpZnNfaW5mbyAqYywgY29uc3QgdW5pb24gdWJpZnNfa2V5ICprZXksCisJCQkgICAgICBzdHJ1 Y3QgdWJpZnNfemJyYW5jaCAqemJyLCB2b2lkICpub2RlKTsKKwogLyoKICAqIFJldHVybmVkIGNv ZGVzIG9mICdtYXRjaGVzX25hbWUoKScgYW5kICdmYWxsaWJsZV9tYXRjaGVzX25hbWUoKScgZnVu Y3Rpb25zLgogICogQE5BTUVfTEVTUzogbmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmaXJzdCBh cmd1bWVudCBpcyBsZXNzIHRoYW4gc2Vjb25kCkBAIC00MjAsNyArNDI1LDE5IEBAIHN0YXRpYyBp bnQgdG5jX3JlYWRfbm9kZV9ubShzdHJ1Y3QgdWJpZnNfaW5mbyAqYywgc3RydWN0IHViaWZzX3pi cmFuY2ggKnpiciwKIAkJcmV0dXJuIDA7CiAJfQogCi0JZXJyID0gdWJpZnNfdG5jX3JlYWRfbm9k ZShjLCB6YnIsIG5vZGUpOworCWlmIChjLT5yZXBsYXlpbmcpIHsKKwkJZXJyID0gZmFsbGlibGVf cmVhZF9ub2RlKGMsICZ6YnItPmtleSwgemJyLCBub2RlKTsKKwkJLyoKKwkJICogV2hlbiB0aGUg bm9kZSB3YXMgbm90IGZvdW5kLCByZXR1cm4gLUVOT0VOVCwgMCBvdGhlcndpc2UuCisJCSAqIE5l Z2F0aXZlIHJldHVybiBjb2RlcyBzdGF5IGFzLWlzLgorCQkgKi8KKwkJaWYgKGVyciA9PSAwKQor CQkJZXJyID0gLUVOT0VOVDsKKwkJZWxzZSBpZiAoZXJyID09IDEpCisJCQllcnIgPSAwOworCX0g ZWxzZSB7CisJCWVyciA9IHViaWZzX3RuY19yZWFkX25vZGUoYywgemJyLCBub2RlKTsKKwl9CiAJ aWYgKGVycikKIAkJcmV0dXJuIGVycjsKIApAQCAtMjc4NSw3ICsyODAyLDExIEBAIHN0cnVjdCB1 Ymlmc19kZW50X25vZGUgKnViaWZzX3RuY19uZXh0X2VudChzdHJ1Y3QgdWJpZnNfaW5mbyAqYywK IAlpZiAobm0tPm5hbWUpIHsKIAkJaWYgKGVycikgewogCQkJLyogSGFuZGxlIGNvbGxpc2lvbnMg Ki8KLQkJCWVyciA9IHJlc29sdmVfY29sbGlzaW9uKGMsIGtleSwgJnpub2RlLCAmbiwgbm0pOwor CQkJaWYgKGMtPnJlcGxheWluZykKKwkJCQllcnIgPSBmYWxsaWJsZV9yZXNvbHZlX2NvbGxpc2lv bihjLCBrZXksICZ6bm9kZSwgJm4sCisJCQkJCQkJIG5tLCAwKTsKKwkJCWVsc2UKKwkJCQllcnIg PSByZXNvbHZlX2NvbGxpc2lvbihjLCBrZXksICZ6bm9kZSwgJm4sIG5tKTsKIAkJCWRiZ190bmMo InJjIHJldHVybmVkICVkLCB6bm9kZSAlcCwgbiAlZCIsCiAJCQkJZXJyLCB6bm9kZSwgbik7CiAJ CQlpZiAodW5saWtlbHkoZXJyIDwgMCkpCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2RmcmFnLmMg Yi9mcy94ZnMveGZzX2RmcmFnLmMKaW5kZXggNjU0ZGM2ZjA1YmFjLi45MTEzNjc3NDFjODkgMTAw NjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfZGZyYWcuYworKysgYi9mcy94ZnMveGZzX2RmcmFnLmMKQEAg LTIxMCw2ICsyMTAsNyBAQCB4ZnNfc3dhcF9leHRlbnRzKAogCWludAkJZXJyb3IgPSAwOwogCWlu dAkJYWZvcmtibGtzID0gMDsKIAlpbnQJCXRhZm9ya2Jsa3MgPSAwOworCXhmc19leHRudW1fdAlu ZXh0ZW50czsKIAlfX3VpbnQ2NF90CXRtcDsKIAogCXRlbXBpZnAgPSBrbWVtX2FsbG9jKHNpemVv Zih4ZnNfaWZvcmtfdCksIEtNX01BWUZBSUwpOwpAQCAtMzk0LDcgKzM5NSw4IEBAIHhmc19zd2Fw X2V4dGVudHMoCiAJCSAqIHBvaW50ZXIuICBPdGhlcndpc2UgaXQncyBhbHJlYWR5IE5VTEwgb3IK IAkJICogcG9pbnRpbmcgdG8gdGhlIGV4dGVudC4KIAkJICovCi0JCWlmIChpcC0+aV9kLmRpX25l eHRlbnRzIDw9IFhGU19JTkxJTkVfRVhUUykgeworCQluZXh0ZW50cyA9IGlwLT5pX2RmLmlmX2J5 dGVzIC8gKHVpbnQpc2l6ZW9mKHhmc19ibWJ0X3JlY190KTsKKwkJaWYgKG5leHRlbnRzIDw9IFhG U19JTkxJTkVfRVhUUykgewogCQkJaWZwLT5pZl91MS5pZl9leHRlbnRzID0KIAkJCQlpZnAtPmlm X3UyLmlmX2lubGluZV9leHQ7CiAJCX0KQEAgLTQxMyw3ICs0MTUsOCBAQCB4ZnNfc3dhcF9leHRl bnRzKAogCQkgKiBwb2ludGVyLiAgT3RoZXJ3aXNlIGl0J3MgYWxyZWFkeSBOVUxMIG9yCiAJCSAq IHBvaW50aW5nIHRvIHRoZSBleHRlbnQuCiAJCSAqLwotCQlpZiAodGlwLT5pX2QuZGlfbmV4dGVu dHMgPD0gWEZTX0lOTElORV9FWFRTKSB7CisJCW5leHRlbnRzID0gdGlwLT5pX2RmLmlmX2J5dGVz IC8gKHVpbnQpc2l6ZW9mKHhmc19ibWJ0X3JlY190KTsKKwkJaWYgKG5leHRlbnRzIDw9IFhGU19J TkxJTkVfRVhUUykgewogCQkJdGlmcC0+aWZfdTEuaWZfZXh0ZW50cyA9CiAJCQkJdGlmcC0+aWZf dTIuaWZfaW5saW5lX2V4dDsKIAkJfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jYW4vY29y ZS5oIGIvaW5jbHVkZS9saW51eC9jYW4vY29yZS5oCmluZGV4IDBjY2MxY2QyOGI5NS4uZTAzZmRk YjE1ODQ2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Nhbi9jb3JlLmgKKysrIGIvaW5jbHVk ZS9saW51eC9jYW4vY29yZS5oCkBAIC00NSwxMCArNDUsOSBAQCBzdHJ1Y3QgY2FuX3Byb3RvIHsK IGV4dGVybiBpbnQgIGNhbl9wcm90b19yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgY2FuX3Byb3RvICpj cCk7CiBleHRlcm4gdm9pZCBjYW5fcHJvdG9fdW5yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgY2FuX3By b3RvICpjcCk7CiAKLWV4dGVybiBpbnQgIGNhbl9yeF9yZWdpc3RlcihzdHJ1Y3QgbmV0X2Rldmlj ZSAqZGV2LCBjYW5pZF90IGNhbl9pZCwKLQkJCSAgICBjYW5pZF90IG1hc2ssCi0JCQkgICAgdm9p ZCAoKmZ1bmMpKHN0cnVjdCBza19idWZmICosIHZvaWQgKiksCi0JCQkgICAgdm9pZCAqZGF0YSwg Y2hhciAqaWRlbnQpOworaW50IGNhbl9yeF9yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2 LCBjYW5pZF90IGNhbl9pZCwgY2FuaWRfdCBtYXNrLAorCQkgICAgdm9pZCAoKmZ1bmMpKHN0cnVj dCBza19idWZmICosIHZvaWQgKiksCisJCSAgICB2b2lkICpkYXRhLCBjaGFyICppZGVudCwgc3Ry dWN0IHNvY2sgKnNrKTsKIAogZXh0ZXJuIHZvaWQgY2FuX3J4X3VucmVnaXN0ZXIoc3RydWN0IG5l dF9kZXZpY2UgKmRldiwgY2FuaWRfdCBjYW5faWQsCiAJCQkgICAgICBjYW5pZF90IG1hc2ssCmRp ZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2NwdS5oIGIvaW5jbHVkZS9saW51eC9jcHUuaAppbmRl eCA5YzNlMDcxOTAwYzAuLjIxYjFlOTc4OWE4MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9j cHUuaAorKysgYi9pbmNsdWRlL2xpbnV4L2NwdS5oCkBAIC0xMTIsMjIgKzExMiwxNiBAQCBlbnVt IHsKIAkJeyAubm90aWZpZXJfY2FsbCA9IGZuLCAucHJpb3JpdHkgPSBwcmkgfTsJXAogCXJlZ2lz dGVyX2NwdV9ub3RpZmllcigmZm4jI19uYik7CQkJXAogfQotI2Vsc2UgLyogI2lmIGRlZmluZWQo Q09ORklHX0hPVFBMVUdfQ1BVKSB8fCAhZGVmaW5lZChNT0RVTEUpICovCi0jZGVmaW5lIGNwdV9u b3RpZmllcihmbiwgcHJpKQlkbyB7ICh2b2lkKShmbik7IH0gd2hpbGUgKDApCi0jZW5kaWYgLyog I2Vsc2UgI2lmIGRlZmluZWQoQ09ORklHX0hPVFBMVUdfQ1BVKSB8fCAhZGVmaW5lZChNT0RVTEUp ICovCi0jaWZkZWYgQ09ORklHX0hPVFBMVUdfQ1BVCiBleHRlcm4gaW50IHJlZ2lzdGVyX2NwdV9u b3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTsKIGV4dGVybiB2b2lkIHVucmVnaXN0 ZXJfY3B1X25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpOwotI2Vsc2UKIAotI2lm bmRlZiBNT0RVTEUKLWV4dGVybiBpbnQgcmVnaXN0ZXJfY3B1X25vdGlmaWVyKHN0cnVjdCBub3Rp Zmllcl9ibG9jayAqbmIpOwotI2Vsc2UKKyNlbHNlIC8qICNpZiBkZWZpbmVkKENPTkZJR19IT1RQ TFVHX0NQVSkgfHwgIWRlZmluZWQoTU9EVUxFKSAqLworI2RlZmluZSBjcHVfbm90aWZpZXIoZm4s IHByaSkJZG8geyAodm9pZCkoZm4pOyB9IHdoaWxlICgwKQorCiBzdGF0aWMgaW5saW5lIGludCBy ZWdpc3Rlcl9jcHVfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYikKIHsKIAlyZXR1 cm4gMDsKIH0KLSNlbmRpZgogCiBzdGF0aWMgaW5saW5lIHZvaWQgdW5yZWdpc3Rlcl9jcHVfbm90 aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYikKIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUv bGludXgvbGlzdC5oIGIvaW5jbHVkZS9saW51eC9saXN0LmgKaW5kZXggY2M2ZDJhYTZiNDE1Li43 NjkwNzM4YjM5ZTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbGlzdC5oCisrKyBiL2luY2x1 ZGUvbGludXgvbGlzdC5oCkBAIC0zNjIsNiArMzYyLDE3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBs aXN0X3NwbGljZV90YWlsX2luaXQoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwKIAlsaXN0X2VudHJ5 KChwdHIpLT5uZXh0LCB0eXBlLCBtZW1iZXIpCiAKIC8qKgorICogbGlzdF9maXJzdF9lbnRyeV9v cl9udWxsIC0gZ2V0IHRoZSBmaXJzdCBlbGVtZW50IGZyb20gYSBsaXN0CisgKiBAcHRyOgl0aGUg bGlzdCBoZWFkIHRvIHRha2UgdGhlIGVsZW1lbnQgZnJvbS4KKyAqIEB0eXBlOgl0aGUgdHlwZSBv ZiB0aGUgc3RydWN0IHRoaXMgaXMgZW1iZWRkZWQgaW4uCisgKiBAbWVtYmVyOgl0aGUgbmFtZSBv ZiB0aGUgbGlzdF9zdHJ1Y3Qgd2l0aGluIHRoZSBzdHJ1Y3QuCisgKgorICogTm90ZSB0aGF0IGlm IHRoZSBsaXN0IGlzIGVtcHR5LCBpdCByZXR1cm5zIE5VTEwuCisgKi8KKyNkZWZpbmUgbGlzdF9m aXJzdF9lbnRyeV9vcl9udWxsKHB0ciwgdHlwZSwgbWVtYmVyKSBcCisJKCFsaXN0X2VtcHR5KHB0 cikgPyBsaXN0X2ZpcnN0X2VudHJ5KHB0ciwgdHlwZSwgbWVtYmVyKSA6IE5VTEwpCisKKy8qKgog ICogbGlzdF9mb3JfZWFjaAktCWl0ZXJhdGUgb3ZlciBhIGxpc3QKICAqIEBwb3M6CXRoZSAmc3Ry dWN0IGxpc3RfaGVhZCB0byB1c2UgYXMgYSBsb29wIGN1cnNvci4KICAqIEBoZWFkOgl0aGUgaGVh ZCBmb3IgeW91ciBsaXN0LgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBi L2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgKaW5kZXggNGIwNDA5N2M3NDhjLi5lZTI4MjEzMTVj NDMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgKKysrIGIvaW5jbHVkZS9s aW51eC9uZXRkZXZpY2UuaApAQCAtMTY3NiwxNCArMTY3NiwxOSBAQCBzdGF0aWMgaW5saW5lIGlu dCBza2JfZ3JvX2hlYWRlcl9oYXJkKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBo bGVuKQogCXJldHVybiBOQVBJX0dST19DQihza2IpLT5mcmFnMF9sZW4gPCBobGVuOwogfQogCitz dGF0aWMgaW5saW5lIHZvaWQgc2tiX2dyb19mcmFnMF9pbnZhbGlkYXRlKHN0cnVjdCBza19idWZm ICpza2IpCit7CisJTkFQSV9HUk9fQ0Ioc2tiKS0+ZnJhZzAgPSBOVUxMOworCU5BUElfR1JPX0NC KHNrYiktPmZyYWcwX2xlbiA9IDA7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCAqc2tiX2dyb19o ZWFkZXJfc2xvdyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgaGxlbiwKIAkJCQkJ dW5zaWduZWQgaW50IG9mZnNldCkKIHsKIAlpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBobGVuKSkK IAkJcmV0dXJuIE5VTEw7CiAKLQlOQVBJX0dST19DQihza2IpLT5mcmFnMCA9IE5VTEw7Ci0JTkFQ SV9HUk9fQ0Ioc2tiKS0+ZnJhZzBfbGVuID0gMDsKKwlza2JfZ3JvX2ZyYWcwX2ludmFsaWRhdGUo c2tiKTsKIAlyZXR1cm4gc2tiLT5kYXRhICsgb2Zmc2V0OwogfQogCmRpZmYgLS1naXQgYS9pbmNs dWRlL25ldC9jaXBzb19pcHY0LmggYi9pbmNsdWRlL25ldC9jaXBzb19pcHY0LmgKaW5kZXggYThj MmVmNmQzYjkzLi45MDc4YjMxZDMzNmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2NpcHNvX2lw djQuaAorKysgYi9pbmNsdWRlL25ldC9jaXBzb19pcHY0LmgKQEAgLTMwMyw2ICszMDMsMTAgQEAg c3RhdGljIGlubGluZSBpbnQgY2lwc29fdjRfdmFsaWRhdGUoY29uc3Qgc3RydWN0IHNrX2J1ZmYg KnNrYiwKIAl9CiAKIAlmb3IgKG9wdF9pdGVyID0gNjsgb3B0X2l0ZXIgPCBvcHRfbGVuOykgewor CQlpZiAob3B0X2l0ZXIgKyAxID09IG9wdF9sZW4pIHsKKwkJCWVycl9vZmZzZXQgPSBvcHRfaXRl cjsKKwkJCWdvdG8gb3V0OworCQl9CiAJCXRhZ19sZW4gPSBvcHRbb3B0X2l0ZXIgKyAxXTsKIAkJ aWYgKCh0YWdfbGVuID09IDApIHx8IChvcHRbb3B0X2l0ZXIgKyAxXSA+IChvcHRfbGVuIC0gb3B0 X2l0ZXIpKSkgewogCQkJZXJyX29mZnNldCA9IG9wdF9pdGVyICsgMTsKZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvbmV0L3NvY2suaCBiL2luY2x1ZGUvbmV0L3NvY2suaAppbmRleCAxNDQ0YjUyMzI2NGIu LmJhNjczYTFlNzg3ZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvc29jay5oCisrKyBiL2luY2x1 ZGUvbmV0L3NvY2suaApAQCAtOTYxLDcgKzk2MSw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlu b2RlICpTT0NLX0lOT0RFKHN0cnVjdCBzb2NrZXQgKnNvY2tldCkKICAqIEZ1bmN0aW9ucyBmb3Ig bWVtb3J5IGFjY291bnRpbmcKICAqLwogZXh0ZXJuIGludCBfX3NrX21lbV9zY2hlZHVsZShzdHJ1 Y3Qgc29jayAqc2ssIGludCBzaXplLCBpbnQga2luZCk7Ci1leHRlcm4gdm9pZCBfX3NrX21lbV9y ZWNsYWltKHN0cnVjdCBzb2NrICpzayk7Cit2b2lkIF9fc2tfbWVtX3JlY2xhaW0oc3RydWN0IHNv Y2sgKnNrLCBpbnQgYW1vdW50KTsKIAogI2RlZmluZSBTS19NRU1fUVVBTlRVTSAoKGludClQQUdF X1NJWkUpCiAjZGVmaW5lIFNLX01FTV9RVUFOVFVNX1NISUZUIGlsb2cyKFNLX01FTV9RVUFOVFVN KQpAQCAtMTAwMCw3ICsxMDAwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHNrX21lbV9yZWNsYWlt KHN0cnVjdCBzb2NrICpzaykKIAlpZiAoIXNrX2hhc19hY2NvdW50KHNrKSkKIAkJcmV0dXJuOwog CWlmIChzay0+c2tfZm9yd2FyZF9hbGxvYyA+PSBTS19NRU1fUVVBTlRVTSkKLQkJX19za19tZW1f cmVjbGFpbShzayk7CisJCV9fc2tfbWVtX3JlY2xhaW0oc2ssIHNrLT5za19mb3J3YXJkX2FsbG9j KTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHNrX21lbV9yZWNsYWltX3BhcnRpYWwoc3RydWN0 IHNvY2sgKnNrKQpAQCAtMTAwOCw3ICsxMDA4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHNrX21l bV9yZWNsYWltX3BhcnRpYWwoc3RydWN0IHNvY2sgKnNrKQogCWlmICghc2tfaGFzX2FjY291bnQo c2spKQogCQlyZXR1cm47CiAJaWYgKHNrLT5za19mb3J3YXJkX2FsbG9jID4gU0tfTUVNX1FVQU5U VU0pCi0JCV9fc2tfbWVtX3JlY2xhaW0oc2spOworCQlfX3NrX21lbV9yZWNsYWltKHNrLCBzay0+ c2tfZm9yd2FyZF9hbGxvYyAtIDEpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgc2tfbWVtX2No YXJnZShzdHJ1Y3Qgc29jayAqc2ssIGludCBzaXplKQpAQCAtMTAyMyw2ICsxMDIzLDE2IEBAIHN0 YXRpYyBpbmxpbmUgdm9pZCBza19tZW1fdW5jaGFyZ2Uoc3RydWN0IHNvY2sgKnNrLCBpbnQgc2l6 ZSkKIAlpZiAoIXNrX2hhc19hY2NvdW50KHNrKSkKIAkJcmV0dXJuOwogCXNrLT5za19mb3J3YXJk X2FsbG9jICs9IHNpemU7CisKKwkvKiBBdm9pZCBhIHBvc3NpYmxlIG92ZXJmbG93LgorCSAqIFRD UCBzZW5kIHF1ZXVlcyBjYW4gbWFrZSB0aGlzIGhhcHBlbiwgaWYgc2tfbWVtX3JlY2xhaW0oKQor CSAqIGlzIG5vdCBjYWxsZWQgYW5kIG1vcmUgdGhhbiAyIEdCeXRlcyBhcmUgcmVsZWFzZWQgYXQg b25jZS4KKwkgKgorCSAqIElmIHdlIHJlYWNoIDIgTUJ5dGVzLCByZWNsYWltIDEgTUJ5dGVzIHJp Z2h0IG5vdywgdGhlcmUgaXMKKwkgKiBubyBuZWVkIHRvIGhvbGQgdGhhdCBtdWNoIGZvcndhcmQg YWxsb2NhdGlvbiBhbnl3YXkuCisJICovCisJaWYgKHVubGlrZWx5KHNrLT5za19mb3J3YXJkX2Fs bG9jID49IDEgPDwgMjEpKQorCQlfX3NrX21lbV9yZWNsYWltKHNrLCAxIDw8IDIwKTsKIH0KIAog c3RhdGljIGlubGluZSB2b2lkIHNrX3dtZW1fZnJlZV9za2Ioc3RydWN0IHNvY2sgKnNrLCBzdHJ1 Y3Qgc2tfYnVmZiAqc2tiKQpAQCAtMTExNyw2ICsxMTI3LDcgQEAgZXh0ZXJuIHN0cnVjdCBza19i dWZmCQkqc29ja19ybWFsbG9jKHN0cnVjdCBzb2NrICpzaywKIAkJCQkJICAgICAgZ2ZwX3QgcHJp b3JpdHkpOwogZXh0ZXJuIHZvaWQJCQlzb2NrX3dmcmVlKHN0cnVjdCBza19idWZmICpza2IpOwog ZXh0ZXJuIHZvaWQJCQlzb2NrX3JmcmVlKHN0cnVjdCBza19idWZmICpza2IpOwordm9pZCBzb2Nr X2VmcmVlKHN0cnVjdCBza19idWZmICpza2IpOwogCiBleHRlcm4gaW50CQkJc29ja19zZXRzb2Nr b3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwKIAkJCQkJCWludCBvcCwgY2hhciBf X3VzZXIgKm9wdHZhbCwKZGlmZiAtLWdpdCBhL2lwYy9zaG0uYyBiL2lwYy9zaG0uYwppbmRleCAx NmIxZjllYzAzOTguLmRmMWQ2MDg1Mzk2ZiAxMDA2NDQKLS0tIGEvaXBjL3NobS5jCisrKyBiL2lw Yy9zaG0uYwpAQCAtOTYzLDggKzk2MywxMyBAQCBsb25nIGRvX3NobWF0KGludCBzaG1pZCwgY2hh ciBfX3VzZXIgKnNobWFkZHIsIGludCBzaG1mbGcsIHVsb25nICpyYWRkcikKIAkJZ290byBvdXQ7 CiAJZWxzZSBpZiAoKGFkZHIgPSAodWxvbmcpc2htYWRkcikpIHsKIAkJaWYgKGFkZHIgJiAoU0hN TEJBLTEpKSB7Ci0JCQlpZiAoc2htZmxnICYgU0hNX1JORCkKLQkJCQlhZGRyICY9IH4oU0hNTEJB LTEpOwkgICAvKiByb3VuZCBkb3duICovCisJCQkvKgorCQkJICogUm91bmQgZG93biB0byB0aGUg bmVhcmVzdCBtdWx0aXBsZSBvZiBzaG1sYmEuCisJCQkgKiBGb3Igc2FuZSBkb19tbWFwX3Bnb2Zm KCkgcGFyYW1ldGVycywgYXZvaWQKKwkJCSAqIHJvdW5kIGRvd25zIHRoYXQgdHJpZ2dlciBuaWwt cGFnZSBhbmQgTUFQX0ZJWEVELgorCQkJICovCisJCQlpZiAoKHNobWZsZyAmIFNITV9STkQpICYm IGFkZHIgPj0gU0hNTEJBKQorCQkJCWFkZHIgJj0gfihTSE1MQkEgLSAxKTsKIAkJCWVsc2UKICNp Zm5kZWYgX19BUkNIX0ZPUkNFX1NITUxCQQogCQkJCWlmIChhZGRyICYgflBBR0VfTUFTSykKZGlm ZiAtLWdpdCBhL2tlcm5lbC9jcHUuYyBiL2tlcm5lbC9jcHUuYwppbmRleCA4MmM5MWYxYjcxNWEu LmY3MzVhNThiZjdiNCAxMDA2NDQKLS0tIGEva2VybmVsL2NwdS5jCisrKyBiL2tlcm5lbC9jcHUu YwpAQCAtMTc2LDEyICsxNzYsNiBAQCBzdGF0aWMgaW50IGNwdV9ub3RpZnkodW5zaWduZWQgbG9u ZyB2YWwsIHZvaWQgKnYpCiAJcmV0dXJuIF9fY3B1X25vdGlmeSh2YWwsIHYsIC0xLCBOVUxMKTsK IH0KIAotI2lmZGVmIENPTkZJR19IT1RQTFVHX0NQVQotCi1zdGF0aWMgdm9pZCBjcHVfbm90aWZ5 X25vZmFpbCh1bnNpZ25lZCBsb25nIHZhbCwgdm9pZCAqdikKLXsKLQlCVUdfT04oY3B1X25vdGlm eSh2YWwsIHYpKTsKLX0KIEVYUE9SVF9TWU1CT0wocmVnaXN0ZXJfY3B1X25vdGlmaWVyKTsKIAog dm9pZCBfX3JlZiB1bnJlZ2lzdGVyX2NwdV9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sg Km5iKQpAQCAtMTkyLDYgKzE4NiwxMyBAQCB2b2lkIF9fcmVmIHVucmVnaXN0ZXJfY3B1X25vdGlm aWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpCiB9CiBFWFBPUlRfU1lNQk9MKHVucmVnaXN0 ZXJfY3B1X25vdGlmaWVyKTsKIAorI2lmZGVmIENPTkZJR19IT1RQTFVHX0NQVQorCitzdGF0aWMg dm9pZCBjcHVfbm90aWZ5X25vZmFpbCh1bnNpZ25lZCBsb25nIHZhbCwgdm9pZCAqdikKK3sKKwlC VUdfT04oY3B1X25vdGlmeSh2YWwsIHYpKTsKK30KKwogc3RhdGljIGlubGluZSB2b2lkIGNoZWNr X2Zvcl90YXNrcyhpbnQgY3B1KQogewogCXN0cnVjdCB0YXNrX3N0cnVjdCAqcDsKZGlmZiAtLWdp dCBhL2tlcm5lbC9mdXRleC5jIGIva2VybmVsL2Z1dGV4LmMKaW5kZXggOWRjMmM3MTkyYjJlLi5k ODJmZGJiNjU4NTYgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9mdXRleC5jCisrKyBiL2tlcm5lbC9mdXRl eC5jCkBAIC0yOTA0LDQgKzI5MDQsNCBAQCBzdGF0aWMgaW50IF9faW5pdCBmdXRleF9pbml0KHZv aWQpCiAKIAlyZXR1cm4gMDsKIH0KLV9faW5pdGNhbGwoZnV0ZXhfaW5pdCk7Citjb3JlX2luaXRj YWxsKGZ1dGV4X2luaXQpOwpkaWZmIC0tZ2l0IGEva2VybmVsL3N5c2N0bC5jIGIva2VybmVsL3N5 c2N0bC5jCmluZGV4IDhmM2QxNDUzMDgyZC4uY2IwZDg2MmI4YTJlIDEwMDY0NAotLS0gYS9rZXJu ZWwvc3lzY3RsLmMKKysrIGIva2VybmVsL3N5c2N0bC5jCkBAIC0yNTU0LDYgKzI1NTQsNyBAQCBz dGF0aWMgaW50IF9fZG9fcHJvY19kb3Vsb25ndmVjX21pbm1heCh2b2lkICpkYXRhLCBzdHJ1Y3Qg Y3RsX3RhYmxlICp0YWJsZSwgaW50CiAJCQkJYnJlYWs7CiAJCQlpZiAobmVnKQogCQkJCWNvbnRp bnVlOworCQkJdmFsID0gY29udm11bCAqIHZhbCAvIGNvbnZkaXY7CiAJCQlpZiAoKG1pbiAmJiB2 YWwgPCAqbWluKSB8fCAobWF4ICYmIHZhbCA+ICptYXgpKQogCQkJCWNvbnRpbnVlOwogCQkJKmkg PSB2YWw7CmRpZmYgLS1naXQgYS9saWIvdnNwcmludGYuYyBiL2xpYi92c3ByaW50Zi5jCmluZGV4 IGFlMDJlNDIxYjc1Zi4uNzdkMTMxNGNkMTQ2IDEwMDY0NAotLS0gYS9saWIvdnNwcmludGYuYwor KysgYi9saWIvdnNwcmludGYuYwpAQCAtMTE3Nyw3ICsxMTc3LDcgQEAgaW50IHZzbnByaW50Zihj aGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncykKIAog CS8qIFJlamVjdCBvdXQtb2YtcmFuZ2UgdmFsdWVzIGVhcmx5LiAgTGFyZ2UgcG9zaXRpdmUgc2l6 ZXMgYXJlCiAJICAgdXNlZCBmb3IgdW5rbm93biBidWZmZXIgc2l6ZXMuICovCi0JaWYgKFdBUk5f T05fT05DRSgoaW50KSBzaXplIDwgMCkpCisJaWYgKFdBUk5fT05fT05DRShzaXplID4gSU5UX01B WCkpCiAJCXJldHVybiAwOwogCiAJc3RyID0gYnVmOwpkaWZmIC0tZ2l0IGEvbW0vZmlsZW1hcC5j IGIvbW0vZmlsZW1hcC5jCmluZGV4IGYyZjUyNDc4ZGQ3NS4uZDAzOGJiNTY4YThjIDEwMDY0NAot LS0gYS9tbS9maWxlbWFwLmMKKysrIGIvbW0vZmlsZW1hcC5jCkBAIC0xMTE3LDYgKzExMTcsMTEg QEAgc3RhdGljIHZvaWQgZG9fZ2VuZXJpY19maWxlX3JlYWQoc3RydWN0IGZpbGUgKmZpbHAsIGxv ZmZfdCAqcHBvcywKIAogCQljb25kX3Jlc2NoZWQoKTsKIGZpbmRfcGFnZToKKwkJaWYgKGZhdGFs X3NpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7CisJCQllcnJvciA9IC1FSU5UUjsKKwkJCWdvdG8g b3V0OworCQl9CisKIAkJcGFnZSA9IGZpbmRfZ2V0X3BhZ2UobWFwcGluZywgaW5kZXgpOwogCQlp ZiAoIXBhZ2UpIHsKIAkJCXBhZ2VfY2FjaGVfc3luY19yZWFkYWhlYWQobWFwcGluZywKZGlmZiAt LWdpdCBhL21tL2h1Z2VfbWVtb3J5LmMgYi9tbS9odWdlX21lbW9yeS5jCmluZGV4IDJmZGU1MTY2 OWNkOS4uOTk4ZWZjZWU3MjAxIDEwMDY0NAotLS0gYS9tbS9odWdlX21lbW9yeS5jCisrKyBiL21t L2h1Z2VfbWVtb3J5LmMKQEAgLTk2NCw2ICs5NjQsMTggQEAgb3V0OgogCXJldHVybiByZXQ7CiB9 CiAKKy8qCisgKiBGT0xMX0ZPUkNFIGNhbiB3cml0ZSB0byBldmVuIHVud3JpdGFibGUgcG1kJ3Ms IGJ1dCBvbmx5CisgKiBhZnRlciB3ZSd2ZSBnb25lIHRocm91Z2ggYSBDT1cgY3ljbGUgYW5kIHRo ZXkgYXJlIGRpcnR5LgorICovCitzdGF0aWMgaW5saW5lIGJvb2wgY2FuX2ZvbGxvd193cml0ZV9w bWQocG1kX3QgcG1kLCBzdHJ1Y3QgcGFnZSAqcGFnZSwKKwkJCQkJdW5zaWduZWQgaW50IGZsYWdz KQoreworCXJldHVybiBwbWRfd3JpdGUocG1kKSB8fAorCQkoKGZsYWdzICYgRk9MTF9GT1JDRSkg JiYgKGZsYWdzICYgRk9MTF9DT1cpICYmCisJCSBwYWdlICYmIFBhZ2VBbm9uKHBhZ2UpKTsKK30K Kwogc3RydWN0IHBhZ2UgKmZvbGxvd190cmFuc19odWdlX3BtZChzdHJ1Y3QgbW1fc3RydWN0ICpt bSwKIAkJCQkgICB1bnNpZ25lZCBsb25nIGFkZHIsCiAJCQkJICAgcG1kX3QgKnBtZCwKQEAgLTk3 MywxMSArOTg1LDEyIEBAIHN0cnVjdCBwYWdlICpmb2xsb3dfdHJhbnNfaHVnZV9wbWQoc3RydWN0 IG1tX3N0cnVjdCAqbW0sCiAKIAlhc3NlcnRfc3Bpbl9sb2NrZWQoJm1tLT5wYWdlX3RhYmxlX2xv Y2spOwogCi0JaWYgKGZsYWdzICYgRk9MTF9XUklURSAmJiAhcG1kX3dyaXRlKCpwbWQpKQotCQln b3RvIG91dDsKLQogCXBhZ2UgPSBwbWRfcGFnZSgqcG1kKTsKIAlWTV9CVUdfT04oIVBhZ2VIZWFk KHBhZ2UpKTsKKworCWlmIChmbGFncyAmIEZPTExfV1JJVEUgJiYgIWNhbl9mb2xsb3dfd3JpdGVf cG1kKCpwbWQsIHBhZ2UsIGZsYWdzKSkKKwkJZ290byBvdXQ7CisKIAlpZiAoZmxhZ3MgJiBGT0xM X1RPVUNIKSB7CiAJCXBtZF90IF9wbWQ7CiAJCS8qCmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2Jy X2lvY3RsLmMgYi9uZXQvYnJpZGdlL2JyX2lvY3RsLmMKaW5kZXggZWEwZTE1YzdlYTE3Li5kMDEx YzIxOWRhN2EgMTAwNjQ0Ci0tLSBhL25ldC9icmlkZ2UvYnJfaW9jdGwuYworKysgYi9uZXQvYnJp ZGdlL2JyX2lvY3RsLmMKQEAgLTIxLDE4ICsyMSwxOSBAQAogI2luY2x1ZGUgPGFzbS91YWNjZXNz Lmg+CiAjaW5jbHVkZSAiYnJfcHJpdmF0ZS5oIgogCi0vKiBjYWxsZWQgd2l0aCBSVE5MICovCiBz dGF0aWMgaW50IGdldF9icmlkZ2VfaWZpbmRpY2VzKHN0cnVjdCBuZXQgKm5ldCwgaW50ICppbmRp Y2VzLCBpbnQgbnVtKQogewogCXN0cnVjdCBuZXRfZGV2aWNlICpkZXY7CiAJaW50IGkgPSAwOwog Ci0JZm9yX2VhY2hfbmV0ZGV2KG5ldCwgZGV2KSB7CisJcmN1X3JlYWRfbG9jaygpOworCWZvcl9l YWNoX25ldGRldl9yY3UobmV0LCBkZXYpIHsKIAkJaWYgKGkgPj0gbnVtKQogCQkJYnJlYWs7CiAJ CWlmIChkZXYtPnByaXZfZmxhZ3MgJiBJRkZfRUJSSURHRSkKIAkJCWluZGljZXNbaSsrXSA9IGRl di0+aWZpbmRleDsKIAl9CisJcmN1X3JlYWRfdW5sb2NrKCk7CiAKIAlyZXR1cm4gaTsKIH0KZGlm ZiAtLWdpdCBhL25ldC9jYW4vYWZfY2FuLmMgYi9uZXQvY2FuL2FmX2Nhbi5jCmluZGV4IDdkOWRm ZjIyMjdkMS4uM2RkYzc0OTYwOTU5IDEwMDY0NAotLS0gYS9uZXQvY2FuL2FmX2Nhbi5jCisrKyBi L25ldC9jYW4vYWZfY2FuLmMKQEAgLTQwMyw2ICs0MDMsNyBAQCBzdGF0aWMgc3RydWN0IGhsaXN0 X2hlYWQgKmZpbmRfcmN2X2xpc3QoY2FuaWRfdCAqY2FuX2lkLCBjYW5pZF90ICptYXNrLAogICog QGZ1bmM6IGNhbGxiYWNrIGZ1bmN0aW9uIG9uIGZpbHRlciBtYXRjaAogICogQGRhdGE6IHJldHVy bmVkIHBhcmFtZXRlciBmb3IgY2FsbGJhY2sgZnVuY3Rpb24KICAqIEBpZGVudDogc3RyaW5nIGZv ciBjYWxsaW5nIG1vZHVsZSBpbmRlbnRpZmljYXRpb24KKyAqIEBzazogc29ja2V0IHBvaW50ZXIg KG1pZ2h0IGJlIE5VTEwpCiAgKgogICogRGVzY3JpcHRpb246CiAgKiAgSW52b2tlcyB0aGUgY2Fs bGJhY2sgZnVuY3Rpb24gd2l0aCB0aGUgcmVjZWl2ZWQgc2tfYnVmZiBhbmQgdGhlIGdpdmVuCkBA IC00MjYsNyArNDI3LDcgQEAgc3RhdGljIHN0cnVjdCBobGlzdF9oZWFkICpmaW5kX3Jjdl9saXN0 KGNhbmlkX3QgKmNhbl9pZCwgY2FuaWRfdCAqbWFzaywKICAqLwogaW50IGNhbl9yeF9yZWdpc3Rl cihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjYW5pZF90IGNhbl9pZCwgY2FuaWRfdCBtYXNrLAog CQkgICAgdm9pZCAoKmZ1bmMpKHN0cnVjdCBza19idWZmICosIHZvaWQgKiksIHZvaWQgKmRhdGEs Ci0JCSAgICBjaGFyICppZGVudCkKKwkJICAgIGNoYXIgKmlkZW50LCBzdHJ1Y3Qgc29jayAqc2sp CiB7CiAJc3RydWN0IHJlY2VpdmVyICpyOwogCXN0cnVjdCBobGlzdF9oZWFkICpybDsKQEAgLTQ1 NCw2ICs0NTUsNyBAQCBpbnQgY2FuX3J4X3JlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYs IGNhbmlkX3QgY2FuX2lkLCBjYW5pZF90IG1hc2ssCiAJCXItPmZ1bmMgICAgPSBmdW5jOwogCQly LT5kYXRhICAgID0gZGF0YTsKIAkJci0+aWRlbnQgICA9IGlkZW50OworCQlyLT5zayAgICAgID0g c2s7CiAKIAkJaGxpc3RfYWRkX2hlYWRfcmN1KCZyLT5saXN0LCBybCk7CiAJCWQtPmVudHJpZXMr KzsKQEAgLTQ3OCw4ICs0ODAsMTEgQEAgRVhQT1JUX1NZTUJPTChjYW5fcnhfcmVnaXN0ZXIpOwog c3RhdGljIHZvaWQgY2FuX3J4X2RlbGV0ZV9yZWNlaXZlcihzdHJ1Y3QgcmN1X2hlYWQgKnJwKQog ewogCXN0cnVjdCByZWNlaXZlciAqciA9IGNvbnRhaW5lcl9vZihycCwgc3RydWN0IHJlY2VpdmVy LCByY3UpOworCXN0cnVjdCBzb2NrICpzayA9IHItPnNrOwogCiAJa21lbV9jYWNoZV9mcmVlKHJj dl9jYWNoZSwgcik7CisJaWYgKHNrKQorCQlzb2NrX3B1dChzayk7CiB9CiAKIC8qKgpAQCAtNTU4 LDggKzU2MywxMSBAQCB2b2lkIGNhbl9yeF91bnJlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpk ZXYsIGNhbmlkX3QgY2FuX2lkLCBjYW5pZF90IG1hc2ssCiAJc3Bpbl91bmxvY2soJmNhbl9yY3Zs aXN0c19sb2NrKTsKIAogCS8qIHNjaGVkdWxlIHRoZSByZWNlaXZlciBpdGVtIGZvciBkZWxldGlv biAqLwotCWlmIChyKQorCWlmIChyKSB7CisJCWlmIChyLT5zaykKKwkJCXNvY2tfaG9sZChyLT5z ayk7CiAJCWNhbGxfcmN1KCZyLT5yY3UsIGNhbl9yeF9kZWxldGVfcmVjZWl2ZXIpOworCX0KIH0K IEVYUE9SVF9TWU1CT0woY2FuX3J4X3VucmVnaXN0ZXIpOwogCmRpZmYgLS1naXQgYS9uZXQvY2Fu L2FmX2Nhbi5oIGIvbmV0L2Nhbi9hZl9jYW4uaAppbmRleCBmZDg4MmRiYWRhZDMuLjRiYjgxMjU5 N2JmNiAxMDA2NDQKLS0tIGEvbmV0L2Nhbi9hZl9jYW4uaAorKysgYi9uZXQvY2FuL2FmX2Nhbi5o CkBAIC01MCwxMyArNTAsMTQgQEAKIAogc3RydWN0IHJlY2VpdmVyIHsKIAlzdHJ1Y3QgaGxpc3Rf bm9kZSBsaXN0OwotCXN0cnVjdCByY3VfaGVhZCByY3U7CiAJY2FuaWRfdCBjYW5faWQ7CiAJY2Fu aWRfdCBtYXNrOwogCXVuc2lnbmVkIGxvbmcgbWF0Y2hlczsKIAl2b2lkICgqZnVuYykoc3RydWN0 IHNrX2J1ZmYgKiwgdm9pZCAqKTsKIAl2b2lkICpkYXRhOwogCWNoYXIgKmlkZW50OworCXN0cnVj dCBzb2NrICpzazsKKwlzdHJ1Y3QgcmN1X2hlYWQgcmN1OwogfTsKIAogZW51bSB7IFJYX0VSUiwg UlhfQUxMLCBSWF9GSUwsIFJYX0lOViwgUlhfRUZGLCBSWF9NQVggfTsKZGlmZiAtLWdpdCBhL25l dC9jYW4vYmNtLmMgYi9uZXQvY2FuL2JjbS5jCmluZGV4IGMyOTc5NzQzMTFiMy4uNDcxNzFiMmIx MjMzIDEwMDY0NAotLS0gYS9uZXQvY2FuL2JjbS5jCisrKyBiL25ldC9jYW4vYmNtLmMKQEAgLTcw MiwxNCArNzAyLDIzIEBAIHN0YXRpYyBzdHJ1Y3QgYmNtX29wICpiY21fZmluZF9vcChzdHJ1Y3Qg bGlzdF9oZWFkICpvcHMsIGNhbmlkX3QgY2FuX2lkLAogCiBzdGF0aWMgdm9pZCBiY21fcmVtb3Zl X29wKHN0cnVjdCBiY21fb3AgKm9wKQogewotCWhydGltZXJfY2FuY2VsKCZvcC0+dGltZXIpOwot CWhydGltZXJfY2FuY2VsKCZvcC0+dGhydGltZXIpOwotCi0JaWYgKG9wLT50c2tsZXQuZnVuYykK LQkJdGFza2xldF9raWxsKCZvcC0+dHNrbGV0KTsKKwlpZiAob3AtPnRza2xldC5mdW5jKSB7CisJ CXdoaWxlICh0ZXN0X2JpdChUQVNLTEVUX1NUQVRFX1NDSEVELCAmb3AtPnRza2xldC5zdGF0ZSkg fHwKKwkJICAgICAgIHRlc3RfYml0KFRBU0tMRVRfU1RBVEVfUlVOLCAmb3AtPnRza2xldC5zdGF0 ZSkgfHwKKwkJICAgICAgIGhydGltZXJfYWN0aXZlKCZvcC0+dGltZXIpKSB7CisJCQlocnRpbWVy X2NhbmNlbCgmb3AtPnRpbWVyKTsKKwkJCXRhc2tsZXRfa2lsbCgmb3AtPnRza2xldCk7CisJCX0K Kwl9CiAKLQlpZiAob3AtPnRocnRza2xldC5mdW5jKQotCQl0YXNrbGV0X2tpbGwoJm9wLT50aHJ0 c2tsZXQpOworCWlmIChvcC0+dGhydHNrbGV0LmZ1bmMpIHsKKwkJd2hpbGUgKHRlc3RfYml0KFRB U0tMRVRfU1RBVEVfU0NIRUQsICZvcC0+dGhydHNrbGV0LnN0YXRlKSB8fAorCQkgICAgICAgdGVz dF9iaXQoVEFTS0xFVF9TVEFURV9SVU4sICZvcC0+dGhydHNrbGV0LnN0YXRlKSB8fAorCQkgICAg ICAgaHJ0aW1lcl9hY3RpdmUoJm9wLT50aHJ0aW1lcikpIHsKKwkJCWhydGltZXJfY2FuY2VsKCZv cC0+dGhydGltZXIpOworCQkJdGFza2xldF9raWxsKCZvcC0+dGhydHNrbGV0KTsKKwkJfQorCX0K IAogCWlmICgob3AtPmZyYW1lcykgJiYgKG9wLT5mcmFtZXMgIT0gJm9wLT5zZnJhbWUpKQogCQlr ZnJlZShvcC0+ZnJhbWVzKTsKQEAgLTExNjUsNyArMTE3NCw3IEBAIHN0YXRpYyBpbnQgYmNtX3J4 X3NldHVwKHN0cnVjdCBiY21fbXNnX2hlYWQgKm1zZ19oZWFkLCBzdHJ1Y3QgbXNnaGRyICptc2cs CiAJCQkJZXJyID0gY2FuX3J4X3JlZ2lzdGVyKGRldiwgb3AtPmNhbl9pZCwKIAkJCQkJCSAgICAg IFJFR01BU0sob3AtPmNhbl9pZCksCiAJCQkJCQkgICAgICBiY21fcnhfaGFuZGxlciwgb3AsCi0J CQkJCQkgICAgICAiYmNtIik7CisJCQkJCQkgICAgICAiYmNtIiwgc2spOwogCiAJCQkJb3AtPnJ4 X3JlZ19kZXYgPSBkZXY7CiAJCQkJZGV2X3B1dChkZXYpOwpAQCAtMTE3NCw3ICsxMTgzLDcgQEAg c3RhdGljIGludCBiY21fcnhfc2V0dXAoc3RydWN0IGJjbV9tc2dfaGVhZCAqbXNnX2hlYWQsIHN0 cnVjdCBtc2doZHIgKm1zZywKIAkJfSBlbHNlCiAJCQllcnIgPSBjYW5fcnhfcmVnaXN0ZXIoTlVM TCwgb3AtPmNhbl9pZCwKIAkJCQkJICAgICAgUkVHTUFTSyhvcC0+Y2FuX2lkKSwKLQkJCQkJICAg ICAgYmNtX3J4X2hhbmRsZXIsIG9wLCAiYmNtIik7CisJCQkJCSAgICAgIGJjbV9yeF9oYW5kbGVy LCBvcCwgImJjbSIsIHNrKTsKIAkJaWYgKGVycikgewogCQkJLyogdGhpcyBiY20gcnggb3AgaXMg YnJva2VuIC0+IHJlbW92ZSBpdCAqLwogCQkJbGlzdF9kZWwoJm9wLT5saXN0KTsKZGlmZiAtLWdp dCBhL25ldC9jYW4vZ3cuYyBiL25ldC9jYW4vZ3cuYwppbmRleCBmNzhmODk4NWUwODIuLjBiYTQ1 MTQ5ZTRlNSAxMDA2NDQKLS0tIGEvbmV0L2Nhbi9ndy5jCisrKyBiL25ldC9jYW4vZ3cuYwpAQCAt NDA1LDcgKzQwNSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGNnd19yZWdpc3Rlcl9maWx0ZXIoc3Ry dWN0IGNnd19qb2IgKmd3aikKIHsKIAlyZXR1cm4gY2FuX3J4X3JlZ2lzdGVyKGd3ai0+c3JjLmRl diwgZ3dqLT5jY2d3LmZpbHRlci5jYW5faWQsCiAJCQkgICAgICAgZ3dqLT5jY2d3LmZpbHRlci5j YW5fbWFzaywgY2FuX2Nhbl9nd19yY3YsCi0JCQkgICAgICAgZ3dqLCAiZ3ciKTsKKwkJCSAgICAg ICBnd2osICJndyIsIE5VTEwpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgY2d3X3VucmVnaXN0 ZXJfZmlsdGVyKHN0cnVjdCBjZ3dfam9iICpnd2opCmRpZmYgLS1naXQgYS9uZXQvY2FuL3Jhdy5j IGIvbmV0L2Nhbi9yYXcuYwppbmRleCA3MzIwMTk3YjhlYTcuLjJmNDMwY2I1MTIxNiAxMDA2NDQK LS0tIGEvbmV0L2Nhbi9yYXcuYworKysgYi9uZXQvY2FuL3Jhdy5jCkBAIC0xNTgsNyArMTU4LDcg QEAgc3RhdGljIGludCByYXdfZW5hYmxlX2ZpbHRlcnMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwg c3RydWN0IHNvY2sgKnNrLAogCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAJCWVyciA9 IGNhbl9yeF9yZWdpc3RlcihkZXYsIGZpbHRlcltpXS5jYW5faWQsCiAJCQkJICAgICAgZmlsdGVy W2ldLmNhbl9tYXNrLAotCQkJCSAgICAgIHJhd19yY3YsIHNrLCAicmF3Iik7CisJCQkJICAgICAg cmF3X3Jjdiwgc2ssICJyYXciLCBzayk7CiAJCWlmIChlcnIpIHsKIAkJCS8qIGNsZWFuIHVwIHN1 Y2Nlc3NmdWxseSByZWdpc3RlcmVkIGZpbHRlcnMgKi8KIAkJCXdoaWxlICgtLWkgPj0gMCkKQEAg LTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgaW50IHJhd19lbmFibGVfZXJyZmlsdGVyKHN0cnVjdCBu ZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBzb2NrICpzaywKIAogCWlmIChlcnJfbWFzaykKIAkJZXJy ID0gY2FuX3J4X3JlZ2lzdGVyKGRldiwgMCwgZXJyX21hc2sgfCBDQU5fRVJSX0ZMQUcsCi0JCQkJ ICAgICAgcmF3X3Jjdiwgc2ssICJyYXciKTsKKwkJCQkgICAgICByYXdfcmN2LCBzaywgInJhdyIs IHNrKTsKIAogCXJldHVybiBlcnI7CiB9CmRpZmYgLS1naXQgYS9uZXQvY2VwaC9tZXNzZW5nZXIu YyBiL25ldC9jZXBoL21lc3Nlbmdlci5jCmluZGV4IGU4NWE4ZDI0YWJmMy4uZGJjYThhNzg4YzVj IDEwMDY0NAotLS0gYS9uZXQvY2VwaC9tZXNzZW5nZXIuYworKysgYi9uZXQvY2VwaC9tZXNzZW5n ZXIuYwpAQCAtMTM1MCw2ICsxMzUwLDE5IEBAIHN0YXRpYyBpbnQgcHJvY2Vzc19jb25uZWN0KHN0 cnVjdCBjZXBoX2Nvbm5lY3Rpb24gKmNvbikKIAogCWRvdXQoInByb2Nlc3NfY29ubmVjdCBvbiAl cCB0YWcgJWRcbiIsIGNvbiwgKGludCljb24tPmluX3RhZyk7CiAKKwlpZiAoY29uLT5hdXRoX3Jl cGx5X2J1ZikgeworCQkvKgorCQkgKiBBbnkgY29ubmVjdGlvbiB0aGF0IGRlZmluZXMgLT5nZXRf YXV0aG9yaXplcigpCisJCSAqIHNob3VsZCBhbHNvIGRlZmluZSAtPnZlcmlmeV9hdXRob3JpemVy X3JlcGx5KCkuCisJCSAqIFNlZSBnZXRfY29ubmVjdF9hdXRob3JpemVyKCkuCisJCSAqLworCQly ZXQgPSBjb24tPm9wcy0+dmVyaWZ5X2F1dGhvcml6ZXJfcmVwbHkoY29uLCAwKTsKKwkJaWYgKHJl dCA8IDApIHsKKwkJCWNvbi0+ZXJyb3JfbXNnID0gImJhZCBhdXRob3JpemUgcmVwbHkiOworCQkJ cmV0dXJuIHJldDsKKwkJfQorCX0KKwogCXN3aXRjaCAoY29uLT5pbl9yZXBseS50YWcpIHsKIAlj YXNlIENFUEhfTVNHUl9UQUdfRkVBVFVSRVM6CiAJCXByX2VycigiJXMlbGxkICVzIGZlYXR1cmUg c2V0IG1pc21hdGNoLCIKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2 LmMKaW5kZXggZWMyOTk1ODhmNDVhLi4xNjQ5NThkMTkyYTMgMTAwNjQ0Ci0tLSBhL25ldC9jb3Jl L2Rldi5jCisrKyBiL25ldC9jb3JlL2Rldi5jCkBAIC0xOTE4LDcgKzE5MTgsNyBAQCBpbnQgc2ti X2NoZWNrc3VtX2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJCWdvdG8gb3V0OwogCX0KIAot CSooX19zdW0xNiAqKShza2ItPmRhdGEgKyBvZmZzZXQpID0gY3N1bV9mb2xkKGNzdW0pOworCSoo X19zdW0xNiAqKShza2ItPmRhdGEgKyBvZmZzZXQpID0gY3N1bV9mb2xkKGNzdW0pID86IENTVU1f TUFOR0xFRF8wOwogb3V0X3NldF9zdW1tZWQ6CiAJc2tiLT5pcF9zdW1tZWQgPSBDSEVDS1NVTV9O T05FOwogb3V0OgpAQCAtMzYyNyw3ICszNjI3LDkgQEAgdm9pZCBza2JfZ3JvX3Jlc2V0X29mZnNl dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCSAgICAhUGFnZUhpZ2hNZW0oc2tiX2ZyYWdfcGFnZSgm c2tiX3NoaW5mbyhza2IpLT5mcmFnc1swXSkpKSB7CiAJCU5BUElfR1JPX0NCKHNrYiktPmZyYWcw ID0KIAkJCXNrYl9mcmFnX2FkZHJlc3MoJnNrYl9zaGluZm8oc2tiKS0+ZnJhZ3NbMF0pOwotCQlO QVBJX0dST19DQihza2IpLT5mcmFnMF9sZW4gPSBza2JfZnJhZ19zaXplKCZza2Jfc2hpbmZvKHNr YiktPmZyYWdzWzBdKTsKKwkJTkFQSV9HUk9fQ0Ioc2tiKS0+ZnJhZzBfbGVuID0gbWluX3QodW5z aWduZWQgaW50LAorCQkJCQkJICAgIHNrYl9mcmFnX3NpemUoJnNrYl9zaGluZm8oc2tiKS0+ZnJh Z3NbMF0pLAorCQkJCQkJICAgIHNrYi0+ZW5kIC0gc2tiLT50YWlsKTsKIAl9CiB9CiBFWFBPUlRf U1lNQk9MKHNrYl9ncm9fcmVzZXRfb2Zmc2V0KTsKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Ryb3Bf bW9uaXRvci5jIGIvbmV0L2NvcmUvZHJvcF9tb25pdG9yLmMKaW5kZXggMWQ5YTUyOTI5YmFkLi4z MmIyZmE0NDlkNzcgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL2Ryb3BfbW9uaXRvci5jCisrKyBiL25l dC9jb3JlL2Ryb3BfbW9uaXRvci5jCkBAIC03Nyw2ICs3Nyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tf YnVmZiAqcmVzZXRfcGVyX2NwdV9kYXRhKHN0cnVjdCBwZXJfY3B1X2RtX2RhdGEgKmRhdGEpCiAJ c3RydWN0IG5sYXR0ciAqbmxhOwogCXN0cnVjdCBza19idWZmICpza2I7CiAJdW5zaWduZWQgbG9u ZyBmbGFnczsKKwl2b2lkICptc2dfaGVhZGVyOwogCiAJYWwgPSBzaXplb2Yoc3RydWN0IG5ldF9k bV9hbGVydF9tc2cpOwogCWFsICs9IGRtX2hpdF9saW1pdCAqIHNpemVvZihzdHJ1Y3QgbmV0X2Rt X2Ryb3BfcG9pbnQpOwpAQCAtODQsMjEgKzg1LDQxIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAq cmVzZXRfcGVyX2NwdV9kYXRhKHN0cnVjdCBwZXJfY3B1X2RtX2RhdGEgKmRhdGEpCiAKIAlza2Ig PSBnZW5sbXNnX25ldyhhbCwgR0ZQX0tFUk5FTCk7CiAKLQlpZiAoc2tiKSB7Ci0JCWdlbmxtc2df cHV0KHNrYiwgMCwgMCwgJm5ldF9kcm9wX21vbml0b3JfZmFtaWx5LAotCQkJCTAsIE5FVF9ETV9D TURfQUxFUlQpOwotCQlubGEgPSBubGFfcmVzZXJ2ZShza2IsIE5MQV9VTlNQRUMsCi0JCQkJICBz aXplb2Yoc3RydWN0IG5ldF9kbV9hbGVydF9tc2cpKTsKLQkJbXNnID0gbmxhX2RhdGEobmxhKTsK LQkJbWVtc2V0KG1zZywgMCwgYWwpOwotCX0gZWxzZSB7Ci0JCW1vZF90aW1lcigmZGF0YS0+c2Vu ZF90aW1lciwgamlmZmllcyArIEhaIC8gMTApOworCWlmICghc2tiKQorCQlnb3RvIGVycjsKKwor CW1zZ19oZWFkZXIgPSBnZW5sbXNnX3B1dChza2IsIDAsIDAsICZuZXRfZHJvcF9tb25pdG9yX2Zh bWlseSwKKwkJCQkgMCwgTkVUX0RNX0NNRF9BTEVSVCk7CisJaWYgKCFtc2dfaGVhZGVyKSB7CisJ CW5sbXNnX2ZyZWUoc2tiKTsKKwkJc2tiID0gTlVMTDsKKwkJZ290byBlcnI7CisJfQorCW5sYSA9 IG5sYV9yZXNlcnZlKHNrYiwgTkxBX1VOU1BFQywKKwkJCSAgc2l6ZW9mKHN0cnVjdCBuZXRfZG1f YWxlcnRfbXNnKSk7CisJaWYgKCFubGEpIHsKKwkJbmxtc2dfZnJlZShza2IpOworCQlza2IgPSBO VUxMOworCQlnb3RvIGVycjsKIAl9CisJbXNnID0gbmxhX2RhdGEobmxhKTsKKwltZW1zZXQobXNn LCAwLCBhbCk7CisJZ290byBvdXQ7CiAKK2VycjoKKwltb2RfdGltZXIoJmRhdGEtPnNlbmRfdGlt ZXIsIGppZmZpZXMgKyBIWiAvIDEwKTsKK291dDoKIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGF0YS0+ bG9jaywgZmxhZ3MpOwogCXN3YXAoZGF0YS0+c2tiLCBza2IpOwogCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmRhdGEtPmxvY2ssIGZsYWdzKTsKIAorCWlmIChza2IpIHsKKwkJc3RydWN0IG5sbXNn aGRyICpubGggPSAoc3RydWN0IG5sbXNnaGRyICopc2tiLT5kYXRhOworCQlzdHJ1Y3QgZ2VubG1z Z2hkciAqZ25saCA9IChzdHJ1Y3QgZ2VubG1zZ2hkciAqKW5sbXNnX2RhdGEobmxoKTsKKworCQln ZW5sbXNnX2VuZChza2IsIGdlbmxtc2dfZGF0YShnbmxoKSk7CisJfQorCiAJcmV0dXJuIHNrYjsK IH0KIApkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvc29jay5jIGIvbmV0L2NvcmUvc29jay5jCmluZGV4 IDA3YzA3OGUzZjU3MC4uYTFhM2E1MDdjNGM0IDEwMDY0NAotLS0gYS9uZXQvY29yZS9zb2NrLmMK KysrIGIvbmV0L2NvcmUvc29jay5jCkBAIC0xMjU5LDYgKzEyNTksNyBAQCBzdHJ1Y3Qgc29jayAq c2tfY2xvbmUoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBjb25zdCBnZnBfdCBwcmlvcml0eSkKIAkJ fQogCiAJCW5ld3NrLT5za19lcnIJICAgPSAwOworCQluZXdzay0+c2tfZXJyX3NvZnQgPSAwOwog CQluZXdzay0+c2tfcHJpb3JpdHkgPSAwOwogCQkvKgogCQkgKiBCZWZvcmUgdXBkYXRpbmcgc2tf cmVmY250LCB3ZSBtdXN0IGNvbW1pdCBwcmlvciBjaGFuZ2VzIHRvIG1lbW9yeQpAQCAtMTM2OSw2 ICsxMzcwLDExIEBAIHZvaWQgc29ja19yZnJlZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogfQogRVhQ T1JUX1NZTUJPTChzb2NrX3JmcmVlKTsKIAordm9pZCBzb2NrX2VmcmVlKHN0cnVjdCBza19idWZm ICpza2IpCit7CisJc29ja19wdXQoc2tiLT5zayk7Cit9CitFWFBPUlRfU1lNQk9MKHNvY2tfZWZy ZWUpOwogCiBpbnQgc29ja19pX3VpZChzdHJ1Y3Qgc29jayAqc2spCiB7CkBAIC0xNzQ1LDE0ICsx NzUxLDE1IEBAIEVYUE9SVF9TWU1CT0woX19za19tZW1fc2NoZWR1bGUpOwogLyoqCiAgKglfX3Nr X3JlY2xhaW0gLSByZWNsYWltIG1lbW9yeV9hbGxvY2F0ZWQKICAqCUBzazogc29ja2V0CisgKglA YW1vdW50OiBudW1iZXIgb2YgYnl0ZXMgKHJvdW5kZWQgZG93biB0byBhIFNLX01FTV9RVUFOVFVN IG11bHRpcGxlKQogICovCi12b2lkIF9fc2tfbWVtX3JlY2xhaW0oc3RydWN0IHNvY2sgKnNrKQor dm9pZCBfX3NrX21lbV9yZWNsYWltKHN0cnVjdCBzb2NrICpzaywgaW50IGFtb3VudCkKIHsKIAlz dHJ1Y3QgcHJvdG8gKnByb3QgPSBzay0+c2tfcHJvdDsKIAotCWF0b21pY19sb25nX3N1Yihzay0+ c2tfZm9yd2FyZF9hbGxvYyA+PiBTS19NRU1fUVVBTlRVTV9TSElGVCwKLQkJICAgcHJvdC0+bWVt b3J5X2FsbG9jYXRlZCk7Ci0Jc2stPnNrX2ZvcndhcmRfYWxsb2MgJj0gU0tfTUVNX1FVQU5UVU0g LSAxOworCWFtb3VudCA+Pj0gU0tfTUVNX1FVQU5UVU1fU0hJRlQ7CisJYXRvbWljX2xvbmdfc3Vi KGFtb3VudCwgcHJvdC0+bWVtb3J5X2FsbG9jYXRlZCk7CisJc2stPnNrX2ZvcndhcmRfYWxsb2Mg LT0gYW1vdW50IDw8IFNLX01FTV9RVUFOVFVNX1NISUZUOwogCiAJaWYgKHByb3QtPm1lbW9yeV9w cmVzc3VyZSAmJiAqcHJvdC0+bWVtb3J5X3ByZXNzdXJlICYmCiAJICAgIChhdG9taWNfbG9uZ19y ZWFkKHByb3QtPm1lbW9yeV9hbGxvY2F0ZWQpIDwgcHJvdC0+c3lzY3RsX21lbVswXSkpCmRpZmYg LS1naXQgYS9uZXQvZGNjcC9pcHY0LmMgYi9uZXQvZGNjcC9pcHY0LmMKaW5kZXggZDMzNjUwMWYz NDUxLi45ODYwN2UxOTUzM2UgMTAwNjQ0Ci0tLSBhL25ldC9kY2NwL2lwdjQuYworKysgYi9uZXQv ZGNjcC9pcHY0LmMKQEAgLTIxMSw3ICsyMTEsNyBAQCBzdGF0aWMgdm9pZCBkY2NwX3Y0X2Vycihz dHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mbykKIHsKIAljb25zdCBzdHJ1Y3QgaXBoZHIgKmlw aCA9IChzdHJ1Y3QgaXBoZHIgKilza2ItPmRhdGE7CiAJY29uc3QgdTggb2Zmc2V0ID0gaXBoLT5p aGwgPDwgMjsKLQljb25zdCBzdHJ1Y3QgZGNjcF9oZHIgKmRoID0gKHN0cnVjdCBkY2NwX2hkciAq KShza2ItPmRhdGEgKyBvZmZzZXQpOworCWNvbnN0IHN0cnVjdCBkY2NwX2hkciAqZGg7CiAJc3Ry dWN0IGRjY3Bfc29jayAqZHA7CiAJc3RydWN0IGluZXRfc29jayAqaW5ldDsKIAljb25zdCBpbnQg dHlwZSA9IGljbXBfaGRyKHNrYiktPnR5cGU7CkBAIC0yMjEsMTEgKzIyMSwxMyBAQCBzdGF0aWMg dm9pZCBkY2NwX3Y0X2VycihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mbykKIAlpbnQgZXJy OwogCXN0cnVjdCBuZXQgKm5ldCA9IGRldl9uZXQoc2tiLT5kZXYpOwogCi0JaWYgKHNrYi0+bGVu IDwgb2Zmc2V0ICsgc2l6ZW9mKCpkaCkgfHwKLQkgICAgc2tiLT5sZW4gPCBvZmZzZXQgKyBfX2Rj Y3BfYmFzaWNfaGRyX2xlbihkaCkpIHsKLQkJSUNNUF9JTkNfU1RBVFNfQkgobmV0LCBJQ01QX01J Ql9JTkVSUk9SUyk7Ci0JCXJldHVybjsKLQl9CisJLyogT25seSBuZWVkIGRjY3BoX2Rwb3J0ICYg ZGNjcGhfc3BvcnQgd2hpY2ggYXJlIHRoZSBmaXJzdAorCSAqIDQgYnl0ZXMgaW4gZGNjcCBoZWFk ZXIuCisJICogT3VyIGNhbGxlciAoaWNtcF9zb2NrZXRfZGVsaXZlcigpKSBhbHJlYWR5IHB1bGxl ZCA4IGJ5dGVzIGZvciB1cy4KKwkgKi8KKwlCVUlMRF9CVUdfT04ob2Zmc2V0b2Yoc3RydWN0IGRj Y3BfaGRyLCBkY2NwaF9zcG9ydCkgKyBzaXplb2YoZGgtPmRjY3BoX3Nwb3J0KSA+IDgpOworCUJV SUxEX0JVR19PTihvZmZzZXRvZihzdHJ1Y3QgZGNjcF9oZHIsIGRjY3BoX2Rwb3J0KSArIHNpemVv ZihkaC0+ZGNjcGhfZHBvcnQpID4gOCk7CisJZGggPSAoc3RydWN0IGRjY3BfaGRyICopKHNrYi0+ ZGF0YSArIG9mZnNldCk7CiAKIAlzayA9IGluZXRfbG9va3VwKG5ldCwgJmRjY3BfaGFzaGluZm8s CiAJCQlpcGgtPmRhZGRyLCBkaC0+ZGNjcGhfZHBvcnQsCkBAIC03MjgsNiArNzMwLDcgQEAgaW50 IGRjY3BfaW52YWxpZF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAljb25zdCBzdHJ1 Y3QgZGNjcF9oZHIgKmRoOwogCXVuc2lnbmVkIGludCBjc2NvdjsKKwl1OCBkY2NwaF9kb2ZmOwog CiAJaWYgKHNrYi0+cGt0X3R5cGUgIT0gUEFDS0VUX0hPU1QpCiAJCXJldHVybiAxOwpAQCAtNzQ5 LDE4ICs3NTIsMTkgQEAgaW50IGRjY3BfaW52YWxpZF9wYWNrZXQoc3RydWN0IHNrX2J1ZmYgKnNr YikKIAkvKgogCSAqIElmIFAuRGF0YSBPZmZzZXQgaXMgdG9vIHNtYWxsIGZvciBwYWNrZXQgdHlw ZSwgZHJvcCBwYWNrZXQgYW5kIHJldHVybgogCSAqLwotCWlmIChkaC0+ZGNjcGhfZG9mZiA8IGRj Y3BfaGRyX2xlbihza2IpIC8gc2l6ZW9mKHUzMikpIHsKLQkJRENDUF9XQVJOKCJQLkRhdGEgT2Zm c2V0KCV1KSB0b28gc21hbGxcbiIsIGRoLT5kY2NwaF9kb2ZmKTsKKwlkY2NwaF9kb2ZmID0gZGgt PmRjY3BoX2RvZmY7CisJaWYgKGRjY3BoX2RvZmYgPCBkY2NwX2hkcl9sZW4oc2tiKSAvIHNpemVv Zih1MzIpKSB7CisJCURDQ1BfV0FSTigiUC5EYXRhIE9mZnNldCgldSkgdG9vIHNtYWxsXG4iLCBk Y2NwaF9kb2ZmKTsKIAkJcmV0dXJuIDE7CiAJfQogCS8qCiAJICogSWYgUC5EYXRhIE9mZnNldCBp cyB0b28gdG9vIGxhcmdlIGZvciBwYWNrZXQsIGRyb3AgcGFja2V0IGFuZCByZXR1cm4KIAkgKi8K LQlpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBkaC0+ZGNjcGhfZG9mZiAqIHNpemVvZih1MzIpKSkg ewotCQlEQ0NQX1dBUk4oIlAuRGF0YSBPZmZzZXQoJXUpIHRvbyBsYXJnZVxuIiwgZGgtPmRjY3Bo X2RvZmYpOworCWlmICghcHNrYl9tYXlfcHVsbChza2IsIGRjY3BoX2RvZmYgKiBzaXplb2YodTMy KSkpIHsKKwkJRENDUF9XQVJOKCJQLkRhdGEgT2Zmc2V0KCV1KSB0b28gbGFyZ2VcbiIsIGRjY3Bo X2RvZmYpOwogCQlyZXR1cm4gMTsKIAl9Ci0KKwlkaCA9IGRjY3BfaGRyKHNrYik7CiAJLyoKIAkg KiBJZiBQLnR5cGUgaXMgbm90IERhdGEsIEFjaywgb3IgRGF0YUFjayBhbmQgUC5YID09IDAgKHRo ZSBwYWNrZXQKIAkgKiBoYXMgc2hvcnQgc2VxdWVuY2UgbnVtYmVycyksIGRyb3AgcGFja2V0IGFu ZCByZXR1cm4KZGlmZiAtLWdpdCBhL25ldC9kY2NwL2lwdjYuYyBiL25ldC9kY2NwL2lwdjYuYwpp bmRleCBiMDBiYzExNWEyZjAuLmUxMGQ4NTEyZDQzMSAxMDA2NDQKLS0tIGEvbmV0L2RjY3AvaXB2 Ni5jCisrKyBiL25ldC9kY2NwL2lwdjYuYwpAQCAtODMsNyArODMsNyBAQCBzdGF0aWMgdm9pZCBk Y2NwX3Y2X2VycihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW5ldDZfc2tiX3Bhcm0gKm9w dCwKIAkJCXU4IHR5cGUsIHU4IGNvZGUsIGludCBvZmZzZXQsIF9fYmUzMiBpbmZvKQogewogCWNv bnN0IHN0cnVjdCBpcHY2aGRyICpoZHIgPSAoY29uc3Qgc3RydWN0IGlwdjZoZHIgKilza2ItPmRh dGE7Ci0JY29uc3Qgc3RydWN0IGRjY3BfaGRyICpkaCA9IChzdHJ1Y3QgZGNjcF9oZHIgKikoc2ti LT5kYXRhICsgb2Zmc2V0KTsKKwljb25zdCBzdHJ1Y3QgZGNjcF9oZHIgKmRoOwogCXN0cnVjdCBk Y2NwX3NvY2sgKmRwOwogCXN0cnVjdCBpcHY2X3BpbmZvICpucDsKIAlzdHJ1Y3Qgc29jayAqc2s7 CkBAIC05MSwxMiArOTEsMTMgQEAgc3RhdGljIHZvaWQgZGNjcF92Nl9lcnIoc3RydWN0IHNrX2J1 ZmYgKnNrYiwgc3RydWN0IGluZXQ2X3NrYl9wYXJtICpvcHQsCiAJX191NjQgc2VxOwogCXN0cnVj dCBuZXQgKm5ldCA9IGRldl9uZXQoc2tiLT5kZXYpOwogCi0JaWYgKHNrYi0+bGVuIDwgb2Zmc2V0 ICsgc2l6ZW9mKCpkaCkgfHwKLQkgICAgc2tiLT5sZW4gPCBvZmZzZXQgKyBfX2RjY3BfYmFzaWNf aGRyX2xlbihkaCkpIHsKLQkJSUNNUDZfSU5DX1NUQVRTX0JIKG5ldCwgX19pbjZfZGV2X2dldChz a2ItPmRldiksCi0JCQkJICAgSUNNUDZfTUlCX0lORVJST1JTKTsKLQkJcmV0dXJuOwotCX0KKwkv KiBPbmx5IG5lZWQgZGNjcGhfZHBvcnQgJiBkY2NwaF9zcG9ydCB3aGljaCBhcmUgdGhlIGZpcnN0 CisJICogNCBieXRlcyBpbiBkY2NwIGhlYWRlci4KKwkgKiBPdXIgY2FsbGVyIChpY21wdjZfbm90 aWZ5KCkpIGFscmVhZHkgcHVsbGVkIDggYnl0ZXMgZm9yIHVzLgorCSAqLworCUJVSUxEX0JVR19P TihvZmZzZXRvZihzdHJ1Y3QgZGNjcF9oZHIsIGRjY3BoX3Nwb3J0KSArIHNpemVvZihkaC0+ZGNj cGhfc3BvcnQpID4gOCk7CisJQlVJTERfQlVHX09OKG9mZnNldG9mKHN0cnVjdCBkY2NwX2hkciwg ZGNjcGhfZHBvcnQpICsgc2l6ZW9mKGRoLT5kY2NwaF9kcG9ydCkgPiA4KTsKKwlkaCA9IChzdHJ1 Y3QgZGNjcF9oZHIgKikoc2tiLT5kYXRhICsgb2Zmc2V0KTsKIAogCXNrID0gaW5ldDZfbG9va3Vw KG5ldCwgJmRjY3BfaGFzaGluZm8sCiAJCQkmaGRyLT5kYWRkciwgZGgtPmRjY3BoX2Rwb3J0LApk aWZmIC0tZ2l0IGEvbmV0L2RjY3AvcHJvdG8uYyBiL25ldC9kY2NwL3Byb3RvLmMKaW5kZXggZTc0 MmY5MGE2ODU4Li5iZDNlY2RkNjcxMjEgMTAwNjQ0Ci0tLSBhL25ldC9kY2NwL3Byb3RvLmMKKysr IGIvbmV0L2RjY3AvcHJvdG8uYwpAQCAtMTAxMiw2ICsxMDEyLDEwIEBAIHZvaWQgZGNjcF9jbG9z ZShzdHJ1Y3Qgc29jayAqc2ssIGxvbmcgdGltZW91dCkKIAkJX19rZnJlZV9za2Ioc2tiKTsKIAl9 CiAKKwkvKiBJZiBzb2NrZXQgaGFzIGJlZW4gYWxyZWFkeSByZXNldCBraWxsIGl0LiAqLworCWlm IChzay0+c2tfc3RhdGUgPT0gRENDUF9DTE9TRUQpCisJCWdvdG8gYWRqdWRnZV90b19kZWF0aDsK KwogCWlmIChkYXRhX3dhc191bnJlYWQpIHsKIAkJLyogVW5yZWFkIGRhdGEgd2FzIHRvc3NlZCwg c2VuZCBhbiBhcHByb3ByaWF0ZSBSZXNldCBDb2RlICovCiAJCURDQ1BfV0FSTigiQUJPUlQgd2l0 aCAldSBieXRlcyB1bnJlYWRcbiIsIGRhdGFfd2FzX3VucmVhZCk7CmRpZmYgLS1naXQgYS9uZXQv ZGVjbmV0L2RuX3JvdXRlLmMgYi9uZXQvZGVjbmV0L2RuX3JvdXRlLmMKaW5kZXggOTRmNGVjMDM2 NjY5Li5iYjUxNmJiZmIxYjcgMTAwNjQ0Ci0tLSBhL25ldC9kZWNuZXQvZG5fcm91dGUuYworKysg Yi9uZXQvZGVjbmV0L2RuX3JvdXRlLmMKQEAgLTk5OCwxMCArOTk4LDEzIEBAIHNvdXJjZV9vazoK IAlpZiAoIWZsZC5kYWRkcikgewogCQlmbGQuZGFkZHIgPSBmbGQuc2FkZHI7CiAKLQkJZXJyID0g LUVBRERSTk9UQVZBSUw7CiAJCWlmIChkZXZfb3V0KQogCQkJZGV2X3B1dChkZXZfb3V0KTsKKwkJ ZXJyID0gLUVJTlZBTDsKIAkJZGV2X291dCA9IGluaXRfbmV0Lmxvb3BiYWNrX2RldjsKKwkJaWYg KCFkZXZfb3V0LT5kbl9wdHIpCisJCQlnb3RvIG91dDsKKwkJZXJyID0gLUVBRERSTk9UQVZBSUw7 CiAJCWRldl9ob2xkKGRldl9vdXQpOwogCQlpZiAoIWZsZC5kYWRkcikgewogCQkJZmxkLmRhZGRy ID0KQEAgLTEwNzQsNiArMTA3Nyw4IEBAIHNvdXJjZV9vazoKIAkJaWYgKGRldl9vdXQgPT0gTlVM TCkKIAkJCWdvdG8gb3V0OwogCQlkbl9kYiA9IHJjdV9kZXJlZmVyZW5jZV9yYXcoZGV2X291dC0+ ZG5fcHRyKTsKKwkJaWYgKCFkbl9kYikKKwkJCWdvdG8gZV9pbnZhbDsKIAkJLyogUG9zc2libGUg aW1wcm92ZW1lbnQgLSBjaGVjayBhbGwgZGV2aWNlcyBmb3IgbG9jYWwgYWRkciAqLwogCQlpZiAo ZG5fZGV2X2lzbG9jYWwoZGV2X291dCwgZmxkLmRhZGRyKSkgewogCQkJZGV2X3B1dChkZXZfb3V0 KTsKQEAgLTExMTUsNiArMTEyMCw4IEBAIHNlbGVjdF9zb3VyY2U6CiAJCQlkZXZfcHV0KGRldl9v dXQpOwogCQlkZXZfb3V0ID0gaW5pdF9uZXQubG9vcGJhY2tfZGV2OwogCQlkZXZfaG9sZChkZXZf b3V0KTsKKwkJaWYgKCFkZXZfb3V0LT5kbl9wdHIpCisJCQlnb3RvIGVfaW52YWw7CiAJCWZsZC5m bG93aWRuX29pZiA9IGRldl9vdXQtPmlmaW5kZXg7CiAJCWlmIChyZXMuZmkpCiAJCQlkbl9maWJf aW5mb19wdXQocmVzLmZpKTsKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2NpcHNvX2lwdjQuYyBiL25l dC9pcHY0L2NpcHNvX2lwdjQuYwppbmRleCBkYmVjOGI1YTlkOGEuLmE4YzVkMmM0ZTM0NSAxMDA2 NDQKLS0tIGEvbmV0L2lwdjQvY2lwc29faXB2NC5jCisrKyBiL25ldC9pcHY0L2NpcHNvX2lwdjQu YwpAQCAtMTY0OSw2ICsxNjQ5LDEwIEBAIGludCBjaXBzb192NF92YWxpZGF0ZShjb25zdCBzdHJ1 Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBjaGFyICoqb3B0aW9uKQogCQkJCWdvdG8gdmFsaWRh dGVfcmV0dXJuX2xvY2tlZDsKIAkJCX0KIAorCQlpZiAob3B0X2l0ZXIgKyAxID09IG9wdF9sZW4p IHsKKwkJCWVycl9vZmZzZXQgPSBvcHRfaXRlcjsKKwkJCWdvdG8gdmFsaWRhdGVfcmV0dXJuX2xv Y2tlZDsKKwkJfQogCQl0YWdfbGVuID0gdGFnWzFdOwogCQlpZiAodGFnX2xlbiA+IChvcHRfbGVu IC0gb3B0X2l0ZXIpKSB7CiAJCQllcnJfb2Zmc2V0ID0gb3B0X2l0ZXIgKyAxOwpkaWZmIC0tZ2l0 IGEvbmV0L2lwdjQvaWdtcC5jIGIvbmV0L2lwdjQvaWdtcC5jCmluZGV4IDI0ZjY5YTBjZWJmYS4u MGEzNWYwODQ2MTQyIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pZ21wLmMKKysrIGIvbmV0L2lwdjQv aWdtcC5jCkBAIC0xNDAsNyArMTQwLDcgQEAKIAkgIHRpbWVfYmVmb3JlKGppZmZpZXMsIChpbl9k ZXYpLT5tcl92Ml9zZWVuKSkpCiAKIHN0YXRpYyB2b2lkIGlnbXB2M19hZGRfZGVscmVjKHN0cnVj dCBpbl9kZXZpY2UgKmluX2Rldiwgc3RydWN0IGlwX21jX2xpc3QgKmltKTsKLXN0YXRpYyB2b2lk IGlnbXB2M19kZWxfZGVscmVjKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiwgX19iZTMyIG11bHRp YWRkcik7CitzdGF0aWMgdm9pZCBpZ21wdjNfZGVsX2RlbHJlYyhzdHJ1Y3QgaW5fZGV2aWNlICpp bl9kZXYsIHN0cnVjdCBpcF9tY19saXN0ICppbSk7CiBzdGF0aWMgdm9pZCBpZ21wdjNfY2xlYXJf ZGVscmVjKHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldik7CiBzdGF0aWMgaW50IHNmX3NldHN0YXRl KHN0cnVjdCBpcF9tY19saXN0ICpwbWMpOwogc3RhdGljIHZvaWQgc2ZfbWFya3N0YXRlKHN0cnVj dCBpcF9tY19saXN0ICpwbWMpOwpAQCAtMTk3LDkgKzE5NywxNCBAQCBzdGF0aWMgdm9pZCBpZ21w X3N0YXJ0X3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSwgaW50IG1heF9kZWxheSkKIHN0YXRp YyB2b2lkIGlnbXBfZ3Ffc3RhcnRfdGltZXIoc3RydWN0IGluX2RldmljZSAqaW5fZGV2KQogewog CWludCB0diA9IG5ldF9yYW5kb20oKSAlIGluX2Rldi0+bXJfbWF4ZGVsYXk7CisJdW5zaWduZWQg bG9uZyBleHAgPSBqaWZmaWVzICsgdHYgKyAyOworCisJaWYgKGluX2Rldi0+bXJfZ3FfcnVubmlu ZyAmJgorCSAgICB0aW1lX2FmdGVyX2VxKGV4cCwgKGluX2Rldi0+bXJfZ3FfdGltZXIpLmV4cGly ZXMpKQorCQlyZXR1cm47CiAKIAlpbl9kZXYtPm1yX2dxX3J1bm5pbmcgPSAxOwotCWlmICghbW9k X3RpbWVyKCZpbl9kZXYtPm1yX2dxX3RpbWVyLCBqaWZmaWVzK3R2KzIpKQorCWlmICghbW9kX3Rp bWVyKCZpbl9kZXYtPm1yX2dxX3RpbWVyLCBleHApKQogCQlpbl9kZXZfaG9sZChpbl9kZXYpOwog fQogCkBAIC0xMDc3LDEwICsxMDgyLDE0IEBAIHN0YXRpYyB2b2lkIGlnbXB2M19hZGRfZGVscmVj KHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldiwgc3RydWN0IGlwX21jX2xpc3QgKmltKQogCXNwaW5f dW5sb2NrX2JoKCZpbl9kZXYtPm1jX3RvbWJfbG9jayk7CiB9CiAKLXN0YXRpYyB2b2lkIGlnbXB2 M19kZWxfZGVscmVjKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiwgX19iZTMyIG11bHRpYWRkcikK Ky8qCisgKiByZXN0b3JlIGlwX21jX2xpc3QgZGVsZXRlZCByZWNvcmRzCisgKi8KK3N0YXRpYyB2 b2lkIGlnbXB2M19kZWxfZGVscmVjKHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldiwgc3RydWN0IGlw X21jX2xpc3QgKmltKQogewogCXN0cnVjdCBpcF9tY19saXN0ICpwbWMsICpwbWNfcHJldjsKLQlz dHJ1Y3QgaXBfc2ZfbGlzdCAqcHNmLCAqcHNmX25leHQ7CisJc3RydWN0IGlwX3NmX2xpc3QgKnBz ZjsKKwlfX2JlMzIgbXVsdGlhZGRyID0gaW0tPm11bHRpYWRkcjsKIAogCXNwaW5fbG9ja19iaCgm aW5fZGV2LT5tY190b21iX2xvY2spOwogCXBtY19wcmV2ID0gTlVMTDsKQEAgLTEwOTYsMTYgKzEx MDUsMjcgQEAgc3RhdGljIHZvaWQgaWdtcHYzX2RlbF9kZWxyZWMoc3RydWN0IGluX2RldmljZSAq aW5fZGV2LCBfX2JlMzIgbXVsdGlhZGRyKQogCQkJaW5fZGV2LT5tY190b21iID0gcG1jLT5uZXh0 OwogCX0KIAlzcGluX3VubG9ja19iaCgmaW5fZGV2LT5tY190b21iX2xvY2spOworCisJc3Bpbl9s b2NrX2JoKCZpbS0+bG9jayk7CiAJaWYgKHBtYykgewotCQlmb3IgKHBzZj1wbWMtPnRvbWI7IHBz ZjsgcHNmPXBzZl9uZXh0KSB7Ci0JCQlwc2ZfbmV4dCA9IHBzZi0+c2ZfbmV4dDsKLQkJCWtmcmVl KHBzZik7CisJCWltLT5pbnRlcmZhY2UgPSBwbWMtPmludGVyZmFjZTsKKwkJaW0tPmNyY291bnQg PSBpbl9kZXYtPm1yX3FydiA/OiBJR01QX1Vuc29saWNpdGVkX1JlcG9ydF9Db3VudDsKKwkJaW0t PnNmbW9kZSA9IHBtYy0+c2Ztb2RlOworCQlpZiAocG1jLT5zZm1vZGUgPT0gTUNBU1RfSU5DTFVE RSkgeworCQkJaW0tPnRvbWIgPSBwbWMtPnRvbWI7CisJCQlpbS0+c291cmNlcyA9IHBtYy0+c291 cmNlczsKKwkJCWZvciAocHNmID0gaW0tPnNvdXJjZXM7IHBzZjsgcHNmID0gcHNmLT5zZl9uZXh0 KQorCQkJCXBzZi0+c2ZfY3Jjb3VudCA9IGltLT5jcmNvdW50OwogCQl9CiAJCWluX2Rldl9wdXQo cG1jLT5pbnRlcmZhY2UpOwogCQlrZnJlZShwbWMpOwogCX0KKwlzcGluX3VubG9ja19iaCgmaW0t PmxvY2spOwogfQogCisvKgorICogZmx1c2ggaXBfbWNfbGlzdCBkZWxldGVkIHJlY29yZHMKKyAq Lwogc3RhdGljIHZvaWQgaWdtcHYzX2NsZWFyX2RlbHJlYyhzdHJ1Y3QgaW5fZGV2aWNlICppbl9k ZXYpCiB7CiAJc3RydWN0IGlwX21jX2xpc3QgKnBtYywgKm5leHRwbWM7CkBAIC0xMjUwLDcgKzEy NzAsNyBAQCB2b2lkIGlwX21jX2luY19ncm91cChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsIF9f YmUzMiBhZGRyKQogCXJjdV9hc3NpZ25fcG9pbnRlcihpbl9kZXYtPm1jX2xpc3QsIGltKTsKIAog I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1QKLQlpZ21wdjNfZGVsX2RlbHJlYyhpbl9kZXYsIGlt LT5tdWx0aWFkZHIpOworCWlnbXB2M19kZWxfZGVscmVjKGluX2RldiwgaW0pOwogI2VuZGlmCiAJ aWdtcF9ncm91cF9hZGRlZChpbSk7CiAJaWYgKCFpbl9kZXYtPmRlYWQpCkBAIC0xMzQwLDggKzEz NjAsMTIgQEAgdm9pZCBpcF9tY19yZW1hcChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpCiAKIAlB U1NFUlRfUlROTCgpOwogCi0JZm9yX2VhY2hfcG1jX3J0bmwoaW5fZGV2LCBwbWMpCisJZm9yX2Vh Y2hfcG1jX3J0bmwoaW5fZGV2LCBwbWMpIHsKKyNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUCisJ CWlnbXB2M19kZWxfZGVscmVjKGluX2RldiwgcG1jKTsKKyNlbmRpZgogCQlpZ21wX2dyb3VwX2Fk ZGVkKHBtYyk7CisJfQogfQogCiAvKiBEZXZpY2UgZ29pbmcgZG93biAqLwpAQCAtMTM2Miw3ICsx Mzg2LDYgQEAgdm9pZCBpcF9tY19kb3duKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldikKIAlpbl9k ZXYtPm1yX2dxX3J1bm5pbmcgPSAwOwogCWlmIChkZWxfdGltZXIoJmluX2Rldi0+bXJfZ3FfdGlt ZXIpKQogCQlfX2luX2Rldl9wdXQoaW5fZGV2KTsKLQlpZ21wdjNfY2xlYXJfZGVscmVjKGluX2Rl dik7CiAjZW5kaWYKIAogCWlwX21jX2RlY19ncm91cChpbl9kZXYsIElHTVBfQUxMX0hPU1RTKTsK QEAgLTEzOTcsOCArMTQyMCwxMiBAQCB2b2lkIGlwX21jX3VwKHN0cnVjdCBpbl9kZXZpY2UgKmlu X2RldikKIAogCWlwX21jX2luY19ncm91cChpbl9kZXYsIElHTVBfQUxMX0hPU1RTKTsKIAotCWZv cl9lYWNoX3BtY19ydG5sKGluX2RldiwgcG1jKQorCWZvcl9lYWNoX3BtY19ydG5sKGluX2Rldiwg cG1jKSB7CisjaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVAorCQlpZ21wdjNfZGVsX2RlbHJlYyhp bl9kZXYsIHBtYyk7CisjZW5kaWYKIAkJaWdtcF9ncm91cF9hZGRlZChwbWMpOworCX0KIH0KIAog LyoKQEAgLTE0MTMsMTMgKzE0NDAsMTMgQEAgdm9pZCBpcF9tY19kZXN0cm95X2RldihzdHJ1Y3Qg aW5fZGV2aWNlICppbl9kZXYpCiAKIAkvKiBEZWFjdGl2YXRlIHRpbWVycyAqLwogCWlwX21jX2Rv d24oaW5fZGV2KTsKKyNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUCisJaWdtcHYzX2NsZWFyX2Rl bHJlYyhpbl9kZXYpOworI2VuZGlmCiAKIAl3aGlsZSAoKGkgPSBydG5sX2RlcmVmZXJlbmNlKGlu X2Rldi0+bWNfbGlzdCkpICE9IE5VTEwpIHsKIAkJaW5fZGV2LT5tY19saXN0ID0gaS0+bmV4dF9y Y3U7CiAJCWluX2Rldi0+bWNfY291bnQtLTsKLQotCQkvKiBXZSd2ZSBkcm9wcGVkIHRoZSBncm91 cHMgaW4gaXBfbWNfZG93biBhbHJlYWR5ICovCi0JCWlwX21jX2NsZWFyX3NyYyhpKTsKIAkJaXBf bWFfcHV0KGkpOwogCX0KIH0KZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwbXIuYyBiL25ldC9pcHY0 L2lwbXIuYwppbmRleCA2NTU4YTkxODI3OTMuLjg2YWY3ZmU0OTI0MCAxMDA2NDQKLS0tIGEvbmV0 L2lwdjQvaXBtci5jCisrKyBiL25ldC9pcHY0L2lwbXIuYwpAQCAtODMwLDggKzgzMCwxMCBAQCBz dGF0aWMgc3RydWN0IG1mY19jYWNoZSAqaXBtcl9jYWNoZV9hbGxvYyh2b2lkKQogewogCXN0cnVj dCBtZmNfY2FjaGUgKmMgPSBrbWVtX2NhY2hlX3phbGxvYyhtcnRfY2FjaGVwLCBHRlBfS0VSTkVM KTsKIAotCWlmIChjKQorCWlmIChjKSB7CisJCWMtPm1mY191bi5yZXMubGFzdF9hc3NlcnQgPSBq aWZmaWVzIC0gTUZDX0FTU0VSVF9USFJFU0ggLSAxOwogCQljLT5tZmNfdW4ucmVzLm1pbnZpZiA9 IE1BWFZJRlM7CisJfQogCXJldHVybiBjOwogfQogCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9waW5n LmMgYi9uZXQvaXB2NC9waW5nLmMKaW5kZXggY2Y0NzlmMmQxZThjLi45NDI0ODYyNGUyNjEgMTAw NjQ0Ci0tLSBhL25ldC9pcHY0L3BpbmcuYworKysgYi9uZXQvaXB2NC9waW5nLmMKQEAgLTQ1Miw2 ICs0NTIsOCBAQCBzdGF0aWMgaW50IHBpbmdfcHVzaF9wZW5kaW5nX2ZyYW1lcyhzdHJ1Y3Qgc29j ayAqc2ssIHN0cnVjdCBwaW5nZmFrZWhkciAqcGZoLAogewogCXN0cnVjdCBza19idWZmICpza2Ig PSBza2JfcGVlaygmc2stPnNrX3dyaXRlX3F1ZXVlKTsKIAorCWlmICghc2tiKQorCQlyZXR1cm4g MDsKIAlwZmgtPndjaGVjayA9IGNzdW1fcGFydGlhbCgoY2hhciAqKSZwZmgtPmljbXBoLAogCQlz aXplb2Yoc3RydWN0IGljbXBoZHIpLCBwZmgtPndjaGVjayk7CiAJcGZoLT5pY21waC5jaGVja3N1 bSA9IGNzdW1fZm9sZChwZmgtPndjaGVjayk7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9yb3V0ZS5j IGIvbmV0L2lwdjQvcm91dGUuYwppbmRleCAzMDI2YjY1ZjlhODQuLmQzZTQ1ZmNiN2MzMyAxMDA2 NDQKLS0tIGEvbmV0L2lwdjQvcm91dGUuYworKysgYi9uZXQvaXB2NC9yb3V0ZS5jCkBAIC0yNjA0 LDYgKzI2MDQsMTggQEAgc3RhdGljIHN0cnVjdCBydGFibGUgKl9fbWtyb3V0ZV9vdXRwdXQoY29u c3Qgc3RydWN0IGZpYl9yZXN1bHQgKnJlcywKIAkJICovCiAJCWlmIChmaSAmJiByZXMtPnByZWZp eGxlbiA8IDQpCiAJCQlmaSA9IE5VTEw7CisJfSBlbHNlIGlmICgodHlwZSA9PSBSVE5fTE9DQUwp ICYmIChvcmlnX29pZiAhPSAwKSAmJgorCQkgICAob3JpZ19vaWYgIT0gZGV2X291dC0+aWZpbmRl eCkpIHsKKwkJLyogRm9yIGxvY2FsIHJvdXRlcyB0aGF0IHJlcXVpcmUgYSBwYXJ0aWN1bGFyIG91 dHB1dCBpbnRlcmZhY2UKKwkJICogd2UgZG8gbm90IHdhbnQgdG8gY2FjaGUgdGhlIHJlc3VsdC4g IENhY2hpbmcgdGhlIHJlc3VsdAorCQkgKiBjYXVzZXMgaW5jb3JyZWN0IGJlaGF2aW91ciB3aGVu IHRoZXJlIGFyZSBtdWx0aXBsZSBzb3VyY2UKKwkJICogYWRkcmVzc2VzIG9uIHRoZSBpbnRlcmZh Y2UsIHRoZSBlbmQgcmVzdWx0IGJlaW5nIHRoYXQgaWYgdGhlCisJCSAqIGludGVuZGVkIHJlY2lw aWVudCBpcyB3YWl0aW5nIG9uIHRoYXQgaW50ZXJmYWNlIGZvciB0aGUKKwkJICogcGFja2V0IGhl IHdvbid0IHJlY2VpdmUgaXQgYmVjYXVzZSBpdCB3aWxsIGJlIGRlbGl2ZXJlZCBvbgorCQkgKiB0 aGUgbG9vcGJhY2sgaW50ZXJmYWNlIGFuZCB0aGUgSVBfUEtUSU5GTyBpcGlfaWZpbmRleCB3aWxs CisJCSAqIGJlIHNldCB0byB0aGUgbG9vcGJhY2sgaW50ZXJmYWNlIGFzIHdlbGwuCisJCSAqLwor CQlmaSA9IE5VTEw7CiAJfQogCiAJcnRoID0gcnRfZHN0X2FsbG9jKGRldl9vdXQsCmRpZmYgLS1n aXQgYS9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMgYi9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMKaW5kZXgg OTE4ZWNkNzI0YzFiLi4xYzk2ZTliMjVlNTggMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9vdXRw dXQuYworKysgYi9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMKQEAgLTE2ODAsMTIgKzE2ODAsMTQgQEAg c3RhdGljIGludCB0Y3BfbXR1X3Byb2JlKHN0cnVjdCBzb2NrICpzaykKIAlsZW4gPSAwOwogCXRj cF9mb3Jfd3JpdGVfcXVldWVfZnJvbV9zYWZlKHNrYiwgbmV4dCwgc2spIHsKIAkJY29weSA9IG1p bl90KGludCwgc2tiLT5sZW4sIHByb2JlX3NpemUgLSBsZW4pOwotCQlpZiAobnNrYi0+aXBfc3Vt bWVkKQorCQlpZiAobnNrYi0+aXBfc3VtbWVkKSB7CiAJCQlza2JfY29weV9iaXRzKHNrYiwgMCwg c2tiX3B1dChuc2tiLCBjb3B5KSwgY29weSk7Ci0JCWVsc2UKLQkJCW5za2ItPmNzdW0gPSBza2Jf Y29weV9hbmRfY3N1bV9iaXRzKHNrYiwgMCwKLQkJCQkJCQkgICAgc2tiX3B1dChuc2tiLCBjb3B5 KSwKLQkJCQkJCQkgICAgY29weSwgbnNrYi0+Y3N1bSk7CisJCX0gZWxzZSB7CisJCQlfX3dzdW0g Y3N1bSA9IHNrYl9jb3B5X2FuZF9jc3VtX2JpdHMoc2tiLCAwLAorCQkJCQkJCSAgICAgc2tiX3B1 dChuc2tiLCBjb3B5KSwKKwkJCQkJCQkgICAgIGNvcHksIDApOworCQkJbnNrYi0+Y3N1bSA9IGNz dW1fYmxvY2tfYWRkKG5za2ItPmNzdW0sIGNzdW0sIGxlbik7CisJCX0KIAogCQlpZiAoc2tiLT5s ZW4gPD0gY29weSkgewogCQkJLyogV2UndmUgZWF0ZW4gYWxsIHRoZSBkYXRhIGZyb20gdGhpcyBz a2IuCkBAIC0xOTIxLDkgKzE5MjMsMTEgQEAgdTMyIF9fdGNwX3NlbGVjdF93aW5kb3coc3RydWN0 IHNvY2sgKnNrKQogCWludCBmdWxsX3NwYWNlID0gbWluX3QoaW50LCB0cC0+d2luZG93X2NsYW1w LCB0Y3BfZnVsbF9zcGFjZShzaykpOwogCWludCB3aW5kb3c7CiAKLQlpZiAobXNzID4gZnVsbF9z cGFjZSkKKwlpZiAodW5saWtlbHkobXNzID4gZnVsbF9zcGFjZSkpIHsKIAkJbXNzID0gZnVsbF9z cGFjZTsKLQorCQlpZiAobXNzIDw9IDApCisJCQlyZXR1cm4gMDsKKwl9CiAJaWYgKGZyZWVfc3Bh Y2UgPCAoZnVsbF9zcGFjZSA+PiAxKSkgewogCQlpY3NrLT5pY3NrX2Fjay5xdWljayA9IDA7CiAK QEAgLTIwOTcsNyArMjEwMSw4IEBAIGludCB0Y3BfcmV0cmFuc21pdF9za2Ioc3RydWN0IHNvY2sg KnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCSAqIGNvcHlpbmcgb3ZlcmhlYWQ6IGZyYWdtZW50 YXRpb24sIHR1bm5lbGluZywgbWFuZ2xpbmcgZXRjLgogCSAqLwogCWlmIChhdG9taWNfcmVhZCgm c2stPnNrX3dtZW1fYWxsb2MpID4KLQkgICAgbWluKHNrLT5za193bWVtX3F1ZXVlZCArIChzay0+ c2tfd21lbV9xdWV1ZWQgPj4gMiksIHNrLT5za19zbmRidWYpKQorCSAgICBtaW5fdCh1MzIsIHNr LT5za193bWVtX3F1ZXVlZCArIChzay0+c2tfd21lbV9xdWV1ZWQgPj4gMiksCisJCSAgc2stPnNr X3NuZGJ1ZikpCiAJCXJldHVybiAtRUFHQUlOOwogCiAJaWYgKGJlZm9yZShUQ1BfU0tCX0NCKHNr YiktPnNlcSwgdHAtPnNuZF91bmEpKSB7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9hZGRyY29uZi5j IGIvbmV0L2lwdjYvYWRkcmNvbmYuYwppbmRleCA3OWVjZWFiNDYzN2EuLjlhODUxZDE2YmVkYSAx MDA2NDQKLS0tIGEvbmV0L2lwdjYvYWRkcmNvbmYuYworKysgYi9uZXQvaXB2Ni9hZGRyY29uZi5j CkBAIC00MzU1LDggKzQzNTUsNyBAQCBzdGF0aWMgdm9pZCBhZGRyY29uZl9kaXNhYmxlX2NoYW5n ZShzdHJ1Y3QgbmV0ICpuZXQsIF9fczMyIG5ld2YpCiAJc3RydWN0IG5ldF9kZXZpY2UgKmRldjsK IAlzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2OwogCi0JcmN1X3JlYWRfbG9jaygpOwotCWZvcl9lYWNo X25ldGRldl9yY3UobmV0LCBkZXYpIHsKKwlmb3JfZWFjaF9uZXRkZXYobmV0LCBkZXYpIHsKIAkJ aWRldiA9IF9faW42X2Rldl9nZXQoZGV2KTsKIAkJaWYgKGlkZXYpIHsKIAkJCWludCBjaGFuZ2Vk ID0gKCFpZGV2LT5jbmYuZGlzYWJsZV9pcHY2KSBeICghbmV3Zik7CkBAIC00MzY1LDcgKzQzNjQs NiBAQCBzdGF0aWMgdm9pZCBhZGRyY29uZl9kaXNhYmxlX2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQs IF9fczMyIG5ld2YpCiAJCQkJZGV2X2Rpc2FibGVfY2hhbmdlKGlkZXYpOwogCQl9CiAJfQotCXJj dV9yZWFkX3VubG9jaygpOwogfQogCiBzdGF0aWMgaW50IGFkZHJjb25mX2Rpc2FibGVfaXB2Nihz dHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50ICpwLCBpbnQgb2xkKQpkaWZmIC0tZ2l0IGEvbmV0 L2lwdjYvYWZfaW5ldDYuYyBiL25ldC9pcHY2L2FmX2luZXQ2LmMKaW5kZXggZDU3ODEzNzgzODMw Li44NjU3ODIzN2VlNmMgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2FmX2luZXQ2LmMKKysrIGIvbmV0 L2lwdjYvYWZfaW5ldDYuYwpAQCAtODc5LDYgKzg3OSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVm ZiAqKmlwdjZfZ3JvX3JlY2VpdmUoc3RydWN0IHNrX2J1ZmYgKipoZWFkLAogCW9wcyA9IHJjdV9k ZXJlZmVyZW5jZShpbmV0Nl9wcm90b3NbcHJvdG9dKTsKIAlpZiAoIW9wcyB8fCAhb3BzLT5ncm9f cmVjZWl2ZSkgewogCQlfX3Bza2JfcHVsbChza2IsIHNrYl9ncm9fb2Zmc2V0KHNrYikpOworCQlz a2JfZ3JvX2ZyYWcwX2ludmFsaWRhdGUoc2tiKTsKIAkJcHJvdG8gPSBpcHY2X2dzb19wdWxsX2V4 dGhkcnMoc2tiLCBwcm90byk7CiAJCXNrYl9ncm9fcHVsbChza2IsIC1za2JfdHJhbnNwb3J0X29m ZnNldChza2IpKTsKIAkJc2tiX3Jlc2V0X3RyYW5zcG9ydF9oZWFkZXIoc2tiKTsKZGlmZiAtLWdp dCBhL25ldC9pcHY2L2lwNl90dW5uZWwuYyBiL25ldC9pcHY2L2lwNl90dW5uZWwuYwppbmRleCA3 NDE5MTdjM2FhNWQuLjA4ZTRlZGNjNTJjOSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvaXA2X3R1bm5l bC5jCisrKyBiL25ldC9pcHY2L2lwNl90dW5uZWwuYwpAQCAtMzcyLDE4ICszNzIsMTkgQEAgaXA2 X3RubF9kZXZfdW5pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiBzdGF0aWMgX191MTYKIHBh cnNlX3Rsdl90bmxfZW5jX2xpbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX3U4ICogcmF3KQogewot CWNvbnN0IHN0cnVjdCBpcHY2aGRyICppcHY2aCA9IChjb25zdCBzdHJ1Y3QgaXB2NmhkciAqKSBy YXc7Ci0JX191OCBuZXh0aGRyID0gaXB2NmgtPm5leHRoZHI7Ci0JX191MTYgb2ZmID0gc2l6ZW9m ICgqaXB2NmgpOworCWNvbnN0IHN0cnVjdCBpcHY2aGRyICppcHY2aCA9IChjb25zdCBzdHJ1Y3Qg aXB2NmhkciAqKXJhdzsKKwl1bnNpZ25lZCBpbnQgbmhvZmYgPSByYXcgLSBza2ItPmRhdGE7CisJ dW5zaWduZWQgaW50IG9mZiA9IG5ob2ZmICsgc2l6ZW9mKCppcHY2aCk7CisJdTggbmV4dCwgbmV4 dGhkciA9IGlwdjZoLT5uZXh0aGRyOwogCiAJd2hpbGUgKGlwdjZfZXh0X2hkcihuZXh0aGRyKSAm JiBuZXh0aGRyICE9IE5FWFRIRFJfTk9ORSkgewotCQlfX3UxNiBvcHRsZW4gPSAwOwogCQlzdHJ1 Y3QgaXB2Nl9vcHRfaGRyICpoZHI7Ci0JCWlmIChyYXcgKyBvZmYgKyBzaXplb2YgKCpoZHIpID4g c2tiLT5kYXRhICYmCi0JCSAgICAhcHNrYl9tYXlfcHVsbChza2IsIHJhdyAtIHNrYi0+ZGF0YSAr IG9mZiArIHNpemVvZiAoKmhkcikpKQorCQl1MTYgb3B0bGVuOworCisJCWlmICghcHNrYl9tYXlf cHVsbChza2IsIG9mZiArIHNpemVvZigqaGRyKSkpCiAJCQlicmVhazsKIAotCQloZHIgPSAoc3Ry dWN0IGlwdjZfb3B0X2hkciAqKSAocmF3ICsgb2ZmKTsKKwkJaGRyID0gKHN0cnVjdCBpcHY2X29w dF9oZHIgKikoc2tiLT5kYXRhICsgb2ZmKTsKIAkJaWYgKG5leHRoZHIgPT0gTkVYVEhEUl9GUkFH TUVOVCkgewogCQkJc3RydWN0IGZyYWdfaGRyICpmcmFnX2hkciA9IChzdHJ1Y3QgZnJhZ19oZHIg KikgaGRyOwogCQkJaWYgKGZyYWdfaGRyLT5mcmFnX29mZikKQEAgLTM5NCwyMCArMzk1LDI5IEBA IHBhcnNlX3Rsdl90bmxfZW5jX2xpbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX3U4ICogcmF3KQog CQl9IGVsc2UgewogCQkJb3B0bGVuID0gaXB2Nl9vcHRsZW4oaGRyKTsKIAkJfQorCQkvKiBjYWNo ZSBoZHItPm5leHRoZHIsIHNpbmNlIHBza2JfbWF5X3B1bGwoKSBtaWdodAorCQkgKiBpbnZhbGlk YXRlIGhkcgorCQkgKi8KKwkJbmV4dCA9IGhkci0+bmV4dGhkcjsKIAkJaWYgKG5leHRoZHIgPT0g TkVYVEhEUl9ERVNUKSB7Ci0JCQlfX3UxNiBpID0gb2ZmICsgMjsKKwkJCXUxNiBpID0gMjsKKwor CQkJLyogUmVtZW1iZXIgOiBoZHIgaXMgbm8gbG9uZ2VyIHZhbGlkIGF0IHRoaXMgcG9pbnQuICov CisJCQlpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBvZmYgKyBvcHRsZW4pKQorCQkJCWJyZWFrOwor CiAJCQl3aGlsZSAoMSkgewogCQkJCXN0cnVjdCBpcHY2X3Rsdl90bmxfZW5jX2xpbSAqdGVsOwog CiAJCQkJLyogTm8gbW9yZSByb29tIGZvciBlbmNhcHN1bGF0aW9uIGxpbWl0ICovCi0JCQkJaWYg KGkgKyBzaXplb2YgKCp0ZWwpID4gb2ZmICsgb3B0bGVuKQorCQkJCWlmIChpICsgc2l6ZW9mKCp0 ZWwpID4gb3B0bGVuKQogCQkJCQlicmVhazsKIAotCQkJCXRlbCA9IChzdHJ1Y3QgaXB2Nl90bHZf dG5sX2VuY19saW0gKikgJnJhd1tpXTsKKwkJCQl0ZWwgPSAoc3RydWN0IGlwdjZfdGx2X3RubF9l bmNfbGltICopKHNrYi0+ZGF0YSArIG9mZiArIGkpOwogCQkJCS8qIHJldHVybiBpbmRleCBvZiBv cHRpb24gaWYgZm91bmQgYW5kIHZhbGlkICovCiAJCQkJaWYgKHRlbC0+dHlwZSA9PSBJUFY2X1RM Vl9UTkxfRU5DQVBfTElNSVQgJiYKIAkJCQkgICAgdGVsLT5sZW5ndGggPT0gMSkKLQkJCQkJcmV0 dXJuIGk7CisJCQkJCXJldHVybiBpICsgb2ZmIC0gbmhvZmY7CiAJCQkJLyogZWxzZSBqdW1wIHRv IG5leHQgb3B0aW9uICovCiAJCQkJaWYgKHRlbC0+dHlwZSkKIAkJCQkJaSArPSB0ZWwtPmxlbmd0 aCArIDI7CkBAIC00MTUsNyArNDI1LDcgQEAgcGFyc2VfdGx2X3RubF9lbmNfbGltKHN0cnVjdCBz a19idWZmICpza2IsIF9fdTggKiByYXcpCiAJCQkJCWkrKzsKIAkJCX0KIAkJfQotCQluZXh0aGRy ID0gaGRyLT5uZXh0aGRyOworCQluZXh0aGRyID0gbmV4dDsKIAkJb2ZmICs9IG9wdGxlbjsKIAl9 CiAJcmV0dXJuIDA7CkBAIC04OTQsMTMgKzkwNCwyMiBAQCBzdGF0aWMgaW50IGlwNl90bmxfeG1p dDIoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlzdHJ1Y3QgaXB2Nl90ZWxfdHhvcHRpb24gb3B0Owog CXN0cnVjdCBkc3RfZW50cnkgKmRzdCA9IE5VTEwsICpuZHN0ID0gTlVMTDsKIAlzdHJ1Y3QgbmV0 X2RldmljZSAqdGRldjsKKwlib29sIHVzZV9jYWNoZSA9IGZhbHNlOwogCWludCBtdHU7CiAJdW5z aWduZWQgaW50IG1heF9oZWFkcm9vbSA9IHNpemVvZihzdHJ1Y3QgaXB2Nmhkcik7CiAJdTggcHJv dG87CiAJaW50IGVyciA9IC0xOwogCWludCBwa3RfbGVuOwogCi0JaWYgKCFmbDYtPmZsb3dpNl9t YXJrKQorCWlmICghKHQtPnBhcm1zLmZsYWdzICYKKwkJICAgICAoSVA2X1ROTF9GX1VTRV9PUklH X1RDTEFTUyB8IElQNl9UTkxfRl9VU0VfT1JJR19GV01BUkspKSkgeworCQkvKiBlbmFibGUgdGhl IGNhY2hlIG9ubHkgb25seSBpZiB0aGUgcm91dGluZyBkZWNpc2lvbiBkb2VzCisJCSAqIG5vdCBk ZXBlbmQgb24gdGhlIGN1cnJlbnQgaW5uZXIgaGVhZGVyIHZhbHVlCisJCSAqLworCQl1c2VfY2Fj aGUgPSB0cnVlOworCX0KKworCWlmICh1c2VfY2FjaGUpCiAJCWRzdCA9IGlwNl90bmxfZHN0X2No ZWNrKHQpOwogCWlmICghZHN0KSB7CiAJCW5kc3QgPSBpcDZfcm91dGVfb3V0cHV0KG5ldCwgTlVM TCwgZmw2KTsKQEAgLTk1OSw3ICs5NzgsNyBAQCBzdGF0aWMgaW50IGlwNl90bmxfeG1pdDIoc3Ry dWN0IHNrX2J1ZmYgKnNrYiwKIAkJc2tiID0gbmV3X3NrYjsKIAl9CiAJc2tiX2RzdF9kcm9wKHNr Yik7Ci0JaWYgKGZsNi0+Zmxvd2k2X21hcmspIHsKKwlpZiAoIXVzZV9jYWNoZSkgewogCQlza2Jf ZHN0X3NldChza2IsIGRzdCk7CiAJCW5kc3QgPSBOVUxMOwogCX0gZWxzZSB7CmRpZmYgLS1naXQg YS9uZXQvaXB2Ni9pcDZtci5jIGIvbmV0L2lwdjYvaXA2bXIuYwppbmRleCA3YTM5MjNiM2U4Mjgu LmNhMzA2Y2UxYTlmNiAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvaXA2bXIuYworKysgYi9uZXQvaXB2 Ni9pcDZtci5jCkBAIC0xMDIyLDYgKzEwMjIsNyBAQCBzdGF0aWMgc3RydWN0IG1mYzZfY2FjaGUg KmlwNm1yX2NhY2hlX2FsbG9jKHZvaWQpCiAJc3RydWN0IG1mYzZfY2FjaGUgKmMgPSBrbWVtX2Nh Y2hlX3phbGxvYyhtcnRfY2FjaGVwLCBHRlBfS0VSTkVMKTsKIAlpZiAoYyA9PSBOVUxMKQogCQly ZXR1cm4gTlVMTDsKKwljLT5tZmNfdW4ucmVzLmxhc3RfYXNzZXJ0ID0gamlmZmllcyAtIE1GQ19B U1NFUlRfVEhSRVNIIC0gMTsKIAljLT5tZmNfdW4ucmVzLm1pbnZpZiA9IE1BWE1JRlM7CiAJcmV0 dXJuIGM7CiB9CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9tY2FzdC5jIGIvbmV0L2lwdjYvbWNhc3Qu YwppbmRleCBiZTU0NjZlM2I1NGYuLjUxYTJiOWM4Zjc2OSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYv bWNhc3QuYworKysgYi9uZXQvaXB2Ni9tY2FzdC5jCkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyB2 b2lkIG1sZF9ncV90aW1lcl9leHBpcmUodW5zaWduZWQgbG9uZyBkYXRhKTsKIHN0YXRpYyB2b2lk IG1sZF9pZmNfdGltZXJfZXhwaXJlKHVuc2lnbmVkIGxvbmcgZGF0YSk7CiBzdGF0aWMgdm9pZCBt bGRfaWZjX2V2ZW50KHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpOwogc3RhdGljIHZvaWQgbWxkX2Fk ZF9kZWxyZWMoc3RydWN0IGluZXQ2X2RldiAqaWRldiwgc3RydWN0IGlmbWNhZGRyNiAqcG1jKTsK LXN0YXRpYyB2b2lkIG1sZF9kZWxfZGVscmVjKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYsIGNvbnN0 IHN0cnVjdCBpbjZfYWRkciAqYWRkcik7CitzdGF0aWMgdm9pZCBtbGRfZGVsX2RlbHJlYyhzdHJ1 Y3QgaW5ldDZfZGV2ICppZGV2LCBzdHJ1Y3QgaWZtY2FkZHI2ICpwbWMpOwogc3RhdGljIHZvaWQg bWxkX2NsZWFyX2RlbHJlYyhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KTsKIHN0YXRpYyBpbnQgc2Zf c2V0c3RhdGUoc3RydWN0IGlmbWNhZGRyNiAqcG1jKTsKIHN0YXRpYyB2b2lkIHNmX21hcmtzdGF0 ZShzdHJ1Y3QgaWZtY2FkZHI2ICpwbWMpOwpAQCAtNjkxLDkgKzY5MSw5IEBAIHN0YXRpYyB2b2lk IGlnbXA2X2dyb3VwX2Ryb3BwZWQoc3RydWN0IGlmbWNhZGRyNiAqbWMpCiAJCQlkZXZfbWNfZGVs KGRldiwgYnVmKTsKIAl9CiAKLQlpZiAobWMtPm1jYV9mbGFncyAmIE1BRl9OT1JFUE9SVCkKLQkJ Z290byBkb25lOwogCXNwaW5fdW5sb2NrX2JoKCZtYy0+bWNhX2xvY2spOworCWlmIChtYy0+bWNh X2ZsYWdzICYgTUFGX05PUkVQT1JUKQorCQlyZXR1cm47CiAKIAlpZiAoIW1jLT5pZGV2LT5kZWFk KQogCQlpZ21wNl9sZWF2ZV9ncm91cChtYyk7CkBAIC03MDEsOCArNzAxLDYgQEAgc3RhdGljIHZv aWQgaWdtcDZfZ3JvdXBfZHJvcHBlZChzdHJ1Y3QgaWZtY2FkZHI2ICptYykKIAlzcGluX2xvY2tf YmgoJm1jLT5tY2FfbG9jayk7CiAJaWYgKGRlbF90aW1lcigmbWMtPm1jYV90aW1lcikpCiAJCWF0 b21pY19kZWMoJm1jLT5tY2FfcmVmY250KTsKLWRvbmU6Ci0JaXA2X21jX2NsZWFyX3NyYyhtYyk7 CiAJc3Bpbl91bmxvY2tfYmgoJm1jLT5tY2FfbG9jayk7CiB9CiAKQEAgLTc0NywxMCArNzQ1LDEx IEBAIHN0YXRpYyB2b2lkIG1sZF9hZGRfZGVscmVjKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYsIHN0 cnVjdCBpZm1jYWRkcjYgKmltKQogCXNwaW5fdW5sb2NrX2JoKCZpZGV2LT5tY19sb2NrKTsKIH0K IAotc3RhdGljIHZvaWQgbWxkX2RlbF9kZWxyZWMoc3RydWN0IGluZXQ2X2RldiAqaWRldiwgY29u c3Qgc3RydWN0IGluNl9hZGRyICpwbWNhKQorc3RhdGljIHZvaWQgbWxkX2RlbF9kZWxyZWMoc3Ry dWN0IGluZXQ2X2RldiAqaWRldiwgc3RydWN0IGlmbWNhZGRyNiAqaW0pCiB7CiAJc3RydWN0IGlm bWNhZGRyNiAqcG1jLCAqcG1jX3ByZXY7Ci0Jc3RydWN0IGlwNl9zZl9saXN0ICpwc2YsICpwc2Zf bmV4dDsKKwlzdHJ1Y3QgaXA2X3NmX2xpc3QgKnBzZjsKKwlzdHJ1Y3QgaW42X2FkZHIgKnBtY2Eg PSAmaW0tPm1jYV9hZGRyOwogCiAJc3Bpbl9sb2NrX2JoKCZpZGV2LT5tY19sb2NrKTsKIAlwbWNf cHJldiA9IE5VTEw7CkBAIC03NjcsMTQgKzc2NiwyMSBAQCBzdGF0aWMgdm9pZCBtbGRfZGVsX2Rl bHJlYyhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKnBtY2Ep CiAJfQogCXNwaW5fdW5sb2NrX2JoKCZpZGV2LT5tY19sb2NrKTsKIAorCXNwaW5fbG9ja19iaCgm aW0tPm1jYV9sb2NrKTsKIAlpZiAocG1jKSB7Ci0JCWZvciAocHNmPXBtYy0+bWNhX3RvbWI7IHBz ZjsgcHNmPXBzZl9uZXh0KSB7Ci0JCQlwc2ZfbmV4dCA9IHBzZi0+c2ZfbmV4dDsKLQkJCWtmcmVl KHBzZik7CisJCWltLT5pZGV2ID0gcG1jLT5pZGV2OworCQlpbS0+bWNhX2NyY291bnQgPSBpZGV2 LT5tY19xcnY7CisJCWltLT5tY2Ffc2Ztb2RlID0gcG1jLT5tY2Ffc2Ztb2RlOworCQlpZiAocG1j LT5tY2Ffc2Ztb2RlID09IE1DQVNUX0lOQ0xVREUpIHsKKwkJCWltLT5tY2FfdG9tYiA9IHBtYy0+ bWNhX3RvbWI7CisJCQlpbS0+bWNhX3NvdXJjZXMgPSBwbWMtPm1jYV9zb3VyY2VzOworCQkJZm9y IChwc2YgPSBpbS0+bWNhX3NvdXJjZXM7IHBzZjsgcHNmID0gcHNmLT5zZl9uZXh0KQorCQkJCXBz Zi0+c2ZfY3Jjb3VudCA9IGltLT5tY2FfY3Jjb3VudDsKIAkJfQogCQlpbjZfZGV2X3B1dChwbWMt PmlkZXYpOwogCQlrZnJlZShwbWMpOwogCX0KKwlzcGluX3VubG9ja19iaCgmaW0tPm1jYV9sb2Nr KTsKIH0KIAogc3RhdGljIHZvaWQgbWxkX2NsZWFyX2RlbHJlYyhzdHJ1Y3QgaW5ldDZfZGV2ICpp ZGV2KQpAQCAtODc3LDcgKzg4Myw3IEBAIGludCBpcHY2X2Rldl9tY19pbmMoc3RydWN0IG5ldF9k ZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGluNl9hZGRyICphZGRyKQogCWlkZXYtPm1jX2xpc3Qg PSBtYzsKIAl3cml0ZV91bmxvY2tfYmgoJmlkZXYtPmxvY2spOwogCi0JbWxkX2RlbF9kZWxyZWMo aWRldiwgJm1jLT5tY2FfYWRkcik7CisJbWxkX2RlbF9kZWxyZWMoaWRldiwgbWMpOwogCWlnbXA2 X2dyb3VwX2FkZGVkKG1jKTsKIAltYV9wdXQobWMpOwogCXJldHVybiAwOwpAQCAtODk4LDYgKzkw NCw3IEBAIGludCBfX2lwdjZfZGV2X21jX2RlYyhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCBjb25z dCBzdHJ1Y3QgaW42X2FkZHIgKmFkZHIpCiAJCQkJd3JpdGVfdW5sb2NrX2JoKCZpZGV2LT5sb2Nr KTsKIAogCQkJCWlnbXA2X2dyb3VwX2Ryb3BwZWQobWEpOworCQkJCWlwNl9tY19jbGVhcl9zcmMo bWEpOwogCiAJCQkJbWFfcHV0KG1hKTsKIAkJCQlyZXR1cm4gMDsKQEAgLTIyMzEsMTggKzIyMzgs MjAgQEAgdm9pZCBpcHY2X21jX2Rvd24oc3RydWN0IGluZXQ2X2RldiAqaWRldikKIAkvKiBXaXRo ZHJhdyBtdWx0aWNhc3QgbGlzdCAqLwogCiAJcmVhZF9sb2NrX2JoKCZpZGV2LT5sb2NrKTsKKwor CWZvciAoaSA9IGlkZXYtPm1jX2xpc3Q7IGk7IGk9aS0+bmV4dCkKKwkJaWdtcDZfZ3JvdXBfZHJv cHBlZChpKTsKKworCS8qIFNob3VsZCBzdG9wIHRpbWVyIGFmdGVyIGdyb3VwIGRyb3AuIG9yIHdl IHdpbGwKKwkgKiBzdGFydCB0aW1lciBhZ2FpbiBpbiBtbGRfaWZjX2V2ZW50KCkKKwkgKi8KIAlp ZGV2LT5tY19pZmNfY291bnQgPSAwOwogCWlmIChkZWxfdGltZXIoJmlkZXYtPm1jX2lmY190aW1l cikpCiAJCV9faW42X2Rldl9wdXQoaWRldik7CiAJaWRldi0+bWNfZ3FfcnVubmluZyA9IDA7CiAJ aWYgKGRlbF90aW1lcigmaWRldi0+bWNfZ3FfdGltZXIpKQogCQlfX2luNl9kZXZfcHV0KGlkZXYp OwotCi0JZm9yIChpID0gaWRldi0+bWNfbGlzdDsgaTsgaT1pLT5uZXh0KQotCQlpZ21wNl9ncm91 cF9kcm9wcGVkKGkpOwogCXJlYWRfdW5sb2NrX2JoKCZpZGV2LT5sb2NrKTsKLQotCW1sZF9jbGVh cl9kZWxyZWMoaWRldik7CiB9CiAKIApAQCAtMjI1NSw4ICsyMjY0LDEwIEBAIHZvaWQgaXB2Nl9t Y191cChzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KQogCS8qIEluc3RhbGwgbXVsdGljYXN0IGxpc3Qs IGV4Y2VwdCBmb3IgYWxsLW5vZGVzIChhbHJlYWR5IGluc3RhbGxlZCkgKi8KIAogCXJlYWRfbG9j a19iaCgmaWRldi0+bG9jayk7Ci0JZm9yIChpID0gaWRldi0+bWNfbGlzdDsgaTsgaT1pLT5uZXh0 KQorCWZvciAoaSA9IGlkZXYtPm1jX2xpc3Q7IGk7IGkgPSBpLT5uZXh0KSB7CisJCW1sZF9kZWxf ZGVscmVjKGlkZXYsIGkpOwogCQlpZ21wNl9ncm91cF9hZGRlZChpKTsKKwl9CiAJcmVhZF91bmxv Y2tfYmgoJmlkZXYtPmxvY2spOwogfQogCkBAIC0yMjg5LDYgKzIzMDAsNyBAQCB2b2lkIGlwdjZf bWNfZGVzdHJveV9kZXYoc3RydWN0IGluZXQ2X2RldiAqaWRldikKIAogCS8qIERlYWN0aXZhdGUg dGltZXJzICovCiAJaXB2Nl9tY19kb3duKGlkZXYpOworCW1sZF9jbGVhcl9kZWxyZWMoaWRldik7 CiAKIAkvKiBEZWxldGUgYWxsLW5vZGVzIGFkZHJlc3MuICovCiAJLyogV2UgY2Fubm90IGNhbGwg aXB2Nl9kZXZfbWNfZGVjKCkgZGlyZWN0bHksIG91ciBjYWxsZXIgaW4KQEAgLTIzMDMsMTEgKzIz MTUsOSBAQCB2b2lkIGlwdjZfbWNfZGVzdHJveV9kZXYoc3RydWN0IGluZXQ2X2RldiAqaWRldikK IAl3cml0ZV9sb2NrX2JoKCZpZGV2LT5sb2NrKTsKIAl3aGlsZSAoKGkgPSBpZGV2LT5tY19saXN0 KSAhPSBOVUxMKSB7CiAJCWlkZXYtPm1jX2xpc3QgPSBpLT5uZXh0OwotCQl3cml0ZV91bmxvY2tf YmgoJmlkZXYtPmxvY2spOwogCi0JCWlnbXA2X2dyb3VwX2Ryb3BwZWQoaSk7CisJCXdyaXRlX3Vu bG9ja19iaCgmaWRldi0+bG9jayk7CiAJCW1hX3B1dChpKTsKLQogCQl3cml0ZV9sb2NrX2JoKCZp ZGV2LT5sb2NrKTsKIAl9CiAJd3JpdGVfdW5sb2NrX2JoKCZpZGV2LT5sb2NrKTsKZGlmZiAtLWdp dCBhL25ldC9pcHY2L3Jhdy5jIGIvbmV0L2lwdjYvcmF3LmMKaW5kZXggYmViYzgyMTA4Njk0Li5j ZTUwMWE3M2ViZDcgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3Jhdy5jCisrKyBiL25ldC9pcHY2L3Jh dy5jCkBAIC01NzYsOCArNTc2LDExIEBAIHN0YXRpYyBpbnQgcmF3djZfcHVzaF9wZW5kaW5nX2Zy YW1lcyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBmbG93aTYgKmZsNiwKIAl9CiAKIAlvZmZzZXQg Kz0gc2tiX3RyYW5zcG9ydF9vZmZzZXQoc2tiKTsKLQlpZiAoc2tiX2NvcHlfYml0cyhza2IsIG9m ZnNldCwgJmNzdW0sIDIpKQotCQlCVUcoKTsKKwllcnIgPSBza2JfY29weV9iaXRzKHNrYiwgb2Zm c2V0LCAmY3N1bSwgMik7CisJaWYgKGVyciA8IDApIHsKKwkJaXA2X2ZsdXNoX3BlbmRpbmdfZnJh bWVzKHNrKTsKKwkJZ290byBvdXQ7CisJfQogCiAJLyogaW4gY2FzZSBja3N1bSB3YXMgbm90IGlu aXRpYWxpemVkICovCiAJaWYgKHVubGlrZWx5KGNzdW0pKQpkaWZmIC0tZ2l0IGEvbmV0L2lyZGEv aXJxdWV1ZS5jIGIvbmV0L2lyZGEvaXJxdWV1ZS5jCmluZGV4IGYwNjk0N2M0ZmE4Mi4uOWY3NGM5 NTkyMTk5IDEwMDY0NAotLS0gYS9uZXQvaXJkYS9pcnF1ZXVlLmMKKysrIGIvbmV0L2lyZGEvaXJx dWV1ZS5jCkBAIC0zODUsOSArMzg1LDYgQEAgRVhQT1JUX1NZTUJPTChoYXNoYmluX25ldyk7CiAg KiAgICBmb3IgZGVhbGxvY2F0aW5nIHRoaXMgc3RydWN0dXJlIGlmIGl0J3MgY29tcGxleC4gSWYg bm90IHRoZSB1c2VyIGNhbgogICogICAganVzdCBzdXBwbHkga2ZyZWUsIHdoaWNoIHNob3VsZCB0 YWtlIGNhcmUgb2YgdGhlIGpvYi4KICAqLwotI2lmZGVmIENPTkZJR19MT0NLREVQCi1zdGF0aWMg aW50IGhhc2hiaW5fbG9ja19kZXB0aCA9IDA7Ci0jZW5kaWYKIGludCBoYXNoYmluX2RlbGV0ZSgg aGFzaGJpbl90KiBoYXNoYmluLCBGUkVFX0ZVTkMgZnJlZV9mdW5jKQogewogCWlyZGFfcXVldWVf dCogcXVldWU7CkBAIC0zOTgsMjIgKzM5NSwyNyBAQCBpbnQgaGFzaGJpbl9kZWxldGUoIGhhc2hi aW5fdCogaGFzaGJpbiwgRlJFRV9GVU5DIGZyZWVfZnVuYykKIAlJUkRBX0FTU0VSVChoYXNoYmlu LT5tYWdpYyA9PSBIQl9NQUdJQywgcmV0dXJuIC0xOyk7CiAKIAkvKiBTeW5jaHJvbml6ZSAqLwot CWlmICggaGFzaGJpbi0+aGJfdHlwZSAmIEhCX0xPQ0sgKSB7Ci0JCXNwaW5fbG9ja19pcnFzYXZl X25lc3RlZCgmaGFzaGJpbi0+aGJfc3BpbmxvY2ssIGZsYWdzLAotCQkJCQkgaGFzaGJpbl9sb2Nr X2RlcHRoKyspOwotCX0KKwlpZiAoaGFzaGJpbi0+aGJfdHlwZSAmIEhCX0xPQ0spCisJCXNwaW5f bG9ja19pcnFzYXZlKCZoYXNoYmluLT5oYl9zcGlubG9jaywgZmxhZ3MpOwogCiAJLyoKIAkgKiAg RnJlZSB0aGUgZW50cmllcyBpbiB0aGUgaGFzaGJpbiwgVE9ETzogdXNlIGhhc2hiaW5fY2xlYXIg d2hlbgogCSAqICBpdCBoYXMgYmVlbiBzaG93biB0byB3b3JrCiAJICovCiAJZm9yIChpID0gMDsg aSA8IEhBU0hCSU5fU0laRTsgaSArKyApIHsKLQkJcXVldWUgPSBkZXF1ZXVlX2ZpcnN0KChpcmRh X3F1ZXVlX3QqKikgJmhhc2hiaW4tPmhiX3F1ZXVlW2ldKTsKLQkJd2hpbGUgKHF1ZXVlICkgewot CQkJaWYgKGZyZWVfZnVuYykKLQkJCQkoKmZyZWVfZnVuYykocXVldWUpOwotCQkJcXVldWUgPSBk ZXF1ZXVlX2ZpcnN0KAotCQkJCShpcmRhX3F1ZXVlX3QqKikgJmhhc2hiaW4tPmhiX3F1ZXVlW2ld KTsKKwkJd2hpbGUgKDEpIHsKKwkJCXF1ZXVlID0gZGVxdWV1ZV9maXJzdCgoaXJkYV9xdWV1ZV90 KiopICZoYXNoYmluLT5oYl9xdWV1ZVtpXSk7CisKKwkJCWlmICghcXVldWUpCisJCQkJYnJlYWs7 CisKKwkJCWlmIChmcmVlX2Z1bmMpIHsKKwkJCQlpZiAoaGFzaGJpbi0+aGJfdHlwZSAmIEhCX0xP Q0spCisJCQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhhc2hiaW4tPmhiX3NwaW5sb2NrLCBm bGFncyk7CisJCQkJZnJlZV9mdW5jKHF1ZXVlKTsKKwkJCQlpZiAoaGFzaGJpbi0+aGJfdHlwZSAm IEhCX0xPQ0spCisJCQkJCXNwaW5fbG9ja19pcnFzYXZlKCZoYXNoYmluLT5oYl9zcGlubG9jaywg ZmxhZ3MpOworCQkJfQogCQl9CiAJfQogCkBAIC00MjIsMTIgKzQyNCw4IEBAIGludCBoYXNoYmlu X2RlbGV0ZSggaGFzaGJpbl90KiBoYXNoYmluLCBGUkVFX0ZVTkMgZnJlZV9mdW5jKQogCWhhc2hi aW4tPm1hZ2ljID0gfkhCX01BR0lDOwogCiAJLyogUmVsZWFzZSBsb2NrICovCi0JaWYgKCBoYXNo YmluLT5oYl90eXBlICYgSEJfTE9DSykgeworCWlmIChoYXNoYmluLT5oYl90eXBlICYgSEJfTE9D SykKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaGFzaGJpbi0+aGJfc3BpbmxvY2ssIGZsYWdz KTsKLSNpZmRlZiBDT05GSUdfTE9DS0RFUAotCQloYXNoYmluX2xvY2tfZGVwdGgtLTsKLSNlbmRp ZgotCX0KIAogCS8qCiAJICogIEZyZWUgdGhlIGhhc2hiaW4gc3RydWN0dXJlCmRpZmYgLS1naXQg YS9uZXQvbDJ0cC9sMnRwX2NvcmUuaCBiL25ldC9sMnRwL2wydHBfY29yZS5oCmluZGV4IDQzOTM3 OTQ4NGJmYy4uYWQ2ZjczZDFlMzRhIDEwMDY0NAotLS0gYS9uZXQvbDJ0cC9sMnRwX2NvcmUuaAor KysgYi9uZXQvbDJ0cC9sMnRwX2NvcmUuaApAQCAtMjQwLDYgKzI0MCw3IEBAIGV4dGVybiBpbnQg bDJ0cF94bWl0X3NrYihzdHJ1Y3QgbDJ0cF9zZXNzaW9uICpzZXNzaW9uLCBzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLCBpbnQKIAogZXh0ZXJuIGludCBsMnRwX25sX3JlZ2lzdGVyX29wcyhlbnVtIGwydHBf cHd0eXBlIHB3X3R5cGUsIGNvbnN0IHN0cnVjdCBsMnRwX25sX2NtZF9vcHMgKm9wcyk7CiBleHRl cm4gdm9pZCBsMnRwX25sX3VucmVnaXN0ZXJfb3BzKGVudW0gbDJ0cF9wd3R5cGUgcHdfdHlwZSk7 CitpbnQgbDJ0cF9pb2N0bChzdHJ1Y3Qgc29jayAqc2ssIGludCBjbWQsIHVuc2lnbmVkIGxvbmcg YXJnKTsKIAogLyogU2Vzc2lvbiByZWZlcmVuY2UgY291bnRzLiBJbmNyZW1lbnRlZCB3aGVuIGNv ZGUgb2J0YWlucyBhIHJlZmVyZW5jZQogICogdG8gYSBzZXNzaW9uLgpkaWZmIC0tZ2l0IGEvbmV0 L2wydHAvbDJ0cF9pcC5jIGIvbmV0L2wydHAvbDJ0cF9pcC5jCmluZGV4IDJkOWI5OGVjYmQ3My4u ZWNjYzAwODkwOGY0IDEwMDY0NAotLS0gYS9uZXQvbDJ0cC9sMnRwX2lwLmMKKysrIGIvbmV0L2wy dHAvbDJ0cF9pcC5jCkBAIC05LDYgKzksNyBAQAogICoJMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICAqLwogCisjaW5jbHVkZSA8YXNtL2lv Y3Rscy5oPgogI2luY2x1ZGUgPGxpbnV4L2ljbXAuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUu aD4KICNpbmNsdWRlIDxsaW51eC9za2J1ZmYuaD4KQEAgLTYxMiw2ICs2MTMsMzAgQEAgb3V0Ogog CXJldHVybiBjb3BpZWQ7CiB9CiAKK2ludCBsMnRwX2lvY3RsKHN0cnVjdCBzb2NrICpzaywgaW50 IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCit7CisJc3RydWN0IHNrX2J1ZmYgKnNrYjsKKwlpbnQg YW1vdW50OworCisJc3dpdGNoIChjbWQpIHsKKwljYXNlIFNJT0NPVVRROgorCQlhbW91bnQgPSBz a193bWVtX2FsbG9jX2dldChzayk7CisJCWJyZWFrOworCWNhc2UgU0lPQ0lOUToKKwkJc3Bpbl9s b2NrX2JoKCZzay0+c2tfcmVjZWl2ZV9xdWV1ZS5sb2NrKTsKKwkJc2tiID0gc2tiX3BlZWsoJnNr LT5za19yZWNlaXZlX3F1ZXVlKTsKKwkJYW1vdW50ID0gc2tiID8gc2tiLT5sZW4gOiAwOworCQlz cGluX3VubG9ja19iaCgmc2stPnNrX3JlY2VpdmVfcXVldWUubG9jayk7CisJCWJyZWFrOworCisJ ZGVmYXVsdDoKKwkJcmV0dXJuIC1FTk9JT0NUTENNRDsKKwl9CisKKwlyZXR1cm4gcHV0X3VzZXIo YW1vdW50LCAoaW50IF9fdXNlciAqKWFyZyk7Cit9CitFWFBPUlRfU1lNQk9MKGwydHBfaW9jdGwp OworCiBzdGF0aWMgc3RydWN0IHByb3RvIGwydHBfaXBfcHJvdCA9IHsKIAkubmFtZQkJICAgPSAi TDJUUC9JUCIsCiAJLm93bmVyCQkgICA9IFRISVNfTU9EVUxFLApAQCAtNjIwLDcgKzY0NSw3IEBA IHN0YXRpYyBzdHJ1Y3QgcHJvdG8gbDJ0cF9pcF9wcm90ID0gewogCS5iaW5kCQkgICA9IGwydHBf aXBfYmluZCwKIAkuY29ubmVjdAkgICA9IGwydHBfaXBfY29ubmVjdCwKIAkuZGlzY29ubmVjdAkg ICA9IGwydHBfaXBfZGlzY29ubmVjdCwKLQkuaW9jdGwJCSAgID0gdWRwX2lvY3RsLAorCS5pb2N0 bAkJICAgPSBsMnRwX2lvY3RsLAogCS5kZXN0cm95CSAgID0gbDJ0cF9pcF9kZXN0cm95X3NvY2ss CiAJLnNldHNvY2tvcHQJICAgPSBpcF9zZXRzb2Nrb3B0LAogCS5nZXRzb2Nrb3B0CSAgID0gaXBf Z2V0c29ja29wdCwKZGlmZiAtLWdpdCBhL25ldC9sbGMvbGxjX2Nvbm4uYyBiL25ldC9sbGMvbGxj X2Nvbm4uYwppbmRleCBiYTEzN2E2YTIyNGQuLmYzMTI1YjkyYzNlOCAxMDA2NDQKLS0tIGEvbmV0 L2xsYy9sbGNfY29ubi5jCisrKyBiL25ldC9sbGMvbGxjX2Nvbm4uYwpAQCAtODIxLDcgKzgyMSwx MCBAQCB2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNr X2J1ZmYgKnNrYikKIAkJICogYW5vdGhlciB0cmljayByZXF1aXJlZCB0byBjb3BlIHdpdGggaG93 IHRoZSBQUk9DT00gc3RhdGUKIAkJICogbWFjaGluZSB3b3Jrcy4gLWFjbWUKIAkJICovCisJCXNr Yl9vcnBoYW4oc2tiKTsKKwkJc29ja19ob2xkKHNrKTsKIAkJc2tiLT5zayA9IHNrOworCQlza2It PmRlc3RydWN0b3IgPSBzb2NrX2VmcmVlOwogCX0KIAlpZiAoIXNvY2tfb3duZWRfYnlfdXNlcihz aykpCiAJCWxsY19jb25uX3Jjdihzaywgc2tiKTsKZGlmZiAtLWdpdCBhL25ldC9sbGMvbGxjX3Nh cC5jIGIvbmV0L2xsYy9sbGNfc2FwLmMKaW5kZXggOTRlN2ZjYTc1Yjg1Li42ODdmZTc0MDllMTUg MTAwNjQ0Ci0tLSBhL25ldC9sbGMvbGxjX3NhcC5jCisrKyBiL25ldC9sbGMvbGxjX3NhcC5jCkBA IC0yOTQsNyArMjk0LDEwIEBAIHN0YXRpYyB2b2lkIGxsY19zYXBfcmN2KHN0cnVjdCBsbGNfc2Fw ICpzYXAsIHN0cnVjdCBza19idWZmICpza2IsCiAKIAlldi0+dHlwZSAgID0gTExDX1NBUF9FVl9U WVBFX1BEVTsKIAlldi0+cmVhc29uID0gMDsKKwlza2Jfb3JwaGFuKHNrYik7CisJc29ja19ob2xk KHNrKTsKIAlza2ItPnNrID0gc2s7CisJc2tiLT5kZXN0cnVjdG9yID0gc29ja19lZnJlZTsKIAls bGNfc2FwX3N0YXRlX3Byb2Nlc3Moc2FwLCBza2IpOwogfQogCmRpZmYgLS1naXQgYS9uZXQvbWFj ODAyMTEvbWVzaC5jIGIvbmV0L21hYzgwMjExL21lc2guYwppbmRleCBmODVkZThlZDU4NTkuLjVm YzQyNDllN2Y1MyAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL21lc2guYworKysgYi9uZXQvbWFj ODAyMTEvbWVzaC5jCkBAIC0yODAsNyArMjgwLDcgQEAgbWVzaF9hZGRfdmVuZG9yX2llcyhzdHJ1 Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSkKIAkv KiBmYXN0LWZvcndhcmQgdG8gdmVuZG9yIElFcyAqLwogCW9mZnNldCA9IGllZWU4MDIxMV9pZV9z cGxpdF92ZW5kb3IoaWZtc2gtPmllLCBpZm1zaC0+aWVfbGVuLCAwKTsKIAotCWlmIChvZmZzZXQp IHsKKwlpZiAob2Zmc2V0IDwgaWZtc2gtPmllX2xlbikgewogCQlsZW4gPSBpZm1zaC0+aWVfbGVu IC0gb2Zmc2V0OwogCQlkYXRhID0gaWZtc2gtPmllICsgb2Zmc2V0OwogCQlpZiAoc2tiX3RhaWxy b29tKHNrYikgPCBsZW4pCmRpZmYgLS1naXQgYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jIGIvbmV0 L3BhY2tldC9hZl9wYWNrZXQuYwppbmRleCBkYWU5NDc2ZmE0ZDguLmQ2MGNhODhjMjJmOCAxMDA2 NDQKLS0tIGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYworKysgYi9uZXQvcGFja2V0L2FmX3BhY2tl dC5jCkBAIC0xMjQyLDYgKzEyNDIsOCBAQCBzdGF0aWMgdm9pZCBfX2Zhbm91dF9saW5rKHN0cnVj dCBzb2NrICpzaywgc3RydWN0IHBhY2tldF9zb2NrICpwbykKIAlmLT5hcnJbZi0+bnVtX21lbWJl cnNdID0gc2s7CiAJc21wX3dtYigpOwogCWYtPm51bV9tZW1iZXJzKys7CisJaWYgKGYtPm51bV9t ZW1iZXJzID09IDEpCisJCWRldl9hZGRfcGFjaygmZi0+cHJvdF9ob29rKTsKIAlzcGluX3VubG9j aygmZi0+bG9jayk7CiB9CiAKQEAgLTEyNTgsNiArMTI2MCw4IEBAIHN0YXRpYyB2b2lkIF9fZmFu b3V0X3VubGluayhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBwYWNrZXRfc29jayAqcG8pCiAJQlVH X09OKGkgPj0gZi0+bnVtX21lbWJlcnMpOwogCWYtPmFycltpXSA9IGYtPmFycltmLT5udW1fbWVt YmVycyAtIDFdOwogCWYtPm51bV9tZW1iZXJzLS07CisJaWYgKGYtPm51bV9tZW1iZXJzID09IDAp CisJCV9fZGV2X3JlbW92ZV9wYWNrKCZmLT5wcm90X2hvb2spOwogCXNwaW5fdW5sb2NrKCZmLT5s b2NrKTsKIH0KIApAQCAtMTI4NiwxMyArMTI5MCwxNiBAQCBzdGF0aWMgaW50IGZhbm91dF9hZGQo c3RydWN0IHNvY2sgKnNrLCB1MTYgaWQsIHUxNiB0eXBlX2ZsYWdzKQogCQlyZXR1cm4gLUVJTlZB TDsKIAl9CiAKKwltdXRleF9sb2NrKCZmYW5vdXRfbXV0ZXgpOworCisJZXJyID0gLUVJTlZBTDsK IAlpZiAoIXBvLT5ydW5uaW5nKQotCQlyZXR1cm4gLUVJTlZBTDsKKwkJZ290byBvdXQ7CiAKKwll cnIgPSAtRUFMUkVBRFk7CiAJaWYgKHBvLT5mYW5vdXQpCi0JCXJldHVybiAtRUFMUkVBRFk7CisJ CWdvdG8gb3V0OwogCi0JbXV0ZXhfbG9jaygmZmFub3V0X211dGV4KTsKIAltYXRjaCA9IE5VTEw7 CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShmLCAmZmFub3V0X2xpc3QsIGxpc3QpIHsKIAkJaWYgKGYt PmlkID09IGlkICYmCkBAIC0xMzIyLDcgKzEzMjksNiBAQCBzdGF0aWMgaW50IGZhbm91dF9hZGQo c3RydWN0IHNvY2sgKnNrLCB1MTYgaWQsIHUxNiB0eXBlX2ZsYWdzKQogCQltYXRjaC0+cHJvdF9o b29rLmZ1bmMgPSBwYWNrZXRfcmN2X2Zhbm91dDsKIAkJbWF0Y2gtPnByb3RfaG9vay5hZl9wYWNr ZXRfcHJpdiA9IG1hdGNoOwogCQltYXRjaC0+cHJvdF9ob29rLmlkX21hdGNoID0gbWF0Y2hfZmFu b3V0X2dyb3VwOwotCQlkZXZfYWRkX3BhY2soJm1hdGNoLT5wcm90X2hvb2spOwogCQlsaXN0X2Fk ZCgmbWF0Y2gtPmxpc3QsICZmYW5vdXRfbGlzdCk7CiAJfQogCWVyciA9IC1FSU5WQUw7CkBAIC0x MzQzLDI0ICsxMzQ5LDI5IEBAIG91dDoKIAlyZXR1cm4gZXJyOwogfQogCi1zdGF0aWMgdm9pZCBm YW5vdXRfcmVsZWFzZShzdHJ1Y3Qgc29jayAqc2spCisvKiBJZiBwa3Rfc2soc2spLT5mYW5vdXQt PnNrX3JlZiBpcyB6ZXJvLCB0aGlzIGZ1bmN0aW9uIHJlbW92ZXMKKyAqIHBrdF9zayhzayktPmZh bm91dCBmcm9tIGZhbm91dF9saXN0IGFuZCByZXR1cm5zIHBrdF9zayhzayktPmZhbm91dC4KKyAq IEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVyIHRvIGNhbGwgZmFub3V0X3Jl bGVhc2VfZGF0YSgpIGFuZAorICogZnJlZSB0aGUgcmV0dXJuZWQgcGFja2V0X2Zhbm91dCAoYWZ0 ZXIgc3luY2hyb25pemVfbmV0KCkpCisgKi8KK3N0YXRpYyBzdHJ1Y3QgcGFja2V0X2Zhbm91dCAq ZmFub3V0X3JlbGVhc2Uoc3RydWN0IHNvY2sgKnNrKQogewogCXN0cnVjdCBwYWNrZXRfc29jayAq cG8gPSBwa3Rfc2soc2spOwogCXN0cnVjdCBwYWNrZXRfZmFub3V0ICpmOwogCisJbXV0ZXhfbG9j aygmZmFub3V0X211dGV4KTsKIAlmID0gcG8tPmZhbm91dDsKLQlpZiAoIWYpCi0JCXJldHVybjsK LQotCXBvLT5mYW5vdXQgPSBOVUxMOworCWlmIChmKSB7CisJCXBvLT5mYW5vdXQgPSBOVUxMOwog Ci0JbXV0ZXhfbG9jaygmZmFub3V0X211dGV4KTsKLQlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgm Zi0+c2tfcmVmKSkgewotCQlsaXN0X2RlbCgmZi0+bGlzdCk7Ci0JCWRldl9yZW1vdmVfcGFjaygm Zi0+cHJvdF9ob29rKTsKLQkJa2ZyZWUoZik7CisJCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZm LT5za19yZWYpKQorCQkJbGlzdF9kZWwoJmYtPmxpc3QpOworCQllbHNlCisJCQlmID0gTlVMTDsK IAl9CiAJbXV0ZXhfdW5sb2NrKCZmYW5vdXRfbXV0ZXgpOworCisJcmV0dXJuIGY7CiB9CiAKIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHM7CkBAIC0yMzgzLDYgKzIzOTQs NyBAQCBzdGF0aWMgaW50IHBhY2tldF9yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spCiB7CiAJ c3RydWN0IHNvY2sgKnNrID0gc29jay0+c2s7CiAJc3RydWN0IHBhY2tldF9zb2NrICpwbzsKKwlz dHJ1Y3QgcGFja2V0X2Zhbm91dCAqZjsKIAlzdHJ1Y3QgbmV0ICpuZXQ7CiAJdW5pb24gdHBhY2tl dF9yZXFfdSByZXFfdTsKIApAQCAtMjQxNyw5ICsyNDI5LDEyIEBAIHN0YXRpYyBpbnQgcGFja2V0 X3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaykKIAkJcGFja2V0X3NldF9yaW5nKHNrLCAmcmVx X3UsIDEsIDEpOwogCX0KIAotCWZhbm91dF9yZWxlYXNlKHNrKTsKKwlmID0gZmFub3V0X3JlbGVh c2Uoc2spOwogCiAJc3luY2hyb25pemVfbmV0KCk7CisKKwlrZnJlZShmKTsKKwogCS8qCiAJICoJ Tm93IHRoZSBzb2NrZXQgaXMgZGVhZC4gTm8gbW9yZSBpbnB1dCB3aWxsIGFwcGVhci4KIAkgKi8K ZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfcGVkaXQuYyBiL25ldC9zY2hlZC9hY3RfcGVkaXQu YwppbmRleCAxMGQzYWVkODY1NjAuLjFhNmVjYmJkNDQyNCAxMDA2NDQKLS0tIGEvbmV0L3NjaGVk L2FjdF9wZWRpdC5jCisrKyBiL25ldC9zY2hlZC9hY3RfcGVkaXQuYwpAQCAtMTIwLDYgKzEyMCwx NyBAQCBzdGF0aWMgaW50IHRjZl9wZWRpdF9jbGVhbnVwKHN0cnVjdCB0Y19hY3Rpb24gKmEsIGlu dCBiaW5kKQogCXJldHVybiAwOwogfQogCitzdGF0aWMgYm9vbCBvZmZzZXRfdmFsaWQoc3RydWN0 IHNrX2J1ZmYgKnNrYiwgaW50IG9mZnNldCkKK3sKKwlpZiAob2Zmc2V0ID4gMCAmJiBvZmZzZXQg PiBza2ItPmxlbikKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgIChvZmZzZXQgPCAwICYmIC1vZmZz ZXQgPiBza2JfaGVhZHJvb20oc2tiKSkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIHRydWU7 Cit9CisKIHN0YXRpYyBpbnQgdGNmX3BlZGl0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0 cnVjdCB0Y19hY3Rpb24gKmEsCiAJCSAgICAgc3RydWN0IHRjZl9yZXN1bHQgKnJlcykKIHsKQEAg LTE0Nyw2ICsxNTgsMTEgQEAgc3RhdGljIGludCB0Y2ZfcGVkaXQoc3RydWN0IHNrX2J1ZmYgKnNr YiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAqYSwKIAkJCWlmICh0a2V5LT5vZmZtYXNrKSB7CiAJ CQkJY2hhciAqZCwgX2Q7CiAKKwkJCQlpZiAoIW9mZnNldF92YWxpZChza2IsIG9mZiArIHRrZXkt PmF0KSkgeworCQkJCQlwcl9pbmZvKCJ0YyBmaWx0ZXIgcGVkaXQgJ2F0JyBvZmZzZXQgJWQgb3V0 IG9mIGJvdW5kc1xuIiwKKwkJCQkJCW9mZiArIHRrZXktPmF0KTsKKwkJCQkJZ290byBiYWQ7CisJ CQkJfQogCQkJCWQgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBvZmYgKyB0a2V5LT5hdCwgMSwK IAkJCQkJCSAgICAgICAmX2QpOwogCQkJCWlmICghZCkKQEAgLTE1OSwxMCArMTc1LDEwIEBAIHN0 YXRpYyBpbnQgdGNmX3BlZGl0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB0Y19h Y3Rpb24gKmEsCiAJCQkJCSIgb2Zmc2V0IG11c3QgYmUgb24gMzIgYml0IGJvdW5kYXJpZXNcbiIp OwogCQkJCWdvdG8gYmFkOwogCQkJfQotCQkJaWYgKG9mZnNldCA+IDAgJiYgb2Zmc2V0ID4gc2ti LT5sZW4pIHsKLQkJCQlwcl9pbmZvKCJ0YyBmaWx0ZXIgcGVkaXQiCi0JCQkJCSIgb2Zmc2V0ICVk IGNhbid0IGV4Y2VlZCBwa3QgbGVuZ3RoICVkXG4iLAotCQkJCSAgICAgICBvZmZzZXQsIHNrYi0+ bGVuKTsKKworCQkJaWYgKCFvZmZzZXRfdmFsaWQoc2tiLCBvZmYgKyBvZmZzZXQpKSB7CisJCQkJ cHJfaW5mbygidGMgZmlsdGVyIHBlZGl0IG9mZnNldCAlZCBvdXQgb2YgYm91bmRzXG4iLAorCQkJ CQlvZmZzZXQpOwogCQkJCWdvdG8gYmFkOwogCQkJfQogCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQv Y2xzX2FwaS5jIGIvbmV0L3NjaGVkL2Nsc19hcGkuYwppbmRleCBhNjlkNDRmMWRhYzUuLmZlY2I1 MTA5N2ZlNSAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL2Nsc19hcGkuYworKysgYi9uZXQvc2NoZWQv Y2xzX2FwaS5jCkBAIC0xMzcsOSArMTM3LDExIEBAIHN0YXRpYyBpbnQgdGNfY3RsX3RmaWx0ZXIo c3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpuLCB2b2lkICphcmcpCiAJdW5z aWduZWQgbG9uZyBjbDsKIAl1bnNpZ25lZCBsb25nIGZoOwogCWludCBlcnI7Ci0JaW50IHRwX2Ny ZWF0ZWQgPSAwOworCWludCB0cF9jcmVhdGVkOwogCiByZXBsYXk6CisJdHBfY3JlYXRlZCA9IDA7 CisKIAl0ID0gTkxNU0dfREFUQShuKTsKIAlwcm90b2NvbCA9IFRDX0hfTUlOKHQtPnRjbV9pbmZv KTsKIAlwcmlvID0gVENfSF9NQUoodC0+dGNtX2luZm8pOwpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVk L2VtX21ldGEuYyBiL25ldC9zY2hlZC9lbV9tZXRhLmMKaW5kZXggMTM2M2JmMTRlNjFiLi44OTJm NjZhYzdhODkgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9lbV9tZXRhLmMKKysrIGIvbmV0L3NjaGVk L2VtX21ldGEuYwpAQCAtMTc2LDExICsxNzYsMTIgQEAgTUVUQV9DT0xMRUNUT1IoaW50X3ZsYW5f dGFnKQogewogCXVuc2lnbmVkIHNob3J0IHRhZzsKIAotCXRhZyA9IHZsYW5fdHhfdGFnX2dldChz a2IpOwotCWlmICghdGFnICYmIF9fdmxhbl9nZXRfdGFnKHNrYiwgJnRhZykpCi0JCSplcnIgPSAt MTsKLQllbHNlCisJaWYgKHZsYW5fdHhfdGFnX3ByZXNlbnQoc2tiKSkKKwkJZHN0LT52YWx1ZSA9 IHZsYW5fdHhfdGFnX2dldChza2IpOworCWVsc2UgaWYgKCFfX3ZsYW5fZ2V0X3RhZyhza2IsICZ0 YWcpKQogCQlkc3QtPnZhbHVlID0gdGFnOworCWVsc2UKKwkJKmVyciA9IC0xOwogfQogCiAKZGlm ZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZHNtYXJrLmMgYi9uZXQvc2NoZWQvc2NoX2RzbWFyay5j CmluZGV4IDJjNzkwMjA0ZDA0Mi4uZDc1YmZjZjk3MmYwIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQv c2NoX2RzbWFyay5jCisrKyBiL25ldC9zY2hlZC9zY2hfZHNtYXJrLmMKQEAgLTI2MCw2ICsyNjAs NyBAQCBzdGF0aWMgaW50IGRzbWFya19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVj dCBRZGlzYyAqc2NoKQogCQlyZXR1cm4gZXJyOwogCX0KIAorCXNjaC0+cXN0YXRzLmJhY2tsb2cg Kz0gcWRpc2NfcGt0X2xlbihza2IpOwogCXNjaC0+cS5xbGVuKys7CiAKIAlyZXR1cm4gTkVUX1hN SVRfU1VDQ0VTUzsKQEAgLTI4Myw2ICsyODQsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmRz bWFya19kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKQogCQlyZXR1cm4gTlVMTDsKIAogCXFkaXNj X2JzdGF0c191cGRhdGUoc2NoLCBza2IpOworCXNjaC0+cXN0YXRzLmJhY2tsb2cgLT0gcWRpc2Nf cGt0X2xlbihza2IpOwogCXNjaC0+cS5xbGVuLS07CiAKIAlpbmRleCA9IHNrYi0+dGNfaW5kZXgg JiAocC0+aW5kaWNlcyAtIDEpOwpAQCAtMzk4LDYgKzQwMCw3IEBAIHN0YXRpYyB2b2lkIGRzbWFy a19yZXNldChzdHJ1Y3QgUWRpc2MgKnNjaCkKIAogCXByX2RlYnVnKCJkc21hcmtfcmVzZXQoc2No ICVwLFtxZGlzYyAlcF0pXG4iLCBzY2gsIHApOwogCXFkaXNjX3Jlc2V0KHAtPnEpOworCXNjaC0+ cXN0YXRzLmJhY2tsb2cgPSAwOwogCXNjaC0+cS5xbGVuID0gMDsKIH0KIApkaWZmIC0tZ2l0IGEv bmV0L3NjaGVkL3NjaF9odGIuYyBiL25ldC9zY2hlZC9zY2hfaHRiLmMKaW5kZXggY2FhNWFmZmE0 YjI5Li45MmYwYzFmMzZjMWIgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfaHRiLmMKKysrIGIv bmV0L3NjaGVkL3NjaF9odGIuYwpAQCAtNTgwLDYgKzU4MCw3IEBAIHN0YXRpYyBpbnQgaHRiX2Vu cXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gpCiAJCWh0Yl9hY3Rp dmF0ZShxLCBjbCk7CiAJfQogCisJc2NoLT5xc3RhdHMuYmFja2xvZyArPSBxZGlzY19wa3RfbGVu KHNrYik7CiAJc2NoLT5xLnFsZW4rKzsKIAlyZXR1cm4gTkVUX1hNSVRfU1VDQ0VTUzsKIH0KQEAg LTg2Nyw2ICs4NjgsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmh0Yl9kZXF1ZXVlKHN0cnVj dCBRZGlzYyAqc2NoKQogb2s6CiAJCXFkaXNjX2JzdGF0c191cGRhdGUoc2NoLCBza2IpOwogCQlx ZGlzY191bnRocm90dGxlZChzY2gpOworCQlzY2gtPnFzdGF0cy5iYWNrbG9nIC09IHFkaXNjX3Br dF9sZW4oc2tiKTsKIAkJc2NoLT5xLnFsZW4tLTsKIAkJcmV0dXJuIHNrYjsKIAl9CkBAIC05Mjcs NiArOTI5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBodGJfZHJvcChzdHJ1Y3QgUWRpc2MgKnNj aCkKIAkJCXVuc2lnbmVkIGludCBsZW47CiAJCQlpZiAoY2wtPnVuLmxlYWYucS0+b3BzLT5kcm9w ICYmCiAJCQkgICAgKGxlbiA9IGNsLT51bi5sZWFmLnEtPm9wcy0+ZHJvcChjbC0+dW4ubGVhZi5x KSkpIHsKKwkJCQlzY2gtPnFzdGF0cy5iYWNrbG9nIC09IGxlbjsKIAkJCQlzY2gtPnEucWxlbi0t OwogCQkJCWlmICghY2wtPnVuLmxlYWYucS0+cS5xbGVuKQogCQkJCQlodGJfZGVhY3RpdmF0ZShx LCBjbCk7CkBAIC05NTcsMTIgKzk2MCwxMiBAQCBzdGF0aWMgdm9pZCBodGJfcmVzZXQoc3RydWN0 IFFkaXNjICpzY2gpCiAJCQl9CiAJCQljbC0+cHJpb19hY3Rpdml0eSA9IDA7CiAJCQljbC0+Y21v ZGUgPSBIVEJfQ0FOX1NFTkQ7Ci0KIAkJfQogCX0KIAlxZGlzY193YXRjaGRvZ19jYW5jZWwoJnEt PndhdGNoZG9nKTsKIAlfX3NrYl9xdWV1ZV9wdXJnZSgmcS0+ZGlyZWN0X3F1ZXVlKTsKIAlzY2gt PnEucWxlbiA9IDA7CisJc2NoLT5xc3RhdHMuYmFja2xvZyA9IDA7CiAJbWVtc2V0KHEtPnJvdywg MCwgc2l6ZW9mKHEtPnJvdykpOwogCW1lbXNldChxLT5yb3dfbWFzaywgMCwgc2l6ZW9mKHEtPnJv d19tYXNrKSk7CiAJbWVtc2V0KHEtPndhaXRfcHEsIDAsIHNpemVvZihxLT53YWl0X3BxKSk7CmRp ZmYgLS1naXQgYS9uZXQvc2N0cC9zb2NrZXQuYyBiL25ldC9zY3RwL3NvY2tldC5jCmluZGV4IDk5 MDdlMzFlYjI2Yy4uOTNlYTVhYzJjN2JlIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9zb2NrZXQuYwor KysgYi9uZXQvc2N0cC9zb2NrZXQuYwpAQCAtMTIyMyw5ICsxMjIzLDEyIEBAIHN0YXRpYyBpbnQg X19zY3RwX2Nvbm5lY3Qoc3RydWN0IHNvY2sqIHNrLAogCiAJdGltZW8gPSBzb2NrX3NuZHRpbWVv KHNrLCBmX2ZsYWdzICYgT19OT05CTE9DSyk7CiAKLQllcnIgPSBzY3RwX3dhaXRfZm9yX2Nvbm5l Y3QoYXNvYywgJnRpbWVvKTsKLQlpZiAoKGVyciA9PSAwIHx8IGVyciA9PSAtRUlOUFJPR1JFU1Mp ICYmIGFzc29jX2lkKQorCWlmIChhc3NvY19pZCkKIAkJKmFzc29jX2lkID0gYXNvYy0+YXNzb2Nf aWQ7CisJZXJyID0gc2N0cF93YWl0X2Zvcl9jb25uZWN0KGFzb2MsICZ0aW1lbyk7CisJLyogTm90 ZTogdGhlIGFzb2MgbWF5IGJlIGZyZWVkIGFmdGVyIHRoZSByZXR1cm4gb2YKKwkgKiBzY3RwX3dh aXRfZm9yX2Nvbm5lY3QuCisJICovCiAKIAkvKiBEb24ndCBmcmVlIGFzc29jaWF0aW9uIG9uIGV4 aXQuICovCiAJYXNvYyA9IE5VTEw7CkBAIC00MTkzLDcgKzQxOTYsNyBAQCBzdGF0aWMgaW50IHNj dHBfZ2V0c29ja29wdF9kaXNhYmxlX2ZyYWdtZW50cyhzdHJ1Y3Qgc29jayAqc2ssIGludCBsZW4s CiBzdGF0aWMgaW50IHNjdHBfZ2V0c29ja29wdF9ldmVudHMoc3RydWN0IHNvY2sgKnNrLCBpbnQg bGVuLCBjaGFyIF9fdXNlciAqb3B0dmFsLAogCQkJCSAgaW50IF9fdXNlciAqb3B0bGVuKQogewot CWlmIChsZW4gPD0gMCkKKwlpZiAobGVuID09IDApCiAJCXJldHVybiAtRUlOVkFMOwogCWlmIChs ZW4gPiBzaXplb2Yoc3RydWN0IHNjdHBfZXZlbnRfc3Vic2NyaWJlKSkKIAkJbGVuID0gc2l6ZW9m KHN0cnVjdCBzY3RwX2V2ZW50X3N1YnNjcmliZSk7CkBAIC00MjM5LDYgKzQyNDIsMTIgQEAgU0NU UF9TVEFUSUMgaW50IHNjdHBfZG9fcGVlbG9mZihzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNv YywKIAlzdHJ1Y3Qgc2N0cF9hZiAqYWY7CiAJaW50IGVyciA9IDA7CiAKKwkvKiBJZiB0aGVyZSBp cyBhIHRocmVhZCB3YWl0aW5nIG9uIG1vcmUgc25kYnVmIHNwYWNlIGZvcgorCSAqIHNlbmRpbmcg b24gdGhpcyBhc29jLCBpdCBjYW5ub3QgYmUgcGVlbGVkLgorCSAqLworCWlmICh3YWl0cXVldWVf YWN0aXZlKCZhc29jLT53YWl0KSkKKwkJcmV0dXJuIC1FQlVTWTsKKwogCS8qIEFuIGFzc29jaWF0 aW9uIGNhbm5vdCBiZSBicmFuY2hlZCBvZmYgZnJvbSBhbiBhbHJlYWR5IHBlZWxlZC1vZmYKIAkg KiBzb2NrZXQsIG5vciBpcyB0aGlzIHN1cHBvcnRlZCBmb3IgdGNwIHN0eWxlIHNvY2tldHMuCiAJ ICovCkBAIC01NTg2LDYgKzU1OTUsOSBAQCBTQ1RQX1NUQVRJQyBpbnQgc2N0cF9nZXRzb2Nrb3B0 KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwKIAlpZiAoZ2V0X3VzZXIo bGVuLCBvcHRsZW4pKQogCQlyZXR1cm4gLUVGQVVMVDsKIAorCWlmIChsZW4gPCAwKQorCQlyZXR1 cm4gLUVJTlZBTDsKKwogCXNjdHBfbG9ja19zb2NrKHNrKTsKIAogCXN3aXRjaCAob3B0bmFtZSkg ewpAQCAtNjQ4Niw3ICs2NDk4LDYgQEAgc3RhdGljIGludCBzY3RwX3dhaXRfZm9yX3NuZGJ1Zihz dHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywgbG9uZyAqdGltZW9fcCwKIAkJICovCiAJCXNj dHBfcmVsZWFzZV9zb2NrKHNrKTsKIAkJY3VycmVudF90aW1lbyA9IHNjaGVkdWxlX3RpbWVvdXQo Y3VycmVudF90aW1lbyk7Ci0JCUJVR19PTihzayAhPSBhc29jLT5iYXNlLnNrKTsKIAkJc2N0cF9s b2NrX3NvY2soc2spOwogCiAJCSp0aW1lb19wID0gY3VycmVudF90aW1lbzsKZGlmZiAtLWdpdCBh L25ldC9zb2NrZXQuYyBiL25ldC9zb2NrZXQuYwppbmRleCBiZGNkZGNlMmQ4NWQuLmY5NDgzOTcy YjNlZiAxMDA2NDQKLS0tIGEvbmV0L3NvY2tldC5jCisrKyBiL25ldC9zb2NrZXQuYwpAQCAtMTg5 OCw3ICsxODk4LDcgQEAgc3RhdGljIGludCBjb3B5X21zZ2hkcl9mcm9tX3VzZXIoc3RydWN0IG1z Z2hkciAqa21zZywKIAogc3RhdGljIGludCBfX19zeXNfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpz b2NrLCBzdHJ1Y3QgbXNnaGRyIF9fdXNlciAqbXNnLAogCQkJICBzdHJ1Y3QgbXNnaGRyICptc2df c3lzLCB1bnNpZ25lZCBmbGFncywKLQkJCSAgc3RydWN0IHVzZWRfYWRkcmVzcyAqdXNlZF9hZGRy ZXNzKQorCQkJICBzdHJ1Y3QgdXNlZF9hZGRyZXNzICp1c2VkX2FkZHJlc3MsIGludCAqcmVzaWR1 ZSkKIHsKIAlzdHJ1Y3QgY29tcGF0X21zZ2hkciBfX3VzZXIgKm1zZ19jb21wYXQgPQogCSAgICAo c3RydWN0IGNvbXBhdF9tc2doZHIgX191c2VyICopbXNnOwpAQCAtMjAwNCw2ICsyMDA0LDggQEAg c3RhdGljIGludCBfX19zeXNfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNn aGRyIF9fdXNlciAqbXNnLAogCQkJbWVtY3B5KCZ1c2VkX2FkZHJlc3MtPm5hbWUsIG1zZ19zeXMt Pm1zZ19uYW1lLAogCQkJICAgICAgIHVzZWRfYWRkcmVzcy0+bmFtZV9sZW4pOwogCX0KKwlpZiAo cmVzaWR1ZSAmJiBlcnIgPj0gMCkKKwkJKnJlc2lkdWUgPSB0b3RhbF9sZW4gLSBlcnI7CiAKIG91 dF9mcmVlY3RsOgogCWlmIChjdGxfYnVmICE9IGN0bCkKQEAgLTIwMjksNyArMjAzMSw3IEBAIGxv bmcgX19zeXNfc2VuZG1zZyhpbnQgZmQsIHN0cnVjdCBtc2doZHIgX191c2VyICptc2csIHVuc2ln bmVkIGZsYWdzKQogCWlmICghc29jaykKIAkJZ290byBvdXQ7CiAKLQllcnIgPSBfX19zeXNfc2Vu ZG1zZyhzb2NrLCBtc2csICZtc2dfc3lzLCBmbGFncywgTlVMTCk7CisJZXJyID0gX19fc3lzX3Nl bmRtc2coc29jaywgbXNnLCAmbXNnX3N5cywgZmxhZ3MsIE5VTEwsIE5VTEwpOwogCiAJZnB1dF9s aWdodChzb2NrLT5maWxlLCBmcHV0X25lZWRlZCk7CiBvdXQ6CkBAIC0yMDU2LDYgKzIwNTgsNyBA QCBpbnQgX19zeXNfc2VuZG1tc2coaW50IGZkLCBzdHJ1Y3QgbW1zZ2hkciBfX3VzZXIgKm1tc2cs IHVuc2lnbmVkIGludCB2bGVuLAogCXN0cnVjdCBjb21wYXRfbW1zZ2hkciBfX3VzZXIgKmNvbXBh dF9lbnRyeTsKIAlzdHJ1Y3QgbXNnaGRyIG1zZ19zeXM7CiAJc3RydWN0IHVzZWRfYWRkcmVzcyB1 c2VkX2FkZHJlc3M7CisJaW50IHJlc2lkdWU7CiAKIAlpZiAodmxlbiA+IFVJT19NQVhJT1YpCiAJ CXZsZW4gPSBVSU9fTUFYSU9WOwpAQCAtMjA3NCw3ICsyMDc3LDggQEAgaW50IF9fc3lzX3NlbmRt bXNnKGludCBmZCwgc3RydWN0IG1tc2doZHIgX191c2VyICptbXNnLCB1bnNpZ25lZCBpbnQgdmxl biwKIAl3aGlsZSAoZGF0YWdyYW1zIDwgdmxlbikgewogCQlpZiAoTVNHX0NNU0dfQ09NUEFUICYg ZmxhZ3MpIHsKIAkJCWVyciA9IF9fX3N5c19zZW5kbXNnKHNvY2ssIChzdHJ1Y3QgbXNnaGRyIF9f dXNlciAqKWNvbXBhdF9lbnRyeSwKLQkJCQkJICAgICAmbXNnX3N5cywgZmxhZ3MsICZ1c2VkX2Fk ZHJlc3MpOworCQkJCQkgICAgICZtc2dfc3lzLCBmbGFncywgJnVzZWRfYWRkcmVzcywKKwkJCQkJ ICAgICAmcmVzaWR1ZSk7CiAJCQlpZiAoZXJyIDwgMCkKIAkJCQlicmVhazsKIAkJCWVyciA9IF9f cHV0X3VzZXIoZXJyLCAmY29tcGF0X2VudHJ5LT5tc2dfbGVuKTsKQEAgLTIwODIsNyArMjA4Niw4 IEBAIGludCBfX3N5c19zZW5kbW1zZyhpbnQgZmQsIHN0cnVjdCBtbXNnaGRyIF9fdXNlciAqbW1z ZywgdW5zaWduZWQgaW50IHZsZW4sCiAJCX0gZWxzZSB7CiAJCQllcnIgPSBfX19zeXNfc2VuZG1z Zyhzb2NrLAogCQkJCQkgICAgIChzdHJ1Y3QgbXNnaGRyIF9fdXNlciAqKWVudHJ5LAotCQkJCQkg ICAgICZtc2dfc3lzLCBmbGFncywgJnVzZWRfYWRkcmVzcyk7CisJCQkJCSAgICAgJm1zZ19zeXMs IGZsYWdzLCAmdXNlZF9hZGRyZXNzLAorCQkJCQkgICAgICZyZXNpZHVlKTsKIAkJCWlmIChlcnIg PCAwKQogCQkJCWJyZWFrOwogCQkJZXJyID0gcHV0X3VzZXIoZXJyLCAmZW50cnktPm1zZ19sZW4p OwpAQCAtMjA5Miw2ICsyMDk3LDggQEAgaW50IF9fc3lzX3NlbmRtbXNnKGludCBmZCwgc3RydWN0 IG1tc2doZHIgX191c2VyICptbXNnLCB1bnNpZ25lZCBpbnQgdmxlbiwKIAkJaWYgKGVycikKIAkJ CWJyZWFrOwogCQkrK2RhdGFncmFtczsKKwkJaWYgKHJlc2lkdWUpCisJCQlicmVhazsKIAl9CiAK IAlmcHV0X2xpZ2h0KHNvY2stPmZpbGUsIGZwdXRfbmVlZGVkKTsKQEAgLTIyNjIsOCArMjI2OSwx MCBAQCBpbnQgX19zeXNfcmVjdm1tc2coaW50IGZkLCBzdHJ1Y3QgbW1zZ2hkciBfX3VzZXIgKm1t c2csIHVuc2lnbmVkIGludCB2bGVuLAogCQlyZXR1cm4gZXJyOwogCiAJZXJyID0gc29ja19lcnJv cihzb2NrLT5zayk7Ci0JaWYgKGVycikKKwlpZiAoZXJyKSB7CisJCWRhdGFncmFtcyA9IGVycjsK IAkJZ290byBvdXRfcHV0OworCX0KIAogCWVudHJ5ID0gbW1zZzsKIAljb21wYXRfZW50cnkgPSAo c3RydWN0IGNvbXBhdF9tbXNnaGRyIF9fdXNlciAqKW1tc2c7CmRpZmYgLS1naXQgYS9uZXQvc3Vu cnBjL2F1dGhfZ3NzL3N2Y2F1dGhfZ3NzLmMgYi9uZXQvc3VucnBjL2F1dGhfZ3NzL3N2Y2F1dGhf Z3NzLmMKaW5kZXggOGQwZjdkM2M3MWM4Li5mN2E5OTA2YzQ3NGIgMTAwNjQ0Ci0tLSBhL25ldC9z dW5ycGMvYXV0aF9nc3Mvc3ZjYXV0aF9nc3MuYworKysgYi9uZXQvc3VucnBjL2F1dGhfZ3NzL3N2 Y2F1dGhfZ3NzLmMKQEAgLTExNTEsNyArMTE1MSw3IEBAIHN2Y2F1dGhfZ3NzX2FjY2VwdChzdHJ1 Y3Qgc3ZjX3Jxc3QgKnJxc3RwLCBfX2JlMzIgKmF1dGhwKQogCWNhc2UgUlBDX0dTU19QUk9DX0RF U1RST1k6CiAJCWlmIChnc3Nfd3JpdGVfdmVyZihycXN0cCwgcnNjaS0+bWVjaGN0eCwgZ2MtPmdj X3NlcSkpCiAJCQlnb3RvIGF1dGhfZXJyOwotCQlyc2NpLT5oLmV4cGlyeV90aW1lID0gZ2V0X3Nl Y29uZHMoKTsKKwkJcnNjaS0+aC5leHBpcnlfdGltZSA9IHNlY29uZHNfc2luY2VfYm9vdCgpOwog CQlzZXRfYml0KENBQ0hFX05FR0FUSVZFLCAmcnNjaS0+aC5mbGFncyk7CiAJCWlmIChyZXN2LT5p b3ZfbGVuICsgNCA+IFBBR0VfU0laRSkKIAkJCWdvdG8gZHJvcDsKZGlmZiAtLWdpdCBhL3Njcmlw dHMva2NvbmZpZy9uY29uZi5ndWkuYyBiL3NjcmlwdHMva2NvbmZpZy9uY29uZi5ndWkuYwppbmRl eCAzYjE4ZGQ4Mzk2NjguLjUyZjlkZDY0MDQ5ZSAxMDA2NDQKLS0tIGEvc2NyaXB0cy9rY29uZmln L25jb25mLmd1aS5jCisrKyBiL3NjcmlwdHMva2NvbmZpZy9uY29uZi5ndWkuYwpAQCAtMzY0LDEy ICszNjQsMTQgQEAgaW50IGRpYWxvZ19pbnB1dGJveChXSU5ET1cgKm1haW5fd2luZG93LAogCVdJ TkRPVyAqcHJvbXB0X3dpbjsKIAlXSU5ET1cgKmZvcm1fd2luOwogCVBBTkVMICpwYW5lbDsKLQlp bnQgaSwgeCwgeTsKKwlpbnQgaSwgeCwgeSwgbGluZXMsIGNvbHVtbnMsIHdpbl9saW5lcywgd2lu X2NvbHM7CiAJaW50IHJlcyA9IC0xOwogCWludCBjdXJzb3JfcG9zaXRpb24gPSBzdHJsZW4oaW5p dCk7CiAJaW50IGN1cnNvcl9mb3JtX3dpbjsKIAljaGFyICpyZXN1bHQgPSAqcmVzdWx0cDsKIAor CWdldG1heHl4KHN0ZHNjciwgbGluZXMsIGNvbHVtbnMpOworCiAJaWYgKHN0cmxlbihpbml0KSsx ID4gKnJlc3VsdF9sZW4pIHsKIAkJKnJlc3VsdF9sZW4gPSBzdHJsZW4oaW5pdCkrMTsKIAkJKnJl c3VsdHAgPSByZXN1bHQgPSByZWFsbG9jKHJlc3VsdCwgKnJlc3VsdF9sZW4pOwpAQCAtMzg2LDE0 ICszODgsMTkgQEAgaW50IGRpYWxvZ19pbnB1dGJveChXSU5ET1cgKm1haW5fd2luZG93LAogCWlm ICh0aXRsZSkKIAkJcHJvbXB0X3dpZHRoID0gbWF4KHByb21wdF93aWR0aCwgc3RybGVuKHRpdGxl KSk7CiAKKwl3aW5fbGluZXMgPSBtaW4ocHJvbXB0X2xpbmVzKzYsIGxpbmVzLTIpOworCXdpbl9j b2xzID0gbWluKHByb21wdF93aWR0aCs3LCBjb2x1bW5zLTIpOworCXByb21wdF9saW5lcyA9IG1h eCh3aW5fbGluZXMtNiwgMCk7CisJcHJvbXB0X3dpZHRoID0gbWF4KHdpbl9jb2xzLTcsIDApOwor CiAJLyogcGxhY2UgZGlhbG9nIGluIG1pZGRsZSBvZiBzY3JlZW4gKi8KLQl5ID0gKExJTkVTLShw cm9tcHRfbGluZXMrNCkpLzI7Ci0JeCA9IChDT0xTLShwcm9tcHRfd2lkdGgrNCkpLzI7CisJeSA9 IChsaW5lcy13aW5fbGluZXMpLzI7CisJeCA9IChjb2x1bW5zLXdpbl9jb2xzKS8yOwogCiAJc3Ry bmNweShyZXN1bHQsIGluaXQsICpyZXN1bHRfbGVuKTsKIAogCS8qIGNyZWF0ZSB0aGUgd2luZG93 cyAqLwotCXdpbiA9IG5ld3dpbihwcm9tcHRfbGluZXMrNiwgcHJvbXB0X3dpZHRoKzcsIHksIHgp OworCXdpbiA9IG5ld3dpbih3aW5fbGluZXMsIHdpbl9jb2xzLCB5LCB4KTsKIAlwcm9tcHRfd2lu ID0gZGVyd2luKHdpbiwgcHJvbXB0X2xpbmVzKzEsIHByb21wdF93aWR0aCwgMiwgMik7CiAJZm9y bV93aW4gPSBkZXJ3aW4od2luLCAxLCBwcm9tcHRfd2lkdGgsIHByb21wdF9saW5lcyszLCAyKTsK IAlrZXlwYWQoZm9ybV93aW4sIFRSVUUpOwpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9zZXEvc2Vx X21lbW9yeS5jIGIvc291bmQvY29yZS9zZXEvc2VxX21lbW9yeS5jCmluZGV4IGUwZTY4M2NkMzky Ni4uOWYyMGQzYzI0ZDc2IDEwMDY0NAotLS0gYS9zb3VuZC9jb3JlL3NlcS9zZXFfbWVtb3J5LmMK KysrIGIvc291bmQvY29yZS9zZXEvc2VxX21lbW9yeS5jCkBAIC00MjEsNyArNDIxLDYgQEAgaW50 IHNuZF9zZXFfcG9vbF9kb25lKHN0cnVjdCBzbmRfc2VxX3Bvb2wgKnBvb2wpCiB7CiAJdW5zaWdu ZWQgbG9uZyBmbGFnczsKIAlzdHJ1Y3Qgc25kX3NlcV9ldmVudF9jZWxsICpwdHI7Ci0JaW50IG1h eF9jb3VudCA9IDUgKiBIWjsKIAogCWlmIChzbmRfQlVHX09OKCFwb29sKSkKIAkJcmV0dXJuIC1F SU5WQUw7CkBAIC00MzQsMTQgKzQzMyw4IEBAIGludCBzbmRfc2VxX3Bvb2xfZG9uZShzdHJ1Y3Qg c25kX3NlcV9wb29sICpwb29sKQogCWlmICh3YWl0cXVldWVfYWN0aXZlKCZwb29sLT5vdXRwdXRf c2xlZXApKQogCQl3YWtlX3VwKCZwb29sLT5vdXRwdXRfc2xlZXApOwogCi0Jd2hpbGUgKGF0b21p Y19yZWFkKCZwb29sLT5jb3VudGVyKSA+IDApIHsKLQkJaWYgKG1heF9jb3VudCA9PSAwKSB7Ci0J CQlzbmRfcHJpbnRrKEtFUk5fV0FSTklORyAic25kX3NlcV9wb29sX2RvbmUgdGltZW91dDogJWQg Y2VsbHMgcmVtYWluXG4iLCBhdG9taWNfcmVhZCgmcG9vbC0+Y291bnRlcikpOwotCQkJYnJlYWs7 Ci0JCX0KKwl3aGlsZSAoYXRvbWljX3JlYWQoJnBvb2wtPmNvdW50ZXIpID4gMCkKIAkJc2NoZWR1 bGVfdGltZW91dF91bmludGVycnVwdGlibGUoMSk7Ci0JCW1heF9jb3VudC0tOwotCX0KIAkKIAkv KiByZWxlYXNlIGFsbCByZXNvdXJjZXMgKi8KIAlzcGluX2xvY2tfaXJxc2F2ZSgmcG9vbC0+bG9j aywgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9zZXEvc2VxX3F1ZXVlLmMgYi9zb3Vu ZC9jb3JlL3NlcS9zZXFfcXVldWUuYwppbmRleCA0YzlhYTQ2MmRlOWIuLjE3ZmUwNGQ4OTJmOSAx MDA2NDQKLS0tIGEvc291bmQvY29yZS9zZXEvc2VxX3F1ZXVlLmMKKysrIGIvc291bmQvY29yZS9z ZXEvc2VxX3F1ZXVlLmMKQEAgLTE4Myw2ICsxODMsOCBAQCB2b2lkIF9fZXhpdCBzbmRfc2VxX3F1 ZXVlc19kZWxldGUodm9pZCkKIAl9CiB9CiAKK3N0YXRpYyB2b2lkIHF1ZXVlX3VzZShzdHJ1Y3Qg c25kX3NlcV9xdWV1ZSAqcXVldWUsIGludCBjbGllbnQsIGludCB1c2UpOworCiAvKiBhbGxvY2F0 ZSBhIG5ldyBxdWV1ZSAtCiAgKiByZXR1cm4gcXVldWUgaW5kZXggdmFsdWUgb3IgbmVnYXRpdmUg dmFsdWUgZm9yIGVycm9yCiAgKi8KQEAgLTE5NCwxMSArMTk2LDExIEBAIGludCBzbmRfc2VxX3F1 ZXVlX2FsbG9jKGludCBjbGllbnQsIGludCBsb2NrZWQsIHVuc2lnbmVkIGludCBpbmZvX2ZsYWdz KQogCWlmIChxID09IE5VTEwpCiAJCXJldHVybiAtRU5PTUVNOwogCXEtPmluZm9fZmxhZ3MgPSBp bmZvX2ZsYWdzOworCXF1ZXVlX3VzZShxLCBjbGllbnQsIDEpOwogCWlmIChxdWV1ZV9saXN0X2Fk ZChxKSA8IDApIHsKIAkJcXVldWVfZGVsZXRlKHEpOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9Ci0J c25kX3NlcV9xdWV1ZV91c2UocS0+cXVldWUsIGNsaWVudCwgMSk7IC8qIHVzZSB0aGlzIHF1ZXVl ICovCiAJcmV0dXJuIHEtPnF1ZXVlOwogfQogCkBAIC01MDQsMTkgKzUwNiw5IEBAIGludCBzbmRf c2VxX3F1ZXVlX3RpbWVyX3NldF90ZW1wbyhpbnQgcXVldWVpZCwgaW50IGNsaWVudCwKIAlyZXR1 cm4gcmVzdWx0OwogfQogCi0KLS8qIHVzZSBvciB1bnVzZSB0aGlzIHF1ZXVlIC0KLSAqIGlmIGl0 IGlzIHRoZSBmaXJzdCBjbGllbnQsIHN0YXJ0cyB0aGUgdGltZXIuCi0gKiBpZiBpdCBpcyBub3Qg bG9uZ2VyIHVzZWQgYnkgYW55IGNsaWVudHMsIHN0b3AgdGhlIHRpbWVyLgotICovCi1pbnQgc25k X3NlcV9xdWV1ZV91c2UoaW50IHF1ZXVlaWQsIGludCBjbGllbnQsIGludCB1c2UpCisvKiB1c2Ug b3IgdW51c2UgdGhpcyBxdWV1ZSAqLworc3RhdGljIHZvaWQgcXVldWVfdXNlKHN0cnVjdCBzbmRf c2VxX3F1ZXVlICpxdWV1ZSwgaW50IGNsaWVudCwgaW50IHVzZSkKIHsKLQlzdHJ1Y3Qgc25kX3Nl cV9xdWV1ZSAqcXVldWU7Ci0KLQlxdWV1ZSA9IHF1ZXVlcHRyKHF1ZXVlaWQpOwotCWlmIChxdWV1 ZSA9PSBOVUxMKQotCQlyZXR1cm4gLUVJTlZBTDsKLQltdXRleF9sb2NrKCZxdWV1ZS0+dGltZXJf bXV0ZXgpOwogCWlmICh1c2UpIHsKIAkJaWYgKCF0ZXN0X2FuZF9zZXRfYml0KGNsaWVudCwgcXVl dWUtPmNsaWVudHNfYml0bWFwKSkKIAkJCXF1ZXVlLT5jbGllbnRzKys7CkBAIC01MzEsNiArNTIz LDIxIEBAIGludCBzbmRfc2VxX3F1ZXVlX3VzZShpbnQgcXVldWVpZCwgaW50IGNsaWVudCwgaW50 IHVzZSkKIAl9IGVsc2UgewogCQlzbmRfc2VxX3RpbWVyX2Nsb3NlKHF1ZXVlKTsKIAl9Cit9CisK Ky8qIHVzZSBvciB1bnVzZSB0aGlzIHF1ZXVlIC0KKyAqIGlmIGl0IGlzIHRoZSBmaXJzdCBjbGll bnQsIHN0YXJ0cyB0aGUgdGltZXIuCisgKiBpZiBpdCBpcyBub3QgbG9uZ2VyIHVzZWQgYnkgYW55 IGNsaWVudHMsIHN0b3AgdGhlIHRpbWVyLgorICovCitpbnQgc25kX3NlcV9xdWV1ZV91c2UoaW50 IHF1ZXVlaWQsIGludCBjbGllbnQsIGludCB1c2UpCit7CisJc3RydWN0IHNuZF9zZXFfcXVldWUg KnF1ZXVlOworCisJcXVldWUgPSBxdWV1ZXB0cihxdWV1ZWlkKTsKKwlpZiAocXVldWUgPT0gTlVM TCkKKwkJcmV0dXJuIC1FSU5WQUw7CisJbXV0ZXhfbG9jaygmcXVldWUtPnRpbWVyX211dGV4KTsK KwlxdWV1ZV91c2UocXVldWUsIGNsaWVudCwgdXNlKTsKIAltdXRleF91bmxvY2soJnF1ZXVlLT50 aW1lcl9tdXRleCk7CiAJcXVldWVmcmVlKHF1ZXVlKTsKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBh L3NvdW5kL3VzYi9jYXJkLmMgYi9zb3VuZC91c2IvY2FyZC5jCmluZGV4IGIzYWMzODk5MWU2ZS4u NDEzYjMyZDZlZjM1IDEwMDY0NAotLS0gYS9zb3VuZC91c2IvY2FyZC5jCisrKyBiL3NvdW5kL3Vz Yi9jYXJkLmMKQEAgLTIwNyw3ICsyMDcsNiBAQCBzdGF0aWMgaW50IHNuZF91c2JfY3JlYXRlX3N0 cmVhbShzdHJ1Y3Qgc25kX3VzYl9hdWRpbyAqY2hpcCwgaW50IGN0cmxpZiwgaW50IGludAogCWlm ICghIHNuZF91c2JfcGFyc2VfYXVkaW9faW50ZXJmYWNlKGNoaXAsIGludGVyZmFjZSkpIHsKIAkJ dXNiX3NldF9pbnRlcmZhY2UoZGV2LCBpbnRlcmZhY2UsIDApOyAvKiByZXNldCB0aGUgY3VycmVu dCBpbnRlcmZhY2UgKi8KIAkJdXNiX2RyaXZlcl9jbGFpbV9pbnRlcmZhY2UoJnVzYl9hdWRpb19k cml2ZXIsIGlmYWNlLCAodm9pZCAqKS0xTCk7Ci0JCXJldHVybiAtRUlOVkFMOwogCX0KIAogCXJl dHVybiAwOwpkaWZmIC0tZ2l0IGEvc291bmQvdXNiL21peGVyLmMgYi9zb3VuZC91c2IvbWl4ZXIu YwppbmRleCAyZGM5MGE0YTg3OWMuLjljMzZhMWZmMzE3MiAxMDA2NDQKLS0tIGEvc291bmQvdXNi L21peGVyLmMKKysrIGIvc291bmQvdXNiL21peGVyLmMKQEAgLTg0MSw5ICs4NDEsMTAgQEAgc3Rh dGljIHZvaWQgdm9sdW1lX2NvbnRyb2xfcXVpcmtzKHN0cnVjdCB1c2JfbWl4ZXJfZWxlbV9pbmZv ICpjdmFsLAogCWNhc2UgVVNCX0lEKDB4MDQ2ZCwgMHgwODI2KTogLyogSEQgV2ViY2FtIGM1MjUg Ki8KIAljYXNlIFVTQl9JRCgweDA0NmQsIDB4MDhjYSk6IC8qIExvZ2l0ZWNoIFF1aWNrY2FtIEZ1 c2lvbiAqLwogCWNhc2UgVVNCX0lEKDB4MDQ2ZCwgMHgwOTkxKToKKwljYXNlIFVTQl9JRCgweDA0 NmQsIDB4MDlhMik6IC8qIFF1aWNrQ2FtIENvbW11bmljYXRlIERlbHV4ZS9TNzUwMCAqLwogCS8q IE1vc3QgYXVkaW8gdXNiIGRldmljZXMgbGllIGFib3V0IHZvbHVtZSByZXNvbHV0aW9uLgogCSAq IE1vc3QgTG9naXRlY2ggd2ViY2FtcyBoYXZlIHJlcyA9IDM4NC4KLQkgKiBQcm9ib2x5IHRoZXJl IGlzIHNvbWUgbG9naXRlY2ggbWFnaWMgYmVoaW5kIHRoaXMgbnVtYmVyIC0tZmlzaG9yCisJICog UHJvYmFibHkgdGhlcmUgaXMgc29tZSBsb2dpdGVjaCBtYWdpYyBiZWhpbmQgdGhpcyBudW1iZXIg LS1maXNob3IKIAkgKi8KIAkJaWYgKCFzdHJjbXAoa2N0bC0+aWQubmFtZSwgIk1pYyBDYXB0dXJl IFZvbHVtZSIpKSB7CiAJCQlzbmRfcHJpbnRrKEtFUk5fSU5GTwpkaWZmIC0tZ2l0IGEvdG9vbHMv cGVyZi91dGlsL3RyYWNlLWV2ZW50LXNjcmlwdGluZy5jIGIvdG9vbHMvcGVyZi91dGlsL3RyYWNl LWV2ZW50LXNjcmlwdGluZy5jCmluZGV4IGM5ZGNiZWM3ZDgwMC4uNmFjN2Q0YjM4MzNlIDEwMDY0 NAotLS0gYS90b29scy9wZXJmL3V0aWwvdHJhY2UtZXZlbnQtc2NyaXB0aW5nLmMKKysrIGIvdG9v bHMvcGVyZi91dGlsL3RyYWNlLWV2ZW50LXNjcmlwdGluZy5jCkBAIC04OCw3ICs4OCw4IEBAIHN0 YXRpYyB2b2lkIHJlZ2lzdGVyX3B5dGhvbl9zY3JpcHRpbmcoc3RydWN0IHNjcmlwdGluZ19vcHMg KnNjcmlwdGluZ19vcHMpCiAJaWYgKGVycikKIAkJZGllKCJlcnJvciByZWdpc3RlcmluZyBweSBz Y3JpcHQgZXh0ZW5zaW9uIik7CiAKLQlzY3JpcHRpbmdfY29udGV4dCA9IG1hbGxvYyhzaXplb2Yo c3RydWN0IHNjcmlwdGluZ19jb250ZXh0KSk7CisJaWYgKHNjcmlwdGluZ19jb250ZXh0ID09IE5V TEwpCisJCXNjcmlwdGluZ19jb250ZXh0ID0gbWFsbG9jKHNpemVvZigqc2NyaXB0aW5nX2NvbnRl eHQpKTsKIH0KIAogI2lmZGVmIE5PX0xJQlBZVEhPTgpAQCAtMTQ5LDcgKzE1MCw4IEBAIHN0YXRp YyB2b2lkIHJlZ2lzdGVyX3Blcmxfc2NyaXB0aW5nKHN0cnVjdCBzY3JpcHRpbmdfb3BzICpzY3Jp cHRpbmdfb3BzKQogCWlmIChlcnIpCiAJCWRpZSgiZXJyb3IgcmVnaXN0ZXJpbmcgcGwgc2NyaXB0 IGV4dGVuc2lvbiIpOwogCi0Jc2NyaXB0aW5nX2NvbnRleHQgPSBtYWxsb2Moc2l6ZW9mKHN0cnVj dCBzY3JpcHRpbmdfY29udGV4dCkpOworCWlmIChzY3JpcHRpbmdfY29udGV4dCA9PSBOVUxMKQor CQlzY3JpcHRpbmdfY29udGV4dCA9IG1hbGxvYyhzaXplb2YoKnNjcmlwdGluZ19jb250ZXh0KSk7 CiB9CiAKICNpZmRlZiBOT19MSUJQRVJMCi== --=-YiKj9cgTXxQfPM9Dwj62-- --=-+sg0QKDEbhq6B/bsFMya Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEErCspvTSmr92z9o8157/I7JWGEQkFAljEK14ACgkQ57/I7JWG EQllKg/+MRxVdDGUk9yikdbXEY2fr1ANCvO5B04UvqdNkHzasm0aODsLpI1DHD1f N8qFvSr7mjUXnlBMZF4foEnBfsbdfW/m32bCC8YFRdEm8ZYIGfo3xccvKH9Cibtg gCmmj1W4WdgCih82GJzuwYWRLk6caF/WS+pKn/jjniYxxHxRu6lOxzx/ZejlmJL1 MX10yFKENB6jgu2AOWaNBiHfodXwqkteUWVPTTV3QAmJ5n+KG/q2uJjwarDAIcoc UlRzcvUj+sBVprg5WPrTWyg1e83moc4w7SByntxTwcfw6VP971tvgbgkOvFedqpw Ct9iKkt2EFZIT73g2lrjukvJZZmvquusTecRXTgPmnPdqDAkieZrZ5pVHEWwpAEu qKBEIxFplGL38TX9y9tLGkIRwMZxdussmkcV+1CKo37VhSccQaVrFKLe7iBrtcYJ j/2bLJxQLxkyWvMFBdG/CG4bBur52jKpXj3bkfENQ4krOu2vEdDlfzjcpuU04PCE gOcpWTT/AvGO75A4hNqqGlcOmE8ODHpTN0wsUHiP5eCqTlv2Zpjz2O+L7g7Wmnby R0OEEyJPAcpvLYYIMQrZxSSoFCGtBZ1ArY3rub3ADW3dSoWEBObmt1tTppinV/c2 ktB3wwec6bxtjsPwag5FDx1GGxIBZVfzRlxIpsEnsg1+/COJZoc= =KU/k -----END PGP SIGNATURE----- --=-+sg0QKDEbhq6B/bsFMya--