From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753707AbcFMWzu (ORCPT ); Mon, 13 Jun 2016 18:55:50 -0400 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:45593 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751992AbcFMWzm (ORCPT ); Mon, 13 Jun 2016 18:55:42 -0400 Message-ID: <1465858537.3529.228.camel@decadent.org.uk> Subject: Re: [PATCH 3.16 000/114] 3.16.36-rc1 review From: Ben Hutchings To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: torvalds@linux-foundation.org, Guenter Roeck , akpm@linux-foundation.org Date: Mon, 13 Jun 2016 23:55:37 +0100 In-Reply-To: References: Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-J7D48uY+hB5EnXMwU/sw" X-Mailer: Evolution 3.20.2-2 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 --=-J7D48uY+hB5EnXMwU/sw Content-Type: multipart/mixed; boundary="=-lr9zs3eT/NJsj6S+Ebw6" --=-lr9zs3eT/NJsj6S+Ebw6 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This is the combined diff for 3.16.36-rc1 relative to 3.16.35. Ben. --=C2=A0 Ben Hutchings One of the nice things about standards is that there are so many of them. --=-lr9zs3eT/NJsj6S+Ebw6 Content-Disposition: attachment; filename="linux-3.16.36-rc1.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="linux-3.16.36-rc1.patch"; charset="UTF-8" ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0IGIvRG9jdW1l bnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQKaW5kZXggZjZjYTJlNTMwNzI3Li41OTBiZjAw Njc3YTUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0Cisr KyBiL0RvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0CkBAIC0zNDY5LDYgKzM0Njks OCBAQCBieXRlcyByZXNwZWN0aXZlbHkuIFN1Y2ggbGV0dGVyIHN1ZmZpeGVzIGNhbiBhbHNvIGJl IGVudGlyZWx5IG9taXR0ZWQuCiAJCQkJCXNlY3RvciBpZiB0aGUgbnVtYmVyIGlzIG9kZCk7CiAJ CQkJaSA9IElHTk9SRV9ERVZJQ0UgKGRvbid0IGJpbmQgdG8gdGhpcwogCQkJCQlkZXZpY2UpOwor CQkJCWogPSBOT19SRVBPUlRfTFVOUyAoZG9uJ3QgdXNlIHJlcG9ydCBsdW5zCisJCQkJCWNvbW1h bmQsIHVhcyBvbmx5KTsKIAkJCQlsID0gTk9UX0xPQ0tBQkxFIChkb24ndCB0cnkgdG8gbG9jayBh bmQKIAkJCQkJdW5sb2NrIGVqZWN0YWJsZSBtZWRpYSk7CiAJCQkJbSA9IE1BWF9TRUNUT1JTXzY0 IChkb24ndCB0cmFuc2ZlciBtb3JlCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlO RVJTCmluZGV4IDEyNzhkMTk1MGQwNS4uOGE1Y2FlMGNhMjgxIDEwMDY0NAotLS0gYS9NQUlOVEFJ TkVSUworKysgYi9NQUlOVEFJTkVSUwpAQCAtMzM5NCw4ICszMzk0LDggQEAgRjoJRG9jdW1lbnRh dGlvbi94ODYvZWZpLXN0dWIudHh0CiBGOglhcmNoL2lhNjQva2VybmVsL2VmaS5jCiBGOglhcmNo L3g4Ni9ib290L2NvbXByZXNzZWQvZWJvb3QuW2NoXQogRjoJYXJjaC94ODYvaW5jbHVkZS9hc20v ZWZpLmgKLUY6CWFyY2gveDg2L3BsYXRmb3JtL2VmaS8qCi1GOglkcml2ZXJzL2Zpcm13YXJlL2Vm aS8qCitGOglhcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvCitGOglkcml2ZXJzL2Zpcm13YXJlL2VmaS8K IEY6CWluY2x1ZGUvbGludXgvZWZpKi5oCiAKIEVGSSBWQVJJQUJMRSBGSUxFU1lTVEVNCmRpZmYg LS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCmluZGV4IGMwZGU4NDM5ODBmMC4uN2NiYzk1MGI1 ZGYyIDEwMDY0NAotLS0gYS9NYWtlZmlsZQorKysgYi9NYWtlZmlsZQpAQCAtMSw3ICsxLDcgQEAK IFZFUlNJT04gPSAzCiBQQVRDSExFVkVMID0gMTYKLVNVQkxFVkVMID0gMzUKLUVYVFJBVkVSU0lP TiA9CitTVUJMRVZFTCA9IDM2CitFWFRSQVZFUlNJT04gPSAtcmMxCiBOQU1FID0gTXVzZXVtIG9m IEZpc2hpZWdvb2RpZXMKIAogIyAqRE9DVU1FTlRBVElPTioKZGlmZiAtLWdpdCBhL2FyY2gvYXJj L2luY2x1ZGUvYXNtL2F0b21pYy5oIGIvYXJjaC9hcmMvaW5jbHVkZS9hc20vYXRvbWljLmgKaW5k ZXggMjIzMTM4NzE2YzJlLi43YWNlNTZlNmFkMjMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJjL2luY2x1 ZGUvYXNtL2F0b21pYy5oCisrKyBiL2FyY2gvYXJjL2luY2x1ZGUvYXNtL2F0b21pYy5oCkBAIC0x MDksNyArMTA5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGF0b21pY18jI29wKGludCBpLCBhdG9t aWNfdCAqdikJCQlcCiAJYXRvbWljX29wc191bmxvY2soZmxhZ3MpOwkJCQkJXAogfQogCi0jZGVm aW5lIEFUT01JQ19PUF9SRVRVUk4ob3AsIGNfb3ApCQkJCQlcCisjZGVmaW5lIEFUT01JQ19PUF9S RVRVUk4ob3AsIGNfb3AsIGFzbV9vcCkJCQkJXAogc3RhdGljIGlubGluZSBpbnQgYXRvbWljXyMj b3AjI19yZXR1cm4oaW50IGksIGF0b21pY190ICp2KQkJXAogewkJCQkJCQkJCVwKIAl1bnNpZ25l ZCBsb25nIGZsYWdzOwkJCQkJCVwKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDIvb21h cF9od21vZC5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kLmMKaW5kZXggNDcxMWRk MDZkN2I1Li42ODQ5YWU4MWE1NjAgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvb21h cF9od21vZC5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC5jCkBAIC0xNDM5 LDkgKzE0MzksNyBAQCBzdGF0aWMgdm9pZCBfZW5hYmxlX3N5c2Moc3RydWN0IG9tYXBfaHdtb2Qg Km9oKQogCSAgICAoc2YgJiBTWVNDX0hBU19DTE9DS0FDVElWSVRZKSkKIAkJX3NldF9jbG9ja2Fj dGl2aXR5KG9oLCBvaC0+Y2xhc3MtPnN5c2MtPmNsb2NrYWN0LCAmdik7CiAKLQkvKiBJZiB0aGUg Y2FjaGVkIHZhbHVlIGlzIHRoZSBzYW1lIGFzIHRoZSBuZXcgdmFsdWUsIHNraXAgdGhlIHdyaXRl ICovCi0JaWYgKG9oLT5fc3lzY19jYWNoZSAhPSB2KQotCQlfd3JpdGVfc3lzY29uZmlnKHYsIG9o KTsKKwlfd3JpdGVfc3lzY29uZmlnKHYsIG9oKTsKIAogCS8qCiAJICogU2V0IHRoZSBhdXRvaWRs ZSBiaXQgb25seSBhZnRlciBzZXR0aW5nIHRoZSBzbWFydGlkbGUgYml0CkBAIC0xNTA0LDcgKzE1 MDIsOSBAQCBzdGF0aWMgdm9pZCBfaWRsZV9zeXNjKHN0cnVjdCBvbWFwX2h3bW9kICpvaCkKIAkJ X3NldF9tYXN0ZXJfc3RhbmRieW1vZGUob2gsIGlkbGVtb2RlLCAmdik7CiAJfQogCi0JX3dyaXRl X3N5c2NvbmZpZyh2LCBvaCk7CisJLyogSWYgdGhlIGNhY2hlZCB2YWx1ZSBpcyB0aGUgc2FtZSBh cyB0aGUgbmV3IHZhbHVlLCBza2lwIHRoZSB3cml0ZSAqLworCWlmIChvaC0+X3N5c2NfY2FjaGUg IT0gdikKKwkJX3dyaXRlX3N5c2NvbmZpZyh2LCBvaCk7CiB9CiAKIC8qKgpAQCAtMTk0Niw3ICsx OTQ2LDkgQEAgc3RhdGljIGludCBfb2NwX3NvZnRyZXNldChzdHJ1Y3Qgb21hcF9od21vZCAqb2gp CiAJaWYgKHJldCkKIAkJZ290byBkaXNfb3B0X2Nsa3M7CiAKLQlfd3JpdGVfc3lzY29uZmlnKHYs IG9oKTsKKwkvKiBJZiB0aGUgY2FjaGVkIHZhbHVlIGlzIHRoZSBzYW1lIGFzIHRoZSBuZXcgdmFs dWUsIHNraXAgdGhlIHdyaXRlICovCisJaWYgKG9oLT5fc3lzY19jYWNoZSAhPSB2KQorCQlfd3Jp dGVfc3lzY29uZmlnKHYsIG9oKTsKIAogCWlmIChvaC0+Y2xhc3MtPnN5c2MtPnNyc3RfdWRlbGF5 KQogCQl1ZGVsYXkob2gtPmNsYXNzLT5zeXNjLT5zcnN0X3VkZWxheSk7CmRpZmYgLS1naXQgYS9h cmNoL2FybS9tYWNoLXNvY2ZwZ2EvaGVhZHNtcC5TIGIvYXJjaC9hcm0vbWFjaC1zb2NmcGdhL2hl YWRzbXAuUwppbmRleCA5NWMxMTVkOGI1ZWUuLmIxNDNmOTQ2YmI3OSAxMDA2NDQKLS0tIGEvYXJj aC9hcm0vbWFjaC1zb2NmcGdhL2hlYWRzbXAuUworKysgYi9hcmNoL2FybS9tYWNoLXNvY2ZwZ2Ev aGVhZHNtcC5TCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgogCiAJ LmFyY2gJYXJtdjctYQorCS5hcm0KIAogRU5UUlkoc2Vjb25kYXJ5X3RyYW1wb2xpbmUpCiAJbW92 dwlyMiwgIzpsb3dlcjE2OmNwdTFzdGFydF9hZGRyCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tl cm5lbC9NYWtlZmlsZSBiL2FyY2gvYXJtNjQva2VybmVsL01ha2VmaWxlCmluZGV4IGNkYWVkYWQz YWZlNS4uZDI3MWU1NWU3NzhlIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9NYWtlZmls ZQorKysgYi9hcmNoL2FybTY0L2tlcm5lbC9NYWtlZmlsZQpAQCAtMTUsNyArMTUsOCBAQCBDRkxB R1NfUkVNT1ZFX3JldHVybl9hZGRyZXNzLm8gPSAtcGcKIGFybTY0LW9iai15CQk6PSBjcHV0YWJs ZS5vIGRlYnVnLW1vbml0b3JzLm8gZW50cnkubyBpcnEubyBmcHNpbWQubwlcCiAJCQkgICBlbnRy eS1mcHNpbWQubyBwcm9jZXNzLm8gcHRyYWNlLm8gc2V0dXAubyBzaWduYWwubwlcCiAJCQkgICBz eXMubyBzdGFja3RyYWNlLm8gdGltZS5vIHRyYXBzLm8gaW8ubyB2ZHNvLm8JXAotCQkJICAgaHlw LXN0dWIubyBwc2NpLm8gY3B1X29wcy5vIGluc24ubyByZXR1cm5fYWRkcmVzcy5vCisJCQkgICBo eXAtc3R1Yi5vIHBzY2kubyBwc2NpLWNhbGwubyBjcHVfb3BzLm8gaW5zbi5vCVwKKwkJCSAgIHJl dHVybl9hZGRyZXNzLm8KIAogYXJtNjQtb2JqLSQoQ09ORklHX0NPTVBBVCkJCSs9IHN5czMyLm8g a3VzZXIzMi5vIHNpZ25hbDMyLm8gCVwKIAkJCQkJICAgc3lzX2NvbXBhdC5vCmRpZmYgLS1naXQg YS9hcmNoL2FybTY0L2tlcm5lbC9oZWFkLlMgYi9hcmNoL2FybTY0L2tlcm5lbC9oZWFkLlMKaW5k ZXggYTA4OWNlOGQ1MmIzLi5lNjczOWZlMWVmZmMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva2Vy bmVsL2hlYWQuUworKysgYi9hcmNoL2FybTY0L2tlcm5lbC9oZWFkLlMKQEAgLTMxNiw5ICszMTYs MTQgQEAgQ1BVX0xFKAltb3ZrCXgwLCAjMHgzMGQwLCBsc2wgIzE2CSkJLy8gQ2xlYXIgRUUgYW5k IEUwRSBvbiBMRSBzeXN0ZW1zCiAjZW5kaWYKIAogCS8qIEVMMiBkZWJ1ZyAqLworCW1ycwl4MCwg aWRfYWE2NGRmcjBfZWwxCQkvLyBDaGVjayBJRF9BQTY0REZSMF9FTDEgUE1VVmVyCisJc2JmeAl4 MCwgeDAsICM4LCAjNAorCWNtcAl4MCwgIzEKKwliLmx0CTRmCQkJCS8vIFNraXAgaWYgbm8gUE1V IHByZXNlbnQKIAltcnMJeDAsIHBtY3JfZWwwCQkJLy8gRGlzYWJsZSBkZWJ1ZyBhY2Nlc3MgdHJh cHMKIAl1YmZ4CXgwLCB4MCwgIzExLCAjNQkJCS8vIHRvIEVMMiBhbmQgYWxsb3cgYWNjZXNzIHRv CiAJbXNyCW1kY3JfZWwyLCB4MAkJCS8vIGFsbCBQTVUgY291bnRlcnMgZnJvbSBFTDEKKzQ6CiAK IAkvKiBTdGFnZS0yIHRyYW5zbGF0aW9uICovCiAJbXNyCXZ0dGJyX2VsMiwgeHpyCmRpZmYgLS1n aXQgYS9hcmNoL2FybTY0L2tlcm5lbC9wc2NpLWNhbGwuUyBiL2FyY2gvYXJtNjQva2VybmVsL3Bz Y2ktY2FsbC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2Y4M2U2 MWNkM2I1Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvcHNjaS1jYWxsLlMK QEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQVJNIExpbWl0ZWQKKyAqCisgKiBB dXRob3I6IFdpbGwgRGVhY29uIDx3aWxsLmRlYWNvbkBhcm0uY29tPgorICovCisKKyNpbmNsdWRl IDxsaW51eC9saW5rYWdlLmg+CisKKy8qIGludCBfX2ludm9rZV9wc2NpX2ZuX2h2Yyh1NjQgZnVu Y3Rpb25faWQsIHU2NCBhcmcwLCB1NjQgYXJnMSwgdTY0IGFyZzIpICovCitFTlRSWShfX2ludm9r ZV9wc2NpX2ZuX2h2YykKKwlodmMJIzAKKwlyZXQKK0VORFBST0MoX19pbnZva2VfcHNjaV9mbl9o dmMpCisKKy8qIGludCBfX2ludm9rZV9wc2NpX2ZuX3NtYyh1NjQgZnVuY3Rpb25faWQsIHU2NCBh cmcwLCB1NjQgYXJnMSwgdTY0IGFyZzIpICovCitFTlRSWShfX2ludm9rZV9wc2NpX2ZuX3NtYykK KwlzbWMJIzAKKwlyZXQKK0VORFBST0MoX19pbnZva2VfcHNjaV9mbl9zbWMpCmRpZmYgLS1naXQg YS9hcmNoL2FybTY0L2tlcm5lbC9wc2NpLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9wc2NpLmMKaW5k ZXggOWU5Nzk4ZjkxMTcyLi4yYTg2ODliODk0OTIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva2Vy bmVsL3BzY2kuYworKysgYi9hcmNoL2FybTY0L2tlcm5lbC9wc2NpLmMKQEAgLTU1LDYgKzU1LDkg QEAgc3RhdGljIHN0cnVjdCBwc2NpX29wZXJhdGlvbnMgcHNjaV9vcHM7CiBzdGF0aWMgaW50ICgq aW52b2tlX3BzY2lfZm4pKHU2NCwgdTY0LCB1NjQsIHU2NCk7CiB0eXBlZGVmIGludCAoKnBzY2lf aW5pdGNhbGxfdCkoY29uc3Qgc3RydWN0IGRldmljZV9ub2RlICopOwogCithc21saW5rYWdlIGlu dCBfX2ludm9rZV9wc2NpX2ZuX2h2Yyh1NjQsIHU2NCwgdTY0LCB1NjQpOworYXNtbGlua2FnZSBp bnQgX19pbnZva2VfcHNjaV9mbl9zbWModTY0LCB1NjQsIHU2NCwgdTY0KTsKKwogZW51bSBwc2Np X2Z1bmN0aW9uIHsKIAlQU0NJX0ZOX0NQVV9TVVNQRU5ELAogCVBTQ0lfRk5fQ1BVX09OLApAQCAt OTMsNDAgKzk2LDYgQEAgc3RhdGljIHUzMiBwc2NpX3Bvd2VyX3N0YXRlX3BhY2soc3RydWN0IHBz Y2lfcG93ZXJfc3RhdGUgc3RhdGUpCiAJCSAmIFBTQ0lfMF8yX1BPV0VSX1NUQVRFX0FGRkxfTUFT Syk7CiB9CiAKLS8qCi0gKiBUaGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnMgYXJlIGludm9rZWQg dmlhIHRoZSBpbnZva2VfcHNjaV9mbiBwb2ludGVyCi0gKiBhbmQgd2lsbCBub3QgYmUgaW5saW5l ZCwgYWxsb3dpbmcgdXMgdG8gcGlnZ3liYWNrIG9uIHRoZSBBQVBDUy4KLSAqLwotc3RhdGljIG5v aW5saW5lIGludCBfX2ludm9rZV9wc2NpX2ZuX2h2Yyh1NjQgZnVuY3Rpb25faWQsIHU2NCBhcmcw LCB1NjQgYXJnMSwKLQkJCQkJIHU2NCBhcmcyKQotewotCWFzbSB2b2xhdGlsZSgKLQkJCV9fYXNt ZXEoIiUwIiwgIngwIikKLQkJCV9fYXNtZXEoIiUxIiwgIngxIikKLQkJCV9fYXNtZXEoIiUyIiwg IngyIikKLQkJCV9fYXNtZXEoIiUzIiwgIngzIikKLQkJCSJodmMJIzBcbiIKLQkJOiAiK3IiIChm dW5jdGlvbl9pZCkKLQkJOiAiciIgKGFyZzApLCAiciIgKGFyZzEpLCAiciIgKGFyZzIpKTsKLQot CXJldHVybiBmdW5jdGlvbl9pZDsKLX0KLQotc3RhdGljIG5vaW5saW5lIGludCBfX2ludm9rZV9w c2NpX2ZuX3NtYyh1NjQgZnVuY3Rpb25faWQsIHU2NCBhcmcwLCB1NjQgYXJnMSwKLQkJCQkJIHU2 NCBhcmcyKQotewotCWFzbSB2b2xhdGlsZSgKLQkJCV9fYXNtZXEoIiUwIiwgIngwIikKLQkJCV9f YXNtZXEoIiUxIiwgIngxIikKLQkJCV9fYXNtZXEoIiUyIiwgIngyIikKLQkJCV9fYXNtZXEoIiUz IiwgIngzIikKLQkJCSJzbWMJIzBcbiIKLQkJOiAiK3IiIChmdW5jdGlvbl9pZCkKLQkJOiAiciIg KGFyZzApLCAiciIgKGFyZzEpLCAiciIgKGFyZzIpKTsKLQotCXJldHVybiBmdW5jdGlvbl9pZDsK LX0KLQogc3RhdGljIGludCBwc2NpX2dldF92ZXJzaW9uKHZvaWQpCiB7CiAJaW50IGVycjsKZGlm ZiAtLWdpdCBhL2FyY2gvYXJtNjQvbW0vcHJvYy1tYWNyb3MuUyBiL2FyY2gvYXJtNjQvbW0vcHJv Yy1tYWNyb3MuUwppbmRleCAwMDVkMjllMjk3N2QuLjk5ZDJiNWJjNjYwNiAxMDA2NDQKLS0tIGEv YXJjaC9hcm02NC9tbS9wcm9jLW1hY3Jvcy5TCisrKyBiL2FyY2gvYXJtNjQvbW0vcHJvYy1tYWNy b3MuUwpAQCAtNTIsMyArNTIsMTUgQEAKIAltb3YJXHJlZywgIzQJCQkvLyBieXRlcyBwZXIgd29y ZAogCWxzbAlccmVnLCBccmVnLCBcdG1wCQkvLyBhY3R1YWwgY2FjaGUgbGluZSBzaXplCiAJLmVu ZG0KKworLyoKKyAqIHJlc2V0X3BtdXNlcmVucl9lbDAgLSByZXNldCBQTVVTRVJFTlJfRUwwIGlm IFBNVXYzIHByZXNlbnQKKyAqLworCS5tYWNybwlyZXNldF9wbXVzZXJlbnJfZWwwLCB0bXByZWcK KwltcnMJXHRtcHJlZywgaWRfYWE2NGRmcjBfZWwxCS8vIENoZWNrIElEX0FBNjRERlIwX0VMMSBQ TVVWZXIKKwlzYmZ4CVx0bXByZWcsIFx0bXByZWcsICM4LCAjNAorCWNtcAlcdG1wcmVnLCAjMQkJ CS8vIFNraXAgaWYgbm8gUE1VIHByZXNlbnQKKwliLmx0CTkwMDBmCisJbXNyCXBtdXNlcmVucl9l bDAsIHh6cgkJLy8gRGlzYWJsZSBQTVUgYWNjZXNzIGZyb20gRUwwCis5MDAwOgorCS5lbmRtCmRp ZmYgLS1naXQgYS9hcmNoL2FybTY0L21tL3Byb2MuUyBiL2FyY2gvYXJtNjQvbW0vcHJvYy5TCmlu ZGV4IDdiOWMyZTY3MzU3Ny4uZGMzNDQ0MmZmNzI4IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L21t L3Byb2MuUworKysgYi9hcmNoL2FybTY0L21tL3Byb2MuUwpAQCAtMTQ5LDcgKzE0OSw3IEBAIEVO VFJZKGNwdV9kb19yZXN1bWUpCiAJICovCiAJdWJmeAl4MTEsIHgxMSwgIzEsICMxCiAJbXNyCW9z bGFyX2VsMSwgeDExCi0JbXNyCXBtdXNlcmVucl9lbDAsIHh6cgkJLy8gRGlzYWJsZSBQTVUgYWNj ZXNzIGZyb20gRUwwCisJcmVzZXRfcG11c2VyZW5yX2VsMCB4MAkJCS8vIERpc2FibGUgUE1VIGFj Y2VzcyBmcm9tIEVMMAogCW1vdgl4MCwgeDEyCiAJZHNiCW5zaAkJLy8gTWFrZSBzdXJlIGxvY2Fs IHRsYiBpbnZhbGlkYXRpb24gY29tcGxldGVkCiAJaXNiCkBAIC0xODksNyArMTg5LDcgQEAgRU5U UlkoX19jcHVfc2V0dXApCiAJbXNyCWNwYWNyX2VsMSwgeDAJCQkvLyBFbmFibGUgRlAvQVNJTUQK IAltb3YJeDAsICMxIDw8IDEyCQkJLy8gUmVzZXQgbWRzY3JfZWwxIGFuZCBkaXNhYmxlCiAJbXNy CW1kc2NyX2VsMSwgeDAJCQkvLyBhY2Nlc3MgdG8gdGhlIERDQyBmcm9tIEVMMAotCW1zcglwbXVz ZXJlbnJfZWwwLCB4enIJCS8vIERpc2FibGUgUE1VIGFjY2VzcyBmcm9tIEVMMAorCXJlc2V0X3Bt dXNlcmVucl9lbDAgeDAJCQkvLyBEaXNhYmxlIFBNVSBhY2Nlc3MgZnJvbSBFTDAKIAkvKgogCSAq IE1lbW9yeSByZWdpb24gYXR0cmlidXRlcyBmb3IgTFBBRToKIAkgKgpkaWZmIC0tZ2l0IGEvYXJj aC9wYXJpc2Mva2VybmVsL3N5c2NhbGwuUyBiL2FyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxsLlMK aW5kZXggMGI4ZDI2ZDNiYTQzLi43MTA1NjEwYWMzZmQgMTAwNjQ0Ci0tLSBhL2FyY2gvcGFyaXNj L2tlcm5lbC9zeXNjYWxsLlMKKysrIGIvYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGwuUwpAQCAt MzQyLDcgKzM0Miw3IEBAIHRyYWNlc3lzX25leHQ6CiAJc3R3ICAgICAlcjIxLCAtNTYoJXIzMCkg ICAgICAgICAgICAgICAgIC8qIDZ0aCBhcmd1bWVudCAqLwogI2VuZGlmCiAKLQljb21pY2xyLD4+ PQlfX05SX0xpbnV4X3N5c2NhbGxzLCAlcjIwLCAlcjAKKwljb21pY2xyLD4+CV9fTlJfTGludXhf c3lzY2FsbHMsICVyMjAsICVyMAogCWIsbgkuTHN5c2NhbGxfbm9zeXMKIAogCUxEUkVHWCAgJXIy MCglcjE5KSwgJXIxOQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3dvcmQt YXQtYS10aW1lLmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vd29yZC1hdC1hLXRpbWUuaApp bmRleCA5YTVjOTI4YmIzYzYuLjY3YWYxZjhiNDU4MyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBj L2luY2x1ZGUvYXNtL3dvcmQtYXQtYS10aW1lLmgKKysrIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUv YXNtL3dvcmQtYXQtYS10aW1lLmgKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIGlubGluZSB1bnNp Z25lZCBsb25nIGZpbmRfemVybyh1bnNpZ25lZCBsb25nIG1hc2spCiAJICAgICAiYW5kYyAlMSwl MSwlMlxuXHQiCiAJICAgICAicG9wY250ZCAlMCwlMSIKIAkgICAgIDogIj1yIiAobGVhZGluZ196 ZXJvX2JpdHMpLCAiPSZyIiAodHJhaWxpbmdfemVyb19iaXRfbWFzaykKLQkgICAgIDogInIiICht YXNrKSk7CisJICAgICA6ICJiIiAobWFzaykpOwogCXJldHVybiBsZWFkaW5nX3plcm9fYml0cyA+ PiAzOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS91YXBpL2FzbS9jcHV0 YWJsZS5oIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvdWFwaS9hc20vY3B1dGFibGUuaAppbmRleCBk ZTJjMGU0ZWUxYWEuLjY3ZGU4MGE4ZTE3OCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1 ZGUvdWFwaS9hc20vY3B1dGFibGUuaAorKysgYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS91YXBpL2Fz bS9jcHV0YWJsZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjZGVmaW5lIFBQQ19GRUFUVVJFX1BTRVJJ RVNfUEVSRk1PTl9DT01QQVQgXAogCQkJCQkweDAwMDAwMDQwCiAKKy8qIFJlc2VydmVkIC0gZG8g bm90IHVzZQkJMHgwMDAwMDAwNCAqLwogI2RlZmluZSBQUENfRkVBVFVSRV9UUlVFX0xFCQkweDAw MDAwMDAyCiAjZGVmaW5lIFBQQ19GRUFUVVJFX1BQQ19MRQkJMHgwMDAwMDAwMQogCmRpZmYgLS1n aXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcHJv bS5jCmluZGV4IGI2OTRiMDczMDk3MS4uYjc2ZjNjM2ZjZTMyIDEwMDY0NAotLS0gYS9hcmNoL3Bv d2VycGMva2VybmVsL3Byb20uYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYwpAQCAt MTYwLDcgKzE2MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgaWJtX3BhX2ZlYXR1cmUgewogCXtDUFVfRlRS X05PRVhFQ1VURSwgMCwgMCwJMCwgNiwgMH0sCiAJe0NQVV9GVFJfTk9EU0lTUkFMSUdOLCAwLCAw LAkxLCAxLCAxfSwKIAl7MCwgTU1VX0ZUUl9DSV9MQVJHRV9QQUdFLCAwLAkxLCAyLCAwfSwKLQl7 Q1BVX0ZUUl9SRUFMX0xFLCBQUENfRkVBVFVSRV9UUlVFX0xFLCA1LCAwLCAwfSwKKwl7Q1BVX0ZU Ul9SRUFMX0xFLCAwLCBQUENfRkVBVFVSRV9UUlVFX0xFLCA1LCAwLCAwfSwKIH07CiAKIHN0YXRp YyB2b2lkIF9faW5pdCBzY2FuX2ZlYXR1cmVzKHVuc2lnbmVkIGxvbmcgbm9kZSwgY29uc3QgdW5z aWduZWQgY2hhciAqZnRycywKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9odWdl dGxiLmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vaHVnZXRsYi5oCmluZGV4IDExZWFlNWY1NWI3 MC4uOTc4N2I2MWUwNzU4IDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vaHVnZXRs Yi5oCisrKyBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9odWdldGxiLmgKQEAgLTE0LDYgKzE0LDcg QEAKIAogI2RlZmluZSBpc19odWdlcGFnZV9vbmx5X3JhbmdlKG1tLCBhZGRyLCBsZW4pCTAKICNk ZWZpbmUgaHVnZXRsYl9mcmVlX3BnZF9yYW5nZQkJCWZyZWVfcGdkX3JhbmdlCisjZGVmaW5lIGh1 Z2VwYWdlc19zdXBwb3J0ZWQoKQkJCShNQUNISU5FX0hBU19IUEFHRSkKIAogdm9pZCBzZXRfaHVn ZV9wdGVfYXQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkciwKIAkJICAg ICBwdGVfdCAqcHRlcCwgcHRlX3QgcHRlKTsKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9saWIvc3Bp bmxvY2suYyBiL2FyY2gvczM5MC9saWIvc3BpbmxvY2suYwppbmRleCA1YjBlNDQ1YmMzZjMuLjli ZWIxODZiM2FmNSAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2xpYi9zcGlubG9jay5jCisrKyBiL2Fy Y2gvczM5MC9saWIvc3BpbmxvY2suYwpAQCAtNzUsNiArNzUsNyBAQCB2b2lkIGFyY2hfc3Bpbl9s b2NrX3dhaXRfZmxhZ3MoYXJjaF9zcGlubG9ja190ICpscCwgdW5zaWduZWQgbG9uZyBmbGFncykK IAkJCWlmIChfcmF3X2NvbXBhcmVfYW5kX3N3YXAoJmxwLT5sb2NrLCAwLCBjcHUpKQogCQkJCXJl dHVybjsKIAkJCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKKwkJCWNvbnRpbnVlOwogCQl9CiAJ CS8qIENoZWNrIGlmIHRoZSBsb2NrIG93bmVyIGlzIHJ1bm5pbmcuICovCiAJCWlmICghc21wX3Zj cHVfc2NoZWR1bGVkKH5vd25lcikpIHsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNt L2h1Z2V0bGIuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2h1Z2V0bGIuaAppbmRleCA2OGMwNTM5 OGJiYTkuLjdhYWRkM2NlYTg0MyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vaHVn ZXRsYi5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2h1Z2V0bGIuaApAQCAtNCw2ICs0LDcg QEAKICNpbmNsdWRlIDxhc20vcGFnZS5oPgogI2luY2x1ZGUgPGFzbS1nZW5lcmljL2h1Z2V0bGIu aD4KIAorI2RlZmluZSBodWdlcGFnZXNfc3VwcG9ydGVkKCkgY3B1X2hhc19wc2UKIAogc3RhdGlj IGlubGluZSBpbnQgaXNfaHVnZXBhZ2Vfb25seV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwK IAkJCQkJIHVuc2lnbmVkIGxvbmcgYWRkciwKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9z eXNmYl9lZmkuYyBiL2FyY2gveDg2L2tlcm5lbC9zeXNmYl9lZmkuYwppbmRleCBiMjg1ZDRlOGM2 OGUuLjVkYTkyNGJiZjBhMCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL3N5c2ZiX2VmaS5j CisrKyBiL2FyY2gveDg2L2tlcm5lbC9zeXNmYl9lZmkuYwpAQCAtMTA2LDE0ICsxMDYsMjQgQEAg c3RhdGljIGludCBfX2luaXQgZWZpZmJfc2V0X3N5c3RlbShjb25zdCBzdHJ1Y3QgZG1pX3N5c3Rl bV9pZCAqaWQpCiAJCQkJCWNvbnRpbnVlOwogCQkJCWZvciAoaSA9IDA7IGkgPCBERVZJQ0VfQ09V TlRfUkVTT1VSQ0U7IGkrKykgewogCQkJCQlyZXNvdXJjZV9zaXplX3Qgc3RhcnQsIGVuZDsKKwkJ CQkJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCQkJCQlmbGFncyA9IHBjaV9yZXNvdXJjZV9mbGFn cyhkZXYsIGkpOworCQkJCQlpZiAoIShmbGFncyAmIElPUkVTT1VSQ0VfTUVNKSkKKwkJCQkJCWNv bnRpbnVlOworCisJCQkJCWlmIChmbGFncyAmIElPUkVTT1VSQ0VfVU5TRVQpCisJCQkJCQljb250 aW51ZTsKKworCQkJCQlpZiAocGNpX3Jlc291cmNlX2xlbihkZXYsIGkpID09IDApCisJCQkJCQlj b250aW51ZTsKIAogCQkJCQlzdGFydCA9IHBjaV9yZXNvdXJjZV9zdGFydChkZXYsIGkpOwotCQkJ CQlpZiAoc3RhcnQgPT0gMCkKLQkJCQkJCWJyZWFrOwogCQkJCQllbmQgPSBwY2lfcmVzb3VyY2Vf ZW5kKGRldiwgaSk7CiAJCQkJCWlmIChzY3JlZW5faW5mby5sZmJfYmFzZSA+PSBzdGFydCAmJgog CQkJCQkgICAgc2NyZWVuX2luZm8ubGZiX2Jhc2UgPCBlbmQpIHsKIAkJCQkJCWZvdW5kX2JhciA9 IDE7CisJCQkJCQlicmVhazsKIAkJCQkJfQogCQkJCX0KIAkJCX0KZGlmZiAtLWdpdCBhL2FyY2gv eDg2L2tlcm5lbC90c2NfbXNyLmMgYi9hcmNoL3g4Ni9rZXJuZWwvdHNjX21zci5jCmluZGV4IDky YWU2YWNhYzhhNy4uNmFhMGY0ZDllZWE2IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvdHNj X21zci5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC90c2NfbXNyLmMKQEAgLTkyLDcgKzkyLDcgQEAg dW5zaWduZWQgbG9uZyB0cnlfbXNyX2NhbGlicmF0ZV90c2Modm9pZCkKIAogCWlmIChmcmVxX2Rl c2NfdGFibGVzW2NwdV9pbmRleF0ubXNyX3BsYXQpIHsKIAkJcmRtc3IoTVNSX1BMQVRGT1JNX0lO Rk8sIGxvLCBoaSk7Ci0JCXJhdGlvID0gKGxvID4+IDgpICYgMHgxZjsKKwkJcmF0aW8gPSAobG8g Pj4gOCkgJiAweGZmOwogCX0gZWxzZSB7CiAJCXJkbXNyKE1TUl9JQTMyX1BFUkZfU1RBVFVTLCBs bywgaGkpOwogCQlyYXRpbyA9IChoaSA+PiA4KSAmIDB4MWY7CmRpZmYgLS1naXQgYS9hcmNoL3g4 Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmMKaW5kZXggMjZhNDU0MWUxOTBhLi5iYTZm OTgyMmM0NzQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS94ODYuYworKysgYi9hcmNoL3g4Ni9r dm0veDg2LmMKQEAgLTYyNiw3ICs2MjYsNiBAQCBpbnQgX19rdm1fc2V0X3hjcihzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0IHhjcikKIAlpZiAoKCEoeGNyMCAmIFhTVEFURV9C TkRSRUdTKSkgIT0gKCEoeGNyMCAmIFhTVEFURV9CTkRDU1IpKSkKIAkJcmV0dXJuIDE7CiAKLQlr dm1fcHV0X2d1ZXN0X3hjcjAodmNwdSk7CiAJdmNwdS0+YXJjaC54Y3IwID0geGNyMDsKIAogCWlm ICgoeGNyMCBeIG9sZF94Y3IwKSAmIFhTVEFURV9FWFRFTkRfTUFTSykKQEAgLTYwNzIsOCArNjA3 MSw2IEBAIHN0YXRpYyBpbnQgdmNwdV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUp CiAJa3ZtX3g4Nl9vcHMtPnByZXBhcmVfZ3Vlc3Rfc3dpdGNoKHZjcHUpOwogCWlmICh2Y3B1LT5m cHVfYWN0aXZlKQogCQlrdm1fbG9hZF9ndWVzdF9mcHUodmNwdSk7Ci0Ja3ZtX2xvYWRfZ3Vlc3Rf eGNyMCh2Y3B1KTsKLQogCXZjcHUtPm1vZGUgPSBJTl9HVUVTVF9NT0RFOwogCiAJc3JjdV9yZWFk X3VubG9jaygmdmNwdS0+a3ZtLT5zcmN1LCB2Y3B1LT5zcmN1X2lkeCk7CkBAIC02MDk2LDYgKzYw OTMsOCBAQCBzdGF0aWMgaW50IHZjcHVfZW50ZXJfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1 KQogCQlnb3RvIGNhbmNlbF9pbmplY3Rpb247CiAJfQogCisJa3ZtX2xvYWRfZ3Vlc3RfeGNyMCh2 Y3B1KTsKKwogCWlmIChyZXFfaW1tZWRpYXRlX2V4aXQpCiAJCXNtcF9zZW5kX3Jlc2NoZWR1bGUo dmNwdS0+Y3B1KTsKIApAQCAtNjE0NCw2ICs2MTQzLDggQEAgc3RhdGljIGludCB2Y3B1X2VudGVy X2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAl2Y3B1LT5tb2RlID0gT1VUU0lERV9HVUVT VF9NT0RFOwogCXNtcF93bWIoKTsKIAorCWt2bV9wdXRfZ3Vlc3RfeGNyMCh2Y3B1KTsKKwogCS8q IEludGVycnVwdCBpcyBlbmFibGVkIGJ5IGhhbmRsZV9leHRlcm5hbF9pbnRyKCkgKi8KIAlrdm1f eDg2X29wcy0+aGFuZGxlX2V4dGVybmFsX2ludHIodmNwdSk7CiAKQEAgLTY3ODIsNyArNjc4Myw2 IEBAIHZvaWQga3ZtX2xvYWRfZ3Vlc3RfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkgKiBh bmQgYXNzdW1lIGhvc3Qgd291bGQgdXNlIGFsbCBhdmFpbGFibGUgYml0cy4KIAkgKiBHdWVzdCB4 Y3IwIHdvdWxkIGJlIGxvYWRlZCBsYXRlci4KIAkgKi8KLQlrdm1fcHV0X2d1ZXN0X3hjcjAodmNw dSk7CiAJdmNwdS0+Z3Vlc3RfZnB1X2xvYWRlZCA9IDE7CiAJX19rZXJuZWxfZnB1X2JlZ2luKCk7 CiAJZnB1X3Jlc3RvcmVfY2hlY2tpbmcoJnZjcHUtPmFyY2guZ3Vlc3RfZnB1KTsKQEAgLTY3OTEs OCArNjc5MSw2IEBAIHZvaWQga3ZtX2xvYWRfZ3Vlc3RfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNw dSkKIAogdm9pZCBrdm1fcHV0X2d1ZXN0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7Ci0J a3ZtX3B1dF9ndWVzdF94Y3IwKHZjcHUpOwotCiAJaWYgKCF2Y3B1LT5ndWVzdF9mcHVfbG9hZGVk KQogCQlyZXR1cm47CiAKZGlmZiAtLWdpdCBhL2NyeXB0by9haGFzaC5jIGIvY3J5cHRvL2FoYXNo LmMKaW5kZXggNGY1ZTBlYjM1NDdmLi44YTI1ZmRhZmE5N2YgMTAwNjQ0Ci0tLSBhL2NyeXB0by9h aGFzaC5jCisrKyBiL2NyeXB0by9haGFzaC5jCkBAIC02OCw4ICs2OCw5IEBAIHN0YXRpYyBpbnQg aGFzaF93YWxrX25ld19lbnRyeShzdHJ1Y3QgY3J5cHRvX2hhc2hfd2FsayAqd2FsaykKIAlzdHJ1 Y3Qgc2NhdHRlcmxpc3QgKnNnOwogCiAJc2cgPSB3YWxrLT5zZzsKLQl3YWxrLT5wZyA9IHNnX3Bh Z2Uoc2cpOwogCXdhbGstPm9mZnNldCA9IHNnLT5vZmZzZXQ7CisJd2Fsay0+cGcgPSBzZ19wYWdl KHdhbGstPnNnKSArICh3YWxrLT5vZmZzZXQgPj4gUEFHRV9TSElGVCk7CisJd2Fsay0+b2Zmc2V0 ID0gb2Zmc2V0X2luX3BhZ2Uod2Fsay0+b2Zmc2V0KTsKIAl3YWxrLT5lbnRyeWxlbiA9IHNnLT5s ZW5ndGg7CiAKIAlpZiAod2Fsay0+ZW50cnlsZW4gPiB3YWxrLT50b3RhbCkKZGlmZiAtLWdpdCBh L2RyaXZlcnMvYWNwaS9hY3BpY2EvZHNtZXRob2QuYyBiL2RyaXZlcnMvYWNwaS9hY3BpY2EvZHNt ZXRob2QuYwppbmRleCAzYzdmNzM3OGI5NGQuLjg2ZGRkMGIzYTdiZiAxMDA2NDQKLS0tIGEvZHJp dmVycy9hY3BpL2FjcGljYS9kc21ldGhvZC5jCisrKyBiL2RyaXZlcnMvYWNwaS9hY3BpY2EvZHNt ZXRob2QuYwpAQCAtNDEyLDYgKzQxMiw5IEBAIGFjcGlfZHNfYmVnaW5fbWV0aG9kX2V4ZWN1dGlv bihzdHJ1Y3QgYWNwaV9uYW1lc3BhY2Vfbm9kZSAqbWV0aG9kX25vZGUsCiAJCQkJb2JqX2Rlc2Mt Pm1ldGhvZC5tdXRleC0+bXV0ZXguCiAJCQkJICAgIG9yaWdpbmFsX3N5bmNfbGV2ZWwgPQogCQkJ CSAgICBvYmpfZGVzYy0+bWV0aG9kLm11dGV4LT5tdXRleC5zeW5jX2xldmVsOworCisJCQkJb2Jq X2Rlc2MtPm1ldGhvZC5tdXRleC0+bXV0ZXgudGhyZWFkX2lkID0KKwkJCQkgICAgYWNwaV9vc19n ZXRfdGhyZWFkX2lkKCk7CiAJCQl9CiAJCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvbGli YWhjaS5jIGIvZHJpdmVycy9hdGEvbGliYWhjaS5jCmluZGV4IDliODJkMmIxYWZkZi4uMjAxMjEy MmQ0YzRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9saWJhaGNpLmMKKysrIGIvZHJpdmVycy9h dGEvbGliYWhjaS5jCkBAIC00NzIsNiArNDcyLDcgQEAgdm9pZCBhaGNpX3NhdmVfaW5pdGlhbF9j b25maWcoc3RydWN0IGRldmljZSAqZGV2LAogCQlkZXZfaW5mbyhkZXYsICJmb3JjaW5nIHBvcnRf bWFwIDB4JXggLT4gMHgleFxuIiwKIAkJCSBwb3J0X21hcCwgZm9yY2VfcG9ydF9tYXApOwogCQlw b3J0X21hcCA9IGZvcmNlX3BvcnRfbWFwOworCQlocHJpdi0+c2F2ZWRfcG9ydF9tYXAgPSBwb3J0 X21hcDsKIAl9CiAKIAlpZiAobWFza19wb3J0X21hcCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9i YXNlL3JlZ21hcC9yZWdtYXAtc3BtaS5jIGIvZHJpdmVycy9iYXNlL3JlZ21hcC9yZWdtYXAtc3Bt aS5jCmluZGV4IGQ3MDI2ZGMzMzM4OC4uYjM5NGFhZWYzODY3IDEwMDY0NAotLS0gYS9kcml2ZXJz L2Jhc2UvcmVnbWFwL3JlZ21hcC1zcG1pLmMKKysrIGIvZHJpdmVycy9iYXNlL3JlZ21hcC9yZWdt YXAtc3BtaS5jCkBAIC0xNTMsNyArMTUzLDcgQEAgc3RhdGljIGludCByZWdtYXBfc3BtaV9leHRf cmVhZCh2b2lkICpjb250ZXh0LAogCXdoaWxlICh2YWxfc2l6ZSkgewogCQlsZW4gPSBtaW5fdChz aXplX3QsIHZhbF9zaXplLCA4KTsKIAotCQllcnIgPSBzcG1pX2V4dF9yZWdpc3Rlcl9yZWFkbChj b250ZXh0LCBhZGRyLCB2YWwsIHZhbF9zaXplKTsKKwkJZXJyID0gc3BtaV9leHRfcmVnaXN0ZXJf cmVhZGwoY29udGV4dCwgYWRkciwgdmFsLCBsZW4pOwogCQlpZiAoZXJyKQogCQkJZ290byBlcnJf b3V0OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3JiZC5jIGIvZHJpdmVycy9ibG9jay9y YmQuYwppbmRleCAzNGNkNzBkMDZkM2IuLjZlZWEzNWIwNWY2YSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ibG9jay9yYmQuYworKysgYi9kcml2ZXJzL2Jsb2NrL3JiZC5jCkBAIC01MjgsNyArNTI4LDYg QEAgc3RhdGljIGludCBfcmJkX2Rldl92Ml9zbmFwX3NpemUoc3RydWN0IHJiZF9kZXZpY2UgKnJi ZF9kZXYsIHU2NCBzbmFwX2lkLAogCQkJCXU4ICpvcmRlciwgdTY0ICpzbmFwX3NpemUpOwogc3Rh dGljIGludCBfcmJkX2Rldl92Ml9zbmFwX2ZlYXR1cmVzKHN0cnVjdCByYmRfZGV2aWNlICpyYmRf ZGV2LCB1NjQgc25hcF9pZCwKIAkJdTY0ICpzbmFwX2ZlYXR1cmVzKTsKLXN0YXRpYyB1NjQgcmJk X3NuYXBfaWRfYnlfbmFtZShzdHJ1Y3QgcmJkX2RldmljZSAqcmJkX2RldiwgY29uc3QgY2hhciAq bmFtZSk7CiAKIHN0YXRpYyBpbnQgcmJkX29wZW4oc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwg Zm1vZGVfdCBtb2RlKQogewpAQCAtMjk1Nyw5ICsyOTU2LDYgQEAgc3RhdGljIHZvaWQgcmJkX3dh dGNoX2NiKHU2NCB2ZXIsIHU2NCBub3RpZnlfaWQsIHU4IG9wY29kZSwgdm9pZCAqZGF0YSkKIAlz dHJ1Y3QgcmJkX2RldmljZSAqcmJkX2RldiA9IChzdHJ1Y3QgcmJkX2RldmljZSAqKWRhdGE7CiAJ aW50IHJldDsKIAotCWlmICghcmJkX2RldikKLQkJcmV0dXJuOwotCiAJZG91dCgiJXM6IFwiJXNc IiBub3RpZnlfaWQgJWxsdSBvcGNvZGUgJXVcbiIsIF9fZnVuY19fLAogCQlyYmRfZGV2LT5oZWFk ZXJfbmFtZSwgKHVuc2lnbmVkIGxvbmcgbG9uZylub3RpZnlfaWQsCiAJCSh1bnNpZ25lZCBpbnQp b3Bjb2RlKTsKQEAgLTMwOTksNiArMzA5NSw5IEBAIG91dF9jYW5jZWw6CiAJY2VwaF9vc2RjX2Nh bmNlbF9ldmVudChyYmRfZGV2LT53YXRjaF9ldmVudCk7CiAJcmJkX2Rldi0+d2F0Y2hfZXZlbnQg PSBOVUxMOwogCisJZG91dCgiJXMgZmx1c2hpbmcgbm90aWZpZXNcbiIsIF9fZnVuY19fKTsKKwlj ZXBoX29zZGNfZmx1c2hfbm90aWZpZXMoJnJiZF9kZXYtPnJiZF9jbGllbnQtPmNsaWVudC0+b3Nk Yyk7CisKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0zNTM0LDIxICszNTMzLDE0IEBAIHN0YXRpYyB2 b2lkIHJiZF9leGlzdHNfdmFsaWRhdGUoc3RydWN0IHJiZF9kZXZpY2UgKnJiZF9kZXYpCiBzdGF0 aWMgdm9pZCByYmRfZGV2X3VwZGF0ZV9zaXplKHN0cnVjdCByYmRfZGV2aWNlICpyYmRfZGV2KQog ewogCXNlY3Rvcl90IHNpemU7Ci0JYm9vbCByZW1vdmluZzsKIAogCS8qCi0JICogRG9uJ3QgaG9s ZCB0aGUgbG9jayB3aGlsZSBkb2luZyBkaXNrIG9wZXJhdGlvbnMsCi0JICogb3IgbG9jayBvcmRl cmluZyB3aWxsIGNvbmZsaWN0IHdpdGggdGhlIGJkZXYgbXV0ZXggdmlhOgotCSAqIHJiZF9hZGQo KSAtPiBibGtkZXZfZ2V0KCkgLT4gcmJkX29wZW4oKQorCSAqIElmIEVYSVNUUyBpcyBub3Qgc2V0 LCByYmRfZGV2LT5kaXNrIG1heSBiZSBOVUxMLCBzbyBkb24ndAorCSAqIHRyeSB0byB1cGRhdGUg aXRzIHNpemUuICBJZiBSRU1PVklORyBpcyBzZXQsIHVwZGF0aW5nIHNpemUKKwkgKiBpcyBqdXN0 IHVzZWxlc3Mgd29yayBzaW5jZSB0aGUgZGV2aWNlIGNhbid0IGJlIG9wZW5lZC4KIAkgKi8KLQlz cGluX2xvY2tfaXJxKCZyYmRfZGV2LT5sb2NrKTsKLQlyZW1vdmluZyA9IHRlc3RfYml0KFJCRF9E RVZfRkxBR19SRU1PVklORywgJnJiZF9kZXYtPmZsYWdzKTsKLQlzcGluX3VubG9ja19pcnEoJnJi ZF9kZXYtPmxvY2spOwotCS8qCi0JICogSWYgdGhlIGRldmljZSBpcyBiZWluZyByZW1vdmVkLCBy YmRfZGV2LT5kaXNrIGhhcwotCSAqIGJlZW4gZGVzdHJveWVkLCBzbyBkb24ndCB0cnkgdG8gdXBk YXRlIGl0cyBzaXplCi0JICovCi0JaWYgKCFyZW1vdmluZykgeworCWlmICh0ZXN0X2JpdChSQkRf REVWX0ZMQUdfRVhJU1RTLCAmcmJkX2Rldi0+ZmxhZ3MpICYmCisJICAgICF0ZXN0X2JpdChSQkRf REVWX0ZMQUdfUkVNT1ZJTkcsICZyYmRfZGV2LT5mbGFncykpIHsKIAkJc2l6ZSA9IChzZWN0b3Jf dClyYmRfZGV2LT5tYXBwaW5nLnNpemUgLyBTRUNUT1JfU0laRTsKIAkJZG91dCgic2V0dGluZyBz aXplIHRvICVsbHUgc2VjdG9ycyIsICh1bnNpZ25lZCBsb25nIGxvbmcpc2l6ZSk7CiAJCXNldF9j YXBhY2l0eShyYmRfZGV2LT5kaXNrLCBzaXplKTsKQEAgLTUwNzgsNiArNTA3MCwxMCBAQCBvdXRf ZXJyOgogCXJldHVybiByZXQ7CiB9CiAKKy8qCisgKiByYmRfZGV2LT5oZWFkZXJfcndzZW0gbXVz dCBiZSBsb2NrZWQgZm9yIHdyaXRlIGFuZCB3aWxsIGJlIHVubG9ja2VkCisgKiB1cG9uIHJldHVy bi4KKyAqLwogc3RhdGljIGludCByYmRfZGV2X2RldmljZV9zZXR1cChzdHJ1Y3QgcmJkX2Rldmlj ZSAqcmJkX2RldikKIHsKIAlpbnQgcmV0OwpAQCAtNTA4Niw3ICs1MDgyLDcgQEAgc3RhdGljIGlu dCByYmRfZGV2X2RldmljZV9zZXR1cChzdHJ1Y3QgcmJkX2RldmljZSAqcmJkX2RldikKIAogCXJl dCA9IHJiZF9kZXZfaWRfZ2V0KHJiZF9kZXYpOwogCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJ CWdvdG8gZXJyX291dF91bmxvY2s7CiAKIAlCVUlMRF9CVUdfT04oREVWX05BTUVfTEVOCiAJCQk8 IHNpemVvZiAoUkJEX0RSVl9OQU1FKSArIE1BWF9JTlRfRk9STUFUX1dJRFRIKTsKQEAgLTUxMzMs OCArNTEyOSw5IEBAIHN0YXRpYyBpbnQgcmJkX2Rldl9kZXZpY2Vfc2V0dXAoc3RydWN0IHJiZF9k ZXZpY2UgKnJiZF9kZXYpCiAJLyogRXZlcnl0aGluZydzIHJlYWR5LiAgQW5ub3VuY2UgdGhlIGRp c2sgdG8gdGhlIHdvcmxkLiAqLwogCiAJc2V0X2JpdChSQkRfREVWX0ZMQUdfRVhJU1RTLCAmcmJk X2Rldi0+ZmxhZ3MpOwotCWFkZF9kaXNrKHJiZF9kZXYtPmRpc2spOworCXVwX3dyaXRlKCZyYmRf ZGV2LT5oZWFkZXJfcndzZW0pOwogCisJYWRkX2Rpc2socmJkX2Rldi0+ZGlzayk7CiAJcHJfaW5m bygiJXM6IGFkZGVkIHdpdGggc2l6ZSAweCVsbHhcbiIsIHJiZF9kZXYtPmRpc2stPmRpc2tfbmFt ZSwKIAkJKHVuc2lnbmVkIGxvbmcgbG9uZykgcmJkX2Rldi0+bWFwcGluZy5zaXplKTsKIApAQCAt NTE1Myw2ICs1MTUwLDggQEAgZXJyX291dF9ibGtkZXY6CiBlcnJfb3V0X2lkOgogCXJiZF9kZXZf aWRfcHV0KHJiZF9kZXYpOwogCXJiZF9kZXZfbWFwcGluZ19jbGVhcihyYmRfZGV2KTsKK2Vycl9v dXRfdW5sb2NrOgorCXVwX3dyaXRlKCZyYmRfZGV2LT5oZWFkZXJfcndzZW0pOwogCiAJcmV0dXJu IHJldDsKIH0KQEAgLTUzMTUsNiArNTMxNCw3IEBAIHN0YXRpYyBzc2l6ZV90IGRvX3JiZF9hZGQo c3RydWN0IGJ1c190eXBlICpidXMsCiAJcmJkYyA9IE5VTEw7CQkvKiByYmRfZGV2IG5vdyBvd25z IHRoaXMgKi8KIAlzcGVjID0gTlVMTDsJCS8qIHJiZF9kZXYgbm93IG93bnMgdGhpcyAqLwogCisJ ZG93bl93cml0ZSgmcmJkX2Rldi0+aGVhZGVyX3J3c2VtKTsKIAlyYyA9IHJiZF9kZXZfaW1hZ2Vf cHJvYmUocmJkX2RldiwgMCk7CiAJaWYgKHJjIDwgMCkKIAkJZ290byBlcnJfb3V0X3JiZF9kZXY7 CkBAIC01MzQwLDYgKzUzNDAsNyBAQCBzdGF0aWMgc3NpemVfdCBkb19yYmRfYWRkKHN0cnVjdCBi dXNfdHlwZSAqYnVzLAogCXJldHVybiBjb3VudDsKIAogZXJyX291dF9yYmRfZGV2OgorCXVwX3dy aXRlKCZyYmRfZGV2LT5oZWFkZXJfcndzZW0pOwogCXJiZF9kZXZfZGVzdHJveShyYmRfZGV2KTsK IGVycl9vdXRfY2xpZW50OgogCXJiZF9wdXRfY2xpZW50KHJiZGMpOwpAQCAtNTQ1MywxMiArNTQ1 NCw2IEBAIHN0YXRpYyBzc2l6ZV90IGRvX3JiZF9yZW1vdmUoc3RydWN0IGJ1c190eXBlICpidXMs CiAJCXJldHVybiByZXQ7CiAKIAlyYmRfZGV2X2hlYWRlcl91bndhdGNoX3N5bmMocmJkX2Rldik7 Ci0JLyoKLQkgKiBmbHVzaCByZW1haW5pbmcgd2F0Y2ggY2FsbGJhY2tzIC0gdGhlc2UgbXVzdCBi ZSBjb21wbGV0ZQotCSAqIGJlZm9yZSB0aGUgb3NkX2NsaWVudCBpcyBzaHV0ZG93bgotCSAqLwot CWRvdXQoIiVzOiBmbHVzaGluZyBub3RpZmllcyIsIF9fZnVuY19fKTsKLQljZXBoX29zZGNfZmx1 c2hfbm90aWZpZXMoJnJiZF9kZXYtPnJiZF9jbGllbnQtPmNsaWVudC0+b3NkYyk7CiAKIAkvKgog CSAqIERvbid0IGZyZWUgYW55dGhpbmcgZnJvbSByYmRfZGV2LT5kaXNrIHVudGlsIGFmdGVyIGFs bApkaWZmIC0tZ2l0IGEvZHJpdmVycy9jcnlwdG8vY2NwL2NjcC1jcnlwdG8tYWVzLWNtYWMuYyBi L2RyaXZlcnMvY3J5cHRvL2NjcC9jY3AtY3J5cHRvLWFlcy1jbWFjLmMKaW5kZXggNWM5M2FmYjE4 NDFhLi5mMTBiNDk5ODkzN2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY3J5cHRvL2NjcC9jY3AtY3J5 cHRvLWFlcy1jbWFjLmMKKysrIGIvZHJpdmVycy9jcnlwdG8vY2NwL2NjcC1jcnlwdG8tYWVzLWNt YWMuYwpAQCAtMjA2LDYgKzIwNiw5IEBAIHN0YXRpYyBpbnQgY2NwX2Flc19jbWFjX2V4cG9ydChz dHJ1Y3QgYWhhc2hfcmVxdWVzdCAqcmVxLCB2b2lkICpvdXQpCiAJc3RydWN0IGNjcF9hZXNfY21h Y19yZXFfY3R4ICpyY3R4ID0gYWhhc2hfcmVxdWVzdF9jdHgocmVxKTsKIAlzdHJ1Y3QgY2NwX2Fl c19jbWFjX2V4cF9jdHggc3RhdGU7CiAKKwkvKiBEb24ndCBsZXQgYW55dGhpbmcgbGVhayB0byAn b3V0JyAqLworCW1lbXNldCgmc3RhdGUsIDAsIHNpemVvZihzdGF0ZSkpOworCiAJc3RhdGUubnVs bF9tc2cgPSByY3R4LT5udWxsX21zZzsKIAltZW1jcHkoc3RhdGUuaXYsIHJjdHgtPml2LCBzaXpl b2Yoc3RhdGUuaXYpKTsKIAlzdGF0ZS5idWZfY291bnQgPSByY3R4LT5idWZfY291bnQ7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2NyeXB0by9jY3AvY2NwLWNyeXB0by1zaGEuYyBiL2RyaXZlcnMvY3J5 cHRvL2NjcC9jY3AtY3J5cHRvLXNoYS5jCmluZGV4IDRjNjc0MmZjMjE0Ni4uNTJlMDhmYTM4OWJi IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NyeXB0by9jY3AvY2NwLWNyeXB0by1zaGEuYworKysgYi9k cml2ZXJzL2NyeXB0by9jY3AvY2NwLWNyeXB0by1zaGEuYwpAQCAtMTk4LDYgKzE5OCw5IEBAIHN0 YXRpYyBpbnQgY2NwX3NoYV9leHBvcnQoc3RydWN0IGFoYXNoX3JlcXVlc3QgKnJlcSwgdm9pZCAq b3V0KQogCXN0cnVjdCBjY3Bfc2hhX3JlcV9jdHggKnJjdHggPSBhaGFzaF9yZXF1ZXN0X2N0eChy ZXEpOwogCXN0cnVjdCBjY3Bfc2hhX2V4cF9jdHggc3RhdGU7CiAKKwkvKiBEb24ndCBsZXQgYW55 dGhpbmcgbGVhayB0byAnb3V0JyAqLworCW1lbXNldCgmc3RhdGUsIDAsIHNpemVvZihzdGF0ZSkp OworCiAJc3RhdGUudHlwZSA9IHJjdHgtPnR5cGU7CiAJc3RhdGUubXNnX2JpdHMgPSByY3R4LT5t c2dfYml0czsKIAlzdGF0ZS5maXJzdCA9IHJjdHgtPmZpcnN0OwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9lZGFjL2k3Y29yZV9lZGFjLmMgYi9kcml2ZXJzL2VkYWMvaTdjb3JlX2VkYWMuYwppbmRleCA5 Y2QwYjMwMWY4MWIuLmY4NGVmNzViNjQ4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9lZGFjL2k3Y29y ZV9lZGFjLmMKKysrIGIvZHJpdmVycy9lZGFjL2k3Y29yZV9lZGFjLmMKQEAgLTE4NzQsNyArMTg3 NCw3IEBAIHN0YXRpYyBpbnQgaTdjb3JlX21jZV9jaGVja19lcnJvcihzdHJ1Y3Qgbm90aWZpZXJf YmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIHZhbCwKIAogCWk3X2RldiA9IGdldF9pN2NvcmVfZGV2 KG1jZS0+c29ja2V0aWQpOwogCWlmICghaTdfZGV2KQotCQlyZXR1cm4gTk9USUZZX0JBRDsKKwkJ cmV0dXJuIE5PVElGWV9ET05FOwogCiAJbWNpID0gaTdfZGV2LT5tY2k7CiAJcHZ0ID0gbWNpLT5w dnRfaW5mbzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZWRhYy9zYl9lZGFjLmMgYi9kcml2ZXJzL2Vk YWMvc2JfZWRhYy5jCmluZGV4IGZmNzVmODkwNDczNS4uYmVhYzE4NThlOTRmIDEwMDY0NAotLS0g YS9kcml2ZXJzL2VkYWMvc2JfZWRhYy5jCisrKyBiL2RyaXZlcnMvZWRhYy9zYl9lZGFjLmMKQEAg LTE4NDEsNyArMTg0MSw3IEBAIHN0YXRpYyBpbnQgc2JyaWRnZV9tY2VfY2hlY2tfZXJyb3Ioc3Ry dWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgdW5zaWduZWQgbG9uZyB2YWwsCiAKIAltY2kgPSBnZXRf bWNpX2Zvcl9ub2RlX2lkKG1jZS0+c29ja2V0aWQpOwogCWlmICghbWNpKQotCQlyZXR1cm4gTk9U SUZZX0JBRDsKKwkJcmV0dXJuIE5PVElGWV9ET05FOwogCXB2dCA9IG1jaS0+cHZ0X2luZm87CiAK IAkvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9maXJtd2FyZS9lZmkvdmFycy5jIGIvZHJpdmVycy9m aXJtd2FyZS9lZmkvdmFycy5jCmluZGV4IDRlMmY0NjkzOGJmMC4uZTc1NjZkNDkzMWM2IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2Zpcm13YXJlL2VmaS92YXJzLmMKKysrIGIvZHJpdmVycy9maXJtd2Fy ZS9lZmkvdmFycy5jCkBAIC0yMDIsMjkgKzIwMiw0NCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHZh cmlhYmxlX3ZhbGlkYXRlIHZhcmlhYmxlX3ZhbGlkYXRlW10gPSB7CiAJeyBOVUxMX0dVSUQsICIi LCBOVUxMIH0sCiB9OwogCisvKgorICogQ2hlY2sgaWYgQHZhcl9uYW1lIG1hdGNoZXMgdGhlIHBh dHRlcm4gZ2l2ZW4gaW4gQG1hdGNoX25hbWUuCisgKgorICogQHZhcl9uYW1lOiBhbiBhcnJheSBv ZiBAbGVuIG5vbi1OVUwgY2hhcmFjdGVycy4KKyAqIEBtYXRjaF9uYW1lOiBhIE5VTC10ZXJtaW5h dGVkIHBhdHRlcm4gc3RyaW5nLCBvcHRpb25hbGx5IGVuZGluZyBpbiAiKiIuIEEKKyAqICAgICAg ICAgICAgICBmaW5hbCAiKiIgY2hhcmFjdGVyIG1hdGNoZXMgYW55IHRyYWlsaW5nIGNoYXJhY3Rl cnMgQHZhcl9uYW1lLAorICogICAgICAgICAgICAgIGluY2x1ZGluZyB0aGUgY2FzZSB3aGVuIHRo ZXJlIGFyZSBub25lIGxlZnQgaW4gQHZhcl9uYW1lLgorICogQG1hdGNoOiBvbiBvdXRwdXQsIHRo ZSBudW1iZXIgb2Ygbm9uLXdpbGRjYXJkIGNoYXJhY3RlcnMgaW4gQG1hdGNoX25hbWUKKyAqICAg ICAgICAgdGhhdCBAdmFyX25hbWUgbWF0Y2hlcywgcmVnYXJkbGVzcyBvZiB0aGUgcmV0dXJuIHZh bHVlLgorICogQHJldHVybjogd2hldGhlciBAdmFyX25hbWUgZnVsbHkgbWF0Y2hlcyBAbWF0Y2hf bmFtZS4KKyAqLwogc3RhdGljIGJvb2wKIHZhcmlhYmxlX21hdGNoZXMoY29uc3QgY2hhciAqdmFy X25hbWUsIHNpemVfdCBsZW4sIGNvbnN0IGNoYXIgKm1hdGNoX25hbWUsCiAJCSBpbnQgKm1hdGNo KQogewogCWZvciAoKm1hdGNoID0gMDsgOyAoKm1hdGNoKSsrKSB7CiAJCWNoYXIgYyA9IG1hdGNo X25hbWVbKm1hdGNoXTsKLQkJY2hhciB1ID0gdmFyX25hbWVbKm1hdGNoXTsKIAotCQkvKiBXaWxk Y2FyZCBpbiB0aGUgbWF0Y2hpbmcgbmFtZSBtZWFucyB3ZSd2ZSBtYXRjaGVkICovCi0JCWlmIChj ID09ICcqJykKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJyonOgorCQkJLyogV2lsZGNhcmQgaW4g QG1hdGNoX25hbWUgbWVhbnMgd2UndmUgbWF0Y2hlZC4gKi8KIAkJCXJldHVybiB0cnVlOwogCi0J CS8qIENhc2Ugc2Vuc2l0aXZlIG1hdGNoICovCi0JCWlmICghYyAmJiAqbWF0Y2ggPT0gbGVuKQot CQkJcmV0dXJuIHRydWU7CisJCWNhc2UgJ1wwJzoKKwkJCS8qIEBtYXRjaF9uYW1lIGhhcyBlbmRl ZC4gSGFzIEB2YXJfbmFtZSB0b28/ICovCisJCQlyZXR1cm4gKCptYXRjaCA9PSBsZW4pOwogCi0J CWlmIChjICE9IHUpCisJCWRlZmF1bHQ6CisJCQkvKgorCQkJICogV2UndmUgcmVhY2hlZCBhIG5v bi13aWxkY2FyZCBjaGFyIGluIEBtYXRjaF9uYW1lLgorCQkJICogQ29udGludWUgb25seSBpZiB0 aGVyZSdzIGFuIGlkZW50aWNhbCBjaGFyYWN0ZXIgaW4KKwkJCSAqIEB2YXJfbmFtZS4KKwkJCSAq LworCQkJaWYgKCptYXRjaCA8IGxlbiAmJiBjID09IHZhcl9uYW1lWyptYXRjaF0pCisJCQkJY29u dGludWU7CiAJCQlyZXR1cm4gZmFsc2U7Ci0KLQkJaWYgKCFjKQotCQkJcmV0dXJuIHRydWU7CisJ CX0KIAl9Ci0JcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCmlu ZGV4IDE3ZDM3NTM0NGY0Ni4uNzY5NjQ5MDBmMDZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMK QEAgLTY4Niw2ICs2ODYsOCBAQCBzdGF0aWMgaW50IGk5MTVfZHJtX3RoYXcoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIAogc3RhdGljIGludCBpOTE1X3Jlc3VtZV9lYXJseShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQogeworCWludCByZXQ7CisKIAlpZiAoZGV2LT5zd2l0Y2hfcG93ZXJfc3RhdGUg PT0gRFJNX1NXSVRDSF9QT1dFUl9PRkYpCiAJCXJldHVybiAwOwogCkBAIC02OTgsNiArNzAwLDM2 IEBAIHN0YXRpYyBpbnQgaTkxNV9yZXN1bWVfZWFybHkoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IAkgKiBGSVhNRTogVGhpcyBzaG91bGQgYmUgc29sdmVkIHdpdGggYSBzcGVjaWFsIGhkbWkgc2lu ayBkZXZpY2Ugb3IKIAkgKiBzaW1pbGFyIHNvIHRoYXQgcG93ZXIgZG9tYWlucyBjYW4gYmUgZW1w bG95ZWQuCiAJICovCisKKwkvKgorCSAqIE5vdGUgdGhhdCB3ZSBuZWVkIHRvIHNldCB0aGUgcG93 ZXIgc3RhdGUgZXhwbGljaXRseSwgc2luY2Ugd2UKKwkgKiBwb3dlcmVkIG9mZiB0aGUgZGV2aWNl IGR1cmluZyBmcmVlemUgYW5kIHRoZSBQQ0kgY29yZSB3b24ndCBwb3dlcgorCSAqIGl0IGJhY2sg dXAgZm9yIHVzIGR1cmluZyB0aGF3LiBQb3dlcmluZyBvZmYgdGhlIGRldmljZSBkdXJpbmcKKwkg KiBmcmVlemUgaXMgbm90IGEgaGFyZCByZXF1aXJlbWVudCB0aG91Z2gsIGFuZCBkdXJpbmcgdGhl CisJICogc3VzcGVuZC9yZXN1bWUgcGhhc2VzIHRoZSBQQ0kgY29yZSBtYWtlcyBzdXJlIHdlIGdl dCBoZXJlIHdpdGggdGhlCisJICogZGV2aWNlIHBvd2VyZWQgb24uIFNvIGluIGNhc2Ugd2UgY2hh bmdlIG91ciBmcmVlemUgbG9naWMgYW5kIGtlZXAKKwkgKiB0aGUgZGV2aWNlIHBvd2VyZWQgd2Ug Y2FuIGFsc28gcmVtb3ZlIHRoZSBmb2xsb3dpbmcgc2V0IHBvd2VyIHN0YXRlCisJICogY2FsbC4K KwkgKi8KKwlyZXQgPSBwY2lfc2V0X3Bvd2VyX3N0YXRlKGRldi0+cGRldiwgUENJX0QwKTsKKwlp ZiAocmV0KSB7CisJCURSTV9FUlJPUigiZmFpbGVkIHRvIHNldCBQQ0kgRDAgcG93ZXIgc3RhdGUg KCVkKVxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwkvKgorCSAqIE5vdGUgdGhhdCBw Y2lfZW5hYmxlX2RldmljZSgpIGZpcnN0IGVuYWJsZXMgYW55IHBhcmVudCBicmlkZ2UKKwkgKiBk ZXZpY2UgYW5kIG9ubHkgdGhlbiBzZXRzIHRoZSBwb3dlciBzdGF0ZSBmb3IgdGhpcyBkZXZpY2Uu IFRoZQorCSAqIGJyaWRnZSBlbmFibGluZyBpcyBhIG5vcCB0aG91Z2gsIHNpbmNlIGJyaWRnZSBk ZXZpY2VzIGFyZSByZXN1bWVkCisJICogZmlyc3QuIFRoZSBvcmRlciBvZiBlbmFibGluZyBwb3dl ciBhbmQgZW5hYmxpbmcgdGhlIGRldmljZSBpcworCSAqIGltcG9zZWQgYnkgdGhlIFBDSSBjb3Jl IGFzIGRlc2NyaWJlZCBhYm92ZSwgc28gaGVyZSB3ZSBwcmVzZXJ2ZSB0aGUKKwkgKiBzYW1lIG9y ZGVyIGZvciB0aGUgZnJlZXplL3RoYXcgcGhhc2VzLgorCSAqCisJICogVE9ETzogZXZlbnR1YWxs eSB3ZSBzaG91bGQgcmVtb3ZlIHBjaV9kaXNhYmxlX2RldmljZSgpIC8KKwkgKiBwY2lfZW5hYmxl X2VuYWJsZV9kZXZpY2UoKSBmcm9tIHN1c3BlbmQvcmVzdW1lLiBEdWUgdG8gaG93IHRoZXkKKwkg KiBkZXBlbmQgb24gdGhlIGRldmljZSBlbmFibGUgcmVmY291bnQgd2UgY2FuJ3QgYW55d2F5IGRl cGVuZCBvbiB0aGVtCisJICogZGlzYWJsaW5nL2VuYWJsaW5nIHRoZSBkZXZpY2UuCisJICovCiAJ aWYgKHBjaV9lbmFibGVfZGV2aWNlKGRldi0+cGRldikpCiAJCXJldHVybiAtRUlPOwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMKaW5kZXggM2Q5OGUwZDI5MDNkLi4zYWM2 NWEzYzcxMjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJw dHIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMKQEAgLTQx MSwxOSArNDExLDI0IEBAIF9faTkxNV9nZW1fdXNlcnB0cl9nZXRfcGFnZXNfd29ya2VyKHN0cnVj dCB3b3JrX3N0cnVjdCAqX3dvcmspCiAJaWYgKHB2ZWMgIT0gTlVMTCkgewogCQlzdHJ1Y3QgbW1f c3RydWN0ICptbSA9IG9iai0+dXNlcnB0ci5tbTsKIAotCQlkb3duX3JlYWQoJm1tLT5tbWFwX3Nl bSk7Ci0JCXdoaWxlIChwaW5uZWQgPCBudW1fcGFnZXMpIHsKLQkJCXJldCA9IGdldF91c2VyX3Bh Z2VzKHdvcmstPnRhc2ssIG1tLAotCQkJCQkgICAgIG9iai0+dXNlcnB0ci5wdHIgKyBwaW5uZWQg KiBQQUdFX1NJWkUsCi0JCQkJCSAgICAgbnVtX3BhZ2VzIC0gcGlubmVkLAotCQkJCQkgICAgICFv YmotPnVzZXJwdHIucmVhZF9vbmx5LCAwLAotCQkJCQkgICAgIHB2ZWMgKyBwaW5uZWQsIE5VTEwp OwotCQkJaWYgKHJldCA8IDApCi0JCQkJYnJlYWs7Ci0KLQkJCXBpbm5lZCArPSByZXQ7CisJCXJl dCA9IC1FRkFVTFQ7CisJCWlmIChhdG9taWNfaW5jX25vdF96ZXJvKCZtbS0+bW1fdXNlcnMpKSB7 CisJCQlkb3duX3JlYWQoJm1tLT5tbWFwX3NlbSk7CisJCQl3aGlsZSAocGlubmVkIDwgbnVtX3Bh Z2VzKSB7CisJCQkJcmV0ID0gZ2V0X3VzZXJfcGFnZXMKKwkJCQkJKHdvcmstPnRhc2ssIG1tLAor CQkJCQkgb2JqLT51c2VycHRyLnB0ciArIHBpbm5lZCAqIFBBR0VfU0laRSwKKwkJCQkJIG51bV9w YWdlcyAtIHBpbm5lZCwKKwkJCQkJICFvYmotPnVzZXJwdHIucmVhZF9vbmx5LCAwLAorCQkJCQkg cHZlYyArIHBpbm5lZCwgTlVMTCk7CisJCQkJaWYgKHJldCA8IDApCisJCQkJCWJyZWFrOworCisJ CQkJcGlubmVkICs9IHJldDsKKwkJCX0KKwkJCXVwX3JlYWQoJm1tLT5tbWFwX3NlbSk7CisJCQlt bXB1dChtbSk7CiAJCX0KLQkJdXBfcmVhZCgmbW0tPm1tYXBfc2VtKTsKIAl9CiAKIAltdXRleF9s b2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwppbmRleCBhNzM2 YjRhZjQ2ZjEuLmE5YjEyMTQ3NDhlMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9pcnEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCkBAIC0xODc1 LDcgKzE4NzUsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgY2hlcnJ5dmlld19pcnFfaGFuZGxlcihp bnQgaXJxLCB2b2lkICphcmcpCiAJdTMyIG1hc3Rlcl9jdGwsIGlpcjsKIAlpcnFyZXR1cm5fdCBy ZXQgPSBJUlFfTk9ORTsKIAotCWZvciAoOzspIHsKKwlkbyB7CiAJCW1hc3Rlcl9jdGwgPSBJOTE1 X1JFQUQoR0VOOF9NQVNURVJfSVJRKSAmIH5HRU44X01BU1RFUl9JUlFfQ09OVFJPTDsKIAkJaWly ID0gSTkxNV9SRUFEKFZMVl9JSVIpOwogCkBAIC0xODk3LDcgKzE4OTcsNyBAQCBzdGF0aWMgaXJx cmV0dXJuX3QgY2hlcnJ5dmlld19pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCiAJCVBP U1RJTkdfUkVBRChHRU44X01BU1RFUl9JUlEpOwogCiAJCXJldCA9IElSUV9IQU5ETEVEOwotCX0K Kwl9IHdoaWxlICgwKTsKIAogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jcnQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5j CmluZGV4IDNlMWVkYmZhOGUwNy4uNjExODNjMTY0MmIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jcnQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9j cnQuYwpAQCAtMjg1LDggKzI4NSwxNCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9jcnRfY29tcHV0ZV9j b25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCXBpcGVfY29uZmlnLT5oYXNf cGNoX2VuY29kZXIgPSB0cnVlOwogCiAJLyogTFBUIEZESSBSWCBvbmx5IHN1cHBvcnRzIDhicGMu ICovCi0JaWYgKEhBU19QQ0hfTFBUKGRldikpCisJaWYgKEhBU19QQ0hfTFBUKGRldikpIHsKKwkJ aWYgKHBpcGVfY29uZmlnLT5id19jb25zdHJhaW5lZCAmJiBwaXBlX2NvbmZpZy0+cGlwZV9icHAg PCAyNCkgeworCQkJRFJNX0RFQlVHX0tNUygiTFBUIG9ubHkgc3VwcG9ydHMgMjRicHBcbiIpOwor CQkJcmV0dXJuIGZhbHNlOworCQl9CisKIAkJcGlwZV9jb25maWctPnBpcGVfYnBwID0gMjQ7CisJ fQogCiAJLyogRkRJIG11c3QgYWx3YXlzIGJlIDIuNyBHSHogKi8KIAlpZiAoSEFTX0RESShkZXYp KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZGlzcGxheS5jIGIvZHJpdmVy cy9ncHUvZHJtL3F4bC9xeGxfZGlzcGxheS5jCmluZGV4IDc3ODBhNWVkZmRiYi4uZTA2ZjMzNzJl YmFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kaXNwbGF5LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZGlzcGxheS5jCkBAIC0yOTUsMTAgKzI5NSwxNSBAQCBz dGF0aWMgaW50IHF4bF9jcnRjX2N1cnNvcl9zZXQyKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAog CXF4bF9ib19rdW5tYXAodXNlcl9ibyk7CiAKKwlxY3J0Yy0+Y3VyX3ggKz0gcWNydGMtPmhvdF9z cG90X3ggLSBob3RfeDsKKwlxY3J0Yy0+Y3VyX3kgKz0gcWNydGMtPmhvdF9zcG90X3kgLSBob3Rf eTsKKwlxY3J0Yy0+aG90X3Nwb3RfeCA9IGhvdF94OworCXFjcnRjLT5ob3Rfc3BvdF95ID0gaG90 X3k7CisKIAljbWQgPSAoc3RydWN0IHF4bF9jdXJzb3JfY21kICopcXhsX3JlbGVhc2VfbWFwKHFk ZXYsIHJlbGVhc2UpOwogCWNtZC0+dHlwZSA9IFFYTF9DVVJTT1JfU0VUOwotCWNtZC0+dS5zZXQu cG9zaXRpb24ueCA9IHFjcnRjLT5jdXJfeDsKLQljbWQtPnUuc2V0LnBvc2l0aW9uLnkgPSBxY3J0 Yy0+Y3VyX3k7CisJY21kLT51LnNldC5wb3NpdGlvbi54ID0gcWNydGMtPmN1cl94ICsgcWNydGMt PmhvdF9zcG90X3g7CisJY21kLT51LnNldC5wb3NpdGlvbi55ID0gcWNydGMtPmN1cl95ICsgcWNy dGMtPmhvdF9zcG90X3k7CiAKIAljbWQtPnUuc2V0LnNoYXBlID0gcXhsX2JvX3BoeXNpY2FsX2Fk ZHJlc3MocWRldiwgY3Vyc29yX2JvLCAwKTsKIApAQCAtMzYxLDggKzM2Niw4IEBAIHN0YXRpYyBp bnQgcXhsX2NydGNfY3Vyc29yX21vdmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJY21kID0g KHN0cnVjdCBxeGxfY3Vyc29yX2NtZCAqKXF4bF9yZWxlYXNlX21hcChxZGV2LCByZWxlYXNlKTsK IAljbWQtPnR5cGUgPSBRWExfQ1VSU09SX01PVkU7Ci0JY21kLT51LnBvc2l0aW9uLnggPSBxY3J0 Yy0+Y3VyX3g7Ci0JY21kLT51LnBvc2l0aW9uLnkgPSBxY3J0Yy0+Y3VyX3k7CisJY21kLT51LnBv c2l0aW9uLnggPSBxY3J0Yy0+Y3VyX3ggKyBxY3J0Yy0+aG90X3Nwb3RfeDsKKwljbWQtPnUucG9z aXRpb24ueSA9IHFjcnRjLT5jdXJfeSArIHFjcnRjLT5ob3Rfc3BvdF95OwogCXF4bF9yZWxlYXNl X3VubWFwKHFkZXYsIHJlbGVhc2UsICZjbWQtPnJlbGVhc2VfaW5mbyk7CiAKIAlxeGxfcHVzaF9j dXJzb3JfcmluZ19yZWxlYXNlKHFkZXYsIHJlbGVhc2UsIFFYTF9DTURfQ1VSU09SLCBmYWxzZSk7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9xeGwvcXhsX2Rydi5oCmluZGV4IDhhYTA3N2NhODI0NC4uZDVlYmYzZTMzZjhlIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vcXhsL3F4bF9kcnYuaApAQCAtMTM5LDYgKzEzOSw4IEBAIHN0cnVjdCBxeGxfY3J0YyB7CiAJ aW50IGluZGV4OwogCWludCBjdXJfeDsKIAlpbnQgY3VyX3k7CisJaW50IGhvdF9zcG90X3g7CisJ aW50IGhvdF9zcG90X3k7CiB9OwogCiBzdHJ1Y3QgcXhsX291dHB1dCB7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9y YWRlb24vYXRvbWJpb3NfY3J0Yy5jCmluZGV4IGNlOGNhYjUyMjg1Yi4uMmYyZTUwYTBmZWI0IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zX2NydGMuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zX2NydGMuYwpAQCAtMTczMCw2ICsxNzMwLDcg QEAgc3RhdGljIHUzMiByYWRlb25fZ2V0X3BsbF91c2VfbWFzayhzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpCiBzdGF0aWMgaW50IHJhZGVvbl9nZXRfc2hhcmVkX2RwX3BwbGwoc3RydWN0IGRybV9jcnRj ICpjcnRjKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CisJc3RydWN0 IHJhZGVvbl9kZXZpY2UgKnJkZXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBkcm1fY3J0 YyAqdGVzdF9jcnRjOwogCXN0cnVjdCByYWRlb25fY3J0YyAqdGVzdF9yYWRlb25fY3J0YzsKIApA QCAtMTczOSw2ICsxNzQwLDEwIEBAIHN0YXRpYyBpbnQgcmFkZW9uX2dldF9zaGFyZWRfZHBfcHBs bChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJCXRlc3RfcmFkZW9uX2NydGMgPSB0b19yYWRlb25f Y3J0Yyh0ZXN0X2NydGMpOwogCQlpZiAodGVzdF9yYWRlb25fY3J0Yy0+ZW5jb2RlciAmJgogCQkg ICAgRU5DT0RFUl9NT0RFX0lTX0RQKGF0b21iaW9zX2dldF9lbmNvZGVyX21vZGUodGVzdF9yYWRl b25fY3J0Yy0+ZW5jb2RlcikpKSB7CisJCQkvKiBQUExMMiBpcyBleGNsdXNpdmUgdG8gVU5JUEhZ QSBvbiBEQ0U2MSAqLworCQkJaWYgKEFTSUNfSVNfRENFNjEocmRldikgJiYgIUFTSUNfSVNfRENF OChyZGV2KSAmJgorCQkJICAgIHRlc3RfcmFkZW9uX2NydGMtPnBsbF9pZCA9PSBBVE9NX1BQTEwy KQorCQkJCWNvbnRpbnVlOwogCQkJLyogZm9yIERQIHVzZSB0aGUgc2FtZSBQTEwgZm9yIGFsbCAq LwogCQkJaWYgKHRlc3RfcmFkZW9uX2NydGMtPnBsbF9pZCAhPSBBVE9NX1BQTExfSU5WQUxJRCkK IAkJCQlyZXR1cm4gdGVzdF9yYWRlb25fY3J0Yy0+cGxsX2lkOwpAQCAtMTc2MCw2ICsxNzY1LDcg QEAgc3RhdGljIGludCByYWRlb25fZ2V0X3NoYXJlZF9ub25kcF9wcGxsKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKIHsKIAlzdHJ1Y3QgcmFkZW9uX2NydGMgKnJhZGVvbl9jcnRjID0gdG9fcmFkZW9u X2NydGMoY3J0Yyk7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKKwlzdHJ1 Y3QgcmFkZW9uX2RldmljZSAqcmRldiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGRybV9j cnRjICp0ZXN0X2NydGM7CiAJc3RydWN0IHJhZGVvbl9jcnRjICp0ZXN0X3JhZGVvbl9jcnRjOwog CXUzMiBhZGp1c3RlZF9jbG9jaywgdGVzdF9hZGp1c3RlZF9jbG9jazsKQEAgLTE3NzUsNiArMTc4 MSwxMCBAQCBzdGF0aWMgaW50IHJhZGVvbl9nZXRfc2hhcmVkX25vbmRwX3BwbGwoc3RydWN0IGRy bV9jcnRjICpjcnRjKQogCQl0ZXN0X3JhZGVvbl9jcnRjID0gdG9fcmFkZW9uX2NydGModGVzdF9j cnRjKTsKIAkJaWYgKHRlc3RfcmFkZW9uX2NydGMtPmVuY29kZXIgJiYKIAkJICAgICFFTkNPREVS X01PREVfSVNfRFAoYXRvbWJpb3NfZ2V0X2VuY29kZXJfbW9kZSh0ZXN0X3JhZGVvbl9jcnRjLT5l bmNvZGVyKSkpIHsKKwkJCS8qIFBQTEwyIGlzIGV4Y2x1c2l2ZSB0byBVTklQSFlBIG9uIERDRTYx ICovCisJCQlpZiAoQVNJQ19JU19EQ0U2MShyZGV2KSAmJiAhQVNJQ19JU19EQ0U4KHJkZXYpICYm CisJCQkgICAgdGVzdF9yYWRlb25fY3J0Yy0+cGxsX2lkID09IEFUT01fUFBMTDIpCisJCQkJY29u dGludWU7CiAJCQkvKiBjaGVjayBpZiB3ZSBhcmUgYWxyZWFkeSBkcml2aW5nIHRoaXMgY29ubmVj dG9yIHdpdGggYW5vdGhlciBjcnRjICovCiAJCQlpZiAodGVzdF9yYWRlb25fY3J0Yy0+Y29ubmVj dG9yID09IHJhZGVvbl9jcnRjLT5jb25uZWN0b3IpIHsKIAkJCQkvKiBpZiB3ZSBhcmUsIHJldHVy biB0aGF0IHBsbCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9hdG9tYmlv c19lbmNvZGVycy5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9hdG9tYmlvc19lbmNvZGVycy5j CmluZGV4IGY3NGYzZDU5OTc4Yi4uNmFmMTcyOGM1YzJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vcmFkZW9uL2F0b21iaW9zX2VuY29kZXJzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Jh ZGVvbi9hdG9tYmlvc19lbmNvZGVycy5jCkBAIC0zMzIsNiArMzMyLDEwIEBAIHN0YXRpYyBib29s IHJhZGVvbl9hdG9tX21vZGVfZml4dXAoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAogCSAg ICAmJiAobW9kZS0+Y3J0Y192c3luY19zdGFydCA8IChtb2RlLT5jcnRjX3ZkaXNwbGF5ICsgMikp KQogCQlhZGp1c3RlZF9tb2RlLT5jcnRjX3ZzeW5jX3N0YXJ0ID0gYWRqdXN0ZWRfbW9kZS0+Y3J0 Y192ZGlzcGxheSArIDI7CiAKKwkvKiB2ZXJ0aWNhbCBGUCBtdXN0IGJlIGF0IGxlYXN0IDEgKi8K KwlpZiAobW9kZS0+Y3J0Y192c3luY19zdGFydCA9PSBtb2RlLT5jcnRjX3ZkaXNwbGF5KQorCQlh ZGp1c3RlZF9tb2RlLT5jcnRjX3ZzeW5jX3N0YXJ0Kys7CisKIAkvKiBnZXQgdGhlIG5hdGl2ZSBt b2RlIGZvciBMVkRTICovCiAJaWYgKHJhZGVvbl9lbmNvZGVyLT5hY3RpdmVfZGV2aWNlICYgKEFU T01fREVWSUNFX0xDRF9TVVBQT1JUKSkKIAkJcmFkZW9uX3BhbmVsX21vZGVfZml4dXAoZW5jb2Rl ciwgYWRqdXN0ZWRfbW9kZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3Np X2RwbS5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9zaV9kcG0uYwppbmRleCA0MmIyYmFmMGU2 ZDcuLjkyZDg0OWU2OGYxNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9zaV9k cG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3NpX2RwbS5jCkBAIC0yOTI2LDYgKzI5 MjYsNyBAQCBzdGF0aWMgc3RydWN0IHNpX2RwbV9xdWlyayBzaV9kcG1fcXVpcmtfbGlzdFtdID0g ewogCXsgUENJX1ZFTkRPUl9JRF9BVEksIDB4NjgxMSwgMHgxNDYyLCAweDIwMTUsIDAsIDEyMDAw MCB9LAogCXsgUENJX1ZFTkRPUl9JRF9BVEksIDB4NjgxMSwgMHgxMDQzLCAweDIwMTUsIDAsIDEy MDAwMCB9LAogCXsgUENJX1ZFTkRPUl9JRF9BVEksIDB4NjgxMSwgMHgxNDhjLCAweDIwMTUsIDAs IDEyMDAwMCB9LAorCXsgUENJX1ZFTkRPUl9JRF9BVEksIDB4NjgxMCwgMHgxNjgyLCAweDkyNzUs IDAsIDEyMDAwMCB9LAogCXsgMCwgMCwgMCwgMCB9LAogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9oaWQvdXNiaGlkL2hpZC1jb3JlLmMgYi9kcml2ZXJzL2hpZC91c2JoaWQvaGlkLWNvcmUuYwpp bmRleCA0MjExODdiYTA1M2EuLmI4MDIxYzQ5OWJiZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9oaWQv dXNiaGlkL2hpZC1jb3JlLmMKKysrIGIvZHJpdmVycy9oaWQvdXNiaGlkL2hpZC1jb3JlLmMKQEAg LTk1NSwxNCArOTU1LDYgQEAgc3RhdGljIGludCB1c2JoaWRfb3V0cHV0X3JlcG9ydChzdHJ1Y3Qg aGlkX2RldmljZSAqaGlkLCBfX3U4ICpidWYsIHNpemVfdCBjb3VudCkKIAlyZXR1cm4gcmV0Owog fQogCi1zdGF0aWMgdm9pZCB1c2JoaWRfcmVzdGFydF9xdWV1ZXMoc3RydWN0IHVzYmhpZF9kZXZp Y2UgKnVzYmhpZCkKLXsKLQlpZiAodXNiaGlkLT51cmJvdXQgJiYgIXRlc3RfYml0KEhJRF9PVVRf UlVOTklORywgJnVzYmhpZC0+aW9mbCkpCi0JCXVzYmhpZF9yZXN0YXJ0X291dF9xdWV1ZSh1c2Jo aWQpOwotCWlmICghdGVzdF9iaXQoSElEX0NUUkxfUlVOTklORywgJnVzYmhpZC0+aW9mbCkpCi0J CXVzYmhpZF9yZXN0YXJ0X2N0cmxfcXVldWUodXNiaGlkKTsKLX0KLQogc3RhdGljIHZvaWQgaGlk X2ZyZWVfYnVmZmVycyhzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCBzdHJ1Y3QgaGlkX2RldmljZSAq aGlkKQogewogCXN0cnVjdCB1c2JoaWRfZGV2aWNlICp1c2JoaWQgPSBoaWQtPmRyaXZlcl9kYXRh OwpAQCAtMTQwOCw2ICsxNDAwLDM3IEBAIHN0YXRpYyB2b2lkIGhpZF9jZWFzZV9pbyhzdHJ1Y3Qg dXNiaGlkX2RldmljZSAqdXNiaGlkKQogCXVzYl9raWxsX3VyYih1c2JoaWQtPnVyYm91dCk7CiB9 CiAKK3N0YXRpYyB2b2lkIGhpZF9yZXN0YXJ0X2lvKHN0cnVjdCBoaWRfZGV2aWNlICpoaWQpCit7 CisJc3RydWN0IHVzYmhpZF9kZXZpY2UgKnVzYmhpZCA9IGhpZC0+ZHJpdmVyX2RhdGE7CisJaW50 IGNsZWFyX2hhbHQgPSB0ZXN0X2JpdChISURfQ0xFQVJfSEFMVCwgJnVzYmhpZC0+aW9mbCk7CisJ aW50IHJlc2V0X3BlbmRpbmcgPSB0ZXN0X2JpdChISURfUkVTRVRfUEVORElORywgJnVzYmhpZC0+ aW9mbCk7CisKKwlzcGluX2xvY2tfaXJxKCZ1c2JoaWQtPmxvY2spOworCWNsZWFyX2JpdChISURf U1VTUEVOREVELCAmdXNiaGlkLT5pb2ZsKTsKKwl1c2JoaWRfbWFya19idXN5KHVzYmhpZCk7CisK KwlpZiAoY2xlYXJfaGFsdCB8fCByZXNldF9wZW5kaW5nKQorCQlzY2hlZHVsZV93b3JrKCZ1c2Jo aWQtPnJlc2V0X3dvcmspOworCXVzYmhpZC0+cmV0cnlfZGVsYXkgPSAwOworCXNwaW5fdW5sb2Nr X2lycSgmdXNiaGlkLT5sb2NrKTsKKworCWlmIChyZXNldF9wZW5kaW5nIHx8ICF0ZXN0X2JpdChI SURfU1RBUlRFRCwgJnVzYmhpZC0+aW9mbCkpCisJCXJldHVybjsKKworCWlmICghY2xlYXJfaGFs dCkgeworCQlpZiAoaGlkX3N0YXJ0X2luKGhpZCkgPCAwKQorCQkJaGlkX2lvX2Vycm9yKGhpZCk7 CisJfQorCisJc3Bpbl9sb2NrX2lycSgmdXNiaGlkLT5sb2NrKTsKKwlpZiAodXNiaGlkLT51cmJv dXQgJiYgIXRlc3RfYml0KEhJRF9PVVRfUlVOTklORywgJnVzYmhpZC0+aW9mbCkpCisJCXVzYmhp ZF9yZXN0YXJ0X291dF9xdWV1ZSh1c2JoaWQpOworCWlmICghdGVzdF9iaXQoSElEX0NUUkxfUlVO TklORywgJnVzYmhpZC0+aW9mbCkpCisJCXVzYmhpZF9yZXN0YXJ0X2N0cmxfcXVldWUodXNiaGlk KTsKKwlzcGluX3VubG9ja19pcnEoJnVzYmhpZC0+bG9jayk7Cit9CisKIC8qIFRyZWF0IFVTQiBy ZXNldCBwcmV0dHkgbXVjaCB0aGUgc2FtZSBhcyBzdXNwZW5kL3Jlc3VtZSAqLwogc3RhdGljIGlu dCBoaWRfcHJlX3Jlc2V0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKQogewpAQCAtMTQ1Nywx NCArMTQ4MCwxNCBAQCBzdGF0aWMgaW50IGhpZF9wb3N0X3Jlc2V0KHN0cnVjdCB1c2JfaW50ZXJm YWNlICppbnRmKQogCQlyZXR1cm4gMTsKIAl9CiAKKwkvKiBObyBuZWVkIHRvIGRvIGFub3RoZXIg cmVzZXQgb3IgY2xlYXIgYSBoYWx0ZWQgZW5kcG9pbnQgKi8KIAlzcGluX2xvY2tfaXJxKCZ1c2Jo aWQtPmxvY2spOwogCWNsZWFyX2JpdChISURfUkVTRVRfUEVORElORywgJnVzYmhpZC0+aW9mbCk7 CisJY2xlYXJfYml0KEhJRF9DTEVBUl9IQUxULCAmdXNiaGlkLT5pb2ZsKTsKIAlzcGluX3VubG9j a19pcnEoJnVzYmhpZC0+bG9jayk7CiAJaGlkX3NldF9pZGxlKGRldiwgaW50Zi0+Y3VyX2FsdHNl dHRpbmctPmRlc2MuYkludGVyZmFjZU51bWJlciwgMCwgMCk7Ci0Jc3RhdHVzID0gaGlkX3N0YXJ0 X2luKGhpZCk7Ci0JaWYgKHN0YXR1cyA8IDApCi0JCWhpZF9pb19lcnJvcihoaWQpOwotCXVzYmhp ZF9yZXN0YXJ0X3F1ZXVlcyh1c2JoaWQpOworCisJaGlkX3Jlc3RhcnRfaW8oaGlkKTsKIAogCXJl dHVybiAwOwogfQpAQCAtMTQ4NywyNSArMTUxMCw5IEBAIHZvaWQgdXNiaGlkX3B1dF9wb3dlcihz dHJ1Y3QgaGlkX2RldmljZSAqaGlkKQogI2lmZGVmIENPTkZJR19QTQogc3RhdGljIGludCBoaWRf cmVzdW1lX2NvbW1vbihzdHJ1Y3QgaGlkX2RldmljZSAqaGlkLCBib29sIGRyaXZlcl9zdXNwZW5k ZWQpCiB7Ci0Jc3RydWN0IHVzYmhpZF9kZXZpY2UgKnVzYmhpZCA9IGhpZC0+ZHJpdmVyX2RhdGE7 Ci0JaW50IHN0YXR1czsKLQotCXNwaW5fbG9ja19pcnEoJnVzYmhpZC0+bG9jayk7Ci0JY2xlYXJf Yml0KEhJRF9TVVNQRU5ERUQsICZ1c2JoaWQtPmlvZmwpOwotCXVzYmhpZF9tYXJrX2J1c3kodXNi aGlkKTsKLQotCWlmICh0ZXN0X2JpdChISURfQ0xFQVJfSEFMVCwgJnVzYmhpZC0+aW9mbCkgfHwK LQkJCXRlc3RfYml0KEhJRF9SRVNFVF9QRU5ESU5HLCAmdXNiaGlkLT5pb2ZsKSkKLQkJc2NoZWR1 bGVfd29yaygmdXNiaGlkLT5yZXNldF93b3JrKTsKLQl1c2JoaWQtPnJldHJ5X2RlbGF5ID0gMDsK LQotCXVzYmhpZF9yZXN0YXJ0X3F1ZXVlcyh1c2JoaWQpOwotCXNwaW5fdW5sb2NrX2lycSgmdXNi aGlkLT5sb2NrKTsKLQotCXN0YXR1cyA9IGhpZF9zdGFydF9pbihoaWQpOwotCWlmIChzdGF0dXMg PCAwKQotCQloaWRfaW9fZXJyb3IoaGlkKTsKKwlpbnQgc3RhdHVzID0gMDsKIAorCWhpZF9yZXN0 YXJ0X2lvKGhpZCk7CiAJaWYgKGRyaXZlcl9zdXNwZW5kZWQgJiYgaGlkLT5kcml2ZXIgJiYgaGlk LT5kcml2ZXItPnJlc3VtZSkKIAkJc3RhdHVzID0gaGlkLT5kcml2ZXItPnJlc3VtZShoaWQpOwog CXJldHVybiBzdGF0dXM7CkBAIC0xNTc0LDEyICsxNTgxLDggQEAgc3RhdGljIGludCBoaWRfc3Vz cGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpCiBz dGF0aWMgaW50IGhpZF9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpCiB7CiAJc3Ry dWN0IGhpZF9kZXZpY2UgKmhpZCA9IHVzYl9nZXRfaW50ZmRhdGEgKGludGYpOwotCXN0cnVjdCB1 c2JoaWRfZGV2aWNlICp1c2JoaWQgPSBoaWQtPmRyaXZlcl9kYXRhOwogCWludCBzdGF0dXM7CiAK LQlpZiAoIXRlc3RfYml0KEhJRF9TVEFSVEVELCAmdXNiaGlkLT5pb2ZsKSkKLQkJcmV0dXJuIDA7 Ci0KIAlzdGF0dXMgPSBoaWRfcmVzdW1lX2NvbW1vbihoaWQsIHRydWUpOwogCWRldl9kYmcoJmlu dGYtPmRldiwgInJlc3VtZSBzdGF0dXMgJWRcbiIsIHN0YXR1cyk7CiAJcmV0dXJuIDA7CkBAIC0x NTg4LDEwICsxNTkxLDggQEAgc3RhdGljIGludCBoaWRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJm YWNlICppbnRmKQogc3RhdGljIGludCBoaWRfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJm YWNlICppbnRmKQogewogCXN0cnVjdCBoaWRfZGV2aWNlICpoaWQgPSB1c2JfZ2V0X2ludGZkYXRh KGludGYpOwotCXN0cnVjdCB1c2JoaWRfZGV2aWNlICp1c2JoaWQgPSBoaWQtPmRyaXZlcl9kYXRh OwogCWludCBzdGF0dXM7CiAKLQljbGVhcl9iaXQoSElEX1NVU1BFTkRFRCwgJnVzYmhpZC0+aW9m bCk7CiAJc3RhdHVzID0gaGlkX3Bvc3RfcmVzZXQoaW50Zik7CiAJaWYgKHN0YXR1cyA+PSAwICYm IGhpZC0+ZHJpdmVyICYmIGhpZC0+ZHJpdmVyLT5yZXNldF9yZXN1bWUpIHsKIAkJaW50IHJldCA9 IGhpZC0+ZHJpdmVyLT5yZXNldF9yZXN1bWUoaGlkKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHYv cmluZ19idWZmZXIuYyBiL2RyaXZlcnMvaHYvcmluZ19idWZmZXIuYwppbmRleCAxNWRiNjZiNzQx NDEuLjU2NDhhZGQ2OGU1MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9odi9yaW5nX2J1ZmZlci5jCisr KyBiL2RyaXZlcnMvaHYvcmluZ19idWZmZXIuYwpAQCAtMTAzLDE3ICsxMDMsMzAgQEAgc3RhdGlj IGJvb2wgaHZfbmVlZF90b19zaWduYWwodTMyIG9sZF93cml0ZSwgc3RydWN0IGh2X3JpbmdfYnVm ZmVyX2luZm8gKnJiaSkKICAqICAgIHRoZXJlIGlzIHJvb20gZm9yIHRoZSBwcm9kdWNlciB0byBz ZW5kIHRoZSBwZW5kaW5nIHBhY2tldC4KICAqLwogCi1zdGF0aWMgYm9vbCBodl9uZWVkX3RvX3Np Z25hbF9vbl9yZWFkKHUzMiBvbGRfcmQsCi0JCQkJCSBzdHJ1Y3QgaHZfcmluZ19idWZmZXJfaW5m byAqcmJpKQorc3RhdGljIGJvb2wgaHZfbmVlZF90b19zaWduYWxfb25fcmVhZChzdHJ1Y3QgaHZf cmluZ19idWZmZXJfaW5mbyAqcmJpKQogewotCXUzMiBwcmV2X3dyaXRlX3N6OwogCXUzMiBjdXJf d3JpdGVfc3o7CiAJdTMyIHJfc2l6ZTsKLQl1MzIgd3JpdGVfbG9jID0gcmJpLT5yaW5nX2J1ZmZl ci0+d3JpdGVfaW5kZXg7CisJdTMyIHdyaXRlX2xvYzsKIAl1MzIgcmVhZF9sb2MgPSByYmktPnJp bmdfYnVmZmVyLT5yZWFkX2luZGV4OwotCXUzMiBwZW5kaW5nX3N6ID0gcmJpLT5yaW5nX2J1ZmZl ci0+cGVuZGluZ19zZW5kX3N6OworCXUzMiBwZW5kaW5nX3N6OwogCiAJLyoKKwkgKiBJc3N1ZSBh IGZ1bGwgbWVtb3J5IGJhcnJpZXIgYmVmb3JlIG1ha2luZyB0aGUgc2lnbmFsaW5nIGRlY2lzaW9u LgorCSAqIEhlcmUgaXMgdGhlIHJlYXNvbiBmb3IgaGF2aW5nIHRoaXMgYmFycmllcjoKKwkgKiBJ ZiB0aGUgcmVhZGluZyBvZiB0aGUgcGVuZF9zeiAoaW4gdGhpcyBmdW5jdGlvbikKKwkgKiB3ZXJl IHRvIGJlIHJlb3JkZXJlZCBhbmQgcmVhZCBiZWZvcmUgd2UgY29tbWl0IHRoZSBuZXcgcmVhZAor CSAqIGluZGV4IChpbiB0aGUgY2FsbGluZyBmdW5jdGlvbikgIHdlIGNvdWxkCisJICogaGF2ZSBh IHByb2JsZW0uIElmIHRoZSBob3N0IHdlcmUgdG8gc2V0IHRoZSBwZW5kaW5nX3N6IGFmdGVyIHdl CisJICogaGF2ZSBzYW1wbGVkIHBlbmRpbmdfc3ogYW5kIGdvIHRvIHNsZWVwIGJlZm9yZSB3ZSBj b21taXQgdGhlCisJICogcmVhZCBpbmRleCwgd2UgY291bGQgbWlzcyBzZW5kaW5nIHRoZSBpbnRl cnJ1cHQuIElzc3VlIGEgZnVsbAorCSAqIG1lbW9yeSBiYXJyaWVyIHRvIGFkZHJlc3MgdGhpcy4K KwkgKi8KKwltYigpOworCisJcGVuZGluZ19zeiA9IHJiaS0+cmluZ19idWZmZXItPnBlbmRpbmdf c2VuZF9zejsKKwl3cml0ZV9sb2MgPSByYmktPnJpbmdfYnVmZmVyLT53cml0ZV9pbmRleDsKKwkv KgogCSAqIElmIHRoZSBvdGhlciBlbmQgaXMgbm90IGJsb2NrZWQgb24gd3JpdGUgZG9uJ3QgYm90 aGVyLgogCSAqLwogCWlmIChwZW5kaW5nX3N6ID09IDApCkBAIC0xMjMsMTEgKzEzNiw3IEBAIHN0 YXRpYyBib29sIGh2X25lZWRfdG9fc2lnbmFsX29uX3JlYWQodTMyIG9sZF9yZCwKIAljdXJfd3Jp dGVfc3ogPSB3cml0ZV9sb2MgPj0gcmVhZF9sb2MgPyByX3NpemUgLSAod3JpdGVfbG9jIC0gcmVh ZF9sb2MpIDoKIAkJCXJlYWRfbG9jIC0gd3JpdGVfbG9jOwogCi0JcHJldl93cml0ZV9zeiA9IHdy aXRlX2xvYyA+PSBvbGRfcmQgPyByX3NpemUgLSAod3JpdGVfbG9jIC0gb2xkX3JkKSA6Ci0JCQlv bGRfcmQgLSB3cml0ZV9sb2M7Ci0KLQotCWlmICgocHJldl93cml0ZV9zeiA8IHBlbmRpbmdfc3op ICYmIChjdXJfd3JpdGVfc3ogPj0gcGVuZGluZ19zeikpCisJaWYgKGN1cl93cml0ZV9zeiA+PSBw ZW5kaW5nX3N6KQogCQlyZXR1cm4gdHJ1ZTsKIAogCXJldHVybiBmYWxzZTsKQEAgLTUxMiw3ICs1 MjEsNiBAQCBpbnQgaHZfcmluZ2J1ZmZlcl9yZWFkKHN0cnVjdCBodl9yaW5nX2J1ZmZlcl9pbmZv ICppbnJpbmdfaW5mbywgdm9pZCAqYnVmZmVyLAogCXUzMiBuZXh0X3JlYWRfbG9jYXRpb24gPSAw OwogCXU2NCBwcmV2X2luZGljZXMgPSAwOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0JdTMyIG9s ZF9yZWFkOwogCiAJaWYgKGJ1ZmxlbiA8PSAwKQogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTUyMyw4 ICs1MzEsNiBAQCBpbnQgaHZfcmluZ2J1ZmZlcl9yZWFkKHN0cnVjdCBodl9yaW5nX2J1ZmZlcl9p bmZvICppbnJpbmdfaW5mbywgdm9pZCAqYnVmZmVyLAogCQkJCSZieXRlc19hdmFpbF90b3JlYWQs CiAJCQkJJmJ5dGVzX2F2YWlsX3Rvd3JpdGUpOwogCi0Jb2xkX3JlYWQgPSBieXRlc19hdmFpbF90 b3JlYWQ7Ci0KIAkvKiBNYWtlIHN1cmUgdGhlcmUgaXMgc29tZXRoaW5nIHRvIHJlYWQgKi8KIAlp ZiAoYnl0ZXNfYXZhaWxfdG9yZWFkIDwgYnVmbGVuKSB7CiAJCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmlucmluZ19pbmZvLT5yaW5nX2xvY2ssIGZsYWdzKTsKQEAgLTU1NSw3ICs1NjEsNyBAQCBp bnQgaHZfcmluZ2J1ZmZlcl9yZWFkKHN0cnVjdCBodl9yaW5nX2J1ZmZlcl9pbmZvICppbnJpbmdf aW5mbywgdm9pZCAqYnVmZmVyLAogCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW5yaW5nX2lu Zm8tPnJpbmdfbG9jaywgZmxhZ3MpOwogCi0JKnNpZ25hbCA9IGh2X25lZWRfdG9fc2lnbmFsX29u X3JlYWQob2xkX3JlYWQsIGlucmluZ19pbmZvKTsKKwkqc2lnbmFsID0gaHZfbmVlZF90b19zaWdu YWxfb25fcmVhZChpbnJpbmdfaW5mbyk7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvaTJjL2J1c3Nlcy9pMmMtZXh5bm9zNS5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1l eHlub3M1LmMKaW5kZXggNjNkMjI5MjAyODU0Li5jMzVkNDRkMmY4YzEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvaTJjL2J1c3Nlcy9pMmMtZXh5bm9zNS5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9p MmMtZXh5bm9zNS5jCkBAIC02MTUsNyArNjE1LDkgQEAgc3RhdGljIGludCBleHlub3M1X2kyY194 ZmVyKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcCwKIAkJcmV0dXJuIC1FSU87CiAJfQogCi0JY2xr X3ByZXBhcmVfZW5hYmxlKGkyYy0+Y2xrKTsKKwlyZXQgPSBjbGtfZW5hYmxlKGkyYy0+Y2xrKTsK KwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OwogCiAJZm9yIChpID0gMDsgaSA8IG51bTsgaSsrLCBt c2dzKyspIHsKIAkJc3RvcCA9IChpID09IG51bSAtIDEpOwpAQCAtNjM5LDcgKzY0MSw3IEBAIHN0 YXRpYyBpbnQgZXh5bm9zNV9pMmNfeGZlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXAsCiAJfQog CiAgb3V0OgotCWNsa19kaXNhYmxlX3VucHJlcGFyZShpMmMtPmNsayk7CisJY2xrX2Rpc2FibGUo aTJjLT5jbGspOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTY5MSw3ICs2OTMsOSBAQCBzdGF0aWMg aW50IGV4eW5vczVfaTJjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCXJl dHVybiAtRU5PRU5UOwogCX0KIAotCWNsa19wcmVwYXJlX2VuYWJsZShpMmMtPmNsayk7CisJcmV0 ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGkyYy0+Y2xrKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0 OwogCiAJbWVtID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAw KTsKIAlpMmMtPnJlZ3MgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoJnBkZXYtPmRldiwgbWVtKTsK QEAgLTc0Miw2ICs3NDYsMTAgQEAgc3RhdGljIGludCBleHlub3M1X2kyY19wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCiAJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgaTJj KTsKIAorCWNsa19kaXNhYmxlKGkyYy0+Y2xrKTsKKworCXJldHVybiAwOworCiAgZXJyX2NsazoK IAljbGtfZGlzYWJsZV91bnByZXBhcmUoaTJjLT5jbGspOwogCXJldHVybiByZXQ7CkBAIC03NTMs NiArNzYxLDggQEAgc3RhdGljIGludCBleHlub3M1X2kyY19yZW1vdmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldikKIAogCWkyY19kZWxfYWRhcHRlcigmaTJjLT5hZGFwKTsKIAorCWNsa191 bnByZXBhcmUoaTJjLT5jbGspOworCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTc2NCw2ICs3NzQsOCBA QCBzdGF0aWMgaW50IGV4eW5vczVfaTJjX3N1c3BlbmRfbm9pcnEoc3RydWN0IGRldmljZSAqZGV2 KQogCiAJaTJjLT5zdXNwZW5kZWQgPSAxOwogCisJY2xrX3VucHJlcGFyZShpMmMtPmNsayk7CisK IAlyZXR1cm4gMDsKIH0KIApAQCAtNzczLDcgKzc4NSw5IEBAIHN0YXRpYyBpbnQgZXh5bm9zNV9p MmNfcmVzdW1lX25vaXJxKHN0cnVjdCBkZXZpY2UgKmRldikKIAlzdHJ1Y3QgZXh5bm9zNV9pMmMg KmkyYyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwogCWludCByZXQgPSAwOwogCi0JY2xr X3ByZXBhcmVfZW5hYmxlKGkyYy0+Y2xrKTsKKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoaTJj LT5jbGspOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CiAKIAlyZXQgPSBleHlub3M1X2hzaTJj X2Nsb2NrX3NldHVwKGkyYyk7CiAJaWYgKHJldCkgewpAQCAtNzgyLDcgKzc5Niw3IEBAIHN0YXRp YyBpbnQgZXh5bm9zNV9pMmNfcmVzdW1lX25vaXJxKHN0cnVjdCBkZXZpY2UgKmRldikKIAl9CiAK IAlleHlub3M1X2kyY19pbml0KGkyYyk7Ci0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGkyYy0+Y2xr KTsKKwljbGtfZGlzYWJsZShpMmMtPmNsayk7CiAJaTJjLT5zdXNwZW5kZWQgPSAwOwogCiAJcmV0 dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9tYWduZXRvbWV0ZXIvYWs4OTc1LmMgYi9k cml2ZXJzL2lpby9tYWduZXRvbWV0ZXIvYWs4OTc1LmMKaW5kZXggZWEwODMxM2FmMGQyLi5mZjEy YTE4YzVhZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWlvL21hZ25ldG9tZXRlci9hazg5NzUuYwor KysgYi9kcml2ZXJzL2lpby9tYWduZXRvbWV0ZXIvYWs4OTc1LmMKQEAgLTE2MCw2ICsxNjAsOCBA QCBzdGF0aWMgaW50IGFrODk3NV9zZXR1cF9pcnEoc3RydWN0IGFrODk3NV9kYXRhICpkYXRhKQog CWludCByYzsKIAlpbnQgaXJxOwogCisJaW5pdF93YWl0cXVldWVfaGVhZCgmZGF0YS0+ZGF0YV9y ZWFkeV9xdWV1ZSk7CisJY2xlYXJfYml0KDAsICZkYXRhLT5mbGFncyk7CiAJaWYgKGNsaWVudC0+ aXJxKQogCQlpcnEgPSBjbGllbnQtPmlycTsKIAllbHNlCkBAIC0xNzUsOCArMTc3LDYgQEAgc3Rh dGljIGludCBhazg5NzVfc2V0dXBfaXJxKHN0cnVjdCBhazg5NzVfZGF0YSAqZGF0YSkKIAkJcmV0 dXJuIHJjOwogCX0KIAotCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmRhdGEtPmRhdGFfcmVhZHlfcXVl dWUpOwotCWNsZWFyX2JpdCgwLCAmZGF0YS0+ZmxhZ3MpOwogCWRhdGEtPmVvY19pcnEgPSBpcnE7 CiAKIAlyZXR1cm4gcmM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91Y20u YyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VjbS5jCmluZGV4IGYyZjYzOTMzZThhOS4uNWJl ZmVjMTE4YTE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91Y20uYworKysg Yi9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91Y20uYwpAQCAtNDgsNiArNDgsNyBAQAogCiAjaW5j bHVkZSA8YXNtL3VhY2Nlc3MuaD4KIAorI2luY2x1ZGUgPHJkbWEvaWIuaD4KICNpbmNsdWRlIDxy ZG1hL2liX2NtLmg+CiAjaW5jbHVkZSA8cmRtYS9pYl91c2VyX2NtLmg+CiAjaW5jbHVkZSA8cmRt YS9pYl9tYXJzaGFsbC5oPgpAQCAtMTEwNCw2ICsxMTA1LDkgQEAgc3RhdGljIHNzaXplX3QgaWJf dWNtX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxwLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLAogCXN0 cnVjdCBpYl91Y21fY21kX2hkciBoZHI7CiAJc3NpemVfdCByZXN1bHQ7CiAKKwlpZiAoV0FSTl9P Tl9PTkNFKCFpYl9zYWZlX2ZpbGVfYWNjZXNzKGZpbHApKSkKKwkJcmV0dXJuIC1FQUNDRVM7CisK IAlpZiAobGVuIDwgc2l6ZW9mKGhkcikpCiAJCXJldHVybiAtRUlOVkFMOwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91Y21hLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvY29y ZS91Y21hLmMKaW5kZXggNDVkNjdlOTIyOGQ3Li44MWRkODRkMGI2OGIgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvaW5maW5pYmFuZC9jb3JlL3VjbWEuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvY29y ZS91Y21hLmMKQEAgLTE0ODcsNiArMTQ4Nyw5IEBAIHN0YXRpYyBzc2l6ZV90IHVjbWFfd3JpdGUo c3RydWN0IGZpbGUgKmZpbHAsIGNvbnN0IGNoYXIgX191c2VyICpidWYsCiAJc3RydWN0IHJkbWFf dWNtX2NtZF9oZHIgaGRyOwogCXNzaXplX3QgcmV0OwogCisJaWYgKFdBUk5fT05fT05DRSghaWJf c2FmZV9maWxlX2FjY2VzcyhmaWxwKSkpCisJCXJldHVybiAtRUFDQ0VTOworCiAJaWYgKGxlbiA8 IHNpemVvZihoZHIpKQogCQlyZXR1cm4gLUVJTlZBTDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9p bmZpbmliYW5kL2NvcmUvdXZlcmJzX21haW4uYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3V2 ZXJic19tYWluLmMKaW5kZXggODgwMmQ1Y2NkOTNkLi5mM2VjZmU0Yjk1NzEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3V2ZXJic19tYWluLmMKKysrIGIvZHJpdmVycy9pbmZp bmliYW5kL2NvcmUvdXZlcmJzX21haW4uYwpAQCAtNDgsNiArNDgsOCBAQAogCiAjaW5jbHVkZSA8 YXNtL3VhY2Nlc3MuaD4KIAorI2luY2x1ZGUgPHJkbWEvaWIuaD4KKwogI2luY2x1ZGUgInV2ZXJi cy5oIgogCiBNT0RVTEVfQVVUSE9SKCJSb2xhbmQgRHJlaWVyIik7CkBAIC02MDUsNiArNjA3LDkg QEAgc3RhdGljIHNzaXplX3QgaWJfdXZlcmJzX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxwLCBjb25z dCBjaGFyIF9fdXNlciAqYnVmLAogCXN0cnVjdCBpYl91dmVyYnNfY21kX2hkciBoZHI7CiAJX191 MzIgZmxhZ3M7CiAKKwlpZiAoV0FSTl9PTl9PTkNFKCFpYl9zYWZlX2ZpbGVfYWNjZXNzKGZpbHAp KSkKKwkJcmV0dXJuIC1FQUNDRVM7CisKIAlpZiAoY291bnQgPCBzaXplb2YgaGRyKQogCQlyZXR1 cm4gLUVJTlZBTDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lw YXRoX2ZpbGVfb3BzLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfZmlsZV9v cHMuYwppbmRleCA2ZDdmNDUzYjRkMDUuLmEwNjI2YjhjNjFjNSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX2ZpbGVfb3BzLmMKKysrIGIvZHJpdmVycy9pbmZp bmliYW5kL2h3L2lwYXRoL2lwYXRoX2ZpbGVfb3BzLmMKQEAgLTQ1LDYgKzQ1LDggQEAKICNpbmNs dWRlIDxsaW51eC9jcHUuaD4KICNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgogCisjaW5jbHVkZSA8 cmRtYS9pYi5oPgorCiAjaW5jbHVkZSAiaXBhdGhfa2VybmVsLmgiCiAjaW5jbHVkZSAiaXBhdGhf Y29tbW9uLmgiCiAjaW5jbHVkZSAiaXBhdGhfdXNlcl9zZG1hLmgiCkBAIC0yMjQwLDYgKzIyNDIs OSBAQCBzdGF0aWMgc3NpemVfdCBpcGF0aF93cml0ZShzdHJ1Y3QgZmlsZSAqZnAsIGNvbnN0IGNo YXIgX191c2VyICpkYXRhLAogCXNzaXplX3QgcmV0ID0gMDsKIAl2b2lkICpkZXN0OwogCisJaWYg KFdBUk5fT05fT05DRSghaWJfc2FmZV9maWxlX2FjY2VzcyhmcCkpKQorCQlyZXR1cm4gLUVBQ0NF UzsKKwogCWlmIChjb3VudCA8IHNpemVvZihjbWQudHlwZSkpIHsKIAkJcmV0ID0gLUVJTlZBTDsK IAkJZ290byBiYWlsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJf ZmlsZV9vcHMuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX2ZpbGVfb3BzLmMKaW5k ZXggYjE1ZTM0ZWVlZjY4Li4zYWI4MjI5YjFkOGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5p YmFuZC9ody9xaWIvcWliX2ZpbGVfb3BzLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3Fp Yi9xaWJfZmlsZV9vcHMuYwpAQCAtNDUsNiArNDUsOCBAQAogI2luY2x1ZGUgPGxpbnV4L2RlbGF5 Lmg+CiAjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+CiAKKyNpbmNsdWRlIDxyZG1hL2liLmg+CisK ICNpbmNsdWRlICJxaWIuaCIKICNpbmNsdWRlICJxaWJfY29tbW9uLmgiCiAjaW5jbHVkZSAicWli X3VzZXJfc2RtYS5oIgpAQCAtMjA1OCw2ICsyMDYwLDkgQEAgc3RhdGljIHNzaXplX3QgcWliX3dy aXRlKHN0cnVjdCBmaWxlICpmcCwgY29uc3QgY2hhciBfX3VzZXIgKmRhdGEsCiAJc3NpemVfdCBy ZXQgPSAwOwogCXZvaWQgKmRlc3Q7CiAKKwlpZiAoV0FSTl9PTl9PTkNFKCFpYl9zYWZlX2ZpbGVf YWNjZXNzKGZwKSkpCisJCXJldHVybiAtRUFDQ0VTOworCiAJaWYgKGNvdW50IDwgc2l6ZW9mKGNt ZC50eXBlKSkgewogCQlyZXQgPSAtRUlOVkFMOwogCQlnb3RvIGJhaWw7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2lucHV0L21pc2MvcG1pYzh4eHgtcHdya2V5LmMgYi9kcml2ZXJzL2lucHV0L21pc2Mv cG1pYzh4eHgtcHdya2V5LmMKaW5kZXggYzkxZTNkMzNhZWE5Li44OGRiOTIwNGJhYzIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvaW5wdXQvbWlzYy9wbWljOHh4eC1wd3JrZXkuYworKysgYi9kcml2ZXJz L2lucHV0L21pc2MvcG1pYzh4eHgtcHdya2V5LmMKQEAgLTk0LDcgKzk0LDggQEAgc3RhdGljIGlu dCBwbWljOHh4eF9wd3JrZXlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlp ZiAob2ZfcHJvcGVydHlfcmVhZF91MzIocGRldi0+ZGV2Lm9mX25vZGUsICJkZWJvdW5jZSIsICZr cGRfZGVsYXkpKQogCQlrcGRfZGVsYXkgPSAxNTYyNTsKIAotCWlmIChrcGRfZGVsYXkgPiA2MjUw MCB8fCBrcGRfZGVsYXkgPT0gMCkgeworCS8qIFZhbGlkIHJhbmdlIG9mIHB3ciBrZXkgdHJpZ2dl ciBkZWxheSBpcyAxLzY0IHNlYyB0byAyIHNlY29uZHMuICovCisJaWYgKGtwZF9kZWxheSA+IFVT RUNfUEVSX1NFQyAqIDIgfHwga3BkX2RlbGF5IDwgVVNFQ19QRVJfU0VDIC8gNjQpIHsKIAkJZGV2 X2VycigmcGRldi0+ZGV2LCAiaW52YWxpZCBwb3dlciBrZXkgdHJpZ2dlciBkZWxheVxuIik7CiAJ CXJldHVybiAtRUlOVkFMOwogCX0KQEAgLTEyNCw4ICsxMjUsOCBAQCBzdGF0aWMgaW50IHBtaWM4 eHh4X3B3cmtleV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXB3ci0+bmFt ZSA9ICJwbWljOHh4eF9wd3JrZXkiOwogCXB3ci0+cGh5cyA9ICJwbWljOHh4eF9wd3JrZXkvaW5w dXQwIjsKIAotCWRlbGF5ID0gKGtwZF9kZWxheSA8PCAxMCkgLyBVU0VDX1BFUl9TRUM7Ci0JZGVs YXkgPSAxICsgaWxvZzIoZGVsYXkpOworCWRlbGF5ID0gKGtwZF9kZWxheSA8PCA2KSAvIFVTRUNf UEVSX1NFQzsKKwlkZWxheSA9IGlsb2cyKGRlbGF5KTsKIAogCWVyciA9IHJlZ21hcF9yZWFkKHJl Z21hcCwgUE9OX0NOVExfMSwgJnBvbl9jbnRsKTsKIAlpZiAoZXJyIDwgMCkgewpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9pbnB1dC90YWJsZXQvZ3Rjby5jIGIvZHJpdmVycy9pbnB1dC90YWJsZXQvZ3Rj by5jCmluZGV4IDg1ODA0NTY5NGU5ZC4uYTUxZGU1NDNhMGIyIDEwMDY0NAotLS0gYS9kcml2ZXJz L2lucHV0L3RhYmxldC9ndGNvLmMKKysrIGIvZHJpdmVycy9pbnB1dC90YWJsZXQvZ3Rjby5jCkBA IC04NjgsNiArODY4LDE0IEBAIHN0YXRpYyBpbnQgZ3Rjb19wcm9iZShzdHJ1Y3QgdXNiX2ludGVy ZmFjZSAqdXNiaW50ZXJmYWNlLAogCQlnb3RvIGVycl9mcmVlX2J1ZjsKIAl9CiAKKwkvKiBTYW5p dHkgY2hlY2sgdGhhdCBhIGRldmljZSBoYXMgYW4gZW5kcG9pbnQgKi8KKwlpZiAodXNiaW50ZXJm YWNlLT5hbHRzZXR0aW5nWzBdLmRlc2MuYk51bUVuZHBvaW50cyA8IDEpIHsKKwkJZGV2X2Vycigm dXNiaW50ZXJmYWNlLT5kZXYsCisJCQkiSW52YWxpZCBudW1iZXIgb2YgZW5kcG9pbnRzXG4iKTsK KwkJZXJyb3IgPSAtRUlOVkFMOworCQlnb3RvIGVycl9mcmVlX3VyYjsKKwl9CisKIAkvKgogCSAq IFRoZSBlbmRwb2ludCBpcyBhbHdheXMgYWx0c2V0dGluZyAwLCB3ZSBrbm93IHRoaXMgc2luY2Ug d2Uga25vdwogCSAqIHRoaXMgZGV2aWNlIG9ubHkgaGFzIG9uZSBpbnRlcnJ1cHQgZW5kcG9pbnQK QEAgLTg4OSw3ICs4OTcsNyBAQCBzdGF0aWMgaW50IGd0Y29fcHJvYmUoc3RydWN0IHVzYl9pbnRl cmZhY2UgKnVzYmludGVyZmFjZSwKIAkgKiBISUQgcmVwb3J0IGRlc2NyaXB0b3IKIAkgKi8KIAlp ZiAodXNiX2dldF9leHRyYV9kZXNjcmlwdG9yKHVzYmludGVyZmFjZS0+Y3VyX2FsdHNldHRpbmcs Ci0JCQkJICAgICBISURfREVWSUNFX1RZUEUsICZoaWRfZGVzYykgIT0gMCl7CisJCQkJICAgICBI SURfREVWSUNFX1RZUEUsICZoaWRfZGVzYykgIT0gMCkgewogCQlkZXZfZXJyKCZ1c2JpbnRlcmZh Y2UtPmRldiwKIAkJCSJDYW4ndCByZXRyaWV2ZSBleHRhIFVTQiBkZXNjcmlwdG9yIHRvIGdldCBo aWQgcmVwb3J0IGRlc2NyaXB0b3IgbGVuZ3RoXG4iKTsKIAkJZXJyb3IgPSAtRUlPOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDIuYyBiL2RyaXZlcnMv bmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwyLmMKaW5kZXggNjc0NmJkNzE3MTQ2Li5kYWVj MmU1YTI3ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9h dGwyLmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDIuYwpAQCAt MTQxMiw3ICsxNDEyLDcgQEAgc3RhdGljIGludCBhdGwyX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpw ZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KQogCiAJZXJyID0gLUVJTzsKIAot CW5ldGRldi0+aHdfZmVhdHVyZXMgPSBORVRJRl9GX1NHIHwgTkVUSUZfRl9IV19WTEFOX0NUQUdf Ulg7CisJbmV0ZGV2LT5od19mZWF0dXJlcyA9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX1JYOwogCW5l dGRldi0+ZmVhdHVyZXMgfD0gKE5FVElGX0ZfSFdfVkxBTl9DVEFHX1RYIHwgTkVUSUZfRl9IV19W TEFOX0NUQUdfUlgpOwogCiAJLyogSW5pdCBQSFkgYXMgZWFybHkgYXMgcG9zc2libGUgZHVlIHRv IHBvd2VyIHNhdmluZyBpc3N1ZSAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0 L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNv bS9nZW5ldC9iY21nZW5ldC5jCmluZGV4IDI1ZjI2N2NjOTY3YS4uOWNiZmRhMjk2MWVjIDEwMDY0 NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jCisr KyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmMKQEAgLTcx NSw3ICs3MTUsMTEgQEAgc3RhdGljIHZvaWQgYmNtZ2VuZXRfZ2V0X2V0aHRvb2xfc3RhdHMoc3Ry dWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJZWxzZQogCQkJcCA9IChjaGFyICopcHJpdjsKIAkJcCAr PSBzLT5zdGF0X29mZnNldDsKLQkJZGF0YVtpXSA9ICoodTMyICopcDsKKwkJaWYgKHNpemVvZih1 bnNpZ25lZCBsb25nKSAhPSBzaXplb2YodTMyKSAmJgorCQkgICAgcy0+c3RhdF9zaXplb2YgPT0g c2l6ZW9mKHVuc2lnbmVkIGxvbmcpKQorCQkJZGF0YVtpXSA9ICoodW5zaWduZWQgbG9uZyAqKXA7 CisJCWVsc2UKKwkJCWRhdGFbaV0gPSAqKHUzMiAqKXA7CiAJfQogfQogCmRpZmYgLS1naXQgYS9k cml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX3R4LmMgYi9kcml2ZXJzL25ldC9l dGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX3R4LmMKaW5kZXggODA2OGIwNTU3YzVhLi5jNWJlNmQ4 OTBlOTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5f dHguYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX3R4LmMKQEAg LTM3MSw3ICszNzEsNiBAQCBzdGF0aWMgYm9vbCBtbHg0X2VuX3Byb2Nlc3NfdHhfY3Eoc3RydWN0 IG5ldF9kZXZpY2UgKmRldiwKIAl1MzIgcGFja2V0cyA9IDA7CiAJdTMyIGJ5dGVzID0gMDsKIAlp bnQgZmFjdG9yID0gcHJpdi0+Y3FlX2ZhY3RvcjsKLQl1NjQgdGltZXN0YW1wID0gMDsKIAlpbnQg ZG9uZSA9IDA7CiAJaW50IGJ1ZGdldCA9IHByaXYtPnR4X3dvcmtfbGltaXQ7CiAKQEAgLTQwNSw5 ICs0MDQsMTIgQEAgc3RhdGljIGJvb2wgbWx4NF9lbl9wcm9jZXNzX3R4X2NxKHN0cnVjdCBuZXRf ZGV2aWNlICpkZXYsCiAJCW5ld19pbmRleCA9IGJlMTZfdG9fY3B1KGNxZS0+d3FlX2luZGV4KSAm IHNpemVfbWFzazsKIAogCQlkbyB7CisJCQl1NjQgdGltZXN0YW1wID0gMDsKKwogCQkJdHhiYnNf c2tpcHBlZCArPSByaW5nLT5sYXN0X25yX3R4YmI7CiAJCQlyaW5nX2luZGV4ID0gKHJpbmdfaW5k ZXggKyByaW5nLT5sYXN0X25yX3R4YmIpICYgc2l6ZV9tYXNrOwotCQkJaWYgKHJpbmctPnR4X2lu Zm9bcmluZ19pbmRleF0udHNfcmVxdWVzdGVkKQorCisJCQlpZiAodW5saWtlbHkocmluZy0+dHhf aW5mb1tyaW5nX2luZGV4XS50c19yZXF1ZXN0ZWQpKQogCQkJCXRpbWVzdGFtcCA9IG1seDRfZW5f Z2V0X2NxZV90cyhjcWUpOwogCiAJCQkvKiBmcmVlIG5leHQgZGVzY3JpcHRvciAqLwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaV9lbWFjLmMgYi9kcml2ZXJzL25l dC9ldGhlcm5ldC90aS9kYXZpbmNpX2VtYWMuYwppbmRleCAzNWExMzllOWE4MzMuLjE2ZDk1MDAy YjljMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaV9lbWFjLmMK KysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaV9lbWFjLmMKQEAgLTE4NDMsOCAr MTg0Myw2IEBAIGRhdmluY2lfZW1hY19vZl9nZXRfcGRhdGEoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldiwgc3RydWN0IGVtYWNfcHJpdiAqcHJpdikKIAkJcGRhdGEtPmh3X3JhbV9hZGRyID0g YXV4ZGF0YS0+aHdfcmFtX2FkZHI7CiAJfQogCi0JcGRldi0+ZGV2LnBsYXRmb3JtX2RhdGEgPSBw ZGF0YTsKLQogCXJldHVybiAgcGRhdGE7CiB9CiAKQEAgLTIwMzMsNiArMjAzMSw3IEBAIHN0YXRp YyBpbnQgZGF2aW5jaV9lbWFjX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQog CWNwZG1hX2N0bHJfZGVzdHJveShwcml2LT5kbWEpOwogCiAJdW5yZWdpc3Rlcl9uZXRkZXYobmRl dik7CisJcG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5kZXYpOwogCWZyZWVfbmV0ZGV2KG5kZXYp OwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tYWN2dGFwLmMgYi9kcml2 ZXJzL25ldC9tYWN2dGFwLmMKaW5kZXggZTljMzY3N2ExOTZlLi5mYWE3OTA0MGQzMzYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvbmV0L21hY3Z0YXAuYworKysgYi9kcml2ZXJzL25ldC9tYWN2dGFwLmMK QEAgLTMxMCw3ICszMTAsNyBAQCBzdGF0aWMgcnhfaGFuZGxlcl9yZXN1bHRfdCBtYWN2dGFwX2hh bmRsZV9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqKnBza2IpCiAJCQlnb3RvIHdha2VfdXA7CiAJCX0K IAotCQlrZnJlZV9za2Ioc2tiKTsKKwkJY29uc3VtZV9za2Ioc2tiKTsKIAkJd2hpbGUgKHNlZ3Mp IHsKIAkJCXN0cnVjdCBza19idWZmICpuc2tiID0gc2Vncy0+bmV4dDsKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9waW5jdHJsL3BpbmN0cmwtc2luZ2xlLmMgYi9kcml2ZXJzL3BpbmN0cmwvcGluY3Ry bC1zaW5nbGUuYwppbmRleCAyOTYwNTU3YmZlZDkuLjhmZGE4MDFjNWM0OCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9waW5jdHJsL3BpbmN0cmwtc2luZ2xlLmMKKysrIGIvZHJpdmVycy9waW5jdHJsL3Bp bmN0cmwtc2luZ2xlLmMKQEAgLTEzMjksOSArMTMyOSw5IEBAIHN0YXRpYyBpbnQgcGNzX3BhcnNl X2JpdHNfaW5fcGluY3RybF9lbnRyeShzdHJ1Y3QgcGNzX2RldmljZSAqcGNzLAogCiAJCS8qIFBh cnNlIHBpbnMgaW4gZWFjaCByb3cgZnJvbSBMU0IgKi8KIAkJd2hpbGUgKG1hc2spIHsKLQkJCWJp dF9wb3MgPSBmZnMobWFzayk7CisJCQliaXRfcG9zID0gX19mZnMobWFzayk7CiAJCQlwaW5fbnVt X2Zyb21fbHNiID0gYml0X3BvcyAvIHBjcy0+Yml0c19wZXJfcGluOwotCQkJbWFza19wb3MgPSAo KHBjcy0+Zm1hc2spIDw8IChiaXRfcG9zIC0gMSkpOworCQkJbWFza19wb3MgPSAoKHBjcy0+Zm1h c2spIDw8IGJpdF9wb3MpOwogCQkJdmFsX3BvcyA9IHZhbCAmIG1hc2tfcG9zOwogCQkJc3VibWFz ayA9IG1hc2sgJiBtYXNrX3BvczsKIApAQCAtMTkwOCw3ICsxOTA4LDcgQEAgc3RhdGljIGludCBw Y3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlyZXQgPSBvZl9wcm9wZXJ0 eV9yZWFkX3UzMihucCwgInBpbmN0cmwtc2luZ2xlLGZ1bmN0aW9uLW1hc2siLAogCQkJCSAgICZw Y3MtPmZtYXNrKTsKIAlpZiAoIXJldCkgewotCQlwY3MtPmZzaGlmdCA9IGZmcyhwY3MtPmZtYXNr KSAtIDE7CisJCXBjcy0+ZnNoaWZ0ID0gX19mZnMocGNzLT5mbWFzayk7CiAJCXBjcy0+Zm1heCA9 IHBjcy0+Zm1hc2sgPj4gcGNzLT5mc2hpZnQ7CiAJfSBlbHNlIHsKIAkJLyogSWYgbWFzayBwcm9w ZXJ0eSBkb2Vzbid0IGV4aXN0LCBmdW5jdGlvbiBtdXggaXMgaW52YWxpZC4gKi8KZGlmZiAtLWdp dCBhL2RyaXZlcnMvcmVndWxhdG9yL3MybXBzMTEuYyBiL2RyaXZlcnMvcmVndWxhdG9yL3MybXBz MTEuYwppbmRleCAwMmUyZmIyZmNhNjYuLmM5NTYyYTc3M2UyOCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9yZWd1bGF0b3IvczJtcHMxMS5jCisrKyBiL2RyaXZlcnMvcmVndWxhdG9yL3MybXBzMTEuYwpA QCAtMzM1LDEwICszMzUsMTAgQEAgc3RhdGljIHN0cnVjdCByZWd1bGF0b3Jfb3BzIHMybXBzMTFf YnVja19vcHMgPSB7CiAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAkJCQlcCiAJLm1pbl91VgkJPSBT Mk1QUzExX0JVQ0tfTUlOMywJCQlcCiAJLnVWX3N0ZXAJPSBTMk1QUzExX0JVQ0tfU1RFUDMsCQkJ XAotCS5uX3ZvbHRhZ2VzCT0gUzJNUFMxMV9CVUNLX05fVk9MVEFHRVMsCQlcCisJLm5fdm9sdGFn ZXMJPSBTMk1QUzExX0JVQ0s5X05fVk9MVEFHRVMsCQlcCiAJLnJhbXBfZGVsYXkJPSBTMk1QUzEx X1JBTVBfREVMQVksCQkJXAogCS52c2VsX3JlZwk9IFMyTVBTMTFfUkVHX0I5Q1RSTDIsCQkJXAot CS52c2VsX21hc2sJPSBTMk1QUzExX0JVQ0tfVlNFTF9NQVNLLAkJXAorCS52c2VsX21hc2sJPSBT Mk1QUzExX0JVQ0s5X1ZTRUxfTUFTSywJCVwKIAkuZW5hYmxlX3JlZwk9IFMyTVBTMTFfUkVHX0I5 Q1RSTDEsCQkJXAogCS5lbmFibGVfbWFzawk9IFMyTVBTMTFfRU5BQkxFX01BU0sJCQlcCiB9CmRp ZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvYmxvY2svc2NtX2Jsay5jIGIvZHJpdmVycy9zMzkwL2Js b2NrL3NjbV9ibGsuYwppbmRleCA3NmJlZDE3NDNkYjEuLmJjMWVhNTgwNDBkNyAxMDA2NDQKLS0t IGEvZHJpdmVycy9zMzkwL2Jsb2NrL3NjbV9ibGsuYworKysgYi9kcml2ZXJzL3MzOTAvYmxvY2sv c2NtX2Jsay5jCkBAIC0yMTAsNyArMjEwLDcgQEAgc3RhdGljIHZvaWQgc2NtX2Jsa19yZXF1ZXN0 KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpycSkKIAkJaWYgKHJlcS0+Y21kX3R5cGUgIT0gUkVRX1RZ UEVfRlMpIHsKIAkJCWJsa19zdGFydF9yZXF1ZXN0KHJlcSk7CiAJCQlibGtfZHVtcF9ycV9mbGFn cyhyZXEsIEtNU0dfQ09NUE9ORU5UICIgYmFkIHJlcXVlc3QiKTsKLQkJCWJsa19lbmRfcmVxdWVz dF9hbGwocmVxLCAtRUlPKTsKKwkJCV9fYmxrX2VuZF9yZXF1ZXN0X2FsbChyZXEsIC1FSU8pOwog CQkJY29udGludWU7CiAJCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvc3BpLXRpLXFzcGku YyBiL2RyaXZlcnMvc3BpL3NwaS10aS1xc3BpLmMKaW5kZXggYjY4NTExMjA0MzY3Li5kMDlkMDVi OWM1NGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3BpL3NwaS10aS1xc3BpLmMKKysrIGIvZHJpdmVy cy9zcGkvc3BpLXRpLXFzcGkuYwpAQCAtOTEsNiArOTEsNyBAQCBzdHJ1Y3QgdGlfcXNwaSB7CiAv KiBDb21tYW5kICovCiAjZGVmaW5lIFFTUElfRU5fQ1MobikJCQkobiA8PCAyOCkKICNkZWZpbmUg UVNQSV9XTEVOKG4pCQkJKChuIC0gMSkgPDwgMTkpCisjZGVmaW5lIFFTUElfV0xFTl9NQVNLCQkJ UVNQSV9XTEVOKDEyOCkKICNkZWZpbmUgUVNQSV8zX1BJTgkJCSgxIDw8IDE4KQogI2RlZmluZSBR U1BJX1JEX1NOR0wJCQkoMSA8PCAxNikKICNkZWZpbmUgUVNQSV9XUl9TTkdMCQkJKDIgPDwgMTYp CkBAIC0xOTksMTUgKzIwMCwxNSBAQCBzdGF0aWMgdm9pZCB0aV9xc3BpX3Jlc3RvcmVfY3R4KHN0 cnVjdCB0aV9xc3BpICpxc3BpKQogCXRpX3FzcGlfd3JpdGUocXNwaSwgY3R4X3JlZy0+Y2xrY3Ry bCwgUVNQSV9TUElfQ0xPQ0tfQ05UUkxfUkVHKTsKIH0KIAotc3RhdGljIGludCBxc3BpX3dyaXRl X21zZyhzdHJ1Y3QgdGlfcXNwaSAqcXNwaSwgc3RydWN0IHNwaV90cmFuc2ZlciAqdCkKK3N0YXRp YyBpbnQgcXNwaV93cml0ZV9tc2coc3RydWN0IHRpX3FzcGkgKnFzcGksIHN0cnVjdCBzcGlfdHJh bnNmZXIgKnQsCisJCQkgIGludCBjb3VudCkKIHsKLQlpbnQgd2xlbiwgY291bnQsIHJldDsKKwlp bnQgd2xlbiwgcmV0OwogCXVuc2lnbmVkIGludCBjbWQ7CiAJY29uc3QgdTggKnR4YnVmOwogCiAJ dHhidWYgPSB0LT50eF9idWY7CiAJY21kID0gcXNwaS0+Y21kIHwgUVNQSV9XUl9TTkdMOwotCWNv dW50ID0gdC0+bGVuOwogCXdsZW4gPSB0LT5iaXRzX3Blcl93b3JkID4+IDM7CS8qIGluIGJ5dGVz ICovCiAKIAl3aGlsZSAoY291bnQpIHsKQEAgLTI0Myw5ICsyNDQsMTAgQEAgc3RhdGljIGludCBx c3BpX3dyaXRlX21zZyhzdHJ1Y3QgdGlfcXNwaSAqcXNwaSwgc3RydWN0IHNwaV90cmFuc2ZlciAq dCkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBxc3BpX3JlYWRfbXNnKHN0cnVjdCB0aV9x c3BpICpxc3BpLCBzdHJ1Y3Qgc3BpX3RyYW5zZmVyICp0KQorc3RhdGljIGludCBxc3BpX3JlYWRf bXNnKHN0cnVjdCB0aV9xc3BpICpxc3BpLCBzdHJ1Y3Qgc3BpX3RyYW5zZmVyICp0LAorCQkJIGlu dCBjb3VudCkKIHsKLQlpbnQgd2xlbiwgY291bnQsIHJldDsKKwlpbnQgd2xlbiwgcmV0OwogCXVu c2lnbmVkIGludCBjbWQ7CiAJdTggKnJ4YnVmOwogCkBAIC0yNjIsNyArMjY0LDYgQEAgc3RhdGlj IGludCBxc3BpX3JlYWRfbXNnKHN0cnVjdCB0aV9xc3BpICpxc3BpLCBzdHJ1Y3Qgc3BpX3RyYW5z ZmVyICp0KQogCQljbWQgfD0gUVNQSV9SRF9TTkdMOwogCQlicmVhazsKIAl9Ci0JY291bnQgPSB0 LT5sZW47CiAJd2xlbiA9IHQtPmJpdHNfcGVyX3dvcmQgPj4gMzsJLyogaW4gYnl0ZXMgKi8KIAog CXdoaWxlIChjb3VudCkgewpAQCAtMjkyLDEyICsyOTMsMTMgQEAgc3RhdGljIGludCBxc3BpX3Jl YWRfbXNnKHN0cnVjdCB0aV9xc3BpICpxc3BpLCBzdHJ1Y3Qgc3BpX3RyYW5zZmVyICp0KQogCXJl dHVybiAwOwogfQogCi1zdGF0aWMgaW50IHFzcGlfdHJhbnNmZXJfbXNnKHN0cnVjdCB0aV9xc3Bp ICpxc3BpLCBzdHJ1Y3Qgc3BpX3RyYW5zZmVyICp0KQorc3RhdGljIGludCBxc3BpX3RyYW5zZmVy X21zZyhzdHJ1Y3QgdGlfcXNwaSAqcXNwaSwgc3RydWN0IHNwaV90cmFuc2ZlciAqdCwKKwkJCSAg ICAgaW50IGNvdW50KQogewogCWludCByZXQ7CiAKIAlpZiAodC0+dHhfYnVmKSB7Ci0JCXJldCA9 IHFzcGlfd3JpdGVfbXNnKHFzcGksIHQpOworCQlyZXQgPSBxc3BpX3dyaXRlX21zZyhxc3BpLCB0 LCBjb3VudCk7CiAJCWlmIChyZXQpIHsKIAkJCWRldl9kYmcocXNwaS0+ZGV2LCAiRXJyb3Igd2hp bGUgd3JpdGluZ1xuIik7CiAJCQlyZXR1cm4gcmV0OwpAQCAtMzA1LDcgKzMwNyw3IEBAIHN0YXRp YyBpbnQgcXNwaV90cmFuc2Zlcl9tc2coc3RydWN0IHRpX3FzcGkgKnFzcGksIHN0cnVjdCBzcGlf dHJhbnNmZXIgKnQpCiAJfQogCiAJaWYgKHQtPnJ4X2J1ZikgewotCQlyZXQgPSBxc3BpX3JlYWRf bXNnKHFzcGksIHQpOworCQlyZXQgPSBxc3BpX3JlYWRfbXNnKHFzcGksIHQsIGNvdW50KTsKIAkJ aWYgKHJldCkgewogCQkJZGV2X2RiZyhxc3BpLT5kZXYsICJFcnJvciB3aGlsZSByZWFkaW5nXG4i KTsKIAkJCXJldHVybiByZXQ7CkBAIC0zMjIsNyArMzI0LDggQEAgc3RhdGljIGludCB0aV9xc3Bp X3N0YXJ0X3RyYW5zZmVyX29uZShzdHJ1Y3Qgc3BpX21hc3RlciAqbWFzdGVyLAogCXN0cnVjdCBz cGlfZGV2aWNlICpzcGkgPSBtLT5zcGk7CiAJc3RydWN0IHNwaV90cmFuc2ZlciAqdDsKIAlpbnQg c3RhdHVzID0gMCwgcmV0OwotCWludCBmcmFtZV9sZW5ndGg7CisJdW5zaWduZWQgaW50IGZyYW1l X2xlbl93b3JkcywgdHJhbnNmZXJfbGVuX3dvcmRzOworCWludCB3bGVuOwogCiAJLyogc2V0dXAg ZGV2aWNlIGNvbnRyb2wgcmVnICovCiAJcXNwaS0+ZGMgPSAwOwpAQCAtMzM0LDE0ICszMzcsMTUg QEAgc3RhdGljIGludCB0aV9xc3BpX3N0YXJ0X3RyYW5zZmVyX29uZShzdHJ1Y3Qgc3BpX21hc3Rl ciAqbWFzdGVyLAogCWlmIChzcGktPm1vZGUgJiBTUElfQ1NfSElHSCkKIAkJcXNwaS0+ZGMgfD0g UVNQSV9DU1BPTChzcGktPmNoaXBfc2VsZWN0KTsKIAotCWZyYW1lX2xlbmd0aCA9IChtLT5mcmFt ZV9sZW5ndGggPDwgMykgLyBzcGktPmJpdHNfcGVyX3dvcmQ7Ci0KLQlmcmFtZV9sZW5ndGggPSBj bGFtcChmcmFtZV9sZW5ndGgsIDAsIFFTUElfRlJBTUUpOworCWZyYW1lX2xlbl93b3JkcyA9IDA7 CisJbGlzdF9mb3JfZWFjaF9lbnRyeSh0LCAmbS0+dHJhbnNmZXJzLCB0cmFuc2Zlcl9saXN0KQor CQlmcmFtZV9sZW5fd29yZHMgKz0gdC0+bGVuIC8gKHQtPmJpdHNfcGVyX3dvcmQgPj4gMyk7CisJ ZnJhbWVfbGVuX3dvcmRzID0gbWluX3QodW5zaWduZWQgaW50LCBmcmFtZV9sZW5fd29yZHMsIFFT UElfRlJBTUUpOwogCiAJLyogc2V0dXAgY29tbWFuZCByZWcgKi8KIAlxc3BpLT5jbWQgPSAwOwog CXFzcGktPmNtZCB8PSBRU1BJX0VOX0NTKHNwaS0+Y2hpcF9zZWxlY3QpOwotCXFzcGktPmNtZCB8 PSBRU1BJX0ZMRU4oZnJhbWVfbGVuZ3RoKTsKKwlxc3BpLT5jbWQgfD0gUVNQSV9GTEVOKGZyYW1l X2xlbl93b3Jkcyk7CiAJcXNwaS0+Y21kIHw9IFFTUElfV0NfQ01EX0lOVF9FTjsKIAogCXRpX3Fz cGlfd3JpdGUocXNwaSwgUVNQSV9XQ19JTlRfRU4sIFFTUElfSU5UUl9FTkFCTEVfU0VUX1JFRyk7 CkBAIC0zNTAsMTYgKzM1NCwyMyBAQCBzdGF0aWMgaW50IHRpX3FzcGlfc3RhcnRfdHJhbnNmZXJf b25lKHN0cnVjdCBzcGlfbWFzdGVyICptYXN0ZXIsCiAJbXV0ZXhfbG9jaygmcXNwaS0+bGlzdF9s b2NrKTsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkodCwgJm0tPnRyYW5zZmVycywgdHJhbnNmZXJf bGlzdCkgewotCQlxc3BpLT5jbWQgfD0gUVNQSV9XTEVOKHQtPmJpdHNfcGVyX3dvcmQpOworCQlx c3BpLT5jbWQgPSAoKHFzcGktPmNtZCAmIH5RU1BJX1dMRU5fTUFTSykgfAorCQkJICAgICBRU1BJ X1dMRU4odC0+Yml0c19wZXJfd29yZCkpOworCisJCXdsZW4gPSB0LT5iaXRzX3Blcl93b3JkID4+ IDM7CisJCXRyYW5zZmVyX2xlbl93b3JkcyA9IG1pbih0LT5sZW4gLyB3bGVuLCBmcmFtZV9sZW5f d29yZHMpOwogCi0JCXJldCA9IHFzcGlfdHJhbnNmZXJfbXNnKHFzcGksIHQpOworCQlyZXQgPSBx c3BpX3RyYW5zZmVyX21zZyhxc3BpLCB0LCB0cmFuc2Zlcl9sZW5fd29yZHMgKiB3bGVuKTsKIAkJ aWYgKHJldCkgewogCQkJZGV2X2RiZyhxc3BpLT5kZXYsICJ0cmFuc2ZlciBtZXNzYWdlIGZhaWxl ZFxuIik7CiAJCQltdXRleF91bmxvY2soJnFzcGktPmxpc3RfbG9jayk7CiAJCQlyZXR1cm4gLUVJ TlZBTDsKIAkJfQogCi0JCW0tPmFjdHVhbF9sZW5ndGggKz0gdC0+bGVuOworCQltLT5hY3R1YWxf bGVuZ3RoICs9IHRyYW5zZmVyX2xlbl93b3JkcyAqIHdsZW47CisJCWZyYW1lX2xlbl93b3JkcyAt PSB0cmFuc2Zlcl9sZW5fd29yZHM7CisJCWlmIChmcmFtZV9sZW5fd29yZHMgPT0gMCkKKwkJCWJy ZWFrOwogCX0KIAogCW11dGV4X3VubG9jaygmcXNwaS0+bGlzdF9sb2NrKTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvdXNiL2NvcmUvaGNkLXBjaS5jIGIvZHJpdmVycy91c2IvY29yZS9oY2QtcGNpLmMK aW5kZXggODIwNDRiNWQ2MTEzLi5mNmJiZmFmMDU1NzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNi L2NvcmUvaGNkLXBjaS5jCisrKyBiL2RyaXZlcnMvdXNiL2NvcmUvaGNkLXBjaS5jCkBAIC03NCw2 ICs3NCwxNSBAQCBzdGF0aWMgdm9pZCBmb3JfZWFjaF9jb21wYW5pb24oc3RydWN0IHBjaV9kZXYg KnBkZXYsIHN0cnVjdCB1c2JfaGNkICpoY2QsCiAJCWlmIChjb21wYW5pb24tPmJ1cyAhPSBwZGV2 LT5idXMgfHwKIAkJCQlQQ0lfU0xPVChjb21wYW5pb24tPmRldmZuKSAhPSBzbG90KQogCQkJY29u dGludWU7CisKKwkJLyoKKwkJICogQ29tcGFuaW9uIGRldmljZSBzaG91bGQgYmUgZWl0aGVyIFVI Q0ksT0hDSSBvciBFSENJIGhvc3QKKwkJICogY29udHJvbGxlciwgb3RoZXJ3aXNlIHNraXAuCisJ CSAqLworCQlpZiAoY29tcGFuaW9uLT5jbGFzcyAhPSBDTF9VSENJICYmIGNvbXBhbmlvbi0+Y2xh c3MgIT0gQ0xfT0hDSSAmJgorCQkJCWNvbXBhbmlvbi0+Y2xhc3MgIT0gQ0xfRUhDSSkKKwkJCWNv bnRpbnVlOworCiAJCWNvbXBhbmlvbl9oY2QgPSBwY2lfZ2V0X2RydmRhdGEoY29tcGFuaW9uKTsK IAkJaWYgKCFjb21wYW5pb25faGNkIHx8ICFjb21wYW5pb25faGNkLT5zZWxmLnJvb3RfaHViKQog CQkJY29udGludWU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktbWVtLmMgYi9k cml2ZXJzL3VzYi9ob3N0L3hoY2ktbWVtLmMKaW5kZXggZjA4ZTgxZjQyOTUxLi5lNDZjM2IxNDE0 YjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1tZW0uYworKysgYi9kcml2ZXJz L3VzYi9ob3N0L3hoY2ktbWVtLmMKQEAgLTE4ODIsNiArMTg4MiwxMiBAQCBub19idzoKIAlrZnJl ZSh4aGNpLT5yaF9idyk7CiAJa2ZyZWUoeGhjaS0+ZXh0X2NhcHMpOwogCisJeGhjaS0+dXNiMl9w b3J0cyA9IE5VTEw7CisJeGhjaS0+dXNiM19wb3J0cyA9IE5VTEw7CisJeGhjaS0+cG9ydF9hcnJh eSA9IE5VTEw7CisJeGhjaS0+cmhfYncgPSBOVUxMOworCXhoY2ktPmV4dF9jYXBzID0gTlVMTDsK KwogCXhoY2ktPnBhZ2Vfc2l6ZSA9IDA7CiAJeGhjaS0+cGFnZV9zaGlmdCA9IDA7CiAJeGhjaS0+ YnVzX3N0YXRlWzBdLmJ1c19zdXNwZW5kZWQgPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Iv aG9zdC94aGNpLXBjaS5jIGIvZHJpdmVycy91c2IvaG9zdC94aGNpLXBjaS5jCmluZGV4IDc0OWE3 N2QyNTNlMS4uM2E4Njk2YzJjMjI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2kt cGNpLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC94aGNpLXBjaS5jCkBAIC00MSw2ICs0MSw3IEBA CiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfSU5URUxfU1VOUklTRVBPSU5UX0hfWEhDSQkJMHhhMTJm CiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfSU5URUxfU1VOUklTRVBPSU5UX0xQX1hIQ0kJMHg5ZDJm CiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfSU5URUxfQlJPWFRPTl9NX1hIQ0kJCTB4MGFhOAorI2Rl ZmluZSBQQ0lfREVWSUNFX0lEX0lOVEVMX0JST1hUT05fQl9YSENJCQkweDFhYTgKIAogc3RhdGlj IGNvbnN0IGNoYXIgaGNkX25hbWVbXSA9ICJ4aGNpX2hjZCI7CiAKQEAgLTE0MCw3ICsxNDEsOCBA QCBzdGF0aWMgdm9pZCB4aGNpX3BjaV9xdWlya3Moc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qg eGhjaV9oY2QgKnhoY2kpCiAJCShwZGV2LT5kZXZpY2UgPT0gUENJX0RFVklDRV9JRF9JTlRFTF9T VU5SSVNFUE9JTlRfTFBfWEhDSSB8fAogCQkgcGRldi0+ZGV2aWNlID09IFBDSV9ERVZJQ0VfSURf SU5URUxfU1VOUklTRVBPSU5UX0hfWEhDSSB8fAogCQkgcGRldi0+ZGV2aWNlID09IFBDSV9ERVZJ Q0VfSURfSU5URUxfQ0hFUlJZVklFV19YSENJIHx8Ci0JCSBwZGV2LT5kZXZpY2UgPT0gUENJX0RF VklDRV9JRF9JTlRFTF9CUk9YVE9OX01fWEhDSSkpIHsKKwkJIHBkZXYtPmRldmljZSA9PSBQQ0lf REVWSUNFX0lEX0lOVEVMX0JST1hUT05fTV9YSENJIHx8CisJCSBwZGV2LT5kZXZpY2UgPT0gUENJ X0RFVklDRV9JRF9JTlRFTF9CUk9YVE9OX0JfWEhDSSkpIHsKIAkJeGhjaS0+cXVpcmtzIHw9IFhI Q0lfUE1FX1NUVUNLX1FVSVJLOwogCX0KIAlpZiAocGRldi0+dmVuZG9yID09IFBDSV9WRU5ET1Jf SURfRVRST04gJiYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9jcDIxMHguYyBiL2Ry aXZlcnMvdXNiL3NlcmlhbC9jcDIxMHguYwppbmRleCBiNjg5YTJmZDk2MGMuLjE2ZjFiMTk5ZDQ2 YiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2NwMjEweC5jCisrKyBiL2RyaXZlcnMv dXNiL3NlcmlhbC9jcDIxMHguYwpAQCAtMTA4LDYgKzEwOCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgdXNiX2RldmljZV9pZCBpZF90YWJsZVtdID0gewogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4 ODI2QikgfSwgLyogQ3lnbmFsIEludGVncmF0ZWQgUHJvZHVjdHMsIEluYy4sIEZhc3R0cmF4IEdQ UyBkZW1vbnN0cmF0aW9uIG1vZHVsZSAqLwogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODI4MSkg fSwgLyogTmFub3RlYyBQbHVnICYgRHJpdmUgKi8KIAl7IFVTQl9ERVZJQ0UoMHgxMEM0LCAweDgy OTMpIH0sIC8qIFRlbGVnZXNpcyBFVFJYMlVTQiAqLworCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4 ODJGNCkgfSwgLyogU3Rhcml6b25hIE1pY3JvVG91Y2ggKi8KIAl7IFVTQl9ERVZJQ0UoMHgxMEM0 LCAweDgyRjkpIH0sIC8qIFByb2N5b24gQVZTICovCiAJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4 MzQxKSB9LCAvKiBTaWVtZW5zIE1DMzVQVSBHUFJTIE1vZGVtICovCiAJeyBVU0JfREVWSUNFKDB4 MTBDNCwgMHg4MzgyKSB9LCAvKiBDeWduYWwgSW50ZWdyYXRlZCBQcm9kdWN0cywgSW5jLiAqLwpA QCAtMTE3LDYgKzExOCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBpZF90 YWJsZVtdID0gewogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODQxOCkgfSwgLyogSVJaIEF1dG9t YXRpb24gVGVsZXBvcnQgU0ctMTAgR1NNL0dQUlMgTW9kZW0gKi8KIAl7IFVTQl9ERVZJQ0UoMHgx MEM0LCAweDg0NkUpIH0sIC8qIEJFSSBVU0IgU2Vuc29yIEludGVyZmFjZSAoVkNQKSAqLwogCXsg VVNCX0RFVklDRSgweDEwQzQsIDB4ODQ3NykgfSwgLyogQmFsbHVmZiBSRklEICovCisJeyBVU0Jf REVWSUNFKDB4MTBDNCwgMHg4NEI2KSB9LCAvKiBTdGFyaXpvbmEgSHlwZXJpb24gKi8KIAl7IFVT Ql9ERVZJQ0UoMHgxMEM0LCAweDg1RUEpIH0sIC8qIEFDLVNlcnZpY2VzIElCVVMtSUYgKi8KIAl7 IFVTQl9ERVZJQ0UoMHgxMEM0LCAweDg1RUIpIH0sIC8qIEFDLVNlcnZpY2VzIENJUy1JQlVTICov CiAJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4NUY4KSB9LCAvKiBWaXJ0ZW5pbyBQcmVvbjMyICov CkBAIC0xNDAsNiArMTQyLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIGlk X3RhYmxlW10gPSB7CiAJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHhGMDA0KSB9LCAvKiBFbGFuIERp Z2l0YWwgU3lzdGVtcyBVU0Jjb3VudDUwICovCiAJeyBVU0JfREVWSUNFKDB4MTBDNSwgMHhFQTYx KSB9LCAvKiBTaWxpY29uIExhYnMgTW9iaURhdGEgR1BSUyBVU0IgTW9kZW0gKi8KIAl7IFVTQl9E RVZJQ0UoMHgxMENFLCAweEVBNkEpIH0sIC8qIFNpbGljb24gTGFicyBNb2JpRGF0YSBHUFJTIFVT QiBNb2RlbSAxMDBFVSAqLworCXsgVVNCX0RFVklDRSgweDEyQjgsIDB4RUM2MCkgfSwgLyogTGlu ayBHNCBFQ1UgKi8KKwl7IFVTQl9ERVZJQ0UoMHgxMkI4LCAweEVDNjIpIH0sIC8qIExpbmsgRzQr IEVDVSAqLwogCXsgVVNCX0RFVklDRSgweDEzQUQsIDB4OTk5OSkgfSwgLyogQmFsdGVjaCBjYXJk IHJlYWRlciAqLwogCXsgVVNCX0RFVklDRSgweDE1NTUsIDB4MDAwNCkgfSwgLyogT3dlbiBBQzQg VVNCLVJTNDg1IENvbnZlcnRlciAqLwogCXsgVVNCX0RFVklDRSgweDE2NkEsIDB4MDIwMSkgfSwg LyogQ2xpcHNhbCA1NTAwUEFDQSBDLUJ1cyBQYXNjYWwgQXV0b21hdGlvbiBDb250cm9sbGVyICov CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zdG9yYWdlL3Vhcy5jIGIvZHJpdmVycy91c2Ivc3Rv cmFnZS91YXMuYwppbmRleCBjOGFkZWYyNDM2OGMuLjg4Y2NiOWM2NTE2ZSAxMDA2NDQKLS0tIGEv ZHJpdmVycy91c2Ivc3RvcmFnZS91YXMuYworKysgYi9kcml2ZXJzL3VzYi9zdG9yYWdlL3Vhcy5j CkBAIC0yLDcgKzIsNyBAQAogICogVVNCIEF0dGFjaGVkIFNDU0kKICAqIE5vdGUgdGhhdCB0aGlz IGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgVVNCIE1hc3MgU3RvcmFnZSBkcml2ZXIKICAqCi0gKiBD b3B5cmlnaHQgSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4gZm9yIFJlZCBIYXQs IEluYy4gMjAxMworICogQ29weXJpZ2h0IEhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5j b20+IGZvciBSZWQgSGF0LCBJbmMuIDIwMTMgLSAyMDE2CiAgKiBDb3B5cmlnaHQgTWF0dGhldyBX aWxjb3ggZm9yIEludGVsIENvcnAsIDIwMTAKICAqIENvcHlyaWdodCBTYXJhaCBTaGFycCBmb3Ig SW50ZWwgQ29ycCwgMjAxMAogICoKQEAgLTkzNiw2ICs5MzYsMTcgQEAgc3RhdGljIGludCB1YXNf ZWhfYnVzX3Jlc2V0X2hhbmRsZXIoc3RydWN0IHNjc2lfY21uZCAqY21uZCkKIAlyZXR1cm4gU1VD Q0VTUzsKIH0KIAorc3RhdGljIGludCB1YXNfdGFyZ2V0X2FsbG9jKHN0cnVjdCBzY3NpX3Rhcmdl dCAqc3RhcmdldCkKK3sKKwlzdHJ1Y3QgdWFzX2Rldl9pbmZvICpkZXZpbmZvID0gKHN0cnVjdCB1 YXNfZGV2X2luZm8gKikKKwkJCWRldl90b19zaG9zdChzdGFyZ2V0LT5kZXYucGFyZW50KS0+aG9z dGRhdGE7CisKKwlpZiAoZGV2aW5mby0+ZmxhZ3MgJiBVU19GTF9OT19SRVBPUlRfTFVOUykKKwkJ c3RhcmdldC0+bm9fcmVwb3J0X2x1bnMgPSAxOworCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBp bnQgdWFzX3NsYXZlX2FsbG9jKHN0cnVjdCBzY3NpX2RldmljZSAqc2RldikKIHsKIAlzdHJ1Y3Qg dWFzX2Rldl9pbmZvICpkZXZpbmZvID0KQEAgLTk4OCw2ICs5OTksNyBAQCBzdGF0aWMgc3RydWN0 IHNjc2lfaG9zdF90ZW1wbGF0ZSB1YXNfaG9zdF90ZW1wbGF0ZSA9IHsKIAkubW9kdWxlID0gVEhJ U19NT0RVTEUsCiAJLm5hbWUgPSAidWFzIiwKIAkucXVldWVjb21tYW5kID0gdWFzX3F1ZXVlY29t bWFuZCwKKwkudGFyZ2V0X2FsbG9jID0gdWFzX3RhcmdldF9hbGxvYywKIAkuc2xhdmVfYWxsb2Mg PSB1YXNfc2xhdmVfYWxsb2MsCiAJLnNsYXZlX2NvbmZpZ3VyZSA9IHVhc19zbGF2ZV9jb25maWd1 cmUsCiAJLmVoX2Fib3J0X2hhbmRsZXIgPSB1YXNfZWhfYWJvcnRfaGFuZGxlciwKZGlmZiAtLWdp dCBhL2RyaXZlcnMvdXNiL3N0b3JhZ2UvdW51c3VhbF91YXMuaCBiL2RyaXZlcnMvdXNiL3N0b3Jh Z2UvdW51c3VhbF91YXMuaAppbmRleCBhYzJmOWQ0OTE0MTkuLmQ2OTZlYWY3MWNmOSAxMDA2NDQK LS0tIGEvZHJpdmVycy91c2Ivc3RvcmFnZS91bnVzdWFsX3Vhcy5oCisrKyBiL2RyaXZlcnMvdXNi L3N0b3JhZ2UvdW51c3VhbF91YXMuaApAQCAtNTQsNiArNTQsMTMgQEAgVU5VU1VBTF9ERVYoMHgw YmMyLCAweDMzMTIsIDB4MDAwMCwgMHg5OTk5LAogCQlVU0JfU0NfREVWSUNFLCBVU0JfUFJfREVW SUNFLCBOVUxMLAogCQlVU19GTF9OT19BVEFfMVgpLAogCisvKiBSZXBvcnRlZC1ieTogRGF2aWQg V2ViYiA8ZGp3QG5vYy5hYy51az4gKi8KK1VOVVNVQUxfREVWKDB4MGJjMiwgMHgzMzFhLCAweDAw MDAsIDB4OTk5OSwKKwkJIlNlYWdhdGUiLAorCQkiRXhwYW5zaW9uIERlc2siLAorCQlVU0JfU0Nf REVWSUNFLCBVU0JfUFJfREVWSUNFLCBOVUxMLAorCQlVU19GTF9OT19SRVBPUlRfTFVOUyksCisK IC8qIFJlcG9ydGVkLWJ5OiBIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPiAqLwog VU5VU1VBTF9ERVYoMHgwYmMyLCAweDMzMjAsIDB4MDAwMCwgMHg5OTk5LAogCQkiU2VhZ2F0ZSIs CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zdG9yYWdlL3VzYi5jIGIvZHJpdmVycy91c2Ivc3Rv cmFnZS91c2IuYwppbmRleCA3OTMyM2QwMDhmMmQuLjkzYjU2N2ZkZGYwNyAxMDA2NDQKLS0tIGEv ZHJpdmVycy91c2Ivc3RvcmFnZS91c2IuYworKysgYi9kcml2ZXJzL3VzYi9zdG9yYWdlL3VzYi5j CkBAIC00NzgsNyArNDc4LDcgQEAgdm9pZCB1c2Jfc3Rvcl9hZGp1c3RfcXVpcmtzKHN0cnVjdCB1 c2JfZGV2aWNlICp1ZGV2LCB1bnNpZ25lZCBsb25nICpmZmxhZ3MpCiAJCQlVU19GTF9OT19SRUFE X0RJU0NfSU5GTyB8IFVTX0ZMX05PX1JFQURfQ0FQQUNJVFlfMTYgfAogCQkJVVNfRkxfSU5JVElB TF9SRUFEMTAgfCBVU19GTF9XUklURV9DQUNIRSB8CiAJCQlVU19GTF9OT19BVEFfMVggfCBVU19G TF9OT19SRVBPUlRfT1BDT0RFUyB8Ci0JCQlVU19GTF9NQVhfU0VDVE9SU18yNDApOworCQkJVVNf RkxfTUFYX1NFQ1RPUlNfMjQwIHwgVVNfRkxfTk9fUkVQT1JUX0xVTlMpOwogCiAJcCA9IHF1aXJr czsKIAl3aGlsZSAoKnApIHsKQEAgLTUyOCw2ICs1MjgsOSBAQCB2b2lkIHVzYl9zdG9yX2FkanVz dF9xdWlya3Moc3RydWN0IHVzYl9kZXZpY2UgKnVkZXYsIHVuc2lnbmVkIGxvbmcgKmZmbGFncykK IAkJY2FzZSAnaSc6CiAJCQlmIHw9IFVTX0ZMX0lHTk9SRV9ERVZJQ0U7CiAJCQlicmVhazsKKwkJ Y2FzZSAnaic6CisJCQlmIHw9IFVTX0ZMX05PX1JFUE9SVF9MVU5TOworCQkJYnJlYWs7CiAJCWNh c2UgJ2wnOgogCQkJZiB8PSBVU19GTF9OT1RfTE9DS0FCTEU7CiAJCQlicmVhazsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvdmlydGlvL3ZpcnRpb19iYWxsb29uLmMgYi9kcml2ZXJzL3ZpcnRpby92aXJ0 aW9fYmFsbG9vbi5jCmluZGV4IGViMzVlM2ZhOTg0YS4uNzQ5MGU5MmMwM2Q1IDEwMDY0NAotLS0g YS9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jCisrKyBiL2RyaXZlcnMvdmlydGlvL3Zp cnRpb19iYWxsb29uLmMKQEAgLTE2Myw4ICsxNjMsOCBAQCBzdGF0aWMgdm9pZCByZWxlYXNlX3Bh Z2VzX2J5X3Bmbihjb25zdCB1MzIgcGZuc1tdLCB1bnNpZ25lZCBpbnQgbnVtKQogCS8qIEZpbmQg cGZucyBwb2ludGluZyBhdCBzdGFydCBvZiBlYWNoIHBhZ2UsIGdldCBwYWdlcyBhbmQgZnJlZSB0 aGVtLiAqLwogCWZvciAoaSA9IDA7IGkgPCBudW07IGkgKz0gVklSVElPX0JBTExPT05fUEFHRVNf UEVSX1BBR0UpIHsKIAkJc3RydWN0IHBhZ2UgKnBhZ2UgPSBiYWxsb29uX3Bmbl90b19wYWdlKHBm bnNbaV0pOwotCQliYWxsb29uX3BhZ2VfZnJlZShwYWdlKTsKIAkJYWRqdXN0X21hbmFnZWRfcGFn ZV9jb3VudChwYWdlLCAxKTsKKwkJcHV0X3BhZ2UocGFnZSk7IC8qIGJhbGxvb24gcmVmZXJlbmNl ICovCiAJfQogfQogCkBAIC0zOTUsNiArMzk1LDggQEAgc3RhdGljIGludCB2aXJ0YmFsbG9vbl9t aWdyYXRlcGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKIAlpZiAoIW11dGV4X3Ry eWxvY2soJnZiLT5iYWxsb29uX2xvY2spKQogCQlyZXR1cm4gLUVBR0FJTjsKIAorCWdldF9wYWdl KG5ld3BhZ2UpOyAvKiBiYWxsb29uIHJlZmVyZW5jZSAqLworCiAJLyogYmFsbG9vbidzIHBhZ2Ug bWlncmF0aW9uIDFzdCBzdGVwICAtLSBpbmZsYXRlICJuZXdwYWdlIiAqLwogCXNwaW5fbG9ja19p cnFzYXZlKCZ2Yl9kZXZfaW5mby0+cGFnZXNfbG9jaywgZmxhZ3MpOwogCWJhbGxvb25fcGFnZV9p bnNlcnQobmV3cGFnZSwgbWFwcGluZywgJnZiX2Rldl9pbmZvLT5wYWdlcyk7CkBAIC00MDQsMTIg KzQwNiw3IEBAIHN0YXRpYyBpbnQgdmlydGJhbGxvb25fbWlncmF0ZXBhZ2Uoc3RydWN0IGFkZHJl c3Nfc3BhY2UgKm1hcHBpbmcsCiAJc2V0X3BhZ2VfcGZucyh2Yi0+cGZucywgbmV3cGFnZSk7CiAJ dGVsbF9ob3N0KHZiLCB2Yi0+aW5mbGF0ZV92cSk7CiAKLQkvKgotCSAqIGJhbGxvb24ncyBwYWdl IG1pZ3JhdGlvbiAybmQgc3RlcCAtLSBkZWZsYXRlICJwYWdlIgotCSAqCi0JICogSXQncyBzYWZl IHRvIGRlbGV0ZSBwYWdlLT5scnUgaGVyZSBiZWNhdXNlIHRoaXMgcGFnZSBpcyBhdAotCSAqIGFu IGlzb2xhdGVkIG1pZ3JhdGlvbiBsaXN0LCBhbmQgdGhpcyBzdGVwIGlzIGV4cGVjdGVkIHRvIGhh cHBlbiBoZXJlCi0JICovCisJLyogYmFsbG9vbidzIHBhZ2UgbWlncmF0aW9uIDJuZCBzdGVwIC0t IGRlZmxhdGUgInBhZ2UiICovCiAJYmFsbG9vbl9wYWdlX2RlbGV0ZShwYWdlKTsKIAl2Yi0+bnVt X3BmbnMgPSBWSVJUSU9fQkFMTE9PTl9QQUdFU19QRVJfUEFHRTsKIAlzZXRfcGFnZV9wZm5zKHZi LT5wZm5zLCBwYWdlKTsKQEAgLTQxNyw3ICs0MTQsOSBAQCBzdGF0aWMgaW50IHZpcnRiYWxsb29u X21pZ3JhdGVwYWdlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogCiAJbXV0ZXhfdW5s b2NrKCZ2Yi0+YmFsbG9vbl9sb2NrKTsKIAotCXJldHVybiBNSUdSQVRFUEFHRV9CQUxMT09OX1NV Q0NFU1M7CisJcHV0X3BhZ2UocGFnZSk7IC8qIGJhbGxvb24gcmVmZXJlbmNlICovCisKKwlyZXR1 cm4gTUlHUkFURVBBR0VfU1VDQ0VTUzsKIH0KIAogLyogZGVmaW5lIHRoZSBiYWxsb29uX21hcHBp bmctPmFfb3BzIGNhbGxiYWNrIHRvIGFsbG93IGJhbGxvb24gcGFnZSBtaWdyYXRpb24gKi8KZGlm ZiAtLWdpdCBhL2ZzL2NlcGgvbWRzX2NsaWVudC5jIGIvZnMvY2VwaC9tZHNfY2xpZW50LmMKaW5k ZXggNmI2ZjExYjhmMzZhLi44ZjU4MzVjODkxOTQgMTAwNjQ0Ci0tLSBhL2ZzL2NlcGgvbWRzX2Ns aWVudC5jCisrKyBiL2ZzL2NlcGgvbWRzX2NsaWVudC5jCkBAIC0zNjYsOSArMzY2LDcgQEAgdm9p ZCBjZXBoX3B1dF9tZHNfc2Vzc2lvbihzdHJ1Y3QgY2VwaF9tZHNfc2Vzc2lvbiAqcykKIAkgICAg IGF0b21pY19yZWFkKCZzLT5zX3JlZiksIGF0b21pY19yZWFkKCZzLT5zX3JlZiktMSk7CiAJaWYg KGF0b21pY19kZWNfYW5kX3Rlc3QoJnMtPnNfcmVmKSkgewogCQlpZiAocy0+c19hdXRoLmF1dGhv cml6ZXIpCi0JCQljZXBoX2F1dGhfZGVzdHJveV9hdXRob3JpemVyKAotCQkJCXMtPnNfbWRzYy0+ ZnNjLT5jbGllbnQtPm1vbmMuYXV0aCwKLQkJCQlzLT5zX2F1dGguYXV0aG9yaXplcik7CisJCQlj ZXBoX2F1dGhfZGVzdHJveV9hdXRob3JpemVyKHMtPnNfYXV0aC5hdXRob3JpemVyKTsKIAkJa2Zy ZWUocyk7CiAJfQogfQpAQCAtMzYwMSw3ICszNTk5LDcgQEAgc3RhdGljIHN0cnVjdCBjZXBoX2F1 dGhfaGFuZHNoYWtlICpnZXRfYXV0aG9yaXplcihzdHJ1Y3QgY2VwaF9jb25uZWN0aW9uICpjb24s CiAJc3RydWN0IGNlcGhfYXV0aF9oYW5kc2hha2UgKmF1dGggPSAmcy0+c19hdXRoOwogCiAJaWYg KGZvcmNlX25ldyAmJiBhdXRoLT5hdXRob3JpemVyKSB7Ci0JCWNlcGhfYXV0aF9kZXN0cm95X2F1 dGhvcml6ZXIoYWMsIGF1dGgtPmF1dGhvcml6ZXIpOworCQljZXBoX2F1dGhfZGVzdHJveV9hdXRo b3JpemVyKGF1dGgtPmF1dGhvcml6ZXIpOwogCQlhdXRoLT5hdXRob3JpemVyID0gTlVMTDsKIAl9 CiAJaWYgKCFhdXRoLT5hdXRob3JpemVyKSB7CmRpZmYgLS1naXQgYS9mcy9pc29mcy9yb2NrLmMg Yi9mcy9pc29mcy9yb2NrLmMKaW5kZXggNzM1ZDc1MjJhM2E5Li4yMDQ2NTlhNWY2ZGIgMTAwNjQ0 Ci0tLSBhL2ZzL2lzb2ZzL3JvY2suYworKysgYi9mcy9pc29mcy9yb2NrLmMKQEAgLTIwMyw2ICsy MDMsOCBAQCBpbnQgZ2V0X3JvY2tfcmlkZ2VfZmlsZW5hbWUoc3RydWN0IGlzb19kaXJlY3Rvcnlf cmVjb3JkICpkZSwKIAlpbnQgcmV0bmFtbGVuID0gMDsKIAlpbnQgdHJ1bmNhdGUgPSAwOwogCWlu dCByZXQgPSAwOworCWNoYXIgKnA7CisJaW50IGxlbjsKIAogCWlmICghSVNPRlNfU0IoaW5vZGUt Pmlfc2IpLT5zX3JvY2spCiAJCXJldHVybiAwOwpAQCAtMjY3LDEyICsyNjksMTcgQEAgcmVwZWF0 OgogCQkJCQlyci0+dS5OTS5mbGFncyk7CiAJCQkJYnJlYWs7CiAJCQl9Ci0JCQlpZiAoKHN0cmxl bihyZXRuYW1lKSArIHJyLT5sZW4gLSA1KSA+PSAyNTQpIHsKKwkJCWxlbiA9IHJyLT5sZW4gLSA1 OworCQkJaWYgKHJldG5hbWxlbiArIGxlbiA+PSAyNTQpIHsKIAkJCQl0cnVuY2F0ZSA9IDE7CiAJ CQkJYnJlYWs7CiAJCQl9Ci0JCQlzdHJuY2F0KHJldG5hbWUsIHJyLT51Lk5NLm5hbWUsIHJyLT5s ZW4gLSA1KTsKLQkJCXJldG5hbWxlbiArPSByci0+bGVuIC0gNTsKKwkJCXAgPSBtZW1jaHIocnIt PnUuTk0ubmFtZSwgJ1wwJywgbGVuKTsKKwkJCWlmICh1bmxpa2VseShwKSkKKwkJCQlsZW4gPSBw IC0gcnItPnUuTk0ubmFtZTsKKwkJCW1lbWNweShyZXRuYW1lICsgcmV0bmFtbGVuLCByci0+dS5O TS5uYW1lLCBsZW4pOworCQkJcmV0bmFtbGVuICs9IGxlbjsKKwkJCXJldG5hbWVbcmV0bmFtbGVu XSA9ICdcMCc7CiAJCQlicmVhazsKIAkJY2FzZSBTSUcoJ1InLCAnRScpOgogCQkJa2ZyZWUocnMu YnVmZmVyKTsKZGlmZiAtLWdpdCBhL2ZzL25hbWVpLmMgYi9mcy9uYW1laS5jCmluZGV4IDM0Zjgy MjRiZTRlZC4uNTVjOTdhNzVlNWE3IDEwMDY0NAotLS0gYS9mcy9uYW1laS5jCisrKyBiL2ZzL25h bWVpLmMKQEAgLTI3OTcsMjIgKzI3OTcsMTAgQEAgbm9fb3BlbjoKIAkJZGVudHJ5ID0gbG9va3Vw X3JlYWwoZGlyLCBkZW50cnksIG5kLT5mbGFncyk7CiAJCWlmIChJU19FUlIoZGVudHJ5KSkKIAkJ CXJldHVybiBQVFJfRVJSKGRlbnRyeSk7Ci0KLQkJaWYgKGNyZWF0ZV9lcnJvcikgewotCQkJaW50 IG9wZW5fZmxhZyA9IG9wLT5vcGVuX2ZsYWc7Ci0KLQkJCWVycm9yID0gY3JlYXRlX2Vycm9yOwot CQkJaWYgKChvcGVuX2ZsYWcgJiBPX0VYQ0wpKSB7Ci0JCQkJaWYgKCFkZW50cnktPmRfaW5vZGUp Ci0JCQkJCWdvdG8gb3V0OwotCQkJfSBlbHNlIGlmICghZGVudHJ5LT5kX2lub2RlKSB7Ci0JCQkJ Z290byBvdXQ7Ci0JCQl9IGVsc2UgaWYgKChvcGVuX2ZsYWcgJiBPX1RSVU5DKSAmJgotCQkJCSAg IFNfSVNSRUcoZGVudHJ5LT5kX2lub2RlLT5pX21vZGUpKSB7Ci0JCQkJZ290byBvdXQ7Ci0JCQl9 Ci0JCQkvKiB3aWxsIGZhaWwgbGF0ZXIsIGdvIG9uIHRvIGdldCB0aGUgcmlnaHQgZXJyb3IgKi8K LQkJfQorCX0KKwlpZiAoY3JlYXRlX2Vycm9yICYmICFkZW50cnktPmRfaW5vZGUpIHsKKwkJZXJy b3IgPSBjcmVhdGVfZXJyb3I7CisJCWdvdG8gb3V0OwogCX0KIGxvb2tlZF91cDoKIAlwYXRoLT5k ZW50cnkgPSBkZW50cnk7CmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9hY2wuYyBiL2ZzL29jZnMyL2Fj bC5jCmluZGV4IDdlODI4MmRjZWEyYS4uN2Y5ZTQ0ODRjNmY2IDEwMDY0NAotLS0gYS9mcy9vY2Zz Mi9hY2wuYworKysgYi9mcy9vY2ZzMi9hY2wuYwpAQCAtMzEwLDMgKzMxMCw2NiBAQCBzdHJ1Y3Qg cG9zaXhfYWNsICpvY2ZzMl9pb3BfZ2V0X2FjbChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgdHlw ZSkKIAogCXJldHVybiBhY2w7CiB9CisKKy8qCisgKiBJbml0aWFsaXplIHRoZSBBQ0xzIG9mIGEg bmV3IGlub2RlLiBJZiBwYXJlbnQgZGlyZWN0b3J5IGhhcyBkZWZhdWx0IEFDTCwKKyAqIHRoZW4g Y2xvbmUgdG8gbmV3IGlub2RlLiBDYWxsZWQgZnJvbSBvY2ZzMl9ta25vZC4KKyAqLworaW50IG9j ZnMyX2luaXRfYWNsKGhhbmRsZV90ICpoYW5kbGUsCisJCSAgIHN0cnVjdCBpbm9kZSAqaW5vZGUs CisJCSAgIHN0cnVjdCBpbm9kZSAqZGlyLAorCQkgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmRpX2Jo LAorCQkgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmRpcl9iaCwKKwkJICAgc3RydWN0IG9jZnMyX2Fs bG9jX2NvbnRleHQgKm1ldGFfYWMsCisJCSAgIHN0cnVjdCBvY2ZzMl9hbGxvY19jb250ZXh0ICpk YXRhX2FjKQoreworCXN0cnVjdCBvY2ZzMl9zdXBlciAqb3NiID0gT0NGUzJfU0IoaW5vZGUtPmlf c2IpOworCXN0cnVjdCBwb3NpeF9hY2wgKmFjbCA9IE5VTEw7CisJaW50IHJldCA9IDAsIHJldDI7 CisJdW1vZGVfdCBtb2RlOworCisJaWYgKCFTX0lTTE5LKGlub2RlLT5pX21vZGUpKSB7CisJCWlm IChvc2ItPnNfbW91bnRfb3B0ICYgT0NGUzJfTU9VTlRfUE9TSVhfQUNMKSB7CisJCQlhY2wgPSBv Y2ZzMl9nZXRfYWNsX25vbG9jayhkaXIsIEFDTF9UWVBFX0RFRkFVTFQsCisJCQkJCQkgICBkaXJf YmgpOworCQkJaWYgKElTX0VSUihhY2wpKQorCQkJCXJldHVybiBQVFJfRVJSKGFjbCk7CisJCX0K KwkJaWYgKCFhY2wpIHsKKwkJCW1vZGUgPSBpbm9kZS0+aV9tb2RlICYgfmN1cnJlbnRfdW1hc2so KTsKKwkJCXJldCA9IG9jZnMyX2FjbF9zZXRfbW9kZShpbm9kZSwgZGlfYmgsIGhhbmRsZSwgbW9k ZSk7CisJCQlpZiAocmV0KSB7CisJCQkJbWxvZ19lcnJubyhyZXQpOworCQkJCWdvdG8gY2xlYW51 cDsKKwkJCX0KKwkJfQorCX0KKwlpZiAoKG9zYi0+c19tb3VudF9vcHQgJiBPQ0ZTMl9NT1VOVF9Q T1NJWF9BQ0wpICYmIGFjbCkgeworCQlpZiAoU19JU0RJUihpbm9kZS0+aV9tb2RlKSkgeworCQkJ cmV0ID0gb2NmczJfc2V0X2FjbChoYW5kbGUsIGlub2RlLCBkaV9iaCwKKwkJCQkJICAgIEFDTF9U WVBFX0RFRkFVTFQsIGFjbCwKKwkJCQkJICAgIG1ldGFfYWMsIGRhdGFfYWMpOworCQkJaWYgKHJl dCkKKwkJCQlnb3RvIGNsZWFudXA7CisJCX0KKwkJbW9kZSA9IGlub2RlLT5pX21vZGU7CisJCXJl dCA9IF9fcG9zaXhfYWNsX2NyZWF0ZSgmYWNsLCBHRlBfTk9GUywgJm1vZGUpOworCQlpZiAocmV0 IDwgMCkKKwkJCXJldHVybiByZXQ7CisKKwkJcmV0MiA9IG9jZnMyX2FjbF9zZXRfbW9kZShpbm9k ZSwgZGlfYmgsIGhhbmRsZSwgbW9kZSk7CisJCWlmIChyZXQyKSB7CisJCQltbG9nX2Vycm5vKHJl dDIpOworCQkJcmV0ID0gcmV0MjsKKwkJCWdvdG8gY2xlYW51cDsKKwkJfQorCQlpZiAocmV0ID4g MCkgeworCQkJcmV0ID0gb2NmczJfc2V0X2FjbChoYW5kbGUsIGlub2RlLAorCQkJCQkgICAgZGlf YmgsIEFDTF9UWVBFX0FDQ0VTUywKKwkJCQkJICAgIGFjbCwgbWV0YV9hYywgZGF0YV9hYyk7CisJ CX0KKwl9CitjbGVhbnVwOgorCXBvc2l4X2FjbF9yZWxlYXNlKGFjbCk7CisJcmV0dXJuIHJldDsK K30KZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2FjbC5oIGIvZnMvb2NmczIvYWNsLmgKaW5kZXggM2Zj ZTY4ZDA4NjI1Li4xYzcyMDNkMWQ2ZWIgMTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL2FjbC5oCisrKyBi L2ZzL29jZnMyL2FjbC5oCkBAIC0zNSw1ICszNSw5IEBAIGludCBvY2ZzMl9zZXRfYWNsKGhhbmRs ZV90ICpoYW5kbGUsCiAJCQkgc3RydWN0IHBvc2l4X2FjbCAqYWNsLAogCQkJIHN0cnVjdCBvY2Zz Ml9hbGxvY19jb250ZXh0ICptZXRhX2FjLAogCQkJIHN0cnVjdCBvY2ZzMl9hbGxvY19jb250ZXh0 ICpkYXRhX2FjKTsKK2V4dGVybiBpbnQgb2NmczJfaW5pdF9hY2woaGFuZGxlX3QgKiwgc3RydWN0 IGlub2RlICosIHN0cnVjdCBpbm9kZSAqLAorCQkJICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwgc3Ry dWN0IGJ1ZmZlcl9oZWFkICosCisJCQkgIHN0cnVjdCBvY2ZzMl9hbGxvY19jb250ZXh0ICosCisJ CQkgIHN0cnVjdCBvY2ZzMl9hbGxvY19jb250ZXh0ICopOwogCiAjZW5kaWYgLyogT0NGUzJfQUNM X0ggKi8KZGlmZiAtLWdpdCBhL2ZzL29jZnMyL25hbWVpLmMgYi9mcy9vY2ZzMi9uYW1laS5jCmlu ZGV4IGUyZjNhNmM1MjI0Zi4uYTllZjllYzA4YzIzIDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9uYW1l aS5jCisrKyBiL2ZzL29jZnMyL25hbWVpLmMKQEAgLTI1Myw3ICsyNTMsNiBAQCBzdGF0aWMgaW50 IG9jZnMyX21rbm9kKHN0cnVjdCBpbm9kZSAqZGlyLAogCXN0cnVjdCBvY2ZzMl9kaXJfbG9va3Vw X3Jlc3VsdCBsb29rdXAgPSB7IE5VTEwsIH07CiAJc2lnc2V0X3Qgb2xkc2V0OwogCWludCBkaWRf YmxvY2tfc2lnbmFscyA9IDA7Ci0Jc3RydWN0IHBvc2l4X2FjbCAqZGVmYXVsdF9hY2wgPSBOVUxM LCAqYWNsID0gTlVMTDsKIAlzdHJ1Y3Qgb2NmczJfZGVudHJ5X2xvY2sgKmRsID0gTlVMTDsKIAog CXRyYWNlX29jZnMyX21rbm9kKGRpciwgZGVudHJ5LCBkZW50cnktPmRfbmFtZS5sZW4sIGRlbnRy eS0+ZF9uYW1lLm5hbWUsCkBAIC0zNTYsMTIgKzM1NSw2IEBAIHN0YXRpYyBpbnQgb2NmczJfbWtu b2Qoc3RydWN0IGlub2RlICpkaXIsCiAJCWdvdG8gbGVhdmU7CiAJfQogCi0Jc3RhdHVzID0gcG9z aXhfYWNsX2NyZWF0ZShkaXIsICZpbm9kZS0+aV9tb2RlLCAmZGVmYXVsdF9hY2wsICZhY2wpOwot CWlmIChzdGF0dXMpIHsKLQkJbWxvZ19lcnJubyhzdGF0dXMpOwotCQlnb3RvIGxlYXZlOwotCX0K LQogCWhhbmRsZSA9IG9jZnMyX3N0YXJ0X3RyYW5zKG9zYiwgb2NmczJfbWtub2RfY3JlZGl0cyhv c2ItPnNiLAogCQkJCQkJCSAgICBTX0lTRElSKG1vZGUpLAogCQkJCQkJCSAgICB4YXR0cl9jcmVk aXRzKSk7CkBAIC00MTAsMTYgKzQwMyw4IEBAIHN0YXRpYyBpbnQgb2NmczJfbWtub2Qoc3RydWN0 IGlub2RlICpkaXIsCiAJCWluY19ubGluayhkaXIpOwogCX0KIAotCWlmIChkZWZhdWx0X2FjbCkg ewotCQlzdGF0dXMgPSBvY2ZzMl9zZXRfYWNsKGhhbmRsZSwgaW5vZGUsIG5ld19mZV9iaCwKLQkJ CQkgICAgICAgQUNMX1RZUEVfREVGQVVMVCwgZGVmYXVsdF9hY2wsCi0JCQkJICAgICAgIG1ldGFf YWMsIGRhdGFfYWMpOwotCX0KLQlpZiAoIXN0YXR1cyAmJiBhY2wpIHsKLQkJc3RhdHVzID0gb2Nm czJfc2V0X2FjbChoYW5kbGUsIGlub2RlLCBuZXdfZmVfYmgsCi0JCQkJICAgICAgIEFDTF9UWVBF X0FDQ0VTUywgYWNsLAotCQkJCSAgICAgICBtZXRhX2FjLCBkYXRhX2FjKTsKLQl9CisJc3RhdHVz ID0gb2NmczJfaW5pdF9hY2woaGFuZGxlLCBpbm9kZSwgZGlyLCBuZXdfZmVfYmgsIHBhcmVudF9m ZV9iaCwKKwkJCSBtZXRhX2FjLCBkYXRhX2FjKTsKIAogCWlmIChzdGF0dXMgPCAwKSB7CiAJCW1s b2dfZXJybm8oc3RhdHVzKTsKQEAgLTQ2MSwxMCArNDQ2LDYgQEAgc3RhdGljIGludCBvY2ZzMl9t a25vZChzdHJ1Y3QgaW5vZGUgKmRpciwKIAlkX2luc3RhbnRpYXRlKGRlbnRyeSwgaW5vZGUpOwog CXN0YXR1cyA9IDA7CiBsZWF2ZToKLQlpZiAoZGVmYXVsdF9hY2wpCi0JCXBvc2l4X2FjbF9yZWxl YXNlKGRlZmF1bHRfYWNsKTsKLQlpZiAoYWNsKQotCQlwb3NpeF9hY2xfcmVsZWFzZShhY2wpOwog CWlmIChzdGF0dXMgPCAwICYmIGRpZF9xdW90YV9pbm9kZSkKIAkJZHF1b3RfZnJlZV9pbm9kZShp bm9kZSk7CiAJaWYgKGhhbmRsZSkKZGlmZiAtLWdpdCBhL2ZzL29jZnMyL3JlZmNvdW50dHJlZS5j IGIvZnMvb2NmczIvcmVmY291bnR0cmVlLmMKaW5kZXggNjM2YWFiNjllYWQ1Li4wMTdhYTE5NWEy NzggMTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL3JlZmNvdW50dHJlZS5jCisrKyBiL2ZzL29jZnMyL3Jl ZmNvdW50dHJlZS5jCkBAIC00MjY4LDIwICs0MjY4LDEyIEBAIHN0YXRpYyBpbnQgb2NmczJfcmVm bGluayhzdHJ1Y3QgZGVudHJ5ICpvbGRfZGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKmRpciwKIAlzdHJ1 Y3QgaW5vZGUgKmlub2RlID0gb2xkX2RlbnRyeS0+ZF9pbm9kZTsKIAlzdHJ1Y3QgYnVmZmVyX2hl YWQgKm9sZF9iaCA9IE5VTEw7CiAJc3RydWN0IGlub2RlICpuZXdfb3JwaGFuX2lub2RlID0gTlVM TDsKLQlzdHJ1Y3QgcG9zaXhfYWNsICpkZWZhdWx0X2FjbCwgKmFjbDsKLQl1bW9kZV90IG1vZGU7 CiAKIAlpZiAoIW9jZnMyX3JlZmNvdW50X3RyZWUoT0NGUzJfU0IoaW5vZGUtPmlfc2IpKSkKIAkJ cmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbW9kZSA9IGlub2RlLT5pX21vZGU7Ci0JZXJyb3IgPSBw b3NpeF9hY2xfY3JlYXRlKGRpciwgJm1vZGUsICZkZWZhdWx0X2FjbCwgJmFjbCk7Ci0JaWYgKGVy cm9yKSB7Ci0JCW1sb2dfZXJybm8oZXJyb3IpOwotCQlnb3RvIG91dDsKLQl9CiAKLQllcnJvciA9 IG9jZnMyX2NyZWF0ZV9pbm9kZV9pbl9vcnBoYW4oZGlyLCBtb2RlLAorCWVycm9yID0gb2NmczJf Y3JlYXRlX2lub2RlX2luX29ycGhhbihkaXIsIGlub2RlLT5pX21vZGUsCiAJCQkJCSAgICAgJm5l d19vcnBoYW5faW5vZGUpOwogCWlmIChlcnJvcikgewogCQltbG9nX2Vycm5vKGVycm9yKTsKQEAg LTQzMjAsMTYgKzQzMTIsMTEgQEAgc3RhdGljIGludCBvY2ZzMl9yZWZsaW5rKHN0cnVjdCBkZW50 cnkgKm9sZF9kZW50cnksIHN0cnVjdCBpbm9kZSAqZGlyLAogCS8qIElmIHRoZSBzZWN1cml0eSBp c24ndCBwcmVzZXJ2ZWQsIHdlIG5lZWQgdG8gcmUtaW5pdGlhbGl6ZSB0aGVtLiAqLwogCWlmICgh cHJlc2VydmUpIHsKIAkJZXJyb3IgPSBvY2ZzMl9pbml0X3NlY3VyaXR5X2FuZF9hY2woZGlyLCBu ZXdfb3JwaGFuX2lub2RlLAotCQkJCQkJICAgICZuZXdfZGVudHJ5LT5kX25hbWUsCi0JCQkJCQkg ICAgZGVmYXVsdF9hY2wsIGFjbCk7CisJCQkJCQkgICAgJm5ld19kZW50cnktPmRfbmFtZSk7CiAJ CWlmIChlcnJvcikKIAkJCW1sb2dfZXJybm8oZXJyb3IpOwogCX0KIG91dDoKLQlpZiAoZGVmYXVs dF9hY2wpCi0JCXBvc2l4X2FjbF9yZWxlYXNlKGRlZmF1bHRfYWNsKTsKLQlpZiAoYWNsKQotCQlw b3NpeF9hY2xfcmVsZWFzZShhY2wpOwogCWlmICghZXJyb3IpIHsKIAkJZXJyb3IgPSBvY2ZzMl9t dl9vcnBoYW5lZF9pbm9kZV90b19uZXcoZGlyLCBuZXdfb3JwaGFuX2lub2RlLAogCQkJCQkJICAg ICAgIG5ld19kZW50cnkpOwpkaWZmIC0tZ2l0IGEvZnMvb2NmczIveGF0dHIuYyBiL2ZzL29jZnMy L3hhdHRyLmMKaW5kZXggMDE2ZjAxZGYzODI1Li5jMjM3MDA4YzAxMGQgMTAwNjQ0Ci0tLSBhL2Zz L29jZnMyL3hhdHRyLmMKKysrIGIvZnMvb2NmczIveGF0dHIuYwpAQCAtNzIwNywxMiArNzIwNywx MCBAQCBvdXQ6CiAgKi8KIGludCBvY2ZzMl9pbml0X3NlY3VyaXR5X2FuZF9hY2woc3RydWN0IGlu b2RlICpkaXIsCiAJCQkJc3RydWN0IGlub2RlICppbm9kZSwKLQkJCQljb25zdCBzdHJ1Y3QgcXN0 ciAqcXN0ciwKLQkJCQlzdHJ1Y3QgcG9zaXhfYWNsICpkZWZhdWx0X2FjbCwKLQkJCQlzdHJ1Y3Qg cG9zaXhfYWNsICphY2wpCisJCQkJY29uc3Qgc3RydWN0IHFzdHIgKnFzdHIpCiB7Ci0Jc3RydWN0 IGJ1ZmZlcl9oZWFkICpkaXJfYmggPSBOVUxMOwogCWludCByZXQgPSAwOworCXN0cnVjdCBidWZm ZXJfaGVhZCAqZGlyX2JoID0gTlVMTDsKIAogCXJldCA9IG9jZnMyX2luaXRfc2VjdXJpdHlfZ2V0 KGlub2RlLCBkaXIsIHFzdHIsIE5VTEwpOwogCWlmIChyZXQpIHsKQEAgLTcyMjUsMTEgKzcyMjMs OSBAQCBpbnQgb2NmczJfaW5pdF9zZWN1cml0eV9hbmRfYWNsKHN0cnVjdCBpbm9kZSAqZGlyLAog CQltbG9nX2Vycm5vKHJldCk7CiAJCWdvdG8gbGVhdmU7CiAJfQotCi0JaWYgKCFyZXQgJiYgZGVm YXVsdF9hY2wpCi0JCXJldCA9IG9jZnMyX2lvcF9zZXRfYWNsKGlub2RlLCBkZWZhdWx0X2FjbCwg QUNMX1RZUEVfREVGQVVMVCk7Ci0JaWYgKCFyZXQgJiYgYWNsKQotCQlyZXQgPSBvY2ZzMl9pb3Bf c2V0X2FjbChpbm9kZSwgYWNsLCBBQ0xfVFlQRV9BQ0NFU1MpOworCXJldCA9IG9jZnMyX2luaXRf YWNsKE5VTEwsIGlub2RlLCBkaXIsIE5VTEwsIGRpcl9iaCwgTlVMTCwgTlVMTCk7CisJaWYgKHJl dCkKKwkJbWxvZ19lcnJubyhyZXQpOwogCiAJb2NmczJfaW5vZGVfdW5sb2NrKGRpciwgMCk7CiAJ YnJlbHNlKGRpcl9iaCk7CmRpZmYgLS1naXQgYS9mcy9vY2ZzMi94YXR0ci5oIGIvZnMvb2NmczIv eGF0dHIuaAppbmRleCBmMTBkNWI5M2MzNjYuLjE2MzNjYzE1ZWExZiAxMDA2NDQKLS0tIGEvZnMv b2NmczIveGF0dHIuaAorKysgYi9mcy9vY2ZzMi94YXR0ci5oCkBAIC05NCw3ICs5NCw1IEBAIGlu dCBvY2ZzMl9yZWZsaW5rX3hhdHRycyhzdHJ1Y3QgaW5vZGUgKm9sZF9pbm9kZSwKIAkJCSBib29s IHByZXNlcnZlX3NlY3VyaXR5KTsKIGludCBvY2ZzMl9pbml0X3NlY3VyaXR5X2FuZF9hY2woc3Ry dWN0IGlub2RlICpkaXIsCiAJCQkJc3RydWN0IGlub2RlICppbm9kZSwKLQkJCQljb25zdCBzdHJ1 Y3QgcXN0ciAqcXN0ciwKLQkJCQlzdHJ1Y3QgcG9zaXhfYWNsICpkZWZhdWx0X2FjbCwKLQkJCQlz dHJ1Y3QgcG9zaXhfYWNsICphY2wpOworCQkJCWNvbnN0IHN0cnVjdCBxc3RyICpxc3RyKTsKICNl bmRpZiAvKiBPQ0ZTMl9YQVRUUl9IICovCmRpZmYgLS1naXQgYS9mcy9wbm9kZS5jIGIvZnMvcG5v ZGUuYwppbmRleCBhYWUzMzFhNWQwM2IuLjE4ZTU2ZmM0YTg4YyAxMDA2NDQKLS0tIGEvZnMvcG5v ZGUuYworKysgYi9mcy9wbm9kZS5jCkBAIC0xOTgsMTAgKzE5OCwxNSBAQCBzdGF0aWMgc3RydWN0 IG1vdW50ICpuZXh0X2dyb3VwKHN0cnVjdCBtb3VudCAqbSwgc3RydWN0IG1vdW50ICpvcmlnaW4p CiAKIC8qIGFsbCBhY2Nlc3NlcyBhcmUgc2VyaWFsaXplZCBieSBuYW1lc3BhY2Vfc2VtICovCiBz dGF0aWMgc3RydWN0IHVzZXJfbmFtZXNwYWNlICp1c2VyX25zOwotc3RhdGljIHN0cnVjdCBtb3Vu dCAqbGFzdF9kZXN0LCAqbGFzdF9zb3VyY2UsICpkZXN0X21hc3RlcjsKK3N0YXRpYyBzdHJ1Y3Qg bW91bnQgKmxhc3RfZGVzdCwgKmZpcnN0X3NvdXJjZSwgKmxhc3Rfc291cmNlLCAqZGVzdF9tYXN0 ZXI7CiBzdGF0aWMgc3RydWN0IG1vdW50cG9pbnQgKm1wOwogc3RhdGljIHN0cnVjdCBobGlzdF9o ZWFkICpsaXN0OwogCitzdGF0aWMgaW5saW5lIGJvb2wgcGVlcnMoc3RydWN0IG1vdW50ICptMSwg c3RydWN0IG1vdW50ICptMikKK3sKKwlyZXR1cm4gbTEtPm1udF9ncm91cF9pZCA9PSBtMi0+bW50 X2dyb3VwX2lkICYmIG0xLT5tbnRfZ3JvdXBfaWQ7Cit9CisKIHN0YXRpYyBpbnQgcHJvcGFnYXRl X29uZShzdHJ1Y3QgbW91bnQgKm0pCiB7CiAJc3RydWN0IG1vdW50ICpjaGlsZDsKQEAgLTIxMiwy NCArMjE3LDI2IEBAIHN0YXRpYyBpbnQgcHJvcGFnYXRlX29uZShzdHJ1Y3QgbW91bnQgKm0pCiAJ Lyogc2tpcCBpZiBtb3VudHBvaW50IGlzbid0IGNvdmVyZWQgYnkgaXQgKi8KIAlpZiAoIWlzX3N1 YmRpcihtcC0+bV9kZW50cnksIG0tPm1udC5tbnRfcm9vdCkpCiAJCXJldHVybiAwOwotCWlmICht LT5tbnRfZ3JvdXBfaWQgPT0gbGFzdF9kZXN0LT5tbnRfZ3JvdXBfaWQpIHsKKwlpZiAocGVlcnMo bSwgbGFzdF9kZXN0KSkgewogCQl0eXBlID0gQ0xfTUFLRV9TSEFSRUQ7CiAJfSBlbHNlIHsKIAkJ c3RydWN0IG1vdW50ICpuLCAqcDsKKwkJYm9vbCBkb25lOwogCQlmb3IgKG4gPSBtOyA7IG4gPSBw KSB7CiAJCQlwID0gbi0+bW50X21hc3RlcjsKLQkJCWlmIChwID09IGRlc3RfbWFzdGVyIHx8IElT X01OVF9NQVJLRUQocCkpIHsKLQkJCQl3aGlsZSAobGFzdF9kZXN0LT5tbnRfbWFzdGVyICE9IHAp IHsKLQkJCQkJbGFzdF9zb3VyY2UgPSBsYXN0X3NvdXJjZS0+bW50X21hc3RlcjsKLQkJCQkJbGFz dF9kZXN0ID0gbGFzdF9zb3VyY2UtPm1udF9wYXJlbnQ7Ci0JCQkJfQotCQkJCWlmIChuLT5tbnRf Z3JvdXBfaWQgIT0gbGFzdF9kZXN0LT5tbnRfZ3JvdXBfaWQpIHsKLQkJCQkJbGFzdF9zb3VyY2Ug PSBsYXN0X3NvdXJjZS0+bW50X21hc3RlcjsKLQkJCQkJbGFzdF9kZXN0ID0gbGFzdF9zb3VyY2Ut Pm1udF9wYXJlbnQ7Ci0JCQkJfQorCQkJaWYgKHAgPT0gZGVzdF9tYXN0ZXIgfHwgSVNfTU5UX01B UktFRChwKSkKIAkJCQlicmVhazsKLQkJCX0KIAkJfQorCQlkbyB7CisJCQlzdHJ1Y3QgbW91bnQg KnBhcmVudCA9IGxhc3Rfc291cmNlLT5tbnRfcGFyZW50OworCQkJaWYgKGxhc3Rfc291cmNlID09 IGZpcnN0X3NvdXJjZSkKKwkJCQlicmVhazsKKwkJCWRvbmUgPSBwYXJlbnQtPm1udF9tYXN0ZXIg PT0gcDsKKwkJCWlmIChkb25lICYmIHBlZXJzKG4sIHBhcmVudCkpCisJCQkJYnJlYWs7CisJCQls YXN0X3NvdXJjZSA9IGxhc3Rfc291cmNlLT5tbnRfbWFzdGVyOworCQl9IHdoaWxlICghZG9uZSk7 CisKIAkJdHlwZSA9IENMX1NMQVZFOwogCQkvKiBiZWdpbm5pbmcgb2YgcGVlciBncm91cCBhbW9u ZyB0aGUgc2xhdmVzPyAqLwogCQlpZiAoSVNfTU5UX1NIQVJFRChtKSkKQEAgLTI4MCw2ICsyODcs NyBAQCBpbnQgcHJvcGFnYXRlX21udChzdHJ1Y3QgbW91bnQgKmRlc3RfbW50LCBzdHJ1Y3QgbW91 bnRwb2ludCAqZGVzdF9tcCwKIAkgKi8KIAl1c2VyX25zID0gY3VycmVudC0+bnNwcm94eS0+bW50 X25zLT51c2VyX25zOwogCWxhc3RfZGVzdCA9IGRlc3RfbW50OworCWZpcnN0X3NvdXJjZSA9IHNv dXJjZV9tbnQ7CiAJbGFzdF9zb3VyY2UgPSBzb3VyY2VfbW50OwogCW1wID0gZGVzdF9tcDsKIAls aXN0ID0gdHJlZV9saXN0OwpkaWZmIC0tZ2l0IGEvZnMvcHJvYy9iYXNlLmMgYi9mcy9wcm9jL2Jh c2UuYwppbmRleCAyZDAzOGE3ZTE2YTEuLjA4OTdmNWNiNDk1NyAxMDA2NDQKLS0tIGEvZnMvcHJv Yy9iYXNlLmMKKysrIGIvZnMvcHJvYy9iYXNlLmMKQEAgLTgwOSw3ICs4MDksOCBAQCBzdGF0aWMg c3NpemVfdCBlbnZpcm9uX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICpidWYs CiAJaW50IHJldCA9IDA7CiAJc3RydWN0IG1tX3N0cnVjdCAqbW0gPSBmaWxlLT5wcml2YXRlX2Rh dGE7CiAKLQlpZiAoIW1tKQorCS8qIEVuc3VyZSB0aGUgcHJvY2VzcyBzcGF3bmVkIGZhciBlbm91 Z2ggdG8gaGF2ZSBhbiBlbnZpcm9ubWVudC4gKi8KKwlpZiAoIW1tIHx8ICFtbS0+ZW52X2VuZCkK IAkJcmV0dXJuIDA7CiAKIAlwYWdlID0gKGNoYXIgKilfX2dldF9mcmVlX3BhZ2UoR0ZQX1RFTVBP UkFSWSk7CmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2JtYXBfdXRpbC5jIGIvZnMveGZzL3hmc19i bWFwX3V0aWwuYwppbmRleCA2NDczMWVmMzMyNGQuLjNkODA3ZWY0ZjgyMSAxMDA2NDQKLS0tIGEv ZnMveGZzL3hmc19ibWFwX3V0aWwuYworKysgYi9mcy94ZnMveGZzX2JtYXBfdXRpbC5jCkBAIC0x NjMzLDYgKzE2MzMsNyBAQCB4ZnNfc3dhcF9leHRlbnRzKAogCWludAkJYWZvcmtibGtzID0gMDsK IAlpbnQJCXRhZm9ya2Jsa3MgPSAwOwogCV9fdWludDY0X3QJdG1wOworCWludAkJbG9ja19mbGFn czsKIAogCXRlbXBpZnAgPSBrbWVtX2FsbG9jKHNpemVvZih4ZnNfaWZvcmtfdCksIEtNX01BWUZB SUwpOwogCWlmICghdGVtcGlmcCkgewpAQCAtMTY0MSwxMyArMTY0MiwxNCBAQCB4ZnNfc3dhcF9l eHRlbnRzKAogCX0KIAogCS8qCi0JICogd2UgaGF2ZSB0byBkbyB0d28gc2VwYXJhdGUgbG9jayBj YWxscyBoZXJlIHRvIGtlZXAgbG9ja2RlcAotCSAqIGhhcHB5LiBJZiB3ZSB0cnkgdG8gZ2V0IGFs bCB0aGUgbG9ja3MgaW4gb25lIGNhbGwsIGxvY2sgd2lsbAotCSAqIHJlcG9ydCBmYWxzZSBwb3Np dGl2ZXMgd2hlbiB3ZSBkcm9wIHRoZSBJTE9DSyBhbmQgcmVnYWluIHRoZW0KLQkgKiBiZWxvdy4K KwkgKiBMb2NrIHRoZSBpbm9kZXMgYWdhaW5zdCBvdGhlciBJTywgcGFnZSBmYXVsdHMgYW5kIHRy dW5jYXRlIHRvCisJICogYmVnaW4gd2l0aC4gIFRoZW4gd2UgY2FuIGVuc3VyZSB0aGUgaW5vZGVz IGFyZSBmbHVzaGVkIGFuZCBoYXZlIG5vCisJICogcGFnZSBjYWNoZSBzYWZlbHkuIE9uY2Ugd2Ug aGF2ZSBkb25lIHRoaXMgd2UgY2FuIHRha2UgdGhlIGlsb2NrcyBhbmQKKwkgKiBkbyB0aGUgcmVz dCBvZiB0aGUgY2hlY2tzLgogCSAqLworCWxvY2tfZmxhZ3MgPSBYRlNfSU9MT0NLX0VYQ0wgfCBY RlNfTU1BUExPQ0tfRVhDTDsKIAl4ZnNfbG9ja190d29faW5vZGVzKGlwLCB0aXAsIFhGU19JT0xP Q0tfRVhDTCk7Ci0JeGZzX2xvY2tfdHdvX2lub2RlcyhpcCwgdGlwLCBYRlNfSUxPQ0tfRVhDTCk7 CisJeGZzX2xvY2tfdHdvX2lub2RlcyhpcCwgdGlwLCBYRlNfTU1BUExPQ0tfRVhDTCk7CiAKIAkv KiBWZXJpZnkgdGhhdCBib3RoIGZpbGVzIGhhdmUgdGhlIHNhbWUgZm9ybWF0ICovCiAJaWYgKChp cC0+aV9kLmRpX21vZGUgJiBTX0lGTVQpICE9ICh0aXAtPmlfZC5kaV9tb2RlICYgU19JRk1UKSkg ewpAQCAtMTY2Niw2ICsxNjY4LDkgQEAgeGZzX3N3YXBfZXh0ZW50cygKIAkJZ290byBvdXRfdW5s b2NrOwogCXRydW5jYXRlX3BhZ2VjYWNoZV9yYW5nZShWRlNfSSh0aXApLCAwLCAtMSk7CiAKKwl4 ZnNfbG9ja190d29faW5vZGVzKGlwLCB0aXAsIFhGU19JTE9DS19FWENMKTsKKwlsb2NrX2ZsYWdz IHw9IFhGU19JTE9DS19FWENMOworCiAJLyogVmVyaWZ5IE9fRElSRUNUIGZvciBmdG1wICovCiAJ aWYgKFZOX0NBQ0hFRChWRlNfSSh0aXApKSAhPSAwKSB7CiAJCWVycm9yID0gWEZTX0VSUk9SKEVJ TlZBTCk7CkBAIC0xNzA3LDE5ICsxNzEyLDkgQEAgeGZzX3N3YXBfZXh0ZW50cygKIAkJZ290byBv dXRfdW5sb2NrOwogCX0KIAotCS8qIFdlIG5lZWQgdG8gZmFpbCBpZiB0aGUgZmlsZSBpcyBtZW1v cnkgbWFwcGVkLiAgT25jZSB3ZSBoYXZlIHRvc3NlZAotCSAqIGFsbCBleGlzdGluZyBwYWdlcywg dGhlIHBhZ2UgZmF1bHQgd2lsbCBoYXZlIG5vIG9wdGlvbgotCSAqIGJ1dCB0byBnbyB0byB0aGUg ZmlsZXN5c3RlbSBmb3IgcGFnZXMuIEJ5IG1ha2luZyB0aGUgcGFnZSBmYXVsdCBjYWxsCi0JICog dm9wX3JlYWQgKG9yIHdyaXRlIGluIHRoZSBjYXNlIG9mIGF1dG9ncm93KSB0aGV5IGJsb2NrIG9u IHRoZSBpb2xvY2sKLQkgKiB1bnRpbCB3ZSBoYXZlIHN3aXRjaGVkIHRoZSBleHRlbnRzLgotCSAq LwotCWlmIChWTl9NQVBQRUQoVkZTX0koaXApKSkgewotCQllcnJvciA9IFhGU19FUlJPUihFQlVT WSk7Ci0JCWdvdG8gb3V0X3VubG9jazsKLQl9Ci0KIAl4ZnNfaXVubG9jayhpcCwgWEZTX0lMT0NL X0VYQ0wpOwogCXhmc19pdW5sb2NrKHRpcCwgWEZTX0lMT0NLX0VYQ0wpOworCWxvY2tfZmxhZ3Mg Jj0gflhGU19JTE9DS19FWENMOwogCiAJLyoKIAkgKiBUaGVyZSBpcyBhIHJhY2UgY29uZGl0aW9u IGhlcmUgc2luY2Ugd2UgZ2F2ZSB1cCB0aGUKQEAgLTE3MzIsMTMgKzE3MjcsMTggQEAgeGZzX3N3 YXBfZXh0ZW50cygKIAogCXRwID0geGZzX3RyYW5zX2FsbG9jKG1wLCBYRlNfVFJBTlNfU1dBUEVY VCk7CiAJZXJyb3IgPSB4ZnNfdHJhbnNfcmVzZXJ2ZSh0cCwgJk1fUkVTKG1wKS0+dHJfaWNoYW5n ZSwgMCwgMCk7Ci0JaWYgKGVycm9yKSB7Ci0JCXhmc19pdW5sb2NrKGlwLCAgWEZTX0lPTE9DS19F WENMKTsKLQkJeGZzX2l1bmxvY2sodGlwLCBYRlNfSU9MT0NLX0VYQ0wpOwotCQl4ZnNfdHJhbnNf Y2FuY2VsKHRwLCAwKTsKLQkJZ290byBvdXQ7Ci0JfQorCWlmIChlcnJvcikKKwkJZ290byBvdXRf dHJhbnNfY2FuY2VsOworCisJLyoKKwkgKiBMb2NrIGFuZCBqb2luIHRoZSBpbm9kZXMgdG8gdGhl IHRhbnNhY3Rpb24gc28gdGhhdCB0cmFuc2FjdGlvbiBjb21taXQKKwkgKiBvciBjYW5jZWwgd2ls bCB1bmxvY2sgdGhlIGlub2RlcyBmcm9tIHRoaXMgcG9pbnQgb253YXJkcy4KKwkgKi8KIAl4ZnNf bG9ja190d29faW5vZGVzKGlwLCB0aXAsIFhGU19JTE9DS19FWENMKTsKKwlsb2NrX2ZsYWdzIHw9 IFhGU19JTE9DS19FWENMOworCXhmc190cmFuc19pam9pbih0cCwgaXAsIGxvY2tfZmxhZ3MpOwor CXhmc190cmFuc19pam9pbih0cCwgdGlwLCBsb2NrX2ZsYWdzKTsKKwogCiAJLyoKIAkgKiBDb3Vu dCB0aGUgbnVtYmVyIG9mIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9ja3MKQEAgLTE3NTcsOSArMTc1 Nyw2IEBAIHhmc19zd2FwX2V4dGVudHMoCiAJCQlnb3RvIG91dF90cmFuc19jYW5jZWw7CiAJfQog Ci0JeGZzX3RyYW5zX2lqb2luKHRwLCBpcCwgWEZTX0lMT0NLX0VYQ0wgfCBYRlNfSU9MT0NLX0VY Q0wpOwotCXhmc190cmFuc19pam9pbih0cCwgdGlwLCBYRlNfSUxPQ0tfRVhDTCB8IFhGU19JT0xP Q0tfRVhDTCk7Ci0KIAkvKgogCSAqIEJlZm9yZSB3ZSd2ZSBzd2FwcGVkIHRoZSBmb3JrcywgbGV0 cyBzZXQgdGhlIG93bmVycyBvZiB0aGUgZm9ya3MKIAkgKiBhcHByb3ByaWF0ZWx5LiBXZSBoYXZl IHRvIGRvIHRoaXMgYXMgd2UgYXJlIGRlbWFuZCBwYWdpbmcgdGhlIGJ0cmVlCkBAIC0xODg3LDEx ICsxODg0LDExIEBAIG91dDoKIAlyZXR1cm4gZXJyb3I7CiAKIG91dF91bmxvY2s6Ci0JeGZzX2l1 bmxvY2soaXAsICBYRlNfSUxPQ0tfRVhDTCB8IFhGU19JT0xPQ0tfRVhDTCk7Ci0JeGZzX2l1bmxv Y2sodGlwLCBYRlNfSUxPQ0tfRVhDTCB8IFhGU19JT0xPQ0tfRVhDTCk7CisJeGZzX2l1bmxvY2so aXAsIGxvY2tfZmxhZ3MpOworCXhmc19pdW5sb2NrKHRpcCwgbG9ja19mbGFncyk7CiAJZ290byBv dXQ7CiAKIG91dF90cmFuc19jYW5jZWw6CiAJeGZzX3RyYW5zX2NhbmNlbCh0cCwgMCk7Ci0JZ290 byBvdXRfdW5sb2NrOworCWdvdG8gb3V0OwogfQpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19maWxl LmMgYi9mcy94ZnMveGZzX2ZpbGUuYwppbmRleCBjNzY4ODYwZTIyYWIuLmQyZjRjYjU5OGI0NiAx MDA2NDQKLS0tIGEvZnMveGZzL3hmc19maWxlLmMKKysrIGIvZnMveGZzL3hmc19maWxlLmMKQEAg LTc4Niw3ICs3ODYsNyBAQCB4ZnNfZmlsZV9mYWxsb2NhdGUoCiAJCSAgICAgRkFMTE9DX0ZMX0NP TExBUFNFX1JBTkdFIHwgRkFMTE9DX0ZMX1pFUk9fUkFOR0UpKQogCQlyZXR1cm4gLUVPUE5PVFNV UFA7CiAKLQl4ZnNfaWxvY2soaXAsIFhGU19JT0xPQ0tfRVhDTCk7CisJeGZzX2lsb2NrKGlwLCBY RlNfSU9MT0NLX0VYQ0wgfCBYRlNfTU1BUExPQ0tfRVhDTCk7CiAJaWYgKG1vZGUgJiBGQUxMT0Nf RkxfUFVOQ0hfSE9MRSkgewogCQllcnJvciA9IHhmc19mcmVlX2ZpbGVfc3BhY2UoaXAsIG9mZnNl dCwgbGVuKTsKIAkJaWYgKGVycm9yKQpAQCAtODY2LDcgKzg2Niw3IEBAIHhmc19maWxlX2ZhbGxv Y2F0ZSgKIAl9CiAKIG91dF91bmxvY2s6Ci0JeGZzX2l1bmxvY2soaXAsIFhGU19JT0xPQ0tfRVhD TCk7CisJeGZzX2l1bmxvY2soaXAsIFhGU19JT0xPQ0tfRVhDTCB8IFhGU19NTUFQTE9DS19FWENM KTsKIAlyZXR1cm4gLWVycm9yOwogfQogCkBAIC05NTcsMjAgKzk1Nyw2IEBAIHhmc19maWxlX21t YXAoCiB9CiAKIC8qCi0gKiBtbWFwKClkIGZpbGUgaGFzIHRha2VuIHdyaXRlIHByb3RlY3Rpb24g ZmF1bHQgYW5kIGlzIGJlaW5nIG1hZGUKLSAqIHdyaXRhYmxlLiBXZSBjYW4gc2V0IHRoZSBwYWdl IHN0YXRlIHVwIGNvcnJlY3RseSBmb3IgYSB3cml0YWJsZQotICogcGFnZSwgd2hpY2ggbWVhbnMg d2UgY2FuIGRvIGNvcnJlY3QgZGVsYWxsb2MgYWNjb3VudGluZyAoRU5PU1BDCi0gKiBjaGVja2lu ZyEpIGFuZCB1bndyaXR0ZW4gZXh0ZW50IG1hcHBpbmcuCi0gKi8KLVNUQVRJQyBpbnQKLXhmc192 bV9wYWdlX21rd3JpdGUoCi0Jc3RydWN0IHZtX2FyZWFfc3RydWN0CSp2bWEsCi0Jc3RydWN0IHZt X2ZhdWx0CQkqdm1mKQotewotCXJldHVybiBibG9ja19wYWdlX21rd3JpdGUodm1hLCB2bWYsIHhm c19nZXRfYmxvY2tzKTsKLX0KLQotLyoKICAqIFRoaXMgdHlwZSBpcyBkZXNpZ25lZCB0byBpbmRp Y2F0ZSB0aGUgdHlwZSBvZiBvZmZzZXQgd2Ugd291bGQgbGlrZQogICogdG8gc2VhcmNoIGZyb20g cGFnZSBjYWNoZSBmb3IgZWl0aGVyIHhmc19zZWVrX2RhdGEoKSBvciB4ZnNfc2Vla19ob2xlKCku CiAgKi8KQEAgLTE0MTcsNiArMTQwMyw2MCBAQCB4ZnNfZmlsZV9sbHNlZWsoCiAJfQogfQogCisv KgorICogTG9ja2luZyBmb3Igc2VyaWFsaXNhdGlvbiBvZiBJTyBkdXJpbmcgcGFnZSBmYXVsdHMu IFRoaXMgcmVzdWx0cyBpbiBhIGxvY2sKKyAqIG9yZGVyaW5nIG9mOgorICoKKyAqIG1tYXBfc2Vt IChNTSkKKyAqICAgaV9tbWFwX2xvY2sgKFhGUyAtIHRydW5jYXRlIHNlcmlhbGlzYXRpb24pCisg KiAgICAgcGFnZV9sb2NrIChNTSkKKyAqICAgICAgIGlfbG9jayAoWEZTIC0gZXh0ZW50IG1hcCBz ZXJpYWxpc2F0aW9uKQorICovCitTVEFUSUMgaW50Cit4ZnNfZmlsZW1hcF9mYXVsdCgKKwlzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QJKnZtYSwKKwlzdHJ1Y3Qgdm1fZmF1bHQJCSp2bWYpCit7CisJc3Ry dWN0IHhmc19pbm9kZQkqaXAgPSBYRlNfSSh2bWEtPnZtX2ZpbGUtPmZfbWFwcGluZy0+aG9zdCk7 CisJaW50CQkJZXJyb3I7CisKKwl0cmFjZV94ZnNfZmlsZW1hcF9mYXVsdChpcCk7CisKKwl4ZnNf aWxvY2soaXAsIFhGU19NTUFQTE9DS19TSEFSRUQpOworCWVycm9yID0gZmlsZW1hcF9mYXVsdCh2 bWEsIHZtZik7CisJeGZzX2l1bmxvY2soaXAsIFhGU19NTUFQTE9DS19TSEFSRUQpOworCisJcmV0 dXJuIGVycm9yOworfQorCisvKgorICogbW1hcCgpZCBmaWxlIGhhcyB0YWtlbiB3cml0ZSBwcm90 ZWN0aW9uIGZhdWx0IGFuZCBpcyBiZWluZyBtYWRlIHdyaXRhYmxlLiBXZQorICogY2FuIHNldCB0 aGUgcGFnZSBzdGF0ZSB1cCBjb3JyZWN0bHkgZm9yIGEgd3JpdGFibGUgcGFnZSwgd2hpY2ggbWVh bnMgd2UgY2FuCisgKiBkbyBjb3JyZWN0IGRlbGFsbG9jIGFjY291bnRpbmcgKEVOT1NQQyBjaGVj a2luZyEpIGFuZCB1bndyaXR0ZW4gZXh0ZW50CisgKiBtYXBwaW5nLgorICovCitTVEFUSUMgaW50 Cit4ZnNfZmlsZW1hcF9wYWdlX21rd3JpdGUoCisJc3RydWN0IHZtX2FyZWFfc3RydWN0CSp2bWEs CisJc3RydWN0IHZtX2ZhdWx0CQkqdm1mKQoreworCXN0cnVjdCB4ZnNfaW5vZGUJKmlwID0gWEZT X0kodm1hLT52bV9maWxlLT5mX21hcHBpbmctPmhvc3QpOworCWludAkJCXJldDsKKworCXRyYWNl X3hmc19maWxlbWFwX3BhZ2VfbWt3cml0ZShpcCk7CisKKwlzYl9zdGFydF9wYWdlZmF1bHQoVkZT X0koaXApLT5pX3NiKTsKKwlmaWxlX3VwZGF0ZV90aW1lKHZtYS0+dm1fZmlsZSk7CisJeGZzX2ls b2NrKGlwLCBYRlNfTU1BUExPQ0tfU0hBUkVEKTsKKworCXJldCA9IF9fYmxvY2tfcGFnZV9ta3dy aXRlKHZtYSwgdm1mLCB4ZnNfZ2V0X2Jsb2Nrcyk7CisKKwl4ZnNfaXVubG9jayhpcCwgWEZTX01N QVBMT0NLX1NIQVJFRCk7CisJc2JfZW5kX3BhZ2VmYXVsdChWRlNfSShpcCktPmlfc2IpOworCisJ cmV0dXJuIGJsb2NrX3BhZ2VfbWt3cml0ZV9yZXR1cm4ocmV0KTsKK30KKwogY29uc3Qgc3RydWN0 IGZpbGVfb3BlcmF0aW9ucyB4ZnNfZmlsZV9vcGVyYXRpb25zID0gewogCS5sbHNlZWsJCT0geGZz X2ZpbGVfbGxzZWVrLAogCS5yZWFkCQk9IG5ld19zeW5jX3JlYWQsCkBAIC0xNDQ5LDggKzE0ODks OCBAQCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHhmc19kaXJfZmlsZV9vcGVyYXRpb25z ID0gewogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCB4ZnNf ZmlsZV92bV9vcHMgPSB7Ci0JLmZhdWx0CQk9IGZpbGVtYXBfZmF1bHQsCisJLmZhdWx0CQk9IHhm c19maWxlbWFwX2ZhdWx0LAogCS5tYXBfcGFnZXMJPSBmaWxlbWFwX21hcF9wYWdlcywKLQkucGFn ZV9ta3dyaXRlCT0geGZzX3ZtX3BhZ2VfbWt3cml0ZSwKKwkucGFnZV9ta3dyaXRlCT0geGZzX2Zp bGVtYXBfcGFnZV9ta3dyaXRlLAogCS5yZW1hcF9wYWdlcwk9IGdlbmVyaWNfZmlsZV9yZW1hcF9w YWdlcywKIH07CmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2lub2RlLmMgYi9mcy94ZnMveGZzX2lu b2RlLmMKaW5kZXggOTdmMDY2NDE5ZWUxLi42MzRkYmU1MGMyOTIgMTAwNjQ0Ci0tLSBhL2ZzL3hm cy94ZnNfaW5vZGUuYworKysgYi9mcy94ZnMveGZzX2lub2RlLmMKQEAgLTExOSwyNCArMTE5LDM0 IEBAIHhmc19pbG9ja19hdHRyX21hcF9zaGFyZWQoCiB9CiAKIC8qCi0gKiBUaGUgeGZzIGlub2Rl IGNvbnRhaW5zIDIgbG9ja3M6IGEgbXVsdGktcmVhZGVyIGxvY2sgY2FsbGVkIHRoZQotICogaV9p b2xvY2sgYW5kIGEgbXVsdGktcmVhZGVyIGxvY2sgY2FsbGVkIHRoZSBpX2xvY2suICBUaGlzIHJv dXRpbmUKLSAqIGFsbG93cyBlaXRoZXIgb3IgYm90aCBvZiB0aGUgbG9ja3MgdG8gYmUgb2J0YWlu ZWQuCisgKiBUaGUgeGZzIGlub2RlIGNvbnRhaW5zIDMgbXVsdGktcmVhZGVyIGxvY2tzOiB0aGUg aV9pb2xvY2sgdGhlIGlfbW1hcF9sb2NrIGFuZAorICogdGhlIGlfbG9jay4gIFRoaXMgcm91dGlu ZSBhbGxvd3MgdmFyaW91cyBjb21iaW5hdGlvbnMgb2YgdGhlIGxvY2tzIHRvIGJlCisgKiBvYnRh aW5lZC4KICAqCi0gKiBUaGUgMiBsb2NrcyBzaG91bGQgYWx3YXlzIGJlIG9yZGVyZWQgc28gdGhh dCB0aGUgSU8gbG9jayBpcwotICogb2J0YWluZWQgZmlyc3QgaW4gb3JkZXIgdG8gcHJldmVudCBk ZWFkbG9jay4KKyAqIFRoZSAzIGxvY2tzIHNob3VsZCBhbHdheXMgYmUgb3JkZXJlZCBzbyB0aGF0 IHRoZSBJTyBsb2NrIGlzIG9idGFpbmVkIGZpcnN0LAorICogdGhlIG1tYXAgbG9jayBzZWNvbmQg YW5kIHRoZSBpbG9jayBsYXN0IGluIG9yZGVyIHRvIHByZXZlbnQgZGVhZGxvY2suCiAgKgotICog aXAgLS0gdGhlIGlub2RlIGJlaW5nIGxvY2tlZAotICogbG9ja19mbGFncyAtLSB0aGlzIHBhcmFt ZXRlciBpbmRpY2F0ZXMgdGhlIGlub2RlJ3MgbG9ja3MKLSAqICAgICAgIHRvIGJlIGxvY2tlZC4g IEl0IGNhbiBiZToKLSAqCQlYRlNfSU9MT0NLX1NIQVJFRCwKLSAqCQlYRlNfSU9MT0NLX0VYQ0ws Ci0gKgkJWEZTX0lMT0NLX1NIQVJFRCwKLSAqCQlYRlNfSUxPQ0tfRVhDTCwKLSAqCQlYRlNfSU9M T0NLX1NIQVJFRCB8IFhGU19JTE9DS19TSEFSRUQsCi0gKgkJWEZTX0lPTE9DS19TSEFSRUQgfCBY RlNfSUxPQ0tfRVhDTCwKLSAqCQlYRlNfSU9MT0NLX0VYQ0wgfCBYRlNfSUxPQ0tfU0hBUkVELAot ICoJCVhGU19JT0xPQ0tfRVhDTCB8IFhGU19JTE9DS19FWENMCisgKiBCYXNpYyBsb2NraW5nIG9y ZGVyOgorICoKKyAqIGlfaW9sb2NrIC0+IGlfbW1hcF9sb2NrIC0+IHBhZ2VfbG9jayAtPiBpX2ls b2NrCisgKgorICogbW1hcF9zZW0gbG9ja2luZyBvcmRlcjoKKyAqCisgKiBpX2lvbG9jayAtPiBw YWdlIGxvY2sgLT4gbW1hcF9zZW0KKyAqIG1tYXBfc2VtIC0+IGlfbW1hcF9sb2NrIC0+IHBhZ2Vf bG9jaworICoKKyAqIFRoZSBkaWZmZXJlbmNlIGluIG1tYXBfc2VtIGxvY2tpbmcgb3JkZXIgbWVh biB0aGF0IHdlIGNhbm5vdCBob2xkIHRoZQorICogaV9tbWFwX2xvY2sgb3ZlciBzeXNjYWxsIGJh c2VkIHJlYWQoMikvd3JpdGUoMikgYmFzZWQgSU8uIFRoZXNlIElPIHBhdGhzIGNhbgorICogZmF1 bHQgaW4gcGFnZXMgZHVyaW5nIGNvcHkgaW4vb3V0IChmb3IgYnVmZmVyZWQgSU8pIG9yIHJlcXVp cmUgdGhlIG1tYXBfc2VtCisgKiBpbiBnZXRfdXNlcl9wYWdlcygpIHRvIG1hcCB0aGUgdXNlciBw YWdlcyBpbnRvIHRoZSBrZXJuZWwgYWRkcmVzcyBzcGFjZSBmb3IKKyAqIGRpcmVjdCBJTy4gU2lt aWxhcmx5IHRoZSBpX2lvbG9jayBjYW5ub3QgYmUgdGFrZW4gaW5zaWRlIGEgcGFnZSBmYXVsdCBi ZWNhdXNlCisgKiBwYWdlIGZhdWx0cyBhbHJlYWR5IGhvbGQgdGhlIG1tYXBfc2VtLgorICoKKyAq IEhlbmNlIHRvIHNlcmlhbGlzZSBmdWxseSBhZ2FpbnN0IGJvdGggc3lzY2FsbCBhbmQgbW1hcCBi YXNlZCBJTywgd2UgbmVlZCB0bworICogdGFrZSBib3RoIHRoZSBpX2lvbG9jayBhbmQgdGhlIGlf bW1hcF9sb2NrLiBUaGVzZSBsb2NrcyBzaG91bGQgKm9ubHkqIGJlIGJvdGgKKyAqIHRha2VuIGlu IHBsYWNlcyB3aGVyZSB3ZSBuZWVkIHRvIGludmFsaWRhdGUgdGhlIHBhZ2UgY2FjaGUgaW4gYSBy YWNlCisgKiBmcmVlIG1hbm5lciAoZS5nLiB0cnVuY2F0ZSwgaG9sZSBwdW5jaCBhbmQgb3RoZXIg ZXh0ZW50IG1hbmlwdWxhdGlvbgorICogZnVuY3Rpb25zKS4KICAqLwogdm9pZAogeGZzX2lsb2Nr KApAQCAtMTUyLDYgKzE2Miw4IEBAIHhmc19pbG9jaygKIAkgKi8KIAlBU1NFUlQoKGxvY2tfZmxh Z3MgJiAoWEZTX0lPTE9DS19TSEFSRUQgfCBYRlNfSU9MT0NLX0VYQ0wpKSAhPQogCSAgICAgICAo WEZTX0lPTE9DS19TSEFSRUQgfCBYRlNfSU9MT0NLX0VYQ0wpKTsKKwlBU1NFUlQoKGxvY2tfZmxh Z3MgJiAoWEZTX01NQVBMT0NLX1NIQVJFRCB8IFhGU19NTUFQTE9DS19FWENMKSkgIT0KKwkgICAg ICAgKFhGU19NTUFQTE9DS19TSEFSRUQgfCBYRlNfTU1BUExPQ0tfRVhDTCkpOwogCUFTU0VSVCgo bG9ja19mbGFncyAmIChYRlNfSUxPQ0tfU0hBUkVEIHwgWEZTX0lMT0NLX0VYQ0wpKSAhPQogCSAg ICAgICAoWEZTX0lMT0NLX1NIQVJFRCB8IFhGU19JTE9DS19FWENMKSk7CiAJQVNTRVJUKChsb2Nr X2ZsYWdzICYgfihYRlNfTE9DS19NQVNLIHwgWEZTX0xPQ0tfREVQX01BU0spKSA9PSAwKTsKQEAg LTE2MSw2ICsxNzMsMTEgQEAgeGZzX2lsb2NrKAogCWVsc2UgaWYgKGxvY2tfZmxhZ3MgJiBYRlNf SU9MT0NLX1NIQVJFRCkKIAkJbXJhY2Nlc3NfbmVzdGVkKCZpcC0+aV9pb2xvY2ssIFhGU19JT0xP Q0tfREVQKGxvY2tfZmxhZ3MpKTsKIAorCWlmIChsb2NrX2ZsYWdzICYgWEZTX01NQVBMT0NLX0VY Q0wpCisJCW1ydXBkYXRlX25lc3RlZCgmaXAtPmlfbW1hcGxvY2ssIFhGU19NTUFQTE9DS19ERVAo bG9ja19mbGFncykpOworCWVsc2UgaWYgKGxvY2tfZmxhZ3MgJiBYRlNfTU1BUExPQ0tfU0hBUkVE KQorCQltcmFjY2Vzc19uZXN0ZWQoJmlwLT5pX21tYXBsb2NrLCBYRlNfTU1BUExPQ0tfREVQKGxv Y2tfZmxhZ3MpKTsKKwogCWlmIChsb2NrX2ZsYWdzICYgWEZTX0lMT0NLX0VYQ0wpCiAJCW1ydXBk YXRlX25lc3RlZCgmaXAtPmlfbG9jaywgWEZTX0lMT0NLX0RFUChsb2NrX2ZsYWdzKSk7CiAJZWxz ZSBpZiAobG9ja19mbGFncyAmIFhGU19JTE9DS19TSEFSRUQpCkBAIC0xOTMsNiArMjEwLDggQEAg eGZzX2lsb2NrX25vd2FpdCgKIAkgKi8KIAlBU1NFUlQoKGxvY2tfZmxhZ3MgJiAoWEZTX0lPTE9D S19TSEFSRUQgfCBYRlNfSU9MT0NLX0VYQ0wpKSAhPQogCSAgICAgICAoWEZTX0lPTE9DS19TSEFS RUQgfCBYRlNfSU9MT0NLX0VYQ0wpKTsKKwlBU1NFUlQoKGxvY2tfZmxhZ3MgJiAoWEZTX01NQVBM T0NLX1NIQVJFRCB8IFhGU19NTUFQTE9DS19FWENMKSkgIT0KKwkgICAgICAgKFhGU19NTUFQTE9D S19TSEFSRUQgfCBYRlNfTU1BUExPQ0tfRVhDTCkpOwogCUFTU0VSVCgobG9ja19mbGFncyAmIChY RlNfSUxPQ0tfU0hBUkVEIHwgWEZTX0lMT0NLX0VYQ0wpKSAhPQogCSAgICAgICAoWEZTX0lMT0NL X1NIQVJFRCB8IFhGU19JTE9DS19FWENMKSk7CiAJQVNTRVJUKChsb2NrX2ZsYWdzICYgfihYRlNf TE9DS19NQVNLIHwgWEZTX0xPQ0tfREVQX01BU0spKSA9PSAwKTsKQEAgLTIwNCwyMSArMjIzLDM1 IEBAIHhmc19pbG9ja19ub3dhaXQoCiAJCWlmICghbXJ0cnlhY2Nlc3MoJmlwLT5pX2lvbG9jaykp CiAJCQlnb3RvIG91dDsKIAl9CisKKwlpZiAobG9ja19mbGFncyAmIFhGU19NTUFQTE9DS19FWENM KSB7CisJCWlmICghbXJ0cnl1cGRhdGUoJmlwLT5pX21tYXBsb2NrKSkKKwkJCWdvdG8gb3V0X3Vu ZG9faW9sb2NrOworCX0gZWxzZSBpZiAobG9ja19mbGFncyAmIFhGU19NTUFQTE9DS19TSEFSRUQp IHsKKwkJaWYgKCFtcnRyeWFjY2VzcygmaXAtPmlfbW1hcGxvY2spKQorCQkJZ290byBvdXRfdW5k b19pb2xvY2s7CisJfQorCiAJaWYgKGxvY2tfZmxhZ3MgJiBYRlNfSUxPQ0tfRVhDTCkgewogCQlp ZiAoIW1ydHJ5dXBkYXRlKCZpcC0+aV9sb2NrKSkKLQkJCWdvdG8gb3V0X3VuZG9faW9sb2NrOwor CQkJZ290byBvdXRfdW5kb19tbWFwbG9jazsKIAl9IGVsc2UgaWYgKGxvY2tfZmxhZ3MgJiBYRlNf SUxPQ0tfU0hBUkVEKSB7CiAJCWlmICghbXJ0cnlhY2Nlc3MoJmlwLT5pX2xvY2spKQotCQkJZ290 byBvdXRfdW5kb19pb2xvY2s7CisJCQlnb3RvIG91dF91bmRvX21tYXBsb2NrOwogCX0KIAlyZXR1 cm4gMTsKIAotIG91dF91bmRvX2lvbG9jazoKK291dF91bmRvX21tYXBsb2NrOgorCWlmIChsb2Nr X2ZsYWdzICYgWEZTX01NQVBMT0NLX0VYQ0wpCisJCW1ydW5sb2NrX2V4Y2woJmlwLT5pX21tYXBs b2NrKTsKKwllbHNlIGlmIChsb2NrX2ZsYWdzICYgWEZTX01NQVBMT0NLX1NIQVJFRCkKKwkJbXJ1 bmxvY2tfc2hhcmVkKCZpcC0+aV9tbWFwbG9jayk7CitvdXRfdW5kb19pb2xvY2s6CiAJaWYgKGxv Y2tfZmxhZ3MgJiBYRlNfSU9MT0NLX0VYQ0wpCiAJCW1ydW5sb2NrX2V4Y2woJmlwLT5pX2lvbG9j ayk7CiAJZWxzZSBpZiAobG9ja19mbGFncyAmIFhGU19JT0xPQ0tfU0hBUkVEKQogCQltcnVubG9j a19zaGFyZWQoJmlwLT5pX2lvbG9jayk7Ci0gb3V0Ogorb3V0OgogCXJldHVybiAwOwogfQogCkBA IC0yNDYsNiArMjc5LDggQEAgeGZzX2l1bmxvY2soCiAJICovCiAJQVNTRVJUKChsb2NrX2ZsYWdz ICYgKFhGU19JT0xPQ0tfU0hBUkVEIHwgWEZTX0lPTE9DS19FWENMKSkgIT0KIAkgICAgICAgKFhG U19JT0xPQ0tfU0hBUkVEIHwgWEZTX0lPTE9DS19FWENMKSk7CisJQVNTRVJUKChsb2NrX2ZsYWdz ICYgKFhGU19NTUFQTE9DS19TSEFSRUQgfCBYRlNfTU1BUExPQ0tfRVhDTCkpICE9CisJICAgICAg IChYRlNfTU1BUExPQ0tfU0hBUkVEIHwgWEZTX01NQVBMT0NLX0VYQ0wpKTsKIAlBU1NFUlQoKGxv Y2tfZmxhZ3MgJiAoWEZTX0lMT0NLX1NIQVJFRCB8IFhGU19JTE9DS19FWENMKSkgIT0KIAkgICAg ICAgKFhGU19JTE9DS19TSEFSRUQgfCBYRlNfSUxPQ0tfRVhDTCkpOwogCUFTU0VSVCgobG9ja19m bGFncyAmIH4oWEZTX0xPQ0tfTUFTSyB8IFhGU19MT0NLX0RFUF9NQVNLKSkgPT0gMCk7CkBAIC0y NTYsNiArMjkxLDExIEBAIHhmc19pdW5sb2NrKAogCWVsc2UgaWYgKGxvY2tfZmxhZ3MgJiBYRlNf SU9MT0NLX1NIQVJFRCkKIAkJbXJ1bmxvY2tfc2hhcmVkKCZpcC0+aV9pb2xvY2spOwogCisJaWYg KGxvY2tfZmxhZ3MgJiBYRlNfTU1BUExPQ0tfRVhDTCkKKwkJbXJ1bmxvY2tfZXhjbCgmaXAtPmlf bW1hcGxvY2spOworCWVsc2UgaWYgKGxvY2tfZmxhZ3MgJiBYRlNfTU1BUExPQ0tfU0hBUkVEKQor CQltcnVubG9ja19zaGFyZWQoJmlwLT5pX21tYXBsb2NrKTsKKwogCWlmIChsb2NrX2ZsYWdzICYg WEZTX0lMT0NLX0VYQ0wpCiAJCW1ydW5sb2NrX2V4Y2woJmlwLT5pX2xvY2spOwogCWVsc2UgaWYg KGxvY2tfZmxhZ3MgJiBYRlNfSUxPQ0tfU0hBUkVEKQpAQCAtMjczLDExICszMTMsMTQgQEAgeGZz X2lsb2NrX2RlbW90ZSgKIAl4ZnNfaW5vZGVfdAkJKmlwLAogCXVpbnQJCQlsb2NrX2ZsYWdzKQog ewotCUFTU0VSVChsb2NrX2ZsYWdzICYgKFhGU19JT0xPQ0tfRVhDTHxYRlNfSUxPQ0tfRVhDTCkp OwotCUFTU0VSVCgobG9ja19mbGFncyAmIH4oWEZTX0lPTE9DS19FWENMfFhGU19JTE9DS19FWENM KSkgPT0gMCk7CisJQVNTRVJUKGxvY2tfZmxhZ3MgJiAoWEZTX0lPTE9DS19FWENMfFhGU19NTUFQ TE9DS19FWENMfFhGU19JTE9DS19FWENMKSk7CisJQVNTRVJUKChsb2NrX2ZsYWdzICYKKwkJfihY RlNfSU9MT0NLX0VYQ0x8WEZTX01NQVBMT0NLX0VYQ0x8WEZTX0lMT0NLX0VYQ0wpKSA9PSAwKTsK IAogCWlmIChsb2NrX2ZsYWdzICYgWEZTX0lMT0NLX0VYQ0wpCiAJCW1yZGVtb3RlKCZpcC0+aV9s b2NrKTsKKwlpZiAobG9ja19mbGFncyAmIFhGU19NTUFQTE9DS19FWENMKQorCQltcmRlbW90ZSgm aXAtPmlfbW1hcGxvY2spOwogCWlmIChsb2NrX2ZsYWdzICYgWEZTX0lPTE9DS19FWENMKQogCQlt cmRlbW90ZSgmaXAtPmlfaW9sb2NrKTsKIApAQCAtMjk2LDYgKzMzOSwxMiBAQCB4ZnNfaXNpbG9j a2VkKAogCQlyZXR1cm4gcndzZW1faXNfbG9ja2VkKCZpcC0+aV9sb2NrLm1yX2xvY2spOwogCX0K IAorCWlmIChsb2NrX2ZsYWdzICYgKFhGU19NTUFQTE9DS19FWENMfFhGU19NTUFQTE9DS19TSEFS RUQpKSB7CisJCWlmICghKGxvY2tfZmxhZ3MgJiBYRlNfTU1BUExPQ0tfU0hBUkVEKSkKKwkJCXJl dHVybiAhIWlwLT5pX21tYXBsb2NrLm1yX3dyaXRlcjsKKwkJcmV0dXJuIHJ3c2VtX2lzX2xvY2tl ZCgmaXAtPmlfbW1hcGxvY2subXJfbG9jayk7CisJfQorCiAJaWYgKGxvY2tfZmxhZ3MgJiAoWEZT X0lPTE9DS19FWENMfFhGU19JT0xPQ0tfU0hBUkVEKSkgewogCQlpZiAoIShsb2NrX2ZsYWdzICYg WEZTX0lPTE9DS19TSEFSRUQpKQogCQkJcmV0dXJuICEhaXAtPmlfaW9sb2NrLm1yX3dyaXRlcjsK QEAgLTMxNiwxNCArMzY1LDI3IEBAIGludCB4ZnNfbG9ja19kZWxheXM7CiAjZW5kaWYKIAogLyoK LSAqIEJ1bXAgdGhlIHN1YmNsYXNzIHNvIHhmc19sb2NrX2lub2RlcygpIGFjcXVpcmVzIGVhY2gg bG9jayB3aXRoCi0gKiBhIGRpZmZlcmVudCB2YWx1ZQorICogQnVtcCB0aGUgc3ViY2xhc3Mgc28g eGZzX2xvY2tfaW5vZGVzKCkgYWNxdWlyZXMgZWFjaCBsb2NrIHdpdGggYSBkaWZmZXJlbnQKKyAq IHZhbHVlLiBUaGlzIHNob3VsZG4ndCBiZSBjYWxsZWQgZm9yIHBhZ2UgZmF1bHQgbG9ja2luZywg YnV0IHdlIGFsc28gbmVlZCB0bworICogZW5zdXJlIHdlIGRvbid0IG92ZXJydW4gdGhlIG51bWJl ciBvZiBsb2NrZGVwIHN1YmNsYXNzZXMgZm9yIHRoZSBpb2xvY2sgb3IKKyAqIG1tYXBsb2NrIGFz IHRoYXQgaXMgbGltaXRlZCB0byAxMiBieSB0aGUgbW1hcCBsb2NrIGxvY2tkZXAgYW5ub3RhdGlv bnMuCiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50CiB4ZnNfbG9ja19pbnVtb3JkZXIoaW50IGxvY2tf bW9kZSwgaW50IHN1YmNsYXNzKQogewotCWlmIChsb2NrX21vZGUgJiAoWEZTX0lPTE9DS19TSEFS RUR8WEZTX0lPTE9DS19FWENMKSkKKwlpZiAobG9ja19tb2RlICYgKFhGU19JT0xPQ0tfU0hBUkVE fFhGU19JT0xPQ0tfRVhDTCkpIHsKKwkJQVNTRVJUKHN1YmNsYXNzICsgWEZTX0xPQ0tfSU5VTU9S REVSIDwKKwkJCSgxIDw8IChYRlNfTU1BUExPQ0tfU0hJRlQgLSBYRlNfSU9MT0NLX1NISUZUKSkp OwogCQlsb2NrX21vZGUgfD0gKHN1YmNsYXNzICsgWEZTX0xPQ0tfSU5VTU9SREVSKSA8PCBYRlNf SU9MT0NLX1NISUZUOworCX0KKworCWlmIChsb2NrX21vZGUgJiAoWEZTX01NQVBMT0NLX1NIQVJF RHxYRlNfTU1BUExPQ0tfRVhDTCkpIHsKKwkJQVNTRVJUKHN1YmNsYXNzICsgWEZTX0xPQ0tfSU5V TU9SREVSIDwKKwkJCSgxIDw8IChYRlNfSUxPQ0tfU0hJRlQgLSBYRlNfTU1BUExPQ0tfU0hJRlQp KSk7CisJCWxvY2tfbW9kZSB8PSAoc3ViY2xhc3MgKyBYRlNfTE9DS19JTlVNT1JERVIpIDw8CisJ CQkJCQkJWEZTX01NQVBMT0NLX1NISUZUOworCX0KKwogCWlmIChsb2NrX21vZGUgJiAoWEZTX0lM T0NLX1NIQVJFRHxYRlNfSUxPQ0tfRVhDTCkpCiAJCWxvY2tfbW9kZSB8PSAoc3ViY2xhc3MgKyBY RlNfTE9DS19JTlVNT1JERVIpIDw8IFhGU19JTE9DS19TSElGVDsKIApAQCAtNDQyLDEwICs1MDQs MTAgQEAgYWdhaW46CiB9CiAKIC8qCi0gKiB4ZnNfbG9ja190d29faW5vZGVzKCkgY2FuIG9ubHkg YmUgdXNlZCB0byBsb2NrIG9uZSB0eXBlIG9mIGxvY2sKLSAqIGF0IGEgdGltZSAtIHRoZSBpb2xv Y2sgb3IgdGhlIGlsb2NrLCBidXQgbm90IGJvdGggYXQgb25jZS4gSWYKLSAqIHdlIGxvY2sgYm90 aCBhdCBvbmNlLCBsb2NrZGVwIHdpbGwgcmVwb3J0IGZhbHNlIHBvc2l0aXZlcyBzYXlpbmcKLSAq IHdlIGhhdmUgdmlvbGF0ZWQgbG9ja2luZyBvcmRlcnMuCisgKiB4ZnNfbG9ja190d29faW5vZGVz KCkgY2FuIG9ubHkgYmUgdXNlZCB0byBsb2NrIG9uZSB0eXBlIG9mIGxvY2sgYXQgYSB0aW1lIC0K KyAqIHRoZSBpb2xvY2ssIHRoZSBtbWFwbG9jayBvciB0aGUgaWxvY2ssIGJ1dCBub3QgbW9yZSB0 aGFuIG9uZSBhdCBhIHRpbWUuIElmIHdlCisgKiBsb2NrIG1vcmUgdGhhbiBvbmUgYXQgYSB0aW1l LCBsb2NrZGVwIHdpbGwgcmVwb3J0IGZhbHNlIHBvc2l0aXZlcyBzYXlpbmcgd2UKKyAqIGhhdmUg dmlvbGF0ZWQgbG9ja2luZyBvcmRlcnMuCiAgKi8KIHZvaWQKIHhmc19sb2NrX3R3b19pbm9kZXMo CkBAIC00NTcsOCArNTE5LDEyIEBAIHhmc19sb2NrX3R3b19pbm9kZXMoCiAJaW50CQkJYXR0ZW1w dHMgPSAwOwogCXhmc19sb2dfaXRlbV90CQkqbHA7CiAKLQlpZiAobG9ja19tb2RlICYgKFhGU19J T0xPQ0tfU0hBUkVEfFhGU19JT0xPQ0tfRVhDTCkpCi0JCUFTU0VSVCgobG9ja19tb2RlICYgKFhG U19JTE9DS19TSEFSRUR8WEZTX0lMT0NLX0VYQ0wpKSA9PSAwKTsKKwlpZiAobG9ja19tb2RlICYg KFhGU19JT0xPQ0tfU0hBUkVEfFhGU19JT0xPQ0tfRVhDTCkpIHsKKwkJQVNTRVJUKCEobG9ja19t b2RlICYgKFhGU19NTUFQTE9DS19TSEFSRUR8WEZTX01NQVBMT0NLX0VYQ0wpKSk7CisJCUFTU0VS VCghKGxvY2tfbW9kZSAmIChYRlNfSUxPQ0tfU0hBUkVEfFhGU19JTE9DS19FWENMKSkpOworCX0g ZWxzZSBpZiAobG9ja19tb2RlICYgKFhGU19NTUFQTE9DS19TSEFSRUR8WEZTX01NQVBMT0NLX0VY Q0wpKQorCQlBU1NFUlQoIShsb2NrX21vZGUgJiAoWEZTX0lMT0NLX1NIQVJFRHxYRlNfSUxPQ0tf RVhDTCkpKTsKKwogCUFTU0VSVChpcDAtPmlfaW5vICE9IGlwMS0+aV9pbm8pOwogCiAJaWYgKGlw MC0+aV9pbm8gPiBpcDEtPmlfaW5vKSB7CmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2lub2RlLmgg Yi9mcy94ZnMveGZzX2lub2RlLmgKaW5kZXggZjgzOTdkZjM5NmQ3Li40ZWY5NjYyMDRkYTAgMTAw NjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfaW5vZGUuaAorKysgYi9mcy94ZnMveGZzX2lub2RlLmgKQEAg LTU3LDYgKzU3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGZzX2lub2RlIHsKIAlzdHJ1Y3QgeGZzX2lu b2RlX2xvZ19pdGVtICppX2l0ZW1wOwkvKiBsb2dnaW5nIGluZm9ybWF0aW9uICovCiAJbXJsb2Nr X3QJCWlfbG9jazsJCS8qIGlub2RlIGxvY2sgKi8KIAltcmxvY2tfdAkJaV9pb2xvY2s7CS8qIGlu b2RlIElPIGxvY2sgKi8KKwltcmxvY2tfdAkJaV9tbWFwbG9jazsJLyogaW5vZGUgbW1hcCBJTyBs b2NrICovCiAJYXRvbWljX3QJCWlfcGluY291bnQ7CS8qIGlub2RlIHBpbiBjb3VudCAqLwogCXNw aW5sb2NrX3QJCWlfZmxhZ3NfbG9jazsJLyogaW5vZGUgaV9mbGFncyBsb2NrICovCiAJLyogTWlz Y2VsbGFuZW91cyBzdGF0ZS4gKi8KQEAgLTI2NCwxNSArMjY1LDIwIEBAIHN0YXRpYyBpbmxpbmUg aW50IHhmc19pc2lmbG9ja2VkKHN0cnVjdCB4ZnNfaW5vZGUgKmlwKQogI2RlZmluZQlYRlNfSU9M T0NLX1NIQVJFRAkoMTw8MSkKICNkZWZpbmUJWEZTX0lMT0NLX0VYQ0wJCSgxPDwyKQogI2RlZmlu ZQlYRlNfSUxPQ0tfU0hBUkVECSgxPDwzKQorI2RlZmluZQlYRlNfTU1BUExPQ0tfRVhDTAkoMTw8 NCkKKyNkZWZpbmUJWEZTX01NQVBMT0NLX1NIQVJFRAkoMTw8NSkKIAogI2RlZmluZSBYRlNfTE9D S19NQVNLCQkoWEZTX0lPTE9DS19FWENMIHwgWEZTX0lPTE9DS19TSEFSRUQgXAotCQkJCXwgWEZT X0lMT0NLX0VYQ0wgfCBYRlNfSUxPQ0tfU0hBUkVEKQorCQkJCXwgWEZTX0lMT0NLX0VYQ0wgfCBY RlNfSUxPQ0tfU0hBUkVEIFwKKwkJCQl8IFhGU19NTUFQTE9DS19FWENMIHwgWEZTX01NQVBMT0NL X1NIQVJFRCkKIAogI2RlZmluZSBYRlNfTE9DS19GTEFHUyBcCiAJeyBYRlNfSU9MT0NLX0VYQ0ws CSJJT0xPQ0tfRVhDTCIgfSwgXAogCXsgWEZTX0lPTE9DS19TSEFSRUQsCSJJT0xPQ0tfU0hBUkVE IiB9LCBcCiAJeyBYRlNfSUxPQ0tfRVhDTCwJIklMT0NLX0VYQ0wiIH0sIFwKLQl7IFhGU19JTE9D S19TSEFSRUQsCSJJTE9DS19TSEFSRUQiIH0KKwl7IFhGU19JTE9DS19TSEFSRUQsCSJJTE9DS19T SEFSRUQiIH0sIFwKKwl7IFhGU19NTUFQTE9DS19FWENMLAkiTU1BUExPQ0tfRVhDTCIgfSwgXAor CXsgWEZTX01NQVBMT0NLX1NIQVJFRCwJIk1NQVBMT0NLX1NIQVJFRCIgfQogCiAKIC8qCkBAIC0z MDMsMTcgKzMwOSwyNiBAQCBzdGF0aWMgaW5saW5lIGludCB4ZnNfaXNpZmxvY2tlZChzdHJ1Y3Qg eGZzX2lub2RlICppcCkKICNkZWZpbmUgWEZTX0lPTE9DS19TSElGVAkxNgogI2RlZmluZQlYRlNf SU9MT0NLX1BBUkVOVAkoWEZTX0xPQ0tfUEFSRU5UIDw8IFhGU19JT0xPQ0tfU0hJRlQpCiAKKyNk ZWZpbmUgWEZTX01NQVBMT0NLX1NISUZUCTIwCisKICNkZWZpbmUgWEZTX0lMT0NLX1NISUZUCQky NAogI2RlZmluZQlYRlNfSUxPQ0tfUEFSRU5UCShYRlNfTE9DS19QQVJFTlQgPDwgWEZTX0lMT0NL X1NISUZUKQogI2RlZmluZQlYRlNfSUxPQ0tfUlRCSVRNQVAJKFhGU19MT0NLX1JUQklUTUFQIDw8 IFhGU19JTE9DS19TSElGVCkKICNkZWZpbmUJWEZTX0lMT0NLX1JUU1VNCQkoWEZTX0xPQ0tfUlRT VU0gPDwgWEZTX0lMT0NLX1NISUZUKQogCi0jZGVmaW5lIFhGU19JT0xPQ0tfREVQX01BU0sJMHgw MGZmMDAwMAorI2RlZmluZSBYRlNfSU9MT0NLX0RFUF9NQVNLCTB4MDAwZjAwMDAKKyNkZWZpbmUg WEZTX01NQVBMT0NLX0RFUF9NQVNLCTB4MDBmMDAwMDAKICNkZWZpbmUgWEZTX0lMT0NLX0RFUF9N QVNLCTB4ZmYwMDAwMDAKLSNkZWZpbmUgWEZTX0xPQ0tfREVQX01BU0sJKFhGU19JT0xPQ0tfREVQ X01BU0sgfCBYRlNfSUxPQ0tfREVQX01BU0spCi0KLSNkZWZpbmUgWEZTX0lPTE9DS19ERVAoZmxh Z3MpCSgoKGZsYWdzKSAmIFhGU19JT0xPQ0tfREVQX01BU0spID4+IFhGU19JT0xPQ0tfU0hJRlQp Ci0jZGVmaW5lIFhGU19JTE9DS19ERVAoZmxhZ3MpCSgoKGZsYWdzKSAmIFhGU19JTE9DS19ERVBf TUFTSykgPj4gWEZTX0lMT0NLX1NISUZUKQorI2RlZmluZSBYRlNfTE9DS19ERVBfTUFTSwkoWEZT X0lPTE9DS19ERVBfTUFTSyB8IFwKKwkJCQkgWEZTX01NQVBMT0NLX0RFUF9NQVNLIHwgXAorCQkJ CSBYRlNfSUxPQ0tfREVQX01BU0spCisKKyNkZWZpbmUgWEZTX0lPTE9DS19ERVAoZmxhZ3MpCSgo KGZsYWdzKSAmIFhGU19JT0xPQ0tfREVQX01BU0spIFwKKwkJCQkJPj4gWEZTX0lPTE9DS19TSElG VCkKKyNkZWZpbmUgWEZTX01NQVBMT0NLX0RFUChmbGFncykJKCgoZmxhZ3MpICYgWEZTX01NQVBM T0NLX0RFUF9NQVNLKSBcCisJCQkJCT4+IFhGU19NTUFQTE9DS19TSElGVCkKKyNkZWZpbmUgWEZT X0lMT0NLX0RFUChmbGFncykJKCgoZmxhZ3MpICYgWEZTX0lMT0NLX0RFUF9NQVNLKSBcCisJCQkJ CT4+IFhGU19JTE9DS19TSElGVCkKIAogLyoKICAqIEZvciBtdWx0aXBsZSBncm91cHMgc3VwcG9y dDogaWYgU19JU0dJRCBiaXQgaXMgc2V0IGluIHRoZSBwYXJlbnQKZGlmZiAtLWdpdCBhL2ZzL3hm cy94ZnNfaW9jdGwuYyBiL2ZzL3hmcy94ZnNfaW9jdGwuYwppbmRleCA4YmMxYmJjZTc0NTEuLmFm Yzg1OWY0NGQwMSAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19pb2N0bC5jCisrKyBiL2ZzL3hmcy94 ZnNfaW9jdGwuYwpAQCAtNjQwLDcgKzY0MCw3IEBAIHhmc19pb2Nfc3BhY2UoCiAJaWYgKGVycm9y KQogCQlyZXR1cm4gZXJyb3I7CiAKLQl4ZnNfaWxvY2soaXAsIFhGU19JT0xPQ0tfRVhDTCk7CisJ eGZzX2lsb2NrKGlwLCBYRlNfSU9MT0NLX0VYQ0wgfCBYRlNfTU1BUExPQ0tfRVhDTCk7CiAKIAlz d2l0Y2ggKGJmLT5sX3doZW5jZSkgewogCWNhc2UgMDogLypTRUVLX1NFVCovCkBAIC03NTcsNyAr NzU3LDcgQEAgeGZzX2lvY19zcGFjZSgKIAllcnJvciA9IHhmc190cmFuc19jb21taXQodHAsIDAp OwogCiBvdXRfdW5sb2NrOgotCXhmc19pdW5sb2NrKGlwLCBYRlNfSU9MT0NLX0VYQ0wpOworCXhm c19pdW5sb2NrKGlwLCBYRlNfSU9MT0NLX0VYQ0wgfCBYRlNfTU1BUExPQ0tfRVhDTCk7CiAJbW50 X2Ryb3Bfd3JpdGVfZmlsZShmaWxwKTsKIAlyZXR1cm4gLWVycm9yOwogfQpkaWZmIC0tZ2l0IGEv ZnMveGZzL3hmc19pb3BzLmMgYi9mcy94ZnMveGZzX2lvcHMuYwppbmRleCA1MzdkOGRhZWFhOWUu LjEyNWRhODk2OWM3MiAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19pb3BzLmMKKysrIGIvZnMveGZz L3hmc19pb3BzLmMKQEAgLTc1OSw2ICs3NTksNyBAQCB4ZnNfc2V0YXR0cl9zaXplKAogCQlyZXR1 cm4gWEZTX0VSUk9SKGVycm9yKTsKIAogCUFTU0VSVCh4ZnNfaXNpbG9ja2VkKGlwLCBYRlNfSU9M T0NLX0VYQ0wpKTsKKwlBU1NFUlQoeGZzX2lzaWxvY2tlZChpcCwgWEZTX01NQVBMT0NLX0VYQ0wp KTsKIAlBU1NFUlQoU19JU1JFRyhpcC0+aV9kLmRpX21vZGUpKTsKIAlBU1NFUlQoKGlhdHRyLT5p YV92YWxpZCAmIChBVFRSX1VJRHxBVFRSX0dJRHxBVFRSX0FUSU1FfEFUVFJfQVRJTUVfU0VUfAog CQlBVFRSX01USU1FX1NFVHxBVFRSX0tJTExfUFJJVnxBVFRSX1RJTUVTX1NFVCkpID09IDApOwpA QCAtODIyLDE5ICs4MjMsMjEgQEAgeGZzX3NldGF0dHJfc2l6ZSgKIAlpbm9kZV9kaW9fd2FpdChp bm9kZSk7CiAKIAkvKgotCSAqIERvIGFsbCB0aGUgcGFnZSBjYWNoZSB0cnVuY2F0ZSB3b3JrIG91 dHNpZGUgdGhlIHRyYW5zYWN0aW9uIGNvbnRleHQKLQkgKiBhcyB0aGUgImxvY2siIG9yZGVyIGlz IHBhZ2UgbG9jay0+bG9nIHNwYWNlIHJlc2VydmF0aW9uLiAgaS5lLgotCSAqIGxvY2tpbmcgcGFn ZXMgaW5zaWRlIHRoZSB0cmFuc2FjdGlvbiBjYW4gQUJCQSBkZWFkbG9jayB3aXRoCi0JICogd3Jp dGViYWNrLiBXZSBoYXZlIHRvIGRvIHRoZSBWRlMgaW5vZGUgc2l6ZSB1cGRhdGUgYmVmb3JlIHdl IHRydW5jYXRlCi0JICogdGhlIHBhZ2VjYWNoZSwgaG93ZXZlciwgdG8gYXZvaWQgcmFjaW5nIHdp dGggcGFnZSBmYXVsdHMgYmV5b25kIHRoZQotCSAqIG5ldyBFT0YgdGhleSBhcmUgbm90IHNlcmlh bGlzZWQgYWdhaW5zdCB0cnVuY2F0ZSBvcGVyYXRpb25zIGV4Y2VwdCBieQotCSAqIHBhZ2UgbG9j a3MgYW5kIHNpemUgdXBkYXRlcy4KKwkgKiBXZSd2ZSBhbHJlYWR5IGxvY2tlZCBvdXQgbmV3IHBh Z2UgZmF1bHRzLCBzbyBub3cgd2UgY2FuIHNhZmVseSByZW1vdmUKKwkgKiBwYWdlcyBmcm9tIHRo ZSBwYWdlIGNhY2hlIGtub3dpbmcgdGhleSB3b24ndCBnZXQgcmVmYXVsdGVkIHVudGlsIHdlCisJ ICogZHJvcCB0aGUgWEZTX01NQVBfRVhDTCBsb2NrIGFmdGVyIHRoZSBleHRlbnQgbWFuaXB1bGF0 aW9ucyBhcmUKKwkgKiBjb21wbGV0ZS4gVGhlIHRydW5jYXRlX3NldHNpemUoKSBjYWxsIGFsc28g Y2xlYW5zIHBhcnRpYWwgRU9GIHBhZ2UKKwkgKiBQVEVzIG9uIGV4dGVuZGluZyB0cnVuY2F0ZXMg YW5kIGhlbmNlIGVuc3VyZXMgc3ViLXBhZ2UgYmxvY2sgc2l6ZQorCSAqIGZpbGVzeXN0ZW1zIGFy ZSBjb3JyZWN0bHkgaGFuZGxlZCwgdG9vLgogCSAqCi0JICogSGVuY2Ugd2UgYXJlIGluIGEgc2l0 dWF0aW9uIHdoZXJlIGEgdHJ1bmNhdGUgY2FuIGZhaWwgd2l0aCBFTk9NRU0KLQkgKiBmcm9tIHhm c190cmFuc19yZXNlcnZlKCksIGJ1dCBoYXZpbmcgYWxyZWFkeSB0cnVuY2F0ZWQgdGhlIGluLW1l bW9yeQotCSAqIHZlcnNpb24gb2YgdGhlIGZpbGUgKGkuZS4gbWFkZSB1c2VyIHZpc2libGUgY2hh bmdlcykuIFRoZXJlJ3Mgbm90Ci0JICogbXVjaCB3ZSBjYW4gZG8gYWJvdXQgdGhpcywgZXhjZXB0 IHRvIGhvcGUgdGhhdCB0aGUgY2FsbGVyIHNlZXMgRU5PTUVNCi0JICogYW5kIHJldHJpZXMgdGhl IHRydW5jYXRlIG9wZXJhdGlvbi4KKwkgKiBXZSBoYXZlIHRvIGRvIGFsbCB0aGUgcGFnZSBjYWNo ZSB0cnVuY2F0ZSB3b3JrIG91dHNpZGUgdGhlCisJICogdHJhbnNhY3Rpb24gY29udGV4dCBhcyB0 aGUgImxvY2siIG9yZGVyIGlzIHBhZ2UgbG9jay0+bG9nIHNwYWNlCisJICogcmVzZXJ2YXRpb24g YXMgZGVmaW5lZCBieSBleHRlbnQgYWxsb2NhdGlvbiBpbiB0aGUgd3JpdGViYWNrIHBhdGguCisJ ICogSGVuY2UgYSB0cnVuY2F0ZSBjYW4gZmFpbCB3aXRoIEVOT01FTSBmcm9tIHhmc190cmFuc19y ZXNlcnZlKCksIGJ1dAorCSAqIGhhdmluZyBhbHJlYWR5IHRydW5jYXRlZCB0aGUgaW4tbWVtb3J5 IHZlcnNpb24gb2YgdGhlIGZpbGUgKGkuZS4gbWFkZQorCSAqIHVzZXIgdmlzaWJsZSBjaGFuZ2Vz KS4gVGhlcmUncyBub3QgbXVjaCB3ZSBjYW4gZG8gYWJvdXQgdGhpcywgZXhjZXB0CisJICogdG8g aG9wZSB0aGF0IHRoZSBjYWxsZXIgc2VlcyBFTk9NRU0gYW5kIHJldHJpZXMgdGhlIHRydW5jYXRl CisJICogb3BlcmF0aW9uLgogCSAqLwogCWVycm9yID0gLWJsb2NrX3RydW5jYXRlX3BhZ2UoaW5v ZGUtPmlfbWFwcGluZywgbmV3c2l6ZSwgeGZzX2dldF9ibG9ja3MpOwogCWlmIChlcnJvcikKQEAg LTkzNSw5ICs5MzgsOSBAQCB4ZnNfdm5fc2V0YXR0cigKIAlpbnQJCQllcnJvcjsKIAogCWlmIChp YXR0ci0+aWFfdmFsaWQgJiBBVFRSX1NJWkUpIHsKLQkJeGZzX2lsb2NrKGlwLCBYRlNfSU9MT0NL X0VYQ0wpOworCQl4ZnNfaWxvY2soaXAsIFhGU19JT0xPQ0tfRVhDTCB8IFhGU19NTUFQTE9DS19F WENMKTsKIAkJZXJyb3IgPSB4ZnNfc2V0YXR0cl9zaXplKGlwLCBpYXR0cik7Ci0JCXhmc19pdW5s b2NrKGlwLCBYRlNfSU9MT0NLX0VYQ0wpOworCQl4ZnNfaXVubG9jayhpcCwgWEZTX0lPTE9DS19F WENMIHwgWEZTX01NQVBMT0NLX0VYQ0wpOwogCX0gZWxzZSB7CiAJCWVycm9yID0geGZzX3NldGF0 dHJfbm9uc2l6ZShpcCwgaWF0dHIsIDApOwogCX0KZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfc3Vw ZXIuYyBiL2ZzL3hmcy94ZnNfc3VwZXIuYwppbmRleCAwZWU2MDFiNjdkOWUuLmE0ZmNkMzIxMzRm YSAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19zdXBlci5jCisrKyBiL2ZzL3hmcy94ZnNfc3VwZXIu YwpAQCAtOTgyLDYgKzk4Miw4IEBAIHhmc19mc19pbm9kZV9pbml0X29uY2UoCiAJYXRvbWljX3Nl dCgmaXAtPmlfcGluY291bnQsIDApOwogCXNwaW5fbG9ja19pbml0KCZpcC0+aV9mbGFnc19sb2Nr KTsKIAorCW1ybG9ja19pbml0KCZpcC0+aV9tbWFwbG9jaywgTVJMT0NLX0FMTE9XX0VRVUFMX1BS SXxNUkxPQ0tfQkFSUklFUiwKKwkJICAgICAieGZzaW5vIiwgaXAtPmlfaW5vKTsKIAltcmxvY2tf aW5pdCgmaXAtPmlfbG9jaywgTVJMT0NLX0FMTE9XX0VRVUFMX1BSSXxNUkxPQ0tfQkFSUklFUiwK IAkJICAgICAieGZzaW5vIiwgaXAtPmlfaW5vKTsKIH0KZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNf dHJhY2UuaCBiL2ZzL3hmcy94ZnNfdHJhY2UuaAppbmRleCAxNTJmODI3ODI2MzAuLjI0Nzk5YmI0 MzczOSAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc190cmFjZS5oCisrKyBiL2ZzL3hmcy94ZnNfdHJh Y2UuaApAQCAtNjg0LDYgKzY4NCw5IEBAIERFRklORV9JTk9ERV9FVkVOVCh4ZnNfaW5vZGVfc2V0 X2VvZmJsb2Nrc190YWcpOwogREVGSU5FX0lOT0RFX0VWRU5UKHhmc19pbm9kZV9jbGVhcl9lb2Zi bG9ja3NfdGFnKTsKIERFRklORV9JTk9ERV9FVkVOVCh4ZnNfaW5vZGVfZnJlZV9lb2ZibG9ja3Nf aW52YWxpZCk7CiAKK0RFRklORV9JTk9ERV9FVkVOVCh4ZnNfZmlsZW1hcF9mYXVsdCk7CitERUZJ TkVfSU5PREVfRVZFTlQoeGZzX2ZpbGVtYXBfcGFnZV9ta3dyaXRlKTsKKwogREVDTEFSRV9FVkVO VF9DTEFTUyh4ZnNfaXJlZl9jbGFzcywKIAlUUF9QUk9UTyhzdHJ1Y3QgeGZzX2lub2RlICppcCwg dW5zaWduZWQgbG9uZyBjYWxsZXJfaXApLAogCVRQX0FSR1MoaXAsIGNhbGxlcl9pcCksCmRpZmYg LS1naXQgYS9pbmNsdWRlL2xpbnV4L2JhbGxvb25fY29tcGFjdGlvbi5oIGIvaW5jbHVkZS9saW51 eC9iYWxsb29uX2NvbXBhY3Rpb24uaAppbmRleCAwODk3NDNhZGU3MzQuLjM4YWEwN2Q1YjgxYyAx MDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9iYWxsb29uX2NvbXBhY3Rpb24uaAorKysgYi9pbmNs dWRlL2xpbnV4L2JhbGxvb25fY29tcGFjdGlvbi5oCkBAIC0yNywxMCArMjcsMTMgQEAKICAqICAg ICAgY291bnRlciByYWlzZWQgb25seSB3aGlsZSBpdCBpcyB1bmRlciBvdXIgc3BlY2lhbCBoYW5k bGluZzsKICAqCiAgKiBpaWkuIGFmdGVyIHRoZSBsb2NrbGVzcyBzY2FuIHN0ZXAgaGF2ZSBzZWxl Y3RlZCBhIHBvdGVudGlhbCBiYWxsb29uIHBhZ2UgZm9yCi0gKiAgICAgIGlzb2xhdGlvbiwgcmUt dGVzdCB0aGUgcGFnZS0+bWFwcGluZyBmbGFncyBhbmQgdGhlIHBhZ2UgcmVmIGNvdW50ZXIKKyAq ICAgICAgaXNvbGF0aW9uLCByZS10ZXN0IHRoZSBQYWdlQmFsbG9vbiBtYXJrIGFuZCB0aGUgUGFn ZVByaXZhdGUgZmxhZwogICogICAgICB1bmRlciB0aGUgcHJvcGVyIHBhZ2UgbG9jaywgdG8gZW5z dXJlIGlzb2xhdGluZyBhIHZhbGlkIGJhbGxvb24gcGFnZQogICogICAgICAobm90IHlldCBpc29s YXRlZCwgbm9yIHVuZGVyIHJlbGVhc2UgcHJvY2VkdXJlKQogICoKKyAqICBpdi4gaXNvbGF0aW9u IG9yIGRlcXVldWVpbmcgcHJvY2VkdXJlIG11c3QgY2xlYXIgUGFnZVByaXZhdGUgZmxhZyB1bmRl cgorICogICAgICBwYWdlIGxvY2sgdG9nZXRoZXIgd2l0aCByZW1vdmluZyBwYWdlIGZyb20gYmFs bG9vbiBkZXZpY2UgcGFnZSBsaXN0LgorICoKICAqIFRoZSBmdW5jdGlvbnMgcHJvdmlkZWQgYnkg dGhpcyBpbnRlcmZhY2UgYXJlIHBsYWNlZCB0byBoZWxwIG9uIGNvcGluZyB3aXRoCiAgKiB0aGUg YWZvcmVtZW50aW9uZWQgYmFsbG9vbiBwYWdlIGNvcm5lciBjYXNlLCBhcyB3ZWxsIGFzIHRvIGVu c3VyZSB0aGUgc2ltcGxlCiAgKiBzZXQgb2YgZXhwb3NlZCBydWxlcyBhcmUgc2F0aXNmaWVkIHdo aWxlIHdlIGFyZSBkZWFsaW5nIHdpdGggYmFsbG9vbiBwYWdlcwpAQCAtNzEsMjggKzc0LDYgQEAg c3RhdGljIGlubGluZSB2b2lkIGJhbGxvb25fZGV2aW5mb19mcmVlKHN0cnVjdCBiYWxsb29uX2Rl dl9pbmZvICpiX2Rldl9pbmZvKQogCWtmcmVlKGJfZGV2X2luZm8pOwogfQogCi0vKgotICogYmFs bG9vbl9wYWdlX2ZyZWUgLSByZWxlYXNlIGEgYmFsbG9vbiBwYWdlIGJhY2sgdG8gdGhlIHBhZ2Ug ZnJlZSBsaXN0cwotICogQHBhZ2U6IGJhbGxvb25lZCBwYWdlIHRvIGJlIHNldCBmcmVlCi0gKgot ICogVGhpcyBmdW5jdGlvbiBtdXN0IGJlIHVzZWQgdG8gcHJvcGVybHkgc2V0IGZyZWUgYW4gaXNv bGF0ZWQvZGVxdWV1ZWQgYmFsbG9vbgotICogcGFnZSBhdCB0aGUgZW5kIG9mIGEgc3VjZXNzZnVs IHBhZ2UgbWlncmF0aW9uLCBvciBhdCB0aGUgYmFsbG9vbiBkcml2ZXIncwotICogcGFnZSByZWxl YXNlIHByb2NlZHVyZS4KLSAqLwotc3RhdGljIGlubGluZSB2b2lkIGJhbGxvb25fcGFnZV9mcmVl KHN0cnVjdCBwYWdlICpwYWdlKQotewotCS8qCi0JICogQmFsbG9vbiBwYWdlcyBhbHdheXMgZ2V0 IGFuIGV4dHJhIHJlZmNvdW50IGJlZm9yZSBiZWluZyBpc29sYXRlZAotCSAqIGFuZCBiZWZvcmUg YmVpbmcgZGVxdWV1ZWQgdG8gaGVscCBvbiBzb3J0aW5nIG91dCBmb3J0dWl0ZSBjb2xpc2lvbnMK LQkgKiBiZXR3ZWVuIGEgdGhyZWFkIGF0dGVtcHRpbmcgdG8gaXNvbGF0ZSBhbmQgYW5vdGhlciB0 aHJlYWQgYXR0ZW1wdGluZwotCSAqIHRvIHJlbGVhc2UgdGhlIHZlcnkgc2FtZSBiYWxsb29uIHBh Z2UuCi0JICoKLQkgKiBCZWZvcmUgd2UgaGFuZGxlIHRoZSBwYWdlIGJhY2sgdG8gQnVkZHksIGxl dHMgZHJvcCBpdHMgZXh0cmEgcmVmY250LgotCSAqLwotCXB1dF9wYWdlKHBhZ2UpOwotCV9fZnJl ZV9wYWdlKHBhZ2UpOwotfQotCiAjaWZkZWYgQ09ORklHX0JBTExPT05fQ09NUEFDVElPTgogZXh0 ZXJuIGJvb2wgYmFsbG9vbl9wYWdlX2lzb2xhdGUoc3RydWN0IHBhZ2UgKnBhZ2UpOwogZXh0ZXJu IHZvaWQgYmFsbG9vbl9wYWdlX3B1dGJhY2soc3RydWN0IHBhZ2UgKnBhZ2UpOwpAQCAtMTA4LDc0 ICs4OSwzMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYmFsbG9vbl9tYXBwaW5nX2ZyZWUoc3RydWN0 IGFkZHJlc3Nfc3BhY2UgKmJhbGxvb25fbWFwcGluZykKIH0KIAogLyoKLSAqIHBhZ2VfZmxhZ3Nf Y2xlYXJlZCAtIGhlbHBlciB0byBwZXJmb3JtIGJhbGxvb24gQHBhZ2UgLT5mbGFncyB0ZXN0cy4K LSAqCi0gKiBBcyBiYWxsb29uIHBhZ2VzIGFyZSBvYnRhaW5lZCBmcm9tIGJ1ZGR5IGFuZCB3ZSBk byBub3QgcGxheSB3aXRoIHBhZ2UtPmZsYWdzCi0gKiBhdCBkcml2ZXIgbGV2ZWwgKGV4Y2VwdGlv biBtYWRlIHdoZW4gd2UgZ2V0IHRoZSBwYWdlIGxvY2sgZm9yIGNvbXBhY3Rpb24pLAotICogd2Ug Y2FuIHNhZmVseSBpZGVudGlmeSBhIGJhbGxvb25lZCBwYWdlIGJ5IGNoZWNraW5nIGlmIHRoZQot ICogUEFHRV9GTEFHU19DSEVDS19BVF9QUkVQIHBhZ2UtPmZsYWdzIGFyZSBhbGwgY2xlYXJlZC4g IFRoaXMgYXBwcm9hY2ggYWxzbwotICogaGVscHMgdXMgc2tpcCBiYWxsb29uZWQgcGFnZXMgdGhh dCBhcmUgbG9ja2VkIGZvciBjb21wYWN0aW9uIG9yIHJlbGVhc2UsIHRodXMKLSAqIG1pdGlnYXRp bmcgdGhlaXIgcmFjeSBjaGVjayBhdCBiYWxsb29uX3BhZ2VfbW92YWJsZSgpCi0gKi8KLXN0YXRp YyBpbmxpbmUgYm9vbCBwYWdlX2ZsYWdzX2NsZWFyZWQoc3RydWN0IHBhZ2UgKnBhZ2UpCi17Ci0J cmV0dXJuICEocGFnZS0+ZmxhZ3MgJiBQQUdFX0ZMQUdTX0NIRUNLX0FUX1BSRVApOwotfQotCi0v KgotICogX19pc19tb3ZhYmxlX2JhbGxvb25fcGFnZSAtIGhlbHBlciB0byBwZXJmb3JtIEBwYWdl IG1hcHBpbmctPmZsYWdzIHRlc3RzCisgKiBfX2lzX21vdmFibGVfYmFsbG9vbl9wYWdlIC0gaGVs cGVyIHRvIHBlcmZvcm0gQHBhZ2UgUGFnZUJhbGxvb24gdGVzdHMKICAqLwogc3RhdGljIGlubGlu ZSBib29sIF9faXNfbW92YWJsZV9iYWxsb29uX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UpCiB7Ci0J c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBwYWdlLT5tYXBwaW5nOwotCXJldHVybiBt YXBwaW5nX2JhbGxvb24obWFwcGluZyk7CisJcmV0dXJuIFBhZ2VCYWxsb29uKHBhZ2UpOwogfQog CiAvKgotICogYmFsbG9vbl9wYWdlX21vdmFibGUgLSB0ZXN0IHBhZ2UtPm1hcHBpbmctPmZsYWdz IHRvIGlkZW50aWZ5IGJhbGxvb24gcGFnZXMKLSAqCQkJICB0aGF0IGNhbiBiZSBtb3ZlZCBieSBj b21wYWN0aW9uL21pZ3JhdGlvbi4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYXQgY29y ZSBjb21wYWN0aW9uJ3MgcGFnZSBpc29sYXRpb24gc2NoZW1lLCB0aGVyZWZvcmUKLSAqIG1vc3Qg cGFnZXMgZXhwb3NlZCB0byBpdCBhcmUgbm90IGVubGlzdGVkIGFzIGJhbGxvb24gcGFnZXMgYW5k IHNvLCB0byBhdm9pZAotICogdW5kZXNpcmVkIHNpZGUgZWZmZWN0cyBsaWtlIHJhY2luZyBhZ2Fp bnN0IF9fZnJlZV9wYWdlcygpLCB3ZSBjYW5ub3QgYWZmb3JkCi0gKiBob2xkaW5nIHRoZSBwYWdl IGxvY2tlZCB3aGlsZSB0ZXN0aW5nIHBhZ2UtPm1hcHBpbmctPmZsYWdzIGhlcmUuCisgKiBiYWxs b29uX3BhZ2VfbW92YWJsZSAtIHRlc3QgUGFnZUJhbGxvb24gdG8gaWRlbnRpZnkgYmFsbG9vbiBw YWdlcworICoJCQkgIGFuZCBQYWdlUHJpdmF0ZSB0byBjaGVjayB0aGF0IHRoZSBwYWdlIGlzIG5v dAorICoJCQkgIGlzb2xhdGVkIGFuZCBjYW4gYmUgbW92ZWQgYnkgY29tcGFjdGlvbi9taWdyYXRp b24uCiAgKgogICogQXMgd2UgbWlnaHQgcmV0dXJuIGZhbHNlIHBvc2l0aXZlcyBpbiB0aGUgY2Fz ZSBvZiBhIGJhbGxvb24gcGFnZSBiZWluZyBqdXN0Ci0gKiByZWxlYXNlZCB1bmRlciB1cywgdGhl IHBhZ2UtPm1hcHBpbmctPmZsYWdzIG5lZWQgdG8gYmUgcmUtdGVzdGVkIGxhdGVyLAotICogdW5k ZXIgdGhlIHByb3BlciBwYWdlIGxvY2ssIGF0IHRoZSBmdW5jdGlvbnMgdGhhdCB3aWxsIGJlIGNv cGluZyB3aXRoIHRoZQotICogYmFsbG9vbiBwYWdlIGNhc2UuCisgKiByZWxlYXNlZCB1bmRlciB1 cywgdGhpcyBuZWVkIHRvIGJlIHJlLXRlc3RlZCBsYXRlciwgdW5kZXIgdGhlIHBhZ2UgbG9jay4K ICAqLwogc3RhdGljIGlubGluZSBib29sIGJhbGxvb25fcGFnZV9tb3ZhYmxlKHN0cnVjdCBwYWdl ICpwYWdlKQogewotCS8qCi0JICogQmVmb3JlIGRlcmVmZXJlbmNpbmcgYW5kIHRlc3RpbmcgbWFw cGluZy0+ZmxhZ3MsIGxldCdzIG1ha2Ugc3VyZQotCSAqIHRoaXMgaXMgbm90IGEgcGFnZSB0aGF0 IHVzZXMgLT5tYXBwaW5nIGluIGEgZGlmZmVyZW50IHdheQotCSAqLwotCWlmIChwYWdlX2ZsYWdz X2NsZWFyZWQocGFnZSkgJiYgIXBhZ2VfbWFwcGVkKHBhZ2UpICYmCi0JICAgIHBhZ2VfY291bnQo cGFnZSkgPT0gMSkKLQkJcmV0dXJuIF9faXNfbW92YWJsZV9iYWxsb29uX3BhZ2UocGFnZSk7Ci0K LQlyZXR1cm4gZmFsc2U7CisJcmV0dXJuIFBhZ2VCYWxsb29uKHBhZ2UpICYmIFBhZ2VQcml2YXRl KHBhZ2UpOwogfQogCiAvKgogICogaXNvbGF0ZWRfYmFsbG9vbl9wYWdlIC0gaWRlbnRpZnkgYW4g aXNvbGF0ZWQgYmFsbG9vbiBwYWdlIG9uIHByaXZhdGUKICAqCQkJICAgY29tcGFjdGlvbi9taWdy YXRpb24gcGFnZSBsaXN0cy4KLSAqCi0gKiBBZnRlciBhIGNvbXBhY3Rpb24gdGhyZWFkIGlzb2xh dGVzIGEgYmFsbG9vbiBwYWdlIGZvciBtaWdyYXRpb24sIGl0IHJhaXNlcwotICogdGhlIHBhZ2Ug cmVmY291bnQgdG8gcHJldmVudCBjb25jdXJyZW50IGNvbXBhY3Rpb24gdGhyZWFkcyBmcm9tIHJl LWlzb2xhdGluZwotICogdGhlIHNhbWUgcGFnZS4gRm9yIHRoYXQgcmVhc29uIHB1dGJhY2tfbW92 YWJsZV9wYWdlcygpLCBvciBvdGhlciByb3V0aW5lcwotICogdGhhdCBuZWVkIHRvIGlkZW50aWZ5 IGlzb2xhdGVkIGJhbGxvb24gcGFnZXMgb24gcHJpdmF0ZSBwYWdlbGlzdHMsIGNhbm5vdAotICog cmVseSBvbiBiYWxsb29uX3BhZ2VfbW92YWJsZSgpIHRvIGFjY29tcGxpc2ggdGhlIHRhc2suCiAg Ki8KIHN0YXRpYyBpbmxpbmUgYm9vbCBpc29sYXRlZF9iYWxsb29uX3BhZ2Uoc3RydWN0IHBhZ2Ug KnBhZ2UpCiB7Ci0JLyogQWxyZWFkeSBpc29sYXRlZCBiYWxsb29uIHBhZ2VzLCBieSBkZWZhdWx0 LCBoYXZlIGEgcmFpc2VkIHJlZmNvdW50ICovCi0JaWYgKHBhZ2VfZmxhZ3NfY2xlYXJlZChwYWdl KSAmJiAhcGFnZV9tYXBwZWQocGFnZSkgJiYKLQkgICAgcGFnZV9jb3VudChwYWdlKSA+PSAyKQot CQlyZXR1cm4gX19pc19tb3ZhYmxlX2JhbGxvb25fcGFnZShwYWdlKTsKLQotCXJldHVybiBmYWxz ZTsKKwlyZXR1cm4gUGFnZUJhbGxvb24ocGFnZSk7CiB9CiAKIC8qCkBAIC0xOTIsNiArMTMyLDgg QEAgc3RhdGljIGlubGluZSB2b2lkIGJhbGxvb25fcGFnZV9pbnNlcnQoc3RydWN0IHBhZ2UgKnBh Z2UsCiAJCQkJICAgICAgIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogCQkJCSAgICAg ICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQogeworCV9fU2V0UGFnZUJhbGxvb24ocGFnZSk7CisJ U2V0UGFnZVByaXZhdGUocGFnZSk7CiAJcGFnZS0+bWFwcGluZyA9IG1hcHBpbmc7CiAJbGlzdF9h ZGQoJnBhZ2UtPmxydSwgaGVhZCk7CiB9CkBAIC0yMDYsOCArMTQ4LDEyIEBAIHN0YXRpYyBpbmxp bmUgdm9pZCBiYWxsb29uX3BhZ2VfaW5zZXJ0KHN0cnVjdCBwYWdlICpwYWdlLAogICovCiBzdGF0 aWMgaW5saW5lIHZvaWQgYmFsbG9vbl9wYWdlX2RlbGV0ZShzdHJ1Y3QgcGFnZSAqcGFnZSkKIHsK KwlfX0NsZWFyUGFnZUJhbGxvb24ocGFnZSk7CiAJcGFnZS0+bWFwcGluZyA9IE5VTEw7Ci0JbGlz dF9kZWwoJnBhZ2UtPmxydSk7CisJaWYgKFBhZ2VQcml2YXRlKHBhZ2UpKSB7CisJCUNsZWFyUGFn ZVByaXZhdGUocGFnZSk7CisJCWxpc3RfZGVsKCZwYWdlLT5scnUpOworCX0KIH0KIAogLyoKQEAg LTI1OCw2ICsyMDQsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIGJhbGxvb25fcGFnZV9kZWxldGUo c3RydWN0IHBhZ2UgKnBhZ2UpCiAJbGlzdF9kZWwoJnBhZ2UtPmxydSk7CiB9CiAKK3N0YXRpYyBp bmxpbmUgYm9vbCBfX2lzX21vdmFibGVfYmFsbG9vbl9wYWdlKHN0cnVjdCBwYWdlICpwYWdlKQor eworCXJldHVybiBmYWxzZTsKK30KKwogc3RhdGljIGlubGluZSBib29sIGJhbGxvb25fcGFnZV9t b3ZhYmxlKHN0cnVjdCBwYWdlICpwYWdlKQogewogCXJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh L2luY2x1ZGUvbGludXgvY2VwaC9hdXRoLmggYi9pbmNsdWRlL2xpbnV4L2NlcGgvYXV0aC5oCmlu ZGV4IDVmMzM4Njg0NDEzNC4uZDc4YzE4MTczZTkzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4 L2NlcGgvYXV0aC5oCisrKyBiL2luY2x1ZGUvbGludXgvY2VwaC9hdXRoLmgKQEAgLTEyLDcgKzEy LDEwIEBACiAgKi8KIAogc3RydWN0IGNlcGhfYXV0aF9jbGllbnQ7Ci1zdHJ1Y3QgY2VwaF9hdXRo b3JpemVyOworCitzdHJ1Y3QgY2VwaF9hdXRob3JpemVyIHsKKwl2b2lkICgqZGVzdHJveSkoc3Ry dWN0IGNlcGhfYXV0aG9yaXplciAqKTsKK307CiAKIHN0cnVjdCBjZXBoX2F1dGhfaGFuZHNoYWtl IHsKIAlzdHJ1Y3QgY2VwaF9hdXRob3JpemVyICphdXRob3JpemVyOwpAQCAtNTcsOCArNjAsNiBA QCBzdHJ1Y3QgY2VwaF9hdXRoX2NsaWVudF9vcHMgewogCQkJCSBzdHJ1Y3QgY2VwaF9hdXRoX2hh bmRzaGFrZSAqYXV0aCk7CiAJaW50ICgqdmVyaWZ5X2F1dGhvcml6ZXJfcmVwbHkpKHN0cnVjdCBj ZXBoX2F1dGhfY2xpZW50ICphYywKIAkJCQkgICAgICAgc3RydWN0IGNlcGhfYXV0aG9yaXplciAq YSwgc2l6ZV90IGxlbik7Ci0Jdm9pZCAoKmRlc3Ryb3lfYXV0aG9yaXplcikoc3RydWN0IGNlcGhf YXV0aF9jbGllbnQgKmFjLAotCQkJCSAgIHN0cnVjdCBjZXBoX2F1dGhvcml6ZXIgKmEpOwogCXZv aWQgKCppbnZhbGlkYXRlX2F1dGhvcml6ZXIpKHN0cnVjdCBjZXBoX2F1dGhfY2xpZW50ICphYywK IAkJCQkgICAgICBpbnQgcGVlcl90eXBlKTsKIApAQCAtMTAyLDggKzEwMyw3IEBAIGV4dGVybiBp bnQgY2VwaF9hdXRoX2lzX2F1dGhlbnRpY2F0ZWQoc3RydWN0IGNlcGhfYXV0aF9jbGllbnQgKmFj KTsKIGV4dGVybiBpbnQgY2VwaF9hdXRoX2NyZWF0ZV9hdXRob3JpemVyKHN0cnVjdCBjZXBoX2F1 dGhfY2xpZW50ICphYywKIAkJCQkgICAgICAgaW50IHBlZXJfdHlwZSwKIAkJCQkgICAgICAgc3Ry dWN0IGNlcGhfYXV0aF9oYW5kc2hha2UgKmF1dGgpOwotZXh0ZXJuIHZvaWQgY2VwaF9hdXRoX2Rl c3Ryb3lfYXV0aG9yaXplcihzdHJ1Y3QgY2VwaF9hdXRoX2NsaWVudCAqYWMsCi0JCQkJCSBzdHJ1 Y3QgY2VwaF9hdXRob3JpemVyICphKTsKK3ZvaWQgY2VwaF9hdXRoX2Rlc3Ryb3lfYXV0aG9yaXpl cihzdHJ1Y3QgY2VwaF9hdXRob3JpemVyICphKTsKIGV4dGVybiBpbnQgY2VwaF9hdXRoX3VwZGF0 ZV9hdXRob3JpemVyKHN0cnVjdCBjZXBoX2F1dGhfY2xpZW50ICphYywKIAkJCQkgICAgICAgaW50 IHBlZXJfdHlwZSwKIAkJCQkgICAgICAgc3RydWN0IGNlcGhfYXV0aF9oYW5kc2hha2UgKmEpOwpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jZXBoL29zZF9jbGllbnQuaCBiL2luY2x1ZGUvbGlu dXgvY2VwaC9vc2RfY2xpZW50LmgKaW5kZXggOTRlYzY5NjcyMTY0Li5iMmEyNGUwZjVjNjAgMTAw NjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY2VwaC9vc2RfY2xpZW50LmgKKysrIGIvaW5jbHVkZS9s aW51eC9jZXBoL29zZF9jbGllbnQuaApAQCAtMTYsNyArMTYsNiBAQCBzdHJ1Y3QgY2VwaF9tc2c7 CiBzdHJ1Y3QgY2VwaF9zbmFwX2NvbnRleHQ7CiBzdHJ1Y3QgY2VwaF9vc2RfcmVxdWVzdDsKIHN0 cnVjdCBjZXBoX29zZF9jbGllbnQ7Ci1zdHJ1Y3QgY2VwaF9hdXRob3JpemVyOwogCiAvKgogICog Y29tcGxldGlvbiBjYWxsYmFjayBmb3IgYXN5bmMgd3JpdGVwYWdlcwpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9saW51eC9jb21waWxlci1nY2MuaCBiL2luY2x1ZGUvbGludXgvY29tcGlsZXItZ2NjLmgK aW5kZXggMDJhZTk5ZThlNmQzLi5iYjJjZGNkOTI5YzYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGlu dXgvY29tcGlsZXItZ2NjLmgKKysrIGIvaW5jbHVkZS9saW51eC9jb21waWxlci1nY2MuaApAQCAt MTAwLDEwICsxMDAsMTIyIEBACiAjZGVmaW5lIF9fbWF5YmVfdW51c2VkCQkJX19hdHRyaWJ1dGVf XygodW51c2VkKSkKICNkZWZpbmUgX19hbHdheXNfdW51c2VkCQkJX19hdHRyaWJ1dGVfXygodW51 c2VkKSkKIAotI2RlZmluZSBfX2djY19oZWFkZXIoeCkgI3gKLSNkZWZpbmUgX2djY19oZWFkZXIo eCkgX19nY2NfaGVhZGVyKGxpbnV4L2NvbXBpbGVyLWdjYyMjeC5oKQotI2RlZmluZSBnY2NfaGVh ZGVyKHgpIF9nY2NfaGVhZGVyKHgpCi0jaW5jbHVkZSBnY2NfaGVhZGVyKF9fR05VQ19fKQorLyog Z2NjIHZlcnNpb24gc3BlY2lmaWMgY2hlY2tzICovCisKKyNpZiBHQ0NfVkVSU0lPTiA8IDMwMjAw CisjIGVycm9yIFNvcnJ5LCB5b3VyIGNvbXBpbGVyIGlzIHRvbyBvbGQgLSBwbGVhc2UgdXBncmFk ZSBpdC4KKyNlbmRpZgorCisjaWYgR0NDX1ZFUlNJT04gPCAzMDMwMAorIyBkZWZpbmUgX191c2Vk CQkJX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpCisjZWxzZQorIyBkZWZpbmUgX191c2VkCQkJ X19hdHRyaWJ1dGVfXygoX191c2VkX18pKQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfR0NPVl9L RVJORUwKKyMgaWYgR0NDX1ZFUlNJT04gPCAzMDQwMAorIyAgIGVycm9yICJHQ09WIHByb2ZpbGlu ZyBzdXBwb3J0IGZvciBnY2MgdmVyc2lvbnMgYmVsb3cgMy40IG5vdCBpbmNsdWRlZCIKKyMgZW5k aWYgLyogX19HTlVDX01JTk9SX18gKi8KKyNlbmRpZiAvKiBDT05GSUdfR0NPVl9LRVJORUwgKi8K KworI2lmIEdDQ19WRVJTSU9OID49IDMwNDAwCisjZGVmaW5lIF9fbXVzdF9jaGVjawkJX19hdHRy aWJ1dGVfXygod2Fybl91bnVzZWRfcmVzdWx0KSkKKyNlbmRpZgorCisjaWYgR0NDX1ZFUlNJT04g Pj0gNDAwMDAKKworLyogR0NDIDQuMS5bMDFdIG1pc2NvbXBpbGVzIF9fd2VhayAqLworI2lmZGVm IF9fS0VSTkVMX18KKyMgaWYgR0NDX1ZFUlNJT04gPj0gNDAxMDAgJiYgIEdDQ19WRVJTSU9OIDw9 IDQwMTAxCisjICBlcnJvciBZb3VyIHZlcnNpb24gb2YgZ2NjIG1pc2NvbXBpbGVzIHRoZSBfX3dl YWsgZGlyZWN0aXZlCisjIGVuZGlmCisjZW5kaWYKKworI2RlZmluZSBfX3VzZWQJCQlfX2F0dHJp YnV0ZV9fKChfX3VzZWRfXykpCisjZGVmaW5lIF9fY29tcGlsZXJfb2Zmc2V0b2YoYSwgYikJCQkJ CVwKKwlfX2J1aWx0aW5fb2Zmc2V0b2YoYSwgYikKKworI2lmIEdDQ19WRVJTSU9OID49IDQwMTAw ICYmIEdDQ19WRVJTSU9OIDwgNDA2MDAKKyMgZGVmaW5lIF9fY29tcGlsZXRpbWVfb2JqZWN0X3Np emUob2JqKSBfX2J1aWx0aW5fb2JqZWN0X3NpemUob2JqLCAwKQorI2VuZGlmCisKKyNpZiBHQ0Nf VkVSU0lPTiA+PSA0MDMwMAorLyogTWFyayBmdW5jdGlvbnMgYXMgY29sZC4gZ2NjIHdpbGwgYXNz dW1lIGFueSBwYXRoIGxlYWRpbmcgdG8gYSBjYWxsCisgKiB0byB0aGVtIHdpbGwgYmUgdW5saWtl bHkuICBUaGlzIG1lYW5zIGEgbG90IG9mIG1hbnVhbCB1bmxpa2VseSgpcworICogYXJlIHVubmVj ZXNzYXJ5IG5vdyBmb3IgYW55IHBhdGhzIGxlYWRpbmcgdG8gdGhlIHVzdWFsIHN1c3BlY3RzCisg KiBsaWtlIEJVRygpLCBwcmludGsoKSwgcGFuaWMoKSBldGMuIFtidXQgbGV0J3Mga2VlcCB0aGVt IGZvciBub3cgZm9yCisgKiBvbGRlciBjb21waWxlcnNdCisgKgorICogRWFybHkgc25hcHNob3Rz IG9mIGdjYyA0LjMgZG9uJ3Qgc3VwcG9ydCB0aGlzIGFuZCB3ZSBjYW4ndCBkZXRlY3QgdGhpcwor ICogaW4gdGhlIHByZXByb2Nlc3NvciwgYnV0IHdlIGNhbiBsaXZlIHdpdGggdGhpcyBiZWNhdXNl IHRoZXkncmUgdW5yZWxlYXNlZC4KKyAqIE1ha2V0aW1lIHByb2Jpbmcgd291bGQgYmUgb3Zlcmtp bGwgaGVyZS4KKyAqCisgKiBnY2MgYWxzbyBoYXMgYSBfX2F0dHJpYnV0ZV9fKChfX2hvdF9fKSkg dG8gbW92ZSBob3QgZnVuY3Rpb25zIGludG8KKyAqIGEgc3BlY2lhbCBzZWN0aW9uLCBidXQgSSBk b24ndCBzZWUgYW55IHNlbnNlIGluIHRoaXMgcmlnaHQgbm93IGluCisgKiB0aGUga2VybmVsIGNv bnRleHQKKyAqLworI2RlZmluZSBfX2NvbGQJCQlfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpCisK KyNkZWZpbmUgX19VTklRVUVfSUQocHJlZml4KSBfX1BBU1RFKF9fUEFTVEUoX19VTklRVUVfSURf LCBwcmVmaXgpLCBfX0NPVU5URVJfXykKKworI2lmbmRlZiBfX0NIRUNLRVJfXworIyBkZWZpbmUg X19jb21waWxldGltZV93YXJuaW5nKG1lc3NhZ2UpIF9fYXR0cmlidXRlX18oKHdhcm5pbmcobWVz c2FnZSkpKQorIyBkZWZpbmUgX19jb21waWxldGltZV9lcnJvcihtZXNzYWdlKSBfX2F0dHJpYnV0 ZV9fKChlcnJvcihtZXNzYWdlKSkpCisjZW5kaWYgLyogX19DSEVDS0VSX18gKi8KKyNlbmRpZiAv KiBHQ0NfVkVSU0lPTiA+PSA0MDMwMCAqLworCisjaWYgR0NDX1ZFUlNJT04gPj0gNDA1MDAKKy8q CisgKiBNYXJrIGEgcG9zaXRpb24gaW4gY29kZSBhcyB1bnJlYWNoYWJsZS4gIFRoaXMgY2FuIGJl IHVzZWQgdG8KKyAqIHN1cHByZXNzIGNvbnRyb2wgZmxvdyB3YXJuaW5ncyBhZnRlciBhc20gYmxv Y2tzIHRoYXQgdHJhbnNmZXIKKyAqIGNvbnRyb2wgZWxzZXdoZXJlLgorICoKKyAqIEVhcmx5IHNu YXBzaG90cyBvZiBnY2MgNC41IGRvbid0IHN1cHBvcnQgdGhpcyBhbmQgd2UgY2FuJ3QgZGV0ZWN0 CisgKiB0aGlzIGluIHRoZSBwcmVwcm9jZXNzb3IsIGJ1dCB3ZSBjYW4gbGl2ZSB3aXRoIHRoaXMg YmVjYXVzZSB0aGV5J3JlCisgKiB1bnJlbGVhc2VkLiAgUmVhbGx5LCB3ZSBuZWVkIHRvIGhhdmUg YXV0b2NvbmYgZm9yIHRoZSBrZXJuZWwuCisgKi8KKyNkZWZpbmUgdW5yZWFjaGFibGUoKSBfX2J1 aWx0aW5fdW5yZWFjaGFibGUoKQorCisvKiBNYXJrIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBhcyBw cm9oaWJpdGVkIGZyb20gYmVpbmcgY2xvbmVkLiAqLworI2RlZmluZSBfX25vY2xvbmUJX19hdHRy aWJ1dGVfXygoX19ub2Nsb25lX18pKQorCisjZW5kaWYgLyogR0NDX1ZFUlNJT04gPj0gNDA1MDAg Ki8KKworI2lmIEdDQ19WRVJTSU9OID49IDQwNjAwCisvKgorICogVGVsbCB0aGUgb3B0aW1pemVy IHRoYXQgc29tZXRoaW5nIGVsc2UgdXNlcyB0aGlzIGZ1bmN0aW9uIG9yIHZhcmlhYmxlLgorICov CisjZGVmaW5lIF9fdmlzaWJsZQlfX2F0dHJpYnV0ZV9fKChleHRlcm5hbGx5X3Zpc2libGUpKQor I2VuZGlmCisKKy8qCisgKiBHQ0MgJ2FzbSBnb3RvJyBtaXNjb21waWxlcyBjZXJ0YWluIGNvZGUg c2VxdWVuY2VzOgorICoKKyAqICAgaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVn LmNnaT9pZD01ODY3MAorICoKKyAqIFdvcmsgaXQgYXJvdW5kIHZpYSBhIGNvbXBpbGVyIGJhcnJp ZXIgcXVpcmsgc3VnZ2VzdGVkIGJ5IEpha3ViIEplbGluZWsuCisgKgorICogKGFzbSBnb3RvIGlz IGF1dG9tYXRpY2FsbHkgdm9sYXRpbGUgLSB0aGUgbmFtaW5nIHJlZmxlY3RzIHRoaXMuKQorICov CisjZGVmaW5lIGFzbV92b2xhdGlsZV9nb3RvKHguLi4pCWRvIHsgYXNtIGdvdG8oeCk7IGFzbSAo IiIpOyB9IHdoaWxlICgwKQorCisjaWZkZWYgQ09ORklHX0FSQ0hfVVNFX0JVSUxUSU5fQlNXQVAK KyNpZiBHQ0NfVkVSU0lPTiA+PSA0MDQwMAorI2RlZmluZSBfX0hBVkVfQlVJTFRJTl9CU1dBUDMy X18KKyNkZWZpbmUgX19IQVZFX0JVSUxUSU5fQlNXQVA2NF9fCisjZW5kaWYKKyNpZiBHQ0NfVkVS U0lPTiA+PSA0MDgwMCB8fCAoZGVmaW5lZChfX3Bvd2VycGNfXykgJiYgR0NDX1ZFUlNJT04gPj0g NDA2MDApCisjZGVmaW5lIF9fSEFWRV9CVUlMVElOX0JTV0FQMTZfXworI2VuZGlmCisjZW5kaWYg LyogQ09ORklHX0FSQ0hfVVNFX0JVSUxUSU5fQlNXQVAgKi8KKworI2lmIEdDQ19WRVJTSU9OID49 IDUwMDAwCisjZGVmaW5lIEtBU0FOX0FCSV9WRVJTSU9OIDQKKyNlbGlmIEdDQ19WRVJTSU9OID49 IDQwOTAyCisjZGVmaW5lIEtBU0FOX0FCSV9WRVJTSU9OIDMKKyNlbmRpZgorCisjZW5kaWYJLyog Z2NjIHZlcnNpb24gPj0gNDAwMDAgc3BlY2lmaWMgY2hlY2tzICovCiAKICNpZiAhZGVmaW5lZChf X25vY2xvbmUpCiAjZGVmaW5lIF9fbm9jbG9uZQkvKiBub3QgbmVlZGVkICovCmRpZmYgLS1naXQg YS9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLWdjYzMuaCBiL2luY2x1ZGUvbGludXgvY29tcGlsZXIt Z2NjMy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDg5ZmViZTRkNzkuLjAwMDAw MDAwMDAwMAotLS0gYS9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLWdjYzMuaAorKysgL2Rldi9udWxs CkBAIC0xLDIzICswLDAgQEAKLSNpZm5kZWYgX19MSU5VWF9DT01QSUxFUl9ICi0jZXJyb3IgIlBs ZWFzZSBkb24ndCBpbmNsdWRlIDxsaW51eC9jb21waWxlci1nY2MzLmg+IGRpcmVjdGx5LCBpbmNs dWRlIDxsaW51eC9jb21waWxlci5oPiBpbnN0ZWFkLiIKLSNlbmRpZgotCi0jaWYgR0NDX1ZFUlNJ T04gPCAzMDIwMAotIyBlcnJvciBTb3JyeSwgeW91ciBjb21waWxlciBpcyB0b28gb2xkIC0gcGxl YXNlIHVwZ3JhZGUgaXQuCi0jZW5kaWYKLQotI2lmIEdDQ19WRVJTSU9OID49IDMwMzAwCi0jIGRl ZmluZSBfX3VzZWQJCQlfX2F0dHJpYnV0ZV9fKChfX3VzZWRfXykpCi0jZWxzZQotIyBkZWZpbmUg X191c2VkCQkJX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpCi0jZW5kaWYKLQotI2lmIEdDQ19W RVJTSU9OID49IDMwNDAwCi0jZGVmaW5lIF9fbXVzdF9jaGVjawkJX19hdHRyaWJ1dGVfXygod2Fy bl91bnVzZWRfcmVzdWx0KSkKLSNlbmRpZgotCi0jaWZkZWYgQ09ORklHX0dDT1ZfS0VSTkVMCi0j IGlmIEdDQ19WRVJTSU9OIDwgMzA0MDAKLSMgICBlcnJvciAiR0NPViBwcm9maWxpbmcgc3VwcG9y dCBmb3IgZ2NjIHZlcnNpb25zIGJlbG93IDMuNCBub3QgaW5jbHVkZWQiCi0jIGVuZGlmIC8qIF9f R05VQ19NSU5PUl9fICovCi0jZW5kaWYgLyogQ09ORklHX0dDT1ZfS0VSTkVMICovCmRpZmYgLS1n aXQgYS9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLWdjYzQuaCBiL2luY2x1ZGUvbGludXgvY29tcGls ZXItZ2NjNC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzdkYTk5YWQ1OGQuLjAw MDAwMDAwMDAwMAotLS0gYS9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLWdjYzQuaAorKysgL2Rldi9u dWxsCkBAIC0xLDg4ICswLDAgQEAKLSNpZm5kZWYgX19MSU5VWF9DT01QSUxFUl9ICi0jZXJyb3Ig IlBsZWFzZSBkb24ndCBpbmNsdWRlIDxsaW51eC9jb21waWxlci1nY2M0Lmg+IGRpcmVjdGx5LCBp bmNsdWRlIDxsaW51eC9jb21waWxlci5oPiBpbnN0ZWFkLiIKLSNlbmRpZgotCi0vKiBHQ0MgNC4x LlswMV0gbWlzY29tcGlsZXMgX193ZWFrICovCi0jaWZkZWYgX19LRVJORUxfXwotIyBpZiBHQ0Nf VkVSU0lPTiA+PSA0MDEwMCAmJiAgR0NDX1ZFUlNJT04gPD0gNDAxMDEKLSMgIGVycm9yIFlvdXIg dmVyc2lvbiBvZiBnY2MgbWlzY29tcGlsZXMgdGhlIF9fd2VhayBkaXJlY3RpdmUKLSMgZW5kaWYK LSNlbmRpZgotCi0jZGVmaW5lIF9fdXNlZAkJCV9fYXR0cmlidXRlX18oKF9fdXNlZF9fKSkKLSNk ZWZpbmUgX19tdXN0X2NoZWNrIAkJX19hdHRyaWJ1dGVfXygod2Fybl91bnVzZWRfcmVzdWx0KSkK LSNkZWZpbmUgX19jb21waWxlcl9vZmZzZXRvZihhLGIpIF9fYnVpbHRpbl9vZmZzZXRvZihhLGIp Ci0KLSNpZiBHQ0NfVkVSU0lPTiA+PSA0MDEwMCAmJiBHQ0NfVkVSU0lPTiA8IDQwNjAwCi0jIGRl ZmluZSBfX2NvbXBpbGV0aW1lX29iamVjdF9zaXplKG9iaikgX19idWlsdGluX29iamVjdF9zaXpl KG9iaiwgMCkKLSNlbmRpZgotCi0jaWYgR0NDX1ZFUlNJT04gPj0gNDAzMDAKLS8qIE1hcmsgZnVu Y3Rpb25zIGFzIGNvbGQuIGdjYyB3aWxsIGFzc3VtZSBhbnkgcGF0aCBsZWFkaW5nIHRvIGEgY2Fs bAotICAgdG8gdGhlbSB3aWxsIGJlIHVubGlrZWx5LiAgVGhpcyBtZWFucyBhIGxvdCBvZiBtYW51 YWwgdW5saWtlbHkoKXMKLSAgIGFyZSB1bm5lY2Vzc2FyeSBub3cgZm9yIGFueSBwYXRocyBsZWFk aW5nIHRvIHRoZSB1c3VhbCBzdXNwZWN0cwotICAgbGlrZSBCVUcoKSwgcHJpbnRrKCksIHBhbmlj KCkgZXRjLiBbYnV0IGxldCdzIGtlZXAgdGhlbSBmb3Igbm93IGZvcgotICAgb2xkZXIgY29tcGls ZXJzXQotCi0gICBFYXJseSBzbmFwc2hvdHMgb2YgZ2NjIDQuMyBkb24ndCBzdXBwb3J0IHRoaXMg YW5kIHdlIGNhbid0IGRldGVjdCB0aGlzCi0gICBpbiB0aGUgcHJlcHJvY2Vzc29yLCBidXQgd2Ug Y2FuIGxpdmUgd2l0aCB0aGlzIGJlY2F1c2UgdGhleSdyZSB1bnJlbGVhc2VkLgotICAgTWFrZXRp bWUgcHJvYmluZyB3b3VsZCBiZSBvdmVya2lsbCBoZXJlLgotCi0gICBnY2MgYWxzbyBoYXMgYSBf X2F0dHJpYnV0ZV9fKChfX2hvdF9fKSkgdG8gbW92ZSBob3QgZnVuY3Rpb25zIGludG8KLSAgIGEg c3BlY2lhbCBzZWN0aW9uLCBidXQgSSBkb24ndCBzZWUgYW55IHNlbnNlIGluIHRoaXMgcmlnaHQg bm93IGluCi0gICB0aGUga2VybmVsIGNvbnRleHQgKi8KLSNkZWZpbmUgX19jb2xkCQkJX19hdHRy aWJ1dGVfXygoX19jb2xkX18pKQotCi0jZGVmaW5lIF9fVU5JUVVFX0lEKHByZWZpeCkgX19QQVNU RShfX1BBU1RFKF9fVU5JUVVFX0lEXywgcHJlZml4KSwgX19DT1VOVEVSX18pCi0KLSNpZm5kZWYg X19DSEVDS0VSX18KLSMgZGVmaW5lIF9fY29tcGlsZXRpbWVfd2FybmluZyhtZXNzYWdlKSBfX2F0 dHJpYnV0ZV9fKCh3YXJuaW5nKG1lc3NhZ2UpKSkKLSMgZGVmaW5lIF9fY29tcGlsZXRpbWVfZXJy b3IobWVzc2FnZSkgX19hdHRyaWJ1dGVfXygoZXJyb3IobWVzc2FnZSkpKQotI2VuZGlmIC8qIF9f Q0hFQ0tFUl9fICovCi0jZW5kaWYgLyogR0NDX1ZFUlNJT04gPj0gNDAzMDAgKi8KLQotI2lmIEdD Q19WRVJTSU9OID49IDQwNTAwCi0vKgotICogTWFyayBhIHBvc2l0aW9uIGluIGNvZGUgYXMgdW5y ZWFjaGFibGUuICBUaGlzIGNhbiBiZSB1c2VkIHRvCi0gKiBzdXBwcmVzcyBjb250cm9sIGZsb3cg d2FybmluZ3MgYWZ0ZXIgYXNtIGJsb2NrcyB0aGF0IHRyYW5zZmVyCi0gKiBjb250cm9sIGVsc2V3 aGVyZS4KLSAqCi0gKiBFYXJseSBzbmFwc2hvdHMgb2YgZ2NjIDQuNSBkb24ndCBzdXBwb3J0IHRo aXMgYW5kIHdlIGNhbid0IGRldGVjdAotICogdGhpcyBpbiB0aGUgcHJlcHJvY2Vzc29yLCBidXQg d2UgY2FuIGxpdmUgd2l0aCB0aGlzIGJlY2F1c2UgdGhleSdyZQotICogdW5yZWxlYXNlZC4gIFJl YWxseSwgd2UgbmVlZCB0byBoYXZlIGF1dG9jb25mIGZvciB0aGUga2VybmVsLgotICovCi0jZGVm aW5lIHVucmVhY2hhYmxlKCkgX19idWlsdGluX3VucmVhY2hhYmxlKCkKLQotLyogTWFyayBhIGZ1 bmN0aW9uIGRlZmluaXRpb24gYXMgcHJvaGliaXRlZCBmcm9tIGJlaW5nIGNsb25lZC4gKi8KLSNk ZWZpbmUgX19ub2Nsb25lCV9fYXR0cmlidXRlX18oKF9fbm9jbG9uZV9fLCBfX29wdGltaXplX18o Im5vLXRyYWNlciIpKSkKLQotI2VuZGlmIC8qIEdDQ19WRVJTSU9OID49IDQwNTAwICovCi0KLSNp ZiBHQ0NfVkVSU0lPTiA+PSA0MDYwMAotLyoKLSAqIFRlbGwgdGhlIG9wdGltaXplciB0aGF0IHNv bWV0aGluZyBlbHNlIHVzZXMgdGhpcyBmdW5jdGlvbiBvciB2YXJpYWJsZS4KLSAqLwotI2RlZmlu ZSBfX3Zpc2libGUgX19hdHRyaWJ1dGVfXygoZXh0ZXJuYWxseV92aXNpYmxlKSkKLSNlbmRpZgot Ci0vKgotICogR0NDICdhc20gZ290bycgbWlzY29tcGlsZXMgY2VydGFpbiBjb2RlIHNlcXVlbmNl czoKLSAqCi0gKiAgIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9 NTg2NzAKLSAqCi0gKiBXb3JrIGl0IGFyb3VuZCB2aWEgYSBjb21waWxlciBiYXJyaWVyIHF1aXJr IHN1Z2dlc3RlZCBieSBKYWt1YiBKZWxpbmVrLgotICogRml4ZWQgaW4gR0NDIDQuOC4yIGFuZCBs YXRlciB2ZXJzaW9ucy4KLSAqCi0gKiAoYXNtIGdvdG8gaXMgYXV0b21hdGljYWxseSB2b2xhdGls ZSAtIHRoZSBuYW1pbmcgcmVmbGVjdHMgdGhpcy4pCi0gKi8KLSNkZWZpbmUgYXNtX3ZvbGF0aWxl X2dvdG8oeC4uLikJZG8geyBhc20gZ290byh4KTsgYXNtICgiIik7IH0gd2hpbGUgKDApCi0KLSNp ZmRlZiBDT05GSUdfQVJDSF9VU0VfQlVJTFRJTl9CU1dBUAotI2lmIEdDQ19WRVJTSU9OID49IDQw NDAwCi0jZGVmaW5lIF9fSEFWRV9CVUlMVElOX0JTV0FQMzJfXwotI2RlZmluZSBfX0hBVkVfQlVJ TFRJTl9CU1dBUDY0X18KLSNlbmRpZgotI2lmIEdDQ19WRVJTSU9OID49IDQwODAwIHx8IChkZWZp bmVkKF9fcG93ZXJwY19fKSAmJiBHQ0NfVkVSU0lPTiA+PSA0MDYwMCkKLSNkZWZpbmUgX19IQVZF X0JVSUxUSU5fQlNXQVAxNl9fCi0jZW5kaWYKLSNlbmRpZiAvKiBDT05GSUdfQVJDSF9VU0VfQlVJ TFRJTl9CU1dBUCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jb21waWxlci1nY2M1Lmgg Yi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLWdjYzUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggYmUzOTYyNGRlOGI1Li4wMDAwMDAwMDAwMDAKLS0tIGEvaW5jbHVkZS9saW51eC9jb21w aWxlci1nY2M1LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0jaWZuZGVmIF9fTElO VVhfQ09NUElMRVJfSAotI2Vycm9yICJQbGVhc2UgZG9uJ3QgaW5jbHVkZSA8bGludXgvY29tcGls ZXItZ2NjNS5oPiBkaXJlY3RseSwgaW5jbHVkZSA8bGludXgvY29tcGlsZXIuaD4gaW5zdGVhZC4i Ci0jZW5kaWYKLQotI2RlZmluZSBfX3VzZWQJCQkJX19hdHRyaWJ1dGVfXygoX191c2VkX18pKQot I2RlZmluZSBfX211c3RfY2hlY2sJCQlfX2F0dHJpYnV0ZV9fKCh3YXJuX3VudXNlZF9yZXN1bHQp KQotI2RlZmluZSBfX2NvbXBpbGVyX29mZnNldG9mKGEsIGIpCV9fYnVpbHRpbl9vZmZzZXRvZihh LCBiKQotCi0vKiBNYXJrIGZ1bmN0aW9ucyBhcyBjb2xkLiBnY2Mgd2lsbCBhc3N1bWUgYW55IHBh dGggbGVhZGluZyB0byBhIGNhbGwKLSAgIHRvIHRoZW0gd2lsbCBiZSB1bmxpa2VseS4gIFRoaXMg bWVhbnMgYSBsb3Qgb2YgbWFudWFsIHVubGlrZWx5KClzCi0gICBhcmUgdW5uZWNlc3Nhcnkgbm93 IGZvciBhbnkgcGF0aHMgbGVhZGluZyB0byB0aGUgdXN1YWwgc3VzcGVjdHMKLSAgIGxpa2UgQlVH KCksIHByaW50aygpLCBwYW5pYygpIGV0Yy4gW2J1dCBsZXQncyBrZWVwIHRoZW0gZm9yIG5vdyBm b3IKLSAgIG9sZGVyIGNvbXBpbGVyc10KLQotICAgRWFybHkgc25hcHNob3RzIG9mIGdjYyA0LjMg ZG9uJ3Qgc3VwcG9ydCB0aGlzIGFuZCB3ZSBjYW4ndCBkZXRlY3QgdGhpcwotICAgaW4gdGhlIHBy ZXByb2Nlc3NvciwgYnV0IHdlIGNhbiBsaXZlIHdpdGggdGhpcyBiZWNhdXNlIHRoZXkncmUgdW5y ZWxlYXNlZC4KLSAgIE1ha2V0aW1lIHByb2Jpbmcgd291bGQgYmUgb3ZlcmtpbGwgaGVyZS4KLQot ICAgZ2NjIGFsc28gaGFzIGEgX19hdHRyaWJ1dGVfXygoX19ob3RfXykpIHRvIG1vdmUgaG90IGZ1 bmN0aW9ucyBpbnRvCi0gICBhIHNwZWNpYWwgc2VjdGlvbiwgYnV0IEkgZG9uJ3Qgc2VlIGFueSBz ZW5zZSBpbiB0aGlzIHJpZ2h0IG5vdyBpbgotICAgdGhlIGtlcm5lbCBjb250ZXh0ICovCi0jZGVm aW5lIF9fY29sZAkJCV9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkKLQotI2RlZmluZSBfX1VOSVFV RV9JRChwcmVmaXgpIF9fUEFTVEUoX19QQVNURShfX1VOSVFVRV9JRF8sIHByZWZpeCksIF9fQ09V TlRFUl9fKQotCi0jaWZuZGVmIF9fQ0hFQ0tFUl9fCi0jIGRlZmluZSBfX2NvbXBpbGV0aW1lX3dh cm5pbmcobWVzc2FnZSkgX19hdHRyaWJ1dGVfXygod2FybmluZyhtZXNzYWdlKSkpCi0jIGRlZmlu ZSBfX2NvbXBpbGV0aW1lX2Vycm9yKG1lc3NhZ2UpIF9fYXR0cmlidXRlX18oKGVycm9yKG1lc3Nh Z2UpKSkKLSNlbmRpZiAvKiBfX0NIRUNLRVJfXyAqLwotCi0vKgotICogTWFyayBhIHBvc2l0aW9u IGluIGNvZGUgYXMgdW5yZWFjaGFibGUuICBUaGlzIGNhbiBiZSB1c2VkIHRvCi0gKiBzdXBwcmVz cyBjb250cm9sIGZsb3cgd2FybmluZ3MgYWZ0ZXIgYXNtIGJsb2NrcyB0aGF0IHRyYW5zZmVyCi0g KiBjb250cm9sIGVsc2V3aGVyZS4KLSAqCi0gKiBFYXJseSBzbmFwc2hvdHMgb2YgZ2NjIDQuNSBk b24ndCBzdXBwb3J0IHRoaXMgYW5kIHdlIGNhbid0IGRldGVjdAotICogdGhpcyBpbiB0aGUgcHJl cHJvY2Vzc29yLCBidXQgd2UgY2FuIGxpdmUgd2l0aCB0aGlzIGJlY2F1c2UgdGhleSdyZQotICog dW5yZWxlYXNlZC4gIFJlYWxseSwgd2UgbmVlZCB0byBoYXZlIGF1dG9jb25mIGZvciB0aGUga2Vy bmVsLgotICovCi0jZGVmaW5lIHVucmVhY2hhYmxlKCkgX19idWlsdGluX3VucmVhY2hhYmxlKCkK LQotLyogTWFyayBhIGZ1bmN0aW9uIGRlZmluaXRpb24gYXMgcHJvaGliaXRlZCBmcm9tIGJlaW5n IGNsb25lZC4gKi8KLSNkZWZpbmUgX19ub2Nsb25lCV9fYXR0cmlidXRlX18oKF9fbm9jbG9uZV9f LCBfX29wdGltaXplX18oIm5vLXRyYWNlciIpKSkKLQotLyoKLSAqIFRlbGwgdGhlIG9wdGltaXpl ciB0aGF0IHNvbWV0aGluZyBlbHNlIHVzZXMgdGhpcyBmdW5jdGlvbiBvciB2YXJpYWJsZS4KLSAq LwotI2RlZmluZSBfX3Zpc2libGUgX19hdHRyaWJ1dGVfXygoZXh0ZXJuYWxseV92aXNpYmxlKSkK LQotLyoKLSAqIEdDQyAnYXNtIGdvdG8nIG1pc2NvbXBpbGVzIGNlcnRhaW4gY29kZSBzZXF1ZW5j ZXM6Ci0gKgotICogICBodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lk PTU4NjcwCi0gKgotICogV29yayBpdCBhcm91bmQgdmlhIGEgY29tcGlsZXIgYmFycmllciBxdWly ayBzdWdnZXN0ZWQgYnkgSmFrdWIgSmVsaW5lay4KLSAqIEZpeGVkIGluIEdDQyA0LjguMiBhbmQg bGF0ZXIgdmVyc2lvbnMuCi0gKgotICogKGFzbSBnb3RvIGlzIGF1dG9tYXRpY2FsbHkgdm9sYXRp bGUgLSB0aGUgbmFtaW5nIHJlZmxlY3RzIHRoaXMuKQotICovCi0jZGVmaW5lIGFzbV92b2xhdGls ZV9nb3RvKHguLi4pCWRvIHsgYXNtIGdvdG8oeCk7IGFzbSAoIiIpOyB9IHdoaWxlICgwKQotCi0j aWZkZWYgQ09ORklHX0FSQ0hfVVNFX0JVSUxUSU5fQlNXQVAKLSNkZWZpbmUgX19IQVZFX0JVSUxU SU5fQlNXQVAzMl9fCi0jZGVmaW5lIF9fSEFWRV9CVUlMVElOX0JTV0FQNjRfXwotI2RlZmluZSBf X0hBVkVfQlVJTFRJTl9CU1dBUDE2X18KLSNlbmRpZiAvKiBDT05GSUdfQVJDSF9VU0VfQlVJTFRJ Tl9CU1dBUCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9oYXNoLmggYi9pbmNsdWRlL2xp bnV4L2hhc2guaAppbmRleCBiZDE3NTRjN2VjZWYuLmE3NWIxMDA5ZDNmNyAxMDA2NDQKLS0tIGEv aW5jbHVkZS9saW51eC9oYXNoLmgKKysrIGIvaW5jbHVkZS9saW51eC9oYXNoLmgKQEAgLTMzLDEw ICszMywyOSBAQAogI2Vycm9yIFdvcmRzaXplIG5vdCAzMiBvciA2NAogI2VuZGlmCiAKKy8qCisg KiBUaGUgYWJvdmUgcHJpbWVzIGFyZSBhY3RpdmVseSBiYWQgZm9yIGhhc2hpbmcsIHNpbmNlIHRo ZXkgYXJlCisgKiB0b28gc3BhcnNlLiBUaGUgMzItYml0IG9uZSBpcyBtb3N0bHkgb2ssIHRoZSA2 NC1iaXQgb25lIGNhdXNlcworICogcmVhbCBwcm9ibGVtcy4gQmVzaWRlcywgdGhlICJwcmltZSIg cGFydCBpcyBwb2ludGxlc3MgZm9yIHRoZQorICogbXVsdGlwbGljYXRpdmUgaGFzaC4KKyAqCisg KiBBbHRob3VnaCBhIHJhbmRvbSBvZGQgbnVtYmVyIHdpbGwgZG8sIGl0IHR1cm5zIG91dCB0aGF0 IHRoZSBnb2xkZW4KKyAqIHJhdGlvIHBoaSA9IChzcXJ0KDUpLTEpLzIsIG9yIGl0cyBuZWdhdGl2 ZSwgaGFzIHBhcnRpY3VsYXJseSBuaWNlCisgKiBwcm9wZXJ0aWVzLgorICoKKyAqIFRoZXNlIGFy ZSB0aGUgbmVnYXRpdmUsICgxIC0gcGhpKSA9IChwaGleMikgPSAoMyAtIHNxcnQoNSkpLzIuCisg KiAoU2VlIEtudXRoIHZvbCAzLCBzZWN0aW9uIDYuNCwgZXhlcmNpc2UgOS4pCisgKi8KKyNkZWZp bmUgR09MREVOX1JBVElPXzMyIDB4NjFDODg2NDcKKyNkZWZpbmUgR09MREVOX1JBVElPXzY0IDB4 NjFDODg2NDY4MEI1ODNFQnVsbAorCiBzdGF0aWMgX19hbHdheXNfaW5saW5lIHU2NCBoYXNoXzY0 KHU2NCB2YWwsIHVuc2lnbmVkIGludCBiaXRzKQogewogCXU2NCBoYXNoID0gdmFsOwogCisjaWYg QklUU19QRVJfTE9ORyA9PSA2NAorCWhhc2ggPSBoYXNoICogR09MREVOX1JBVElPXzY0OworI2Vs c2UKIAkvKiAgU2lnaCwgZ2NjIGNhbid0IG9wdGltaXNlIHRoaXMgYWxvbmUgbGlrZSBpdCBkb2Vz IGZvciAzMiBiaXRzLiAqLwogCXU2NCBuID0gaGFzaDsKIAluIDw8PSAxODsKQEAgLTUxLDYgKzcw LDcgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB1NjQgaGFzaF82NCh1NjQgdmFsLCB1bnNpZ25l ZCBpbnQgYml0cykKIAloYXNoICs9IG47CiAJbiA8PD0gMjsKIAloYXNoICs9IG47CisjZW5kaWYK IAogCS8qIEhpZ2ggYml0cyBhcmUgbW9yZSByYW5kb20sIHNvIHVzZSB0aGVtLiAqLwogCXJldHVy biBoYXNoID4+ICg2NCAtIGJpdHMpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9odWdldGxi LmggYi9pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaAppbmRleCAyNjUzNGJhMWFlZjMuLjYyZTk0ZDI1 MTdiZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9odWdldGxiLmgKKysrIGIvaW5jbHVkZS9s aW51eC9odWdldGxiLmgKQEAgLTQxNiwxNSArNDE2LDE0IEBAIHN0YXRpYyBpbmxpbmUgc3Bpbmxv Y2tfdCAqaHVnZV9wdGVfbG9ja3B0cihzdHJ1Y3QgaHN0YXRlICpoLAogCXJldHVybiAmbW0tPnBh Z2VfdGFibGVfbG9jazsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGh1Z2VwYWdlc19zdXBwb3J0 ZWQodm9pZCkKLXsKLQkvKgotCSAqIFNvbWUgcGxhdGZvcm0gZGVjaWRlIHdoZXRoZXIgdGhleSBz dXBwb3J0IGh1Z2UgcGFnZXMgYXQgYm9vdAotCSAqIHRpbWUuIE9uIHRoZXNlLCBzdWNoIGFzIHBv d2VycGMsIEhQQUdFX1NISUZUIGlzIHNldCB0byAwIHdoZW4KLQkgKiB0aGVyZSBpcyBubyBzdWNo IHN1cHBvcnQKLQkgKi8KLQlyZXR1cm4gSFBBR0VfU0hJRlQgIT0gMDsKLX0KKyNpZm5kZWYgaHVn ZXBhZ2VzX3N1cHBvcnRlZAorLyoKKyAqIFNvbWUgcGxhdGZvcm0gZGVjaWRlIHdoZXRoZXIgdGhl eSBzdXBwb3J0IGh1Z2UgcGFnZXMgYXQgYm9vdAorICogdGltZS4gU29tZSBvZiB0aGVtLCBzdWNo IGFzIHBvd2VycGMsIHNldCBIUEFHRV9TSElGVCB0byAwCisgKiB3aGVuIHRoZXJlIGlzIG5vIHN1 Y2ggc3VwcG9ydAorICovCisjZGVmaW5lIGh1Z2VwYWdlc19zdXBwb3J0ZWQoKSAoSFBBR0VfU0hJ RlQgIT0gMCkKKyNlbmRpZgogCiAjZWxzZQkvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovCiBzdHJ1 Y3QgaHN0YXRlIHt9OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tZmQvc2Ftc3VuZy9zMm1w czExLmggYi9pbmNsdWRlL2xpbnV4L21mZC9zYW1zdW5nL3MybXBzMTEuaAppbmRleCBiM2RkZjk4 ZGVjMzcuLjhiMTI2Njg5NWY3MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tZmQvc2Ftc3Vu Zy9zMm1wczExLmgKKysrIGIvaW5jbHVkZS9saW51eC9tZmQvc2Ftc3VuZy9zMm1wczExLmgKQEAg LTE4MiwxMCArMTgyLDEyIEBAIGVudW0gczJtcHMxMV9yZWd1bGF0b3JzIHsKICNkZWZpbmUgUzJN UFMxMV9MRE9fU1RFUDIJMjUwMDAKICNkZWZpbmUgUzJNUFMxMV9MRE9fVlNFTF9NQVNLCTB4M0YK ICNkZWZpbmUgUzJNUFMxMV9CVUNLX1ZTRUxfTUFTSwkweEZGCisjZGVmaW5lIFMyTVBTMTFfQlVD SzlfVlNFTF9NQVNLCTB4MUYKICNkZWZpbmUgUzJNUFMxMV9FTkFCTEVfTUFTSwkoMHgwMyA8PCBT Mk1QUzExX0VOQUJMRV9TSElGVCkKICNkZWZpbmUgUzJNUFMxMV9FTkFCTEVfU0hJRlQJMHgwNgog I2RlZmluZSBTMk1QUzExX0xET19OX1ZPTFRBR0VTCShTMk1QUzExX0xET19WU0VMX01BU0sgKyAx KQogI2RlZmluZSBTMk1QUzExX0JVQ0tfTl9WT0xUQUdFUyAoUzJNUFMxMV9CVUNLX1ZTRUxfTUFT SyArIDEpCisjZGVmaW5lIFMyTVBTMTFfQlVDSzlfTl9WT0xUQUdFUyAoUzJNUFMxMV9CVUNLOV9W U0VMX01BU0sgKyAxKQogI2RlZmluZSBTMk1QUzExX1JBTVBfREVMQVkJMjUwMDAJCS8qIHVWL3Vz ICovCiAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9taWdyYXRlLmggYi9pbmNsdWRlL2xp bnV4L21pZ3JhdGUuaAppbmRleCBhMjkwMWM0MTQ2NjQuLmIzMzM0N2Y0ZTRiNyAxMDA2NDQKLS0t IGEvaW5jbHVkZS9saW51eC9taWdyYXRlLmgKKysrIGIvaW5jbHVkZS9saW51eC9taWdyYXRlLmgK QEAgLTEzLDE4ICsxMyw5IEBAIHR5cGVkZWYgdm9pZCBmcmVlX3BhZ2VfdChzdHJ1Y3QgcGFnZSAq cGFnZSwgdW5zaWduZWQgbG9uZyBwcml2YXRlKTsKICAqIFJldHVybiB2YWx1ZXMgZnJvbSBhZGRy ZXNzc19zcGFjZV9vcGVyYXRpb25zLm1pZ3JhdGVwYWdlKCk6CiAgKiAtIG5lZ2F0aXZlIGVycm5v IG9uIHBhZ2UgbWlncmF0aW9uIGZhaWx1cmU7CiAgKiAtIHplcm8gb24gcGFnZSBtaWdyYXRpb24g c3VjY2VzczsKLSAqCi0gKiBUaGUgYmFsbG9vbiBwYWdlIG1pZ3JhdGlvbiBpbnRyb2R1Y2VzIHRo aXMgc3BlY2lhbCBjYXNlIHdoZXJlIGEgJ2Rpc3RpbmN0JwotICogcmV0dXJuIGNvZGUgaXMgdXNl ZCB0byBmbGFnIGEgc3VjY2Vzc2Z1bCBwYWdlIG1pZ3JhdGlvbiB0byB1bm1hcF9hbmRfbW92ZSgp LgotICogVGhpcyBhcHByb2FjaCBpcyBuZWNlc3NhcnkgYmVjYXVzZSBwYWdlIG1pZ3JhdGlvbiBj YW4gcmFjZSBhZ2FpbnN0IGJhbGxvb24KLSAqIGRlZmxhdGlvbiBwcm9jZWR1cmUsIGFuZCBmb3Ig c3VjaCBjYXNlIHdlIGNvdWxkIGludHJvZHVjZSBhIG5hc3R5IHBhZ2UgbGVhawotICogaWYgYSBz dWNjZXNzZnVsbHkgbWlncmF0ZWQgYmFsbG9vbiBwYWdlIGdldHMgcmVsZWFzZWQgY29uY3VycmVu dGx5IHdpdGgKLSAqIG1pZ3JhdGlvbidzIHVubWFwX2FuZF9tb3ZlKCkgd3JhcC11cCBzdGVwcy4K ICAqLwogI2RlZmluZSBNSUdSQVRFUEFHRV9TVUNDRVNTCQkwCi0jZGVmaW5lIE1JR1JBVEVQQUdF X0JBTExPT05fU1VDQ0VTUwkxIC8qIHNwZWNpYWwgcmV0IGNvZGUgZm9yIGJhbGxvb24gcGFnZQot CQkJCQkgICAqIHN1Y2Vzc2Z1bCBtaWdyYXRpb24gY2FzZS4KLQkJCQkJICAgKi8KKwogZW51bSBt aWdyYXRlX3JlYXNvbiB7CiAJTVJfQ09NUEFDVElPTiwKIAlNUl9NRU1PUllfRkFJTFVSRSwKZGlm ZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGludXgvbW0uaAppbmRleCA4 YWI5MWNlNDY0ODcuLjdhYzcyYTcyNTc5OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbS5o CisrKyBiL2luY2x1ZGUvbGludXgvbW0uaApAQCAtNTUzLDYgKzU1MywyNSBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgX19DbGVhclBhZ2VCdWRkeShzdHJ1Y3QgcGFnZSAqcGFnZSkKIAlhdG9taWNfc2V0 KCZwYWdlLT5fbWFwY291bnQsIC0xKTsKIH0KIAorI2RlZmluZSBQQUdFX0JBTExPT05fTUFQQ09V TlRfVkFMVUUgKC0yNTYpCisKK3N0YXRpYyBpbmxpbmUgaW50IFBhZ2VCYWxsb29uKHN0cnVjdCBw YWdlICpwYWdlKQoreworCXJldHVybiBhdG9taWNfcmVhZCgmcGFnZS0+X21hcGNvdW50KSA9PSBQ QUdFX0JBTExPT05fTUFQQ09VTlRfVkFMVUU7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX1Nl dFBhZ2VCYWxsb29uKHN0cnVjdCBwYWdlICpwYWdlKQoreworCVZNX0JVR19PTl9QQUdFKGF0b21p Y19yZWFkKCZwYWdlLT5fbWFwY291bnQpICE9IC0xLCBwYWdlKTsKKwlhdG9taWNfc2V0KCZwYWdl LT5fbWFwY291bnQsIFBBR0VfQkFMTE9PTl9NQVBDT1VOVF9WQUxVRSk7Cit9CisKK3N0YXRpYyBp bmxpbmUgdm9pZCBfX0NsZWFyUGFnZUJhbGxvb24oc3RydWN0IHBhZ2UgKnBhZ2UpCit7CisJVk1f QlVHX09OX1BBR0UoIVBhZ2VCYWxsb29uKHBhZ2UpLCBwYWdlKTsKKwlhdG9taWNfc2V0KCZwYWdl LT5fbWFwY291bnQsIC0xKTsKK30KKwogdm9pZCBwdXRfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSk7 CiB2b2lkIHB1dF9wYWdlc19saXN0KHN0cnVjdCBsaXN0X2hlYWQgKnBhZ2VzKTsKIApkaWZmIC0t Z2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNl LmgKaW5kZXggYmZjM2Y5ZGZkOTI4Li5iMzQwNDcxOGZkYTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv bGludXgvbmV0ZGV2aWNlLmgKKysrIGIvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaApAQCAtMjYy LDcgKzI2Miw2IEBAIHN0cnVjdCBoZWFkZXJfb3BzIHsKIAl2b2lkCSgqY2FjaGVfdXBkYXRlKShz dHJ1Y3QgaGhfY2FjaGUgKmhoLAogCQkJCWNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJ CQkJY29uc3QgdW5zaWduZWQgY2hhciAqaGFkZHIpOwotCWJvb2wJKCp2YWxpZGF0ZSkoY29uc3Qg Y2hhciAqbGxfaGVhZGVyLCB1bnNpZ25lZCBpbnQgbGVuKTsKIH07CiAKIC8qIFRoZXNlIGZsYWcg Yml0cyBhcmUgcHJpdmF0ZSB0byB0aGUgZ2VuZXJpYyBuZXR3b3JrIHF1ZXVlaW5nCkBAIC0xMzQ4 LDcgKzEzNDcsNyBAQCBzdHJ1Y3QgbmV0X2RldmljZSB7CiAKIAl1bnNpZ25lZCBpbnQJCW10dTsJ LyogaW50ZXJmYWNlIE1UVSB2YWx1ZQkJKi8KIAl1bnNpZ25lZCBzaG9ydAkJdHlwZTsJLyogaW50 ZXJmYWNlIGhhcmR3YXJlIHR5cGUJKi8KLQl1bnNpZ25lZCBzaG9ydAkJaGFyZF9oZWFkZXJfbGVu OyAvKiBtYXhpbXVtIGhhcmR3YXJlIGhkciBsZW5ndGgJKi8KKwl1bnNpZ25lZCBzaG9ydAkJaGFy ZF9oZWFkZXJfbGVuOwkvKiBoYXJkd2FyZSBoZHIgbGVuZ3RoCSovCiAKIAkvKiBleHRyYSBoZWFk LSBhbmQgdGFpbHJvb20gdGhlIGhhcmR3YXJlIG1heSBuZWVkLCBidXQgbm90IGluIGFsbCBjYXNl cwogCSAqIGNhbiB0aGlzIGJlIGd1YXJhbnRlZWQsIGVzcGVjaWFsbHkgdGFpbHJvb20uIFNvbWUg Y2FzZXMgYWxzbyB1c2UKQEAgLTIwNzIsMjQgKzIwNzEsNiBAQCBzdGF0aWMgaW5saW5lIGludCBk ZXZfcmVidWlsZF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlyZXR1cm4gZGV2LT5oZWFk ZXJfb3BzLT5yZWJ1aWxkKHNrYik7CiB9CiAKLS8qIGxsX2hlYWRlciBtdXN0IGhhdmUgYXQgbGVh c3QgaGFyZF9oZWFkZXJfbGVuIGFsbG9jYXRlZCAqLwotc3RhdGljIGlubGluZSBib29sIGRldl92 YWxpZGF0ZV9oZWFkZXIoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKLQkJCQkgICAgICAg Y2hhciAqbGxfaGVhZGVyLCBpbnQgbGVuKQotewotCWlmIChsaWtlbHkobGVuID49IGRldi0+aGFy ZF9oZWFkZXJfbGVuKSkKLQkJcmV0dXJuIHRydWU7Ci0KLQlpZiAoY2FwYWJsZShDQVBfU1lTX1JB V0lPKSkgewotCQltZW1zZXQobGxfaGVhZGVyICsgbGVuLCAwLCBkZXYtPmhhcmRfaGVhZGVyX2xl biAtIGxlbik7Ci0JCXJldHVybiB0cnVlOwotCX0KLQotCWlmIChkZXYtPmhlYWRlcl9vcHMgJiYg ZGV2LT5oZWFkZXJfb3BzLT52YWxpZGF0ZSkKLQkJcmV0dXJuIGRldi0+aGVhZGVyX29wcy0+dmFs aWRhdGUobGxfaGVhZGVyLCBsZW4pOwotCi0JcmV0dXJuIGZhbHNlOwotfQotCiB0eXBlZGVmIGlu dCBnaWZjb25mX2Z1bmNfdChzdHJ1Y3QgbmV0X2RldmljZSAqIGRldiwgY2hhciBfX3VzZXIgKiBi dWZwdHIsIGludCBsZW4pOwogaW50IHJlZ2lzdGVyX2dpZmNvbmYodW5zaWduZWQgaW50IGZhbWls eSwgZ2lmY29uZl9mdW5jX3QgKmdpZmNvbmYpOwogc3RhdGljIGlubGluZSBpbnQgdW5yZWdpc3Rl cl9naWZjb25mKHVuc2lnbmVkIGludCBmYW1pbHkpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4 L3VzYl91c3VhbC5oIGIvaW5jbHVkZS9saW51eC91c2JfdXN1YWwuaAppbmRleCA3ZjVmNzhiZDE1 YWQuLjI0NWY1N2RiYmI2MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC91c2JfdXN1YWwuaAor KysgYi9pbmNsdWRlL2xpbnV4L3VzYl91c3VhbC5oCkBAIC03OSw2ICs3OSw4IEBACiAJCS8qIENh bm5vdCBoYW5kbGUgTUlfUkVQT1JUX1NVUFBPUlRFRF9PUEVSQVRJT05fQ09ERVMgKi8JXAogCVVT X0ZMQUcoTUFYX1NFQ1RPUlNfMjQwLAkweDA4MDAwMDAwKQkJXAogCQkvKiBTZXRzIG1heF9zZWN0 b3JzIHRvIDI0MCAqLwkJCVwKKwlVU19GTEFHKE5PX1JFUE9SVF9MVU5TLAkweDEwMDAwMDAwKQkJ CVwKKwkJLyogQ2Fubm90IGhhbmRsZSBSRVBPUlRfTFVOUyAqLwkJCVwKIAogI2RlZmluZSBVU19G TEFHKG5hbWUsIHZhbHVlKQlVU19GTF8jI25hbWUgPSB2YWx1ZSAsCiBlbnVtIHsgVVNfRE9fQUxM X0ZMQUdTIH07CmRpZmYgLS1naXQgYS9pbmNsdWRlL3JkbWEvaWIuaCBiL2luY2x1ZGUvcmRtYS9p Yi5oCmluZGV4IGNmOGY5ZTcwMGU0OC4uYTZiOTM3MDZiMGZjIDEwMDY0NAotLS0gYS9pbmNsdWRl L3JkbWEvaWIuaAorKysgYi9pbmNsdWRlL3JkbWEvaWIuaApAQCAtMzQsNiArMzQsNyBAQAogI2Rl ZmluZSBfUkRNQV9JQl9ICiAKICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxp bnV4L3NjaGVkLmg+CiAKIHN0cnVjdCBpYl9hZGRyIHsKIAl1bmlvbiB7CkBAIC04Niw0ICs4Nywx OSBAQCBzdHJ1Y3Qgc29ja2FkZHJfaWIgewogCV9fdTY0CQkJc2liX3Njb3BlX2lkOwogfTsKIAor LyoKKyAqIFRoZSBJQiBpbnRlcmZhY2VzIHRoYXQgdXNlIHdyaXRlKCkgYXMgYmktZGlyZWN0aW9u YWwgaW9jdGwoKSBhcmUKKyAqIGZ1bmRhbWVudGFsbHkgdW5zYWZlLCBzaW5jZSB0aGVyZSBhcmUg bG90cyBvZiB3YXlzIHRvIHRyaWdnZXIgIndyaXRlKCkiCisgKiBjYWxscyBmcm9tIHZhcmlvdXMg Y29udGV4dHMgd2l0aCBlbGV2YXRlZCBwcml2aWxlZ2VzLiBUaGF0IGluY2x1ZGVzIHRoZQorICog dHJhZGl0aW9uYWwgc3VpZCBleGVjdXRhYmxlIGVycm9yIG1lc3NhZ2Ugd3JpdGVzLCBidXQgYWxz byB2YXJpb3VzIGtlcm5lbAorICogaW50ZXJmYWNlcyB0aGF0IGNhbiB3cml0ZSB0byBmaWxlIGRl c2NyaXB0b3JzLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgcHJvdGVjdGlvbiBmb3Ig dGhlIGxlZ2FjeSBBUEkgYnkgcmVzdHJpY3RpbmcgdGhlCisgKiBjYWxsaW5nIGNvbnRleHQuCisg Ki8KK3N0YXRpYyBpbmxpbmUgYm9vbCBpYl9zYWZlX2ZpbGVfYWNjZXNzKHN0cnVjdCBmaWxlICpm aWxwKQoreworCXJldHVybiBmaWxwLT5mX2NyZWQgPT0gY3VycmVudF9jcmVkKCkgJiYgc2VnbWVu dF9lcShnZXRfZnMoKSwgVVNFUl9EUyk7Cit9CisKICNlbmRpZiAvKiBfUkRNQV9JQl9IICovCmRp ZmYgLS1naXQgYS9rZXJuZWwvZnV0ZXguYyBiL2tlcm5lbC9mdXRleC5jCmluZGV4IDEyYjVmNTI2 NDMyOC4uYWY2N2QzZWFmMjMyIDEwMDY0NAotLS0gYS9rZXJuZWwvZnV0ZXguYworKysgYi9rZXJu ZWwvZnV0ZXguYwpAQCAtMTM5OCw4ICsxMzk4LDggQEAgdm9pZCByZXF1ZXVlX2Z1dGV4KHN0cnVj dCBmdXRleF9xICpxLCBzdHJ1Y3QgZnV0ZXhfaGFzaF9idWNrZXQgKmhiMSwKIAlpZiAobGlrZWx5 KCZoYjEtPmNoYWluICE9ICZoYjItPmNoYWluKSkgewogCQlwbGlzdF9kZWwoJnEtPmxpc3QsICZo YjEtPmNoYWluKTsKIAkJaGJfd2FpdGVyc19kZWMoaGIxKTsKLQkJcGxpc3RfYWRkKCZxLT5saXN0 LCAmaGIyLT5jaGFpbik7CiAJCWhiX3dhaXRlcnNfaW5jKGhiMik7CisJCXBsaXN0X2FkZCgmcS0+ bGlzdCwgJmhiMi0+Y2hhaW4pOwogCQlxLT5sb2NrX3B0ciA9ICZoYjItPmxvY2s7CiAJfQogCWdl dF9mdXRleF9rZXlfcmVmcyhrZXkyKTsKZGlmZiAtLWdpdCBhL2tlcm5lbC9zY2hlZC9jb3JlLmMg Yi9rZXJuZWwvc2NoZWQvY29yZS5jCmluZGV4IDljY2UwMjhhNzdhNC4uOGNiZjY4ZTY5ODVkIDEw MDY0NAotLS0gYS9rZXJuZWwvc2NoZWQvY29yZS5jCisrKyBiL2tlcm5lbC9zY2hlZC9jb3JlLmMK QEAgLTk5OSw2ICs5OTksMTMgQEAgaW5saW5lIGludCB0YXNrX2N1cnIoY29uc3Qgc3RydWN0IHRh c2tfc3RydWN0ICpwKQogCXJldHVybiBjcHVfY3Vycih0YXNrX2NwdShwKSkgPT0gcDsKIH0KIAor LyoKKyAqIHN3aXRjaGVkX2Zyb20sIHN3aXRjaGVkX3RvIGFuZCBwcmlvX2NoYW5nZWQgbXVzdCBf Tk9UXyBkcm9wIHJxLT5sb2NrLAorICogdXNlIHRoZSBiYWxhbmNlX2NhbGxiYWNrIGxpc3QgaWYg eW91IHdhbnQgYmFsYW5jaW5nLgorICoKKyAqIHRoaXMgbWVhbnMgYW55IGNhbGwgdG8gY2hlY2tf Y2xhc3NfY2hhbmdlZCgpIG11c3QgYmUgZm9sbG93ZWQgYnkgYSBjYWxsIHRvCisgKiBiYWxhbmNl X2NhbGxiYWNrKCkuCisgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCBjaGVja19jbGFzc19jaGFuZ2Vk KHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwKIAkJCQkgICAgICAgY29uc3Qg c3RydWN0IHNjaGVkX2NsYXNzICpwcmV2X2NsYXNzLAogCQkJCSAgICAgICBpbnQgb2xkcHJpbykK QEAgLTE1MDAsOCArMTUwNywxMiBAQCB0dHd1X2RvX3dha2V1cChzdHJ1Y3QgcnEgKnJxLCBzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnAsIGludCB3YWtlX2ZsYWdzKQogCiAJcC0+c3RhdGUgPSBUQVNLX1JV Tk5JTkc7CiAjaWZkZWYgQ09ORklHX1NNUAotCWlmIChwLT5zY2hlZF9jbGFzcy0+dGFza193b2tl bikKKwlpZiAocC0+c2NoZWRfY2xhc3MtPnRhc2tfd29rZW4pIHsKKwkJLyoKKwkJICogWFhYIGNh biBkcm9wIHJxLT5sb2NrOyBtb3N0IGxpa2VseSBvay4KKwkJICovCiAJCXAtPnNjaGVkX2NsYXNz LT50YXNrX3dva2VuKHJxLCBwKTsKKwl9CiAKIAlpZiAocnEtPmlkbGVfc3RhbXApIHsKIAkJdTY0 IGRlbHRhID0gcnFfY2xvY2socnEpIC0gcnEtPmlkbGVfc3RhbXA7CkBAIC0yMjU4LDIzICsyMjY5 LDM1IEBAIHN0YXRpYyB2b2lkIGZpbmlzaF90YXNrX3N3aXRjaChzdHJ1Y3QgcnEgKnJxLCBzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnByZXYpCiAjaWZkZWYgQ09ORklHX1NNUAogCiAvKiBycS0+bG9jayBp cyBOT1QgaGVsZCwgYnV0IHByZWVtcHRpb24gaXMgZGlzYWJsZWQgKi8KLXN0YXRpYyBpbmxpbmUg dm9pZCBwb3N0X3NjaGVkdWxlKHN0cnVjdCBycSAqcnEpCitzdGF0aWMgdm9pZCBfX2JhbGFuY2Vf Y2FsbGJhY2soc3RydWN0IHJxICpycSkKIHsKLQlpZiAocnEtPnBvc3Rfc2NoZWR1bGUpIHsKLQkJ dW5zaWduZWQgbG9uZyBmbGFnczsKKwlzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAqaGVhZCwgKm5leHQ7 CisJdm9pZCAoKmZ1bmMpKHN0cnVjdCBycSAqcnEpOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAK LQkJcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZycS0+bG9jaywgZmxhZ3MpOwotCQlpZiAocnEtPmN1 cnItPnNjaGVkX2NsYXNzLT5wb3N0X3NjaGVkdWxlKQotCQkJcnEtPmN1cnItPnNjaGVkX2NsYXNz LT5wb3N0X3NjaGVkdWxlKHJxKTsKLQkJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJxLT5s b2NrLCBmbGFncyk7CisJcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZycS0+bG9jaywgZmxhZ3MpOwor CWhlYWQgPSBycS0+YmFsYW5jZV9jYWxsYmFjazsKKwlycS0+YmFsYW5jZV9jYWxsYmFjayA9IE5V TEw7CisJd2hpbGUgKGhlYWQpIHsKKwkJZnVuYyA9ICh2b2lkICgqKShzdHJ1Y3QgcnEgKikpaGVh ZC0+ZnVuYzsKKwkJbmV4dCA9IGhlYWQtPm5leHQ7CisJCWhlYWQtPm5leHQgPSBOVUxMOworCQlo ZWFkID0gbmV4dDsKIAotCQlycS0+cG9zdF9zY2hlZHVsZSA9IDA7CisJCWZ1bmMocnEpOwogCX0K KwlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcnEtPmxvY2ssIGZsYWdzKTsKK30KKworc3Rh dGljIGlubGluZSB2b2lkIGJhbGFuY2VfY2FsbGJhY2soc3RydWN0IHJxICpycSkKK3sKKwlpZiAo dW5saWtlbHkocnEtPmJhbGFuY2VfY2FsbGJhY2spKQorCQlfX2JhbGFuY2VfY2FsbGJhY2socnEp OwogfQogCiAjZWxzZQogCi1zdGF0aWMgaW5saW5lIHZvaWQgcG9zdF9zY2hlZHVsZShzdHJ1Y3Qg cnEgKnJxKQorc3RhdGljIGlubGluZSB2b2lkIGJhbGFuY2VfY2FsbGJhY2soc3RydWN0IHJxICpy cSkKIHsKIH0KIApAQCAtMjI5NSw3ICsyMzE4LDcgQEAgYXNtbGlua2FnZSBfX3Zpc2libGUgdm9p ZCBzY2hlZHVsZV90YWlsKHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldikKIAkgKiBGSVhNRTogZG8g d2UgbmVlZCB0byB3b3JyeSBhYm91dCBycSBiZWluZyBpbnZhbGlkYXRlZCBieSB0aGUKIAkgKiB0 YXNrX3N3aXRjaD8KIAkgKi8KLQlwb3N0X3NjaGVkdWxlKHJxKTsKKwliYWxhbmNlX2NhbGxiYWNr KHJxKTsKIAogI2lmZGVmIF9fQVJDSF9XQU5UX1VOTE9DS0VEX0NUWFNXCiAJLyogSW4gdGhpcyBj YXNlLCBmaW5pc2hfdGFza19zd2l0Y2ggZG9lcyBub3QgcmVlbmFibGUgcHJlZW1wdGlvbiAqLwpA QCAtMjgyMiw3ICsyODQ1LDcgQEAgbmVlZF9yZXNjaGVkOgogCX0gZWxzZQogCQlyYXdfc3Bpbl91 bmxvY2tfaXJxKCZycS0+bG9jayk7CiAKLQlwb3N0X3NjaGVkdWxlKHJxKTsKKwliYWxhbmNlX2Nh bGxiYWNrKHJxKTsKIAogCXNjaGVkX3ByZWVtcHRfZW5hYmxlX25vX3Jlc2NoZWQoKTsKIAlpZiAo bmVlZF9yZXNjaGVkKCkpCkBAIC0zMDQwLDcgKzMwNjMsMTEgQEAgdm9pZCBydF9tdXRleF9zZXRw cmlvKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgaW50IHByaW8pCiAKIAljaGVja19jbGFzc19jaGFu Z2VkKHJxLCBwLCBwcmV2X2NsYXNzLCBvbGRwcmlvKTsKIG91dF91bmxvY2s6CisJcHJlZW1wdF9k aXNhYmxlKCk7IC8qIGF2b2lkIHJxIGZyb20gZ29pbmcgYXdheSBvbiB1cyAqLwogCV9fdGFza19y cV91bmxvY2socnEpOworCisJYmFsYW5jZV9jYWxsYmFjayhycSk7CisJcHJlZW1wdF9lbmFibGUo KTsKIH0KICNlbmRpZgogCkBAIC0zNTYzLDEwICszNTkwLDE3IEBAIGNoYW5nZToKIAl9CiAKIAlj aGVja19jbGFzc19jaGFuZ2VkKHJxLCBwLCBwcmV2X2NsYXNzLCBvbGRwcmlvKTsKKwlwcmVlbXB0 X2Rpc2FibGUoKTsgLyogYXZvaWQgcnEgZnJvbSBnb2luZyBhd2F5IG9uIHVzICovCiAJdGFza19y cV91bmxvY2socnEsIHAsICZmbGFncyk7CiAKIAlydF9tdXRleF9hZGp1c3RfcGkocCk7CiAKKwkv KgorCSAqIFJ1biBiYWxhbmNlIGNhbGxiYWNrcyBhZnRlciB3ZSd2ZSBhZGp1c3RlZCB0aGUgUEkg Y2hhaW4uCisJICovCisJYmFsYW5jZV9jYWxsYmFjayhycSk7CisJcHJlZW1wdF9lbmFibGUoKTsK KwogCXJldHVybiAwOwogfQogCkBAIC03MDAxLDcgKzcwMzUsNyBAQCB2b2lkIF9faW5pdCBzY2hl ZF9pbml0KHZvaWQpCiAJCXJxLT5zZCA9IE5VTEw7CiAJCXJxLT5yZCA9IE5VTEw7CiAJCXJxLT5j cHVfY2FwYWNpdHkgPSBTQ0hFRF9DQVBBQ0lUWV9TQ0FMRTsKLQkJcnEtPnBvc3Rfc2NoZWR1bGUg PSAwOworCQlycS0+YmFsYW5jZV9jYWxsYmFjayA9IE5VTEw7CiAJCXJxLT5hY3RpdmVfYmFsYW5j ZSA9IDA7CiAJCXJxLT5uZXh0X2JhbGFuY2UgPSBqaWZmaWVzOwogCQlycS0+cHVzaF9jcHUgPSAw OwpkaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkL2RlYWRsaW5lLmMgYi9rZXJuZWwvc2NoZWQvZGVh ZGxpbmUuYwppbmRleCBkMTBlNDA4NjJmN2YuLmFiOGI5MTdjZThmNiAxMDA2NDQKLS0tIGEva2Vy bmVsL3NjaGVkL2RlYWRsaW5lLmMKKysrIGIva2VybmVsL3NjaGVkL2RlYWRsaW5lLmMKQEAgLTIx Myw5ICsyMTMsMjMgQEAgc3RhdGljIGlubGluZSBib29sIG5lZWRfcHVsbF9kbF90YXNrKHN0cnVj dCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldikKIAlyZXR1cm4gZGxfdGFzayhwcmV2 KTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNldF9wb3N0X3NjaGVkdWxlKHN0cnVjdCBycSAq cnEpCitzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IGNhbGxiYWNrX2hlYWQsIGRsX3B1c2hf aGVhZCk7CitzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IGNhbGxiYWNrX2hlYWQsIGRsX3B1 bGxfaGVhZCk7CisKK3N0YXRpYyB2b2lkIHB1c2hfZGxfdGFza3Moc3RydWN0IHJxICopOworc3Rh dGljIHZvaWQgcHVsbF9kbF90YXNrKHN0cnVjdCBycSAqKTsKKworc3RhdGljIGlubGluZSB2b2lk IHF1ZXVlX3B1c2hfdGFza3Moc3RydWN0IHJxICpycSkKK3sKKwlpZiAoIWhhc19wdXNoYWJsZV9k bF90YXNrcyhycSkpCisJCXJldHVybjsKKworCXF1ZXVlX2JhbGFuY2VfY2FsbGJhY2socnEsICZw ZXJfY3B1KGRsX3B1c2hfaGVhZCwgcnEtPmNwdSksIHB1c2hfZGxfdGFza3MpOworfQorCitzdGF0 aWMgaW5saW5lIHZvaWQgcXVldWVfcHVsbF90YXNrKHN0cnVjdCBycSAqcnEpCiB7Ci0JcnEtPnBv c3Rfc2NoZWR1bGUgPSBoYXNfcHVzaGFibGVfZGxfdGFza3MocnEpOworCXF1ZXVlX2JhbGFuY2Vf Y2FsbGJhY2socnEsICZwZXJfY3B1KGRsX3B1bGxfaGVhZCwgcnEtPmNwdSksIHB1bGxfZGxfdGFz ayk7CiB9CiAKICNlbHNlCkBAIC0yNDUsMTIgKzI1OSwxNSBAQCBzdGF0aWMgaW5saW5lIGJvb2wg bmVlZF9wdWxsX2RsX3Rhc2soc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2 KQogCXJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgcHVsbF9kbF90YXNrKHN0 cnVjdCBycSAqcnEpCitzdGF0aWMgaW5saW5lIHZvaWQgcHVsbF9kbF90YXNrKHN0cnVjdCBycSAq cnEpCit7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBxdWV1ZV9wdXNoX3Rhc2tzKHN0cnVjdCBy cSAqcnEpCiB7Ci0JcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfcG9zdF9z Y2hlZHVsZShzdHJ1Y3QgcnEgKnJxKQorc3RhdGljIGlubGluZSB2b2lkIHF1ZXVlX3B1bGxfdGFz ayhzdHJ1Y3QgcnEgKnJxKQogewogfQogI2VuZGlmIC8qIENPTkZJR19TTVAgKi8KQEAgLTk1MCw4 ICs5NjcsNiBAQCBzdGF0aWMgdm9pZCBjaGVja19wcmVlbXB0X2VxdWFsX2RsKHN0cnVjdCBycSAq cnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKIAlyZXNjaGVkX3Rhc2socnEtPmN1cnIpOwogfQog Ci1zdGF0aWMgaW50IHB1bGxfZGxfdGFzayhzdHJ1Y3QgcnEgKnRoaXNfcnEpOwotCiAjZW5kaWYg LyogQ09ORklHX1NNUCAqLwogCiAvKgpAQCAtMTA0Myw3ICsxMDU4LDcgQEAgc3RydWN0IHRhc2tf c3RydWN0ICpwaWNrX25leHRfdGFza19kbChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnByZXYpCiAJCXN0YXJ0X2hydGlja19kbChycSwgcCk7CiAjZW5kaWYKIAotCXNldF9wb3N0 X3NjaGVkdWxlKHJxKTsKKwlxdWV1ZV9wdXNoX3Rhc2tzKHJxKTsKIAogCXJldHVybiBwOwogfQpA QCAtMTM3MywxNSArMTM4OCwxNiBAQCBzdGF0aWMgdm9pZCBwdXNoX2RsX3Rhc2tzKHN0cnVjdCBy cSAqcnEpCiAJCTsKIH0KIAotc3RhdGljIGludCBwdWxsX2RsX3Rhc2soc3RydWN0IHJxICp0aGlz X3JxKQorc3RhdGljIHZvaWQgcHVsbF9kbF90YXNrKHN0cnVjdCBycSAqdGhpc19ycSkKIHsKLQlp bnQgdGhpc19jcHUgPSB0aGlzX3JxLT5jcHUsIHJldCA9IDAsIGNwdTsKKwlpbnQgdGhpc19jcHUg PSB0aGlzX3JxLT5jcHUsIGNwdTsKIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnA7CisJYm9vbCByZXNj aGVkID0gZmFsc2U7CiAJc3RydWN0IHJxICpzcmNfcnE7CiAJdTY0IGRtaW4gPSBMT05HX01BWDsK IAogCWlmIChsaWtlbHkoIWRsX292ZXJsb2FkZWQodGhpc19ycSkpKQotCQlyZXR1cm4gMDsKKwkJ cmV0dXJuOwogCiAJLyoKIAkgKiBNYXRjaCB0aGUgYmFycmllciBmcm9tIGRsX3NldF9vdmVybG9h ZGVkOyB0aGlzIGd1YXJhbnRlZXMgdGhhdCBpZiB3ZQpAQCAtMTQzNiw3ICsxNDUyLDcgQEAgc3Rh dGljIGludCBwdWxsX2RsX3Rhc2soc3RydWN0IHJxICp0aGlzX3JxKQogCQkJCQkgICBzcmNfcnEt PmN1cnItPmRsLmRlYWRsaW5lKSkKIAkJCQlnb3RvIHNraXA7CiAKLQkJCXJldCA9IDE7CisJCQly ZXNjaGVkID0gdHJ1ZTsKIAogCQkJZGVhY3RpdmF0ZV90YXNrKHNyY19ycSwgcCwgMCk7CiAJCQlz ZXRfdGFza19jcHUocCwgdGhpc19jcHUpOwpAQCAtMTQ0OSwxMiArMTQ2NSw4IEBAIHNraXA6CiAJ CWRvdWJsZV91bmxvY2tfYmFsYW5jZSh0aGlzX3JxLCBzcmNfcnEpOwogCX0KIAotCXJldHVybiBy ZXQ7Ci19Ci0KLXN0YXRpYyB2b2lkIHBvc3Rfc2NoZWR1bGVfZGwoc3RydWN0IHJxICpycSkKLXsK LQlwdXNoX2RsX3Rhc2tzKHJxKTsKKwlpZiAocmVzY2hlZCkKKwkJcmVzY2hlZF90YXNrKHRoaXNf cnEtPmN1cnIpOwogfQogCiAvKgpAQCAtMTU1OSw3ICsxNTcxLDcgQEAgc3RhdGljIHZvaWQgc3dp dGNoZWRfZnJvbV9kbChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCiAJICog ZnJvbSBhbiBvdmVybG9hZGVkIGNwdSwgaWYgYW55LgogCSAqLwogCWlmICghcnEtPmRsLmRsX25y X3J1bm5pbmcpCi0JCXB1bGxfZGxfdGFzayhycSk7CisJCXF1ZXVlX3B1bGxfdGFzayhycSk7CiAj ZW5kaWYKIH0KIApAQCAtMTU2OSw4ICsxNTgxLDYgQEAgc3RhdGljIHZvaWQgc3dpdGNoZWRfZnJv bV9kbChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCiAgKi8KIHN0YXRpYyB2 b2lkIHN3aXRjaGVkX3RvX2RsKHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkK IHsKLQlpbnQgY2hlY2tfcmVzY2hlZCA9IDE7Ci0KIAkvKgogCSAqIElmIHAgaXMgdGhyb3R0bGVk LCBkb24ndCBjb25zaWRlciB0aGUgcG9zc2liaWxpdHkKIAkgKiBvZiBwcmVlbXB0aW5nIHJxLT5j dXJyLCB0aGUgY2hlY2sgd2lsbCBiZSBkb25lIHJpZ2h0CkBAIC0xNTgxLDEyICsxNTkxLDEyIEBA IHN0YXRpYyB2b2lkIHN3aXRjaGVkX3RvX2RsKHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0 cnVjdCAqcCkKIAogCWlmIChwLT5vbl9ycSAmJiBycS0+Y3VyciAhPSBwKSB7CiAjaWZkZWYgQ09O RklHX1NNUAotCQlpZiAocnEtPmRsLm92ZXJsb2FkZWQgJiYgcHVzaF9kbF90YXNrKHJxKSAmJiBy cSAhPSB0YXNrX3JxKHApKQotCQkJLyogT25seSByZXNjaGVkdWxlIGlmIHB1c2hpbmcgZmFpbGVk ICovCi0JCQljaGVja19yZXNjaGVkID0gMDsKLSNlbmRpZiAvKiBDT05GSUdfU01QICovCi0JCWlm IChjaGVja19yZXNjaGVkICYmIHRhc2tfaGFzX2RsX3BvbGljeShycS0+Y3VycikpCisJCWlmIChy cS0+ZGwub3ZlcmxvYWRlZCkKKwkJCXF1ZXVlX3B1c2hfdGFza3MocnEpOworI2Vsc2UKKwkJaWYg KHRhc2tfaGFzX2RsX3BvbGljeShycS0+Y3VycikpCiAJCQljaGVja19wcmVlbXB0X2N1cnJfZGwo cnEsIHAsIDApOworI2VuZGlmIC8qIENPTkZJR19TTVAgKi8KIAl9CiB9CiAKQEAgLTE2MDYsMTUg KzE2MTYsMTQgQEAgc3RhdGljIHZvaWQgcHJpb19jaGFuZ2VkX2RsKHN0cnVjdCBycSAqcnEsIHN0 cnVjdCB0YXNrX3N0cnVjdCAqcCwKIAkJICogb3IgbG93ZXJpbmcgaXRzIHByaW8sIHNvLi4uCiAJ CSAqLwogCQlpZiAoIXJxLT5kbC5vdmVybG9hZGVkKQotCQkJcHVsbF9kbF90YXNrKHJxKTsKKwkJ CXF1ZXVlX3B1bGxfdGFzayhycSk7CiAKIAkJLyoKIAkJICogSWYgd2Ugbm93IGhhdmUgYSBlYXJs aWVyIGRlYWRsaW5lIHRhc2sgdGhhbiBwLAogCQkgKiB0aGVuIHJlc2NoZWR1bGUsIHByb3ZpZGVk IHAgaXMgc3RpbGwgb24gdGhpcwogCQkgKiBydW5xdWV1ZS4KIAkJICovCi0JCWlmIChkbF90aW1l X2JlZm9yZShycS0+ZGwuZWFybGllc3RfZGwuY3VyciwgcC0+ZGwuZGVhZGxpbmUpICYmCi0JCSAg ICBycS0+Y3VyciA9PSBwKQorCQlpZiAoZGxfdGltZV9iZWZvcmUocnEtPmRsLmVhcmxpZXN0X2Rs LmN1cnIsIHAtPmRsLmRlYWRsaW5lKSkKIAkJCXJlc2NoZWRfdGFzayhwKTsKICNlbHNlCiAJCS8q CkBAIC0xNjQ0LDcgKzE2NTMsNiBAQCBjb25zdCBzdHJ1Y3Qgc2NoZWRfY2xhc3MgZGxfc2NoZWRf Y2xhc3MgPSB7CiAJLnNldF9jcHVzX2FsbG93ZWQgICAgICAgPSBzZXRfY3B1c19hbGxvd2VkX2Rs LAogCS5ycV9vbmxpbmUgICAgICAgICAgICAgID0gcnFfb25saW5lX2RsLAogCS5ycV9vZmZsaW5l ICAgICAgICAgICAgID0gcnFfb2ZmbGluZV9kbCwKLQkucG9zdF9zY2hlZHVsZQkJPSBwb3N0X3Nj aGVkdWxlX2RsLAogCS50YXNrX3dva2VuCQk9IHRhc2tfd29rZW5fZGwsCiAjZW5kaWYKIApkaWZm IC0tZ2l0IGEva2VybmVsL3NjaGVkL3J0LmMgYi9rZXJuZWwvc2NoZWQvcnQuYwppbmRleCA1ZDcy MGFjOTYyNDYuLmUwZTViMzMxNGM1YiAxMDA2NDQKLS0tIGEva2VybmVsL3NjaGVkL3J0LmMKKysr IGIva2VybmVsL3NjaGVkL3J0LmMKQEAgLTI0NCw3ICsyNDQsNyBAQCBpbnQgYWxsb2NfcnRfc2No ZWRfZ3JvdXAoc3RydWN0IHRhc2tfZ3JvdXAgKnRnLCBzdHJ1Y3QgdGFza19ncm91cCAqcGFyZW50 KQogCiAjaWZkZWYgQ09ORklHX1NNUAogCi1zdGF0aWMgaW50IHB1bGxfcnRfdGFzayhzdHJ1Y3Qg cnEgKnRoaXNfcnEpOworc3RhdGljIHZvaWQgcHVsbF9ydF90YXNrKHN0cnVjdCBycSAqdGhpc19y cSk7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBuZWVkX3B1bGxfcnRfdGFzayhzdHJ1Y3QgcnEgKnJx LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByZXYpCiB7CkBAIC0zMzgsMTMgKzMzOCwyMyBAQCBzdGF0 aWMgaW5saW5lIGludCBoYXNfcHVzaGFibGVfdGFza3Moc3RydWN0IHJxICpycSkKIAlyZXR1cm4g IXBsaXN0X2hlYWRfZW1wdHkoJnJxLT5ydC5wdXNoYWJsZV90YXNrcyk7CiB9CiAKLXN0YXRpYyBp bmxpbmUgdm9pZCBzZXRfcG9zdF9zY2hlZHVsZShzdHJ1Y3QgcnEgKnJxKQorc3RhdGljIERFRklO RV9QRVJfQ1BVKHN0cnVjdCBjYWxsYmFja19oZWFkLCBydF9wdXNoX2hlYWQpOworc3RhdGljIERF RklORV9QRVJfQ1BVKHN0cnVjdCBjYWxsYmFja19oZWFkLCBydF9wdWxsX2hlYWQpOworCitzdGF0 aWMgdm9pZCBwdXNoX3J0X3Rhc2tzKHN0cnVjdCBycSAqKTsKK3N0YXRpYyB2b2lkIHB1bGxfcnRf dGFzayhzdHJ1Y3QgcnEgKik7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBxdWV1ZV9wdXNoX3Rhc2tz KHN0cnVjdCBycSAqcnEpCiB7Ci0JLyoKLQkgKiBXZSBkZXRlY3QgdGhpcyBzdGF0ZSBoZXJlIHNv IHRoYXQgd2UgY2FuIGF2b2lkIHRha2luZyB0aGUgUlEKLQkgKiBsb2NrIGFnYWluIGxhdGVyIGlm IHRoZXJlIGlzIG5vIG5lZWQgdG8gcHVzaAotCSAqLwotCXJxLT5wb3N0X3NjaGVkdWxlID0gaGFz X3B1c2hhYmxlX3Rhc2tzKHJxKTsKKwlpZiAoIWhhc19wdXNoYWJsZV90YXNrcyhycSkpCisJCXJl dHVybjsKKworCXF1ZXVlX2JhbGFuY2VfY2FsbGJhY2socnEsICZwZXJfY3B1KHJ0X3B1c2hfaGVh ZCwgcnEtPmNwdSksIHB1c2hfcnRfdGFza3MpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgcXVl dWVfcHVsbF90YXNrKHN0cnVjdCBycSAqcnEpCit7CisJcXVldWVfYmFsYW5jZV9jYWxsYmFjayhy cSwgJnBlcl9jcHUocnRfcHVsbF9oZWFkLCBycS0+Y3B1KSwgcHVsbF9ydF90YXNrKTsKIH0KIAog c3RhdGljIHZvaWQgZW5xdWV1ZV9wdXNoYWJsZV90YXNrKHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0 YXNrX3N0cnVjdCAqcCkKQEAgLTM5NiwxMiArNDA2LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBu ZWVkX3B1bGxfcnRfdGFzayhzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByZXYp CiAJcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBwdWxsX3J0X3Rhc2soc3Ry dWN0IHJxICp0aGlzX3JxKQorc3RhdGljIGlubGluZSB2b2lkIHB1bGxfcnRfdGFzayhzdHJ1Y3Qg cnEgKnRoaXNfcnEpCiB7Ci0JcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRf cG9zdF9zY2hlZHVsZShzdHJ1Y3QgcnEgKnJxKQorc3RhdGljIGlubGluZSB2b2lkIHF1ZXVlX3B1 c2hfdGFza3Moc3RydWN0IHJxICpycSkKIHsKIH0KICNlbmRpZiAvKiBDT05GSUdfU01QICovCkBA IC0xNDcyLDcgKzE0ODEsNyBAQCBwaWNrX25leHRfdGFza19ydChzdHJ1Y3QgcnEgKnJxLCBzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnByZXYpCiAJaWYgKHApCiAJCWRlcXVldWVfcHVzaGFibGVfdGFzayhy cSwgcCk7CiAKLQlzZXRfcG9zdF9zY2hlZHVsZShycSk7CisJcXVldWVfcHVzaF90YXNrcyhycSk7 CiAKIAlyZXR1cm4gcDsKIH0KQEAgLTE3NjksMTQgKzE3NzgsMTUgQEAgc3RhdGljIHZvaWQgcHVz aF9ydF90YXNrcyhzdHJ1Y3QgcnEgKnJxKQogCQk7CiB9CiAKLXN0YXRpYyBpbnQgcHVsbF9ydF90 YXNrKHN0cnVjdCBycSAqdGhpc19ycSkKK3N0YXRpYyB2b2lkIHB1bGxfcnRfdGFzayhzdHJ1Y3Qg cnEgKnRoaXNfcnEpCiB7Ci0JaW50IHRoaXNfY3B1ID0gdGhpc19ycS0+Y3B1LCByZXQgPSAwLCBj cHU7CisJaW50IHRoaXNfY3B1ID0gdGhpc19ycS0+Y3B1LCBjcHU7CisJYm9vbCByZXNjaGVkID0g ZmFsc2U7CiAJc3RydWN0IHRhc2tfc3RydWN0ICpwOwogCXN0cnVjdCBycSAqc3JjX3JxOwogCiAJ aWYgKGxpa2VseSghcnRfb3ZlcmxvYWRlZCh0aGlzX3JxKSkpCi0JCXJldHVybiAwOworCQlyZXR1 cm47CiAKIAkvKgogCSAqIE1hdGNoIHRoZSBiYXJyaWVyIGZyb20gcnRfc2V0X292ZXJsb2FkZWQ7 IHRoaXMgZ3VhcmFudGVlcyB0aGF0IGlmIHdlCkBAIC0xODMzLDcgKzE4NDMsNyBAQCBzdGF0aWMg aW50IHB1bGxfcnRfdGFzayhzdHJ1Y3QgcnEgKnRoaXNfcnEpCiAJCQlpZiAocC0+cHJpbyA8IHNy Y19ycS0+Y3Vyci0+cHJpbykKIAkJCQlnb3RvIHNraXA7CiAKLQkJCXJldCA9IDE7CisJCQlyZXNj aGVkID0gdHJ1ZTsKIAogCQkJZGVhY3RpdmF0ZV90YXNrKHNyY19ycSwgcCwgMCk7CiAJCQlzZXRf dGFza19jcHUocCwgdGhpc19jcHUpOwpAQCAtMTg0OSwxMiArMTg1OSw4IEBAIHNraXA6CiAJCWRv dWJsZV91bmxvY2tfYmFsYW5jZSh0aGlzX3JxLCBzcmNfcnEpOwogCX0KIAotCXJldHVybiByZXQ7 Ci19Ci0KLXN0YXRpYyB2b2lkIHBvc3Rfc2NoZWR1bGVfcnQoc3RydWN0IHJxICpycSkKLXsKLQlw dXNoX3J0X3Rhc2tzKHJxKTsKKwlpZiAocmVzY2hlZCkKKwkJcmVzY2hlZF90YXNrKHRoaXNfcnEt PmN1cnIpOwogfQogCiAvKgpAQCAtMTk1MCw4ICsxOTU2LDcgQEAgc3RhdGljIHZvaWQgc3dpdGNo ZWRfZnJvbV9ydChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCiAJaWYgKCFw LT5vbl9ycSB8fCBycS0+cnQucnRfbnJfcnVubmluZykKIAkJcmV0dXJuOwogCi0JaWYgKHB1bGxf cnRfdGFzayhycSkpCi0JCXJlc2NoZWRfdGFzayhycS0+Y3Vycik7CisJcXVldWVfcHVsbF90YXNr KHJxKTsKIH0KIAogdm9pZCBfX2luaXQgaW5pdF9zY2hlZF9ydF9jbGFzcyh2b2lkKQpAQCAtMTk3 Miw4ICsxOTc3LDYgQEAgdm9pZCBfX2luaXQgaW5pdF9zY2hlZF9ydF9jbGFzcyh2b2lkKQogICov CiBzdGF0aWMgdm9pZCBzd2l0Y2hlZF90b19ydChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19z dHJ1Y3QgKnApCiB7Ci0JaW50IGNoZWNrX3Jlc2NoZWQgPSAxOwotCiAJLyoKIAkgKiBJZiB3ZSBh cmUgYWxyZWFkeSBydW5uaW5nLCB0aGVuIHRoZXJlJ3Mgbm90aGluZwogCSAqIHRoYXQgbmVlZHMg dG8gYmUgZG9uZS4gQnV0IGlmIHdlIGFyZSBub3QgcnVubmluZwpAQCAtMTk4MywxMyArMTk4Niwx MiBAQCBzdGF0aWMgdm9pZCBzd2l0Y2hlZF90b19ydChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnApCiAJICovCiAJaWYgKHAtPm9uX3JxICYmIHJxLT5jdXJyICE9IHApIHsKICNp ZmRlZiBDT05GSUdfU01QCi0JCWlmIChwLT5ucl9jcHVzX2FsbG93ZWQgPiAxICYmIHJxLT5ydC5v dmVybG9hZGVkICYmCi0JCSAgICAvKiBEb24ndCByZXNjaGVkIGlmIHdlIGNoYW5nZWQgcnVucXVl dWVzICovCi0JCSAgICBwdXNoX3J0X3Rhc2socnEpICYmIHJxICE9IHRhc2tfcnEocCkpCi0JCQlj aGVja19yZXNjaGVkID0gMDsKLSNlbmRpZiAvKiBDT05GSUdfU01QICovCi0JCWlmIChjaGVja19y ZXNjaGVkICYmIHAtPnByaW8gPCBycS0+Y3Vyci0+cHJpbykKKwkJaWYgKHAtPm5yX2NwdXNfYWxs b3dlZCA+IDEgJiYgcnEtPnJ0Lm92ZXJsb2FkZWQpCisJCQlxdWV1ZV9wdXNoX3Rhc2tzKHJxKTsK KyNlbHNlCisJCWlmIChwLT5wcmlvIDwgcnEtPmN1cnItPnByaW8pCiAJCQlyZXNjaGVkX3Rhc2so cnEtPmN1cnIpOworI2VuZGlmIC8qIENPTkZJR19TTVAgKi8KIAl9CiB9CiAKQEAgLTIwMTAsMTQg KzIwMTIsMTMgQEAgcHJpb19jaGFuZ2VkX3J0KHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0 cnVjdCAqcCwgaW50IG9sZHByaW8pCiAJCSAqIG1heSBuZWVkIHRvIHB1bGwgdGFza3MgdG8gdGhp cyBydW5xdWV1ZS4KIAkJICovCiAJCWlmIChvbGRwcmlvIDwgcC0+cHJpbykKLQkJCXB1bGxfcnRf dGFzayhycSk7CisJCQlxdWV1ZV9wdWxsX3Rhc2socnEpOworCiAJCS8qCiAJCSAqIElmIHRoZXJl J3MgYSBoaWdoZXIgcHJpb3JpdHkgdGFzayB3YWl0aW5nIHRvIHJ1bgotCQkgKiB0aGVuIHJlc2No ZWR1bGUuIE5vdGUsIHRoZSBhYm92ZSBwdWxsX3J0X3Rhc2sKLQkJICogY2FuIHJlbGVhc2UgdGhl IHJxIGxvY2sgYW5kIHAgY291bGQgbWlncmF0ZS4KLQkJICogT25seSByZXNjaGVkdWxlIGlmIHAg aXMgc3RpbGwgb24gdGhlIHNhbWUgcnVucXVldWUuCisJCSAqIHRoZW4gcmVzY2hlZHVsZS4KIAkJ ICovCi0JCWlmIChwLT5wcmlvID4gcnEtPnJ0LmhpZ2hlc3RfcHJpby5jdXJyICYmIHJxLT5jdXJy ID09IHApCisJCWlmIChwLT5wcmlvID4gcnEtPnJ0LmhpZ2hlc3RfcHJpby5jdXJyKQogCQkJcmVz Y2hlZF90YXNrKHApOwogI2Vsc2UKIAkJLyogRm9yIFVQIHNpbXBseSByZXNjaGVkIG9uIGRyb3Ag b2YgcHJpbyAqLwpAQCAtMjEyOCw3ICsyMTI5LDYgQEAgY29uc3Qgc3RydWN0IHNjaGVkX2NsYXNz IHJ0X3NjaGVkX2NsYXNzID0gewogCS5zZXRfY3B1c19hbGxvd2VkICAgICAgID0gc2V0X2NwdXNf YWxsb3dlZF9ydCwKIAkucnFfb25saW5lICAgICAgICAgICAgICA9IHJxX29ubGluZV9ydCwKIAku cnFfb2ZmbGluZSAgICAgICAgICAgICA9IHJxX29mZmxpbmVfcnQsCi0JLnBvc3Rfc2NoZWR1bGUJ CT0gcG9zdF9zY2hlZHVsZV9ydCwKIAkudGFza193b2tlbgkJPSB0YXNrX3dva2VuX3J0LAogCS5z d2l0Y2hlZF9mcm9tCQk9IHN3aXRjaGVkX2Zyb21fcnQsCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2tl cm5lbC9zY2hlZC9zY2hlZC5oIGIva2VybmVsL3NjaGVkL3NjaGVkLmgKaW5kZXggOTQzNTNiMTZj ZmU1Li4zYjQ1YmExOGY3ZjQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9zY2hlZC9zY2hlZC5oCisrKyBi L2tlcm5lbC9zY2hlZC9zY2hlZC5oCkBAIC01NjksOSArNTY5LDEwIEBAIHN0cnVjdCBycSB7CiAK IAl1bnNpZ25lZCBsb25nIGNwdV9jYXBhY2l0eTsKIAorCXN0cnVjdCBjYWxsYmFja19oZWFkICpi YWxhbmNlX2NhbGxiYWNrOworCiAJdW5zaWduZWQgY2hhciBpZGxlX2JhbGFuY2U7CiAJLyogRm9y IGFjdGl2ZSBiYWxhbmNpbmcgKi8KLQlpbnQgcG9zdF9zY2hlZHVsZTsKIAlpbnQgYWN0aXZlX2Jh bGFuY2U7CiAJaW50IHB1c2hfY3B1OwogCXN0cnVjdCBjcHVfc3RvcF93b3JrIGFjdGl2ZV9iYWxh bmNlX3dvcms7CkBAIC02NzAsNiArNjcxLDIxIEBAIGV4dGVybiBpbnQgbWlncmF0ZV9zd2FwKHN0 cnVjdCB0YXNrX3N0cnVjdCAqLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CiAKICNpZmRlZiBDT05G SUdfU01QCiAKK3N0YXRpYyBpbmxpbmUgdm9pZAorcXVldWVfYmFsYW5jZV9jYWxsYmFjayhzdHJ1 Y3QgcnEgKnJxLAorCQkgICAgICAgc3RydWN0IGNhbGxiYWNrX2hlYWQgKmhlYWQsCisJCSAgICAg ICB2b2lkICgqZnVuYykoc3RydWN0IHJxICpycSkpCit7CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgm cnEtPmxvY2spOworCisJaWYgKHVubGlrZWx5KGhlYWQtPm5leHQpKQorCQlyZXR1cm47CisKKwlo ZWFkLT5mdW5jID0gKHZvaWQgKCopKHN0cnVjdCBjYWxsYmFja19oZWFkICopKWZ1bmM7CisJaGVh ZC0+bmV4dCA9IHJxLT5iYWxhbmNlX2NhbGxiYWNrOworCXJxLT5iYWxhbmNlX2NhbGxiYWNrID0g aGVhZDsKK30KKwogZXh0ZXJuIHZvaWQgc2NoZWRfdHR3dV9wZW5kaW5nKHZvaWQpOwogCiAjZGVm aW5lIHJjdV9kZXJlZmVyZW5jZV9jaGVja19zY2hlZF9kb21haW4ocCkgXApAQCAtMTEyNyw3ICsx MTQzLDYgQEAgc3RydWN0IHNjaGVkX2NsYXNzIHsKIAlpbnQgICgqc2VsZWN0X3Rhc2tfcnEpKHN0 cnVjdCB0YXNrX3N0cnVjdCAqcCwgaW50IHRhc2tfY3B1LCBpbnQgc2RfZmxhZywgaW50IGZsYWdz KTsKIAl2b2lkICgqbWlncmF0ZV90YXNrX3JxKShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCBu ZXh0X2NwdSk7CiAKLQl2b2lkICgqcG9zdF9zY2hlZHVsZSkgKHN0cnVjdCBycSAqdGhpc19ycSk7 CiAJdm9pZCAoKnRhc2tfd2FraW5nKSAoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTsKIAl2b2lk ICgqdGFza193b2tlbikgKHN0cnVjdCBycSAqdGhpc19ycSwgc3RydWN0IHRhc2tfc3RydWN0ICp0 YXNrKTsKIApkaWZmIC0tZ2l0IGEva2VybmVsL3RyYWNlL3RyYWNlX2V2ZW50cy5jIGIva2VybmVs L3RyYWNlL3RyYWNlX2V2ZW50cy5jCmluZGV4IGVjZjNlOWZiOGVlNC4uMWUwNzI5NDQzZDkzIDEw MDY0NAotLS0gYS9rZXJuZWwvdHJhY2UvdHJhY2VfZXZlbnRzLmMKKysrIGIva2VybmVsL3RyYWNl L3RyYWNlX2V2ZW50cy5jCkBAIC0xNTg0LDggKzE1ODQsMTMgQEAgZXZlbnRfY3JlYXRlX2Rpcihz dHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHN0cnVjdCBmdHJhY2VfZXZlbnRfZmlsZSAqZmlsZSkKIAl0 cmFjZV9jcmVhdGVfZmlsZSgiZmlsdGVyIiwgMDY0NCwgZmlsZS0+ZGlyLCBmaWxlLAogCQkJICAm ZnRyYWNlX2V2ZW50X2ZpbHRlcl9mb3BzKTsKIAotCXRyYWNlX2NyZWF0ZV9maWxlKCJ0cmlnZ2Vy IiwgMDY0NCwgZmlsZS0+ZGlyLCBmaWxlLAotCQkJICAmZXZlbnRfdHJpZ2dlcl9mb3BzKTsKKwkv KgorCSAqIE9ubHkgZXZlbnQgZGlyZWN0b3JpZXMgdGhhdCBjYW4gYmUgZW5hYmxlZCBzaG91bGQg aGF2ZQorCSAqIHRyaWdnZXJzLgorCSAqLworCWlmICghKGNhbGwtPmZsYWdzICYgVFJBQ0VfRVZF TlRfRkxfSUdOT1JFX0VOQUJMRSkpCisJCXRyYWNlX2NyZWF0ZV9maWxlKCJ0cmlnZ2VyIiwgMDY0 NCwgZmlsZS0+ZGlyLCBmaWxlLAorCQkJCSAgJmV2ZW50X3RyaWdnZXJfZm9wcyk7CiAKIAl0cmFj ZV9jcmVhdGVfZmlsZSgiZm9ybWF0IiwgMDQ0NCwgZmlsZS0+ZGlyLCBjYWxsLAogCQkJICAmZnRy YWNlX2V2ZW50X2Zvcm1hdF9mb3BzKTsKZGlmZiAtLWdpdCBhL2tlcm5lbC93b3JrcXVldWUuYyBi L2tlcm5lbC93b3JrcXVldWUuYwppbmRleCA2YWIxZjY4M2FjNDkuLjVlNmNhZmVlYjA0OCAxMDA2 NDQKLS0tIGEva2VybmVsL3dvcmtxdWV1ZS5jCisrKyBiL2tlcm5lbC93b3JrcXVldWUuYwpAQCAt NjM0LDYgKzYzNCwzNSBAQCBzdGF0aWMgdm9pZCBzZXRfd29ya19wb29sX2FuZF9jbGVhcl9wZW5k aW5nKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaywKIAkgKi8KIAlzbXBfd21iKCk7CiAJc2V0X3dv cmtfZGF0YSh3b3JrLCAodW5zaWduZWQgbG9uZylwb29sX2lkIDw8IFdPUktfT0ZGUV9QT09MX1NI SUZULCAwKTsKKwkvKgorCSAqIFRoZSBmb2xsb3dpbmcgbWIgZ3VhcmFudGVlcyB0aGF0IHByZXZp b3VzIGNsZWFyIG9mIGEgUEVORElORyBiaXQKKwkgKiB3aWxsIG5vdCBiZSByZW9yZGVyZWQgd2l0 aCBhbnkgc3BlY3VsYXRpdmUgTE9BRFMgb3IgU1RPUkVTIGZyb20KKwkgKiB3b3JrLT5jdXJyZW50 X2Z1bmMsIHdoaWNoIGlzIGV4ZWN1dGVkIGFmdGVyd2FyZHMuICBUaGlzIHBvc3NpYmxlCisJICog cmVvcmRlcmluZyBjYW4gbGVhZCB0byBhIG1pc3NlZCBleGVjdXRpb24gb24gYXR0ZW1wdCB0byBx ZXVldWUKKwkgKiB0aGUgc2FtZSBAd29yay4gIEUuZy4gY29uc2lkZXIgdGhpcyBjYXNlOgorCSAq CisJICogICBDUFUjMCAgICAgICAgICAgICAgICAgICAgICAgICBDUFUjMQorCSAqICAgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KwkgKgorCSAqIDEgIFNUT1JFIGV2ZW50X2luZGljYXRlZAorCSAqIDIgIHF1ZXVlX3dvcmtfb24o KSB7CisJICogMyAgICB0ZXN0X2FuZF9zZXRfYml0KFBFTkRJTkcpCisJICogNCB9ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZXRfLi4uX2FuZF9jbGVhcl9wZW5kaW5nKCkgeworCSAqIDUg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfd29ya19kYXRhKCkgIyBjbGVhciBi aXQKKwkgKiA2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21wX21iKCkKKwkgKiA3 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmstPmN1cnJlbnRfZnVuYygpIHsKKwkg KiA4CQkJCSAgICAgIExPQUQgZXZlbnRfaW5kaWNhdGVkCisJICoJCQkJICAgfQorCSAqCisJICog V2l0aG91dCBhbiBleHBsaWNpdCBmdWxsIGJhcnJpZXIgc3BlY3VsYXRpdmUgTE9BRCBvbiBsaW5l IDggY2FuCisJICogYmUgZXhlY3V0ZWQgYmVmb3JlIENQVSMwIGRvZXMgU1RPUkUgb24gbGluZSAx LiAgSWYgdGhhdCBoYXBwZW5zLAorCSAqIENQVSMwIG9ic2VydmVzIHRoZSBQRU5ESU5HIGJpdCBp cyBzdGlsbCBzZXQgYW5kIG5ldyBleGVjdXRpb24gb2YKKwkgKiBhIEB3b3JrIGlzIG5vdCBxdWV1 ZWQgaW4gYSBob3BlLCB0aGF0IENQVSMxIHdpbGwgZXZlbnR1YWxseQorCSAqIGZpbmlzaCB0aGUg cXVldWVkIEB3b3JrLiAgTWVhbndoaWxlIENQVSMxIGRvZXMgbm90IHNlZQorCSAqIGV2ZW50X2lu ZGljYXRlZCBpcyBzZXQsIGJlY2F1c2Ugc3BlY3VsYXRpdmUgTE9BRCB3YXMgZXhlY3V0ZWQKKwkg KiBiZWZvcmUgYWN0dWFsIFNUT1JFLgorCSAqLworCXNtcF9tYigpOwogfQogCiBzdGF0aWMgdm9p ZCBjbGVhcl93b3JrX2RhdGEoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQpkaWZmIC0tZ2l0IGEv bGliL2FzbjFfZGVjb2Rlci5jIGIvbGliL2FzbjFfZGVjb2Rlci5jCmluZGV4IGQ2MGNlOGE1MzY1 MC4uODA2YzViNmI0YjNhIDEwMDY0NAotLS0gYS9saWIvYXNuMV9kZWNvZGVyLmMKKysrIGIvbGli L2FzbjFfZGVjb2Rlci5jCkBAIC02OSw3ICs2OSw3IEBAIG5leHRfdGFnOgogCiAJLyogRXh0cmFj dCBhIHRhZyBmcm9tIHRoZSBkYXRhICovCiAJdGFnID0gZGF0YVtkcCsrXTsKLQlpZiAodGFnID09 IDApIHsKKwlpZiAodGFnID09IEFTTjFfRU9DKSB7CiAJCS8qIEl0IGFwcGVhcnMgdG8gYmUgYW4g RU9DLiAqLwogCQlpZiAoZGF0YVtkcCsrXSAhPSAwKQogCQkJZ290byBpbnZhbGlkX2VvYzsKQEAg LTkxLDEwICs5MSw4IEBAIG5leHRfdGFnOgogCiAJLyogRXh0cmFjdCB0aGUgbGVuZ3RoICovCiAJ bGVuID0gZGF0YVtkcCsrXTsKLQlpZiAobGVuIDw9IDB4N2YpIHsKLQkJZHAgKz0gbGVuOwotCQln b3RvIG5leHRfdGFnOwotCX0KKwlpZiAobGVuIDw9IDB4N2YpCisJCWdvdG8gY2hlY2tfbGVuZ3Ro OwogCiAJaWYgKHVubGlrZWx5KGxlbiA9PSBBU04xX0lOREVGSU5JVEVfTEVOR1RIKSkgewogCQkv KiBJbmRlZmluaXRlIGxlbmd0aCAqLwpAQCAtMTA1LDE0ICsxMDMsMTggQEAgbmV4dF90YWc6CiAJ fQogCiAJbiA9IGxlbiAtIDB4ODA7Ci0JaWYgKHVubGlrZWx5KG4gPiBzaXplb2Yoc2l6ZV90KSAt IDEpKQorCWlmICh1bmxpa2VseShuID4gc2l6ZW9mKGxlbikgLSAxKSkKIAkJZ290byBsZW5ndGhf dG9vX2xvbmc7CiAJaWYgKHVubGlrZWx5KG4gPiBkYXRhbGVuIC0gZHApKQogCQlnb3RvIGRhdGFf b3ZlcnJ1bl9lcnJvcjsKLQlmb3IgKGxlbiA9IDA7IG4gPiAwOyBuLS0pIHsKKwlsZW4gPSAwOwor CWZvciAoOyBuID4gMDsgbi0tKSB7CiAJCWxlbiA8PD0gODsKIAkJbGVuIHw9IGRhdGFbZHArK107 CiAJfQorY2hlY2tfbGVuZ3RoOgorCWlmIChsZW4gPiBkYXRhbGVuIC0gZHApCisJCWdvdG8gZGF0 YV9vdmVycnVuX2Vycm9yOwogCWRwICs9IGxlbjsKIAlnb3RvIG5leHRfdGFnOwogCmRpZmYgLS1n aXQgYS9saWIvYXNzb2NfYXJyYXkuYyBiL2xpYi9hc3NvY19hcnJheS5jCmluZGV4IDI0MDRkMDNl MjUxYS4uMDNhNzdmNDc0MGMxIDEwMDY0NAotLS0gYS9saWIvYXNzb2NfYXJyYXkuYworKysgYi9s aWIvYXNzb2NfYXJyYXkuYwpAQCAtNTIzLDcgKzUyMyw5IEBAIHN0YXRpYyBib29sIGFzc29jX2Fy cmF5X2luc2VydF9pbnRvX3Rlcm1pbmFsX25vZGUoc3RydWN0IGFzc29jX2FycmF5X2VkaXQgKmVk aXQsCiAJCQlmcmVlX3Nsb3QgPSBpOwogCQkJY29udGludWU7CiAJCX0KLQkJaWYgKG9wcy0+Y29t cGFyZV9vYmplY3QoYXNzb2NfYXJyYXlfcHRyX3RvX2xlYWYocHRyKSwgaW5kZXhfa2V5KSkgewor CQlpZiAoYXNzb2NfYXJyYXlfcHRyX2lzX2xlYWYocHRyKSAmJgorCQkgICAgb3BzLT5jb21wYXJl X29iamVjdChhc3NvY19hcnJheV9wdHJfdG9fbGVhZihwdHIpLAorCQkJCQlpbmRleF9rZXkpKSB7 CiAJCQlwcl9kZXZlbCgicmVwbGFjZSBpbiBzbG90ICVkXG4iLCBpKTsKIAkJCWVkaXQtPmxlYWZf cCA9ICZub2RlLT5zbG90c1tpXTsKIAkJCWVkaXQtPmRlYWRfbGVhZiA9IG5vZGUtPnNsb3RzW2ld OwpkaWZmIC0tZ2l0IGEvbGliL2x6NC9sejRkZWZzLmggYi9saWIvbHo0L2x6NGRlZnMuaAppbmRl eCBhYmNlY2RjMmQwZjIuLjA3MTBhNjJhZDJmNiAxMDA2NDQKLS0tIGEvbGliL2x6NC9sejRkZWZz LmgKKysrIGIvbGliL2x6NC9sejRkZWZzLmgKQEAgLTExLDggKzExLDcgQEAKIC8qCiAgKiBEZXRl Y3RzIDY0IGJpdHMgbW9kZQogICovCi0jaWYgKGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5l ZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX2FtZDY0X18pIFwKLQl8fCBkZWZpbmVkKF9fcHBjNjRf XykgfHwgZGVmaW5lZChfX0xQNjRfXykpCisjaWYgZGVmaW5lZChDT05GSUdfNjRCSVQpCiAjZGVm aW5lIExaNF9BUkNINjQgMQogI2Vsc2UKICNkZWZpbmUgTFo0X0FSQ0g2NCAwCkBAIC0zNSw2ICsz NCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBfVTY0X1MgeyB1NjQgdjsgfSBVNjRfUzsKIAogI2RlZmlu ZSBQVVQ0KHMsIGQpIChBMzIoZCkgPSBBMzIocykpCiAjZGVmaW5lIFBVVDgocywgZCkgKEE2NChk KSA9IEE2NChzKSkKKworI2RlZmluZSBMWjRfUkVBRF9MSVRUTEVFTkRJQU5fMTYoZCwgcywgcCkJ XAorCShkID0gcyAtIEExNihwKSkKKwogI2RlZmluZSBMWjRfV1JJVEVfTElUVExFRU5ESUFOXzE2 KHAsIHYpCVwKIAlkbyB7CVwKIAkJQTE2KHApID0gdjsgXApAQCAtNTEsMTAgKzU0LDEzIEBAIHR5 cGVkZWYgc3RydWN0IF9VNjRfUyB7IHU2NCB2OyB9IFU2NF9TOwogI2RlZmluZSBQVVQ4KHMsIGQp IFwKIAlwdXRfdW5hbGlnbmVkKGdldF91bmFsaWduZWQoKGNvbnN0IHU2NCAqKSBzKSwgKHU2NCAq KSBkKQogCi0jZGVmaW5lIExaNF9XUklURV9MSVRUTEVFTkRJQU5fMTYocCwgdikJXAotCWRvIHsJ XAotCQlwdXRfdW5hbGlnbmVkKHYsICh1MTYgKikocCkpOyBcCi0JCXAgKz0gMjsgXAorI2RlZmlu ZSBMWjRfUkVBRF9MSVRUTEVFTkRJQU5fMTYoZCwgcywgcCkJXAorCShkID0gcyAtIGdldF91bmFs aWduZWRfbGUxNihwKSkKKworI2RlZmluZSBMWjRfV1JJVEVfTElUVExFRU5ESUFOXzE2KHAsIHYp CQkJXAorCWRvIHsJCQkJCQlcCisJCXB1dF91bmFsaWduZWRfbGUxNih2LCAodTE2ICopKHApKTsJ XAorCQlwICs9IDI7CQkJCQlcCiAJfSB3aGlsZSAoMCkKICNlbmRpZgogCkBAIC0xNDAsOSArMTQ2 LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgX1U2NF9TIHsgdTY0IHY7IH0gVTY0X1M7CiAKICNlbmRpZgog Ci0jZGVmaW5lIExaNF9SRUFEX0xJVFRMRUVORElBTl8xNihkLCBzLCBwKSBcCi0JKGQgPSBzIC0g Z2V0X3VuYWxpZ25lZF9sZTE2KHApKQotCiAjZGVmaW5lIExaNF9XSUxEQ09QWShzLCBkLCBlKQkJ XAogCWRvIHsJCQkJXAogCQlMWjRfQ09QWVBBQ0tFVChzLCBkKTsJXApkaWZmIC0tZ2l0IGEvbW0v YmFsbG9vbl9jb21wYWN0aW9uLmMgYi9tbS9iYWxsb29uX2NvbXBhY3Rpb24uYwppbmRleCA5YjBm MjE4YWY3MGIuLjg5NDQwYWY1NDc1MyAxMDA2NDQKLS0tIGEvbW0vYmFsbG9vbl9jb21wYWN0aW9u LmMKKysrIGIvbW0vYmFsbG9vbl9jb21wYWN0aW9uLmMKQEAgLTk0LDE2ICs5NCwxMyBAQCBzdHJ1 Y3QgcGFnZSAqYmFsbG9vbl9wYWdlX2RlcXVldWUoc3RydWN0IGJhbGxvb25fZGV2X2luZm8gKmJf ZGV2X2luZm8pCiAJCSAqIHRvIGJlIHJlbGVhc2VkIGJ5IHRoZSBiYWxsb29uIGRyaXZlci4KIAkJ ICovCiAJCWlmICh0cnlsb2NrX3BhZ2UocGFnZSkpIHsKLQkJCS8qCi0JCQkgKiBSYWlzZSB0aGUg cGFnZSByZWZjb3VudCBoZXJlIHRvIHByZXZlbnQgYW55IHdyb25nCi0JCQkgKiBhdHRlbXB0IHRv IGlzb2xhdGUgdGhpcyBwYWdlLCBpbiBjYXNlIG9mIGNvbGlkaW5nCi0JCQkgKiB3aXRoIGJhbGxv b25fcGFnZV9pc29sYXRlKCkganVzdCBhZnRlciB3ZSByZWxlYXNlCi0JCQkgKiB0aGUgcGFnZSBs b2NrLgotCQkJICoKLQkJCSAqIGJhbGxvb25fcGFnZV9mcmVlKCkgd2lsbCB0YWtlIGNhcmUgb2Yg ZHJvcHBpbmcKLQkJCSAqIHRoaXMgZXh0cmEgcmVmY291bnQgbGF0ZXIuCi0JCQkgKi8KLQkJCWdl dF9wYWdlKHBhZ2UpOworI2lmZGVmIENPTkZJR19CQUxMT09OX0NPTVBBQ1RJT04KKwkJCWlmICgh UGFnZVByaXZhdGUocGFnZSkpIHsKKwkJCQkvKiByYWNlZCB3aXRoIGlzb2xhdGlvbiAqLworCQkJ CXVubG9ja19wYWdlKHBhZ2UpOworCQkJCWNvbnRpbnVlOworCQkJfQorI2VuZGlmCiAJCQliYWxs b29uX3BhZ2VfZGVsZXRlKHBhZ2UpOwogCQkJdW5sb2NrX3BhZ2UocGFnZSk7CiAJCQlkZXF1ZXVl ZF9wYWdlID0gdHJ1ZTsKQEAgLTE4Nyw3ICsxODQsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19p c29sYXRlX2JhbGxvb25fcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKIHsKIAlzdHJ1Y3QgYmFsbG9v bl9kZXZfaW5mbyAqYl9kZXZfaW5mbyA9IHBhZ2UtPm1hcHBpbmctPnByaXZhdGVfZGF0YTsKIAl1 bnNpZ25lZCBsb25nIGZsYWdzOworCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmJfZGV2X2luZm8tPnBh Z2VzX2xvY2ssIGZsYWdzKTsKKwlDbGVhclBhZ2VQcml2YXRlKHBhZ2UpOwogCWxpc3RfZGVsKCZw YWdlLT5scnUpOwogCWJfZGV2X2luZm8tPmlzb2xhdGVkX3BhZ2VzKys7CiAJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmYl9kZXZfaW5mby0+cGFnZXNfbG9jaywgZmxhZ3MpOwpAQCAtMTk3LDcgKzE5 Niw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3B1dGJhY2tfYmFsbG9vbl9wYWdlKHN0cnVjdCBw YWdlICpwYWdlKQogewogCXN0cnVjdCBiYWxsb29uX2Rldl9pbmZvICpiX2Rldl9pbmZvID0gcGFn ZS0+bWFwcGluZy0+cHJpdmF0ZV9kYXRhOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKIAlzcGlu X2xvY2tfaXJxc2F2ZSgmYl9kZXZfaW5mby0+cGFnZXNfbG9jaywgZmxhZ3MpOworCVNldFBhZ2VQ cml2YXRlKHBhZ2UpOwogCWxpc3RfYWRkKCZwYWdlLT5scnUsICZiX2Rldl9pbmZvLT5wYWdlcyk7 CiAJYl9kZXZfaW5mby0+aXNvbGF0ZWRfcGFnZXMtLTsKIAlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZiX2Rldl9pbmZvLT5wYWdlc19sb2NrLCBmbGFncyk7CkBAIC0yMzUsMTIgKzIzNiwxMSBAQCBi b29sIGJhbGxvb25fcGFnZV9pc29sYXRlKHN0cnVjdCBwYWdlICpwYWdlKQogCQkgKi8KIAkJaWYg KGxpa2VseSh0cnlsb2NrX3BhZ2UocGFnZSkpKSB7CiAJCQkvKgotCQkJICogQSBiYWxsb29uZWQg cGFnZSwgYnkgZGVmYXVsdCwgaGFzIGp1c3Qgb25lIHJlZmNvdW50LgorCQkJICogQSBiYWxsb29u ZWQgcGFnZSwgYnkgZGVmYXVsdCwgaGFzIFBhZ2VQcml2YXRlIHNldC4KIAkJCSAqIFByZXZlbnQg Y29uY3VycmVudCBjb21wYWN0aW9uIHRocmVhZHMgZnJvbSBpc29sYXRpbmcKLQkJCSAqIGFuIGFs cmVhZHkgaXNvbGF0ZWQgYmFsbG9vbiBwYWdlIGJ5IHJlZmNvdW50IGNoZWNrLgorCQkJICogYW4g YWxyZWFkeSBpc29sYXRlZCBiYWxsb29uIHBhZ2UgYnkgY2xlYXJpbmcgaXQuCiAJCQkgKi8KLQkJ CWlmIChfX2lzX21vdmFibGVfYmFsbG9vbl9wYWdlKHBhZ2UpICYmCi0JCQkgICAgcGFnZV9jb3Vu dChwYWdlKSA9PSAyKSB7CisJCQlpZiAoYmFsbG9vbl9wYWdlX21vdmFibGUocGFnZSkpIHsKIAkJ CQlfX2lzb2xhdGVfYmFsbG9vbl9wYWdlKHBhZ2UpOwogCQkJCXVubG9ja19wYWdlKHBhZ2UpOwog CQkJCXJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvbW0vY29tcGFjdGlvbi5jIGIvbW0vY29tcGFj dGlvbi5jCmluZGV4IGM3YzZhZTU5Zjc4Ny4uMGZmNzNjNzM1MmFkIDEwMDY0NAotLS0gYS9tbS9j b21wYWN0aW9uLmMKKysrIGIvbW0vY29tcGFjdGlvbi5jCkBAIC01OTcsNyArNTk3LDcgQEAgaXNv bGF0ZV9taWdyYXRlcGFnZXNfcmFuZ2Uoc3RydWN0IHpvbmUgKnpvbmUsIHN0cnVjdCBjb21wYWN0 X2NvbnRyb2wgKmNjLAogCQkgKi8KIAkJaWYgKCFQYWdlTFJVKHBhZ2UpKSB7CiAJCQlpZiAodW5s aWtlbHkoYmFsbG9vbl9wYWdlX21vdmFibGUocGFnZSkpKSB7Ci0JCQkJaWYgKGxvY2tlZCAmJiBi YWxsb29uX3BhZ2VfaXNvbGF0ZShwYWdlKSkgeworCQkJCWlmIChiYWxsb29uX3BhZ2VfaXNvbGF0 ZShwYWdlKSkgewogCQkJCQkvKiBTdWNjZXNzZnVsbHkgaXNvbGF0ZWQgKi8KIAkJCQkJZ290byBp c29sYXRlX3N1Y2Nlc3M7CiAJCQkJfQpkaWZmIC0tZ2l0IGEvbW0vaHVnZV9tZW1vcnkuYyBiL21t L2h1Z2VfbWVtb3J5LmMKaW5kZXggNDc5YjU3Y2M1MTk1Li5kYzUyOGE1MWNjYmYgMTAwNjQ0Ci0t LSBhL21tL2h1Z2VfbWVtb3J5LmMKKysrIGIvbW0vaHVnZV9tZW1vcnkuYwpAQCAtMjA2OCwxMCAr MjA2OCw5IEBAIGludCBraHVnZXBhZ2VkX2VudGVyX3ZtYV9tZXJnZShzdHJ1Y3Qgdm1fYXJlYV9z dHJ1Y3QgKnZtYSwKIAkJICogcGFnZSBmYXVsdCBpZiBuZWVkZWQuCiAJCSAqLwogCQlyZXR1cm4g MDsKLQlpZiAodm1hLT52bV9vcHMpCisJaWYgKHZtYS0+dm1fb3BzIHx8ICh2bV9mbGFncyAmIFZN X05PX1RIUCkpCiAJCS8qIGtodWdlcGFnZWQgbm90IHlldCB3b3JraW5nIG9uIGZpbGUgb3Igc3Bl Y2lhbCBtYXBwaW5ncyAqLwogCQlyZXR1cm4gMDsKLQlWTV9CVUdfT04odm1fZmxhZ3MgJiBWTV9O T19USFApOwogCWhzdGFydCA9ICh2bWEtPnZtX3N0YXJ0ICsgfkhQQUdFX1BNRF9NQVNLKSAmIEhQ QUdFX1BNRF9NQVNLOwogCWhlbmQgPSB2bWEtPnZtX2VuZCAmIEhQQUdFX1BNRF9NQVNLOwogCWlm IChoc3RhcnQgPCBoZW5kKQpAQCAtMjM3Niw4ICsyMzc1LDcgQEAgc3RhdGljIGJvb2wgaHVnZXBh Z2Vfdm1hX2NoZWNrKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQogCQlyZXR1cm4gZmFsc2U7 CiAJaWYgKGlzX3ZtYV90ZW1wb3Jhcnlfc3RhY2sodm1hKSkKIAkJcmV0dXJuIGZhbHNlOwotCVZN X0JVR19PTih2bWEtPnZtX2ZsYWdzICYgVk1fTk9fVEhQKTsKLQlyZXR1cm4gdHJ1ZTsKKwlyZXR1 cm4gISh2bWEtPnZtX2ZsYWdzICYgVk1fTk9fVEhQKTsKIH0KIAogc3RhdGljIHZvaWQgY29sbGFw c2VfaHVnZV9wYWdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLApkaWZmIC0tZ2l0IGEvbW0vbWlncmF0 ZS5jIGIvbW0vbWlncmF0ZS5jCmluZGV4IGY2Mjk2OTA0YTMyNC4uNTZkMjczZTgyOGQ2IDEwMDY0 NAotLS0gYS9tbS9taWdyYXRlLmMKKysrIGIvbW0vbWlncmF0ZS5jCkBAIC0zMCw2ICszMCw3IEBA CiAjaW5jbHVkZSA8bGludXgvbWVtcG9saWN5Lmg+CiAjaW5jbHVkZSA8bGludXgvdm1hbGxvYy5o PgogI2luY2x1ZGUgPGxpbnV4L3NlY3VyaXR5Lmg+CisjaW5jbHVkZSA8bGludXgvYmFja2luZy1k ZXYuaD4KICNpbmNsdWRlIDxsaW51eC9tZW1jb250cm9sLmg+CiAjaW5jbHVkZSA8bGludXgvc3lz Y2FsbHMuaD4KICNpbmNsdWRlIDxsaW51eC9odWdldGxiLmg+CkBAIC0zNDIsNiArMzQzLDggQEAg aW50IG1pZ3JhdGVfcGFnZV9tb3ZlX21hcHBpbmcoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBp bmcsCiAJCXN0cnVjdCBidWZmZXJfaGVhZCAqaGVhZCwgZW51bSBtaWdyYXRlX21vZGUgbW9kZSwK IAkJaW50IGV4dHJhX2NvdW50KQogeworCXN0cnVjdCB6b25lICpvbGR6b25lLCAqbmV3em9uZTsK KwlpbnQgZGlydHk7CiAJaW50IGV4cGVjdGVkX2NvdW50ID0gMSArIGV4dHJhX2NvdW50OwogCXZv aWQgKipwc2xvdDsKIApAQCAtMzUyLDYgKzM1NSw5IEBAIGludCBtaWdyYXRlX3BhZ2VfbW92ZV9t YXBwaW5nKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogCQlyZXR1cm4gTUlHUkFURVBB R0VfU1VDQ0VTUzsKIAl9CiAKKwlvbGR6b25lID0gcGFnZV96b25lKHBhZ2UpOworCW5ld3pvbmUg PSBwYWdlX3pvbmUobmV3cGFnZSk7CisKIAlzcGluX2xvY2tfaXJxKCZtYXBwaW5nLT50cmVlX2xv Y2spOwogCiAJcHNsb3QgPSByYWRpeF90cmVlX2xvb2t1cF9zbG90KCZtYXBwaW5nLT5wYWdlX3Ry ZWUsCkBAIC0zOTIsNiArMzk4LDEzIEBAIGludCBtaWdyYXRlX3BhZ2VfbW92ZV9tYXBwaW5nKHN0 cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogCQlzZXRfcGFnZV9wcml2YXRlKG5ld3BhZ2Us IHBhZ2VfcHJpdmF0ZShwYWdlKSk7CiAJfQogCisJLyogTW92ZSBkaXJ0eSB3aGlsZSBwYWdlIHJl ZnMgZnJvemVuIGFuZCBuZXdwYWdlIG5vdCB5ZXQgZXhwb3NlZCAqLworCWRpcnR5ID0gUGFnZURp cnR5KHBhZ2UpOworCWlmIChkaXJ0eSkgeworCQlDbGVhclBhZ2VEaXJ0eShwYWdlKTsKKwkJU2V0 UGFnZURpcnR5KG5ld3BhZ2UpOworCX0KKwogCXJhZGl4X3RyZWVfcmVwbGFjZV9zbG90KHBzbG90 LCBuZXdwYWdlKTsKIAogCS8qCkBAIC00MDEsNiArNDE0LDkgQEAgaW50IG1pZ3JhdGVfcGFnZV9t b3ZlX21hcHBpbmcoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiAJICovCiAJcGFnZV91 bmZyZWV6ZV9yZWZzKHBhZ2UsIGV4cGVjdGVkX2NvdW50IC0gMSk7CiAKKwlzcGluX3VubG9jaygm bWFwcGluZy0+dHJlZV9sb2NrKTsKKwkvKiBMZWF2ZSBpcnEgZGlzYWJsZWQgdG8gcHJldmVudCBw cmVlbXB0aW9uIHdoaWxlIHVwZGF0aW5nIHN0YXRzICovCisKIAkvKgogCSAqIElmIG1vdmVkIHRv IGEgZGlmZmVyZW50IHpvbmUgdGhlbiBhbHNvIGFjY291bnQKIAkgKiB0aGUgcGFnZSBmb3IgdGhh dCB6b25lLiBPdGhlciBWTSBjb3VudGVycyB3aWxsIGJlCkBAIC00MTEsMTMgKzQyNywxOSBAQCBp bnQgbWlncmF0ZV9wYWdlX21vdmVfbWFwcGluZyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGlu ZywKIAkgKiB2aWEgTlJfRklMRV9QQUdFUyBhbmQgTlJfQU5PTl9QQUdFUyBpZiB0aGV5CiAJICog YXJlIG1hcHBlZCB0byBzd2FwIHNwYWNlLgogCSAqLwotCV9fZGVjX3pvbmVfcGFnZV9zdGF0ZShw YWdlLCBOUl9GSUxFX1BBR0VTKTsKLQlfX2luY196b25lX3BhZ2Vfc3RhdGUobmV3cGFnZSwgTlJf RklMRV9QQUdFUyk7Ci0JaWYgKCFQYWdlU3dhcENhY2hlKHBhZ2UpICYmIFBhZ2VTd2FwQmFja2Vk KHBhZ2UpKSB7Ci0JCV9fZGVjX3pvbmVfcGFnZV9zdGF0ZShwYWdlLCBOUl9TSE1FTSk7Ci0JCV9f aW5jX3pvbmVfcGFnZV9zdGF0ZShuZXdwYWdlLCBOUl9TSE1FTSk7CisJaWYgKG5ld3pvbmUgIT0g b2xkem9uZSkgeworCQlfX2RlY196b25lX3N0YXRlKG9sZHpvbmUsIE5SX0ZJTEVfUEFHRVMpOwor CQlfX2luY196b25lX3N0YXRlKG5ld3pvbmUsIE5SX0ZJTEVfUEFHRVMpOworCQlpZiAoUGFnZVN3 YXBCYWNrZWQocGFnZSkgJiYgIVBhZ2VTd2FwQ2FjaGUocGFnZSkpIHsKKwkJCV9fZGVjX3pvbmVf c3RhdGUob2xkem9uZSwgTlJfU0hNRU0pOworCQkJX19pbmNfem9uZV9zdGF0ZShuZXd6b25lLCBO Ul9TSE1FTSk7CisJCX0KKwkJaWYgKGRpcnR5ICYmIG1hcHBpbmdfY2FwX2FjY291bnRfZGlydHko bWFwcGluZykpIHsKKwkJCV9fZGVjX3pvbmVfc3RhdGUob2xkem9uZSwgTlJfRklMRV9ESVJUWSk7 CisJCQlfX2luY196b25lX3N0YXRlKG5ld3pvbmUsIE5SX0ZJTEVfRElSVFkpOworCQl9CiAJfQot CXNwaW5fdW5sb2NrX2lycSgmbWFwcGluZy0+dHJlZV9sb2NrKTsKKwlsb2NhbF9pcnFfZW5hYmxl KCk7CiAKIAlyZXR1cm4gTUlHUkFURVBBR0VfU1VDQ0VTUzsKIH0KQEAgLTU0MSwyMCArNTYzLDkg QEAgdm9pZCBtaWdyYXRlX3BhZ2VfY29weShzdHJ1Y3QgcGFnZSAqbmV3cGFnZSwgc3RydWN0IHBh Z2UgKnBhZ2UpCiAJaWYgKFBhZ2VNYXBwZWRUb0Rpc2socGFnZSkpCiAJCVNldFBhZ2VNYXBwZWRU b0Rpc2sobmV3cGFnZSk7CiAKLQlpZiAoUGFnZURpcnR5KHBhZ2UpKSB7Ci0JCWNsZWFyX3BhZ2Vf ZGlydHlfZm9yX2lvKHBhZ2UpOwotCQkvKgotCQkgKiBXYW50IHRvIG1hcmsgdGhlIHBhZ2UgYW5k IHRoZSByYWRpeCB0cmVlIGFzIGRpcnR5LCBhbmQKLQkJICogcmVkbyB0aGUgYWNjb3VudGluZyB0 aGF0IGNsZWFyX3BhZ2VfZGlydHlfZm9yX2lvIHVuZGlkLAotCQkgKiBidXQgd2UgY2FuJ3QgdXNl IHNldF9wYWdlX2RpcnR5IGJlY2F1c2UgdGhhdCBmdW5jdGlvbgotCQkgKiBpcyBhY3R1YWxseSBh IHNpZ25hbCB0aGF0IGFsbCBvZiB0aGUgcGFnZSBoYXMgYmVjb21lIGRpcnR5LgotCQkgKiBXaGVy ZWFzIG9ubHkgcGFydCBvZiBvdXIgcGFnZSBtYXkgYmUgZGlydHkuCi0JCSAqLwotCQlpZiAoUGFn ZVN3YXBCYWNrZWQocGFnZSkpCi0JCQlTZXRQYWdlRGlydHkobmV3cGFnZSk7Ci0JCWVsc2UKLQkJ CV9fc2V0X3BhZ2VfZGlydHlfbm9idWZmZXJzKG5ld3BhZ2UpOwotIAl9CisJLyogTW92ZSBkaXJ0 eSBvbiBwYWdlcyBub3QgZG9uZSBieSBtaWdyYXRlX3BhZ2VfbW92ZV9tYXBwaW5nKCkgKi8KKwlp ZiAoUGFnZURpcnR5KHBhZ2UpKQorCQlTZXRQYWdlRGlydHkobmV3cGFnZSk7CiAKIAkvKgogCSAq IENvcHkgTlVNQSBpbmZvcm1hdGlvbiB0byB0aGUgbmV3IHBhZ2UsIHRvIHByZXZlbnQgb3Zlci1l YWdlcgpAQCAtODc5LDcgKzg5MCw3IEBAIHN0YXRpYyBpbnQgX191bm1hcF9hbmRfbW92ZShzdHJ1 Y3QgcGFnZSAqcGFnZSwgc3RydWN0IHBhZ2UgKm5ld3BhZ2UsCiAJCX0KIAl9CiAKLQlpZiAodW5s aWtlbHkoYmFsbG9vbl9wYWdlX21vdmFibGUocGFnZSkpKSB7CisJaWYgKHVubGlrZWx5KGlzb2xh dGVkX2JhbGxvb25fcGFnZShwYWdlKSkpIHsKIAkJLyoKIAkJICogQSBiYWxsb29uZWQgcGFnZSBk b2VzIG5vdCBuZWVkIGFueSBzcGVjaWFsIGF0dGVudGlvbiBmcm9tCiAJCSAqIHBoeXNpY2FsIHRv IHZpcnR1YWwgcmV2ZXJzZSBtYXBwaW5nIHByb2NlZHVyZXMuCkBAIC05MjgsOCArOTM5LDcgQEAg c2tpcF91bm1hcDoKIAogdW5jaGFyZ2U6CiAJbWVtX2Nncm91cF9lbmRfbWlncmF0aW9uKG1lbSwg cGFnZSwgbmV3cGFnZSwKLQkJCQkgKHJjID09IE1JR1JBVEVQQUdFX1NVQ0NFU1MgfHwKLQkJCQkg IHJjID09IE1JR1JBVEVQQUdFX0JBTExPT05fU1VDQ0VTUykpOworCQkJCSByYyA9PSBNSUdSQVRF UEFHRV9TVUNDRVNTKTsKIAl1bmxvY2tfcGFnZShwYWdlKTsKIG91dDoKIAlyZXR1cm4gcmM7CkBA IC05NjEsMTcgKzk3MSw2IEBAIHN0YXRpYyBpbnQgdW5tYXBfYW5kX21vdmUobmV3X3BhZ2VfdCBn ZXRfbmV3X3BhZ2UsIGZyZWVfcGFnZV90IHB1dF9uZXdfcGFnZSwKIAogCXJjID0gX191bm1hcF9h bmRfbW92ZShwYWdlLCBuZXdwYWdlLCBmb3JjZSwgbW9kZSk7CiAKLQlpZiAodW5saWtlbHkocmMg PT0gTUlHUkFURVBBR0VfQkFMTE9PTl9TVUNDRVNTKSkgewotCQkvKgotCQkgKiBBIGJhbGxvb25l ZCBwYWdlIGhhcyBiZWVuIG1pZ3JhdGVkIGFscmVhZHkuCi0JCSAqIE5vdywgaXQncyB0aGUgdGlt ZSB0byB3cmFwLXVwIGNvdW50ZXJzLAotCQkgKiBoYW5kbGUgdGhlIHBhZ2UgYmFjayB0byBCdWRk eSBhbmQgcmV0dXJuLgotCQkgKi8KLQkJZGVjX3pvbmVfcGFnZV9zdGF0ZShwYWdlLCBOUl9JU09M QVRFRF9BTk9OICsKLQkJCQkgICAgcGFnZV9pc19maWxlX2NhY2hlKHBhZ2UpKTsKLQkJYmFsbG9v bl9wYWdlX2ZyZWUocGFnZSk7Ci0JCXJldHVybiBNSUdSQVRFUEFHRV9TVUNDRVNTOwotCX0KIG91 dDoKIAlpZiAocmMgIT0gLUVBR0FJTikgewogCQkvKgpAQCAtOTk0LDYgKzk5Myw5IEBAIG91dDoK IAlpZiAocmMgIT0gTUlHUkFURVBBR0VfU1VDQ0VTUyAmJiBwdXRfbmV3X3BhZ2UpIHsKIAkJQ2xl YXJQYWdlU3dhcEJhY2tlZChuZXdwYWdlKTsKIAkJcHV0X25ld19wYWdlKG5ld3BhZ2UsIHByaXZh dGUpOworCX0gZWxzZSBpZiAodW5saWtlbHkoX19pc19tb3ZhYmxlX2JhbGxvb25fcGFnZShuZXdw YWdlKSkpIHsKKwkJLyogZHJvcCBvdXIgcmVmZXJlbmNlLCBwYWdlIGFscmVhZHkgaW4gdGhlIGJh bGxvb24gKi8KKwkJcHV0X3BhZ2UobmV3cGFnZSk7CiAJfSBlbHNlCiAJCXB1dGJhY2tfbHJ1X3Bh Z2UobmV3cGFnZSk7CiAKZGlmZiAtLWdpdCBhL25ldC9heDI1L2F4MjVfaXAuYyBiL25ldC9heDI1 L2F4MjVfaXAuYwppbmRleCA1ZWU4YzZmYzFhNzUuLjY3ZGU2YjMzZjJjMyAxMDA2NDQKLS0tIGEv bmV0L2F4MjUvYXgyNV9pcC5jCisrKyBiL25ldC9heDI1L2F4MjVfaXAuYwpAQCAtMjMxLDI0ICsy MzEsOSBAQCBpbnQgYXgyNV9yZWJ1aWxkX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCiAj ZW5kaWYKIAotc3RhdGljIGJvb2wgYXgyNV92YWxpZGF0ZV9oZWFkZXIoY29uc3QgY2hhciAqaGVh ZGVyLCB1bnNpZ25lZCBpbnQgbGVuKQotewotCWF4MjVfZGlnaSBkaWdpOwotCi0JaWYgKCFsZW4p Ci0JCXJldHVybiBmYWxzZTsKLQotCWlmIChoZWFkZXJbMF0pCi0JCXJldHVybiB0cnVlOwotCi0J cmV0dXJuIGF4MjVfYWRkcl9wYXJzZShoZWFkZXIgKyAxLCBsZW4gLSAxLCBOVUxMLCBOVUxMLCAm ZGlnaSwgTlVMTCwKLQkJCSAgICAgICBOVUxMKTsKLX0KLQogY29uc3Qgc3RydWN0IGhlYWRlcl9v cHMgYXgyNV9oZWFkZXJfb3BzID0gewogCS5jcmVhdGUgPSBheDI1X2hhcmRfaGVhZGVyLAogCS5y ZWJ1aWxkID0gYXgyNV9yZWJ1aWxkX2hlYWRlciwKLQkudmFsaWRhdGUgPSBheDI1X3ZhbGlkYXRl X2hlYWRlciwKIH07CiAKIEVYUE9SVF9TWU1CT0woYXgyNV9oYXJkX2hlYWRlcik7CmRpZmYgLS1n aXQgYS9uZXQvYmF0bWFuLWFkdi9kaXN0cmlidXRlZC1hcnAtdGFibGUuYyBiL25ldC9iYXRtYW4t YWR2L2Rpc3RyaWJ1dGVkLWFycC10YWJsZS5jCmluZGV4IDI4ZDcwYjk0MWJiNS4uZjQ5YmFkY2Zk OGExIDEwMDY0NAotLS0gYS9uZXQvYmF0bWFuLWFkdi9kaXN0cmlidXRlZC1hcnAtdGFibGUuYwor KysgYi9uZXQvYmF0bWFuLWFkdi9kaXN0cmlidXRlZC1hcnAtdGFibGUuYwpAQCAtNTIxLDYgKzUy MSw3IEBAIHN0YXRpYyB2b2lkIGJhdGFkdl9jaG9vc2VfbmV4dF9jYW5kaWRhdGUoc3RydWN0IGJh dGFkdl9wcml2ICpiYXRfcHJpdiwKICAqIGJlIHNlbnQgdG8KICAqIEBiYXRfcHJpdjogdGhlIGJh dCBwcml2IHdpdGggYWxsIHRoZSBzb2Z0IGludGVyZmFjZSBpbmZvcm1hdGlvbgogICogQGlwX2Rz dDogaXB2NCB0byBsb29rIHVwIGluIHRoZSBESFQKKyAqIEB2aWQ6IFZMQU4gaWRlbnRpZmllcgog ICoKICAqIEFuIG9yaWdpbmF0b3IgTyBpcyBzZWxlY3RlZCBpZiBhbmQgb25seSBpZiBpdHMgREhU X0lEIHZhbHVlIGlzIG9uZSBvZiB0aHJlZQogICogY2xvc2VzdCB2YWx1ZXMgKGZyb20gdGhlIExF RlQsIHdpdGggd3JhcCBhcm91bmQgaWYgbmVlZGVkKSB0aGVuIHRoZSBoYXNoCkBAIC01MjksMTEg KzUzMCwxMyBAQCBzdGF0aWMgdm9pZCBiYXRhZHZfY2hvb3NlX25leHRfY2FuZGlkYXRlKHN0cnVj dCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsCiAgKiBSZXR1cm5zIHRoZSBjYW5kaWRhdGUgYXJyYXkg b2Ygc2l6ZSBCQVRBRFZfREFUX0NBTkRJREFURV9OVU0uCiAgKi8KIHN0YXRpYyBzdHJ1Y3QgYmF0 YWR2X2RhdF9jYW5kaWRhdGUgKgotYmF0YWR2X2RhdF9zZWxlY3RfY2FuZGlkYXRlcyhzdHJ1Y3Qg YmF0YWR2X3ByaXYgKmJhdF9wcml2LCBfX2JlMzIgaXBfZHN0KQorYmF0YWR2X2RhdF9zZWxlY3Rf Y2FuZGlkYXRlcyhzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LCBfX2JlMzIgaXBfZHN0LAor CQkJICAgICB1bnNpZ25lZCBzaG9ydCB2aWQpCiB7CiAJaW50IHNlbGVjdDsKIAliYXRhZHZfZGF0 X2FkZHJfdCBsYXN0X21heCA9IEJBVEFEVl9EQVRfQUREUl9NQVgsIGlwX2tleTsKIAlzdHJ1Y3Qg YmF0YWR2X2RhdF9jYW5kaWRhdGUgKnJlczsKKwlzdHJ1Y3QgYmF0YWR2X2RhdF9lbnRyeSBkYXQ7 CiAKIAlpZiAoIWJhdF9wcml2LT5vcmlnX2hhc2gpCiAJCXJldHVybiBOVUxMOwpAQCAtNTQyLDcg KzU0NSw5IEBAIGJhdGFkdl9kYXRfc2VsZWN0X2NhbmRpZGF0ZXMoc3RydWN0IGJhdGFkdl9wcml2 ICpiYXRfcHJpdiwgX19iZTMyIGlwX2RzdCkKIAlpZiAoIXJlcykKIAkJcmV0dXJuIE5VTEw7CiAK LQlpcF9rZXkgPSAoYmF0YWR2X2RhdF9hZGRyX3QpYmF0YWR2X2hhc2hfZGF0KCZpcF9kc3QsCisJ ZGF0LmlwID0gaXBfZHN0OworCWRhdC52aWQgPSB2aWQ7CisJaXBfa2V5ID0gKGJhdGFkdl9kYXRf YWRkcl90KWJhdGFkdl9oYXNoX2RhdCgmZGF0LAogCQkJCQkJICAgIEJBVEFEVl9EQVRfQUREUl9N QVgpOwogCiAJYmF0YWR2X2RiZyhCQVRBRFZfREJHX0RBVCwgYmF0X3ByaXYsCkBAIC01NjEsNiAr NTY2LDcgQEAgYmF0YWR2X2RhdF9zZWxlY3RfY2FuZGlkYXRlcyhzdHJ1Y3QgYmF0YWR2X3ByaXYg KmJhdF9wcml2LCBfX2JlMzIgaXBfZHN0KQogICogQGJhdF9wcml2OiB0aGUgYmF0IHByaXYgd2l0 aCBhbGwgdGhlIHNvZnQgaW50ZXJmYWNlIGluZm9ybWF0aW9uCiAgKiBAc2tiOiBwYXlsb2FkIHRv IHNlbmQKICAqIEBpcDogdGhlIERIVCBrZXkKKyAqIEB2aWQ6IFZMQU4gaWRlbnRpZmllcgogICog QHBhY2tldF9zdWJ0eXBlOiB1bmljYXN0NGFkZHIgcGFja2V0IHN1YnR5cGUgdG8gdXNlCiAgKgog ICogVGhpcyBmdW5jdGlvbiBjb3BpZXMgdGhlIHNrYiB3aXRoIHBza2JfY29weSgpIGFuZCBpcyBz ZW50IGFzIHVuaWNhc3QgcGFja2V0CkBAIC01NzEsNyArNTc3LDcgQEAgYmF0YWR2X2RhdF9zZWxl Y3RfY2FuZGlkYXRlcyhzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LCBfX2JlMzIgaXBfZHN0 KQogICovCiBzdGF0aWMgYm9vbCBiYXRhZHZfZGF0X3NlbmRfZGF0YShzdHJ1Y3QgYmF0YWR2X3By aXYgKmJhdF9wcml2LAogCQkJCSBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2JlMzIgaXAsCi0JCQkJ IGludCBwYWNrZXRfc3VidHlwZSkKKwkJCQkgdW5zaWduZWQgc2hvcnQgdmlkLCBpbnQgcGFja2V0 X3N1YnR5cGUpCiB7CiAJaW50IGk7CiAJYm9vbCByZXQgPSBmYWxzZTsKQEAgLTU4MCw3ICs1ODYs NyBAQCBzdGF0aWMgYm9vbCBiYXRhZHZfZGF0X3NlbmRfZGF0YShzdHJ1Y3QgYmF0YWR2X3ByaXYg KmJhdF9wcml2LAogCXN0cnVjdCBza19idWZmICp0bXBfc2tiOwogCXN0cnVjdCBiYXRhZHZfZGF0 X2NhbmRpZGF0ZSAqY2FuZDsKIAotCWNhbmQgPSBiYXRhZHZfZGF0X3NlbGVjdF9jYW5kaWRhdGVz KGJhdF9wcml2LCBpcCk7CisJY2FuZCA9IGJhdGFkdl9kYXRfc2VsZWN0X2NhbmRpZGF0ZXMoYmF0 X3ByaXYsIGlwLCB2aWQpOwogCWlmICghY2FuZCkKIAkJZ290byBvdXQ7CiAKQEAgLTk2OSw3ICs5 NzUsNyBAQCBib29sIGJhdGFkdl9kYXRfc25vb3Bfb3V0Z29pbmdfYXJwX3JlcXVlc3Qoc3RydWN0 IGJhdGFkdl9wcml2ICpiYXRfcHJpdiwKIAkJcmV0ID0gdHJ1ZTsKIAl9IGVsc2UgewogCQkvKiBT ZW5kIHRoZSByZXF1ZXN0IHRvIHRoZSBESFQgKi8KLQkJcmV0ID0gYmF0YWR2X2RhdF9zZW5kX2Rh dGEoYmF0X3ByaXYsIHNrYiwgaXBfZHN0LAorCQlyZXQgPSBiYXRhZHZfZGF0X3NlbmRfZGF0YShi YXRfcHJpdiwgc2tiLCBpcF9kc3QsIHZpZCwKIAkJCQkJICAgQkFUQURWX1BfREFUX0RIVF9HRVQp OwogCX0KIG91dDoKQEAgLTEwOTcsOCArMTEwMyw4IEBAIHZvaWQgYmF0YWR2X2RhdF9zbm9vcF9v dXRnb2luZ19hcnBfcmVwbHkoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdiwKIAkvKiBTZW5k IHRoZSBBUlAgcmVwbHkgdG8gdGhlIGNhbmRpZGF0ZXMgZm9yIGJvdGggdGhlIElQIGFkZHJlc3Nl cyB0aGF0CiAJICogdGhlIG5vZGUgb2J0YWluZWQgZnJvbSB0aGUgQVJQIHJlcGx5CiAJICovCi0J YmF0YWR2X2RhdF9zZW5kX2RhdGEoYmF0X3ByaXYsIHNrYiwgaXBfc3JjLCBCQVRBRFZfUF9EQVRf REhUX1BVVCk7Ci0JYmF0YWR2X2RhdF9zZW5kX2RhdGEoYmF0X3ByaXYsIHNrYiwgaXBfZHN0LCBC QVRBRFZfUF9EQVRfREhUX1BVVCk7CisJYmF0YWR2X2RhdF9zZW5kX2RhdGEoYmF0X3ByaXYsIHNr YiwgaXBfc3JjLCB2aWQsIEJBVEFEVl9QX0RBVF9ESFRfUFVUKTsKKwliYXRhZHZfZGF0X3NlbmRf ZGF0YShiYXRfcHJpdiwgc2tiLCBpcF9kc3QsIHZpZCwgQkFUQURWX1BfREFUX0RIVF9QVVQpOwog fQogLyoqCiAgKiBiYXRhZHZfZGF0X3Nub29wX2luY29taW5nX2FycF9yZXBseSAtIHNub29wIHRo ZSBBUlAgcmVwbHkgYW5kIGZpbGwgdGhlIGxvY2FsCmRpZmYgLS1naXQgYS9uZXQvYmF0bWFuLWFk di9yb3V0aW5nLmMgYi9uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMKaW5kZXggMzUxNDE1MzQ5Mzhl Li5mYjBjNGU2MDY5YTcgMTAwNjQ0Ci0tLSBhL25ldC9iYXRtYW4tYWR2L3JvdXRpbmcuYworKysg Yi9uZXQvYmF0bWFuLWFkdi9yb3V0aW5nLmMKQEAgLTg4LDYgKzg4LDE1IEBAIHN0YXRpYyB2b2lk IF9iYXRhZHZfdXBkYXRlX3JvdXRlKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsCiAJCW5l aWdoX25vZGUgPSBOVUxMOwogCiAJc3Bpbl9sb2NrX2JoKCZvcmlnX25vZGUtPm5laWdoX2xpc3Rf bG9jayk7CisJLyogY3Vycl9yb3V0ZXIgdXNlZCBlYXJsaWVyIG1heSBub3QgYmUgdGhlIGN1cnJl bnQgb3JpZ19pZmluZm8tPnJvdXRlcgorCSAqIGFueW1vcmUgYmVjYXVzZSBpdCB3YXMgZGVyZWZl cmVuY2VkIG91dHNpZGUgb2YgdGhlIG5laWdoX2xpc3RfbG9jaworCSAqIHByb3RlY3RlZCByZWdp b24uIEFmdGVyIHRoZSBuZXcgYmVzdCBuZWlnaGJvciBoYXMgcmVwbGFjZSB0aGUgY3VycmVudAor CSAqIGJlc3QgbmVpZ2hib3IgdGhlIHJlZmVyZW5jZSBjb3VudGVyIG5lZWRzIHRvIGRlY3JlYXNl LiBDb25zZXF1ZW50bHksCisJICogdGhlIGNvZGUgbmVlZHMgdG8gZW5zdXJlIHRoZSBjdXJyX3Jv dXRlciB2YXJpYWJsZSBjb250YWlucyBhIHBvaW50ZXIKKwkgKiB0byB0aGUgcmVwbGFjZWQgYmVz dCBuZWlnaGJvci4KKwkgKi8KKwljdXJyX3JvdXRlciA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0 ZWQob3JpZ19pZmluZm8tPnJvdXRlciwgdHJ1ZSk7CisKIAlyY3VfYXNzaWduX3BvaW50ZXIob3Jp Z19pZmluZm8tPnJvdXRlciwgbmVpZ2hfbm9kZSk7CiAJc3Bpbl91bmxvY2tfYmgoJm9yaWdfbm9k ZS0+bmVpZ2hfbGlzdF9sb2NrKTsKIAliYXRhZHZfb3JpZ19pZmluZm9fZnJlZV9yZWYob3JpZ19p ZmluZm8pOwpkaWZmIC0tZ2l0IGEvbmV0L2JhdG1hbi1hZHYvc2VuZC5jIGIvbmV0L2JhdG1hbi1h ZHYvc2VuZC5jCmluZGV4IDNkNjRlZDIwYzM5My4uNjAwNGMyZGU3YjJhIDEwMDY0NAotLS0gYS9u ZXQvYmF0bWFuLWFkdi9zZW5kLmMKKysrIGIvbmV0L2JhdG1hbi1hZHYvc2VuZC5jCkBAIC02MTEs NiArNjExLDkgQEAgYmF0YWR2X3B1cmdlX291dHN0YW5kaW5nX3BhY2tldHMoc3RydWN0IGJhdGFk dl9wcml2ICpiYXRfcHJpdiwKIAogCQlpZiAocGVuZGluZykgewogCQkJaGxpc3RfZGVsKCZmb3J3 X3BhY2tldC0+bGlzdCk7CisJCQlpZiAoIWZvcndfcGFja2V0LT5vd24pCisJCQkJYXRvbWljX2lu YygmYmF0X3ByaXYtPmJjYXN0X3F1ZXVlX2xlZnQpOworCiAJCQliYXRhZHZfZm9yd19wYWNrZXRf ZnJlZShmb3J3X3BhY2tldCk7CiAJCX0KIAl9CkBAIC02MzgsNiArNjQxLDkgQEAgYmF0YWR2X3B1 cmdlX291dHN0YW5kaW5nX3BhY2tldHMoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdiwKIAog CQlpZiAocGVuZGluZykgewogCQkJaGxpc3RfZGVsKCZmb3J3X3BhY2tldC0+bGlzdCk7CisJCQlp ZiAoIWZvcndfcGFja2V0LT5vd24pCisJCQkJYXRvbWljX2luYygmYmF0X3ByaXYtPmJhdG1hbl9x dWV1ZV9sZWZ0KTsKKwogCQkJYmF0YWR2X2ZvcndfcGFja2V0X2ZyZWUoZm9yd19wYWNrZXQpOwog CQl9CiAJfQpkaWZmIC0tZ2l0IGEvbmV0L2JhdG1hbi1hZHYvc29mdC1pbnRlcmZhY2UuYyBiL25l dC9iYXRtYW4tYWR2L3NvZnQtaW50ZXJmYWNlLmMKaW5kZXggMzM0OGVjY2YzZTIyLi5hZDQwZjE3 MDgyNGQgMTAwNjQ0Ci0tLSBhL25ldC9iYXRtYW4tYWR2L3NvZnQtaW50ZXJmYWNlLmMKKysrIGIv bmV0L2JhdG1hbi1hZHYvc29mdC1pbnRlcmZhY2UuYwpAQCAtMzc4LDExICszNzgsMTcgQEAgdm9p ZCBiYXRhZHZfaW50ZXJmYWNlX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpzb2Z0X2lmYWNlLAogCSAq LwogCW5mX3Jlc2V0KHNrYik7CiAKKwlpZiAodW5saWtlbHkoIXBza2JfbWF5X3B1bGwoc2tiLCBF VEhfSExFTikpKQorCQlnb3RvIGRyb3BwZWQ7CisKIAl2aWQgPSBiYXRhZHZfZ2V0X3ZpZChza2Is IDApOwogCWV0aGhkciA9IGV0aF9oZHIoc2tiKTsKIAogCXN3aXRjaCAobnRvaHMoZXRoaGRyLT5o X3Byb3RvKSkgewogCWNhc2UgRVRIX1BfODAyMVE6CisJCWlmICghcHNrYl9tYXlfcHVsbChza2Is IFZMQU5fRVRIX0hMRU4pKQorCQkJZ290byBkcm9wcGVkOworCiAJCXZoZHIgPSAoc3RydWN0IHZs YW5fZXRoaGRyICopc2tiLT5kYXRhOwogCiAJCWlmICh2aGRyLT5oX3ZsYW5fZW5jYXBzdWxhdGVk X3Byb3RvICE9IGV0aGVydHlwZSkKQEAgLTM5NCw4ICs0MDAsNiBAQCB2b2lkIGJhdGFkdl9pbnRl cmZhY2Vfcngoc3RydWN0IG5ldF9kZXZpY2UgKnNvZnRfaWZhY2UsCiAJfQogCiAJLyogc2tiLT5k ZXYgJiBza2ItPnBrdF90eXBlIGFyZSBzZXQgaGVyZSAqLwotCWlmICh1bmxpa2VseSghcHNrYl9t YXlfcHVsbChza2IsIEVUSF9ITEVOKSkpCi0JCWdvdG8gZHJvcHBlZDsKIAlza2ItPnByb3RvY29s ID0gZXRoX3R5cGVfdHJhbnMoc2tiLCBzb2Z0X2lmYWNlKTsKIAogCS8qIHNob3VsZCBub3QgYmUg bmVjZXNzYXJ5IGFueW1vcmUgYXMgd2UgdXNlIHNrYl9wdWxsX3Jjc3VtKCkKZGlmZiAtLWdpdCBh L25ldC9iYXRtYW4tYWR2L3RyYW5zbGF0aW9uLXRhYmxlLmMgYi9uZXQvYmF0bWFuLWFkdi90cmFu c2xhdGlvbi10YWJsZS5jCmluZGV4IDU3OTY4ZDMwZjhjOC4uZWFkZjExZmEwODNkIDEwMDY0NAot LS0gYS9uZXQvYmF0bWFuLWFkdi90cmFuc2xhdGlvbi10YWJsZS5jCisrKyBiL25ldC9iYXRtYW4t YWR2L3RyYW5zbGF0aW9uLXRhYmxlLmMKQEAgLTE3Niw4ICsxNzYsMTAgQEAgYmF0YWR2X3R0X2ds b2JhbF9oYXNoX2ZpbmQoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdiwgY29uc3QgdWludDhf dCAqYWRkciwKIHN0YXRpYyB2b2lkCiBiYXRhZHZfdHRfbG9jYWxfZW50cnlfZnJlZV9yZWYoc3Ry dWN0IGJhdGFkdl90dF9sb2NhbF9lbnRyeSAqdHRfbG9jYWxfZW50cnkpCiB7Ci0JaWYgKGF0b21p Y19kZWNfYW5kX3Rlc3QoJnR0X2xvY2FsX2VudHJ5LT5jb21tb24ucmVmY291bnQpKQorCWlmIChh dG9taWNfZGVjX2FuZF90ZXN0KCZ0dF9sb2NhbF9lbnRyeS0+Y29tbW9uLnJlZmNvdW50KSkgewor CQliYXRhZHZfc29mdGlmX3ZsYW5fZnJlZV9yZWYodHRfbG9jYWxfZW50cnktPnZsYW4pOwogCQlr ZnJlZV9yY3UodHRfbG9jYWxfZW50cnksIGNvbW1vbi5yY3UpOworCX0KIH0KIAogLyoqCkBAIC01 OTUsNiArNTk3LDcgQEAgYm9vbCBiYXRhZHZfdHRfbG9jYWxfYWRkKHN0cnVjdCBuZXRfZGV2aWNl ICpzb2Z0X2lmYWNlLCBjb25zdCB1aW50OF90ICphZGRyLAogCWF0b21pY19zZXQoJnR0X2xvY2Fs LT5jb21tb24ucmVmY291bnQsIDIpOwogCXR0X2xvY2FsLT5sYXN0X3NlZW4gPSBqaWZmaWVzOwog CXR0X2xvY2FsLT5jb21tb24uYWRkZWRfYXQgPSB0dF9sb2NhbC0+bGFzdF9zZWVuOworCXR0X2xv Y2FsLT52bGFuID0gdmxhbjsKIAogCS8qIHRoZSBiYXRtYW4gaW50ZXJmYWNlIG1hYyBhbmQgbXVs dGljYXN0IGFkZHJlc3NlcyBzaG91bGQgbmV2ZXIgYmUKIAkgKiBwdXJnZWQKQEAgLTkwOCw3ICs5 MTEsNiBAQCBpbnQgYmF0YWR2X3R0X2xvY2FsX3NlcV9wcmludF90ZXh0KHN0cnVjdCBzZXFfZmls ZSAqc2VxLCB2b2lkICpvZmZzZXQpCiAJc3RydWN0IGJhdGFkdl90dF9jb21tb25fZW50cnkgKnR0 X2NvbW1vbl9lbnRyeTsKIAlzdHJ1Y3QgYmF0YWR2X3R0X2xvY2FsX2VudHJ5ICp0dF9sb2NhbDsK IAlzdHJ1Y3QgYmF0YWR2X2hhcmRfaWZhY2UgKnByaW1hcnlfaWY7Ci0Jc3RydWN0IGJhdGFkdl9z b2Z0aWZfdmxhbiAqdmxhbjsKIAlzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZDsKIAl1bnNpZ25lZCBz aG9ydCB2aWQ7CiAJdWludDMyX3QgaTsKQEAgLTk0NCwxNCArOTQ2LDYgQEAgaW50IGJhdGFkdl90 dF9sb2NhbF9zZXFfcHJpbnRfdGV4dChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqb2Zmc2V0 KQogCQkJbGFzdF9zZWVuX21zZWNzID0gbGFzdF9zZWVuX21zZWNzICUgMTAwMDsKIAogCQkJbm9f cHVyZ2UgPSB0dF9jb21tb25fZW50cnktPmZsYWdzICYgbnBfZmxhZzsKLQotCQkJdmxhbiA9IGJh dGFkdl9zb2Z0aWZfdmxhbl9nZXQoYmF0X3ByaXYsIHZpZCk7Ci0JCQlpZiAoIXZsYW4pIHsKLQkJ CQlzZXFfcHJpbnRmKHNlcSwgIkNhbm5vdCByZXRyaWV2ZSBWTEFOICVkXG4iLAotCQkJCQkgICBC QVRBRFZfUFJJTlRfVklEKHZpZCkpOwotCQkJCWNvbnRpbnVlOwotCQkJfQotCiAJCQlzZXFfcHJp bnRmKHNlcSwKIAkJCQkgICAiICogJXBNICU0aSBbJWMlYyVjJWMlYyVjXSAlM3UuJTAzdSAgICgl Iy44eClcbiIsCiAJCQkJICAgdHRfY29tbW9uX2VudHJ5LT5hZGRyLApAQCAtOTY5LDkgKzk2Myw3 IEBAIGludCBiYXRhZHZfdHRfbG9jYWxfc2VxX3ByaW50X3RleHQoc3RydWN0IHNlcV9maWxlICpz ZXEsIHZvaWQgKm9mZnNldCkKIAkJCQkgICAgQkFUQURWX1RUX0NMSUVOVF9JU09MQSA/ICdJJyA6 ICcuJyksCiAJCQkJICAgbm9fcHVyZ2UgPyAwIDogbGFzdF9zZWVuX3NlY3MsCiAJCQkJICAgbm9f cHVyZ2UgPyAwIDogbGFzdF9zZWVuX21zZWNzLAotCQkJCSAgIHZsYW4tPnR0LmNyYyk7Ci0KLQkJ CWJhdGFkdl9zb2Z0aWZfdmxhbl9mcmVlX3JlZih2bGFuKTsKKwkJCQkgICB0dF9sb2NhbC0+dmxh bi0+dHQuY3JjKTsKIAkJfQogCQlyY3VfcmVhZF91bmxvY2soKTsKIAl9CkBAIC0xMDE2LDcgKzEw MDgsNiBAQCB1aW50MTZfdCBiYXRhZHZfdHRfbG9jYWxfcmVtb3ZlKHN0cnVjdCBiYXRhZHZfcHJp diAqYmF0X3ByaXYsCiB7CiAJc3RydWN0IGJhdGFkdl90dF9sb2NhbF9lbnRyeSAqdHRfbG9jYWxf ZW50cnk7CiAJdWludDE2X3QgZmxhZ3MsIGN1cnJfZmxhZ3MgPSBCQVRBRFZfTk9fRkxBR1M7Ci0J c3RydWN0IGJhdGFkdl9zb2Z0aWZfdmxhbiAqdmxhbjsKIAl2b2lkICp0dF9lbnRyeV9leGlzdHM7 CiAKIAl0dF9sb2NhbF9lbnRyeSA9IGJhdGFkdl90dF9sb2NhbF9oYXNoX2ZpbmQoYmF0X3ByaXYs IGFkZHIsIHZpZCk7CkBAIC0xMDU2LDE0ICsxMDQ3LDYgQEAgdWludDE2X3QgYmF0YWR2X3R0X2xv Y2FsX3JlbW92ZShzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2LAogCS8qIGV4dHJhIGNhbGwg dG8gZnJlZSB0aGUgbG9jYWwgdHQgZW50cnkgKi8KIAliYXRhZHZfdHRfbG9jYWxfZW50cnlfZnJl ZV9yZWYodHRfbG9jYWxfZW50cnkpOwogCi0JLyogZGVjcmVhc2UgdGhlIHJlZmVyZW5jZSBoZWxk IGZvciB0aGlzIHZsYW4gKi8KLQl2bGFuID0gYmF0YWR2X3NvZnRpZl92bGFuX2dldChiYXRfcHJp diwgdmlkKTsKLQlpZiAoIXZsYW4pCi0JCWdvdG8gb3V0OwotCi0JYmF0YWR2X3NvZnRpZl92bGFu X2ZyZWVfcmVmKHZsYW4pOwotCWJhdGFkdl9zb2Z0aWZfdmxhbl9mcmVlX3JlZih2bGFuKTsKLQog b3V0OgogCWlmICh0dF9sb2NhbF9lbnRyeSkKIAkJYmF0YWR2X3R0X2xvY2FsX2VudHJ5X2ZyZWVf cmVmKHR0X2xvY2FsX2VudHJ5KTsKQEAgLTExMzYsNyArMTExOSw2IEBAIHN0YXRpYyB2b2lkIGJh dGFkdl90dF9sb2NhbF90YWJsZV9mcmVlKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYpCiAJ c3BpbmxvY2tfdCAqbGlzdF9sb2NrOyAvKiBwcm90ZWN0cyB3cml0ZSBhY2Nlc3MgdG8gdGhlIGhh c2ggbGlzdHMgKi8KIAlzdHJ1Y3QgYmF0YWR2X3R0X2NvbW1vbl9lbnRyeSAqdHRfY29tbW9uX2Vu dHJ5OwogCXN0cnVjdCBiYXRhZHZfdHRfbG9jYWxfZW50cnkgKnR0X2xvY2FsOwotCXN0cnVjdCBi YXRhZHZfc29mdGlmX3ZsYW4gKnZsYW47CiAJc3RydWN0IGhsaXN0X25vZGUgKm5vZGVfdG1wOwog CXN0cnVjdCBobGlzdF9oZWFkICpoZWFkOwogCXVpbnQzMl90IGk7CkBAIC0xMTU4LDE0ICsxMTQw LDYgQEAgc3RhdGljIHZvaWQgYmF0YWR2X3R0X2xvY2FsX3RhYmxlX2ZyZWUoc3RydWN0IGJhdGFk dl9wcml2ICpiYXRfcHJpdikKIAkJCQkJCXN0cnVjdCBiYXRhZHZfdHRfbG9jYWxfZW50cnksCiAJ CQkJCQljb21tb24pOwogCi0JCQkvKiBkZWNyZWFzZSB0aGUgcmVmZXJlbmNlIGhlbGQgZm9yIHRo aXMgdmxhbiAqLwotCQkJdmxhbiA9IGJhdGFkdl9zb2Z0aWZfdmxhbl9nZXQoYmF0X3ByaXYsCi0J CQkJCQkgICAgICB0dF9jb21tb25fZW50cnktPnZpZCk7Ci0JCQlpZiAodmxhbikgewotCQkJCWJh dGFkdl9zb2Z0aWZfdmxhbl9mcmVlX3JlZih2bGFuKTsKLQkJCQliYXRhZHZfc29mdGlmX3ZsYW5f ZnJlZV9yZWYodmxhbik7Ci0JCQl9Ci0KIAkJCWJhdGFkdl90dF9sb2NhbF9lbnRyeV9mcmVlX3Jl Zih0dF9sb2NhbCk7CiAJCX0KIAkJc3Bpbl91bmxvY2tfYmgobGlzdF9sb2NrKTsKQEAgLTMxNzQs NyArMzE0OCw2IEBAIHN0YXRpYyB2b2lkIGJhdGFkdl90dF9sb2NhbF9wdXJnZV9wZW5kaW5nX2Ns aWVudHMoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdikKIAlzdHJ1Y3QgYmF0YWR2X2hhc2h0 YWJsZSAqaGFzaCA9IGJhdF9wcml2LT50dC5sb2NhbF9oYXNoOwogCXN0cnVjdCBiYXRhZHZfdHRf Y29tbW9uX2VudHJ5ICp0dF9jb21tb247CiAJc3RydWN0IGJhdGFkdl90dF9sb2NhbF9lbnRyeSAq dHRfbG9jYWw7Ci0Jc3RydWN0IGJhdGFkdl9zb2Z0aWZfdmxhbiAqdmxhbjsKIAlzdHJ1Y3QgaGxp c3Rfbm9kZSAqbm9kZV90bXA7CiAJc3RydWN0IGhsaXN0X2hlYWQgKmhlYWQ7CiAJc3BpbmxvY2tf dCAqbGlzdF9sb2NrOyAvKiBwcm90ZWN0cyB3cml0ZSBhY2Nlc3MgdG8gdGhlIGhhc2ggbGlzdHMg Ki8KQEAgLTMyMDQsMTMgKzMxNzcsNiBAQCBzdGF0aWMgdm9pZCBiYXRhZHZfdHRfbG9jYWxfcHVy Z2VfcGVuZGluZ19jbGllbnRzKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYpCiAJCQkJCQlz dHJ1Y3QgYmF0YWR2X3R0X2xvY2FsX2VudHJ5LAogCQkJCQkJY29tbW9uKTsKIAotCQkJLyogZGVj cmVhc2UgdGhlIHJlZmVyZW5jZSBoZWxkIGZvciB0aGlzIHZsYW4gKi8KLQkJCXZsYW4gPSBiYXRh ZHZfc29mdGlmX3ZsYW5fZ2V0KGJhdF9wcml2LCB0dF9jb21tb24tPnZpZCk7Ci0JCQlpZiAodmxh bikgewotCQkJCWJhdGFkdl9zb2Z0aWZfdmxhbl9mcmVlX3JlZih2bGFuKTsKLQkJCQliYXRhZHZf c29mdGlmX3ZsYW5fZnJlZV9yZWYodmxhbik7Ci0JCQl9Ci0KIAkJCWJhdGFkdl90dF9sb2NhbF9l bnRyeV9mcmVlX3JlZih0dF9sb2NhbCk7CiAJCX0KIAkJc3Bpbl91bmxvY2tfYmgobGlzdF9sb2Nr KTsKZGlmZiAtLWdpdCBhL25ldC9iYXRtYW4tYWR2L3R5cGVzLmggYi9uZXQvYmF0bWFuLWFkdi90 eXBlcy5oCmluZGV4IDI3ZGRkYjQ1MzcyNS4uNTNmMjgzMzU1MmYzIDEwMDY0NAotLS0gYS9uZXQv YmF0bWFuLWFkdi90eXBlcy5oCisrKyBiL25ldC9iYXRtYW4tYWR2L3R5cGVzLmgKQEAgLTkzNCwx MCArOTM0LDEyIEBAIHN0cnVjdCBiYXRhZHZfdHRfY29tbW9uX2VudHJ5IHsKICAqIHN0cnVjdCBi YXRhZHZfdHRfbG9jYWxfZW50cnkgLSB0cmFuc2xhdGlvbiB0YWJsZSBsb2NhbCBlbnRyeSBkYXRh CiAgKiBAY29tbW9uOiBnZW5lcmFsIHRyYW5zbGF0aW9uIHRhYmxlIGRhdGEKICAqIEBsYXN0X3Nl ZW46IHRpbWVzdGFtcCB1c2VkIGZvciBwdXJnaW5nIHN0YWxlIHR0IGxvY2FsIGVudHJpZXMKKyAq IEB2bGFuOiBzb2Z0LWludGVyZmFjZSB2bGFuIG9mIHRoZSBlbnRyeQogICovCiBzdHJ1Y3QgYmF0 YWR2X3R0X2xvY2FsX2VudHJ5IHsKIAlzdHJ1Y3QgYmF0YWR2X3R0X2NvbW1vbl9lbnRyeSBjb21t b247CiAJdW5zaWduZWQgbG9uZyBsYXN0X3NlZW47CisJc3RydWN0IGJhdGFkdl9zb2Z0aWZfdmxh biAqdmxhbjsKIH07CiAKIC8qKgpkaWZmIC0tZ2l0IGEvbmV0L2NlcGgvYXV0aC5jIGIvbmV0L2Nl cGgvYXV0aC5jCmluZGV4IDZiOTIzYmNhYTJhNC4uMmJjNTk2NWZkZDFlIDEwMDY0NAotLS0gYS9u ZXQvY2VwaC9hdXRoLmMKKysrIGIvbmV0L2NlcGgvYXV0aC5jCkBAIC0yOTMsMTMgKzI5Myw5IEBA IGludCBjZXBoX2F1dGhfY3JlYXRlX2F1dGhvcml6ZXIoc3RydWN0IGNlcGhfYXV0aF9jbGllbnQg KmFjLAogfQogRVhQT1JUX1NZTUJPTChjZXBoX2F1dGhfY3JlYXRlX2F1dGhvcml6ZXIpOwogCi12 b2lkIGNlcGhfYXV0aF9kZXN0cm95X2F1dGhvcml6ZXIoc3RydWN0IGNlcGhfYXV0aF9jbGllbnQg KmFjLAotCQkJCSAgc3RydWN0IGNlcGhfYXV0aG9yaXplciAqYSkKK3ZvaWQgY2VwaF9hdXRoX2Rl c3Ryb3lfYXV0aG9yaXplcihzdHJ1Y3QgY2VwaF9hdXRob3JpemVyICphKQogewotCW11dGV4X2xv Y2soJmFjLT5tdXRleCk7Ci0JaWYgKGFjLT5vcHMgJiYgYWMtPm9wcy0+ZGVzdHJveV9hdXRob3Jp emVyKQotCQlhYy0+b3BzLT5kZXN0cm95X2F1dGhvcml6ZXIoYWMsIGEpOwotCW11dGV4X3VubG9j aygmYWMtPm11dGV4KTsKKwlhLT5kZXN0cm95KGEpOwogfQogRVhQT1JUX1NZTUJPTChjZXBoX2F1 dGhfZGVzdHJveV9hdXRob3JpemVyKTsKIApkaWZmIC0tZ2l0IGEvbmV0L2NlcGgvYXV0aF9ub25l LmMgYi9uZXQvY2VwaC9hdXRoX25vbmUuYwppbmRleCA4YzkzZmE4ZDgxYmMuLjVmODM2ZjAyYWUz NiAxMDA2NDQKLS0tIGEvbmV0L2NlcGgvYXV0aF9ub25lLmMKKysrIGIvbmV0L2NlcGgvYXV0aF9u b25lLmMKQEAgLTE2LDcgKzE2LDYgQEAgc3RhdGljIHZvaWQgcmVzZXQoc3RydWN0IGNlcGhfYXV0 aF9jbGllbnQgKmFjKQogCXN0cnVjdCBjZXBoX2F1dGhfbm9uZV9pbmZvICp4aSA9IGFjLT5wcml2 YXRlOwogCiAJeGktPnN0YXJ0aW5nID0gdHJ1ZTsKLQl4aS0+YnVpbHRfYXV0aG9yaXplciA9IGZh bHNlOwogfQogCiBzdGF0aWMgdm9pZCBkZXN0cm95KHN0cnVjdCBjZXBoX2F1dGhfY2xpZW50ICph YykKQEAgLTM5LDYgKzM4LDI3IEBAIHN0YXRpYyBpbnQgc2hvdWxkX2F1dGhlbnRpY2F0ZShzdHJ1 Y3QgY2VwaF9hdXRoX2NsaWVudCAqYWMpCiAJcmV0dXJuIHhpLT5zdGFydGluZzsKIH0KIAorc3Rh dGljIGludCBjZXBoX2F1dGhfbm9uZV9idWlsZF9hdXRob3JpemVyKHN0cnVjdCBjZXBoX2F1dGhf Y2xpZW50ICphYywKKwkJCQkJICAgc3RydWN0IGNlcGhfbm9uZV9hdXRob3JpemVyICphdSkKK3sK Kwl2b2lkICpwID0gYXUtPmJ1ZjsKKwl2b2lkICpjb25zdCBlbmQgPSBwICsgc2l6ZW9mKGF1LT5i dWYpOworCWludCByZXQ7CisKKwljZXBoX2VuY29kZV84X3NhZmUoJnAsIGVuZCwgMSwgZV9yYW5n ZSk7CisJcmV0ID0gY2VwaF9lbnRpdHlfbmFtZV9lbmNvZGUoYWMtPm5hbWUsICZwLCBlbmQpOwor CWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJY2VwaF9lbmNvZGVfNjRfc2FmZSgmcCwg ZW5kLCBhYy0+Z2xvYmFsX2lkLCBlX3JhbmdlKTsKKwlhdS0+YnVmX2xlbiA9IHAgLSAodm9pZCAq KWF1LT5idWY7CisJZG91dCgiJXMgYnVpbHQgYXV0aG9yaXplciBsZW4gJWRcbiIsIF9fZnVuY19f LCBhdS0+YnVmX2xlbik7CisJcmV0dXJuIDA7CisKK2VfcmFuZ2U6CisJcmV0dXJuIC1FUkFOR0U7 Cit9CisKIHN0YXRpYyBpbnQgYnVpbGRfcmVxdWVzdChzdHJ1Y3QgY2VwaF9hdXRoX2NsaWVudCAq YWMsIHZvaWQgKmJ1Ziwgdm9pZCAqZW5kKQogewogCXJldHVybiAwOwpAQCAtNTcsMzIgKzc3LDMy IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3JlcGx5KHN0cnVjdCBjZXBoX2F1dGhfY2xpZW50ICphYywg aW50IHJlc3VsdCwKIAlyZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgdm9pZCBjZXBoX2F1dGhf bm9uZV9kZXN0cm95X2F1dGhvcml6ZXIoc3RydWN0IGNlcGhfYXV0aG9yaXplciAqYSkKK3sKKwlr ZnJlZShhKTsKK30KKwogLyoKLSAqIGJ1aWxkIGFuICdhdXRob3JpemVyJyB3aXRoIG91ciBlbnRp dHlfbmFtZSBhbmQgZ2xvYmFsX2lkLiAgd2UgY2FuCi0gKiByZXVzZSBhIHNpbmdsZSBzdGF0aWMg Y29weSBzaW5jZSBpdCBpcyBpZGVudGljYWwgZm9yIGFsbCBzZXJ2aWNlcwotICogd2UgY29ubmVj dCB0by4KKyAqIGJ1aWxkIGFuICdhdXRob3JpemVyJyB3aXRoIG91ciBlbnRpdHlfbmFtZSBhbmQg Z2xvYmFsX2lkLiAgaXQgaXMKKyAqIGlkZW50aWNhbCBmb3IgYWxsIHNlcnZpY2VzIHdlIGNvbm5l Y3QgdG8uCiAgKi8KIHN0YXRpYyBpbnQgY2VwaF9hdXRoX25vbmVfY3JlYXRlX2F1dGhvcml6ZXIo CiAJc3RydWN0IGNlcGhfYXV0aF9jbGllbnQgKmFjLCBpbnQgcGVlcl90eXBlLAogCXN0cnVjdCBj ZXBoX2F1dGhfaGFuZHNoYWtlICphdXRoKQogewotCXN0cnVjdCBjZXBoX2F1dGhfbm9uZV9pbmZv ICphaSA9IGFjLT5wcml2YXRlOwotCXN0cnVjdCBjZXBoX25vbmVfYXV0aG9yaXplciAqYXUgPSAm YWktPmF1OwotCXZvaWQgKnAsICplbmQ7CisJc3RydWN0IGNlcGhfbm9uZV9hdXRob3JpemVyICph dTsKIAlpbnQgcmV0OwogCi0JaWYgKCFhaS0+YnVpbHRfYXV0aG9yaXplcikgewotCQlwID0gYXUt PmJ1ZjsKLQkJZW5kID0gcCArIHNpemVvZihhdS0+YnVmKTsKLQkJY2VwaF9lbmNvZGVfOCgmcCwg MSk7Ci0JCXJldCA9IGNlcGhfZW50aXR5X25hbWVfZW5jb2RlKGFjLT5uYW1lLCAmcCwgZW5kIC0g OCk7Ci0JCWlmIChyZXQgPCAwKQotCQkJZ290byBiYWQ7Ci0JCWNlcGhfZGVjb2RlX25lZWQoJnAs IGVuZCwgc2l6ZW9mKHU2NCksIGJhZDIpOwotCQljZXBoX2VuY29kZV82NCgmcCwgYWMtPmdsb2Jh bF9pZCk7Ci0JCWF1LT5idWZfbGVuID0gcCAtICh2b2lkICopYXUtPmJ1ZjsKLQkJYWktPmJ1aWx0 X2F1dGhvcml6ZXIgPSB0cnVlOwotCQlkb3V0KCJidWlsdCBhdXRob3JpemVyIGxlbiAlZFxuIiwg YXUtPmJ1Zl9sZW4pOworCWF1ID0ga21hbGxvYyhzaXplb2YoKmF1KSwgR0ZQX05PRlMpOworCWlm ICghYXUpCisJCXJldHVybiAtRU5PTUVNOworCisJYXUtPmJhc2UuZGVzdHJveSA9IGNlcGhfYXV0 aF9ub25lX2Rlc3Ryb3lfYXV0aG9yaXplcjsKKworCXJldCA9IGNlcGhfYXV0aF9ub25lX2J1aWxk X2F1dGhvcml6ZXIoYWMsIGF1KTsKKwlpZiAocmV0KSB7CisJCWtmcmVlKGF1KTsKKwkJcmV0dXJu IHJldDsKIAl9CiAKIAlhdXRoLT5hdXRob3JpemVyID0gKHN0cnVjdCBjZXBoX2F1dGhvcml6ZXIg KikgYXU7CkBAIC05MiwxNyArMTEyLDYgQEAgc3RhdGljIGludCBjZXBoX2F1dGhfbm9uZV9jcmVh dGVfYXV0aG9yaXplcigKIAlhdXRoLT5hdXRob3JpemVyX3JlcGx5X2J1Zl9sZW4gPSBzaXplb2Yg KGF1LT5yZXBseV9idWYpOwogCiAJcmV0dXJuIDA7Ci0KLWJhZDI6Ci0JcmV0ID0gLUVSQU5HRTsK LWJhZDoKLQlyZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgdm9pZCBjZXBoX2F1dGhfbm9uZV9kZXN0 cm95X2F1dGhvcml6ZXIoc3RydWN0IGNlcGhfYXV0aF9jbGllbnQgKmFjLAotCQkJCSAgICAgIHN0 cnVjdCBjZXBoX2F1dGhvcml6ZXIgKmEpCi17Ci0JLyogbm90aGluZyB0byBkbyAqLwogfQogCiBz dGF0aWMgY29uc3Qgc3RydWN0IGNlcGhfYXV0aF9jbGllbnRfb3BzIGNlcGhfYXV0aF9ub25lX29w cyA9IHsKQEAgLTExNCw3ICsxMjMsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNlcGhfYXV0aF9j bGllbnRfb3BzIGNlcGhfYXV0aF9ub25lX29wcyA9IHsKIAkuYnVpbGRfcmVxdWVzdCA9IGJ1aWxk X3JlcXVlc3QsCiAJLmhhbmRsZV9yZXBseSA9IGhhbmRsZV9yZXBseSwKIAkuY3JlYXRlX2F1dGhv cml6ZXIgPSBjZXBoX2F1dGhfbm9uZV9jcmVhdGVfYXV0aG9yaXplciwKLQkuZGVzdHJveV9hdXRo b3JpemVyID0gY2VwaF9hdXRoX25vbmVfZGVzdHJveV9hdXRob3JpemVyLAogfTsKIAogaW50IGNl cGhfYXV0aF9ub25lX2luaXQoc3RydWN0IGNlcGhfYXV0aF9jbGllbnQgKmFjKQpAQCAtMTI3LDcg KzEzNSw2IEBAIGludCBjZXBoX2F1dGhfbm9uZV9pbml0KHN0cnVjdCBjZXBoX2F1dGhfY2xpZW50 ICphYykKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAl4aS0+c3RhcnRpbmcgPSB0cnVlOwotCXhpLT5i dWlsdF9hdXRob3JpemVyID0gZmFsc2U7CiAKIAlhYy0+cHJvdG9jb2wgPSBDRVBIX0FVVEhfTk9O RTsKIAlhYy0+cHJpdmF0ZSA9IHhpOwpkaWZmIC0tZ2l0IGEvbmV0L2NlcGgvYXV0aF9ub25lLmgg Yi9uZXQvY2VwaC9hdXRoX25vbmUuaAppbmRleCAwNTlhM2NlNGI1M2YuLjYyMDIxNTM1YWU0YSAx MDA2NDQKLS0tIGEvbmV0L2NlcGgvYXV0aF9ub25lLmgKKysrIGIvbmV0L2NlcGgvYXV0aF9ub25l LmgKQEAgLTEyLDYgKzEyLDcgQEAKICAqLwogCiBzdHJ1Y3QgY2VwaF9ub25lX2F1dGhvcml6ZXIg eworCXN0cnVjdCBjZXBoX2F1dGhvcml6ZXIgYmFzZTsKIAljaGFyIGJ1ZlsxMjhdOwogCWludCBi dWZfbGVuOwogCWNoYXIgcmVwbHlfYnVmWzBdOwpAQCAtMTksOCArMjAsNiBAQCBzdHJ1Y3QgY2Vw aF9ub25lX2F1dGhvcml6ZXIgewogCiBzdHJ1Y3QgY2VwaF9hdXRoX25vbmVfaW5mbyB7CiAJYm9v bCBzdGFydGluZzsKLQlib29sIGJ1aWx0X2F1dGhvcml6ZXI7Ci0Jc3RydWN0IGNlcGhfbm9uZV9h dXRob3JpemVyIGF1OyAgIC8qIHdlIG9ubHkgbmVlZCBvbmU7IGl0J3Mgc3RhdGljICovCiB9Owog CiBpbnQgY2VwaF9hdXRoX25vbmVfaW5pdChzdHJ1Y3QgY2VwaF9hdXRoX2NsaWVudCAqYWMpOwpk aWZmIC0tZ2l0IGEvbmV0L2NlcGgvYXV0aF94LmMgYi9uZXQvY2VwaC9hdXRoX3guYwppbmRleCBk ZTY2NjJiMTRlMWYuLmFiMmNjNTViNzNhMCAxMDA2NDQKLS0tIGEvbmV0L2NlcGgvYXV0aF94LmMK KysrIGIvbmV0L2NlcGgvYXV0aF94LmMKQEAgLTUzOCw2ICs1MzgsMTQgQEAgc3RhdGljIGludCBj ZXBoX3hfaGFuZGxlX3JlcGx5KHN0cnVjdCBjZXBoX2F1dGhfY2xpZW50ICphYywgaW50IHJlc3Vs dCwKIAlyZXR1cm4gLUVBR0FJTjsKIH0KIAorc3RhdGljIHZvaWQgY2VwaF94X2Rlc3Ryb3lfYXV0 aG9yaXplcihzdHJ1Y3QgY2VwaF9hdXRob3JpemVyICphKQoreworCXN0cnVjdCBjZXBoX3hfYXV0 aG9yaXplciAqYXUgPSAodm9pZCAqKWE7CisKKwljZXBoX2J1ZmZlcl9wdXQoYXUtPmJ1Zik7CisJ a2ZyZWUoYXUpOworfQorCiBzdGF0aWMgaW50IGNlcGhfeF9jcmVhdGVfYXV0aG9yaXplcigKIAlz dHJ1Y3QgY2VwaF9hdXRoX2NsaWVudCAqYWMsIGludCBwZWVyX3R5cGUsCiAJc3RydWN0IGNlcGhf YXV0aF9oYW5kc2hha2UgKmF1dGgpCkBAIC01NTQsNiArNTYyLDggQEAgc3RhdGljIGludCBjZXBo X3hfY3JlYXRlX2F1dGhvcml6ZXIoCiAJaWYgKCFhdSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKKwlh dS0+YmFzZS5kZXN0cm95ID0gY2VwaF94X2Rlc3Ryb3lfYXV0aG9yaXplcjsKKwogCXJldCA9IGNl cGhfeF9idWlsZF9hdXRob3JpemVyKGFjLCB0aCwgYXUpOwogCWlmIChyZXQpIHsKIAkJa2ZyZWUo YXUpOwpAQCAtNjE4LDE2ICs2MjgsNiBAQCBzdGF0aWMgaW50IGNlcGhfeF92ZXJpZnlfYXV0aG9y aXplcl9yZXBseShzdHJ1Y3QgY2VwaF9hdXRoX2NsaWVudCAqYWMsCiAJcmV0dXJuIHJldDsKIH0K IAotc3RhdGljIHZvaWQgY2VwaF94X2Rlc3Ryb3lfYXV0aG9yaXplcihzdHJ1Y3QgY2VwaF9hdXRo X2NsaWVudCAqYWMsCi0JCQkJICAgICAgc3RydWN0IGNlcGhfYXV0aG9yaXplciAqYSkKLXsKLQlz dHJ1Y3QgY2VwaF94X2F1dGhvcml6ZXIgKmF1ID0gKHZvaWQgKilhOwotCi0JY2VwaF9idWZmZXJf cHV0KGF1LT5idWYpOwotCWtmcmVlKGF1KTsKLX0KLQotCiBzdGF0aWMgdm9pZCBjZXBoX3hfcmVz ZXQoc3RydWN0IGNlcGhfYXV0aF9jbGllbnQgKmFjKQogewogCXN0cnVjdCBjZXBoX3hfaW5mbyAq eGkgPSBhYy0+cHJpdmF0ZTsKQEAgLTY3OCw3ICs2NzgsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGNlcGhfYXV0aF9jbGllbnRfb3BzIGNlcGhfeF9vcHMgPSB7CiAJLmNyZWF0ZV9hdXRob3JpemVy ID0gY2VwaF94X2NyZWF0ZV9hdXRob3JpemVyLAogCS51cGRhdGVfYXV0aG9yaXplciA9IGNlcGhf eF91cGRhdGVfYXV0aG9yaXplciwKIAkudmVyaWZ5X2F1dGhvcml6ZXJfcmVwbHkgPSBjZXBoX3hf dmVyaWZ5X2F1dGhvcml6ZXJfcmVwbHksCi0JLmRlc3Ryb3lfYXV0aG9yaXplciA9IGNlcGhfeF9k ZXN0cm95X2F1dGhvcml6ZXIsCiAJLmludmFsaWRhdGVfYXV0aG9yaXplciA9IGNlcGhfeF9pbnZh bGlkYXRlX2F1dGhvcml6ZXIsCiAJLnJlc2V0ID0gIGNlcGhfeF9yZXNldCwKIAkuZGVzdHJveSA9 IGNlcGhfeF9kZXN0cm95LApkaWZmIC0tZ2l0IGEvbmV0L2NlcGgvYXV0aF94LmggYi9uZXQvY2Vw aC9hdXRoX3guaAppbmRleCA2NWVlNzIwODJkOTkuLjJiMDZmNDYyN2MyMyAxMDA2NDQKLS0tIGEv bmV0L2NlcGgvYXV0aF94LmgKKysrIGIvbmV0L2NlcGgvYXV0aF94LmgKQEAgLTI2LDYgKzI2LDcg QEAgc3RydWN0IGNlcGhfeF90aWNrZXRfaGFuZGxlciB7CiAKIAogc3RydWN0IGNlcGhfeF9hdXRo b3JpemVyIHsKKwlzdHJ1Y3QgY2VwaF9hdXRob3JpemVyIGJhc2U7CiAJc3RydWN0IGNlcGhfYnVm ZmVyICpidWY7CiAJdW5zaWduZWQgaW50IHNlcnZpY2U7CiAJdTY0IG5vbmNlOwpkaWZmIC0tZ2l0 IGEvbmV0L2NlcGgvb3NkX2NsaWVudC5jIGIvbmV0L2NlcGgvb3NkX2NsaWVudC5jCmluZGV4IDQ0 NjU0OGRlMDlmOC4uYjMwNzc2YWIxZTZlIDEwMDY0NAotLS0gYS9uZXQvY2VwaC9vc2RfY2xpZW50 LmMKKysrIGIvbmV0L2NlcGgvb3NkX2NsaWVudC5jCkBAIC05OTMsMTAgKzk5Myw5IEBAIHN0YXRp YyB2b2lkIHB1dF9vc2Qoc3RydWN0IGNlcGhfb3NkICpvc2QpCiB7CiAJZG91dCgicHV0X29zZCAl cCAlZCAtPiAlZFxuIiwgb3NkLCBhdG9taWNfcmVhZCgmb3NkLT5vX3JlZiksCiAJICAgICBhdG9t aWNfcmVhZCgmb3NkLT5vX3JlZikgLSAxKTsKLQlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmb3Nk LT5vX3JlZikgJiYgb3NkLT5vX2F1dGguYXV0aG9yaXplcikgewotCQlzdHJ1Y3QgY2VwaF9hdXRo X2NsaWVudCAqYWMgPSBvc2QtPm9fb3NkYy0+Y2xpZW50LT5tb25jLmF1dGg7Ci0KLQkJY2VwaF9h dXRoX2Rlc3Ryb3lfYXV0aG9yaXplcihhYywgb3NkLT5vX2F1dGguYXV0aG9yaXplcik7CisJaWYg KGF0b21pY19kZWNfYW5kX3Rlc3QoJm9zZC0+b19yZWYpKSB7CisJCWlmIChvc2QtPm9fYXV0aC5h dXRob3JpemVyKQorCQkJY2VwaF9hdXRoX2Rlc3Ryb3lfYXV0aG9yaXplcihvc2QtPm9fYXV0aC5h dXRob3JpemVyKTsKIAkJa2ZyZWUob3NkKTsKIAl9CiB9CkBAIC0yODcyLDcgKzI4NzEsNyBAQCBz dGF0aWMgc3RydWN0IGNlcGhfYXV0aF9oYW5kc2hha2UgKmdldF9hdXRob3JpemVyKHN0cnVjdCBj ZXBoX2Nvbm5lY3Rpb24gKmNvbiwKIAlzdHJ1Y3QgY2VwaF9hdXRoX2hhbmRzaGFrZSAqYXV0aCA9 ICZvLT5vX2F1dGg7CiAKIAlpZiAoZm9yY2VfbmV3ICYmIGF1dGgtPmF1dGhvcml6ZXIpIHsKLQkJ Y2VwaF9hdXRoX2Rlc3Ryb3lfYXV0aG9yaXplcihhYywgYXV0aC0+YXV0aG9yaXplcik7CisJCWNl cGhfYXV0aF9kZXN0cm95X2F1dGhvcml6ZXIoYXV0aC0+YXV0aG9yaXplcik7CiAJCWF1dGgtPmF1 dGhvcml6ZXIgPSBOVUxMOwogCX0KIAlpZiAoIWF1dGgtPmF1dGhvcml6ZXIpIHsKZGlmZiAtLWdp dCBhL25ldC9jb3JlL3J0bmV0bGluay5jIGIvbmV0L2NvcmUvcnRuZXRsaW5rLmMKaW5kZXggMTQ3 YzYzNzg0MDUyLi5lNDY2NmFmNzQxNDEgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL3J0bmV0bGluay5j CisrKyBiL25ldC9jb3JlL3J0bmV0bGluay5jCkBAIC0xMDEzLDE0ICsxMDEzLDE2IEBAIHN0YXRp YyBpbnQgcnRubF9maWxsX2lmaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2Rl dmljZSAqZGV2LAogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAogCWlmICgxKSB7Ci0JCXN0cnVj dCBydG5sX2xpbmtfaWZtYXAgbWFwID0gewotCQkJLm1lbV9zdGFydCAgID0gZGV2LT5tZW1fc3Rh cnQsCi0JCQkubWVtX2VuZCAgICAgPSBkZXYtPm1lbV9lbmQsCi0JCQkuYmFzZV9hZGRyICAgPSBk ZXYtPmJhc2VfYWRkciwKLQkJCS5pcnEgICAgICAgICA9IGRldi0+aXJxLAotCQkJLmRtYSAgICAg ICAgID0gZGV2LT5kbWEsCi0JCQkucG9ydCAgICAgICAgPSBkZXYtPmlmX3BvcnQsCi0JCX07CisJ CXN0cnVjdCBydG5sX2xpbmtfaWZtYXAgbWFwOworCisJCW1lbXNldCgmbWFwLCAwLCBzaXplb2Yo bWFwKSk7CisJCW1hcC5tZW1fc3RhcnQgICA9IGRldi0+bWVtX3N0YXJ0OworCQltYXAubWVtX2Vu ZCAgICAgPSBkZXYtPm1lbV9lbmQ7CisJCW1hcC5iYXNlX2FkZHIgICA9IGRldi0+YmFzZV9hZGRy OworCQltYXAuaXJxICAgICAgICAgPSBkZXYtPmlycTsKKwkJbWFwLmRtYSAgICAgICAgID0gZGV2 LT5kbWE7CisJCW1hcC5wb3J0ICAgICAgICA9IGRldi0+aWZfcG9ydDsKKwogCQlpZiAobmxhX3B1 dChza2IsIElGTEFfTUFQLCBzaXplb2YobWFwKSwgJm1hcCkpCiAJCQlnb3RvIG5sYV9wdXRfZmFp bHVyZTsKIAl9CmRpZmYgLS1naXQgYS9uZXQvbGxjL2FmX2xsYy5jIGIvbmV0L2xsYy9hZl9sbGMu YwppbmRleCAwMDgwZDJiMGE4YWUuLmE3NmE2N2QzOGVjMyAxMDA2NDQKLS0tIGEvbmV0L2xsYy9h Zl9sbGMuYworKysgYi9uZXQvbGxjL2FmX2xsYy5jCkBAIC02MjYsNiArNjI2LDcgQEAgc3RhdGlj IHZvaWQgbGxjX2Ntc2dfcmN2KHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNrX2J1ZmYgKnNr YikKIAlpZiAobGxjLT5jbXNnX2ZsYWdzICYgTExDX0NNU0dfUEtUSU5GTykgewogCQlzdHJ1Y3Qg bGxjX3BrdGluZm8gaW5mbzsKIAorCQltZW1zZXQoJmluZm8sIDAsIHNpemVvZihpbmZvKSk7CiAJ CWluZm8ubHBpX2lmaW5kZXggPSBsbGNfc2soc2tiLT5zayktPmRldi0+aWZpbmRleDsKIAkJbGxj X3BkdV9kZWNvZGVfZHNhcChza2IsICZpbmZvLmxwaV9zYXApOwogCQlsbGNfcGR1X2RlY29kZV9k YShza2IsIGluZm8ubHBpX21hYyk7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50 cmFja19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMKaW5kZXggMWY0 Zjk1NGM0YjQ3Li4wNTQ2MzhjODI0ZGQgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29u bnRyYWNrX2NvcmUuYworKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMKQEAg LTE3OTEsNiArMTc5MSw3IEBAIHZvaWQgbmZfY29ubnRyYWNrX2luaXRfZW5kKHZvaWQpCiAKIGlu dCBuZl9jb25udHJhY2tfaW5pdF9uZXQoc3RydWN0IG5ldCAqbmV0KQogeworCXN0YXRpYyBhdG9t aWM2NF90IHVuaXF1ZV9pZDsKIAlpbnQgcmV0ID0gLUVOT01FTTsKIAlpbnQgY3B1OwogCkBAIC0x ODE0LDcgKzE4MTUsOCBAQCBpbnQgbmZfY29ubnRyYWNrX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5l dCkKIAlpZiAoIW5ldC0+Y3Quc3RhdCkKIAkJZ290byBlcnJfcGNwdV9saXN0czsKIAotCW5ldC0+ Y3Quc2xhYm5hbWUgPSBrYXNwcmludGYoR0ZQX0tFUk5FTCwgIm5mX2Nvbm50cmFja18lcCIsIG5l dCk7CisJbmV0LT5jdC5zbGFibmFtZSA9IGthc3ByaW50ZihHRlBfS0VSTkVMLCAibmZfY29ubnRy YWNrXyVsbHUiLAorCQkJCSh1NjQpYXRvbWljNjRfaW5jX3JldHVybigmdW5pcXVlX2lkKSk7CiAJ aWYgKCFuZXQtPmN0LnNsYWJuYW1lKQogCQlnb3RvIGVycl9zbGFibmFtZTsKIApkaWZmIC0tZ2l0 IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKaW5kZXgg YjVjMzhhYjNhOTNmLi5kNmRmZTY1ZjRhNzQgMTAwNjQ0Ci0tLSBhL25ldC9wYWNrZXQvYWZfcGFj a2V0LmMKKysrIGIvbmV0L3BhY2tldC9hZl9wYWNrZXQuYwpAQCAtMzE1NSw2ICszMTU1LDcgQEAg c3RhdGljIGludCBwYWNrZXRfbWNfYWRkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHBhY2tldF9t cmVxX21heCAqbXJlcSkKIAlpLT5pZmluZGV4ID0gbXJlcS0+bXJfaWZpbmRleDsKIAlpLT5hbGVu ID0gbXJlcS0+bXJfYWxlbjsKIAltZW1jcHkoaS0+YWRkciwgbXJlcS0+bXJfYWRkcmVzcywgaS0+ YWxlbik7CisJbWVtc2V0KGktPmFkZHIgKyBpLT5hbGVuLCAwLCBzaXplb2YoaS0+YWRkcikgLSBp LT5hbGVuKTsKIAlpLT5jb3VudCA9IDE7CiAJaS0+bmV4dCA9IHBvLT5tY2xpc3Q7CiAJcG8tPm1j bGlzdCA9IGk7CmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jIGIvbmV0L3dpcmVs ZXNzL25sODAyMTEuYwppbmRleCBkMzE2YTk1NjgyMzguLjU2OTE4Zjg5YTFkNiAxMDA2NDQKLS0t IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYworKysgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jCkBA IC0xMTc1Miw3ICsxMTc1Miw3IEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9uZXRsaW5rX25vdGlmeShz dHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKiBuYiwKIAlzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2Owog CXN0cnVjdCBjZmc4MDIxMV9iZWFjb25fcmVnaXN0cmF0aW9uICpyZWcsICp0bXA7CiAKLQlpZiAo c3RhdGUgIT0gTkVUTElOS19VUkVMRUFTRSkKKwlpZiAoc3RhdGUgIT0gTkVUTElOS19VUkVMRUFT RSB8fCBub3RpZnktPnByb3RvY29sICE9IE5FVExJTktfR0VORVJJQykKIAkJcmV0dXJuIE5PVElG WV9ET05FOwogCiAJcmN1X3JlYWRfbG9jaygpOwpkaWZmIC0tZ2l0IGEvbmV0L3gyNS94MjVfZmFj aWxpdGllcy5jIGIvbmV0L3gyNS94MjVfZmFjaWxpdGllcy5jCmluZGV4IDdlY2QwNGMyMTM2MC4u OTk3ZmY3YjI1MDliIDEwMDY0NAotLS0gYS9uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmMKKysrIGIv bmV0L3gyNS94MjVfZmFjaWxpdGllcy5jCkBAIC0yNzcsNiArMjc3LDcgQEAgaW50IHgyNV9uZWdv dGlhdGVfZmFjaWxpdGllcyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc29jayAqc2ssCiAK IAltZW1zZXQoJnRoZWlycywgMCwgc2l6ZW9mKHRoZWlycykpOwogCW1lbWNweShuZXcsIG91cnMs IHNpemVvZigqbmV3KSk7CisJbWVtc2V0KGR0ZSwgMCwgc2l6ZW9mKCpkdGUpKTsKIAogCWxlbiA9 IHgyNV9wYXJzZV9mYWNpbGl0aWVzKHNrYiwgJnRoZWlycywgZHRlLCAmeDI1LT52Y19mYWNpbF9t YXNrKTsKIAlpZiAobGVuIDwgMCkKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9oZGEvcGF0Y2hfcmVh bHRlay5jIGIvc291bmQvcGNpL2hkYS9wYXRjaF9yZWFsdGVrLmMKaW5kZXggODhjMzUxZWQ0MTZi Li41MGQ2NjFmZTRkYTAgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9oZGEvcGF0Y2hfcmVhbHRlay5j CisrKyBiL3NvdW5kL3BjaS9oZGEvcGF0Y2hfcmVhbHRlay5jCkBAIC01MDI0LDYgKzUwMjQsNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9wY2lfcXVpcmsgYWxjMjY5X2ZpeHVwX3RibFtdID0g ewogCVNORF9QQ0lfUVVJUksoMHgxN2FhLCAweDUwMzQsICJUaGlua3BhZCBUNDUwIiwgQUxDMjky X0ZJWFVQX1RQVDQ0MF9ET0NLKSwKIAlTTkRfUENJX1FVSVJLKDB4MTdhYSwgMHg1MDM2LCAiVGhp bmtwYWQgVDQ1MHMiLCBBTEMyOTJfRklYVVBfVFBUNDQwX0RPQ0spLAogCVNORF9QQ0lfUVVJUkso MHgxN2FhLCAweDUwM2MsICJUaGlua3BhZCBMNDUwIiwgQUxDMjkyX0ZJWFVQX1RQVDQ0MF9ET0NL KSwKKwlTTkRfUENJX1FVSVJLKDB4MTdhYSwgMHg1MDRhLCAiVGhpbmtQYWQgWDI2MCIsIEFMQzI5 Ml9GSVhVUF9UUFQ0NDBfRE9DSyksCiAJU05EX1BDSV9RVUlSSygweDE3YWEsIDB4NTA0YiwgIlRo aW5rcGFkIiwgQUxDMjkzX0ZJWFVQX0xFTk9WT19TUEtfTk9JU0UpLAogCVNORF9QQ0lfUVVJUkso MHgxN2FhLCAweDUxMDksICJUaGlua3BhZCIsIEFMQzI2OV9GSVhVUF9MSU1JVF9JTlRfTUlDX0JP T1NUKSwKIAlTTkRfUENJX1FVSVJLKDB4MTdhYSwgMHgzYmY4LCAiUXVhbnRhIEZMMSIsIEFMQzI2 OV9GSVhVUF9QQ01fNDRLKSwKQEAgLTU4MjgsNiArNTgyOSw3IEBAIGVudW0gewogCUFMQzY2OF9G SVhVUF9ERUxMX0RJU0FCTEVfQUFNSVgsCiAJQUxDNjY4X0ZJWFVQX0RFTExfWFBTMTMsCiAJQUxD NjYyX0ZJWFVQX0FTVVNfTng1MCwKKwlBTEM2NjhfRklYVVBfQVNVU19OeDUxLAogfTsKIAogc3Rh dGljIGNvbnN0IHN0cnVjdCBoZGFfZml4dXAgYWxjNjYyX2ZpeHVwc1tdID0gewpAQCAtNjA2MCw2 ICs2MDYyLDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaGRhX2ZpeHVwIGFsYzY2Ml9maXh1cHNb XSA9IHsKIAkJLmNoYWluZWQgPSB0cnVlLAogCQkuY2hhaW5faWQgPSBBTEM2NjJfRklYVVBfQkFT U18xQQogCX0sCisJW0FMQzY2OF9GSVhVUF9BU1VTX054NTFdID0geworCQkudHlwZSA9IEhEQV9G SVhVUF9QSU5TLAorCQkudi5waW5zID0gKGNvbnN0IHN0cnVjdCBoZGFfcGludGJsW10pIHsKKwkJ CXsweDFhLCAweDkwMTcwMTUxfSwgLyogYmFzcyBzcGVha2VyICovCisJCQl7fQorCQl9LAorCQku Y2hhaW5lZCA9IHRydWUsCisJCS5jaGFpbl9pZCA9IEFMQzY2Ml9GSVhVUF9CQVNTX0NITUFQLAor CX0sCiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9wY2lfcXVpcmsgYWxjNjYyX2ZpeHVw X3RibFtdID0gewpAQCAtNjA3OSwxMSArNjA5MCwxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHNu ZF9wY2lfcXVpcmsgYWxjNjYyX2ZpeHVwX3RibFtdID0gewogCVNORF9QQ0lfUVVJUksoMHgxMDI4 LCAweDA2OTYsICJEZWxsIiwgQUxDNjY4X0ZJWFVQX0RFTExfTUlDX05PX1BSRVNFTkNFKSwKIAlT TkRfUENJX1FVSVJLKDB4MTAyOCwgMHgwNjk4LCAiRGVsbCIsIEFMQzY2OF9GSVhVUF9ERUxMX01J Q19OT19QUkVTRU5DRSksCiAJU05EX1BDSV9RVUlSSygweDEwM2MsIDB4MTYzMiwgIkhQIFJQNTgw MCIsIEFMQzY2Ml9GSVhVUF9IUF9SUDU4MDApLAorCVNORF9QQ0lfUVVJUksoMHgxMDQzLCAweDEw ODAsICJBc3VzIFVYNTAxVlciLCBBTEM2NjhfRklYVVBfSEVBRFNFVF9NT0RFKSwKIAlTTkRfUENJ X1FVSVJLKDB4MTA0MywgMHgxMWNkLCAiQXN1cyBONTUwIiwgQUxDNjYyX0ZJWFVQX0FTVVNfTng1 MCksCiAJU05EX1BDSV9RVUlSSygweDEwNDMsIDB4MTNkZiwgIkFzdXMgTjU1MEpYIiwgQUxDNjYy X0ZJWFVQX0JBU1NfMUEpLAogCVNORF9QQ0lfUVVJUksoMHgxMDQzLCAweDEyOWQsICJBc3VzIE43 NTAiLCBBTEM2NjJfRklYVVBfQVNVU19OeDUwKSwKIAlTTkRfUENJX1FVSVJLKDB4MTA0MywgMHgx NDc3LCAiQVNVUyBONTZWWiIsIEFMQzY2Ml9GSVhVUF9CQVNTX01PREU0X0NITUFQKSwKIAlTTkRf UENJX1FVSVJLKDB4MTA0MywgMHgxNWE3LCAiQVNVUyBVWDUxVlpIIiwgQUxDNjYyX0ZJWFVQX0JB U1NfMTYpLAorCVNORF9QQ0lfUVVJUksoMHgxMDQzLCAweDE3N2QsICJBU1VTIE41NTEiLCBBTEM2 NjhfRklYVVBfQVNVU19OeDUxKSwKKwlTTkRfUENJX1FVSVJLKDB4MTA0MywgMHgxN2JkLCAiQVNV UyBONzUxIiwgQUxDNjY4X0ZJWFVQX0FTVVNfTng1MSksCiAJU05EX1BDSV9RVUlSSygweDEwNDMs IDB4MWI3MywgIkFTVVMgTjU1U0YiLCBBTEM2NjJfRklYVVBfQkFTU18xNiksCiAJU05EX1BDSV9R VUlSSygweDEwNDMsIDB4MWJmMywgIkFTVVMgTjc2VloiLCBBTEM2NjJfRklYVVBfQkFTU19NT0RF NF9DSE1BUCksCiAJU05EX1BDSV9RVUlSSygweDEwNDMsIDB4ODQ2OSwgIkFTVVMgbW9ibyIsIEFM QzY2Ml9GSVhVUF9OT19KQUNLX0RFVEVDVCksCmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNz L3J0NTY0MC5jIGIvc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYwppbmRleCBmZGZiMDliZWNlOTEu LjdhZWI2OWJhY2U3YSAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy9ydDU2NDAuYworKysg Yi9zb3VuZC9zb2MvY29kZWNzL3J0NTY0MC5jCkBAIC0zNjEsNyArMzYxLDcgQEAgc3RhdGljIHVu c2lnbmVkIGludCBic3RfdGx2W10gPSB7CiAKIC8qIEludGVyZmFjZSBkYXRhIHNlbGVjdCAqLwog c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBydDU2NDBfZGF0YV9zZWxlY3RbXSA9IHsKLQkiTm9y bWFsIiwgImxlZnQgY29weSB0byByaWdodCIsICJyaWdodCBjb3B5IHRvIGxlZnQiLCAiU3dhcCJ9 OworCSJOb3JtYWwiLCAiU3dhcCIsICJsZWZ0IGNvcHkgdG8gcmlnaHQiLCAicmlnaHQgY29weSB0 byBsZWZ0In07CiAKIHN0YXRpYyBTT0NfRU5VTV9TSU5HTEVfREVDTChydDU2NDBfaWYxX2RhY19l bnVtLCBSVDU2NDBfRElHX0lORl9EQVRBLAogCQkJICAgIFJUNTY0MF9JRjFfREFDX1NFTF9TRlQs IHJ0NTY0MF9kYXRhX3NlbGVjdCk7CmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL3J0NTY0 MC5oIGIvc291bmQvc29jL2NvZGVjcy9ydDU2NDAuaAppbmRleCA1OGViZTk2Yjg2ZGEuLjVkYWRm N2U5NGUxMCAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy9ydDU2NDAuaAorKysgYi9zb3Vu ZC9zb2MvY29kZWNzL3J0NTY0MC5oCkBAIC00NDIsMzkgKzQ0MiwzOSBAQAogI2RlZmluZSBSVDU2 NDBfSUYxX0RBQ19TRUxfTUFTSwkJCSgweDMgPDwgMTQpCiAjZGVmaW5lIFJUNTY0MF9JRjFfREFD X1NFTF9TRlQJCQkxNAogI2RlZmluZSBSVDU2NDBfSUYxX0RBQ19TRUxfTk9SCQkJKDB4MCA8PCAx NCkKLSNkZWZpbmUgUlQ1NjQwX0lGMV9EQUNfU0VMX0wyUgkJCSgweDEgPDwgMTQpCi0jZGVmaW5l IFJUNTY0MF9JRjFfREFDX1NFTF9SMkwJCQkoMHgyIDw8IDE0KQotI2RlZmluZSBSVDU2NDBfSUYx X0RBQ19TRUxfU1dBUAkJCSgweDMgPDwgMTQpCisjZGVmaW5lIFJUNTY0MF9JRjFfREFDX1NFTF9T V0FQCQkJKDB4MSA8PCAxNCkKKyNkZWZpbmUgUlQ1NjQwX0lGMV9EQUNfU0VMX0wyUgkJCSgweDIg PDwgMTQpCisjZGVmaW5lIFJUNTY0MF9JRjFfREFDX1NFTF9SMkwJCQkoMHgzIDw8IDE0KQogI2Rl ZmluZSBSVDU2NDBfSUYxX0FEQ19TRUxfTUFTSwkJCSgweDMgPDwgMTIpCiAjZGVmaW5lIFJUNTY0 MF9JRjFfQURDX1NFTF9TRlQJCQkxMgogI2RlZmluZSBSVDU2NDBfSUYxX0FEQ19TRUxfTk9SCQkJ KDB4MCA8PCAxMikKLSNkZWZpbmUgUlQ1NjQwX0lGMV9BRENfU0VMX0wyUgkJCSgweDEgPDwgMTIp Ci0jZGVmaW5lIFJUNTY0MF9JRjFfQURDX1NFTF9SMkwJCQkoMHgyIDw8IDEyKQotI2RlZmluZSBS VDU2NDBfSUYxX0FEQ19TRUxfU1dBUAkJCSgweDMgPDwgMTIpCisjZGVmaW5lIFJUNTY0MF9JRjFf QURDX1NFTF9TV0FQCQkJKDB4MSA8PCAxMikKKyNkZWZpbmUgUlQ1NjQwX0lGMV9BRENfU0VMX0wy UgkJCSgweDIgPDwgMTIpCisjZGVmaW5lIFJUNTY0MF9JRjFfQURDX1NFTF9SMkwJCQkoMHgzIDw8 IDEyKQogI2RlZmluZSBSVDU2NDBfSUYyX0RBQ19TRUxfTUFTSwkJCSgweDMgPDwgMTApCiAjZGVm aW5lIFJUNTY0MF9JRjJfREFDX1NFTF9TRlQJCQkxMAogI2RlZmluZSBSVDU2NDBfSUYyX0RBQ19T RUxfTk9SCQkJKDB4MCA8PCAxMCkKLSNkZWZpbmUgUlQ1NjQwX0lGMl9EQUNfU0VMX0wyUgkJCSgw eDEgPDwgMTApCi0jZGVmaW5lIFJUNTY0MF9JRjJfREFDX1NFTF9SMkwJCQkoMHgyIDw8IDEwKQot I2RlZmluZSBSVDU2NDBfSUYyX0RBQ19TRUxfU1dBUAkJCSgweDMgPDwgMTApCisjZGVmaW5lIFJU NTY0MF9JRjJfREFDX1NFTF9TV0FQCQkJKDB4MSA8PCAxMCkKKyNkZWZpbmUgUlQ1NjQwX0lGMl9E QUNfU0VMX0wyUgkJCSgweDIgPDwgMTApCisjZGVmaW5lIFJUNTY0MF9JRjJfREFDX1NFTF9SMkwJ CQkoMHgzIDw8IDEwKQogI2RlZmluZSBSVDU2NDBfSUYyX0FEQ19TRUxfTUFTSwkJCSgweDMgPDwg OCkKICNkZWZpbmUgUlQ1NjQwX0lGMl9BRENfU0VMX1NGVAkJCTgKICNkZWZpbmUgUlQ1NjQwX0lG Ml9BRENfU0VMX05PUgkJCSgweDAgPDwgOCkKLSNkZWZpbmUgUlQ1NjQwX0lGMl9BRENfU0VMX0wy UgkJCSgweDEgPDwgOCkKLSNkZWZpbmUgUlQ1NjQwX0lGMl9BRENfU0VMX1IyTAkJCSgweDIgPDwg OCkKLSNkZWZpbmUgUlQ1NjQwX0lGMl9BRENfU0VMX1NXQVAJCQkoMHgzIDw8IDgpCisjZGVmaW5l IFJUNTY0MF9JRjJfQURDX1NFTF9TV0FQCQkJKDB4MSA8PCA4KQorI2RlZmluZSBSVDU2NDBfSUYy X0FEQ19TRUxfTDJSCQkJKDB4MiA8PCA4KQorI2RlZmluZSBSVDU2NDBfSUYyX0FEQ19TRUxfUjJM CQkJKDB4MyA8PCA4KQogI2RlZmluZSBSVDU2NDBfSUYzX0RBQ19TRUxfTUFTSwkJCSgweDMgPDwg NikKICNkZWZpbmUgUlQ1NjQwX0lGM19EQUNfU0VMX1NGVAkJCTYKICNkZWZpbmUgUlQ1NjQwX0lG M19EQUNfU0VMX05PUgkJCSgweDAgPDwgNikKLSNkZWZpbmUgUlQ1NjQwX0lGM19EQUNfU0VMX0wy UgkJCSgweDEgPDwgNikKLSNkZWZpbmUgUlQ1NjQwX0lGM19EQUNfU0VMX1IyTAkJCSgweDIgPDwg NikKLSNkZWZpbmUgUlQ1NjQwX0lGM19EQUNfU0VMX1NXQVAJCQkoMHgzIDw8IDYpCisjZGVmaW5l IFJUNTY0MF9JRjNfREFDX1NFTF9TV0FQCQkJKDB4MSA8PCA2KQorI2RlZmluZSBSVDU2NDBfSUYz X0RBQ19TRUxfTDJSCQkJKDB4MiA8PCA2KQorI2RlZmluZSBSVDU2NDBfSUYzX0RBQ19TRUxfUjJM CQkJKDB4MyA8PCA2KQogI2RlZmluZSBSVDU2NDBfSUYzX0FEQ19TRUxfTUFTSwkJCSgweDMgPDwg NCkKICNkZWZpbmUgUlQ1NjQwX0lGM19BRENfU0VMX1NGVAkJCTQKICNkZWZpbmUgUlQ1NjQwX0lG M19BRENfU0VMX05PUgkJCSgweDAgPDwgNCkKLSNkZWZpbmUgUlQ1NjQwX0lGM19BRENfU0VMX0wy UgkJCSgweDEgPDwgNCkKLSNkZWZpbmUgUlQ1NjQwX0lGM19BRENfU0VMX1IyTAkJCSgweDIgPDwg NCkKLSNkZWZpbmUgUlQ1NjQwX0lGM19BRENfU0VMX1NXQVAJCQkoMHgzIDw8IDQpCisjZGVmaW5l IFJUNTY0MF9JRjNfQURDX1NFTF9TV0FQCQkJKDB4MSA8PCA0KQorI2RlZmluZSBSVDU2NDBfSUYz X0FEQ19TRUxfTDJSCQkJKDB4MiA8PCA0KQorI2RlZmluZSBSVDU2NDBfSUYzX0FEQ19TRUxfUjJM CQkJKDB4MyA8PCA0KQogCiAvKiBSRUMgTGVmdCBNaXhlciBDb250cm9sIDEgKDB4M2IpICovCiAj ZGVmaW5lIFJUNTY0MF9HX0hQX0xfUk1fTF9NQVNLCQkJKDB4NyA8PCAxMykKZGlmZiAtLWdpdCBh L3NvdW5kL3VzYi9taXhlcl9tYXBzLmMgYi9zb3VuZC91c2IvbWl4ZXJfbWFwcy5jCmluZGV4IGU4 OTc4OWE5YmFlZC4uYmZjYzI5NWM3NDEyIDEwMDY0NAotLS0gYS9zb3VuZC91c2IvbWl4ZXJfbWFw cy5jCisrKyBiL3NvdW5kL3VzYi9taXhlcl9tYXBzLmMKQEAgLTM0NCw2ICszNDQsMTYgQEAgc3Rh dGljIHN0cnVjdCB1c2JtaXhfbmFtZV9tYXAgYm9zZV9jb21wYW5pb241X21hcFtdID0gewogfTsK IAogLyoKKyAqIERlbGwgdXNiIGRvY2sgd2l0aCBBTEM0MDIwIGNvZGVjIGhhZCBhIGZpcm13YXJl IHByb2JsZW0gd2hlcmUgaXQgZ290CisgKiBzY3Jld2VkIHVwIHdoZW4gemVybyB2b2x1bWUgaXMg cGFzc2VkOyBqdXN0IHNraXAgaXQgYXMgYSB3b3JrYXJvdW5kCisgKi8KK3N0YXRpYyBjb25zdCBz dHJ1Y3QgdXNibWl4X25hbWVfbWFwIGRlbGxfYWxjNDAyMF9tYXBbXSA9IHsKKwl7IDE2LCBOVUxM IH0sCisJeyAxOSwgTlVMTCB9LAorCXsgMCB9Cit9OworCisvKgogICogQ29udHJvbCBtYXAgZW50 cmllcwogICovCiAKQEAgLTQyNiw2ICs0MzYsMTAgQEAgc3RhdGljIHN0cnVjdCB1c2JtaXhfY3Rs X21hcCB1c2JtaXhfY3RsX21hcHNbXSA9IHsKIAkJLm1hcCA9IGF1cmVvbl81MV8yX21hcCwKIAl9 LAogCXsKKwkJLmlkID0gVVNCX0lEKDB4MGJkYSwgMHg0MDE0KSwKKwkJLm1hcCA9IGRlbGxfYWxj NDAyMF9tYXAsCisJfSwKKwl7CiAJCS5pZCA9IFVTQl9JRCgweDEzZTUsIDB4MDAwMSksCiAJCS5t YXAgPSBzY3JhdGNoX2xpdmVfbWFwLAogCQkuaWdub3JlX2N0bF9lcnJvciA9IDEsCmRpZmYgLS1n aXQgYS90b29scy9saWIvdHJhY2VldmVudC9wYXJzZS1maWx0ZXIuYyBiL3Rvb2xzL2xpYi90cmFj ZWV2ZW50L3BhcnNlLWZpbHRlci5jCmluZGV4IGI1MDIzNDQwMmZjMi4uMTVhNDNlZThlOGI1IDEw MDY0NAotLS0gYS90b29scy9saWIvdHJhY2VldmVudC9wYXJzZS1maWx0ZXIuYworKysgYi90b29s cy9saWIvdHJhY2VldmVudC9wYXJzZS1maWx0ZXIuYwpAQCAtMTE2MywxMSArMTE2MywxMSBAQCBw cm9jZXNzX2ZpbHRlcihzdHJ1Y3QgZXZlbnRfZm9ybWF0ICpldmVudCwgc3RydWN0IGZpbHRlcl9h cmcgKipwYXJnLAogCQljdXJyZW50X29wID0gY3VycmVudF9leHA7CiAKIAlyZXQgPSBjb2xsYXBz ZV90cmVlKGN1cnJlbnRfb3AsIHBhcmcsIGVycm9yX3N0cik7CisJLyogY29sbGFwc2VfdHJlZSgp IG1heSBmcmVlIGN1cnJlbnRfb3AsIGFuZCB1cGRhdGVzIHBhcmcgYWNjb3JkaW5nbHkgKi8KKwlj dXJyZW50X29wID0gTlVMTDsKIAlpZiAocmV0IDwgMCkKIAkJZ290byBmYWlsOwogCi0JKnBhcmcg PSBjdXJyZW50X29wOwotCiAJcmV0dXJuIDA7CiAKICBmYWlsX2FsbG9jOgo= --=-lr9zs3eT/NJsj6S+Ebw6-- --=-J7D48uY+hB5EnXMwU/sw Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABCgAGBQJXXznpAAoJEOe/yOyVhhEJGm4P/isf88bo893cO+OSPZgzjoQ5 9KqUtipDBB83pmE1Q3rynjp88v3XomYsZOnCPgMNuY6S5dviNukUuQF+ukpYXhn+ 7g0oN6FJc5IbmSthKOU7ljw6OA7HntYOpn9c3Z6qayrX042NCMbMWjrrw9HbY6xS pxtlaAHzc5shBsHhf4kY+TVvXZYstJys3F8J88daHjpGeqHVr4FUIyuRxPw+uyfZ 0hHqDtTKo5R6sJs+GpBGyMJqj2lxgvMXOZmyj8HtrijLl6wIJLCKR5jrj5AfO3/j e8dJNfxpGiZiBmysS2izeWjh3U2TkufS7hCNPtqkFEas6DvElDhjiEcvYmlVEmGb PSodYZ78uo/9EBvvj5DD84QOiwUO0nCSiwVAg5jmTpGTaTPvXtMcKr0vhDheEPz1 3DjNhUhkjRXXgEeW2CL5AkRkqovVBIBuJBA4+zHqS3j2u7CebdXsNeQ/GrSKzNlZ 4W4NAvTKhxmY51Hwxvvu6MxPN6kB1n5YjAI9E4+Cl9kj22+9wdnDzZY7qN01vh2X bopeBf/+QoAmJy0KIEg7jiQPRSHaxja6wA5Jqjf0sWgPZM6EkVdFmSylDl/fjn6i 4MUkgaRoJ59ae9Ng9ZLZHlAkHweLVqTMy6wZDDGqSMusiEfhpinDTG03C3yfDR6/ A2YkQ4Ue9RkxSaF2w/eT =lqUb -----END PGP SIGNATURE----- --=-J7D48uY+hB5EnXMwU/sw--