From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v2,19/21] treewide: add checks for the return value of memblock_alloc*() From: Mike Rapoport Message-Id: <1548057848-15136-20-git-send-email-rppt@linux.ibm.com> Date: Mon, 21 Jan 2019 10:04:06 +0200 To: linux-mm@kvack.org Cc: Andrew Morton , Catalin Marinas , Christoph Hellwig , "David S. Miller" , Dennis Zhou , Geert Uytterhoeven , Greentime Hu , Greg Kroah-Hartman , Guan Xuetao , Guo Ren , Heiko Carstens , Mark Salter , Matt Turner , Max Filippov , Michael Ellerman , Michal Simek , Paul Burton , Petr Mladek , Rich Felker , Richard Weinberger , Rob Herring , Russell King , Stafford Horne , Tony Luck , Vineet Gupta , Yoshinori Sato , devicetree@vger.kernel.org, kasan-dev@googlegroups.com, linux-alpha@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-c6x-dev@linux-c6x.org, linux-ia64@vger.kernel.org, linux-kernel@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, linux-snps-arc@lists.infradead.org, linux-um@lists.infradead.org, linux-usb@vger.kernel.org, linux-xtensa@linux-xtensa.org, linuxppc-dev@lists.ozlabs.org, openrisc@lists.librecores.org, sparclinux@vger.kernel.org, uclinux-h8-devel@lists.sourceforge.jp, x86@kernel.org, xen-devel@lists.xenproject.org, Mike Rapoport List-ID: QWRkIGNoZWNrIGZvciB0aGUgcmV0dXJuIHZhbHVlIG9mIG1lbWJsb2NrX2FsbG9jKigpIGZ1bmN0 aW9ucyBhbmQgY2FsbApwYW5pYygpIGluIGNhc2Ugb2YgZXJyb3IuClRoZSBwYW5pYyBtZXNzYWdl IHJlcGVhdHMgdGhlIG9uZSB1c2VkIGJ5IHBhbmljaW5nIG1lbWJsb2NrIGFsbG9jYXRvcnMgd2l0 aAphZGp1c3RtZW50IG9mIHBhcmFtZXRlcnMgdG8gaW5jbHVkZSBvbmx5IHJlbGV2YW50IG9uZXMu CgpUaGUgcmVwbGFjZW1lbnQgd2FzIG1vc3RseSBhdXRvbWF0ZWQgd2l0aCBzZW1hbnRpYyBwYXRj aGVzIGxpa2UgdGhlIG9uZQpiZWxvdyB3aXRoIG1hbnVhbCBtYXNzYWdpbmcgb2YgZm9ybWF0IHN0 cmluZ3MuCgpAQApleHByZXNzaW9uIHB0ciwgc2l6ZSwgYWxpZ247CkBACnB0ciA9IG1lbWJsb2Nr X2FsbG9jKHNpemUsIGFsaWduKTsKKyBpZiAoIXB0cikKKyAJcGFuaWMoIiVzOiBGYWlsZWQgdG8g YWxsb2NhdGUgJWx1IGJ5dGVzIGFsaWduPTB4JWx4XG4iLCBfX2Z1bmNfXywKc2l6ZSwgYWxpZ24p OwoKU2lnbmVkLW9mZi1ieTogTWlrZSBSYXBvcG9ydCA8cnBwdEBsaW51eC5pYm0uY29tPgpSZXZp ZXdlZC1ieTogR3VvIFJlbiA8cmVuX2d1b0BjLXNreS5jb20+ICAgICAgICAgICAgICMgYy1za3kK QWNrZWQtYnk6IFBhdWwgQnVydG9uIDxwYXVsLmJ1cnRvbkBtaXBzLmNvbT4JICAgICAjIE1JUFMK QWNrZWQtYnk6IEhlaWtvIENhcnN0ZW5zIDxoZWlrby5jYXJzdGVuc0BkZS5pYm0uY29tPiAjIHMz OTAKUmV2aWV3ZWQtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4gICAgICAgICAj IFhlbgotLS0KIGFyY2gvYWxwaGEva2VybmVsL2NvcmVfY2lhLmMgICAgICAgICAgICAgIHwgIDMg KysrCiBhcmNoL2FscGhhL2tlcm5lbC9jb3JlX21hcnZlbC5jICAgICAgICAgICB8ICA2ICsrKysr KwogYXJjaC9hbHBoYS9rZXJuZWwvcGNpLW5vb3AuYyAgICAgICAgICAgICAgfCAxMyArKysrKysr KysrKy0tCiBhcmNoL2FscGhhL2tlcm5lbC9wY2kuYyAgICAgICAgICAgICAgICAgICB8IDExICsr KysrKysrKystCiBhcmNoL2FscGhhL2tlcm5lbC9wY2lfaW9tbXUuYyAgICAgICAgICAgICB8IDEy ICsrKysrKysrKysrKwogYXJjaC9hcmMvbW0vaGlnaG1lbS5jICAgICAgICAgICAgICAgICAgICAg fCAgNCArKysrCiBhcmNoL2FybS9rZXJuZWwvc2V0dXAuYyAgICAgICAgICAgICAgICAgICB8ICA2 ICsrKysrKwogYXJjaC9hcm0vbW0vbW11LmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNCAr KysrKysrKysrKysrLQogYXJjaC9hcm02NC9rZXJuZWwvc2V0dXAuYyAgICAgICAgICAgICAgICAg fCAgOCArKysrKy0tLQogYXJjaC9hcm02NC9tbS9rYXNhbl9pbml0LmMgICAgICAgICAgICAgICAg fCAxMCArKysrKysrKysrCiBhcmNoL2M2eC9tbS9kbWEtY29oZXJlbnQuYyAgICAgICAgICAgICAg ICB8ICA0ICsrKysKIGFyY2gvYzZ4L21tL2luaXQuYyAgICAgICAgICAgICAgICAgICAgICAgIHwg IDMgKysrCiBhcmNoL2Nza3kvbW0vaGlnaG1lbS5jICAgICAgICAgICAgICAgICAgICB8ICA1ICsr KysrCiBhcmNoL2g4MzAwL21tL2luaXQuYyAgICAgICAgICAgICAgICAgICAgICB8ICAzICsrKwog YXJjaC9tNjhrL2F0YXJpL3N0cmFtLmMgICAgICAgICAgICAgICAgICAgfCAgNCArKysrCiBhcmNo L202OGsvbW0vaW5pdC5jICAgICAgICAgICAgICAgICAgICAgICB8ICAzICsrKwogYXJjaC9tNjhr L21tL21jZm1tdS5jICAgICAgICAgICAgICAgICAgICAgfCAgNiArKysrKysKIGFyY2gvbTY4ay9t bS9tb3Rvcm9sYS5jICAgICAgICAgICAgICAgICAgIHwgIDkgKysrKysrKysrCiBhcmNoL202OGsv bW0vc3VuM21tdS5jICAgICAgICAgICAgICAgICAgICB8ICA2ICsrKysrKwogYXJjaC9tNjhrL3N1 bjMvc3VuM2R2bWEuYyAgICAgICAgICAgICAgICAgfCAgMyArKysKIGFyY2gvbWljcm9ibGF6ZS9t bS9pbml0LmMgICAgICAgICAgICAgICAgIHwgIDggKysrKysrLS0KIGFyY2gvbWlwcy9jYXZpdW0t b2N0ZW9uL2RtYS1vY3Rlb24uYyAgICAgIHwgIDMgKysrCiBhcmNoL21pcHMva2VybmVsL3NldHVw LmMgICAgICAgICAgICAgICAgICB8ICAzICsrKwogYXJjaC9taXBzL2tlcm5lbC90cmFwcy5jICAg ICAgICAgICAgICAgICAgfCAgMyArKysKIGFyY2gvbWlwcy9tbS9pbml0LmMgICAgICAgICAgICAg ICAgICAgICAgIHwgIDUgKysrKysKIGFyY2gvbmRzMzIvbW0vaW5pdC5jICAgICAgICAgICAgICAg ICAgICAgIHwgMTIgKysrKysrKysrKysrCiBhcmNoL29wZW5yaXNjL21tL2lvcmVtYXAuYyAgICAg ICAgICAgICAgICB8ICA4ICsrKysrKy0tCiBhcmNoL3Bvd2VycGMva2VybmVsL2R0X2NwdV9mdHJz LmMgICAgICAgICB8ICA1ICsrKysrCiBhcmNoL3Bvd2VycGMva2VybmVsL3BjaV8zMi5jICAgICAg ICAgICAgICB8ICAzICsrKwogYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1cC1jb21tb24uYyAgICAg ICAgfCAgMyArKysKIGFyY2gvcG93ZXJwYy9rZXJuZWwvc2V0dXBfNjQuYyAgICAgICAgICAgIHwg IDQgKysrKwogYXJjaC9wb3dlcnBjL2xpYi9hbGxvYy5jICAgICAgICAgICAgICAgICAgfCAgMyAr KysKIGFyY2gvcG93ZXJwYy9tbS9oYXNoX3V0aWxzXzY0LmMgICAgICAgICAgIHwgIDMgKysrCiBh cmNoL3Bvd2VycGMvbW0vbW11X2NvbnRleHRfbm9oYXNoLmMgICAgICB8ICA5ICsrKysrKysrKwog YXJjaC9wb3dlcnBjL21tL3BndGFibGUtYm9vazNlLmMgICAgICAgICAgfCAxMiArKysrKysrKysr LS0KIGFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWJvb2szczY0LmMgICAgICAgIHwgIDMgKysrCiBh cmNoL3Bvd2VycGMvbW0vcGd0YWJsZS1yYWRpeC5jICAgICAgICAgICB8ICA5ICsrKysrKysrLQog YXJjaC9wb3dlcnBjL21tL3BwY19tbXVfMzIuYyAgICAgICAgICAgICAgfCAgMyArKysKIGFyY2gv cG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2lvbW11LmMgICAgIHwgIDMgKysrCiBhcmNoL3Bvd2Vy cGMvcGxhdGZvcm1zL3Bvd2VybWFjL252cmFtLmMgICB8ICAzICsrKwogYXJjaC9wb3dlcnBjL3Bs YXRmb3Jtcy9wb3dlcm52L29wYWwuYyAgICAgfCAgMyArKysKIGFyY2gvcG93ZXJwYy9wbGF0Zm9y bXMvcG93ZXJudi9wY2ktaW9kYS5jIHwgIDggKysrKysrKysKIGFyY2gvcG93ZXJwYy9wbGF0Zm9y bXMvcHMzL3NldHVwLmMgICAgICAgIHwgIDMgKysrCiBhcmNoL3Bvd2VycGMvc3lzZGV2L21zaV9i aXRtYXAuYyAgICAgICAgICB8ICAzICsrKwogYXJjaC9zMzkwL2tlcm5lbC9zZXR1cC5jICAgICAg ICAgICAgICAgICAgfCAxMyArKysrKysrKysrKysrCiBhcmNoL3MzOTAva2VybmVsL3NtcC5jICAg ICAgICAgICAgICAgICAgICB8ICA1ICsrKystCiBhcmNoL3MzOTAva2VybmVsL3RvcG9sb2d5LmMg ICAgICAgICAgICAgICB8ICA2ICsrKysrKwogYXJjaC9zMzkwL251bWEvbW9kZV9lbXUuYyAgICAg ICAgICAgICAgICAgfCAgMyArKysKIGFyY2gvczM5MC9udW1hL251bWEuYyAgICAgICAgICAgICAg ICAgICAgIHwgIDYgKysrKystCiBhcmNoL3NoL21tL2luaXQuYyAgICAgICAgICAgICAgICAgICAg ICAgICB8ICA2ICsrKysrKwogYXJjaC9zaC9tbS9udW1hLmMgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgNCArKysrCiBhcmNoL3VtL2RyaXZlcnMvbmV0X2tlcm4uYyAgICAgICAgICAgICAgICB8 ICAzICsrKwogYXJjaC91bS9kcml2ZXJzL3ZlY3Rvcl9rZXJuLmMgICAgICAgICAgICAgfCAgMyAr KysKIGFyY2gvdW0va2VybmVsL2luaXRyZC5jICAgICAgICAgICAgICAgICAgIHwgIDIgKysKIGFy Y2gvdW0va2VybmVsL21lbS5jICAgICAgICAgICAgICAgICAgICAgIHwgMTYgKysrKysrKysrKysr KysrKwogYXJjaC91bmljb3JlMzIva2VybmVsL3NldHVwLmMgICAgICAgICAgICAgfCAgNCArKysr CiBhcmNoL3VuaWNvcmUzMi9tbS9tbXUuYyAgICAgICAgICAgICAgICAgICB8IDE1ICsrKysrKysr KysrKystLQogYXJjaC94ODYva2VybmVsL2FjcGkvYm9vdC5jICAgICAgICAgICAgICAgfCAgMyAr KysKIGFyY2gveDg2L2tlcm5lbC9hcGljL2lvX2FwaWMuYyAgICAgICAgICAgIHwgIDUgKysrKysK IGFyY2gveDg2L2tlcm5lbC9lODIwLmMgICAgICAgICAgICAgICAgICAgIHwgIDMgKysrCiBhcmNo L3g4Ni9wbGF0Zm9ybS9vbHBjL29scGNfZHQuYyAgICAgICAgICB8ICAzICsrKwogYXJjaC94ODYv eGVuL3AybS5jICAgICAgICAgICAgICAgICAgICAgICAgfCAxMSArKysrKysrKystLQogYXJjaC94 dGVuc2EvbW0va2FzYW5faW5pdC5jICAgICAgICAgICAgICAgfCAgNCArKysrCiBhcmNoL3h0ZW5z YS9tbS9tbXUuYyAgICAgICAgICAgICAgICAgICAgICB8ICAzICsrKwogZHJpdmVycy9jbGsvdGkv Y2xrLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMyArKysKIGRyaXZlcnMvbWFjaW50b3NoL3Nt dS5jICAgICAgICAgICAgICAgICAgIHwgIDMgKysrCiBkcml2ZXJzL29mL2ZkdC5jICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICA4ICsrKysrKystCiBkcml2ZXJzL29mL3VuaXR0ZXN0LmMgICAg ICAgICAgICAgICAgICAgICB8ICA4ICsrKysrKystCiBkcml2ZXJzL3hlbi9zd2lvdGxiLXhlbi5j ICAgICAgICAgICAgICAgICB8ICA3ICsrKysrLS0KIGtlcm5lbC9wb3dlci9zbmFwc2hvdC5jICAg ICAgICAgICAgICAgICAgIHwgIDMgKysrCiBsaWIvY3B1bWFzay5jICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAzICsrKwogbW0va2FzYW4vaW5pdC5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAxMCArKysrKysrKy0tCiBtbS9zcGFyc2UuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDE5ICsrKysrKysrKysrKysrKysrLS0KIDczIGZpbGVzIGNoYW5nZWQsIDQwOSBp bnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL2FscGhhL2tl cm5lbC9jb3JlX2NpYS5jIGIvYXJjaC9hbHBoYS9rZXJuZWwvY29yZV9jaWEuYwppbmRleCA0NjZj ZDQ0Li5mNDg5MTcwIDEwMDY0NAotLS0gYS9hcmNoL2FscGhhL2tlcm5lbC9jb3JlX2NpYS5jCisr KyBiL2FyY2gvYWxwaGEva2VybmVsL2NvcmVfY2lhLmMKQEAgLTMzMiw2ICszMzIsOSBAQCBjaWFf cHJlcGFyZV90YmlhX3dvcmthcm91bmQoaW50IHdpbmRvdykKIAogCS8qIFVzZSBtaW5pbWFsIDFL IG1hcC4gKi8KIAlwcHRlID0gbWVtYmxvY2tfYWxsb2MoQ0lBX0JST0tFTl9UQklBX1NJWkUsIDMy NzY4KTsKKwlpZiAoIXBwdGUpCisJCXBhbmljKCIlczogRmFpbGVkIHRvIGFsbG9jYXRlICV1IGJ5 dGVzIGFsaWduPTB4JXhcbiIsCisJCSAgICAgIF9fZnVuY19fLCBDSUFfQlJPS0VOX1RCSUFfU0la RSwgMzI3NjgpOwogCXB0ZSA9ICh2aXJ0X3RvX3BoeXMocHB0ZSkgPj4gKFBBR0VfU0hJRlQgLSAx KSkgfCAxOwogCiAJZm9yIChpID0gMDsgaSA8IENJQV9CUk9LRU5fVEJJQV9TSVpFIC8gc2l6ZW9m KHVuc2lnbmVkIGxvbmcpOyArK2kpCmRpZmYgLS1naXQgYS9hcmNoL2FscGhhL2tlcm5lbC9jb3Jl X21hcnZlbC5jIGIvYXJjaC9hbHBoYS9rZXJuZWwvY29yZV9tYXJ2ZWwuYwppbmRleCBjMWQwYzE4 Li4xZGI5ZDBlIDEwMDY0NAotLS0gYS9hcmNoL2FscGhhL2tlcm5lbC9jb3JlX21hcnZlbC5jCisr KyBiL2FyY2gvYWxwaGEva2VybmVsL2NvcmVfbWFydmVsLmMKQEAgLTgzLDYgKzgzLDkgQEAgbWtf cmVzb3VyY2VfbmFtZShpbnQgcGUsIGludCBwb3J0LCBjaGFyICpzdHIpCiAJCiAJc3ByaW50Zih0 bXAsICJQQ0kgJXMgUEUgJWQgUE9SVCAlZCIsIHN0ciwgcGUsIHBvcnQpOwogCW5hbWUgPSBtZW1i bG9ja19hbGxvYyhzdHJsZW4odG1wKSArIDEsIFNNUF9DQUNIRV9CWVRFUyk7CisJaWYgKCFuYW1l KQorCQlwYW5pYygiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAlenUgYnl0ZXNcbiIsIF9fZnVuY19f LAorCQkgICAgICBzdHJsZW4odG1wKSArIDEpOwogCXN0cmNweShuYW1lLCB0bXApOwogCiAJcmV0 dXJuIG5hbWU7CkBAIC0xMTgsNiArMTIxLDkgQEAgYWxsb2NfaW83KHVuc2lnbmVkIGludCBwZSkK IAl9CiAKIAlpbzcgPSBtZW1ibG9ja19hbGxvYyhzaXplb2YoKmlvNyksIFNNUF9DQUNIRV9CWVRF Uyk7CisJaWYgKCFpbzcpCisJCXBhbmljKCIlczogRmFpbGVkIHRvIGFsbG9jYXRlICV6dSBieXRl c1xuIiwgX19mdW5jX18sCisJCSAgICAgIHNpemVvZigqaW83KSk7CiAJaW83LT5wZSA9IHBlOwog CXJhd19zcGluX2xvY2tfaW5pdCgmaW83LT5pcnFfbG9jayk7CiAKZGlmZiAtLWdpdCBhL2FyY2gv YWxwaGEva2VybmVsL3BjaS1ub29wLmMgYi9hcmNoL2FscGhhL2tlcm5lbC9wY2ktbm9vcC5jCmlu ZGV4IDA5MWNmZjMuLmFlODIwNjEgMTAwNjQ0Ci0tLSBhL2FyY2gvYWxwaGEva2VybmVsL3BjaS1u b29wLmMKKysrIGIvYXJjaC9hbHBoYS9rZXJuZWwvcGNpLW5vb3AuYwpAQCAtMzQsNiArMzQsOSBA QCBhbGxvY19wY2lfY29udHJvbGxlcih2b2lkKQogCXN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9z ZTsKIAogCWhvc2UgPSBtZW1ibG9ja19hbGxvYyhzaXplb2YoKmhvc2UpLCBTTVBfQ0FDSEVfQllU RVMpOworCWlmICghaG9zZSkKKwkJcGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJXp1IGJ5 dGVzXG4iLCBfX2Z1bmNfXywKKwkJICAgICAgc2l6ZW9mKCpob3NlKSk7CiAKIAkqaG9zZV90YWls ID0gaG9zZTsKIAlob3NlX3RhaWwgPSAmaG9zZS0+bmV4dDsKQEAgLTQ0LDcgKzQ3LDEzIEBAIGFs bG9jX3BjaV9jb250cm9sbGVyKHZvaWQpCiBzdHJ1Y3QgcmVzb3VyY2UgKiBfX2luaXQKIGFsbG9j X3Jlc291cmNlKHZvaWQpCiB7Ci0JcmV0dXJuIG1lbWJsb2NrX2FsbG9jKHNpemVvZihzdHJ1Y3Qg cmVzb3VyY2UpLCBTTVBfQ0FDSEVfQllURVMpOworCXZvaWQgKnB0ciA9IG1lbWJsb2NrX2FsbG9j KHNpemVvZihzdHJ1Y3QgcmVzb3VyY2UpLCBTTVBfQ0FDSEVfQllURVMpOworCisJaWYgKCFwdHIp CisJCXBhbmljKCIlczogRmFpbGVkIHRvIGFsbG9jYXRlICV6dSBieXRlc1xuIiwgX19mdW5jX18s CisJCSAgICAgIHNpemVvZihzdHJ1Y3QgcmVzb3VyY2UpKTsKKworCXJldHVybiBwdHI7CiB9CiAK IFNZU0NBTExfREVGSU5FMyhwY2ljb25maWdfaW9iYXNlLCBsb25nLCB3aGljaCwgdW5zaWduZWQg bG9uZywgYnVzLApAQCAtNTQsNyArNjMsNyBAQCBTWVNDQUxMX0RFRklORTMocGNpY29uZmlnX2lv YmFzZSwgbG9uZywgd2hpY2gsIHVuc2lnbmVkIGxvbmcsIGJ1cywKIAogCS8qIGZyb20gaG9zZSBv ciBmcm9tIGJ1cy5kZXZmbiAqLwogCWlmICh3aGljaCAmIElPQkFTRV9GUk9NX0hPU0UpIHsKLQkJ Zm9yIChob3NlID0gaG9zZV9oZWFkOyBob3NlOyBob3NlID0gaG9zZS0+bmV4dCkgCisJCWZvciAo aG9zZSA9IGhvc2VfaGVhZDsgaG9zZTsgaG9zZSA9IGhvc2UtPm5leHQpCiAJCQlpZiAoaG9zZS0+ aW5kZXggPT0gYnVzKQogCQkJCWJyZWFrOwogCQlpZiAoIWhvc2UpCmRpZmYgLS1naXQgYS9hcmNo L2FscGhhL2tlcm5lbC9wY2kuYyBiL2FyY2gvYWxwaGEva2VybmVsL3BjaS5jCmluZGV4IDk3MDk4 MTIuLjY0ZmJmYjAgMTAwNjQ0Ci0tLSBhL2FyY2gvYWxwaGEva2VybmVsL3BjaS5jCisrKyBiL2Fy Y2gvYWxwaGEva2VybmVsL3BjaS5jCkBAIC0zOTMsNiArMzkzLDkgQEAgYWxsb2NfcGNpX2NvbnRy b2xsZXIodm9pZCkKIAlzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKmhvc2U7CiAKIAlob3NlID0gbWVt YmxvY2tfYWxsb2Moc2l6ZW9mKCpob3NlKSwgU01QX0NBQ0hFX0JZVEVTKTsKKwlpZiAoIWhvc2Up CisJCXBhbmljKCIlczogRmFpbGVkIHRvIGFsbG9jYXRlICV6dSBieXRlc1xuIiwgX19mdW5jX18s CisJCSAgICAgIHNpemVvZigqaG9zZSkpOwogCiAJKmhvc2VfdGFpbCA9IGhvc2U7CiAJaG9zZV90 YWlsID0gJmhvc2UtPm5leHQ7CkBAIC00MDMsNyArNDA2LDEzIEBAIGFsbG9jX3BjaV9jb250cm9s bGVyKHZvaWQpCiBzdHJ1Y3QgcmVzb3VyY2UgKiBfX2luaXQKIGFsbG9jX3Jlc291cmNlKHZvaWQp CiB7Ci0JcmV0dXJuIG1lbWJsb2NrX2FsbG9jKHNpemVvZihzdHJ1Y3QgcmVzb3VyY2UpLCBTTVBf Q0FDSEVfQllURVMpOworCXZvaWQgKnB0ciA9IG1lbWJsb2NrX2FsbG9jKHNpemVvZihzdHJ1Y3Qg cmVzb3VyY2UpLCBTTVBfQ0FDSEVfQllURVMpOworCisJaWYgKCFwdHIpCisJCXBhbmljKCIlczog RmFpbGVkIHRvIGFsbG9jYXRlICV6dSBieXRlc1xuIiwgX19mdW5jX18sCisJCSAgICAgIHNpemVv ZihzdHJ1Y3QgcmVzb3VyY2UpKTsKKworCXJldHVybiBwdHI7CiB9CiAKIApkaWZmIC0tZ2l0IGEv YXJjaC9hbHBoYS9rZXJuZWwvcGNpX2lvbW11LmMgYi9hcmNoL2FscGhhL2tlcm5lbC9wY2lfaW9t bXUuYwppbmRleCBlNGNmNzdiLi4zMDM0ZDZkIDEwMDY0NAotLS0gYS9hcmNoL2FscGhhL2tlcm5l bC9wY2lfaW9tbXUuYworKysgYi9hcmNoL2FscGhhL2tlcm5lbC9wY2lfaW9tbXUuYwpAQCAtODAs NiArODAsOSBAQCBpb21tdV9hcmVuYV9uZXdfbm9kZShpbnQgbmlkLCBzdHJ1Y3QgcGNpX2NvbnRy b2xsZXIgKmhvc2UsIGRtYV9hZGRyX3QgYmFzZSwKIAkJICAgICAgICIgICAgZmFsbGluZyBiYWNr IHRvIHN5c3RlbS13aWRlIGFsbG9jYXRpb25cbiIsCiAJCSAgICAgICBfX2Z1bmNfXywgbmlkKTsK IAkJYXJlbmEgPSBtZW1ibG9ja19hbGxvYyhzaXplb2YoKmFyZW5hKSwgU01QX0NBQ0hFX0JZVEVT KTsKKwkJaWYgKCFhcmVuYSkKKwkJCXBhbmljKCIlczogRmFpbGVkIHRvIGFsbG9jYXRlICV6dSBi eXRlc1xuIiwgX19mdW5jX18sCisJCQkgICAgICBzaXplb2YoKmFyZW5hKSk7CiAJfQogCiAJYXJl bmEtPnB0ZXMgPSBtZW1ibG9ja19hbGxvY19ub2RlKHNpemVvZigqYXJlbmEpLCBhbGlnbiwgbmlk KTsKQEAgLTg4LDEyICs5MSwyMSBAQCBpb21tdV9hcmVuYV9uZXdfbm9kZShpbnQgbmlkLCBzdHJ1 Y3QgcGNpX2NvbnRyb2xsZXIgKmhvc2UsIGRtYV9hZGRyX3QgYmFzZSwKIAkJICAgICAgICIgICAg ZmFsbGluZyBiYWNrIHRvIHN5c3RlbS13aWRlIGFsbG9jYXRpb25cbiIsCiAJCSAgICAgICBfX2Z1 bmNfXywgbmlkKTsKIAkJYXJlbmEtPnB0ZXMgPSBtZW1ibG9ja19hbGxvYyhtZW1fc2l6ZSwgYWxp Z24pOworCQlpZiAoIWFyZW5hLT5wdGVzKQorCQkJcGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2Nh dGUgJWx1IGJ5dGVzIGFsaWduPTB4JWx4XG4iLAorCQkJICAgICAgX19mdW5jX18sIG1lbV9zaXpl LCBhbGlnbik7CiAJfQogCiAjZWxzZSAvKiBDT05GSUdfRElTQ09OVElHTUVNICovCiAKIAlhcmVu YSA9IG1lbWJsb2NrX2FsbG9jKHNpemVvZigqYXJlbmEpLCBTTVBfQ0FDSEVfQllURVMpOworCWlm ICghYXJlbmEpCisJCXBhbmljKCIlczogRmFpbGVkIHRvIGFsbG9jYXRlICV6dSBieXRlc1xuIiwg X19mdW5jX18sCisJCSAgICAgIHNpemVvZigqYXJlbmEpKTsKIAlhcmVuYS0+cHRlcyA9IG1lbWJs b2NrX2FsbG9jKG1lbV9zaXplLCBhbGlnbik7CisJaWYgKCFhcmVuYS0+cHRlcykKKwkJcGFuaWMo IiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJWx1IGJ5dGVzIGFsaWduPTB4JWx4XG4iLAorCQkgICAg ICBfX2Z1bmNfXywgbWVtX3NpemUsIGFsaWduKTsKIAogI2VuZGlmIC8qIENPTkZJR19ESVNDT05U SUdNRU0gKi8KIApkaWZmIC0tZ2l0IGEvYXJjaC9hcmMvbW0vaGlnaG1lbS5jIGIvYXJjaC9hcmMv bW0vaGlnaG1lbS5jCmluZGV4IDQ4ZTcwMDEuLjExZjU3ZTIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJj L21tL2hpZ2htZW0uYworKysgYi9hcmNoL2FyYy9tbS9oaWdobWVtLmMKQEAgLTEyNCw2ICsxMjQs MTAgQEAgc3RhdGljIG5vaW5saW5lIHB0ZV90ICogX19pbml0IGFsbG9jX2ttYXBfcGd0YWJsZSh1 bnNpZ25lZCBsb25nIGt2YWRkcikKIAlwbWRfayA9IHBtZF9vZmZzZXQocHVkX2ssIGt2YWRkcik7 CiAKIAlwdGVfayA9IChwdGVfdCAqKW1lbWJsb2NrX2FsbG9jX2xvdyhQQUdFX1NJWkUsIFBBR0Vf U0laRSk7CisJaWYgKCFwdGVfaykKKwkJcGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJWx1 IGJ5dGVzIGFsaWduPTB4JWx4XG4iLAorCQkgICAgICBfX2Z1bmNfXywgUEFHRV9TSVpFLCBQQUdF X1NJWkUpOworCiAJcG1kX3BvcHVsYXRlX2tlcm5lbCgmaW5pdF9tbSwgcG1kX2ssIHB0ZV9rKTsK IAlyZXR1cm4gcHRlX2s7CiB9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9rZXJuZWwvc2V0dXAuYyBi L2FyY2gvYXJtL2tlcm5lbC9zZXR1cC5jCmluZGV4IDM3NWIxM2YuLjVkNzhiNmEgMTAwNjQ0Ci0t LSBhL2FyY2gvYXJtL2tlcm5lbC9zZXR1cC5jCisrKyBiL2FyY2gvYXJtL2tlcm5lbC9zZXR1cC5j CkBAIC04NjcsNiArODY3LDkgQEAgc3RhdGljIHZvaWQgX19pbml0IHJlcXVlc3Rfc3RhbmRhcmRf cmVzb3VyY2VzKGNvbnN0IHN0cnVjdCBtYWNoaW5lX2Rlc2MgKm1kZXNjKQogCQlib290X2FsaWFz X3N0YXJ0ID0gcGh5c190b19pZG1hcChzdGFydCk7CiAJCWlmIChhcm1faGFzX2lkbWFwX2FsaWFz KCkgJiYgYm9vdF9hbGlhc19zdGFydCAhPSBJRE1BUF9JTlZBTElEX0FERFIpIHsKIAkJCXJlcyA9 IG1lbWJsb2NrX2FsbG9jKHNpemVvZigqcmVzKSwgU01QX0NBQ0hFX0JZVEVTKTsKKwkJCWlmICgh cmVzKQorCQkJCXBhbmljKCIlczogRmFpbGVkIHRvIGFsbG9jYXRlICV6dSBieXRlc1xuIiwKKwkJ CQkgICAgICBfX2Z1bmNfXywgc2l6ZW9mKCpyZXMpKTsKIAkJCXJlcy0+bmFtZSA9ICJTeXN0ZW0g UkFNIChib290IGFsaWFzKSI7CiAJCQlyZXMtPnN0YXJ0ID0gYm9vdF9hbGlhc19zdGFydDsKIAkJ CXJlcy0+ZW5kID0gcGh5c190b19pZG1hcChlbmQpOwpAQCAtODc1LDYgKzg3OCw5IEBAIHN0YXRp YyB2b2lkIF9faW5pdCByZXF1ZXN0X3N0YW5kYXJkX3Jlc291cmNlcyhjb25zdCBzdHJ1Y3QgbWFj aGluZV9kZXNjICptZGVzYykKIAkJfQogCiAJCXJlcyA9IG1lbWJsb2NrX2FsbG9jKHNpemVvZigq cmVzKSwgU01QX0NBQ0hFX0JZVEVTKTsKKwkJaWYgKCFyZXMpCisJCQlwYW5pYygiJXM6IEZhaWxl ZCB0byBhbGxvY2F0ZSAlenUgYnl0ZXNcbiIsIF9fZnVuY19fLAorCQkJICAgICAgc2l6ZW9mKCpy ZXMpKTsKIAkJcmVzLT5uYW1lICA9ICJTeXN0ZW0gUkFNIjsKIAkJcmVzLT5zdGFydCA9IHN0YXJ0 OwogCQlyZXMtPmVuZCA9IGVuZDsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21tL21tdS5jIGIvYXJj aC9hcm0vbW0vbW11LmMKaW5kZXggNTdkZTBkZC4uZjNjZTM0MSAxMDA2NDQKLS0tIGEvYXJjaC9h cm0vbW0vbW11LmMKKysrIGIvYXJjaC9hcm0vbW0vbW11LmMKQEAgLTcyMSw3ICs3MjEsMTMgQEAg RVhQT1JUX1NZTUJPTChwaHlzX21lbV9hY2Nlc3NfcHJvdCk7CiAKIHN0YXRpYyB2b2lkIF9faW5p dCAqZWFybHlfYWxsb2ModW5zaWduZWQgbG9uZyBzeikKIHsKLQlyZXR1cm4gbWVtYmxvY2tfYWxs b2Moc3osIHN6KTsKKwl2b2lkICpwdHIgPSBtZW1ibG9ja19hbGxvYyhzeiwgc3opOworCisJaWYg KCFwdHIpCisJCXBhbmljKCIlczogRmFpbGVkIHRvIGFsbG9jYXRlICVsdSBieXRlcyBhbGlnbj0w eCVseFxuIiwKKwkJICAgICAgX19mdW5jX18sIHN6LCBzeik7CisKKwlyZXR1cm4gcHRyOwogfQog CiBzdGF0aWMgdm9pZCAqX19pbml0IGxhdGVfYWxsb2ModW5zaWduZWQgbG9uZyBzeikKQEAgLTk5 NCw2ICsxMDAwLDkgQEAgdm9pZCBfX2luaXQgaW90YWJsZV9pbml0KHN0cnVjdCBtYXBfZGVzYyAq aW9fZGVzYywgaW50IG5yKQogCQlyZXR1cm47CiAKIAlzdm0gPSBtZW1ibG9ja19hbGxvYyhzaXpl b2YoKnN2bSkgKiBuciwgX19hbGlnbm9mX18oKnN2bSkpOworCWlmICghc3ZtKQorCQlwYW5pYygi JXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAlenUgYnl0ZXMgYWxpZ249MHglenhcbiIsCisJCSAgICAg IF9fZnVuY19fLCBzaXplb2YoKnN2bSkgKiBuciwgX19hbGlnbm9mX18oKnN2bSkpOwogCiAJZm9y IChtZCA9IGlvX2Rlc2M7IG5yOyBtZCsrLCBuci0tKSB7CiAJCWNyZWF0ZV9tYXBwaW5nKG1kKTsK QEAgLTEwMTYsNiArMTAyNSw5IEBAIHZvaWQgX19pbml0IHZtX3Jlc2VydmVfYXJlYV9lYXJseSh1 bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSwKIAlzdHJ1Y3Qgc3RhdGljX3Zt ICpzdm07CiAKIAlzdm0gPSBtZW1ibG9ja19hbGxvYyhzaXplb2YoKnN2bSksIF9fYWxpZ25vZl9f KCpzdm0pKTsKKwlpZiAoIXN2bSkKKwkJcGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJXp1 IGJ5dGVzIGFsaWduPTB4JXp4XG4iLAorCQkgICAgICBfX2Z1bmNfXywgc2l6ZW9mKCpzdm0pLCBf X2FsaWdub2ZfXygqc3ZtKSk7CiAKIAl2bSA9ICZzdm0tPnZtOwogCXZtLT5hZGRyID0gKHZvaWQg KilhZGRyOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvc2V0dXAuYyBiL2FyY2gvYXJt NjQva2VybmVsL3NldHVwLmMKaW5kZXggNGIwZTEyMy4uNWM1NDAxZiAxMDA2NDQKLS0tIGEvYXJj aC9hcm02NC9rZXJuZWwvc2V0dXAuYworKysgYi9hcmNoL2FybTY0L2tlcm5lbC9zZXR1cC5jCkBA IC0yMDksNiArMjA5LDcgQEAgc3RhdGljIHZvaWQgX19pbml0IHJlcXVlc3Rfc3RhbmRhcmRfcmVz b3VyY2VzKHZvaWQpCiAJc3RydWN0IG1lbWJsb2NrX3JlZ2lvbiAqcmVnaW9uOwogCXN0cnVjdCBy ZXNvdXJjZSAqcmVzOwogCXVuc2lnbmVkIGxvbmcgaSA9IDA7CisJc2l6ZV90IHJlc19zaXplOwog CiAJa2VybmVsX2NvZGUuc3RhcnQgICA9IF9fcGFfc3ltYm9sKF90ZXh0KTsKIAlrZXJuZWxfY29k ZS5lbmQgICAgID0gX19wYV9zeW1ib2woX19pbml0X2JlZ2luIC0gMSk7CkBAIC0yMTYsOSArMjE3 LDEwIEBAIHN0YXRpYyB2b2lkIF9faW5pdCByZXF1ZXN0X3N0YW5kYXJkX3Jlc291cmNlcyh2b2lk KQogCWtlcm5lbF9kYXRhLmVuZCAgICAgPSBfX3BhX3N5bWJvbChfZW5kIC0gMSk7CiAKIAludW1f c3RhbmRhcmRfcmVzb3VyY2VzID0gbWVtYmxvY2subWVtb3J5LmNudDsKLQlzdGFuZGFyZF9yZXNv dXJjZXMgPSBtZW1ibG9ja19hbGxvY19sb3cobnVtX3N0YW5kYXJkX3Jlc291cmNlcyAqCi0JCQkJ CSAgICAgICAgc2l6ZW9mKCpzdGFuZGFyZF9yZXNvdXJjZXMpLAotCQkJCQkgICAgICAgIFNNUF9D QUNIRV9CWVRFUyk7CisJcmVzX3NpemUgPSBudW1fc3RhbmRhcmRfcmVzb3VyY2VzICogc2l6ZW9m KCpzdGFuZGFyZF9yZXNvdXJjZXMpOworCXN0YW5kYXJkX3Jlc291cmNlcyA9IG1lbWJsb2NrX2Fs bG9jX2xvdyhyZXNfc2l6ZSwgU01QX0NBQ0hFX0JZVEVTKTsKKwlpZiAoIXN0YW5kYXJkX3Jlc291 cmNlcykKKwkJcGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJXp1IGJ5dGVzXG4iLCBfX2Z1 bmNfXywgcmVzX3NpemUpOwogCiAJZm9yX2VhY2hfbWVtYmxvY2sobWVtb3J5LCByZWdpb24pIHsK IAkJcmVzID0gJnN0YW5kYXJkX3Jlc291cmNlc1tpKytdOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02 NC9tbS9rYXNhbl9pbml0LmMgYi9hcmNoL2FybTY0L21tL2thc2FuX2luaXQuYwppbmRleCA0YjU1 YjE1Li40M2QxM2M3IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L21tL2thc2FuX2luaXQuYworKysg Yi9hcmNoL2FybTY0L21tL2thc2FuX2luaXQuYwpAQCAtNDAsNiArNDAsMTEgQEAgc3RhdGljIHBo eXNfYWRkcl90IF9faW5pdCBrYXNhbl9hbGxvY196ZXJvZWRfcGFnZShpbnQgbm9kZSkKIAl2b2lk ICpwID0gbWVtYmxvY2tfYWxsb2NfdHJ5X25pZChQQUdFX1NJWkUsIFBBR0VfU0laRSwKIAkJCQkJ ICAgICAgX19wYShNQVhfRE1BX0FERFJFU1MpLAogCQkJCQkgICAgICBNRU1CTE9DS19BTExPQ19L QVNBTiwgbm9kZSk7CisJaWYgKCFwKQorCQlwYW5pYygiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAl bHUgYnl0ZXMgYWxpZ249MHglbHggbmlkPSVkIGZyb209JWxseFxuIiwKKwkJICAgICAgX19mdW5j X18sIFBBR0VfU0laRSwgUEFHRV9TSVpFLCBub2RlLAorCQkgICAgICBfX3BhKE1BWF9ETUFfQURE UkVTUykpOworCiAJcmV0dXJuIF9fcGEocCk7CiB9CiAKQEAgLTQ4LDYgKzUzLDExIEBAIHN0YXRp YyBwaHlzX2FkZHJfdCBfX2luaXQga2FzYW5fYWxsb2NfcmF3X3BhZ2UoaW50IG5vZGUpCiAJdm9p ZCAqcCA9IG1lbWJsb2NrX2FsbG9jX3RyeV9uaWRfcmF3KFBBR0VfU0laRSwgUEFHRV9TSVpFLAog CQkJCQkJX19wYShNQVhfRE1BX0FERFJFU1MpLAogCQkJCQkJTUVNQkxPQ0tfQUxMT0NfS0FTQU4s IG5vZGUpOworCWlmICghcCkKKwkJcGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJWx1IGJ5 dGVzIGFsaWduPTB4JWx4IG5pZD0lZCBmcm9tPSVsbHhcbiIsCisJCSAgICAgIF9fZnVuY19fLCBQ QUdFX1NJWkUsIFBBR0VfU0laRSwgbm9kZSwKKwkJICAgICAgX19wYShNQVhfRE1BX0FERFJFU1Mp KTsKKwogCXJldHVybiBfX3BhKHApOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL2M2eC9tbS9kbWEt Y29oZXJlbnQuYyBiL2FyY2gvYzZ4L21tL2RtYS1jb2hlcmVudC5jCmluZGV4IDBiZTI4OTguLjBk MzcwMWIgMTAwNjQ0Ci0tLSBhL2FyY2gvYzZ4L21tL2RtYS1jb2hlcmVudC5jCisrKyBiL2FyY2gv YzZ4L21tL2RtYS1jb2hlcmVudC5jCkBAIC0xMzgsNiArMTM4LDEwIEBAIHZvaWQgX19pbml0IGNv aGVyZW50X21lbV9pbml0KHBoeXNfYWRkcl90IHN0YXJ0LCB1MzIgc2l6ZSkKIAogCWRtYV9iaXRt YXAgPSBtZW1ibG9ja19hbGxvYyhCSVRTX1RPX0xPTkdTKGRtYV9wYWdlcykgKiBzaXplb2YobG9u ZyksCiAJCQkJICAgIHNpemVvZihsb25nKSk7CisJaWYgKCFkbWFfYml0bWFwKQorCQlwYW5pYygi JXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAlenUgYnl0ZXMgYWxpZ249MHglenhcbiIsCisJCSAgICAg IF9fZnVuY19fLCBCSVRTX1RPX0xPTkdTKGRtYV9wYWdlcykgKiBzaXplb2YobG9uZyksCisJCSAg ICAgIHNpemVvZihsb25nKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGM2eF9kbWFfc3luYyhzdHJ1Y3Qg ZGV2aWNlICpkZXYsIHBoeXNfYWRkcl90IHBhZGRyLCBzaXplX3Qgc2l6ZSwKZGlmZiAtLWdpdCBh L2FyY2gvYzZ4L21tL2luaXQuYyBiL2FyY2gvYzZ4L21tL2luaXQuYwppbmRleCBlODNjMDQ2Li5m ZTU4MmMzIDEwMDY0NAotLS0gYS9hcmNoL2M2eC9tbS9pbml0LmMKKysrIGIvYXJjaC9jNngvbW0v aW5pdC5jCkBAIC00MCw2ICs0MCw5IEBAIHZvaWQgX19pbml0IHBhZ2luZ19pbml0KHZvaWQpCiAK IAllbXB0eV96ZXJvX3BhZ2UgICAgICA9ICh1bnNpZ25lZCBsb25nKSBtZW1ibG9ja19hbGxvYyhQ QUdFX1NJWkUsCiAJCQkJCQkJICAgICAgUEFHRV9TSVpFKTsKKwlpZiAoIWVtcHR5X3plcm9fcGFn ZSkKKwkJcGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJWx1IGJ5dGVzIGFsaWduPTB4JWx4 XG4iLAorCQkgICAgICBfX2Z1bmNfXywgUEFHRV9TSVpFLCBQQUdFX1NJWkUpOwogCiAJLyoKIAkg KiBTZXQgdXAgdXNlciBkYXRhIHNwYWNlCmRpZmYgLS1naXQgYS9hcmNoL2Nza3kvbW0vaGlnaG1l bS5jIGIvYXJjaC9jc2t5L21tL2hpZ2htZW0uYwppbmRleCA1M2IxYmZhLi4zMzE3Yjc3NCAxMDA2 NDQKLS0tIGEvYXJjaC9jc2t5L21tL2hpZ2htZW0uYworKysgYi9hcmNoL2Nza3kvbW0vaGlnaG1l bS5jCkBAIC0xNDEsNiArMTQxLDExIEBAIHN0YXRpYyB2b2lkIF9faW5pdCBmaXhyYW5nZV9pbml0 KHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLAogCQkJZm9yICg7IChrIDwg UFRSU19QRVJfUE1EKSAmJiAodmFkZHIgIT0gZW5kKTsgcG1kKyssIGsrKykgewogCQkJCWlmIChw bWRfbm9uZSgqcG1kKSkgewogCQkJCQlwdGUgPSAocHRlX3QgKikgbWVtYmxvY2tfYWxsb2NfbG93 KFBBR0VfU0laRSwgUEFHRV9TSVpFKTsKKwkJCQkJaWYgKCFwdGUpCisJCQkJCQlwYW5pYygiJXM6 IEZhaWxlZCB0byBhbGxvY2F0ZSAlbHUgYnl0ZXMgYWxpZ249JWx4XG4iLAorCQkJCQkJICAgICAg X19mdW5jX18sIFBBR0VfU0laRSwKKwkJCQkJCSAgICAgIFBBR0VfU0laRSk7CisKIAkJCQkJc2V0 X3BtZChwbWQsIF9fcG1kKF9fcGEocHRlKSkpOwogCQkJCQlCVUdfT04ocHRlICE9IHB0ZV9vZmZz ZXRfa2VybmVsKHBtZCwgMCkpOwogCQkJCX0KZGlmZiAtLWdpdCBhL2FyY2gvaDgzMDAvbW0vaW5p dC5jIGIvYXJjaC9oODMwMC9tbS9pbml0LmMKaW5kZXggYTE1Nzg5MC4uMGYwNGE1ZSAxMDA2NDQK LS0tIGEvYXJjaC9oODMwMC9tbS9pbml0LmMKKysrIGIvYXJjaC9oODMwMC9tbS9pbml0LmMKQEAg LTY4LDYgKzY4LDkgQEAgdm9pZCBfX2luaXQgcGFnaW5nX2luaXQodm9pZCkKIAkgKiB0byBhIGNv dXBsZSBvZiBhbGxvY2F0ZWQgcGFnZXMuCiAJICovCiAJZW1wdHlfemVyb19wYWdlID0gKHVuc2ln bmVkIGxvbmcpbWVtYmxvY2tfYWxsb2MoUEFHRV9TSVpFLCBQQUdFX1NJWkUpOworCWlmICghZW1w dHlfemVyb19wYWdlKQorCQlwYW5pYygiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAlbHUgYnl0ZXMg YWxpZ249MHglbHhcbiIsCisJCSAgICAgIF9fZnVuY19fLCBQQUdFX1NJWkUsIFBBR0VfU0laRSk7 CiAKIAkvKgogCSAqIFNldCB1cCBTRkMvREZDIHJlZ2lzdGVycyAodXNlciBkYXRhIHNwYWNlKS4K ZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9hdGFyaS9zdHJhbS5jIGIvYXJjaC9tNjhrL2F0YXJpL3N0 cmFtLmMKaW5kZXggNmZmYzIwNC4uNjE1MmY5ZiAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2F0YXJp L3N0cmFtLmMKKysrIGIvYXJjaC9tNjhrL2F0YXJpL3N0cmFtLmMKQEAgLTk3LDYgKzk3LDEwIEBA IHZvaWQgX19pbml0IGF0YXJpX3N0cmFtX3Jlc2VydmVfcGFnZXModm9pZCAqc3RhcnRfbWVtKQog CQlwcl9kZWJ1ZygiYXRhcmlfc3RyYW0gcG9vbDoga2VybmVsIGluIFNULVJBTSwgdXNpbmcgYWxs b2NfYm9vdG1lbSFcbiIpOwogCQlzdHJhbV9wb29sLnN0YXJ0ID0gKHJlc291cmNlX3NpemVfdClt ZW1ibG9ja19hbGxvY19sb3cocG9vbF9zaXplLAogCQkJCQkJCQkgICAgICAgUEFHRV9TSVpFKTsK KwkJaWYgKCFzdHJhbV9wb29sLnN0YXJ0KQorCQkJcGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2Nh dGUgJWx1IGJ5dGVzIGFsaWduPSVseFxuIiwKKwkJCSAgICAgIF9fZnVuY19fLCBwb29sX3NpemUs IFBBR0VfU0laRSk7CisKIAkJc3RyYW1fcG9vbC5lbmQgPSBzdHJhbV9wb29sLnN0YXJ0ICsgcG9v bF9zaXplIC0gMTsKIAkJcmVxdWVzdF9yZXNvdXJjZSgmaW9tZW1fcmVzb3VyY2UsICZzdHJhbV9w b29sKTsKIAkJc3RyYW1fdmlydF9vZmZzZXQgPSAwOwpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL21t L2luaXQuYyBiL2FyY2gvbTY4ay9tbS9pbml0LmMKaW5kZXggOTMzYzMzZS4uODg2OGE0YyAxMDA2 NDQKLS0tIGEvYXJjaC9tNjhrL21tL2luaXQuYworKysgYi9hcmNoL202OGsvbW0vaW5pdC5jCkBA IC05NCw2ICs5NCw5IEBAIHZvaWQgX19pbml0IHBhZ2luZ19pbml0KHZvaWQpCiAJaGlnaF9tZW1v cnkgPSAodm9pZCAqKSBlbmRfbWVtOwogCiAJZW1wdHlfemVyb19wYWdlID0gbWVtYmxvY2tfYWxs b2MoUEFHRV9TSVpFLCBQQUdFX1NJWkUpOworCWlmICghZW1wdHlfemVyb19wYWdlKQorCQlwYW5p YygiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAlbHUgYnl0ZXMgYWxpZ249MHglbHhcbiIsCisJCSAg ICAgIF9fZnVuY19fLCBQQUdFX1NJWkUsIFBBR0VfU0laRSk7CiAKIAkvKgogCSAqIFNldCB1cCBT RkMvREZDIHJlZ2lzdGVycyAodXNlciBkYXRhIHNwYWNlKS4KZGlmZiAtLWdpdCBhL2FyY2gvbTY4 ay9tbS9tY2ZtbXUuYyBiL2FyY2gvbTY4ay9tbS9tY2ZtbXUuYwppbmRleCA0OTJmOTUzLi42Y2Ix ZTQxIDEwMDY0NAotLS0gYS9hcmNoL202OGsvbW0vbWNmbW11LmMKKysrIGIvYXJjaC9tNjhrL21t L21jZm1tdS5jCkBAIC00NCw2ICs0NCw5IEBAIHZvaWQgX19pbml0IHBhZ2luZ19pbml0KHZvaWQp CiAJaW50IGk7CiAKIAllbXB0eV96ZXJvX3BhZ2UgPSAodm9pZCAqKSBtZW1ibG9ja19hbGxvYyhQ QUdFX1NJWkUsIFBBR0VfU0laRSk7CisJaWYgKCFlbXB0eV96ZXJvX3BhZ2UpCisJCXBhbmljKCIl czogRmFpbGVkIHRvIGFsbG9jYXRlICVsdSBieXRlcyBhbGlnbj0weCVseFxuIiwKKwkJICAgICAg X19mdW5jX18sIFBBR0VfU0laRSwgUEFHRV9TSVpFKTsKIAogCXBnX2RpciA9IHN3YXBwZXJfcGdf ZGlyOwogCW1lbXNldChzd2FwcGVyX3BnX2RpciwgMCwgc2l6ZW9mKHN3YXBwZXJfcGdfZGlyKSk7 CkBAIC01MSw2ICs1NCw5IEBAIHZvaWQgX19pbml0IHBhZ2luZ19pbml0KHZvaWQpCiAJc2l6ZSA9 IG51bV9wYWdlcyAqIHNpemVvZihwdGVfdCk7CiAJc2l6ZSA9IChzaXplICsgUEFHRV9TSVpFKSAm IH4oUEFHRV9TSVpFLTEpOwogCW5leHRfcGd0YWJsZSA9ICh1bnNpZ25lZCBsb25nKSBtZW1ibG9j a19hbGxvYyhzaXplLCBQQUdFX1NJWkUpOworCWlmICghbmV4dF9wZ3RhYmxlKQorCQlwYW5pYygi JXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAlbHUgYnl0ZXMgYWxpZ249MHglbHhcbiIsCisJCSAgICAg IF9fZnVuY19fLCBzaXplLCBQQUdFX1NJWkUpOwogCiAJYm9vdG1lbV9lbmQgPSAobmV4dF9wZ3Rh YmxlICsgc2l6ZSArIFBBR0VfU0laRSkgJiBQQUdFX01BU0s7CiAJcGdfZGlyICs9IFBBR0VfT0ZG U0VUID4+IFBHRElSX1NISUZUOwpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL21tL21vdG9yb2xhLmMg Yi9hcmNoL202OGsvbW0vbW90b3JvbGEuYwppbmRleCAzZjNkMGJmLi4zNTY2MDFiIDEwMDY0NAot LS0gYS9hcmNoL202OGsvbW0vbW90b3JvbGEuYworKysgYi9hcmNoL202OGsvbW0vbW90b3JvbGEu YwpAQCAtNTUsNiArNTUsOSBAQCBzdGF0aWMgcHRlX3QgKiBfX2luaXQga2VybmVsX3BhZ2VfdGFi bGUodm9pZCkKIAlwdGVfdCAqcHRhYmxlcDsKIAogCXB0YWJsZXAgPSAocHRlX3QgKiltZW1ibG9j a19hbGxvY19sb3coUEFHRV9TSVpFLCBQQUdFX1NJWkUpOworCWlmICghcHRhYmxlcCkKKwkJcGFu aWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJWx1IGJ5dGVzIGFsaWduPSVseFxuIiwKKwkJICAg ICAgX19mdW5jX18sIFBBR0VfU0laRSwgUEFHRV9TSVpFKTsKIAogCWNsZWFyX3BhZ2UocHRhYmxl cCk7CiAJX19mbHVzaF9wYWdlX3RvX3JhbShwdGFibGVwKTsKQEAgLTk2LDYgKzk5LDkgQEAgc3Rh dGljIHBtZF90ICogX19pbml0IGtlcm5lbF9wdHJfdGFibGUodm9pZCkKIAlpZiAoKCh1bnNpZ25l ZCBsb25nKWxhc3RfcGd0YWJsZSAmIH5QQUdFX01BU0spID09IDApIHsKIAkJbGFzdF9wZ3RhYmxl ID0gKHBtZF90ICopbWVtYmxvY2tfYWxsb2NfbG93KFBBR0VfU0laRSwKIAkJCQkJCQkgICBQQUdF X1NJWkUpOworCQlpZiAoIWxhc3RfcGd0YWJsZSkKKwkJCXBhbmljKCIlczogRmFpbGVkIHRvIGFs bG9jYXRlICVsdSBieXRlcyBhbGlnbj0lbHhcbiIsCisJCQkgICAgICBfX2Z1bmNfXywgUEFHRV9T SVpFLCBQQUdFX1NJWkUpOwogCiAJCWNsZWFyX3BhZ2UobGFzdF9wZ3RhYmxlKTsKIAkJX19mbHVz aF9wYWdlX3RvX3JhbShsYXN0X3BndGFibGUpOwpAQCAtMjc4LDYgKzI4NCw5IEBAIHZvaWQgX19p bml0IHBhZ2luZ19pbml0KHZvaWQpCiAJICogdG8gYSBjb3VwbGUgb2YgYWxsb2NhdGVkIHBhZ2Vz CiAJICovCiAJZW1wdHlfemVyb19wYWdlID0gbWVtYmxvY2tfYWxsb2MoUEFHRV9TSVpFLCBQQUdF X1NJWkUpOworCWlmICghZW1wdHlfemVyb19wYWdlKQorCQlwYW5pYygiJXM6IEZhaWxlZCB0byBh bGxvY2F0ZSAlbHUgYnl0ZXMgYWxpZ249MHglbHhcbiIsCisJCSAgICAgIF9fZnVuY19fLCBQQUdF X1NJWkUsIFBBR0VfU0laRSk7CiAKIAkvKgogCSAqIFNldCB1cCBTRkMvREZDIHJlZ2lzdGVycwpk aWZmIC0tZ2l0IGEvYXJjaC9tNjhrL21tL3N1bjNtbXUuYyBiL2FyY2gvbTY4ay9tbS9zdW4zbW11 LmMKaW5kZXggZjczNmRiNC4uZWNhMWM0NiAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL21tL3N1bjNt bXUuYworKysgYi9hcmNoL202OGsvbW0vc3VuM21tdS5jCkBAIC00Niw2ICs0Niw5IEBAIHZvaWQg X19pbml0IHBhZ2luZ19pbml0KHZvaWQpCiAJdW5zaWduZWQgbG9uZyBzaXplOwogCiAJZW1wdHlf emVyb19wYWdlID0gbWVtYmxvY2tfYWxsb2MoUEFHRV9TSVpFLCBQQUdFX1NJWkUpOworCWlmICgh ZW1wdHlfemVyb19wYWdlKQorCQlwYW5pYygiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAlbHUgYnl0 ZXMgYWxpZ249MHglbHhcbiIsCisJCSAgICAgIF9fZnVuY19fLCBQQUdFX1NJWkUsIFBBR0VfU0la RSk7CiAKIAlhZGRyZXNzID0gUEFHRV9PRkZTRVQ7CiAJcGdfZGlyID0gc3dhcHBlcl9wZ19kaXI7 CkBAIC01Niw2ICs1OSw5IEBAIHZvaWQgX19pbml0IHBhZ2luZ19pbml0KHZvaWQpCiAJc2l6ZSA9 IChzaXplICsgUEFHRV9TSVpFKSAmIH4oUEFHRV9TSVpFLTEpOwogCiAJbmV4dF9wZ3RhYmxlID0g KHVuc2lnbmVkIGxvbmcpbWVtYmxvY2tfYWxsb2Moc2l6ZSwgUEFHRV9TSVpFKTsKKwlpZiAoIW5l eHRfcGd0YWJsZSkKKwkJcGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJWx1IGJ5dGVzIGFs aWduPTB4JWx4XG4iLAorCQkgICAgICBfX2Z1bmNfXywgc2l6ZSwgUEFHRV9TSVpFKTsKIAlib290 bWVtX2VuZCA9IChuZXh0X3BndGFibGUgKyBzaXplICsgUEFHRV9TSVpFKSAmIFBBR0VfTUFTSzsK IAogCS8qIE1hcCB3aG9sZSBtZW1vcnkgZnJvbSBQQUdFX09GRlNFVCAoMHgwRTAwMDAwMCkgKi8K ZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9zdW4zL3N1bjNkdm1hLmMgYi9hcmNoL202OGsvc3VuMy9z dW4zZHZtYS5jCmluZGV4IDRkNjQ3MTEuLjM5OWYzZDAgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9z dW4zL3N1bjNkdm1hLmMKKysrIGIvYXJjaC9tNjhrL3N1bjMvc3VuM2R2bWEuYwpAQCAtMjY5LDYg KzI2OSw5IEBAIHZvaWQgX19pbml0IGR2bWFfaW5pdCh2b2lkKQogCiAJaW9tbXVfdXNlID0gbWVt YmxvY2tfYWxsb2MoSU9NTVVfVE9UQUxfRU5UUklFUyAqIHNpemVvZih1bnNpZ25lZCBsb25nKSwK IAkJCQkgICBTTVBfQ0FDSEVfQllURVMpOworCWlmICghaW9tbXVfdXNlKQorCQlwYW5pYygiJXM6 IEZhaWxlZCB0byBhbGxvY2F0ZSAlenUgYnl0ZXNcbiIsIF9fZnVuY19fLAorCQkgICAgICBJT01N VV9UT1RBTF9FTlRSSUVTICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTsKIAogCWR2bWFfdW5tYXBf aW9tbXUoRFZNQV9TVEFSVCwgRFZNQV9TSVpFKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9taWNyb2Js YXplL21tL2luaXQuYyBiL2FyY2gvbWljcm9ibGF6ZS9tbS9pbml0LmMKaW5kZXggYmQxY2Q0Yi4u N2U5N2Q0NCAxMDA2NDQKLS0tIGEvYXJjaC9taWNyb2JsYXplL21tL2luaXQuYworKysgYi9hcmNo L21pY3JvYmxhemUvbW0vaW5pdC5jCkBAIC0zNzQsMTAgKzM3NCwxNCBAQCB2b2lkICogX19yZWYg emFsbG9jX21heWJlX2Jvb3RtZW0oc2l6ZV90IHNpemUsIGdmcF90IG1hc2spCiB7CiAJdm9pZCAq cDsKIAotCWlmIChtZW1faW5pdF9kb25lKQorCWlmIChtZW1faW5pdF9kb25lKSB7CiAJCXAgPSBr emFsbG9jKHNpemUsIG1hc2spOwotCWVsc2UKKwl9IGVsc2UgewogCQlwID0gbWVtYmxvY2tfYWxs b2Moc2l6ZSwgU01QX0NBQ0hFX0JZVEVTKTsKKwkJaWYgKCFwKQorCQkJcGFuaWMoIiVzOiBGYWls ZWQgdG8gYWxsb2NhdGUgJXp1IGJ5dGVzXG4iLAorCQkJICAgICAgX19mdW5jX18sIHNpemUpOwor CX0KIAogCXJldHVybiBwOwogfQpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2Nhdml1bS1vY3Rlb24v ZG1hLW9jdGVvbi5jIGIvYXJjaC9taXBzL2Nhdml1bS1vY3Rlb24vZG1hLW9jdGVvbi5jCmluZGV4 IGU4ZWI2MGUuLjExZDVhNGUgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9jYXZpdW0tb2N0ZW9uL2Rt YS1vY3Rlb24uYworKysgYi9hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9kbWEtb2N0ZW9uLmMKQEAg LTI0NSw2ICsyNDUsOSBAQCB2b2lkIF9faW5pdCBwbGF0X3N3aW90bGJfc2V0dXAodm9pZCkKIAlz d2lvdGxic2l6ZSA9IHN3aW90bGJfbnNsYWJzIDw8IElPX1RMQl9TSElGVDsKIAogCW9jdGVvbl9z d2lvdGxiID0gbWVtYmxvY2tfYWxsb2NfbG93KHN3aW90bGJzaXplLCBQQUdFX1NJWkUpOworCWlm ICghb2N0ZW9uX3N3aW90bGIpCisJCXBhbmljKCIlczogRmFpbGVkIHRvIGFsbG9jYXRlICV6dSBi eXRlcyBhbGlnbj0lbHhcbiIsCisJCSAgICAgIF9fZnVuY19fLCBzd2lvdGxic2l6ZSwgUEFHRV9T SVpFKTsKIAogCWlmIChzd2lvdGxiX2luaXRfd2l0aF90Ymwob2N0ZW9uX3N3aW90bGIsIHN3aW90 bGJfbnNsYWJzLCAxKSA9PSAtRU5PTUVNKQogCQlwYW5pYygiQ2Fubm90IGFsbG9jYXRlIFNXSU9U TEIgYnVmZmVyIik7CmRpZmYgLS1naXQgYS9hcmNoL21pcHMva2VybmVsL3NldHVwLmMgYi9hcmNo L21pcHMva2VybmVsL3NldHVwLmMKaW5kZXggOGM2YzQ4ZWQuLjkxYmM5NjIgMTAwNjQ0Ci0tLSBh L2FyY2gvbWlwcy9rZXJuZWwvc2V0dXAuYworKysgYi9hcmNoL21pcHMva2VybmVsL3NldHVwLmMK QEAgLTkxOCw2ICs5MTgsOSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgcmVzb3VyY2VfaW5pdCh2b2lk KQogCQkJZW5kID0gSElHSE1FTV9TVEFSVCAtIDE7CiAKIAkJcmVzID0gbWVtYmxvY2tfYWxsb2Mo c2l6ZW9mKHN0cnVjdCByZXNvdXJjZSksIFNNUF9DQUNIRV9CWVRFUyk7CisJCWlmICghcmVzKQor CQkJcGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJXp1IGJ5dGVzXG4iLCBfX2Z1bmNfXywK KwkJCSAgICAgIHNpemVvZihzdHJ1Y3QgcmVzb3VyY2UpKTsKIAogCQlyZXMtPnN0YXJ0ID0gc3Rh cnQ7CiAJCXJlcy0+ZW5kID0gZW5kOwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2tlcm5lbC90cmFw cy5jIGIvYXJjaC9taXBzL2tlcm5lbC90cmFwcy5jCmluZGV4IDJiYmRlZTUuLjY0YjU0MWEgMTAw NjQ0Ci0tLSBhL2FyY2gvbWlwcy9rZXJuZWwvdHJhcHMuYworKysgYi9hcmNoL21pcHMva2VybmVs L3RyYXBzLmMKQEAgLTIyOTIsNiArMjI5Miw5IEBAIHZvaWQgX19pbml0IHRyYXBfaW5pdCh2b2lk KQogCiAJCWViYXNlID0gKHVuc2lnbmVkIGxvbmcpCiAJCQltZW1ibG9ja19hbGxvYyhzaXplLCAx IDw8IGZscyhzaXplKSk7CisJCWlmICghZWJhc2UpCisJCQlwYW5pYygiJXM6IEZhaWxlZCB0byBh bGxvY2F0ZSAlbHUgYnl0ZXMgYWxpZ249MHgleFxuIiwKKwkJCSAgICAgIF9fZnVuY19fLCBzaXpl LCAxIDw8IGZscyhzaXplKSk7CiAKIAkJLyoKIAkJICogVHJ5IHRvIGVuc3VyZSBlYmFzZSByZXNp ZGVzIGluIEtTZWcwIGlmIHBvc3NpYmxlLgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL2luaXQu YyBiL2FyY2gvbWlwcy9tbS9pbml0LmMKaW5kZXggYjUyMWQ4ZS4uODllMmFmYyAxMDA2NDQKLS0t IGEvYXJjaC9taXBzL21tL2luaXQuYworKysgYi9hcmNoL21pcHMvbW0vaW5pdC5jCkBAIC0yNDUs NiArMjQ1LDExIEBAIHZvaWQgX19pbml0IGZpeHJhbmdlX2luaXQodW5zaWduZWQgbG9uZyBzdGFy dCwgdW5zaWduZWQgbG9uZyBlbmQsCiAJCQkJaWYgKHBtZF9ub25lKCpwbWQpKSB7CiAJCQkJCXB0 ZSA9IChwdGVfdCAqKSBtZW1ibG9ja19hbGxvY19sb3coUEFHRV9TSVpFLAogCQkJCQkJCQkJICAg UEFHRV9TSVpFKTsKKwkJCQkJaWYgKCFwdGUpCisJCQkJCQlwYW5pYygiJXM6IEZhaWxlZCB0byBh bGxvY2F0ZSAlbHUgYnl0ZXMgYWxpZ249JWx4XG4iLAorCQkJCQkJICAgICAgX19mdW5jX18sIFBB R0VfU0laRSwKKwkJCQkJCSAgICAgIFBBR0VfU0laRSk7CisKIAkJCQkJc2V0X3BtZChwbWQsIF9f cG1kKCh1bnNpZ25lZCBsb25nKXB0ZSkpOwogCQkJCQlCVUdfT04ocHRlICE9IHB0ZV9vZmZzZXRf a2VybmVsKHBtZCwgMCkpOwogCQkJCX0KZGlmZiAtLWdpdCBhL2FyY2gvbmRzMzIvbW0vaW5pdC5j IGIvYXJjaC9uZHMzMi9tbS9pbml0LmMKaW5kZXggZDFlNTIxYy4uMWQwMzYzMyAxMDA2NDQKLS0t IGEvYXJjaC9uZHMzMi9tbS9pbml0LmMKKysrIGIvYXJjaC9uZHMzMi9tbS9pbml0LmMKQEAgLTc5 LDYgKzc5LDkgQEAgc3RhdGljIHZvaWQgX19pbml0IG1hcF9yYW0odm9pZCkKIAogCQkvKiBBbGxv YyBvbmUgcGFnZSBmb3IgaG9sZGluZyBQVEUncy4uLiAqLwogCQlwdGUgPSBtZW1ibG9ja19hbGxv YyhQQUdFX1NJWkUsIFBBR0VfU0laRSk7CisJCWlmICghcHRlKQorCQkJcGFuaWMoIiVzOiBGYWls ZWQgdG8gYWxsb2NhdGUgJWx1IGJ5dGVzIGFsaWduPTB4JWx4XG4iLAorCQkJICAgICAgX19mdW5j X18sIFBBR0VfU0laRSwgUEFHRV9TSVpFKTsKIAkJc2V0X3BtZChwbWUsIF9fcG1kKF9fcGEocHRl KSArIF9QQUdFX0tFUk5FTF9UQUJMRSkpOwogCiAJCS8qIEZpbGwgdGhlIG5ld2x5IGFsbG9jYXRl ZCBwYWdlIHdpdGggUFRFJ1MgKi8KQEAgLTExMSw2ICsxMTQsOSBAQCBzdGF0aWMgdm9pZCBfX2lu aXQgZml4ZWRyYW5nZV9pbml0KHZvaWQpCiAJcHVkID0gcHVkX29mZnNldChwZ2QsIHZhZGRyKTsK IAlwbWQgPSBwbWRfb2Zmc2V0KHB1ZCwgdmFkZHIpOwogCWZpeG1hcF9wbWRfcCA9IG1lbWJsb2Nr X2FsbG9jKFBBR0VfU0laRSwgUEFHRV9TSVpFKTsKKwlpZiAoIWZpeG1hcF9wbWRfcCkKKwkJcGFu aWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJWx1IGJ5dGVzIGFsaWduPTB4JWx4XG4iLAorCQkg ICAgICBfX2Z1bmNfXywgUEFHRV9TSVpFLCBQQUdFX1NJWkUpOwogCXNldF9wbWQocG1kLCBfX3Bt ZChfX3BhKGZpeG1hcF9wbWRfcCkgKyBfUEFHRV9LRVJORUxfVEFCTEUpKTsKIAogI2lmZGVmIENP TkZJR19ISUdITUVNCkBAIC0xMjMsNiArMTI5LDkgQEAgc3RhdGljIHZvaWQgX19pbml0IGZpeGVk cmFuZ2VfaW5pdCh2b2lkKQogCXB1ZCA9IHB1ZF9vZmZzZXQocGdkLCB2YWRkcik7CiAJcG1kID0g cG1kX29mZnNldChwdWQsIHZhZGRyKTsKIAlwdGUgPSBtZW1ibG9ja19hbGxvYyhQQUdFX1NJWkUs IFBBR0VfU0laRSk7CisJaWYgKCFwdGUpCisJCXBhbmljKCIlczogRmFpbGVkIHRvIGFsbG9jYXRl ICVsdSBieXRlcyBhbGlnbj0weCVseFxuIiwKKwkJICAgICAgX19mdW5jX18sIFBBR0VfU0laRSwg UEFHRV9TSVpFKTsKIAlzZXRfcG1kKHBtZCwgX19wbWQoX19wYShwdGUpICsgX1BBR0VfS0VSTkVM X1RBQkxFKSk7CiAJcGttYXBfcGFnZV90YWJsZSA9IHB0ZTsKICNlbmRpZiAvKiBDT05GSUdfSElH SE1FTSAqLwpAQCAtMTQ4LDYgKzE1Nyw5IEBAIHZvaWQgX19pbml0IHBhZ2luZ19pbml0KHZvaWQp CiAKIAkvKiBhbGxvY2F0ZSBzcGFjZSBmb3IgZW1wdHlfemVyb19wYWdlICovCiAJemVyb19wYWdl ID0gbWVtYmxvY2tfYWxsb2MoUEFHRV9TSVpFLCBQQUdFX1NJWkUpOworCWlmICghemVyb19wYWdl KQorCQlwYW5pYygiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAlbHUgYnl0ZXMgYWxpZ249MHglbHhc biIsCisJCSAgICAgIF9fZnVuY19fLCBQQUdFX1NJWkUsIFBBR0VfU0laRSk7CiAJem9uZV9zaXpl c19pbml0KCk7CiAKIAllbXB0eV96ZXJvX3BhZ2UgPSB2aXJ0X3RvX3BhZ2UoemVyb19wYWdlKTsK ZGlmZiAtLWdpdCBhL2FyY2gvb3BlbnJpc2MvbW0vaW9yZW1hcC5jIGIvYXJjaC9vcGVucmlzYy9t bS9pb3JlbWFwLmMKaW5kZXggMDUxYmNiNC4uYTg1MDk5NSAxMDA2NDQKLS0tIGEvYXJjaC9vcGVu cmlzYy9tbS9pb3JlbWFwLmMKKysrIGIvYXJjaC9vcGVucmlzYy9tbS9pb3JlbWFwLmMKQEAgLTEy MiwxMCArMTIyLDE0IEBAIHB0ZV90IF9fcmVmICpwdGVfYWxsb2Nfb25lX2tlcm5lbChzdHJ1Y3Qg bW1fc3RydWN0ICptbSkKIHsKIAlwdGVfdCAqcHRlOwogCi0JaWYgKGxpa2VseShtZW1faW5pdF9k b25lKSkKKwlpZiAobGlrZWx5KG1lbV9pbml0X2RvbmUpKSB7CiAJCXB0ZSA9IChwdGVfdCAqKWdl dF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMKTsKLQllbHNlCisJfSBlbHNlIHsKIAkJcHRlID0gbWVt YmxvY2tfYWxsb2MoUEFHRV9TSVpFLCBQQUdFX1NJWkUpOworCQlpZiAoIXB0ZSkKKwkJCXBhbmlj KCIlczogRmFpbGVkIHRvIGFsbG9jYXRlICVsdSBieXRlcyBhbGlnbj0weCVseFxuIiwKKwkJCSAg ICAgIF9fZnVuY19fLCBQQUdFX1NJWkUsIFBBR0VfU0laRSk7CisJfQogCiAJcmV0dXJuIHB0ZTsK IH0KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvZHRfY3B1X2Z0cnMuYyBiL2FyY2gv cG93ZXJwYy9rZXJuZWwvZHRfY3B1X2Z0cnMuYwppbmRleCAyNTU0ODI0Li5hZjY4MTRhIDEwMDY0 NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL2R0X2NwdV9mdHJzLmMKKysrIGIvYXJjaC9wb3dl cnBjL2tlcm5lbC9kdF9jcHVfZnRycy5jCkBAIC0xMDA4LDYgKzEwMDgsMTEgQEAgc3RhdGljIGlu dCBfX2luaXQgZHRfY3B1X2Z0cnNfc2Nhbl9jYWxsYmFjayh1bnNpZ25lZCBsb25nIG5vZGUsIGNv bnN0IGNoYXIKIAlvZl9zY2FuX2ZsYXRfZHRfc3Vibm9kZXMobm9kZSwgY291bnRfY3B1ZmVhdHVy ZXNfc3Vibm9kZXMsCiAJCQkJCQkmbnJfZHRfY3B1X2ZlYXR1cmVzKTsKIAlkdF9jcHVfZmVhdHVy ZXMgPSBtZW1ibG9ja19hbGxvYyhzaXplb2Yoc3RydWN0IGR0X2NwdV9mZWF0dXJlKSAqIG5yX2R0 X2NwdV9mZWF0dXJlcywgUEFHRV9TSVpFKTsKKwlpZiAoIWR0X2NwdV9mZWF0dXJlcykKKwkJcGFu aWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJXp1IGJ5dGVzIGFsaWduPTB4JWx4XG4iLAorCQkg ICAgICBfX2Z1bmNfXywKKwkJICAgICAgc2l6ZW9mKHN0cnVjdCBkdF9jcHVfZmVhdHVyZSkgKiBu cl9kdF9jcHVfZmVhdHVyZXMsCisJCSAgICAgIFBBR0VfU0laRSk7CiAKIAljcHVmZWF0dXJlc19z ZXR1cF9zdGFydChpc2EpOwogCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3BjaV8z Mi5jIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9wY2lfMzIuYwppbmRleCBkM2YwNGYyLi4wNDE3ZmRh IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3BjaV8zMi5jCisrKyBiL2FyY2gvcG93 ZXJwYy9rZXJuZWwvcGNpXzMyLmMKQEAgLTIwNSw2ICsyMDUsOSBAQCBwY2lfY3JlYXRlX09GX2J1 c19tYXAodm9pZCkKIAogCW9mX3Byb3AgPSBtZW1ibG9ja19hbGxvYyhzaXplb2Yoc3RydWN0IHBy b3BlcnR5KSArIDI1NiwKIAkJCQkgU01QX0NBQ0hFX0JZVEVTKTsKKwlpZiAoIW9mX3Byb3ApCisJ CXBhbmljKCIlczogRmFpbGVkIHRvIGFsbG9jYXRlICV6dSBieXRlc1xuIiwgX19mdW5jX18sCisJ CSAgICAgIHNpemVvZihzdHJ1Y3QgcHJvcGVydHkpICsgMjU2KTsKIAlkbiA9IG9mX2ZpbmRfbm9k ZV9ieV9wYXRoKCIvIik7CiAJaWYgKGRuKSB7CiAJCW1lbXNldChvZl9wcm9wLCAtMSwgc2l6ZW9m KHN0cnVjdCBwcm9wZXJ0eSkgKyAyNTYpOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5l bC9zZXR1cC1jb21tb24uYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvc2V0dXAtY29tbW9uLmMKaW5k ZXggODJiZTQ4Yy4uMTgxMGYwOSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1 cC1jb21tb24uYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3NldHVwLWNvbW1vbi5jCkBAIC00 NjEsNiArNDYxLDkgQEAgdm9pZCBfX2luaXQgc21wX3NldHVwX2NwdV9tYXBzKHZvaWQpCiAKIAlj cHVfdG9fcGh5c19pZCA9IG1lbWJsb2NrX2FsbG9jKG5yX2NwdV9pZHMgKiBzaXplb2YodTMyKSwK IAkJCQkJX19hbGlnbm9mX18odTMyKSk7CisJaWYgKCFjcHVfdG9fcGh5c19pZCkKKwkJcGFuaWMo IiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJXp1IGJ5dGVzIGFsaWduPTB4JXp4XG4iLAorCQkgICAg ICBfX2Z1bmNfXywgbnJfY3B1X2lkcyAqIHNpemVvZih1MzIpLCBfX2FsaWdub2ZfXyh1MzIpKTsK IAogCWZvcl9lYWNoX25vZGVfYnlfdHlwZShkbiwgImNwdSIpIHsKIAkJY29uc3QgX19iZTMyICpp bnRzZXJ2OwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1cF82NC5jIGIvYXJj aC9wb3dlcnBjL2tlcm5lbC9zZXR1cF82NC5jCmluZGV4IDNkY2Q3NzkuLmRkNjJiMDUgMTAwNjQ0 Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvc2V0dXBfNjQuYworKysgYi9hcmNoL3Bvd2VycGMv a2VybmVsL3NldHVwXzY0LmMKQEAgLTkzMSw2ICs5MzEsMTAgQEAgc3RhdGljIHZvaWQgX19yZWYg aW5pdF9mYWxsYmFja19mbHVzaCh2b2lkKQogCWwxZF9mbHVzaF9mYWxsYmFja19hcmVhID0gbWVt YmxvY2tfYWxsb2NfdHJ5X25pZChsMWRfc2l6ZSAqIDIsCiAJCQkJCQlsMWRfc2l6ZSwgTUVNQkxP Q0tfTE9XX0xJTUlULAogCQkJCQkJbGltaXQsIE5VTUFfTk9fTk9ERSk7CisJaWYgKCFsMWRfZmx1 c2hfZmFsbGJhY2tfYXJlYSkKKwkJcGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJWxsdSBi eXRlcyBhbGlnbj0weCVsbHggbWF4X2FkZHI9JXBhXG4iLAorCQkgICAgICBfX2Z1bmNfXywgbDFk X3NpemUgKiAyLCBsMWRfc2l6ZSwgJmxpbWl0KTsKKwogCiAJZm9yX2VhY2hfcG9zc2libGVfY3B1 KGNwdSkgewogCQlzdHJ1Y3QgcGFjYV9zdHJ1Y3QgKnBhY2EgPSBwYWNhX3B0cnNbY3B1XTsKZGlm ZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9saWIvYWxsb2MuYyBiL2FyY2gvcG93ZXJwYy9saWIvYWxs b2MuYwppbmRleCBkZWRmODhhLi5jZTE4MDg3IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvbGli L2FsbG9jLmMKKysrIGIvYXJjaC9wb3dlcnBjL2xpYi9hbGxvYy5jCkBAIC0xNSw2ICsxNSw5IEBA IHZvaWQgKiBfX3JlZiB6YWxsb2NfbWF5YmVfYm9vdG1lbShzaXplX3Qgc2l6ZSwgZ2ZwX3QgbWFz aykKIAkJcCA9IGt6YWxsb2Moc2l6ZSwgbWFzayk7CiAJZWxzZSB7CiAJCXAgPSBtZW1ibG9ja19h bGxvYyhzaXplLCBTTVBfQ0FDSEVfQllURVMpOworCQlpZiAoIXApCisJCQlwYW5pYygiJXM6IEZh aWxlZCB0byBhbGxvY2F0ZSAlenUgYnl0ZXNcbiIsIF9fZnVuY19fLAorCQkJICAgICAgc2l6ZSk7 CiAJfQogCXJldHVybiBwOwogfQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL2hhc2hfdXRp bHNfNjQuYyBiL2FyY2gvcG93ZXJwYy9tbS9oYXNoX3V0aWxzXzY0LmMKaW5kZXggYzdkNWY0OC4u ZGRmM2I5YyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL21tL2hhc2hfdXRpbHNfNjQuYworKysg Yi9hcmNoL3Bvd2VycGMvbW0vaGFzaF91dGlsc182NC5jCkBAIC05MTUsNiArOTE1LDkgQEAgc3Rh dGljIHZvaWQgX19pbml0IGh0YWJfaW5pdGlhbGl6ZSh2b2lkKQogCQlsaW5lYXJfbWFwX2hhc2hf c2xvdHMgPSBtZW1ibG9ja19hbGxvY190cnlfbmlkKAogCQkJCWxpbmVhcl9tYXBfaGFzaF9jb3Vu dCwgMSwgTUVNQkxPQ0tfTE9XX0xJTUlULAogCQkJCXBwYzY0X3JtYV9zaXplLAlOVU1BX05PX05P REUpOworCQlpZiAoIWxpbmVhcl9tYXBfaGFzaF9zbG90cykKKwkJCXBhbmljKCIlczogRmFpbGVk IHRvIGFsbG9jYXRlICVsdSBieXRlcyBtYXhfYWRkcj0lcGFcbiIsCisJCQkgICAgICBfX2Z1bmNf XywgbGluZWFyX21hcF9oYXNoX2NvdW50LCAmcHBjNjRfcm1hX3NpemUpOwogCX0KICNlbmRpZiAv KiBDT05GSUdfREVCVUdfUEFHRUFMTE9DICovCiAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9t bS9tbXVfY29udGV4dF9ub2hhc2guYyBiL2FyY2gvcG93ZXJwYy9tbS9tbXVfY29udGV4dF9ub2hh c2guYwppbmRleCAyMmQ3MWE1OC4uMTk0NWM1ZiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL21t L21tdV9jb250ZXh0X25vaGFzaC5jCisrKyBiL2FyY2gvcG93ZXJwYy9tbS9tbXVfY29udGV4dF9u b2hhc2guYwpAQCAtNDYxLDEwICs0NjEsMTkgQEAgdm9pZCBfX2luaXQgbW11X2NvbnRleHRfaW5p dCh2b2lkKQogCSAqIEFsbG9jYXRlIHRoZSBtYXBzIHVzZWQgYnkgY29udGV4dCBtYW5hZ2VtZW50 CiAJICovCiAJY29udGV4dF9tYXAgPSBtZW1ibG9ja19hbGxvYyhDVFhfTUFQX1NJWkUsIFNNUF9D QUNIRV9CWVRFUyk7CisJaWYgKCFjb250ZXh0X21hcCkKKwkJcGFuaWMoIiVzOiBGYWlsZWQgdG8g YWxsb2NhdGUgJXp1IGJ5dGVzXG4iLCBfX2Z1bmNfXywKKwkJICAgICAgQ1RYX01BUF9TSVpFKTsK IAljb250ZXh0X21tID0gbWVtYmxvY2tfYWxsb2Moc2l6ZW9mKHZvaWQgKikgKiAoTEFTVF9DT05U RVhUICsgMSksCiAJCQkJICAgIFNNUF9DQUNIRV9CWVRFUyk7CisJaWYgKCFjb250ZXh0X21tKQor CQlwYW5pYygiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAlenUgYnl0ZXNcbiIsIF9fZnVuY19fLAor CQkgICAgICBzaXplb2Yodm9pZCAqKSAqIChMQVNUX0NPTlRFWFQgKyAxKSk7CiAjaWZkZWYgQ09O RklHX1NNUAogCXN0YWxlX21hcFtib290X2NwdWlkXSA9IG1lbWJsb2NrX2FsbG9jKENUWF9NQVBf U0laRSwgU01QX0NBQ0hFX0JZVEVTKTsKKwlpZiAoIXN0YWxlX21hcFtib290X2NwdWlkXSkKKwkJ cGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJXp1IGJ5dGVzXG4iLCBfX2Z1bmNfXywKKwkJ ICAgICAgQ1RYX01BUF9TSVpFKTsKIAogCWNwdWhwX3NldHVwX3N0YXRlX25vY2FsbHMoQ1BVSFBf UE9XRVJQQ19NTVVfQ1RYX1BSRVBBUkUsCiAJCQkJICAicG93ZXJwYy9tbXUvY3R4OnByZXBhcmUi LApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL3BndGFibGUtYm9vazNlLmMgYi9hcmNoL3Bv d2VycGMvbW0vcGd0YWJsZS1ib29rM2UuYwppbmRleCA1M2NiYzdkLi4xMDMyZWY3IDEwMDY0NAot LS0gYS9hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS1ib29rM2UuYworKysgYi9hcmNoL3Bvd2VycGMv bW0vcGd0YWJsZS1ib29rM2UuYwpAQCAtNTcsOCArNTcsMTYgQEAgdm9pZCB2bWVtbWFwX3JlbW92 ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsCiAKIHN0YXRpYyBfX3JlZiB2b2lkICplYXJs eV9hbGxvY19wZ3RhYmxlKHVuc2lnbmVkIGxvbmcgc2l6ZSkKIHsKLQlyZXR1cm4gbWVtYmxvY2tf YWxsb2NfdHJ5X25pZChzaXplLCBzaXplLCBNRU1CTE9DS19MT1dfTElNSVQsCi0JCQkJICAgICAg X19wYShNQVhfRE1BX0FERFJFU1MpLCBOVU1BX05PX05PREUpOworCXZvaWQgKnB0cjsKKworCXB0 ciA9IG1lbWJsb2NrX2FsbG9jX3RyeV9uaWQoc2l6ZSwgc2l6ZSwgTUVNQkxPQ0tfTE9XX0xJTUlU LAorCQkJCSAgICAgX19wYShNQVhfRE1BX0FERFJFU1MpLCBOVU1BX05PX05PREUpOworCisJaWYg KCFwdHIpCisJCXBhbmljKCIlczogRmFpbGVkIHRvIGFsbG9jYXRlICVsdSBieXRlcyBhbGlnbj0w eCVseCBtYXhfYWRkcj0lbHhcbiIsCisJCSAgICAgIF9fZnVuY19fLCBzaXplLCBzaXplLCBfX3Bh KE1BWF9ETUFfQUREUkVTUykpOworCisJcmV0dXJuIHB0cjsKIH0KIAogLyoKZGlmZiAtLWdpdCBh L2FyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLWJvb2szczY0LmMgYi9hcmNoL3Bvd2VycGMvbW0vcGd0 YWJsZS1ib29rM3M2NC5jCmluZGV4IDU1ODc2YjcuLjY4ZTk1ZjggMTAwNjQ0Ci0tLSBhL2FyY2gv cG93ZXJwYy9tbS9wZ3RhYmxlLWJvb2szczY0LmMKKysrIGIvYXJjaC9wb3dlcnBjL21tL3BndGFi bGUtYm9vazNzNjQuYwpAQCAtMTk3LDYgKzE5Nyw5IEBAIHZvaWQgX19pbml0IG1tdV9wYXJ0aXRp b25fdGFibGVfaW5pdCh2b2lkKQogCUJVSUxEX0JVR19PTl9NU0coKFBBVEJfU0laRV9TSElGVCA+ IDM2KSwgIlBhcnRpdGlvbiB0YWJsZSBzaXplIHRvbyBsYXJnZS4iKTsKIAkvKiBJbml0aWFsaXpl IHRoZSBQYXJ0aXRpb24gVGFibGUgd2l0aCBubyBlbnRyaWVzICovCiAJcGFydGl0aW9uX3RiID0g bWVtYmxvY2tfYWxsb2MocGF0Yl9zaXplLCBwYXRiX3NpemUpOworCWlmICghcGFydGl0aW9uX3Ri KQorCQlwYW5pYygiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAlbHUgYnl0ZXMgYWxpZ249MHglbHhc biIsCisJCSAgICAgIF9fZnVuY19fLCBwYXRiX3NpemUsIHBhdGJfc2l6ZSk7CiAKIAkvKgogCSAq IHVwZGF0ZSBwYXJ0aXRpb24gdGFibGUgY29udHJvbCByZWdpc3RlciwKZGlmZiAtLWdpdCBhL2Fy Y2gvcG93ZXJwYy9tbS9wZ3RhYmxlLXJhZGl4LmMgYi9hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS1y YWRpeC5jCmluZGV4IDI5YmNlYTUuLjZmYzA1ZmQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9t bS9wZ3RhYmxlLXJhZGl4LmMKKysrIGIvYXJjaC9wb3dlcnBjL21tL3BndGFibGUtcmFkaXguYwpA QCAtNTMsMTMgKzUzLDIwIEBAIHN0YXRpYyBfX3JlZiB2b2lkICplYXJseV9hbGxvY19wZ3RhYmxl KHVuc2lnbmVkIGxvbmcgc2l6ZSwgaW50IG5pZCwKIHsKIAlwaHlzX2FkZHJfdCBtaW5fYWRkciA9 IE1FTUJMT0NLX0xPV19MSU1JVDsKIAlwaHlzX2FkZHJfdCBtYXhfYWRkciA9IE1FTUJMT0NLX0FM TE9DX0FOWVdIRVJFOworCXZvaWQgKnB0cjsKIAogCWlmIChyZWdpb25fc3RhcnQpCiAJCW1pbl9h ZGRyID0gcmVnaW9uX3N0YXJ0OwogCWlmIChyZWdpb25fZW5kKQogCQltYXhfYWRkciA9IHJlZ2lv bl9lbmQ7CiAKLQlyZXR1cm4gbWVtYmxvY2tfYWxsb2NfdHJ5X25pZChzaXplLCBzaXplLCBtaW5f YWRkciwgbWF4X2FkZHIsIG5pZCk7CisJcHRyID0gbWVtYmxvY2tfYWxsb2NfdHJ5X25pZChzaXpl LCBzaXplLCBtaW5fYWRkciwgbWF4X2FkZHIsIG5pZCk7CisKKwlpZiAoIXB0cikKKwkJcGFuaWMo IiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJWx1IGJ5dGVzIGFsaWduPTB4JWx4IG5pZD0lZCBmcm9t PSVwYSBtYXhfYWRkcj0lcGFcbiIsCisJCSAgICAgIF9fZnVuY19fLCBzaXplLCBzaXplLCBuaWQs ICZtaW5fYWRkciwgJm1heF9hZGRyKTsKKworCXJldHVybiBwdHI7CiB9CiAKIHN0YXRpYyBpbnQg ZWFybHlfbWFwX2tlcm5lbF9wYWdlKHVuc2lnbmVkIGxvbmcgZWEsIHVuc2lnbmVkIGxvbmcgcGEs CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbW0vcHBjX21tdV8zMi5jIGIvYXJjaC9wb3dlcnBj L21tL3BwY19tbXVfMzIuYwppbmRleCAzNmE2NjRmLi5hODViMmY0IDEwMDY0NAotLS0gYS9hcmNo L3Bvd2VycGMvbW0vcHBjX21tdV8zMi5jCisrKyBiL2FyY2gvcG93ZXJwYy9tbS9wcGNfbW11XzMy LmMKQEAgLTIxMiw2ICsyMTIsOSBAQCB2b2lkIF9faW5pdCBNTVVfaW5pdF9odyh2b2lkKQogCSAq LwogCWlmICggcHBjX21kLnByb2dyZXNzICkgcHBjX21kLnByb2dyZXNzKCJoYXNoOmZpbmQgcGll Y2UiLCAweDMyMik7CiAJSGFzaCA9IG1lbWJsb2NrX2FsbG9jKEhhc2hfc2l6ZSwgSGFzaF9zaXpl KTsKKwlpZiAoIUhhc2gpCisJCXBhbmljKCIlczogRmFpbGVkIHRvIGFsbG9jYXRlICVsdSBieXRl cyBhbGlnbj0weCVseFxuIiwKKwkJICAgICAgX19mdW5jX18sIEhhc2hfc2l6ZSwgSGFzaF9zaXpl KTsKIAlfU0RSMSA9IF9fcGEoSGFzaCkgfCBTRFIxX0xPV19CSVRTOwogCiAJSGFzaF9lbmQgPSAo c3RydWN0IGhhc2hfcHRlICopICgodW5zaWduZWQgbG9uZylIYXNoICsgSGFzaF9zaXplKTsKZGlm ZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2lvbW11LmMgYi9hcmNoL3Bv d2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9pb21tdS5jCmluZGV4IGY2MjkzMGYuLmFiNzVlNzAgMTAw NjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2lvbW11LmMKKysrIGIvYXJj aC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvaW9tbXUuYwpAQCAtMjExLDYgKzIxMSw5IEBAIHN0 YXRpYyBpbnQgX19pbml0IGlvYl9pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqZG4pCiAJaW9iX2wy X2Jhc2UgPSBtZW1ibG9ja19hbGxvY190cnlfbmlkX3JhdygxVUwgPDwgMjEsIDFVTCA8PCAyMSwK IAkJCQkJTUVNQkxPQ0tfTE9XX0xJTUlULCAweDgwMDAwMDAwLAogCQkJCQlOVU1BX05PX05PREUp OworCWlmICghaW9iX2wyX2Jhc2UpCisJCXBhbmljKCIlczogRmFpbGVkIHRvIGFsbG9jYXRlICVs dSBieXRlcyBhbGlnbj0weCVseCBtYXhfYWRkcj0leFxuIiwKKwkJICAgICAgX19mdW5jX18sIDFV TCA8PCAyMSwgMVVMIDw8IDIxLCAweDgwMDAwMDAwKTsKIAogCXByX2luZm8oIklPQk1BUCBMMiBh bGxvY2F0ZWQgYXQ6ICVwXG4iLCBpb2JfbDJfYmFzZSk7CiAKZGlmZiAtLWdpdCBhL2FyY2gvcG93 ZXJwYy9wbGF0Zm9ybXMvcG93ZXJtYWMvbnZyYW0uYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMv cG93ZXJtYWMvbnZyYW0uYwppbmRleCBhZTU0ZDdmLi5lMGExZDE1IDEwMDY0NAotLS0gYS9hcmNo L3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybWFjL252cmFtLmMKKysrIGIvYXJjaC9wb3dlcnBjL3Bs YXRmb3Jtcy9wb3dlcm1hYy9udnJhbS5jCkBAIC01MTQsNiArNTE0LDkgQEAgc3RhdGljIGludCBf X2luaXQgY29yZTk5X252cmFtX3NldHVwKHN0cnVjdCBkZXZpY2Vfbm9kZSAqZHAsIHVuc2lnbmVk IGxvbmcgYWRkcikKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCW52cmFtX2ltYWdlID0gbWVtYmxv Y2tfYWxsb2MoTlZSQU1fU0laRSwgU01QX0NBQ0hFX0JZVEVTKTsKKwlpZiAoIW52cmFtX2ltYWdl KQorCQlwYW5pYygiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAldSBieXRlc1xuIiwgX19mdW5jX18s CisJCSAgICAgIE5WUkFNX1NJWkUpOwogCW52cmFtX2RhdGEgPSBpb3JlbWFwKGFkZHIsIE5WUkFN X1NJWkUqMik7CiAJbnZyYW1fbmFkZHJzID0gMTsgLyogTWFrZSBzdXJlIHdlIGdldCB0aGUgY29y cmVjdCBjYXNlICovCiAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJu di9vcGFsLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvb3BhbC5jCmluZGV4IDhl MTU3ZjkuLjM4ZmI2NzggMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJu di9vcGFsLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L29wYWwuYwpAQCAt MTcyLDYgKzE3Miw5IEBAIGludCBfX2luaXQgZWFybHlfaW5pdF9kdF9zY2FuX3JlY292ZXJhYmxl X3Jhbmdlcyh1bnNpZ25lZCBsb25nIG5vZGUsCiAJICogQWxsb2NhdGUgYSBidWZmZXIgdG8gaG9s ZCB0aGUgTUMgcmVjb3ZlcmFibGUgcmFuZ2VzLgogCSAqLwogCW1jX3JlY292ZXJhYmxlX3Jhbmdl ID0gbWVtYmxvY2tfYWxsb2Moc2l6ZSwgX19hbGlnbm9mX18odTY0KSk7CisJaWYgKCFtY19yZWNv dmVyYWJsZV9yYW5nZSkKKwkJcGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJXUgYnl0ZXMg YWxpZ249MHglbHhcbiIsCisJCSAgICAgIF9fZnVuY19fLCBzaXplLCBfX2FsaWdub2ZfXyh1NjQp KTsKIAogCWZvciAoaSA9IDA7IGkgPCBtY19yZWNvdmVyYWJsZV9yYW5nZV9sZW47IGkrKykgewog CQltY19yZWNvdmVyYWJsZV9yYW5nZVtpXS5zdGFydF9hZGRyID0KZGlmZiAtLWdpdCBhL2FyY2gv cG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9wY2ktaW9kYS5jIGIvYXJjaC9wb3dlcnBjL3BsYXRm b3Jtcy9wb3dlcm52L3BjaS1pb2RhLmMKaW5kZXggMWQ2NDA2YS4uNDgxN2YxNSAxMDA2NDQKLS0t IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3BjaS1pb2RhLmMKKysrIGIvYXJjaC9w b3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3BjaS1pb2RhLmMKQEAgLTM3MjcsNiArMzcyNyw5IEBA IHN0YXRpYyB2b2lkIF9faW5pdCBwbnZfcGNpX2luaXRfaW9kYV9waGIoc3RydWN0IGRldmljZV9u b2RlICpucCwKIAlwcl9kZWJ1ZygiICBQSEItSUQgIDogMHglMDE2bGx4XG4iLCBwaGJfaWQpOwog CiAJcGhiID0gbWVtYmxvY2tfYWxsb2Moc2l6ZW9mKCpwaGIpLCBTTVBfQ0FDSEVfQllURVMpOwor CWlmICghcGhiKQorCQlwYW5pYygiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAlenUgYnl0ZXNcbiIs IF9fZnVuY19fLAorCQkgICAgICBzaXplb2YoKnBoYikpOwogCiAJLyogQWxsb2NhdGUgUENJIGNv bnRyb2xsZXIgKi8KIAlwaGItPmhvc2UgPSBob3NlID0gcGNpYmlvc19hbGxvY19jb250cm9sbGVy KG5wKTsKQEAgLTM3NzMsNiArMzc3Niw5IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBwbnZfcGNpX2lu aXRfaW9kYV9waGIoc3RydWN0IGRldmljZV9ub2RlICpucCwKIAkJcGhiLT5kaWFnX2RhdGFfc2l6 ZSA9IFBOVl9QQ0lfRElBR19CVUZfU0laRTsKIAogCXBoYi0+ZGlhZ19kYXRhID0gbWVtYmxvY2tf YWxsb2MocGhiLT5kaWFnX2RhdGFfc2l6ZSwgU01QX0NBQ0hFX0JZVEVTKTsKKwlpZiAoIXBoYi0+ ZGlhZ19kYXRhKQorCQlwYW5pYygiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAldSBieXRlc1xuIiwg X19mdW5jX18sCisJCSAgICAgIHBoYi0+ZGlhZ19kYXRhX3NpemUpOwogCiAJLyogUGFyc2UgMzIt Yml0IGFuZCBJTyByYW5nZXMgKGlmIGFueSkgKi8KIAlwY2lfcHJvY2Vzc19icmlkZ2VfT0ZfcmFu Z2VzKGhvc2UsIG5wLCAhaG9zZS0+Z2xvYmFsX251bWJlcik7CkBAIC0zODMyLDYgKzM4MzgsOCBA QCBzdGF0aWMgdm9pZCBfX2luaXQgcG52X3BjaV9pbml0X2lvZGFfcGhiKHN0cnVjdCBkZXZpY2Vf bm9kZSAqbnAsCiAJcGVtYXBfb2ZmID0gc2l6ZTsKIAlzaXplICs9IHBoYi0+aW9kYS50b3RhbF9w ZV9udW0gKiBzaXplb2Yoc3RydWN0IHBudl9pb2RhX3BlKTsKIAlhdXggPSBtZW1ibG9ja19hbGxv YyhzaXplLCBTTVBfQ0FDSEVfQllURVMpOworCWlmICghYXV4KQorCQlwYW5pYygiJXM6IEZhaWxl ZCB0byBhbGxvY2F0ZSAlbHUgYnl0ZXNcbiIsIF9fZnVuY19fLCBzaXplKTsKIAlwaGItPmlvZGEu cGVfYWxsb2MgPSBhdXg7CiAJcGhiLT5pb2RhLm02NF9zZWdtYXAgPSBhdXggKyBtNjRtYXBfb2Zm OwogCXBoYi0+aW9kYS5tMzJfc2VnbWFwID0gYXV4ICsgbTMybWFwX29mZjsKZGlmZiAtLWdpdCBh L2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHMzL3NldHVwLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZv cm1zL3BzMy9zZXR1cC5jCmluZGV4IDY1OGJmYWIuLjRjZTU0NTggMTAwNjQ0Ci0tLSBhL2FyY2gv cG93ZXJwYy9wbGF0Zm9ybXMvcHMzL3NldHVwLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jt cy9wczMvc2V0dXAuYwpAQCAtMTI3LDYgKzEyNyw5IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBwcmVh bGxvYyhzdHJ1Y3QgcHMzX3ByZWFsbG9jICpwKQogCQlyZXR1cm47CiAKIAlwLT5hZGRyZXNzID0g bWVtYmxvY2tfYWxsb2MocC0+c2l6ZSwgcC0+YWxpZ24pOworCWlmICghcC0+YWRkcmVzcykKKwkJ cGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJWx1IGJ5dGVzIGFsaWduPTB4JWx4XG4iLAor CQkgICAgICBfX2Z1bmNfXywgcC0+c2l6ZSwgcC0+YWxpZ24pOwogCiAJcHJpbnRrKEtFUk5fSU5G TyAiJXM6ICVsdSBieXRlcyBhdCAlcFxuIiwgcC0+bmFtZSwgcC0+c2l6ZSwKIAkgICAgICAgcC0+ YWRkcmVzcyk7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvc3lzZGV2L21zaV9iaXRtYXAuYyBi L2FyY2gvcG93ZXJwYy9zeXNkZXYvbXNpX2JpdG1hcC5jCmluZGV4IGQ0NTQ1MGYuLjUxYTY3OWEg MTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9zeXNkZXYvbXNpX2JpdG1hcC5jCisrKyBiL2FyY2gv cG93ZXJwYy9zeXNkZXYvbXNpX2JpdG1hcC5jCkBAIC0xMjksNiArMTI5LDkgQEAgaW50IF9fcmVm IG1zaV9iaXRtYXBfYWxsb2Moc3RydWN0IG1zaV9iaXRtYXAgKmJtcCwgdW5zaWduZWQgaW50IGly cV9jb3VudCwKIAkJYm1wLT5iaXRtYXAgPSBremFsbG9jKHNpemUsIEdGUF9LRVJORUwpOwogCWVs c2UgewogCQlibXAtPmJpdG1hcCA9IG1lbWJsb2NrX2FsbG9jKHNpemUsIFNNUF9DQUNIRV9CWVRF Uyk7CisJCWlmICghYm1wLT5iaXRtYXApCisJCQlwYW5pYygiJXM6IEZhaWxlZCB0byBhbGxvY2F0 ZSAldSBieXRlc1xuIiwgX19mdW5jX18sCisJCQkgICAgICBzaXplKTsKIAkJLyogdGhlIGJpdG1h cCB3b24ndCBiZSBmcmVlZCBmcm9tIG1lbWJsb2NrIGFsbG9jYXRvciAqLwogCQlrbWVtbGVha19u b3RfbGVhayhibXAtPmJpdG1hcCk7CiAJfQpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2tlcm5lbC9z ZXR1cC5jIGIvYXJjaC9zMzkwL2tlcm5lbC9zZXR1cC5jCmluZGV4IGRhNDgzOTcuLjhmOWU3ZjYg MTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9rZXJuZWwvc2V0dXAuYworKysgYi9hcmNoL3MzOTAva2Vy bmVsL3NldHVwLmMKQEAgLTM3OCw2ICszNzgsMTAgQEAgc3RhdGljIHZvaWQgX19pbml0IHNldHVw X2xvd2NvcmUodm9pZCkKIAkgKi8KIAlCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBsb3djb3Jl KSAhPSBMQ19QQUdFUyAqIFBBR0VfU0laRSk7CiAJbGMgPSBtZW1ibG9ja19hbGxvY19sb3coc2l6 ZW9mKCpsYyksIHNpemVvZigqbGMpKTsKKwlpZiAoIWxjKQorCQlwYW5pYygiJXM6IEZhaWxlZCB0 byBhbGxvY2F0ZSAlenUgYnl0ZXMgYWxpZ249JXp4XG4iLAorCQkgICAgICBfX2Z1bmNfXywgc2l6 ZW9mKCpsYyksIHNpemVvZigqbGMpKTsKKwogCWxjLT5yZXN0YXJ0X3Bzdy5tYXNrID0gUFNXX0tF Uk5FTF9CSVRTOwogCWxjLT5yZXN0YXJ0X3Bzdy5hZGRyID0gKHVuc2lnbmVkIGxvbmcpIHJlc3Rh cnRfaW50X2hhbmRsZXI7CiAJbGMtPmV4dGVybmFsX25ld19wc3cubWFzayA9IFBTV19LRVJORUxf QklUUyB8CkBAIC00MjIsNiArNDI2LDkgQEAgc3RhdGljIHZvaWQgX19pbml0IHNldHVwX2xvd2Nv cmUodm9pZCkKIAkgKiBhbGwgQ1BVcyBpbiBjYXN0ICpvbmUqIG9mIHRoZW0gZG9lcyBhIFBTVyBy ZXN0YXJ0LgogCSAqLwogCXJlc3RhcnRfc3RhY2sgPSBtZW1ibG9ja19hbGxvYyhUSFJFQURfU0la RSwgVEhSRUFEX1NJWkUpOworCWlmICghcmVzdGFydF9zdGFjaykKKwkJcGFuaWMoIiVzOiBGYWls ZWQgdG8gYWxsb2NhdGUgJWx1IGJ5dGVzIGFsaWduPTB4JWx4XG4iLAorCQkgICAgICBfX2Z1bmNf XywgVEhSRUFEX1NJWkUsIFRIUkVBRF9TSVpFKTsKIAlyZXN0YXJ0X3N0YWNrICs9IFNUQUNLX0lO SVRfT0ZGU0VUOwogCiAJLyoKQEAgLTQ4OCw2ICs0OTUsOSBAQCBzdGF0aWMgdm9pZCBfX2luaXQg c2V0dXBfcmVzb3VyY2VzKHZvaWQpCiAKIAlmb3JfZWFjaF9tZW1ibG9jayhtZW1vcnksIHJlZykg ewogCQlyZXMgPSBtZW1ibG9ja19hbGxvYyhzaXplb2YoKnJlcyksIDgpOworCQlpZiAoIXJlcykK KwkJCXBhbmljKCIlczogRmFpbGVkIHRvIGFsbG9jYXRlICV6dSBieXRlcyBhbGlnbj0weCV4XG4i LAorCQkJICAgICAgX19mdW5jX18sIHNpemVvZigqcmVzKSwgOCk7CiAJCXJlcy0+ZmxhZ3MgPSBJ T1JFU09VUkNFX0JVU1kgfCBJT1JFU09VUkNFX1NZU1RFTV9SQU07CiAKIAkJcmVzLT5uYW1lID0g IlN5c3RlbSBSQU0iOwpAQCAtNTAyLDYgKzUxMiw5IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBzZXR1 cF9yZXNvdXJjZXModm9pZCkKIAkJCQljb250aW51ZTsKIAkJCWlmIChzdGRfcmVzLT5lbmQgPiBy ZXMtPmVuZCkgewogCQkJCXN1Yl9yZXMgPSBtZW1ibG9ja19hbGxvYyhzaXplb2YoKnN1Yl9yZXMp LCA4KTsKKwkJCQlpZiAoIXN1Yl9yZXMpCisJCQkJCXBhbmljKCIlczogRmFpbGVkIHRvIGFsbG9j YXRlICV6dSBieXRlcyBhbGlnbj0weCV4XG4iLAorCQkJCQkgICAgICBfX2Z1bmNfXywgc2l6ZW9m KCpzdWJfcmVzKSwgOCk7CiAJCQkJKnN1Yl9yZXMgPSAqc3RkX3JlczsKIAkJCQlzdWJfcmVzLT5l bmQgPSByZXMtPmVuZDsKIAkJCQlzdGRfcmVzLT5zdGFydCA9IHJlcy0+ZW5kICsgMTsKZGlmZiAt LWdpdCBhL2FyY2gvczM5MC9rZXJuZWwvc21wLmMgYi9hcmNoL3MzOTAva2VybmVsL3NtcC5jCmlu ZGV4IDkwNjE1OTcuLjE3YzYyNmUyIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva2VybmVsL3NtcC5j CisrKyBiL2FyY2gvczM5MC9rZXJuZWwvc21wLmMKQEAgLTY1Myw3ICs2NTMsNyBAQCB2b2lkIF9f aW5pdCBzbXBfc2F2ZV9kdW1wX2NwdXModm9pZCkKIAkvKiBBbGxvY2F0ZSBhIHBhZ2UgYXMgZHVt cGluZyBhcmVhIGZvciB0aGUgc3RvcmUgc3RhdHVzIHNpZ3BzICovCiAJcGFnZSA9IG1lbWJsb2Nr X3BoeXNfYWxsb2NfcmFuZ2UoUEFHRV9TSVpFLCBQQUdFX1NJWkUsIDAsIDFVTCA8PCAzMSk7CiAJ aWYgKCFwYWdlKQotCQlwYW5pYygiRVJST1I6IEZhaWxlZCB0byBhbGxvY2F0ZSAleCBieXRlcyBi ZWxvdyAlbHhcbiIsCisJCXBhbmljKCJFUlJPUjogRmFpbGVkIHRvIGFsbG9jYXRlICVseCBieXRl cyBiZWxvdyAlbHhcbiIsCiAJCSAgICAgIFBBR0VfU0laRSwgMVVMIDw8IDMxKTsKIAogCS8qIFNl dCBtdWx0aS10aHJlYWRpbmcgc3RhdGUgdG8gdGhlIHByZXZpb3VzIHN5c3RlbS4gKi8KQEAgLTc2 NSw2ICs3NjUsOSBAQCB2b2lkIF9faW5pdCBzbXBfZGV0ZWN0X2NwdXModm9pZCkKIAogCS8qIEdl dCBDUFUgaW5mb3JtYXRpb24gKi8KIAlpbmZvID0gbWVtYmxvY2tfYWxsb2Moc2l6ZW9mKCppbmZv KSwgOCk7CisJaWYgKCFpbmZvKQorCQlwYW5pYygiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAlenUg Ynl0ZXMgYWxpZ249MHgleFxuIiwKKwkJICAgICAgX19mdW5jX18sIHNpemVvZigqaW5mbyksIDgp OwogCXNtcF9nZXRfY29yZV9pbmZvKGluZm8sIDEpOwogCS8qIEZpbmQgYm9vdCBDUFUgdHlwZSAq LwogCWlmIChzY2xwLmhhc19jb3JlX3R5cGUpIHsKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rZXJu ZWwvdG9wb2xvZ3kuYyBiL2FyY2gvczM5MC9rZXJuZWwvdG9wb2xvZ3kuYwppbmRleCA4OTkyYjA0 Li44OTY0YTNmIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva2VybmVsL3RvcG9sb2d5LmMKKysrIGIv YXJjaC9zMzkwL2tlcm5lbC90b3BvbG9neS5jCkBAIC01MjAsNiArNTIwLDkgQEAgc3RhdGljIHZv aWQgX19pbml0IGFsbG9jX21hc2tzKHN0cnVjdCBzeXNpbmZvXzE1XzFfeCAqaW5mbywKIAlucl9t YXNrcyA9IG1heChucl9tYXNrcywgMSk7CiAJZm9yIChpID0gMDsgaSA8IG5yX21hc2tzOyBpKysp IHsKIAkJbWFzay0+bmV4dCA9IG1lbWJsb2NrX2FsbG9jKHNpemVvZigqbWFzay0+bmV4dCksIDgp OworCQlpZiAoIW1hc2stPm5leHQpCisJCQlwYW5pYygiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAl enUgYnl0ZXMgYWxpZ249MHgleFxuIiwKKwkJCSAgICAgIF9fZnVuY19fLCBzaXplb2YoKm1hc2st Pm5leHQpLCA4KTsKIAkJbWFzayA9IG1hc2stPm5leHQ7CiAJfQogfQpAQCAtNTM4LDYgKzU0MSw5 IEBAIHZvaWQgX19pbml0IHRvcG9sb2d5X2luaXRfZWFybHkodm9pZCkKIAlpZiAoIU1BQ0hJTkVf SEFTX1RPUE9MT0dZKQogCQlnb3RvIG91dDsKIAl0bF9pbmZvID0gbWVtYmxvY2tfYWxsb2MoUEFH RV9TSVpFLCBQQUdFX1NJWkUpOworCWlmICghdGxfaW5mbykKKwkJcGFuaWMoIiVzOiBGYWlsZWQg dG8gYWxsb2NhdGUgJWx1IGJ5dGVzIGFsaWduPTB4JWx4XG4iLAorCQkgICAgICBfX2Z1bmNfXywg UEFHRV9TSVpFLCBQQUdFX1NJWkUpOwogCWluZm8gPSB0bF9pbmZvOwogCXN0b3JlX3RvcG9sb2d5 KGluZm8pOwogCXByX2luZm8oIlRoZSBDUFUgY29uZmlndXJhdGlvbiB0b3BvbG9neSBvZiB0aGUg bWFjaGluZSBpczogJWQgJWQgJWQgJWQgJWQgJWQgLyAlZFxuIiwKZGlmZiAtLWdpdCBhL2FyY2gv czM5MC9udW1hL21vZGVfZW11LmMgYi9hcmNoL3MzOTAvbnVtYS9tb2RlX2VtdS5jCmluZGV4IGJm YmEyNzMuLjcxYTEyYTQgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9udW1hL21vZGVfZW11LmMKKysr IGIvYXJjaC9zMzkwL251bWEvbW9kZV9lbXUuYwpAQCAtMzEzLDYgKzMxMyw5IEBAIHN0YXRpYyB2 b2lkIF9fcmVmIGNyZWF0ZV9jb3JlX3RvX25vZGVfbWFwKHZvaWQpCiAJaW50IGk7CiAKIAllbXVf Y29yZXMgPSBtZW1ibG9ja19hbGxvYyhzaXplb2YoKmVtdV9jb3JlcyksIDgpOworCWlmICghZW11 X2NvcmVzKQorCQlwYW5pYygiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAlenUgYnl0ZXMgYWxpZ249 MHgleFxuIiwKKwkJICAgICAgX19mdW5jX18sIHNpemVvZigqZW11X2NvcmVzKSwgOCk7CiAJZm9y IChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZW11X2NvcmVzLT50b19ub2RlX2lkKTsgaSsrKQogCQll bXVfY29yZXMtPnRvX25vZGVfaWRbaV0gPSBOT0RFX0lEX0ZSRUU7CiB9CmRpZmYgLS1naXQgYS9h cmNoL3MzOTAvbnVtYS9udW1hLmMgYi9hcmNoL3MzOTAvbnVtYS9udW1hLmMKaW5kZXggMmQxMjcx ZS4uOGViOWU5NyAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL251bWEvbnVtYS5jCisrKyBiL2FyY2gv czM5MC9udW1hL251bWEuYwpAQCAtOTIsOCArOTIsMTIgQEAgc3RhdGljIHZvaWQgX19pbml0IG51 bWFfc2V0dXBfbWVtb3J5KHZvaWQpCiAJfSB3aGlsZSAoY3VyX2Jhc2UgPCBlbmRfb2ZfZHJhbSk7 CiAKIAkvKiBBbGxvY2F0ZSBhbmQgZmlsbCBvdXQgbm9kZV9kYXRhICovCi0JZm9yIChuaWQgPSAw OyBuaWQgPCBNQVhfTlVNTk9ERVM7IG5pZCsrKQorCWZvciAobmlkID0gMDsgbmlkIDwgTUFYX05V TU5PREVTOyBuaWQrKykgewogCQlOT0RFX0RBVEEobmlkKSA9IG1lbWJsb2NrX2FsbG9jKHNpemVv ZihwZ19kYXRhX3QpLCA4KTsKKwkJaWYgKCFOT0RFX0RBVEEobmlkKSkKKwkJCXBhbmljKCIlczog RmFpbGVkIHRvIGFsbG9jYXRlICV6dSBieXRlcyBhbGlnbj0weCV4XG4iLAorCQkJICAgICAgX19m dW5jX18sIHNpemVvZihwZ19kYXRhX3QpLCA4KTsKKwl9CiAKIAlmb3JfZWFjaF9vbmxpbmVfbm9k ZShuaWQpIHsKIAkJdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIGVuZF9wZm47CmRpZmYgLS1naXQg YS9hcmNoL3NoL21tL2luaXQuYyBiL2FyY2gvc2gvbW0vaW5pdC5jCmluZGV4IGEwZmE0ZGUuLmZj ZWVmZDkgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gvbW0vaW5pdC5jCisrKyBiL2FyY2gvc2gvbW0vaW5p dC5jCkBAIC0xMjgsNiArMTI4LDkgQEAgc3RhdGljIHBtZF90ICogX19pbml0IG9uZV9tZF90YWJs ZV9pbml0KHB1ZF90ICpwdWQpCiAJCXBtZF90ICpwbWQ7CiAKIAkJcG1kID0gbWVtYmxvY2tfYWxs b2MoUEFHRV9TSVpFLCBQQUdFX1NJWkUpOworCQlpZiAoIXBtZCkKKwkJCXBhbmljKCIlczogRmFp bGVkIHRvIGFsbG9jYXRlICVsdSBieXRlcyBhbGlnbj0weCVseFxuIiwKKwkJCSAgICAgIF9fZnVu Y19fLCBQQUdFX1NJWkUsIFBBR0VfU0laRSk7CiAJCXB1ZF9wb3B1bGF0ZSgmaW5pdF9tbSwgcHVk LCBwbWQpOwogCQlCVUdfT04ocG1kICE9IHBtZF9vZmZzZXQocHVkLCAwKSk7CiAJfQpAQCAtMTQx LDYgKzE0NCw5IEBAIHN0YXRpYyBwdGVfdCAqIF9faW5pdCBvbmVfcGFnZV90YWJsZV9pbml0KHBt ZF90ICpwbWQpCiAJCXB0ZV90ICpwdGU7CiAKIAkJcHRlID0gbWVtYmxvY2tfYWxsb2MoUEFHRV9T SVpFLCBQQUdFX1NJWkUpOworCQlpZiAoIXB0ZSkKKwkJCXBhbmljKCIlczogRmFpbGVkIHRvIGFs bG9jYXRlICVsdSBieXRlcyBhbGlnbj0weCVseFxuIiwKKwkJCSAgICAgIF9fZnVuY19fLCBQQUdF X1NJWkUsIFBBR0VfU0laRSk7CiAJCXBtZF9wb3B1bGF0ZV9rZXJuZWwoJmluaXRfbW0sIHBtZCwg cHRlKTsKIAkJQlVHX09OKHB0ZSAhPSBwdGVfb2Zmc2V0X2tlcm5lbChwbWQsIDApKTsKIAl9CmRp ZmYgLS1naXQgYS9hcmNoL3NoL21tL251bWEuYyBiL2FyY2gvc2gvbW0vbnVtYS5jCmluZGV4IGM0 YmRlNjEuLmY3ZTQ0MzkgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gvbW0vbnVtYS5jCisrKyBiL2FyY2gv c2gvbW0vbnVtYS5jCkBAIC00Myw2ICs0MywxMCBAQCB2b2lkIF9faW5pdCBzZXR1cF9ib290bWVt X25vZGUoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCiAJ LyogTm9kZS1sb2NhbCBwZ2RhdCAqLwogCU5PREVfREFUQShuaWQpID0gbWVtYmxvY2tfYWxsb2Nf bm9kZShzaXplb2Yoc3RydWN0IHBnbGlzdF9kYXRhKSwKIAkJCQkJICAgICBTTVBfQ0FDSEVfQllU RVMsIG5pZCk7CisJaWYgKCFOT0RFX0RBVEEobmlkKSkKKwkJcGFuaWMoIiVzOiBGYWlsZWQgdG8g YWxsb2NhdGUgJXp1IGJ5dGVzIGFsaWduPTB4JXggbmlkPSVkXG4iLAorCQkgICAgICBfX2Z1bmNf Xywgc2l6ZW9mKHN0cnVjdCBwZ2xpc3RfZGF0YSksIFNNUF9DQUNIRV9CWVRFUywKKwkJICAgICAg bmlkKTsKIAogCU5PREVfREFUQShuaWQpLT5ub2RlX3N0YXJ0X3BmbiA9IHN0YXJ0X3BmbjsKIAlO T0RFX0RBVEEobmlkKS0+bm9kZV9zcGFubmVkX3BhZ2VzID0gZW5kX3BmbiAtIHN0YXJ0X3BmbjsK ZGlmZiAtLWdpdCBhL2FyY2gvdW0vZHJpdmVycy9uZXRfa2Vybi5jIGIvYXJjaC91bS9kcml2ZXJz L25ldF9rZXJuLmMKaW5kZXggZDgwY2ZiMS4uNmU1YmU1ZiAxMDA2NDQKLS0tIGEvYXJjaC91bS9k cml2ZXJzL25ldF9rZXJuLmMKKysrIGIvYXJjaC91bS9kcml2ZXJzL25ldF9rZXJuLmMKQEAgLTY0 OSw2ICs2NDksOSBAQCBzdGF0aWMgaW50IF9faW5pdCBldGhfc2V0dXAoY2hhciAqc3RyKQogCX0K IAogCW5ldyA9IG1lbWJsb2NrX2FsbG9jKHNpemVvZigqbmV3KSwgU01QX0NBQ0hFX0JZVEVTKTsK KwlpZiAoIW5ldykKKwkJcGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJXp1IGJ5dGVzXG4i LCBfX2Z1bmNfXywKKwkJICAgICAgc2l6ZW9mKCpuZXcpKTsKIAogCUlOSVRfTElTVF9IRUFEKCZu ZXctPmxpc3QpOwogCW5ldy0+aW5kZXggPSBuOwpkaWZmIC0tZ2l0IGEvYXJjaC91bS9kcml2ZXJz L3ZlY3Rvcl9rZXJuLmMgYi9hcmNoL3VtL2RyaXZlcnMvdmVjdG9yX2tlcm4uYwppbmRleCAwNDZm YTllLi41OTZlNzA1IDEwMDY0NAotLS0gYS9hcmNoL3VtL2RyaXZlcnMvdmVjdG9yX2tlcm4uYwor KysgYi9hcmNoL3VtL2RyaXZlcnMvdmVjdG9yX2tlcm4uYwpAQCAtMTU3Niw2ICsxNTc2LDkgQEAg c3RhdGljIGludCBfX2luaXQgdmVjdG9yX3NldHVwKGNoYXIgKnN0cikKIAkJcmV0dXJuIDE7CiAJ fQogCW5ldyA9IG1lbWJsb2NrX2FsbG9jKHNpemVvZigqbmV3KSwgU01QX0NBQ0hFX0JZVEVTKTsK KwlpZiAoIW5ldykKKwkJcGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJXp1IGJ5dGVzXG4i LCBfX2Z1bmNfXywKKwkJICAgICAgc2l6ZW9mKCpuZXcpKTsKIAlJTklUX0xJU1RfSEVBRCgmbmV3 LT5saXN0KTsKIAluZXctPnVuaXQgPSBuOwogCW5ldy0+YXJndW1lbnRzID0gc3RyOwpkaWZmIC0t Z2l0IGEvYXJjaC91bS9rZXJuZWwvaW5pdHJkLmMgYi9hcmNoL3VtL2tlcm5lbC9pbml0cmQuYwpp bmRleCBjZTE2OWVhLi4xZGNkMzEwIDEwMDY0NAotLS0gYS9hcmNoL3VtL2tlcm5lbC9pbml0cmQu YworKysgYi9hcmNoL3VtL2tlcm5lbC9pbml0cmQuYwpAQCAtMzcsNiArMzcsOCBAQCBpbnQgX19p bml0IHJlYWRfaW5pdHJkKHZvaWQpCiAJfQogCiAJYXJlYSA9IG1lbWJsb2NrX2FsbG9jKHNpemUs IFNNUF9DQUNIRV9CWVRFUyk7CisJaWYgKCFhcmVhKQorCQlwYW5pYygiJXM6IEZhaWxlZCB0byBh bGxvY2F0ZSAlbGx1IGJ5dGVzXG4iLCBfX2Z1bmNfXywgc2l6ZSk7CiAKIAlpZiAobG9hZF9pbml0 cmQoaW5pdHJkLCBhcmVhLCBzaXplKSA9PSAtMSkKIAkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9h cmNoL3VtL2tlcm5lbC9tZW0uYyBiL2FyY2gvdW0va2VybmVsL21lbS5jCmluZGV4IDc5OWI1NzEu Ljk5YWExMWIgMTAwNjQ0Ci0tLSBhL2FyY2gvdW0va2VybmVsL21lbS5jCisrKyBiL2FyY2gvdW0v a2VybmVsL21lbS5jCkBAIC02Niw2ICs2NiwxMCBAQCBzdGF0aWMgdm9pZCBfX2luaXQgb25lX3Bh Z2VfdGFibGVfaW5pdChwbWRfdCAqcG1kKQogCWlmIChwbWRfbm9uZSgqcG1kKSkgewogCQlwdGVf dCAqcHRlID0gKHB0ZV90ICopIG1lbWJsb2NrX2FsbG9jX2xvdyhQQUdFX1NJWkUsCiAJCQkJCQkJ ICBQQUdFX1NJWkUpOworCQlpZiAoIXB0ZSkKKwkJCXBhbmljKCIlczogRmFpbGVkIHRvIGFsbG9j YXRlICVsdSBieXRlcyBhbGlnbj0lbHhcbiIsCisJCQkgICAgICBfX2Z1bmNfXywgUEFHRV9TSVpF LCBQQUdFX1NJWkUpOworCiAJCXNldF9wbWQocG1kLCBfX3BtZChfS0VSTlBHX1RBQkxFICsKIAkJ CQkJICAgKHVuc2lnbmVkIGxvbmcpIF9fcGEocHRlKSkpOwogCQlpZiAocHRlICE9IHB0ZV9vZmZz ZXRfa2VybmVsKHBtZCwgMCkpCkBAIC03Nyw2ICs4MSwxMCBAQCBzdGF0aWMgdm9pZCBfX2luaXQg b25lX21kX3RhYmxlX2luaXQocHVkX3QgKnB1ZCkKIHsKICNpZmRlZiBDT05GSUdfM19MRVZFTF9Q R1RBQkxFUwogCXBtZF90ICpwbWRfdGFibGUgPSAocG1kX3QgKikgbWVtYmxvY2tfYWxsb2NfbG93 KFBBR0VfU0laRSwgUEFHRV9TSVpFKTsKKwlpZiAoIXBtZF90YWJsZSkKKwkJcGFuaWMoIiVzOiBG YWlsZWQgdG8gYWxsb2NhdGUgJWx1IGJ5dGVzIGFsaWduPSVseFxuIiwKKwkJICAgICAgX19mdW5j X18sIFBBR0VfU0laRSwgUEFHRV9TSVpFKTsKKwogCXNldF9wdWQocHVkLCBfX3B1ZChfS0VSTlBH X1RBQkxFICsgKHVuc2lnbmVkIGxvbmcpIF9fcGEocG1kX3RhYmxlKSkpOwogCWlmIChwbWRfdGFi bGUgIT0gcG1kX29mZnNldChwdWQsIDApKQogCQlCVUcoKTsKQEAgLTEyNiw2ICsxMzQsMTAgQEAg c3RhdGljIHZvaWQgX19pbml0IGZpeGFkZHJfdXNlcl9pbml0KCB2b2lkKQogCiAJZml4cmFuZ2Vf aW5pdCggRklYQUREUl9VU0VSX1NUQVJULCBGSVhBRERSX1VTRVJfRU5ELCBzd2FwcGVyX3BnX2Rp cik7CiAJdiA9ICh1bnNpZ25lZCBsb25nKSBtZW1ibG9ja19hbGxvY19sb3coc2l6ZSwgUEFHRV9T SVpFKTsKKwlpZiAoIXYpCisJCXBhbmljKCIlczogRmFpbGVkIHRvIGFsbG9jYXRlICVsdSBieXRl cyBhbGlnbj0lbHhcbiIsCisJCSAgICAgIF9fZnVuY19fLCBzaXplLCBQQUdFX1NJWkUpOworCiAJ bWVtY3B5KCh2b2lkICopIHYgLCAodm9pZCAqKSBGSVhBRERSX1VTRVJfU1RBUlQsIHNpemUpOwog CXAgPSBfX3BhKHYpOwogCWZvciAoIDsgc2l6ZSA+IDA7IHNpemUgLT0gUEFHRV9TSVpFLCB2YWRk ciArPSBQQUdFX1NJWkUsCkBAIC0xNDYsNiArMTU4LDEwIEBAIHZvaWQgX19pbml0IHBhZ2luZ19p bml0KHZvaWQpCiAKIAllbXB0eV96ZXJvX3BhZ2UgPSAodW5zaWduZWQgbG9uZyAqKSBtZW1ibG9j a19hbGxvY19sb3coUEFHRV9TSVpFLAogCQkJCQkJCSAgICAgICBQQUdFX1NJWkUpOworCWlmICgh ZW1wdHlfemVyb19wYWdlKQorCQlwYW5pYygiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAlbHUgYnl0 ZXMgYWxpZ249JWx4XG4iLAorCQkgICAgICBfX2Z1bmNfXywgUEFHRV9TSVpFLCBQQUdFX1NJWkUp OworCiAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoem9uZXNfc2l6ZSk7IGkrKykKIAkJem9u ZXNfc2l6ZVtpXSA9IDA7CiAKZGlmZiAtLWdpdCBhL2FyY2gvdW5pY29yZTMyL2tlcm5lbC9zZXR1 cC5jIGIvYXJjaC91bmljb3JlMzIva2VybmVsL3NldHVwLmMKaW5kZXggNGIwY2I2OC4uZDMyMzlj ZiAxMDA2NDQKLS0tIGEvYXJjaC91bmljb3JlMzIva2VybmVsL3NldHVwLmMKKysrIGIvYXJjaC91 bmljb3JlMzIva2VybmVsL3NldHVwLmMKQEAgLTIwNyw2ICsyMDcsMTAgQEAgcmVxdWVzdF9zdGFu ZGFyZF9yZXNvdXJjZXMoc3RydWN0IG1lbWluZm8gKm1pKQogCQkJY29udGludWU7CiAKIAkJcmVz ID0gbWVtYmxvY2tfYWxsb2NfbG93KHNpemVvZigqcmVzKSwgU01QX0NBQ0hFX0JZVEVTKTsKKwkJ aWYgKCFyZXMpCisJCQlwYW5pYygiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAlenUgYnl0ZXMgYWxp Z249JXhcbiIsCisJCQkgICAgICBfX2Z1bmNfXywgc2l6ZW9mKCpyZXMpLCBTTVBfQ0FDSEVfQllU RVMpOworCiAJCXJlcy0+bmFtZSAgPSAiU3lzdGVtIFJBTSI7CiAJCXJlcy0+c3RhcnQgPSBtaS0+ YmFua1tpXS5zdGFydDsKIAkJcmVzLT5lbmQgICA9IG1pLT5iYW5rW2ldLnN0YXJ0ICsgbWktPmJh bmtbaV0uc2l6ZSAtIDE7CmRpZmYgLS1naXQgYS9hcmNoL3VuaWNvcmUzMi9tbS9tbXUuYyBiL2Fy Y2gvdW5pY29yZTMyL21tL21tdS5jCmluZGV4IGE0MDIxOTIuLmFhMjA2MGIgMTAwNjQ0Ci0tLSBh L2FyY2gvdW5pY29yZTMyL21tL21tdS5jCisrKyBiL2FyY2gvdW5pY29yZTMyL21tL21tdS5jCkBA IC0xNDUsOCArMTQ1LDEzIEBAIHN0YXRpYyBwdGVfdCAqIF9faW5pdCBlYXJseV9wdGVfYWxsb2Mo cG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLAogCQl1bnNpZ25lZCBsb25nIHByb3QpCiB7 CiAJaWYgKHBtZF9ub25lKCpwbWQpKSB7Ci0JCXB0ZV90ICpwdGUgPSBtZW1ibG9ja19hbGxvYyhQ VFJTX1BFUl9QVEUgKiBzaXplb2YocHRlX3QpLAotCQkJCQkgICAgUFRSU19QRVJfUFRFICogc2l6 ZW9mKHB0ZV90KSk7CisJCXNpemVfdCBzaXplID0gUFRSU19QRVJfUFRFICogc2l6ZW9mKHB0ZV90 KTsKKwkJcHRlX3QgKnB0ZSA9IG1lbWJsb2NrX2FsbG9jKHNpemUsIHNpemUpOworCisJCWlmICgh cHRlKQorCQkJcGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJXp1IGJ5dGVzIGFsaWduPSV6 eFxuIiwKKwkJCSAgICAgIF9fZnVuY19fLCBzaXplLCBzaXplKTsKKwogCQlfX3BtZF9wb3B1bGF0 ZShwbWQsIF9fcGEocHRlKSB8IHByb3QpOwogCX0KIAlCVUdfT04ocG1kX2JhZCgqcG1kKSk7CkBA IC0zNDksNiArMzU0LDkgQEAgc3RhdGljIHZvaWQgX19pbml0IGRldmljZW1hcHNfaW5pdCh2b2lk KQogCSAqIEFsbG9jYXRlIHRoZSB2ZWN0b3IgcGFnZSBlYXJseS4KIAkgKi8KIAl2ZWN0b3JzID0g bWVtYmxvY2tfYWxsb2MoUEFHRV9TSVpFLCBQQUdFX1NJWkUpOworCWlmICghdmVjdG9ycykKKwkJ cGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJWx1IGJ5dGVzIGFsaWduPTB4JWx4XG4iLAor CQkgICAgICBfX2Z1bmNfXywgUEFHRV9TSVpFLCBQQUdFX1NJWkUpOwogCiAJZm9yIChhZGRyID0g Vk1BTExPQ19FTkQ7IGFkZHI7IGFkZHIgKz0gUEdESVJfU0laRSkKIAkJcG1kX2NsZWFyKHBtZF9v ZmZfayhhZGRyKSk7CkBAIC00MjYsNiArNDM0LDkgQEAgdm9pZCBfX2luaXQgcGFnaW5nX2luaXQo dm9pZCkKIAogCS8qIGFsbG9jYXRlIHRoZSB6ZXJvIHBhZ2UuICovCiAJemVyb19wYWdlID0gbWVt YmxvY2tfYWxsb2MoUEFHRV9TSVpFLCBQQUdFX1NJWkUpOworCWlmICghemVyb19wYWdlKQorCQlw YW5pYygiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAlbHUgYnl0ZXMgYWxpZ249MHglbHhcbiIsCisJ CSAgICAgIF9fZnVuY19fLCBQQUdFX1NJWkUsIFBBR0VfU0laRSk7CiAKIAlib290bWVtX2luaXQo KTsKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2FjcGkvYm9vdC5jIGIvYXJjaC94ODYv a2VybmVsL2FjcGkvYm9vdC5jCmluZGV4IDI2MjRkZTEuLjhkY2JmNjggMTAwNjQ0Ci0tLSBhL2Fy Y2gveDg2L2tlcm5lbC9hY3BpL2Jvb3QuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvYWNwaS9ib290 LmMKQEAgLTkzNSw2ICs5MzUsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBhY3BpX3BhcnNlX2hwZXQo c3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICp0YWJsZSkKICNkZWZpbmUgSFBFVF9SRVNPVVJDRV9O QU1FX1NJWkUgOQogCWhwZXRfcmVzID0gbWVtYmxvY2tfYWxsb2Moc2l6ZW9mKCpocGV0X3Jlcykg KyBIUEVUX1JFU09VUkNFX05BTUVfU0laRSwKIAkJCQkgIFNNUF9DQUNIRV9CWVRFUyk7CisJaWYg KCFocGV0X3JlcykKKwkJcGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJXp1IGJ5dGVzXG4i LCBfX2Z1bmNfXywKKwkJICAgICAgc2l6ZW9mKCpocGV0X3JlcykgKyBIUEVUX1JFU09VUkNFX05B TUVfU0laRSk7CiAKIAlocGV0X3Jlcy0+bmFtZSA9ICh2b2lkICopJmhwZXRfcmVzWzFdOwogCWhw ZXRfcmVzLT5mbGFncyA9IElPUkVTT1VSQ0VfTUVNOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2Vy bmVsL2FwaWMvaW9fYXBpYy5jIGIvYXJjaC94ODYva2VybmVsL2FwaWMvaW9fYXBpYy5jCmluZGV4 IDI5NTNiYmYuLjM5N2JmYzggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9hcGljL2lvX2Fw aWMuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvYXBpYy9pb19hcGljLmMKQEAgLTI1NzksNiArMjU3 OSw4IEBAIHN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgKiBfX2luaXQgaW9hcGljX3NldHVwX3Jlc291 cmNlcyh2b2lkKQogCW4gKj0gbnJfaW9hcGljczsKIAogCW1lbSA9IG1lbWJsb2NrX2FsbG9jKG4s IFNNUF9DQUNIRV9CWVRFUyk7CisJaWYgKCFtZW0pCisJCXBhbmljKCIlczogRmFpbGVkIHRvIGFs bG9jYXRlICVsdSBieXRlc1xuIiwgX19mdW5jX18sIG4pOwogCXJlcyA9ICh2b2lkICopbWVtOwog CiAJbWVtICs9IHNpemVvZihzdHJ1Y3QgcmVzb3VyY2UpICogbnJfaW9hcGljczsKQEAgLTI2MjMs NiArMjYyNSw5IEBAIHZvaWQgX19pbml0IGlvX2FwaWNfaW5pdF9tYXBwaW5ncyh2b2lkKQogI2Vu ZGlmCiAJCQlpb2FwaWNfcGh5cyA9ICh1bnNpZ25lZCBsb25nKW1lbWJsb2NrX2FsbG9jKFBBR0Vf U0laRSwKIAkJCQkJCQkJICAgIFBBR0VfU0laRSk7CisJCQlpZiAoIWlvYXBpY19waHlzKQorCQkJ CXBhbmljKCIlczogRmFpbGVkIHRvIGFsbG9jYXRlICVsdSBieXRlcyBhbGlnbj0weCVseFxuIiwK KwkJCQkgICAgICBfX2Z1bmNfXywgUEFHRV9TSVpFLCBQQUdFX1NJWkUpOwogCQkJaW9hcGljX3Bo eXMgPSBfX3BhKGlvYXBpY19waHlzKTsKIAkJfQogCQlzZXRfZml4bWFwX25vY2FjaGUoaWR4LCBp b2FwaWNfcGh5cyk7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jIGIvYXJjaC94 ODYva2VybmVsL2U4MjAuYwppbmRleCA5YzBlYjU0Li4xZjE4ZWMwIDEwMDY0NAotLS0gYS9hcmNo L3g4Ni9rZXJuZWwvZTgyMC5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9lODIwLmMKQEAgLTEwOTUs NiArMTA5NSw5IEBAIHZvaWQgX19pbml0IGU4MjBfX3Jlc2VydmVfcmVzb3VyY2VzKHZvaWQpCiAK IAlyZXMgPSBtZW1ibG9ja19hbGxvYyhzaXplb2YoKnJlcykgKiBlODIwX3RhYmxlLT5ucl9lbnRy aWVzLAogCQkJICAgICBTTVBfQ0FDSEVfQllURVMpOworCWlmICghcmVzKQorCQlwYW5pYygiJXM6 IEZhaWxlZCB0byBhbGxvY2F0ZSAlenUgYnl0ZXNcbiIsIF9fZnVuY19fLAorCQkgICAgICBzaXpl b2YoKnJlcykgKiBlODIwX3RhYmxlLT5ucl9lbnRyaWVzKTsKIAllODIwX3JlcyA9IHJlczsKIAog CWZvciAoaSA9IDA7IGkgPCBlODIwX3RhYmxlLT5ucl9lbnRyaWVzOyBpKyspIHsKZGlmZiAtLWdp dCBhL2FyY2gveDg2L3BsYXRmb3JtL29scGMvb2xwY19kdC5jIGIvYXJjaC94ODYvcGxhdGZvcm0v b2xwYy9vbHBjX2R0LmMKaW5kZXggYjRhYjc3OS4uZGFkM2I2MCAxMDA2NDQKLS0tIGEvYXJjaC94 ODYvcGxhdGZvcm0vb2xwYy9vbHBjX2R0LmMKKysrIGIvYXJjaC94ODYvcGxhdGZvcm0vb2xwYy9v bHBjX2R0LmMKQEAgLTE0MSw2ICsxNDEsOSBAQCB2b2lkICogX19pbml0IHByb21fZWFybHlfYWxs b2ModW5zaWduZWQgbG9uZyBzaXplKQogCQkgKiB3YXN0ZWQgYm9vdG1lbSkgYW5kIGhhbmQgb2Zm IGNodW5rcyBvZiBpdCB0byBjYWxsZXJzLgogCQkgKi8KIAkJcmVzID0gbWVtYmxvY2tfYWxsb2Mo Y2h1bmtfc2l6ZSwgU01QX0NBQ0hFX0JZVEVTKTsKKwkJaWYgKCFyZXMpCisJCQlwYW5pYygiJXM6 IEZhaWxlZCB0byBhbGxvY2F0ZSAlbHUgYnl0ZXNcbiIsIF9fZnVuY19fLAorCQkJICAgICAgY2h1 bmtfc2l6ZSk7CiAJCUJVR19PTighcmVzKTsKIAkJcHJvbV9lYXJseV9hbGxvY2F0ZWQgKz0gY2h1 bmtfc2l6ZTsKIAkJbWVtc2V0KHJlcywgMCwgY2h1bmtfc2l6ZSk7CmRpZmYgLS1naXQgYS9hcmNo L3g4Ni94ZW4vcDJtLmMgYi9hcmNoL3g4Ni94ZW4vcDJtLmMKaW5kZXggMDU1ZTM3ZS4uOTVjZTli NSAxMDA2NDQKLS0tIGEvYXJjaC94ODYveGVuL3AybS5jCisrKyBiL2FyY2gveDg2L3hlbi9wMm0u YwpAQCAtMTgxLDggKzE4MSwxNSBAQCBzdGF0aWMgdm9pZCBwMm1faW5pdF9pZGVudGl0eSh1bnNp Z25lZCBsb25nICpwMm0sIHVuc2lnbmVkIGxvbmcgcGZuKQogCiBzdGF0aWMgdm9pZCAqIF9fcmVm IGFsbG9jX3AybV9wYWdlKHZvaWQpCiB7Ci0JaWYgKHVubGlrZWx5KCFzbGFiX2lzX2F2YWlsYWJs ZSgpKSkKLQkJcmV0dXJuIG1lbWJsb2NrX2FsbG9jKFBBR0VfU0laRSwgUEFHRV9TSVpFKTsKKwlp ZiAodW5saWtlbHkoIXNsYWJfaXNfYXZhaWxhYmxlKCkpKSB7CisJCXZvaWQgKnB0ciA9IG1lbWJs b2NrX2FsbG9jKFBBR0VfU0laRSwgUEFHRV9TSVpFKTsKKworCQlpZiAoIXB0cikKKwkJCXBhbmlj KCIlczogRmFpbGVkIHRvIGFsbG9jYXRlICVsdSBieXRlcyBhbGlnbj0weCVseFxuIiwKKwkJCSAg ICAgIF9fZnVuY19fLCBQQUdFX1NJWkUsIFBBR0VfU0laRSk7CisKKwkJcmV0dXJuIHB0cjsKKwl9 CiAKIAlyZXR1cm4gKHZvaWQgKilfX2dldF9mcmVlX3BhZ2UoR0ZQX0tFUk5FTCk7CiB9CmRpZmYg LS1naXQgYS9hcmNoL3h0ZW5zYS9tbS9rYXNhbl9pbml0LmMgYi9hcmNoL3h0ZW5zYS9tbS9rYXNh bl9pbml0LmMKaW5kZXggNDg1Mjg0OC4uNDEwNDdjYSAxMDA2NDQKLS0tIGEvYXJjaC94dGVuc2Ev bW0va2FzYW5faW5pdC5jCisrKyBiL2FyY2gveHRlbnNhL21tL2thc2FuX2luaXQuYwpAQCAtNDUs NiArNDUsMTAgQEAgc3RhdGljIHZvaWQgX19pbml0IHBvcHVsYXRlKHZvaWQgKnN0YXJ0LCB2b2lk ICplbmQpCiAJcG1kX3QgKnBtZCA9IHBtZF9vZmZzZXQocGdkLCB2YWRkcik7CiAJcHRlX3QgKnB0 ZSA9IG1lbWJsb2NrX2FsbG9jKG5fcGFnZXMgKiBzaXplb2YocHRlX3QpLCBQQUdFX1NJWkUpOwog CisJaWYgKCFwdGUpCisJCXBhbmljKCIlczogRmFpbGVkIHRvIGFsbG9jYXRlICV6dSBieXRlcyBh bGlnbj0weCVseFxuIiwKKwkJICAgICAgX19mdW5jX18sIG5fcGFnZXMgKiBzaXplb2YocHRlX3Qp LCBQQUdFX1NJWkUpOworCiAJcHJfZGVidWcoIiVzOiAlcCAtICVwXG4iLCBfX2Z1bmNfXywgc3Rh cnQsIGVuZCk7CiAKIAlmb3IgKGkgPSBqID0gMDsgaSA8IG5fcG1kczsgKytpKSB7CmRpZmYgLS1n aXQgYS9hcmNoL3h0ZW5zYS9tbS9tbXUuYyBiL2FyY2gveHRlbnNhL21tL21tdS5jCmluZGV4IGE0 ZGNmZDMuLjJmYjdkMTEgMTAwNjQ0Ci0tLSBhL2FyY2gveHRlbnNhL21tL21tdS5jCisrKyBiL2Fy Y2gveHRlbnNhL21tL21tdS5jCkBAIC0zMiw2ICszMiw5IEBAIHN0YXRpYyB2b2lkICogX19pbml0 IGluaXRfcG1kKHVuc2lnbmVkIGxvbmcgdmFkZHIsIHVuc2lnbmVkIGxvbmcgbl9wYWdlcykKIAkJ IF9fZnVuY19fLCB2YWRkciwgbl9wYWdlcyk7CiAKIAlwdGUgPSBtZW1ibG9ja19hbGxvY19sb3co bl9wYWdlcyAqIHNpemVvZihwdGVfdCksIFBBR0VfU0laRSk7CisJaWYgKCFwdGUpCisJCXBhbmlj KCIlczogRmFpbGVkIHRvIGFsbG9jYXRlICV6dSBieXRlcyBhbGlnbj0lbHhcbiIsCisJCSAgICAg IF9fZnVuY19fLCBuX3BhZ2VzICogc2l6ZW9mKHB0ZV90KSwgUEFHRV9TSVpFKTsKIAogCWZvciAo aSA9IDA7IGkgPCBuX3BhZ2VzOyArK2kpCiAJCXB0ZV9jbGVhcihOVUxMLCAwLCBwdGUgKyBpKTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL3RpL2Nsay5jIGIvZHJpdmVycy9jbGsvdGkvY2xrLmMK aW5kZXggZDBjZDU4NS4uNWQ3ZmIyZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9jbGsvdGkvY2xrLmMK KysrIGIvZHJpdmVycy9jbGsvdGkvY2xrLmMKQEAgLTM1MSw2ICszNTEsOSBAQCB2b2lkIF9faW5p dCBvbWFwMl9jbGtfbGVnYWN5X3Byb3ZpZGVyX2luaXQoaW50IGluZGV4LCB2b2lkIF9faW9tZW0g Km1lbSkKIAlzdHJ1Y3QgY2xrX2lvbWFwICppbzsKIAogCWlvID0gbWVtYmxvY2tfYWxsb2Moc2l6 ZW9mKCppbyksIFNNUF9DQUNIRV9CWVRFUyk7CisJaWYgKCFpbykKKwkJcGFuaWMoIiVzOiBGYWls ZWQgdG8gYWxsb2NhdGUgJXp1IGJ5dGVzXG4iLCBfX2Z1bmNfXywKKwkJICAgICAgc2l6ZW9mKCpp bykpOwogCiAJaW8tPm1lbSA9IG1lbTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tYWNpbnRvc2gv c211LmMgYi9kcml2ZXJzL21hY2ludG9zaC9zbXUuYwppbmRleCA0MmNmNjhkLi42YTg0NDEyIDEw MDY0NAotLS0gYS9kcml2ZXJzL21hY2ludG9zaC9zbXUuYworKysgYi9kcml2ZXJzL21hY2ludG9z aC9zbXUuYwpAQCAtNDkzLDYgKzQ5Myw5IEBAIGludCBfX2luaXQgc211X2luaXQgKHZvaWQpCiAJ fQogCiAJc211ID0gbWVtYmxvY2tfYWxsb2Moc2l6ZW9mKHN0cnVjdCBzbXVfZGV2aWNlKSwgU01Q X0NBQ0hFX0JZVEVTKTsKKwlpZiAoIXNtdSkKKwkJcGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2Nh dGUgJXp1IGJ5dGVzXG4iLCBfX2Z1bmNfXywKKwkJICAgICAgc2l6ZW9mKHN0cnVjdCBzbXVfZGV2 aWNlKSk7CiAKIAlzcGluX2xvY2tfaW5pdCgmc211LT5sb2NrKTsKIAlJTklUX0xJU1RfSEVBRCgm c211LT5jbWRfbGlzdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL29mL2ZkdC5jIGIvZHJpdmVycy9v Zi9mZHQuYwppbmRleCA3MDk5YzY1Li43OTY0NjBjIDEwMDY0NAotLS0gYS9kcml2ZXJzL29mL2Zk dC5jCisrKyBiL2RyaXZlcnMvb2YvZmR0LmMKQEAgLTExODUsNyArMTE4NSwxMyBAQCBpbnQgX19p bml0IF9fd2VhayBlYXJseV9pbml0X2R0X3Jlc2VydmVfbWVtb3J5X2FyY2gocGh5c19hZGRyX3Qg YmFzZSwKIAogc3RhdGljIHZvaWQgKiBfX2luaXQgZWFybHlfaW5pdF9kdF9hbGxvY19tZW1vcnlf YXJjaCh1NjQgc2l6ZSwgdTY0IGFsaWduKQogewotCXJldHVybiBtZW1ibG9ja19hbGxvYyhzaXpl LCBhbGlnbik7CisJdm9pZCAqcHRyID0gbWVtYmxvY2tfYWxsb2Moc2l6ZSwgYWxpZ24pOworCisJ aWYgKCFwdHIpCisJCXBhbmljKCIlczogRmFpbGVkIHRvIGFsbG9jYXRlICVsbHUgYnl0ZXMgYWxp Z249MHglbGx4XG4iLAorCQkgICAgICBfX2Z1bmNfXywgc2l6ZSwgYWxpZ24pOworCisJcmV0dXJu IHB0cjsKIH0KIAogYm9vbCBfX2luaXQgZWFybHlfaW5pdF9kdF92ZXJpZnkodm9pZCAqcGFyYW1z KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9vZi91bml0dGVzdC5jIGIvZHJpdmVycy9vZi91bml0dGVz dC5jCmluZGV4IDg0NDI3MzguLjEwZjY1OTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvb2YvdW5pdHRl c3QuYworKysgYi9kcml2ZXJzL29mL3VuaXR0ZXN0LmMKQEAgLTIyMzQsNyArMjIzNCwxMyBAQCBz dGF0aWMgc3RydWN0IGRldmljZV9ub2RlICpvdmVybGF5X2Jhc2Vfcm9vdDsKIAogc3RhdGljIHZv aWQgKiBfX2luaXQgZHRfYWxsb2NfbWVtb3J5KHU2NCBzaXplLCB1NjQgYWxpZ24pCiB7Ci0JcmV0 dXJuIG1lbWJsb2NrX2FsbG9jKHNpemUsIGFsaWduKTsKKwl2b2lkICpwdHIgPSBtZW1ibG9ja19h bGxvYyhzaXplLCBhbGlnbik7CisKKwlpZiAoIXB0cikKKwkJcGFuaWMoIiVzOiBGYWlsZWQgdG8g YWxsb2NhdGUgJWxsdSBieXRlcyBhbGlnbj0weCVsbHhcbiIsCisJCSAgICAgIF9fZnVuY19fLCBz aXplLCBhbGlnbik7CisKKwlyZXR1cm4gcHRyOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy94ZW4vc3dpb3RsYi14ZW4uYyBiL2RyaXZlcnMveGVuL3N3aW90bGIteGVuLmMKaW5kZXggOTg5 Y2Y4Ny4uZDNlNDlmMSAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vc3dpb3RsYi14ZW4uYworKysg Yi9kcml2ZXJzL3hlbi9zd2lvdGxiLXhlbi5jCkBAIC0yMTQsMTAgKzIxNCwxMyBAQCBpbnQgX19y ZWYgeGVuX3N3aW90bGJfaW5pdChpbnQgdmVyYm9zZSwgYm9vbCBlYXJseSkKIAkvKgogCSAqIEdl dCBJTyBUTEIgbWVtb3J5IGZyb20gYW55IGxvY2F0aW9uLgogCSAqLwotCWlmIChlYXJseSkKKwlp ZiAoZWFybHkpIHsKIAkJeGVuX2lvX3RsYl9zdGFydCA9IG1lbWJsb2NrX2FsbG9jKFBBR0VfQUxJ R04oYnl0ZXMpLAogCQkJCQkJICBQQUdFX1NJWkUpOwotCWVsc2UgeworCQlpZiAoIXhlbl9pb190 bGJfc3RhcnQpCisJCQlwYW5pYygiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAlbHUgYnl0ZXMgYWxp Z249MHglbHhcbiIsCisJCQkgICAgICBfX2Z1bmNfXywgUEFHRV9BTElHTihieXRlcyksIFBBR0Vf U0laRSk7CisJfSBlbHNlIHsKICNkZWZpbmUgU0xBQlNfUEVSX1BBR0UgKDEgPDwgKFBBR0VfU0hJ RlQgLSBJT19UTEJfU0hJRlQpKQogI2RlZmluZSBJT19UTEJfTUlOX1NMQUJTICgoMTw8MjApID4+ IElPX1RMQl9TSElGVCkKIAkJd2hpbGUgKChTTEFCU19QRVJfUEFHRSA8PCBvcmRlcikgPiBJT19U TEJfTUlOX1NMQUJTKSB7CmRpZmYgLS1naXQgYS9rZXJuZWwvcG93ZXIvc25hcHNob3QuYyBiL2tl cm5lbC9wb3dlci9zbmFwc2hvdC5jCmluZGV4IDQ4MDJiMDMuLmYwOGExZTQgMTAwNjQ0Ci0tLSBh L2tlcm5lbC9wb3dlci9zbmFwc2hvdC5jCisrKyBiL2tlcm5lbC9wb3dlci9zbmFwc2hvdC5jCkBA IC05NjUsNiArOTY1LDkgQEAgdm9pZCBfX2luaXQgX19yZWdpc3Rlcl9ub3NhdmVfcmVnaW9uKHVu c2lnbmVkIGxvbmcgc3RhcnRfcGZuLAogCQkvKiBUaGlzIGFsbG9jYXRpb24gY2Fubm90IGZhaWwg Ki8KIAkJcmVnaW9uID0gbWVtYmxvY2tfYWxsb2Moc2l6ZW9mKHN0cnVjdCBub3NhdmVfcmVnaW9u KSwKIAkJCQkJU01QX0NBQ0hFX0JZVEVTKTsKKwkJaWYgKCFyZWdpb24pCisJCQlwYW5pYygiJXM6 IEZhaWxlZCB0byBhbGxvY2F0ZSAlenUgYnl0ZXNcbiIsIF9fZnVuY19fLAorCQkJICAgICAgc2l6 ZW9mKHN0cnVjdCBub3NhdmVfcmVnaW9uKSk7CiAJfQogCXJlZ2lvbi0+c3RhcnRfcGZuID0gc3Rh cnRfcGZuOwogCXJlZ2lvbi0+ZW5kX3BmbiA9IGVuZF9wZm47CmRpZmYgLS1naXQgYS9saWIvY3B1 bWFzay5jIGIvbGliL2NwdW1hc2suYwppbmRleCAwODdhM2U5Li4wY2I2NzJlIDEwMDY0NAotLS0g YS9saWIvY3B1bWFzay5jCisrKyBiL2xpYi9jcHVtYXNrLmMKQEAgLTE2NSw2ICsxNjUsOSBAQCBF WFBPUlRfU1lNQk9MKHphbGxvY19jcHVtYXNrX3Zhcik7CiB2b2lkIF9faW5pdCBhbGxvY19ib290 bWVtX2NwdW1hc2tfdmFyKGNwdW1hc2tfdmFyX3QgKm1hc2spCiB7CiAJKm1hc2sgPSBtZW1ibG9j a19hbGxvYyhjcHVtYXNrX3NpemUoKSwgU01QX0NBQ0hFX0JZVEVTKTsKKwlpZiAoISptYXNrKQor CQlwYW5pYygiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAldSBieXRlc1xuIiwgX19mdW5jX18sCisJ CSAgICAgIGNwdW1hc2tfc2l6ZSgpKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9tbS9rYXNhbi9p bml0LmMgYi9tbS9rYXNhbi9pbml0LmMKaW5kZXggNDVhMWI1ZS4uYWY5MDdkOCAxMDA2NDQKLS0t IGEvbW0va2FzYW4vaW5pdC5jCisrKyBiL21tL2thc2FuL2luaXQuYwpAQCAtODMsOCArODMsMTQg QEAgc3RhdGljIGlubGluZSBib29sIGthc2FuX2Vhcmx5X3NoYWRvd19wYWdlX2VudHJ5KHB0ZV90 IHB0ZSkKIAogc3RhdGljIF9faW5pdCB2b2lkICplYXJseV9hbGxvYyhzaXplX3Qgc2l6ZSwgaW50 IG5vZGUpCiB7Ci0JcmV0dXJuIG1lbWJsb2NrX2FsbG9jX3RyeV9uaWQoc2l6ZSwgc2l6ZSwgX19w YShNQVhfRE1BX0FERFJFU1MpLAotCQkJCQlNRU1CTE9DS19BTExPQ19BQ0NFU1NJQkxFLCBub2Rl KTsKKwl2b2lkICpwdHIgPSBtZW1ibG9ja19hbGxvY190cnlfbmlkKHNpemUsIHNpemUsIF9fcGEo TUFYX0RNQV9BRERSRVNTKSwKKwkJCQkJICAgTUVNQkxPQ0tfQUxMT0NfQUNDRVNTSUJMRSwgbm9k ZSk7CisKKwlpZiAoIXB0cikKKwkJcGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJXp1IGJ5 dGVzIGFsaWduPSV6eCBuaWQ9JWQgZnJvbT0lbGx4XG4iLAorCQkgICAgICBfX2Z1bmNfXywgc2l6 ZSwgc2l6ZSwgbm9kZSwgKHU2NClfX3BhKE1BWF9ETUFfQUREUkVTUykpOworCisJcmV0dXJuIHB0 cjsKIH0KIAogc3RhdGljIHZvaWQgX19yZWYgemVyb19wdGVfcG9wdWxhdGUocG1kX3QgKnBtZCwg dW5zaWduZWQgbG9uZyBhZGRyLApkaWZmIC0tZ2l0IGEvbW0vc3BhcnNlLmMgYi9tbS9zcGFyc2Uu YwppbmRleCA3ZWE1ZGM2Li5hZDk0MjQyIDEwMDY0NAotLS0gYS9tbS9zcGFyc2UuYworKysgYi9t bS9zcGFyc2UuYwpAQCAtNjUsMTEgKzY1LDE1IEBAIHN0YXRpYyBub2lubGluZSBzdHJ1Y3QgbWVt X3NlY3Rpb24gX19yZWYgKnNwYXJzZV9pbmRleF9hbGxvYyhpbnQgbmlkKQogCXVuc2lnbmVkIGxv bmcgYXJyYXlfc2l6ZSA9IFNFQ1RJT05TX1BFUl9ST09UICoKIAkJCQkgICBzaXplb2Yoc3RydWN0 IG1lbV9zZWN0aW9uKTsKIAotCWlmIChzbGFiX2lzX2F2YWlsYWJsZSgpKQorCWlmIChzbGFiX2lz X2F2YWlsYWJsZSgpKSB7CiAJCXNlY3Rpb24gPSBremFsbG9jX25vZGUoYXJyYXlfc2l6ZSwgR0ZQ X0tFUk5FTCwgbmlkKTsKLQllbHNlCisJfSBlbHNlIHsKIAkJc2VjdGlvbiA9IG1lbWJsb2NrX2Fs bG9jX25vZGUoYXJyYXlfc2l6ZSwgU01QX0NBQ0hFX0JZVEVTLAogCQkJCQkgICAgICBuaWQpOwor CQlpZiAoIXNlY3Rpb24pCisJCQlwYW5pYygiJXM6IEZhaWxlZCB0byBhbGxvY2F0ZSAlbHUgYnl0 ZXMgbmlkPSVkXG4iLAorCQkJICAgICAgX19mdW5jX18sIGFycmF5X3NpemUsIG5pZCk7CisJfQog CiAJcmV0dXJuIHNlY3Rpb247CiB9CkBAIC0yMTgsNiArMjIyLDkgQEAgdm9pZCBfX2luaXQgbWVt b3J5X3ByZXNlbnQoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBl bmQpCiAJCXNpemUgPSBzaXplb2Yoc3RydWN0IG1lbV9zZWN0aW9uKikgKiBOUl9TRUNUSU9OX1JP T1RTOwogCQlhbGlnbiA9IDEgPDwgKElOVEVSTk9ERV9DQUNIRV9TSElGVCk7CiAJCW1lbV9zZWN0 aW9uID0gbWVtYmxvY2tfYWxsb2Moc2l6ZSwgYWxpZ24pOworCQlpZiAoIW1lbV9zZWN0aW9uKQor CQkJcGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJWx1IGJ5dGVzIGFsaWduPTB4JWx4XG4i LAorCQkJICAgICAgX19mdW5jX18sIHNpemUsIGFsaWduKTsKIAl9CiAjZW5kaWYKIApAQCAtNDEx LDYgKzQxOCwxMCBAQCBzdHJ1Y3QgcGFnZSBfX2luaXQgKnNwYXJzZV9tZW1fbWFwX3BvcHVsYXRl KHVuc2lnbmVkIGxvbmcgcG51bSwgaW50IG5pZCwKIAltYXAgPSBtZW1ibG9ja19hbGxvY190cnlf bmlkKHNpemUsCiAJCQkJCSAgUEFHRV9TSVpFLCBfX3BhKE1BWF9ETUFfQUREUkVTUyksCiAJCQkJ CSAgTUVNQkxPQ0tfQUxMT0NfQUNDRVNTSUJMRSwgbmlkKTsKKwlpZiAoIW1hcCkKKwkJcGFuaWMo IiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJWx1IGJ5dGVzIGFsaWduPTB4JWx4IG5pZD0lZCBmcm9t PSVseFxuIiwKKwkJICAgICAgX19mdW5jX18sIHNpemUsIFBBR0VfU0laRSwgbmlkLCBfX3BhKE1B WF9ETUFfQUREUkVTUykpOworCiAJcmV0dXJuIG1hcDsKIH0KICNlbmRpZiAvKiAhQ09ORklHX1NQ QVJTRU1FTV9WTUVNTUFQICovCkBAIC00MjUsNiArNDM2LDEwIEBAIHN0YXRpYyB2b2lkIF9faW5p dCBzcGFyc2VfYnVmZmVyX2luaXQodW5zaWduZWQgbG9uZyBzaXplLCBpbnQgbmlkKQogCQltZW1i bG9ja19hbGxvY190cnlfbmlkX3JhdyhzaXplLCBQQUdFX1NJWkUsCiAJCQkJCQlfX3BhKE1BWF9E TUFfQUREUkVTUyksCiAJCQkJCQlNRU1CTE9DS19BTExPQ19BQ0NFU1NJQkxFLCBuaWQpOworCWlm ICghc3BhcnNlbWFwX2J1ZikKKwkJcGFuaWMoIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgJWx1IGJ5 dGVzIGFsaWduPTB4JWx4IG5pZD0lZCBmcm9tPSVseFxuIiwKKwkJICAgICAgX19mdW5jX18sIHNp emUsIFBBR0VfU0laRSwgbmlkLCBfX3BhKE1BWF9ETUFfQUREUkVTUykpOworCiAJc3BhcnNlbWFw X2J1Zl9lbmQgPSBzcGFyc2VtYXBfYnVmICsgc2l6ZTsKIH0KIAo=