From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.7 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1E4B8C433E0 for ; Wed, 27 Jan 2021 17:23:50 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A72FB64DA0 for ; Wed, 27 Jan 2021 17:23:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A72FB64DA0 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C4F2B6E86D; Wed, 27 Jan 2021 17:23:48 +0000 (UTC) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0C3406E86D for ; Wed, 27 Jan 2021 17:23:48 +0000 (UTC) IronPort-SDR: 9dthBcYgtbA6uhwZ2tIFUnaIx47HvHczz7XmkDl1ympPgVfopflu+yr98/t2cLU7ggEJQuQrEp ySHFCX93pPxQ== X-IronPort-AV: E=McAfee;i="6000,8403,9877"; a="264928857" X-IronPort-AV: E=Sophos;i="5.79,380,1602572400"; d="scan'208";a="264928857" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Jan 2021 09:23:47 -0800 IronPort-SDR: 4+yQSnRWy5Iqmm8ELug4x+wYn21jY1u0rcQfv9NysjdcJ0uxDNNO3c9xvmnlUJw7nO5xweG8CJ u4mTObpo2opA== X-IronPort-AV: E=Sophos;i="5.79,380,1602572400"; d="scan'208";a="388401365" Received: from erkelenz-mobl1.ger.corp.intel.com (HELO helsinki.ger.corp.intel.com) ([10.249.45.96]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Jan 2021 09:23:44 -0800 From: Gwan-gyeong Mun To: intel-gfx@lists.freedesktop.org Date: Wed, 27 Jan 2021 19:23:37 +0200 Message-Id: <20210127172338.1519034-1-gwan-gyeong.mun@intel.com> X-Mailer: git-send-email 2.30.0 MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v13 1/2] drm/i915/display: Support PSR Multiple Instances X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: jani.nikula@intel.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" SXQgaXMgYSBwcmVsaW1pbmFyeSB3b3JrIGZvciBzdXBwb3J0aW5nIG11bHRpcGxlIEVEUCBQU1Ig YW5kCkRQIFBhbmVsUmVwbGF5LiBBbmQgaXQgcmVmYWN0b3JzIHNpbmdsZXRvbiBQU1IgdG8gTXVs dGkgVHJhbnNjb2RlcgpzdXBwb3J0YWJsZSBQU1IuCkFuZCB0aGlzIG1vdmVzIGFuZCByZW5hbWVz IHRoZSBpOTE1X3BzciBzdHJ1Y3R1cmUgb2YgZHJtX2k5MTVfcHJpdmF0ZSdzIHRvCmludGVsX2Rw J3MgaW50ZWxfcHNyIHN0cnVjdHVyZS4KSXQgYWxzbyBjYXVzZXMgY2hhbmdlcyBpbiBQU1IgaW50 ZXJydXB0IGhhbmRsaW5nIHJvdXRpbmUgZm9yIHN1cHBvcnRpbmcKbXVsdGlwbGUgdHJhbnNjb2Rl cnMuIEJ1dCBpdCBkb2VzIG5vdCBjaGFuZ2UgdGhlIHNjZW5hcmlvIGFuZCB0aW1pbmcgb2YKZW5h YmxpbmcgYW5kIGRpc2FibGluZyBQU1IuIEFuZCBpdCBub3Qgc3VwcG9ydCBtdWx0aXBsZSBwaXBl cyB3aXRoCmEgc2luZ2xlIHRyYW5zY29kZXIgUFNSIGNhc2UgeWV0LgoKdjI6IEZpeCBpbmRlbnRh dGlvbiBhbmQgYWRkIGNvbW1lbnRzCnYzOiBSZW1vdmUgQmxhbmsgbGluZQp2NDogUmViYXNlZAp2 NTogUmViYXNlZCBhbmQgQWRkcmVzc2VkIEFuc2h1bWFuJ3MgcmV2aWV3IGNvbW1lbnQuCiAgICAt IE1vdmUgY2FsbGluZyBvZiBpbnRlbF9wc3JfaW5pdCgpIHRvIGludGVsX2RwX2luaXRfY29ubmVj dG9yKCkKdjY6IEFkZHJlc3MgQW5zaHVtYW4ncyByZXZpZXcgY29tbWVudHMKICAgLSBSZW1vdmUg d3JvbmcgY29tbWVudHMgYW5kIGFkZCBjb21tZW50cyBmb3IgYSBsaW1pdCBvZiBzdXBwb3J0aW5n IG9mCiAgICAgYSBzaW5nbGUgcGlwZSBQU1IKdjc6IFVwZGF0ZSBpbnRlbF9wc3JfY29tcHV0ZV9j b25maWcoKSBmb3Igc3VwcG9ydGluZyBtdWx0aXBsZSB0cmFuc2NvZGVyCiAgICBQU1Igb24gQkRX Kwp2ODogQWRkcmVzcyBBbnNodW1hbidzIHJldmlldyBjb21tZW50cwogICAtIFJlcGxhY2UgRFJN X0RFQlVHX0tNUyB3aXRoIGRybV9kYmdfa21zKCkgLyBEUk1fV0FSTiB3aXRoIGRybV93YXJuKCkK djk6IEZpeCBjb21taXQgbWVzc2FnZQp2MTA6IFJlYmFzZWQKdjExOiBBZGRyZXNzIEpvc2UncyBy ZXZpZXcgY29tbWVudC4KICAtIFJlb3JkZXIgY2FsbGluZyBvcmRlciBvZiBpbnRlbF9wc3IyX3By b2dyYW1fdHJhbnNfbWFuX3Rya19jdGwoKS4KICAtIEluIG9yZGVyIHRvIHJlZHVjZSBjaGFuZ2Vz IGtlZXAgdGhlIG9sZCBuYW1lIGZvciBkcm1faTkxNV9wcml2YXRlLgogIC0gQ2hhbmdlIHJlc3Ry aWN0aW9ucyBvZiBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgUFNSLgp2MTI6IEFkZHJlc3MgSm9zZSdz IHJldmlldyBjb21tZW50LgogIC0gQ2hhbmdlIHRoZSBjYWxsaW5nIG9mIGludGVsX3BzcjJfcHJv Z3JhbV90cmFuc19tYW5fdHJrX2N0bCgpIGludG8KICAgIGNvbW1pdF9waXBlX2NvbmZpZygpLgog IC0gQ2hhbmdlIGEgY2hlY2tpbmcgb3JkZXIgb2YgQ0FOX1BTUigpIGFuZCBjb25uZWN0b3Jfc3Rh dHVzIHRvIG9yaWdpbmFsCiAgICBvbiBpOTE1X3Bzcl9zaW5rX3N0YXR1c19zaG93KCkuCiAgLSBE cm9wIHVubmVlZGVkIGludGVsX2RwX3VwZGF0ZV9waXBlKCkgZnVuY3Rpb24uCiAgLSBJbiBvcmRl ciB0byB3YWl0IGEgc3BlY2lmaWMgZW5jb2RlciB3aGljaCBiZWxvbmcgdG8gY3J0Y19zdGF0ZSBv bgogICAgaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUoKSwgYWRkIGNoZWNraW5nIG9mIGVuY29kZXIu CiAgLSBBZGQgYW4gd2hpdGVzcGFjZSB0byBjb21tZW50cy4KdjEzOiBSZWJhc2VkIGFuZCBBZGRy ZXNzIEpvc2UncyByZXZpZXcgY29tbWVudC4KICAtIEFkZCBhbmQgdXNlIGZvcl9lYWNoX2ludGVs X3Bzcl9lbmFibGVkX2VuY29kZXIoKSBtYWNyby4KICAtIEluIG9yZGVyIHRvIHVzZSBjb3JyZWN0 IGZyb250YnVmZmVyX2JpdCBmb3IgZWFjaCBwaXBlLAogICAgZml4IGludGVsX3Bzcl9pbnZhbGlk YXRlKCkgYW5kIGludGVsX3Bzcl9mbHVzaCgpLgogIC0gUmVtb3ZlIHJlZHVuZGFudCBvciB1bm5l ZWRlZCBjb2Rlcy4KICAtIFVwZGF0ZSBjb21tZW50cy4KClNpZ25lZC1vZmYtYnk6IEd3YW4tZ3ll b25nIE11biA8Z3dhbi1neWVvbmcubXVuQGludGVsLmNvbT4KQ2M6IEpvc8OpIFJvYmVydG8gZGUg U291emEgPGpvc2Uuc291emFAaW50ZWwuY29tPgpDYzogSnVoYS1QZWtrYSBIZWlra2lsYSA8anVo YXBla2thLmhlaWtraWxhQGdtYWlsLmNvbT4KQ2M6IEFuc2h1bWFuIEd1cHRhIDxhbnNodW1hbi5n dXB0YUBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBBbnNodW1hbiBHdXB0YSA8YW5zaHVtYW4uZ3Vw dGFAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlz cGxheS5jICB8ICAgMiAtCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3Bs YXkuaCAgfCAgIDggKwogLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9kZWJ1Z2Zz LmMgIHwgMTA1ICsrKy0KIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMu aCAgICB8ICA0NiArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jICAg ICAgIHwgIDEwICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5jICAg ICAgfCA1NzYgKysrKysrKysrKy0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX3Bzci5oICAgICAgfCAgMTEgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfc3ByaXRlLmMgICB8ICAgNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aCAgICAgICAgICAgICAgIHwgIDM4IC0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5j ICAgICAgICAgICAgICAgfCAgNDggKy0KIDEwIGZpbGVzIGNoYW5nZWQsIDQ4NSBpbnNlcnRpb25z KCspLCAzNjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXkuYwppbmRleCA2NjdkOTQxODc4YTMuLjI0ZGY5ZGZiNTdmYiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKQEAgLTE0MTM1LDggKzE0 MTM1LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2V0dXBfb3V0cHV0cyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWludGVsX2R2b19pbml0KGRldl9wcml2KTsKIAl9CiAKLQlp bnRlbF9wc3JfaW5pdChkZXZfcHJpdik7Ci0KIAlmb3JfZWFjaF9pbnRlbF9lbmNvZGVyKCZkZXZf cHJpdi0+ZHJtLCBlbmNvZGVyKSB7CiAJCWVuY29kZXItPmJhc2UucG9zc2libGVfY3J0Y3MgPQog CQkJaW50ZWxfZW5jb2Rlcl9wb3NzaWJsZV9jcnRjcyhlbmNvZGVyKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmgKaW5kZXggNjRmZmEzNDU0NGE3Li5mYzQx ZDBkOWU1YTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGlzcGxheS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxh eS5oCkBAIC00MTcsNiArNDE3LDE0IEBAIGVudW0gcGh5X2ZpYSB7CiAJCWZvcl9lYWNoX2lmKChl bmNvZGVyX21hc2spICYJCQkJXAogCQkJICAgIGRybV9lbmNvZGVyX21hc2soJmludGVsX2VuY29k ZXItPmJhc2UpKQogCisjZGVmaW5lIGZvcl9lYWNoX2ludGVsX2VuY29kZXJfaXNfcHNyX2VuYWJs ZWQoZGV2LCBpbnRlbF9lbmNvZGVyLCBlbmNvZGVyX21hc2spIFwKKwlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KGludGVsX2VuY29kZXIsCQkJCVwKKwkJCSAgICAmKGRldiktPm1vZGVfY29uZmlnLmVuY29k ZXJfbGlzdCwJCVwKKwkJCSAgICBiYXNlLmhlYWQpCQkJCQlcCisJCWZvcl9lYWNoX2lmKCgoZW5j b2Rlcl9tYXNrKSAmCQkJCVwKKwkJCSAgICAgZHJtX2VuY29kZXJfbWFzaygmaW50ZWxfZW5jb2Rl ci0+YmFzZSkpICYmCVwKKwkJCSAgICBpbnRlbF9lbmNvZGVyX2lzX3Bzcl9lbmFibGVkKGludGVs X2VuY29kZXIpKQorCiAjZGVmaW5lIGZvcl9lYWNoX2ludGVsX2RwKGRldiwgaW50ZWxfZW5jb2Rl cikJCQlcCiAJZm9yX2VhY2hfaW50ZWxfZW5jb2RlcihkZXYsIGludGVsX2VuY29kZXIpCQlcCiAJ CWZvcl9lYWNoX2lmKGludGVsX2VuY29kZXJfaXNfZHAoaW50ZWxfZW5jb2RlcikpCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfZGVidWdmcy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2RlYnVnZnMuYwpp bmRleCBkNjJiMThkNWVjZDguLjk4NjgyNTNkZjYxZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2RlYnVnZnMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfZGVidWdmcy5jCkBAIC0yNDksMTIgKzI0 OSwxMSBAQCBzdGF0aWMgaW50IGk5MTVfcHNyX3Npbmtfc3RhdHVzX3Nob3coc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICpkYXRhKQogCQkic2luayBpbnRlcm5hbCBlcnJvciIsCiAJfTsKIAlzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gbS0+cHJpdmF0ZTsKLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+ZGV2KTsKIAlzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwID0KIAkJaW50ZWxfYXR0YWNoZWRfZHAodG9faW50ZWxfY29ubmVj dG9yKGNvbm5lY3RvcikpOwogCWludCByZXQ7CiAKLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKSB7 CisJaWYgKCFDQU5fUFNSKGludGVsX2RwKSkgewogCQlzZXFfcHV0cyhtLCAiUFNSIFVuc3VwcG9y dGVkXG4iKTsKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQpAQCAtMjgwLDEyICsyNzksMTMgQEAgc3Rh dGljIGludCBpOTE1X3Bzcl9zaW5rX3N0YXR1c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9p ZCAqZGF0YSkKIERFRklORV9TSE9XX0FUVFJJQlVURShpOTE1X3Bzcl9zaW5rX3N0YXR1cyk7CiAK IHN0YXRpYyB2b2lkCi1wc3Jfc291cmNlX3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsIHN0cnVjdCBzZXFfZmlsZSAqbSkKK3Bzcl9zb3VyY2Vfc3RhdHVzKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsIHN0cnVjdCBzZXFfZmlsZSAqbSkKIHsKIAl1MzIgdmFsLCBzdGF0 dXNfdmFsOwogCWNvbnN0IGNoYXIgKnN0YXR1cyA9ICJ1bmtub3duIjsKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKIAotCWlmIChkZXZf cHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkgeworCWlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxl ZCkgewogCQlzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGxpdmVfc3RhdHVzW10gPSB7CiAJCQki SURMRSIsCiAJCQkiQ0FQVFVSRSIsCkBAIC0zMDAsNyArMzAwLDcgQEAgcHNyX3NvdXJjZV9zdGF0 dXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0p CiAJCQkiVEdfT04iCiAJCX07CiAJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsCi0JCQkJ ICAgIEVEUF9QU1IyX1NUQVRVUyhkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKTsKKwkJCQkgICAg RURQX1BTUjJfU1RBVFVTKGludGVsX2RwLT5wc3IudHJhbnNjb2RlcikpOwogCQlzdGF0dXNfdmFs ID0gKHZhbCAmIEVEUF9QU1IyX1NUQVRVU19TVEFURV9NQVNLKSA+PgogCQkJICAgICAgRURQX1BT UjJfU1RBVFVTX1NUQVRFX1NISUZUOwogCQlpZiAoc3RhdHVzX3ZhbCA8IEFSUkFZX1NJWkUobGl2 ZV9zdGF0dXMpKQpAQCAtMzE3LDcgKzMxNyw3IEBAIHBzcl9zb3VyY2Vfc3RhdHVzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgc3RydWN0IHNlcV9maWxlICptKQogCQkJIlNSREVO VF9PTiIsCiAJCX07CiAJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsCi0JCQkJICAgIEVE UF9QU1JfU1RBVFVTKGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpOworCQkJCSAgICBFRFBfUFNS X1NUQVRVUyhpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpKTsKIAkJc3RhdHVzX3ZhbCA9ICh2YWwg JiBFRFBfUFNSX1NUQVRVU19TVEFURV9NQVNLKSA+PgogCQkJICAgICAgRURQX1BTUl9TVEFUVVNf U1RBVEVfU0hJRlQ7CiAJCWlmIChzdGF0dXNfdmFsIDwgQVJSQVlfU0laRShsaXZlX3N0YXR1cykp CkBAIC0zMjcsMjEgKzMyNywxOCBAQCBwc3Jfc291cmNlX3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIHN0cnVjdCBzZXFfZmlsZSAqbSkKIAlzZXFfcHJpbnRmKG0sICJT b3VyY2UgUFNSIHN0YXR1czogJXMgWzB4JTA4eF1cbiIsIHN0YXR1cywgdmFsKTsKIH0KIAotc3Rh dGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0 YSkKK3N0YXRpYyBpbnQgaW50ZWxfcHNyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwotCXN0cnVjdCBpOTE1X3BzciAqcHNyID0g JmRldl9wcml2LT5wc3I7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBf dG9faTkxNShpbnRlbF9kcCk7CisJc3RydWN0IGludGVsX3BzciAqcHNyID0gJmludGVsX2RwLT5w c3I7CiAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJY29uc3QgY2hhciAqc3RhdHVzOwogCWJv b2wgZW5hYmxlZDsKIAl1MzIgdmFsOwogCi0JaWYgKCFIQVNfUFNSKGRldl9wcml2KSkKLQkJcmV0 dXJuIC1FTk9ERVY7Ci0KIAlzZXFfcHJpbnRmKG0sICJTaW5rIHN1cHBvcnQ6ICVzIiwgeWVzbm8o cHNyLT5zaW5rX3N1cHBvcnQpKTsKLQlpZiAocHNyLT5kcCkKLQkJc2VxX3ByaW50ZihtLCAiIFsw eCUwMnhdIiwgcHNyLT5kcC0+cHNyX2RwY2RbMF0pOworCWlmIChwc3ItPnNpbmtfc3VwcG9ydCkK KwkJc2VxX3ByaW50ZihtLCAiIFsweCUwMnhdIiwgaW50ZWxfZHAtPnBzcl9kcGNkWzBdKTsKIAlz ZXFfcHV0cyhtLCAiXG4iKTsKIAogCWlmICghcHNyLT5zaW5rX3N1cHBvcnQpCkBAIC0zNjUsMTYg KzM2MiwxNiBAQCBzdGF0aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICpkYXRhKQogCiAJaWYgKHBzci0+cHNyMl9lbmFibGVkKSB7CiAJCXZhbCA9IGlu dGVsX2RlX3JlYWQoZGV2X3ByaXYsCi0JCQkJICAgIEVEUF9QU1IyX0NUTChkZXZfcHJpdi0+cHNy LnRyYW5zY29kZXIpKTsKKwkJCQkgICAgRURQX1BTUjJfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNj b2RlcikpOwogCQllbmFibGVkID0gdmFsICYgRURQX1BTUjJfRU5BQkxFOwogCX0gZWxzZSB7CiAJ CXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsCi0JCQkJICAgIEVEUF9QU1JfQ1RMKGRldl9w cml2LT5wc3IudHJhbnNjb2RlcikpOworCQkJCSAgICBFRFBfUFNSX0NUTChpbnRlbF9kcC0+cHNy LnRyYW5zY29kZXIpKTsKIAkJZW5hYmxlZCA9IHZhbCAmIEVEUF9QU1JfRU5BQkxFOwogCX0KIAlz ZXFfcHJpbnRmKG0sICJTb3VyY2UgUFNSIGN0bDogJXMgWzB4JTA4eF1cbiIsCiAJCSAgIGVuYWJs ZWRkaXNhYmxlZChlbmFibGVkKSwgdmFsKTsKLQlwc3Jfc291cmNlX3N0YXR1cyhkZXZfcHJpdiwg bSk7CisJcHNyX3NvdXJjZV9zdGF0dXMoaW50ZWxfZHAsIG0pOwogCXNlcV9wcmludGYobSwgIkJ1 c3kgZnJvbnRidWZmZXIgYml0czogMHglMDh4XG4iLAogCQkgICBwc3ItPmJ1c3lfZnJvbnRidWZm ZXJfYml0cyk7CiAKQEAgLTM4Myw3ICszODAsNyBAQCBzdGF0aWMgaW50IGk5MTVfZWRwX3Bzcl9z dGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogCSAqLwogCWlmIChJU19IQVNX RUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7CiAJCXZhbCA9IGludGVs X2RlX3JlYWQoZGV2X3ByaXYsCi0JCQkJICAgIEVEUF9QU1JfUEVSRl9DTlQoZGV2X3ByaXYtPnBz ci50cmFuc2NvZGVyKSk7CisJCQkJICAgIEVEUF9QU1JfUEVSRl9DTlQoaW50ZWxfZHAtPnBzci50 cmFuc2NvZGVyKSk7CiAJCXZhbCAmPSBFRFBfUFNSX1BFUkZfQ05UX01BU0s7CiAJCXNlcV9wcmlu dGYobSwgIlBlcmZvcm1hbmNlIGNvdW50ZXI6ICV1XG4iLCB2YWwpOwogCX0KQEAgLTQwNCw3ICs0 MDEsNyBAQCBzdGF0aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICpkYXRhKQogCQkgKi8KIAkJZm9yIChmcmFtZSA9IDA7IGZyYW1lIDwgUFNSMl9TVV9T VEFUVVNfRlJBTUVTOyBmcmFtZSArPSAzKSB7CiAJCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9w cml2LAotCQkJCQkgICAgUFNSMl9TVV9TVEFUVVMoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyLCBm cmFtZSkpOworCQkJCQkgICAgUFNSMl9TVV9TVEFUVVMoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVy LCBmcmFtZSkpOwogCQkJc3VfZnJhbWVzX3ZhbFtmcmFtZSAvIDNdID0gdmFsOwogCQl9CiAKQEAg LTQzMCwyMyArNDI3LDU3IEBAIHN0YXRpYyBpbnQgaTkxNV9lZHBfcHNyX3N0YXR1cyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgaTkx NV9lZHBfcHNyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCit7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUp OworCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOworCXN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAgPSBOVUxMOworCisJaWYgKCFIQVNfUFNSKGRldl9wcml2KSkKKwkJcmV0dXJuIC1FTk9E RVY7CisKKwkvKiBGaW5kIHRoZSBmaXJzdCBFRFAgKi8KKwlmb3JfZWFjaF9pbnRlbF9kcCgmZGV2 X3ByaXYtPmRybSwgZW5jb2RlcikgeworCQlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQ VVRfRURQKSB7CisJCQlpbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcChlbmNvZGVyKTsKKwkJCWJy ZWFrOworCQl9CisJfQorCisJaWYgKCFpbnRlbF9kcCkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwly ZXR1cm4gaW50ZWxfcHNyX3N0YXR1cyhtLCBpbnRlbF9kcCk7Cit9CisKIHN0YXRpYyBpbnQKIGk5 MTVfZWRwX3Bzcl9kZWJ1Z19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKIHsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkYXRhOwogCWludGVsX3dha2VyZWZfdCB3YWtlcmVm OwotCWludCByZXQ7CisJaW50IHJldCA9IC1FTk9ERVY7CisJc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXI7CiAKLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQotCQlyZXR1cm4gLUVOT0RFVjsK KwlpZiAoIUhBU19QU1IoZGV2X3ByaXYpKQorCQlyZXR1cm4gcmV0OwogCi0JZHJtX2RiZ19rbXMo JmRldl9wcml2LT5kcm0sICJTZXR0aW5nIFBTUiBkZWJ1ZyB0byAlbGx4XG4iLCB2YWwpOworCWZv cl9lYWNoX2ludGVsX2RwKCZkZXZfcHJpdi0+ZHJtLCBlbmNvZGVyKSB7CisJCXN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7CiAKLQl3YWtlcmVmID0g aW50ZWxfcnVudGltZV9wbV9nZXQoJmRldl9wcml2LT5ydW50aW1lX3BtKTsKKwkJaWYgKCFDQU5f UFNSKGludGVsX2RwKSkKKwkJCWNvbnRpbnVlOwogCi0JcmV0ID0gaW50ZWxfcHNyX2RlYnVnX3Nl dChkZXZfcHJpdiwgdmFsKTsKKwkJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VE UCkgeworCQkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJTZXR0aW5nIFBTUiBkZWJ1ZyB0 byAlbGx4XG4iLCB2YWwpOwogCi0JaW50ZWxfcnVudGltZV9wbV9wdXQoJmRldl9wcml2LT5ydW50 aW1lX3BtLCB3YWtlcmVmKTsKKwkJCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldCgmZGV2 X3ByaXYtPnJ1bnRpbWVfcG0pOworCisJCQkvLyBUT0RPOiBzcGxpdCB0byBlYWNoIHRyYW5zY29k ZXIncyBQU1IgZGVidWcgc3RhdGUKKwkJCXJldCA9IGludGVsX3Bzcl9kZWJ1Z19zZXQoaW50ZWxf ZHAsIHZhbCk7CisKKwkJCWludGVsX3J1bnRpbWVfcG1fcHV0KCZkZXZfcHJpdi0+cnVudGltZV9w bSwgd2FrZXJlZik7CisJCX0KKwl9CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtNDU1LDEyICs0ODYs MjUgQEAgc3RhdGljIGludAogaTkxNV9lZHBfcHNyX2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQg KnZhbCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkYXRhOworCXN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwogCi0JaWYgKCFDQU5fUFNSKGRldl9wcml2KSkK KwlpZiAoIUhBU19QU1IoZGV2X3ByaXYpKQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCSp2YWwgPSBS RUFEX09OQ0UoZGV2X3ByaXYtPnBzci5kZWJ1Zyk7Ci0JcmV0dXJuIDA7CisJZm9yX2VhY2hfaW50 ZWxfZHAoJmRldl9wcml2LT5kcm0sIGVuY29kZXIpIHsKKwkJc3RydWN0IGludGVsX2RwICppbnRl bF9kcCA9IGVuY190b19pbnRlbF9kcChlbmNvZGVyKTsKKworCQlpZiAoIUNBTl9QU1IoaW50ZWxf ZHApKQorCQkJY29udGludWU7CisKKwkJLy8gVE9ETzogc3BsaXQgdG8gZWFjaCB0cmFuc2NvZGVy J3MgUFNSIGRlYnVnIHN0YXRlCisJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9F RFApIHsKKwkJCSp2YWwgPSBSRUFEX09OQ0UoaW50ZWxfZHAtPnBzci5kZWJ1Zyk7CisJCQlyZXR1 cm4gMDsKKwkJfQorCX0KKworCXJldHVybiAtRU5PREVWOwogfQogCiBERUZJTkVfU0lNUExFX0FU VFJJQlVURShpOTE1X2VkcF9wc3JfZGVidWdfZm9wcywKQEAgLTEyMzMsOSArMTI3Nyw2IEBAIHN0 YXRpYyB2b2lkIGRycnNfc3RhdHVzX3Blcl9jcnRjKHN0cnVjdCBzZXFfZmlsZSAqbSwKIAkJLyog ZGlzYWJsZV9kcnJzKCkgd2lsbCBtYWtlIGRycnMtPmRwIE5VTEwgKi8KIAkJaWYgKCFkcnJzLT5k cCkgewogCQkJc2VxX3B1dHMobSwgIklkbGVuZXNzIERSUlM6IERpc2FibGVkXG4iKTsKLQkJCWlm IChkZXZfcHJpdi0+cHNyLmVuYWJsZWQpCi0JCQkJc2VxX3B1dHMobSwKLQkJCQkiXHRBcyBQU1Ig aXMgZW5hYmxlZCwgRFJSUyBpcyBub3QgZW5hYmxlZFxuIik7CiAJCQltdXRleF91bmxvY2soJmRy cnMtPm11dGV4KTsKIAkJCXJldHVybjsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaAppbmRleCAzOTM5Nzc0OGI0YjAuLjYzZGFm OGI0NTk0MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5X3R5cGVzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5X3R5cGVzLmgKQEAgLTE0MTUsNiArMTQxNSw0MiBAQCBzdHJ1Y3QgaW50ZWxfcHBzIHsK IAlzdHJ1Y3QgZWRwX3Bvd2VyX3NlcSBwcHNfZGVsYXlzOwogfTsKIAorc3RydWN0IGludGVsX3Bz ciB7CisJLyogTXV0ZXggZm9yIFBTUiBzdGF0ZSBvZiB0aGUgdHJhbnNjb2RlciAqLworCXN0cnVj dCBtdXRleCBsb2NrOworCisjZGVmaW5lIEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSwkweDBmCisj ZGVmaW5lIEk5MTVfUFNSX0RFQlVHX0RFRkFVTFQJCTB4MDAKKyNkZWZpbmUgSTkxNV9QU1JfREVC VUdfRElTQUJMRQkJMHgwMQorI2RlZmluZSBJOTE1X1BTUl9ERUJVR19FTkFCTEUJCTB4MDIKKyNk ZWZpbmUgSTkxNV9QU1JfREVCVUdfRk9SQ0VfUFNSMQkweDAzCisjZGVmaW5lIEk5MTVfUFNSX0RF QlVHX0lSUQkJMHgxMAorCisJdTMyIGRlYnVnOworCWJvb2wgc2lua19zdXBwb3J0OworCWJvb2wg ZW5hYmxlZDsKKwllbnVtIHBpcGUgcGlwZTsKKwllbnVtIHRyYW5zY29kZXIgdHJhbnNjb2RlcjsK Kwlib29sIGFjdGl2ZTsKKwlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKKwl1bnNpZ25lZCBpbnQg YnVzeV9mcm9udGJ1ZmZlcl9iaXRzOworCWJvb2wgc2lua19wc3IyX3N1cHBvcnQ7CisJYm9vbCBs aW5rX3N0YW5kYnk7CisJYm9vbCBjb2xvcmltZXRyeV9zdXBwb3J0OworCWJvb2wgcHNyMl9lbmFi bGVkOworCWJvb2wgcHNyMl9zZWxfZmV0Y2hfZW5hYmxlZDsKKwl1OCBzaW5rX3N5bmNfbGF0ZW5j eTsKKwlrdGltZV90IGxhc3RfZW50cnlfYXR0ZW1wdDsKKwlrdGltZV90IGxhc3RfZXhpdDsKKwli b29sIHNpbmtfbm90X3JlbGlhYmxlOworCWJvb2wgaXJxX2F1eF9lcnJvcjsKKwl1MTYgc3VfeF9n cmFudWxhcml0eTsKKwlib29sIGRjM2NvX2VuYWJsZWQ7CisJdTMyIGRjM2NvX2V4aXRfZGVsYXk7 CisJc3RydWN0IGRlbGF5ZWRfd29yayBkYzNjb193b3JrOworCXN0cnVjdCBkcm1fZHBfdnNjX3Nk cCB2c2M7Cit9OworCiBzdHJ1Y3QgaW50ZWxfZHAgewogCWk5MTVfcmVnX3Qgb3V0cHV0X3JlZzsK IAl1MzIgRFA7CkBAIC0xNTE3LDYgKzE1NTMsOCBAQCBzdHJ1Y3QgaW50ZWxfZHAgewogCWJvb2wg aG9ibF9hY3RpdmU7CiAKIAlzdHJ1Y3QgaW50ZWxfZHBfcGNvbl9mcmwgZnJsOworCisJc3RydWN0 IGludGVsX3BzciBwc3I7CiB9OwogCiBlbnVtIGxzcGNvbl92ZW5kb3IgewpAQCAtMTcyOSw2ICsx NzY3LDE0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF9lbmNvZGVyX2lzX2RwKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyKQogCX0KIH0KIAorc3RhdGljIGlubGluZSBib29sIGludGVs X2VuY29kZXJfaXNfcHNyX2VuYWJsZWQoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCit7 CisJaWYgKCFpbnRlbF9lbmNvZGVyX2lzX2RwKGVuY29kZXIpKQorCQlyZXR1cm4gZmFsc2U7CisK KwlyZXR1cm4gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpLT5wc3IuZW5hYmxlZDsKK30KKwogc3Rh dGljIGlubGluZSBzdHJ1Y3QgaW50ZWxfbHNwY29uICoKIGVuY190b19pbnRlbF9sc3Bjb24oc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2RwLmMKaW5kZXggOGMxMmQ1Mzc1NjA3Li5kNTMyYmQ1NjI1MGYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMKQEAgLTE2NjMsMTIgKzE2NjMsMTAgQEAgdm9p ZCBpbnRlbF9kcF9jb21wdXRlX3Bzcl92c2Nfc2RwKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAs CiAJCQkJICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSwKIAkJ CQkgIHN0cnVjdCBkcm1fZHBfdnNjX3NkcCAqdnNjKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwotCiAJdnNjLT5zZHBfdHlwZSA9 IERQX1NEUF9WU0M7CiAKLQlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQpIHsKLQkJaWYg KGRldl9wcml2LT5wc3IuY29sb3JpbWV0cnlfc3VwcG9ydCAmJgorCWlmIChpbnRlbF9kcC0+cHNy LnBzcjJfZW5hYmxlZCkgeworCQlpZiAoaW50ZWxfZHAtPnBzci5jb2xvcmltZXRyeV9zdXBwb3J0 ICYmCiAJCSAgICBpbnRlbF9kcF9uZWVkc192c2Nfc2RwKGNydGNfc3RhdGUsIGNvbm5fc3RhdGUp KSB7CiAJCQkvKiBbUFNSMiwgK0NvbG9yaW1ldHJ5XSAqLwogCQkJaW50ZWxfZHBfY29tcHV0ZV92 c2NfY29sb3JpbWV0cnkoY3J0Y19zdGF0ZSwgY29ubl9zdGF0ZSwKQEAgLTIzNTksNyArMjM1Nyw3 IEBAIGJvb2wgaW50ZWxfZHBfaW5pdGlhbF9mYXN0c2V0X2NoZWNrKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAogCQlyZXR1cm4gZmFsc2U7CiAJfQogCi0JaWYgKENBTl9QU1IoaTkxNSkg JiYgaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkgeworCWlmIChDQU5fUFNSKGludGVsX2RwKSAm JiBpbnRlbF9kcF9pc19lZHAoaW50ZWxfZHApKSB7CiAJCWRybV9kYmdfa21zKCZpOTE1LT5kcm0s ICJGb3JjaW5nIGZ1bGwgbW9kZXNldCB0byBjb21wdXRlIFBTUiBzdGF0ZVxuIik7CiAJCWNydGNf c3RhdGUtPnVhcGkubW9kZV9jaGFuZ2VkID0gdHJ1ZTsKIAkJcmV0dXJuIGZhbHNlOwpAQCAtNjY0 MSw2ICs2NjM5LDggQEAgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqZGlnX3BvcnQsCiAJaW50ZWxfZHAtPmZybC5pc190cmFpbmVkID0gZmFsc2U7CiAJ aW50ZWxfZHAtPmZybC50cmFpbmVkX3JhdGVfZ2JwcyA9IDA7CiAKKwlpbnRlbF9wc3JfaW5pdChp bnRlbF9kcCk7CisKIAlyZXR1cm4gdHJ1ZTsKIAogZmFpbDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX3Bzci5jCmluZGV4IDJjMzY1Yjc3OGY3NC4uOTI1YzBjNmQ5MmNkIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMKQEAgLTgwLDkgKzgwLDExIEBA CiAgKiB1c2UgcGFnZSBmbGlwcy4KICAqLwogCi1zdGF0aWMgYm9vbCBwc3JfZ2xvYmFsX2VuYWJs ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCitzdGF0aWMgYm9vbCBwc3JfZ2xvYmFs X2VuYWJsZWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsKLQlzd2l0Y2ggKGk5MTUtPnBz ci5kZWJ1ZyAmIEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSykgeworCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7CisKKwlzd2l0Y2ggKGludGVsX2Rw LT5wc3IuZGVidWcgJiBJOTE1X1BTUl9ERUJVR19NT0RFX01BU0spIHsKIAljYXNlIEk5MTVfUFNS X0RFQlVHX0RFRkFVTFQ6CiAJCXJldHVybiBpOTE1LT5wYXJhbXMuZW5hYmxlX3BzcjsKIAljYXNl IEk5MTVfUFNSX0RFQlVHX0RJU0FCTEU6CkBAIC05Miw5ICs5NCw5IEBAIHN0YXRpYyBib29sIHBz cl9nbG9iYWxfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAl9CiB9CiAK LXN0YXRpYyBib29sIHBzcjJfZ2xvYmFsX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQorc3RhdGljIGJvb2wgcHNyMl9nbG9iYWxfZW5hYmxlZChzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwKQogewotCXN3aXRjaCAoZGV2X3ByaXYtPnBzci5kZWJ1ZyAmIEk5MTVfUFNS X0RFQlVHX01PREVfTUFTSykgeworCXN3aXRjaCAoaW50ZWxfZHAtPnBzci5kZWJ1ZyAmIEk5MTVf UFNSX0RFQlVHX01PREVfTUFTSykgewogCWNhc2UgSTkxNV9QU1JfREVCVUdfRElTQUJMRToKIAlj YXNlIEk5MTVfUFNSX0RFQlVHX0ZPUkNFX1BTUjE6CiAJCXJldHVybiBmYWxzZTsKQEAgLTEwMywx MSArMTA1LDEyIEBAIHN0YXRpYyBib29sIHBzcjJfZ2xvYmFsX2VuYWJsZWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCX0KIH0KIAotc3RhdGljIHZvaWQgcHNyX2lycV9jb250 cm9sKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyB2b2lkIHBzcl9p cnFfY29udHJvbChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogewogCWVudW0gdHJhbnNjb2Rl ciB0cmFuc19zaGlmdDsKIAl1MzIgbWFzaywgdmFsOwogCWk5MTVfcmVnX3QgaW1yX3JlZzsKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsK IAogCS8qCiAJICogZ2VuMTIrIGhhcyByZWdpc3RlcnMgcmVsYXRpdmUgdG8gdHJhbnNjb2RlciBh bmQgb25lIHBlciB0cmFuc2NvZGVyCkBAIC0xMTYsMTQgKzExOSwxNCBAQCBzdGF0aWMgdm9pZCBw c3JfaXJxX2NvbnRyb2woc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCSAqLwog CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyKSB7CiAJCXRyYW5zX3NoaWZ0ID0gMDsKLQkJ aW1yX3JlZyA9IFRSQU5TX1BTUl9JTVIoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKTsKKwkJaW1y X3JlZyA9IFRSQU5TX1BTUl9JTVIoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKTsKIAl9IGVsc2Ug ewotCQl0cmFuc19zaGlmdCA9IGRldl9wcml2LT5wc3IudHJhbnNjb2RlcjsKKwkJdHJhbnNfc2hp ZnQgPSBpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXI7CiAJCWltcl9yZWcgPSBFRFBfUFNSX0lNUjsK IAl9CiAKIAltYXNrID0gRURQX1BTUl9FUlJPUih0cmFuc19zaGlmdCk7Ci0JaWYgKGRldl9wcml2 LT5wc3IuZGVidWcgJiBJOTE1X1BTUl9ERUJVR19JUlEpCisJaWYgKGludGVsX2RwLT5wc3IuZGVi dWcgJiBJOTE1X1BTUl9ERUJVR19JUlEpCiAJCW1hc2sgfD0gRURQX1BTUl9QT1NUX0VYSVQodHJh bnNfc2hpZnQpIHwKIAkJCUVEUF9QU1JfUFJFX0VOVFJZKHRyYW5zX3NoaWZ0KTsKIApAQCAtMTcy LDMwICsxNzUsMzEgQEAgc3RhdGljIHZvaWQgcHNyX2V2ZW50X3ByaW50KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LAogCQlkcm1fZGJnX2ttcygmaTkxNS0+ZHJtLCAiXHRQU1IgZGlzYWJs ZWRcbiIpOwogfQogCi12b2lkIGludGVsX3Bzcl9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBwc3JfaWlyKQordm9pZCBpbnRlbF9wc3JfaXJxX2hhbmRs ZXIoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdTMyIHBzcl9paXIpCiB7Ci0JZW51bSB0cmFu c2NvZGVyIGNwdV90cmFuc2NvZGVyID0gZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyOworCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOworCWVu dW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGludGVsX2RwLT5wc3IudHJhbnNjb2RlcjsK IAllbnVtIHRyYW5zY29kZXIgdHJhbnNfc2hpZnQ7CiAJaTkxNV9yZWdfdCBpbXJfcmVnOwogCWt0 aW1lX3QgdGltZV9ucyA9ICBrdGltZV9nZXQoKTsKIAogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDEyKSB7CiAJCXRyYW5zX3NoaWZ0ID0gMDsKLQkJaW1yX3JlZyA9IFRSQU5TX1BTUl9JTVIo ZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKTsKKwkJaW1yX3JlZyA9IFRSQU5TX1BTUl9JTVIoaW50 ZWxfZHAtPnBzci50cmFuc2NvZGVyKTsKIAl9IGVsc2UgewotCQl0cmFuc19zaGlmdCA9IGRldl9w cml2LT5wc3IudHJhbnNjb2RlcjsKKwkJdHJhbnNfc2hpZnQgPSBpbnRlbF9kcC0+cHNyLnRyYW5z Y29kZXI7CiAJCWltcl9yZWcgPSBFRFBfUFNSX0lNUjsKIAl9CiAKIAlpZiAocHNyX2lpciAmIEVE UF9QU1JfUFJFX0VOVFJZKHRyYW5zX3NoaWZ0KSkgewotCQlkZXZfcHJpdi0+cHNyLmxhc3RfZW50 cnlfYXR0ZW1wdCA9IHRpbWVfbnM7CisJCWludGVsX2RwLT5wc3IubGFzdF9lbnRyeV9hdHRlbXB0 ID0gdGltZV9uczsKIAkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sCiAJCQkgICAgIlt0cmFu c2NvZGVyICVzXSBQU1IgZW50cnkgYXR0ZW1wdCBpbiAyIHZibGFua3NcbiIsCiAJCQkgICAgdHJh bnNjb2Rlcl9uYW1lKGNwdV90cmFuc2NvZGVyKSk7CiAJfQogCiAJaWYgKHBzcl9paXIgJiBFRFBf UFNSX1BPU1RfRVhJVCh0cmFuc19zaGlmdCkpIHsKLQkJZGV2X3ByaXYtPnBzci5sYXN0X2V4aXQg PSB0aW1lX25zOworCQlpbnRlbF9kcC0+cHNyLmxhc3RfZXhpdCA9IHRpbWVfbnM7CiAJCWRybV9k Ymdfa21zKCZkZXZfcHJpdi0+ZHJtLAogCQkJICAgICJbdHJhbnNjb2RlciAlc10gUFNSIGV4aXQg Y29tcGxldGVkXG4iLAogCQkJICAgIHRyYW5zY29kZXJfbmFtZShjcHVfdHJhbnNjb2RlcikpOwpA QCAtMjAzLDcgKzIwNyw3IEBAIHZvaWQgaW50ZWxfcHNyX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIHBzcl9paXIpCiAJCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDkpIHsKIAkJCXUzMiB2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LAogCQkJ CQkJUFNSX0VWRU5UKGNwdV90cmFuc2NvZGVyKSk7Ci0JCQlib29sIHBzcjJfZW5hYmxlZCA9IGRl dl9wcml2LT5wc3IucHNyMl9lbmFibGVkOworCQkJYm9vbCBwc3IyX2VuYWJsZWQgPSBpbnRlbF9k cC0+cHNyLnBzcjJfZW5hYmxlZDsKIAogCQkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIFBTUl9F VkVOVChjcHVfdHJhbnNjb2RlciksCiAJCQkJICAgICAgIHZhbCk7CkBAIC0yMTcsNyArMjIxLDcg QEAgdm9pZCBpbnRlbF9wc3JfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LCB1MzIgcHNyX2lpcikKIAkJZHJtX3dhcm4oJmRldl9wcml2LT5kcm0sICJbdHJhbnNj b2RlciAlc10gUFNSIGF1eCBlcnJvclxuIiwKIAkJCSB0cmFuc2NvZGVyX25hbWUoY3B1X3RyYW5z Y29kZXIpKTsKIAotCQlkZXZfcHJpdi0+cHNyLmlycV9hdXhfZXJyb3IgPSB0cnVlOworCQlpbnRl bF9kcC0+cHNyLmlycV9hdXhfZXJyb3IgPSB0cnVlOwogCiAJCS8qCiAJCSAqIElmIHRoaXMgaW50 ZXJydXB0aW9uIGlzIG5vdCBtYXNrZWQgaXQgd2lsbCBrZWVwCkBAIC0yMzEsNyArMjM1LDcgQEAg dm9pZCBpbnRlbF9wc3JfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCB1MzIgcHNyX2lpcikKIAkJdmFsIHw9IEVEUF9QU1JfRVJST1IodHJhbnNfc2hpZnQpOwog CQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgaW1yX3JlZywgdmFsKTsKIAotCQlzY2hlZHVsZV93 b3JrKCZkZXZfcHJpdi0+cHNyLndvcmspOworCQlzY2hlZHVsZV93b3JrKCZpbnRlbF9kcC0+cHNy LndvcmspOwogCX0KIH0KIApAQCAtMjkyLDEyICsyOTYsNiBAQCB2b2lkIGludGVsX3Bzcl9pbml0 X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPQogCQl0b19pOTE1KGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+YmFzZS5i YXNlLmRldik7CiAKLQlpZiAoZGV2X3ByaXYtPnBzci5kcCkgewotCQlkcm1fd2FybigmZGV2X3By aXYtPmRybSwKLQkJCSAiTW9yZSB0aGFuIG9uZSBlRFAgcGFuZWwgZm91bmQsIFBTUiBzdXBwb3J0 IHNob3VsZCBiZSBleHRlbmRlZFxuIik7Ci0JCXJldHVybjsKLQl9Ci0KIAlkcm1fZHBfZHBjZF9y ZWFkKCZpbnRlbF9kcC0+YXV4LCBEUF9QU1JfU1VQUE9SVCwgaW50ZWxfZHAtPnBzcl9kcGNkLAog CQkJIHNpemVvZihpbnRlbF9kcC0+cHNyX2RwY2QpKTsKIApAQCAtMzE4LDEyICszMTYsMTAgQEAg dm9pZCBpbnRlbF9wc3JfaW5pdF9kcGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJCXJl dHVybjsKIAl9CiAKLQlkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydCA9IHRydWU7Ci0JZGV2X3By aXYtPnBzci5zaW5rX3N5bmNfbGF0ZW5jeSA9CisJaW50ZWxfZHAtPnBzci5zaW5rX3N1cHBvcnQg PSB0cnVlOworCWludGVsX2RwLT5wc3Iuc2lua19zeW5jX2xhdGVuY3kgPQogCQlpbnRlbF9kcF9n ZXRfc2lua19zeW5jX2xhdGVuY3koaW50ZWxfZHApOwogCi0JZGV2X3ByaXYtPnBzci5kcCA9IGlu dGVsX2RwOwotCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSAmJgogCSAgICAoaW50ZWxf ZHAtPnBzcl9kcGNkWzBdID09IERQX1BTUjJfV0lUSF9ZX0NPT1JEX0lTX1NVUFBPUlRFRCkpIHsK IAkJYm9vbCB5X3JlcSA9IGludGVsX2RwLT5wc3JfZHBjZFsxXSAmCkBAIC0zNDEsMTQgKzMzNywx NCBAQCB2b2lkIGludGVsX3Bzcl9pbml0X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK IAkJICogWS1jb29yZGluYXRlIHJlcXVpcmVtZW50IHBhbmVscyB3ZSB3b3VsZCBuZWVkIHRvIGVu YWJsZQogCQkgKiBHVEMgZmlyc3QuCiAJCSAqLwotCQlkZXZfcHJpdi0+cHNyLnNpbmtfcHNyMl9z dXBwb3J0ID0geV9yZXEgJiYgYWxwbTsKKwkJaW50ZWxfZHAtPnBzci5zaW5rX3BzcjJfc3VwcG9y dCA9IHlfcmVxICYmIGFscG07CiAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiUFNSMiAl c3N1cHBvcnRlZFxuIiwKLQkJCSAgICBkZXZfcHJpdi0+cHNyLnNpbmtfcHNyMl9zdXBwb3J0ID8g IiIgOiAibm90ICIpOworCQkJICAgIGludGVsX2RwLT5wc3Iuc2lua19wc3IyX3N1cHBvcnQgPyAi IiA6ICJub3QgIik7CiAKLQkJaWYgKGRldl9wcml2LT5wc3Iuc2lua19wc3IyX3N1cHBvcnQpIHsK LQkJCWRldl9wcml2LT5wc3IuY29sb3JpbWV0cnlfc3VwcG9ydCA9CisJCWlmIChpbnRlbF9kcC0+ cHNyLnNpbmtfcHNyMl9zdXBwb3J0KSB7CisJCQlpbnRlbF9kcC0+cHNyLmNvbG9yaW1ldHJ5X3N1 cHBvcnQgPQogCQkJCWludGVsX2RwX2dldF9jb2xvcmltZXRyeV9zdGF0dXMoaW50ZWxfZHApOwot CQkJZGV2X3ByaXYtPnBzci5zdV94X2dyYW51bGFyaXR5ID0KKwkJCWludGVsX2RwLT5wc3Iuc3Vf eF9ncmFudWxhcml0eSA9CiAJCQkJaW50ZWxfZHBfZ2V0X3N1X3hfZ3JhbnVsYXJ0aXkoaW50ZWxf ZHApOwogCQl9CiAJfQpAQCAtMzc0LDcgKzM3MCw3IEBAIHN0YXRpYyB2b2lkIGhzd19wc3Jfc2V0 dXBfYXV4KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJQlVJTERfQlVHX09OKHNpemVvZihh dXhfbXNnKSA+IDIwKTsKIAlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGF1eF9tc2cpOyBpICs9IDQp CiAJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LAotCQkJICAgICAgIEVEUF9QU1JfQVVYX0RBVEEo ZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyLCBpID4+IDIpLAorCQkJICAgICAgIEVEUF9QU1JfQVVY X0RBVEEoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyLCBpID4+IDIpLAogCQkJICAgICAgIGludGVs X2RwX3BhY2tfYXV4KCZhdXhfbXNnW2ldLCBzaXplb2YoYXV4X21zZykgLSBpKSk7CiAKIAlhdXhf Y2xvY2tfZGl2aWRlciA9IGludGVsX2RwLT5nZXRfYXV4X2Nsb2NrX2RpdmlkZXIoaW50ZWxfZHAs IDApOwpAQCAtMzg1LDcgKzM4MSw3IEBAIHN0YXRpYyB2b2lkIGhzd19wc3Jfc2V0dXBfYXV4KHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAKIAkvKiBTZWxlY3Qgb25seSB2YWxpZCBiaXRzIGZv ciBTUkRfQVVYX0NUTCAqLwogCWF1eF9jdGwgJj0gcHNyX2F1eF9tYXNrOwotCWludGVsX2RlX3dy aXRlKGRldl9wcml2LCBFRFBfUFNSX0FVWF9DVEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSwK KwlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRURQX1BTUl9BVVhfQ1RMKGludGVsX2RwLT5wc3Iu dHJhbnNjb2RlciksCiAJCSAgICAgICBhdXhfY3RsKTsKIH0KIApAQCAtMzk1LDE0ICszOTEsMTQg QEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9zaW5rKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHApCiAJdTggZHBjZF92YWwgPSBEUF9QU1JfRU5BQkxFOwogCiAJLyogRW5hYmxlIEFMUE0g YXQgc2luayBmb3IgcHNyMiAqLwotCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkgewor CWlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkgewogCQlkcm1fZHBfZHBjZF93cml0ZWIo JmludGVsX2RwLT5hdXgsIERQX1JFQ0VJVkVSX0FMUE1fQ09ORklHLAogCQkJCSAgIERQX0FMUE1f RU5BQkxFIHwKIAkJCQkgICBEUF9BTFBNX0xPQ0tfRVJST1JfSVJRX0hQRF9FTkFCTEUpOwogCiAJ CWRwY2RfdmFsIHw9IERQX1BTUl9FTkFCTEVfUFNSMiB8IERQX1BTUl9JUlFfSFBEX1dJVEhfQ1JD X0VSUk9SUzsKIAl9IGVsc2UgewotCQlpZiAoZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkpCisJ CWlmIChpbnRlbF9kcC0+cHNyLmxpbmtfc3RhbmRieSkKIAkJCWRwY2RfdmFsIHw9IERQX1BTUl9N QUlOX0xJTktfQUNUSVZFOwogCiAJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCkBAIC00 NjUsNyArNDYxLDcgQEAgc3RhdGljIHU4IHBzcl9jb21wdXRlX2lkbGVfZnJhbWVzKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHApCiAJICogb2ZmLWJ5LW9uZSBpc3N1ZSB0aGF0IEhXIGhhcyBpbiBz b21lIGNhc2VzLgogCSAqLwogCWlkbGVfZnJhbWVzID0gbWF4KDYsIGRldl9wcml2LT52YnQucHNy LmlkbGVfZnJhbWVzKTsKLQlpZGxlX2ZyYW1lcyA9IG1heChpZGxlX2ZyYW1lcywgZGV2X3ByaXYt PnBzci5zaW5rX3N5bmNfbGF0ZW5jeSArIDEpOworCWlkbGVfZnJhbWVzID0gbWF4KGlkbGVfZnJh bWVzLCBpbnRlbF9kcC0+cHNyLnNpbmtfc3luY19sYXRlbmN5ICsgMSk7CiAKIAlpZiAoZHJtX1dB Uk5fT04oJmRldl9wcml2LT5kcm0sIGlkbGVfZnJhbWVzID4gMHhmKSkKIAkJaWRsZV9mcmFtZXMg PSAweGY7CkBAIC00ODUsNyArNDgxLDcgQEAgc3RhdGljIHZvaWQgaHN3X2FjdGl2YXRlX3BzcjEo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpCiAJ CXZhbCB8PSBFRFBfUFNSX01JTl9MSU5LX0VOVFJZX1RJTUVfOF9MSU5FUzsKIAotCWlmIChkZXZf cHJpdi0+cHNyLmxpbmtfc3RhbmRieSkKKwlpZiAoaW50ZWxfZHAtPnBzci5saW5rX3N0YW5kYnkp CiAJCXZhbCB8PSBFRFBfUFNSX0xJTktfU1RBTkRCWTsKIAogCXZhbCB8PSBpbnRlbF9wc3IxX2dl dF90cF90aW1lKGludGVsX2RwKTsKQEAgLTQ5Myw5ICs0ODksOSBAQCBzdGF0aWMgdm9pZCBoc3df YWN0aXZhdGVfcHNyMShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDgpCiAJCXZhbCB8PSBFRFBfUFNSX0NSQ19FTkFCTEU7CiAKLQl2YWwgfD0g KGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIEVEUF9QU1JfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNj b2RlcikpICYKKwl2YWwgfD0gKGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIEVEUF9QU1JfQ1RMKGlu dGVsX2RwLT5wc3IudHJhbnNjb2RlcikpICYKIAkJRURQX1BTUl9SRVNUT1JFX1BTUl9BQ1RJVkVf Q1RYX01BU0spOwotCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0NUTChkZXZfcHJp di0+cHNyLnRyYW5zY29kZXIpLCB2YWwpOworCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBf UFNSX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpLCB2YWwpOwogfQogCiBzdGF0aWMgdTMy IGludGVsX3BzcjJfZ2V0X3RwX3RpbWUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKQEAgLTUz MCw3ICs1MjYsNyBAQCBzdGF0aWMgdm9pZCBoc3dfYWN0aXZhdGVfcHNyMihzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwKQogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwIHx8IElTX0dFTUlO SUxBS0UoZGV2X3ByaXYpKQogCQl2YWwgfD0gRURQX1lfQ09PUkRJTkFURV9FTkFCTEU7CiAKLQl2 YWwgfD0gRURQX1BTUjJfRlJBTUVfQkVGT1JFX1NVKGRldl9wcml2LT5wc3Iuc2lua19zeW5jX2xh dGVuY3kgKyAxKTsKKwl2YWwgfD0gRURQX1BTUjJfRlJBTUVfQkVGT1JFX1NVKGludGVsX2RwLT5w c3Iuc2lua19zeW5jX2xhdGVuY3kgKyAxKTsKIAl2YWwgfD0gaW50ZWxfcHNyMl9nZXRfdHBfdGlt ZShpbnRlbF9kcCk7CiAKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikgewpAQCAtNTQ5 LDcgKzU0NSw3IEBAIHN0YXRpYyB2b2lkIGhzd19hY3RpdmF0ZV9wc3IyKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApCiAJCXZhbCB8PSBFRFBfUFNSMl9GQVNUX1dBS0UoNyk7CiAJfQogCi0JaWYg KGRldl9wcml2LT5wc3IucHNyMl9zZWxfZmV0Y2hfZW5hYmxlZCkgeworCWlmIChpbnRlbF9kcC0+ cHNyLnBzcjJfc2VsX2ZldGNoX2VuYWJsZWQpIHsKIAkJLyogV0EgMTQwODMzMDg0NyAqLwogCQlp ZiAoSVNfVEdMX0RJU1BfU1RFUFBJTkcoZGV2X3ByaXYsIFNURVBfQTAsIFNURVBfQTApIHx8CiAJ CSAgICBJU19SS0xfUkVWSUQoZGV2X3ByaXYsIFJLTF9SRVZJRF9BMCwgUktMX1JFVklEX0EwKSkK QEAgLTU1OCwyMCArNTU0LDIwIEBAIHN0YXRpYyB2b2lkIGhzd19hY3RpdmF0ZV9wc3IyKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJCQkJICAgICBESVNfUkFNX0JZUEFTU19QU1IyX01BTl9U UkFDSyk7CiAKIAkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsCi0JCQkgICAgICAgUFNSMl9NQU5f VFJLX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpLAorCQkJICAgICAgIFBTUjJfTUFOX1RS S19DVEwoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSwKIAkJCSAgICAgICBQU1IyX01BTl9UUktf Q1RMX0VOQUJMRSk7CiAJfSBlbHNlIGlmIChIQVNfUFNSMl9TRUxfRkVUQ0goZGV2X3ByaXYpKSB7 CiAJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LAotCQkJICAgICAgIFBTUjJfTUFOX1RSS19DVEwo ZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSwgMCk7CisJCQkgICAgICAgUFNSMl9NQU5fVFJLX0NU TChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpLCAwKTsKIAl9CiAKIAkvKgogCSAqIFBTUjIgSFcg aXMgaW5jb3JyZWN0bHkgdXNpbmcgRURQX1BTUl9UUDFfVFAzX1NFTCBhbmQgQlNwZWMgaXMKIAkg KiByZWNvbW1lbmRpbmcga2VlcCB0aGlzIGJpdCB1bnNldCB3aGlsZSBQU1IyIGlzIGVuYWJsZWQu CiAJICovCi0JaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIEVEUF9QU1JfQ1RMKGRldl9wcml2LT5w c3IudHJhbnNjb2RlciksIDApOworCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0NU TChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpLCAwKTsKIAotCWludGVsX2RlX3dyaXRlKGRldl9w cml2LCBFRFBfUFNSMl9DVEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSwgdmFsKTsKKwlpbnRl bF9kZV93cml0ZShkZXZfcHJpdiwgRURQX1BTUjJfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2Rl ciksIHZhbCk7CiB9CiAKIHN0YXRpYyBib29sCkBAIC01OTQsNTUgKzU5MCw1OCBAQCBzdGF0aWMg dTMyIGludGVsX2dldF9mcmFtZV90aW1lX3VzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjc3RhdGUpCiAJCQkgICAgZHJtX21vZGVfdnJlZnJlc2goJmNzdGF0ZS0+aHcuYWRqdXN0ZWRf bW9kZSkpOwogfQogCi1zdGF0aWMgdm9pZCBwc3IyX3Byb2dyYW1faWRsZV9mcmFtZXMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorc3RhdGljIHZvaWQgcHNyMl9wcm9ncmFtX2lk bGVfZnJhbWVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJCQkJICAgICB1MzIgaWRsZV9m cmFtZXMpCiB7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkx NShpbnRlbF9kcCk7CiAJdTMyIHZhbDsKIAogCWlkbGVfZnJhbWVzIDw8PSAgRURQX1BTUjJfSURM RV9GUkFNRV9TSElGVDsKLQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBFRFBfUFNSMl9D VEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSk7CisJdmFsID0gaW50ZWxfZGVfcmVhZChkZXZf cHJpdiwgRURQX1BTUjJfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlcikpOwogCXZhbCAmPSB+ RURQX1BTUjJfSURMRV9GUkFNRV9NQVNLOwogCXZhbCB8PSBpZGxlX2ZyYW1lczsKLQlpbnRlbF9k ZV93cml0ZShkZXZfcHJpdiwgRURQX1BTUjJfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2Rlciks IHZhbCk7CisJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIEVEUF9QU1IyX0NUTChpbnRlbF9kcC0+ cHNyLnRyYW5zY29kZXIpLCB2YWwpOwogfQogCi1zdGF0aWMgdm9pZCB0Z2xfcHNyMl9lbmFibGVf ZGMzY28oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3RhdGljIHZvaWQgdGds X3BzcjJfZW5hYmxlX2RjM2NvKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiB7Ci0JcHNyMl9w cm9ncmFtX2lkbGVfZnJhbWVzKGRldl9wcml2LCAwKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKKworCXBzcjJfcHJvZ3JhbV9pZGxl X2ZyYW1lcyhpbnRlbF9kcCwgMCk7CiAJaW50ZWxfZGlzcGxheV9wb3dlcl9zZXRfdGFyZ2V0X2Rj X3N0YXRlKGRldl9wcml2LCBEQ19TVEFURV9FTl9EQzNDTyk7CiB9CiAKLXN0YXRpYyB2b2lkIHRn bF9wc3IyX2Rpc2FibGVfZGMzY28oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQor c3RhdGljIHZvaWQgdGdsX3BzcjJfZGlzYWJsZV9kYzNjbyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKQogewotCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBkZXZfcHJpdi0+cHNyLmRwOwor CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHAp OwogCiAJaW50ZWxfZGlzcGxheV9wb3dlcl9zZXRfdGFyZ2V0X2RjX3N0YXRlKGRldl9wcml2LCBE Q19TVEFURV9FTl9VUFRPX0RDNik7Ci0JcHNyMl9wcm9ncmFtX2lkbGVfZnJhbWVzKGRldl9wcml2 LCBwc3JfY29tcHV0ZV9pZGxlX2ZyYW1lcyhpbnRlbF9kcCkpOworCXBzcjJfcHJvZ3JhbV9pZGxl X2ZyYW1lcyhpbnRlbF9kcCwgcHNyX2NvbXB1dGVfaWRsZV9mcmFtZXMoaW50ZWxfZHApKTsKIH0K IAogc3RhdGljIHZvaWQgdGdsX2RjM2NvX2Rpc2FibGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3Qg KndvcmspCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KLQkJY29udGFp bmVyX29mKHdvcmssIHR5cGVvZigqZGV2X3ByaXYpLCBwc3IuZGMzY29fd29yay53b3JrKTsKKwlz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0KKwkJY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigq aW50ZWxfZHApLCBwc3IuZGMzY29fd29yay53b3JrKTsKIAotCW11dGV4X2xvY2soJmRldl9wcml2 LT5wc3IubG9jayk7CisJbXV0ZXhfbG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsKIAkvKiBJZiBk ZWxheWVkIHdvcmsgaXMgcGVuZGluZywgaXQgaXMgbm90IGlkbGUgKi8KLQlpZiAoZGVsYXllZF93 b3JrX3BlbmRpbmcoJmRldl9wcml2LT5wc3IuZGMzY29fd29yaykpCisJaWYgKGRlbGF5ZWRfd29y a19wZW5kaW5nKCZpbnRlbF9kcC0+cHNyLmRjM2NvX3dvcmspKQogCQlnb3RvIHVubG9jazsKIAot CXRnbF9wc3IyX2Rpc2FibGVfZGMzY28oZGV2X3ByaXYpOworCXRnbF9wc3IyX2Rpc2FibGVfZGMz Y28oaW50ZWxfZHApOwogdW5sb2NrOgotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2Nr KTsKKwltdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7CiB9CiAKLXN0YXRpYyB2b2lk IHRnbF9kaXNhbGxvd19kYzNjb19vbl9wc3IyX2V4aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQorc3RhdGljIHZvaWQgdGdsX2Rpc2FsbG93X2RjM2NvX29uX3BzcjJfZXhpdChz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogewotCWlmICghZGV2X3ByaXYtPnBzci5kYzNjb19l bmFibGVkKQorCWlmICghaW50ZWxfZHAtPnBzci5kYzNjb19lbmFibGVkKQogCQlyZXR1cm47CiAK LQljYW5jZWxfZGVsYXllZF93b3JrKCZkZXZfcHJpdi0+cHNyLmRjM2NvX3dvcmspOworCWNhbmNl bF9kZWxheWVkX3dvcmsoJmludGVsX2RwLT5wc3IuZGMzY29fd29yayk7CiAJLyogQmVmb3JlIFBT UjIgZXhpdCBkaXNhbGxvdyBkYzNjbyovCi0JdGdsX3BzcjJfZGlzYWJsZV9kYzNjbyhkZXZfcHJp dik7CisJdGdsX3BzcjJfZGlzYWJsZV9kYzNjbyhpbnRlbF9kcCk7CiB9CiAKIHN0YXRpYyB2b2lk CkBAIC03MTUsNyArNzE0LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfcHNyMl9jb25maWdfdmFsaWQo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAlpbnQgY3J0Y192ZGlzcGxheSA9IGNydGNfc3Rh dGUtPmh3LmFkanVzdGVkX21vZGUuY3J0Y192ZGlzcGxheTsKIAlpbnQgcHNyX21heF9oID0gMCwg cHNyX21heF92ID0gMCwgbWF4X2JwcCA9IDA7CiAKLQlpZiAoIWRldl9wcml2LT5wc3Iuc2lua19w c3IyX3N1cHBvcnQpCisJaWYgKCFpbnRlbF9kcC0+cHNyLnNpbmtfcHNyMl9zdXBwb3J0KQogCQly ZXR1cm4gZmFsc2U7CiAKIAlpZiAoIXRyYW5zY29kZXJfaGFzX3BzcjIoZGV2X3ByaXYsIGNydGNf c3RhdGUtPmNwdV90cmFuc2NvZGVyKSkgewpAQCAtNzI1LDcgKzcyNCw3IEBAIHN0YXRpYyBib29s IGludGVsX3BzcjJfY29uZmlnX3ZhbGlkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJCXJl dHVybiBmYWxzZTsKIAl9CiAKLQlpZiAoIXBzcjJfZ2xvYmFsX2VuYWJsZWQoZGV2X3ByaXYpKSB7 CisJaWYgKCFwc3IyX2dsb2JhbF9lbmFibGVkKGludGVsX2RwKSkgewogCQlkcm1fZGJnX2ttcygm ZGV2X3ByaXYtPmRybSwgIlBTUjIgZGlzYWJsZWQgYnkgZmxhZ1xuIik7CiAJCXJldHVybiBmYWxz ZTsKIAl9CkBAIC03NzQsMTAgKzc3MywxMCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9wc3IyX2NvbmZp Z192YWxpZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCSAqIG9ubHkgbmVlZCB0byB2YWxp ZGF0ZSB0aGUgU1UgYmxvY2sgd2lkdGggaXMgYSBtdWx0aXBsZSBvZgogCSAqIHggZ3JhbnVsYXJp dHkuCiAJICovCi0JaWYgKGNydGNfaGRpc3BsYXkgJSBkZXZfcHJpdi0+cHNyLnN1X3hfZ3JhbnVs YXJpdHkpIHsKKwlpZiAoY3J0Y19oZGlzcGxheSAlIGludGVsX2RwLT5wc3Iuc3VfeF9ncmFudWxh cml0eSkgewogCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwKIAkJCSAgICAiUFNSMiBub3Qg ZW5hYmxlZCwgaGRpc3BsYXkoJWQpIG5vdCBtdWx0aXBsZSBvZiAlZFxuIiwKLQkJCSAgICBjcnRj X2hkaXNwbGF5LCBkZXZfcHJpdi0+cHNyLnN1X3hfZ3JhbnVsYXJpdHkpOworCQkJICAgIGNydGNf aGRpc3BsYXksIGludGVsX2RwLT5wc3Iuc3VfeF9ncmFudWxhcml0eSk7CiAJCXJldHVybiBmYWxz ZTsKIAl9CiAKQEAgLTgxOSwxMyArODE4LDEwIEBAIHZvaWQgaW50ZWxfcHNyX2NvbXB1dGVfY29u ZmlnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJaWYgKGNydGNfc3RhdGUtPnZyci5lbmFi bGUpCiAJCXJldHVybjsKIAotCWlmICghQ0FOX1BTUihkZXZfcHJpdikpCisJaWYgKCFDQU5fUFNS KGludGVsX2RwKSkKIAkJcmV0dXJuOwogCi0JaWYgKGludGVsX2RwICE9IGRldl9wcml2LT5wc3Iu ZHApCi0JCXJldHVybjsKLQotCWlmICghcHNyX2dsb2JhbF9lbmFibGVkKGRldl9wcml2KSkgewor CWlmICghcHNyX2dsb2JhbF9lbmFibGVkKGludGVsX2RwKSkgewogCQlkcm1fZGJnX2ttcygmZGV2 X3ByaXYtPmRybSwgIlBTUiBkaXNhYmxlZCBieSBmbGFnXG4iKTsKIAkJcmV0dXJuOwogCX0KQEAg LTgzMywxNiArODI5LDE5IEBAIHZvaWQgaW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsCiAJLyoKIAkgKiBIU1cgc3BlYyBleHBsaWNpdGx5IHNheXMgUFNS IGlzIHRpZWQgdG8gcG9ydCBBLgogCSAqIEJEVysgcGxhdGZvcm1zIGhhdmUgYSBpbnN0YW5jZSBv ZiBQU1IgcmVnaXN0ZXJzIHBlciB0cmFuc2NvZGVyIGJ1dAotCSAqIGZvciBub3cgaXQgb25seSBz dXBwb3J0cyBvbmUgaW5zdGFuY2Ugb2YgUFNSLCBzbyBsZXRzIGtlZXAgaXQKLQkgKiBoYXJkY29k ZWQgdG8gUE9SVF9BCisJICogQkRXLCBHRU45IGFuZCBHRU4xMSBhcmUgbm90IHZhbGlkYXRlZCBi eSBIVyB0ZWFtIGluIG90aGVyIHRyYW5zY29kZXIKKwkgKiB0aGFuIGVEUCBvbmUuCisJICogRm9y IG5vdyBpdCBvbmx5IHN1cHBvcnRzIG9uZSBpbnN0YW5jZSBvZiBQU1IgZm9yIEJEVywgR0VOOSBh bmQgR0VOMTEuCisJICogU28gbGV0cyBrZWVwIGl0IGhhcmRjb2RlZCB0byBQT1JUX0EgZm9yIEJE VywgR0VOOSBhbmQgR0VOMTEuCisJICogQnV0IEdFTjEyIHN1cHBvcnRzIGEgaW5zdGFuY2Ugb2Yg UFNSIHJlZ2lzdGVycyBwZXIgdHJhbnNjb2Rlci4KIAkgKi8KLQlpZiAoZGlnX3BvcnQtPmJhc2Uu cG9ydCAhPSBQT1JUX0EpIHsKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDEyICYmIGRpZ19w b3J0LT5iYXNlLnBvcnQgIT0gUE9SVF9BKSB7CiAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJt LAogCQkJICAgICJQU1IgY29uZGl0aW9uIGZhaWxlZDogUG9ydCBub3Qgc3VwcG9ydGVkXG4iKTsK IAkJcmV0dXJuOwogCX0KIAotCWlmIChkZXZfcHJpdi0+cHNyLnNpbmtfbm90X3JlbGlhYmxlKSB7 CisJaWYgKGludGVsX2RwLT5wc3Iuc2lua19ub3RfcmVsaWFibGUpIHsKIAkJZHJtX2RiZ19rbXMo JmRldl9wcml2LT5kcm0sCiAJCQkgICAgIlBTUiBzaW5rIGltcGxlbWVudGF0aW9uIGlzIG5vdCBy ZWxpYWJsZVxuIik7CiAJCXJldHVybjsKQEAgLTg3OCwyMyArODc3LDI0IEBAIHZvaWQgaW50ZWxf cHNyX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiBzdGF0aWMgdm9p ZCBpbnRlbF9wc3JfYWN0aXZhdGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsKIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKKwll bnVtIHRyYW5zY29kZXIgdHJhbnNjb2RlciA9IGludGVsX2RwLT5wc3IudHJhbnNjb2RlcjsKIAot CWlmICh0cmFuc2NvZGVyX2hhc19wc3IyKGRldl9wcml2LCBkZXZfcHJpdi0+cHNyLnRyYW5zY29k ZXIpKQorCWlmICh0cmFuc2NvZGVyX2hhc19wc3IyKGRldl9wcml2LCB0cmFuc2NvZGVyKSkKIAkJ ZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sCi0JCQkgICAgaW50ZWxfZGVfcmVhZChkZXZfcHJp diwgRURQX1BTUjJfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpICYgRURQX1BTUjJfRU5B QkxFKTsKKwkJCSAgICBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBFRFBfUFNSMl9DVEwodHJhbnNj b2RlcikpICYgRURQX1BTUjJfRU5BQkxFKTsKIAogCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJt LAotCQkgICAgaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgRURQX1BTUl9DVEwoZGV2X3ByaXYtPnBz ci50cmFuc2NvZGVyKSkgJiBFRFBfUFNSX0VOQUJMRSk7Ci0JZHJtX1dBUk5fT04oJmRldl9wcml2 LT5kcm0sIGRldl9wcml2LT5wc3IuYWN0aXZlKTsKLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZf cHJpdi0+cHNyLmxvY2spOworCQkgICAgaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgRURQX1BTUl9D VEwodHJhbnNjb2RlcikpICYgRURQX1BTUl9FTkFCTEUpOworCWRybV9XQVJOX09OKCZkZXZfcHJp di0+ZHJtLCBpbnRlbF9kcC0+cHNyLmFjdGl2ZSk7CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaW50 ZWxfZHAtPnBzci5sb2NrKTsKIAogCS8qIHBzcjEgYW5kIHBzcjIgYXJlIG11dHVhbGx5IGV4Y2x1 c2l2ZS4qLwotCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkKKwlpZiAoaW50ZWxfZHAt PnBzci5wc3IyX2VuYWJsZWQpCiAJCWhzd19hY3RpdmF0ZV9wc3IyKGludGVsX2RwKTsKIAllbHNl CiAJCWhzd19hY3RpdmF0ZV9wc3IxKGludGVsX2RwKTsKIAotCWRldl9wcml2LT5wc3IuYWN0aXZl ID0gdHJ1ZTsKKwlpbnRlbF9kcC0+cHNyLmFjdGl2ZSA9IHRydWU7CiB9CiAKIHN0YXRpYyB2b2lk IGludGVsX3Bzcl9lbmFibGVfc291cmNlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCkBAIC05 MTAsNyArOTEwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9zb3VyY2Uoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCwKIAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJP QURXRUxMKGRldl9wcml2KSkKIAkJaHN3X3Bzcl9zZXR1cF9hdXgoaW50ZWxfZHApOwogCi0JaWYg KGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkICYmIChJU19HRU4oZGV2X3ByaXYsIDkpICYmCisJ aWYgKGludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkICYmIChJU19HRU4oZGV2X3ByaXYsIDkpICYm CiAJCQkJCSAgICFJU19HRU1JTklMQUtFKGRldl9wcml2KSkpIHsKIAkJaTkxNV9yZWdfdCByZWcg PSBDSElDS0VOX1RSQU5TKGNwdV90cmFuc2NvZGVyKTsKIAkJdTMyIGNoaWNrZW4gPSBpbnRlbF9k ZV9yZWFkKGRldl9wcml2LCByZWcpOwpAQCAtOTM0LDEwICs5MzQsMTAgQEAgc3RhdGljIHZvaWQg aW50ZWxfcHNyX2VuYWJsZV9zb3VyY2Uoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA8IDExKQogCQltYXNrIHw9IEVEUF9QU1JfREVCVUdfTUFTS19E SVNQX1JFR19XUklURTsKIAotCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0RFQlVH KGRldl9wcml2LT5wc3IudHJhbnNjb2RlciksCisJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIEVE UF9QU1JfREVCVUcoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSwKIAkJICAgICAgIG1hc2spOwog Ci0JcHNyX2lycV9jb250cm9sKGRldl9wcml2KTsKKwlwc3JfaXJxX2NvbnRyb2woaW50ZWxfZHAp OwogCiAJaWYgKGNydGNfc3RhdGUtPmRjM2NvX2V4aXRsaW5lKSB7CiAJCXUzMiB2YWw7CkBAIC05 NTUsMzAgKzk1NSwzMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxlX3NvdXJjZShzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCiAJaWYgKEhBU19QU1JfSFdfVFJBQ0tJTkcoZGV2X3By aXYpICYmIEhBU19QU1IyX1NFTF9GRVRDSChkZXZfcHJpdikpCiAJCWludGVsX2RlX3JtdyhkZXZf cHJpdiwgQ0hJQ0tFTl9QQVIxXzEsIElHTk9SRV9QU1IyX0hXX1RSQUNLSU5HLAotCQkJICAgICBk ZXZfcHJpdi0+cHNyLnBzcjJfc2VsX2ZldGNoX2VuYWJsZWQgPworCQkJICAgICBpbnRlbF9kcC0+ cHNyLnBzcjJfc2VsX2ZldGNoX2VuYWJsZWQgPwogCQkJICAgICBJR05PUkVfUFNSMl9IV19UUkFD S0lORyA6IDApOwogfQogCi1zdGF0aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxlX2xvY2tlZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCitzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZW5h YmxlX2xvY2tlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCQkJCSAgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCQkgICAgY29uc3Qgc3RydWN0IGRy bV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX2RwICppbnRl bF9kcCA9IGRldl9wcml2LT5wc3IuZHA7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7CiAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq ZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7CiAJc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIgPSAmZGlnX3BvcnQtPmJhc2U7CiAJdTMyIHZhbDsKIAotCWRybV9XQVJOX09O KCZkZXZfcHJpdi0+ZHJtLCBkZXZfcHJpdi0+cHNyLmVuYWJsZWQpOworCWRybV9XQVJOX09OKCZk ZXZfcHJpdi0+ZHJtLCBpbnRlbF9kcC0+cHNyLmVuYWJsZWQpOwogCi0JZGV2X3ByaXYtPnBzci5w c3IyX2VuYWJsZWQgPSBjcnRjX3N0YXRlLT5oYXNfcHNyMjsKLQlkZXZfcHJpdi0+cHNyLmJ1c3lf ZnJvbnRidWZmZXJfYml0cyA9IDA7Ci0JZGV2X3ByaXYtPnBzci5waXBlID0gdG9faW50ZWxfY3J0 YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpLT5waXBlOwotCWRldl9wcml2LT5wc3IuZGMzY29fZW5h YmxlZCA9ICEhY3J0Y19zdGF0ZS0+ZGMzY29fZXhpdGxpbmU7Ci0JZGV2X3ByaXYtPnBzci50cmFu c2NvZGVyID0gY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXI7CisJaW50ZWxfZHAtPnBzci5wc3Iy X2VuYWJsZWQgPSBjcnRjX3N0YXRlLT5oYXNfcHNyMjsKKwlpbnRlbF9kcC0+cHNyLmJ1c3lfZnJv bnRidWZmZXJfYml0cyA9IDA7CisJaW50ZWxfZHAtPnBzci5waXBlID0gdG9faW50ZWxfY3J0Yyhj cnRjX3N0YXRlLT51YXBpLmNydGMpLT5waXBlOworCWludGVsX2RwLT5wc3IuZGMzY29fZW5hYmxl ZCA9ICEhY3J0Y19zdGF0ZS0+ZGMzY29fZXhpdGxpbmU7CisJaW50ZWxfZHAtPnBzci50cmFuc2Nv ZGVyID0gY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXI7CiAJLyogREM1L0RDNiByZXF1aXJlcyBh dCBsZWFzdCA2IGlkbGUgZnJhbWVzICovCiAJdmFsID0gdXNlY3NfdG9famlmZmllcyhpbnRlbF9n ZXRfZnJhbWVfdGltZV91cyhjcnRjX3N0YXRlKSAqIDYpOwotCWRldl9wcml2LT5wc3IuZGMzY29f ZXhpdF9kZWxheSA9IHZhbDsKLQlkZXZfcHJpdi0+cHNyLnBzcjJfc2VsX2ZldGNoX2VuYWJsZWQg PSBjcnRjX3N0YXRlLT5lbmFibGVfcHNyMl9zZWxfZmV0Y2g7CisJaW50ZWxfZHAtPnBzci5kYzNj b19leGl0X2RlbGF5ID0gdmFsOworCWludGVsX2RwLT5wc3IucHNyMl9zZWxfZmV0Y2hfZW5hYmxl ZCA9IGNydGNfc3RhdGUtPmVuYWJsZV9wc3IyX3NlbF9mZXRjaDsKIAogCS8qCiAJICogSWYgYSBQ U1IgZXJyb3IgaGFwcGVuZWQgYW5kIHRoZSBkcml2ZXIgaXMgcmVsb2FkZWQsIHRoZSBFRFBfUFNS X0lJUgpAQCAtOTkwLDI3ICs5OTAsMjcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9s b2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCSAqLwogCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDEyKSB7CiAJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYs Ci0JCQkJICAgIFRSQU5TX1BTUl9JSVIoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSk7CisJCQkJ ICAgIFRSQU5TX1BTUl9JSVIoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSk7CiAJCXZhbCAmPSBF RFBfUFNSX0VSUk9SKDApOwogCX0gZWxzZSB7CiAJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3By aXYsIEVEUF9QU1JfSUlSKTsKLQkJdmFsICY9IEVEUF9QU1JfRVJST1IoZGV2X3ByaXYtPnBzci50 cmFuc2NvZGVyKTsKKwkJdmFsICY9IEVEUF9QU1JfRVJST1IoaW50ZWxfZHAtPnBzci50cmFuc2Nv ZGVyKTsKIAl9CiAJaWYgKHZhbCkgewotCQlkZXZfcHJpdi0+cHNyLnNpbmtfbm90X3JlbGlhYmxl ID0gdHJ1ZTsKKwkJaW50ZWxfZHAtPnBzci5zaW5rX25vdF9yZWxpYWJsZSA9IHRydWU7CiAJCWRy bV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLAogCQkJICAgICJQU1IgaW50ZXJydXB0aW9uIGVycm9y IHNldCwgbm90IGVuYWJsaW5nIFBTUlxuIik7CiAJCXJldHVybjsKIAl9CiAKIAlkcm1fZGJnX2tt cygmZGV2X3ByaXYtPmRybSwgIkVuYWJsaW5nIFBTUiVzXG4iLAotCQkgICAgZGV2X3ByaXYtPnBz ci5wc3IyX2VuYWJsZWQgPyAiMiIgOiAiMSIpOworCQkgICAgaW50ZWxfZHAtPnBzci5wc3IyX2Vu YWJsZWQgPyAiMiIgOiAiMSIpOwogCWludGVsX2RwX2NvbXB1dGVfcHNyX3ZzY19zZHAoaW50ZWxf ZHAsIGNydGNfc3RhdGUsIGNvbm5fc3RhdGUsCi0JCQkJICAgICAmZGV2X3ByaXYtPnBzci52c2Mp OwotCWludGVsX3dyaXRlX2RwX3ZzY19zZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJmRldl9wcml2 LT5wc3IudnNjKTsKKwkJCQkgICAgICZpbnRlbF9kcC0+cHNyLnZzYyk7CisJaW50ZWxfd3JpdGVf ZHBfdnNjX3NkcChlbmNvZGVyLCBjcnRjX3N0YXRlLCAmaW50ZWxfZHAtPnBzci52c2MpOwogCWlu dGVsX3Bzcl9lbmFibGVfc2luayhpbnRlbF9kcCk7CiAJaW50ZWxfcHNyX2VuYWJsZV9zb3VyY2Uo aW50ZWxfZHAsIGNydGNfc3RhdGUpOwotCWRldl9wcml2LT5wc3IuZW5hYmxlZCA9IHRydWU7CisJ aW50ZWxfZHAtPnBzci5lbmFibGVkID0gdHJ1ZTsKIAogCWludGVsX3Bzcl9hY3RpdmF0ZShpbnRl bF9kcCk7CiB9CkBAIC0xMDI5LDcgKzEwMjksNyBAQCB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKIAotCWlmICghQ0FOX1BTUihkZXZfcHJpdikg fHwgZGV2X3ByaXYtPnBzci5kcCAhPSBpbnRlbF9kcCkKKwlpZiAoIUNBTl9QU1IoaW50ZWxfZHAp KQogCQlyZXR1cm47CiAKIAlpZiAoIWNydGNfc3RhdGUtPmhhc19wc3IpCkBAIC0xMDM3LDQ2ICsx MDM3LDQ3IEBAIHZvaWQgaW50ZWxfcHNyX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw LAogCiAJZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sIGRldl9wcml2LT5kcnJzLmRwKTsKIAot CW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7Ci0JaW50ZWxfcHNyX2VuYWJsZV9sb2Nr ZWQoZGV2X3ByaXYsIGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpOwotCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPnBzci5sb2NrKTsKKwltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOworCWlu dGVsX3Bzcl9lbmFibGVfbG9ja2VkKGludGVsX2RwLCBjcnRjX3N0YXRlLCBjb25uX3N0YXRlKTsK KwltdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7CiB9CiAKLXN0YXRpYyB2b2lkIGlu dGVsX3Bzcl9leGl0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyB2 b2lkIGludGVsX3Bzcl9leGl0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiB7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7CiAJdTMy IHZhbDsKIAotCWlmICghZGV2X3ByaXYtPnBzci5hY3RpdmUpIHsKLQkJaWYgKHRyYW5zY29kZXJf aGFzX3BzcjIoZGV2X3ByaXYsIGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpIHsKKwlpZiAoIWlu dGVsX2RwLT5wc3IuYWN0aXZlKSB7CisJCWlmICh0cmFuc2NvZGVyX2hhc19wc3IyKGRldl9wcml2 LCBpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpKSB7CiAJCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRl dl9wcml2LAotCQkJCQkgICAgRURQX1BTUjJfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2Rlcikp OworCQkJCQkgICAgRURQX1BTUjJfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlcikpOwogCQkJ ZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sIHZhbCAmIEVEUF9QU1IyX0VOQUJMRSk7CiAJCX0K IAogCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LAotCQkJCSAgICBFRFBfUFNSX0NUTChk ZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKTsKKwkJCQkgICAgRURQX1BTUl9DVEwoaW50ZWxfZHAt PnBzci50cmFuc2NvZGVyKSk7CiAJCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCB2YWwgJiBF RFBfUFNSX0VOQUJMRSk7CiAKIAkJcmV0dXJuOwogCX0KIAotCWlmIChkZXZfcHJpdi0+cHNyLnBz cjJfZW5hYmxlZCkgewotCQl0Z2xfZGlzYWxsb3dfZGMzY29fb25fcHNyMl9leGl0KGRldl9wcml2 KTsKKwlpZiAoaW50ZWxfZHAtPnBzci5wc3IyX2VuYWJsZWQpIHsKKwkJdGdsX2Rpc2FsbG93X2Rj M2NvX29uX3BzcjJfZXhpdChpbnRlbF9kcCk7CiAJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3By aXYsCi0JCQkJICAgIEVEUF9QU1IyX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKTsKKwkJ CQkgICAgRURQX1BTUjJfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlcikpOwogCQlkcm1fV0FS Tl9PTigmZGV2X3ByaXYtPmRybSwgISh2YWwgJiBFRFBfUFNSMl9FTkFCTEUpKTsKIAkJdmFsICY9 IH5FRFBfUFNSMl9FTkFCTEU7CiAJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LAotCQkJICAgICAg IEVEUF9QU1IyX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpLCB2YWwpOworCQkJICAgICAg IEVEUF9QU1IyX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpLCB2YWwpOwogCX0gZWxzZSB7 CiAJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsCi0JCQkJICAgIEVEUF9QU1JfQ1RMKGRl dl9wcml2LT5wc3IudHJhbnNjb2RlcikpOworCQkJCSAgICBFRFBfUFNSX0NUTChpbnRlbF9kcC0+ cHNyLnRyYW5zY29kZXIpKTsKIAkJZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sICEodmFsICYg RURQX1BTUl9FTkFCTEUpKTsKIAkJdmFsICY9IH5FRFBfUFNSX0VOQUJMRTsKIAkJaW50ZWxfZGVf d3JpdGUoZGV2X3ByaXYsCi0JCQkgICAgICAgRURQX1BTUl9DVEwoZGV2X3ByaXYtPnBzci50cmFu c2NvZGVyKSwgdmFsKTsKKwkJCSAgICAgICBFRFBfUFNSX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5z Y29kZXIpLCB2YWwpOwogCX0KLQlkZXZfcHJpdi0+cHNyLmFjdGl2ZSA9IGZhbHNlOworCWludGVs X2RwLT5wc3IuYWN0aXZlID0gZmFsc2U7CiB9CiAKIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9kaXNh YmxlX2xvY2tlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQpAQCAtMTA4NSwyMSArMTA4Niwy MSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZGlzYWJsZV9sb2NrZWQoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkKIAlpOTE1X3JlZ190IHBzcl9zdGF0dXM7CiAJdTMyIHBzcl9zdGF0dXNfbWFz azsKIAotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5wc3IubG9jayk7CisJbG9ja2Rl cF9hc3NlcnRfaGVsZCgmaW50ZWxfZHAtPnBzci5sb2NrKTsKIAotCWlmICghZGV2X3ByaXYtPnBz ci5lbmFibGVkKQorCWlmICghaW50ZWxfZHAtPnBzci5lbmFibGVkKQogCQlyZXR1cm47CiAKIAlk cm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgIkRpc2FibGluZyBQU1Ilc1xuIiwKLQkJICAgIGRl dl9wcml2LT5wc3IucHNyMl9lbmFibGVkID8gIjIiIDogIjEiKTsKKwkJICAgIGludGVsX2RwLT5w c3IucHNyMl9lbmFibGVkID8gIjIiIDogIjEiKTsKIAotCWludGVsX3Bzcl9leGl0KGRldl9wcml2 KTsKKwlpbnRlbF9wc3JfZXhpdChpbnRlbF9kcCk7CiAKLQlpZiAoZGV2X3ByaXYtPnBzci5wc3Iy X2VuYWJsZWQpIHsKLQkJcHNyX3N0YXR1cyA9IEVEUF9QU1IyX1NUQVRVUyhkZXZfcHJpdi0+cHNy LnRyYW5zY29kZXIpOworCWlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkgeworCQlwc3Jf c3RhdHVzID0gRURQX1BTUjJfU1RBVFVTKGludGVsX2RwLT5wc3IudHJhbnNjb2Rlcik7CiAJCXBz cl9zdGF0dXNfbWFzayA9IEVEUF9QU1IyX1NUQVRVU19TVEFURV9NQVNLOwogCX0gZWxzZSB7Ci0J CXBzcl9zdGF0dXMgPSBFRFBfUFNSX1NUQVRVUyhkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpOwor CQlwc3Jfc3RhdHVzID0gRURQX1BTUl9TVEFUVVMoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKTsK IAkJcHNyX3N0YXR1c19tYXNrID0gRURQX1BTUl9TVEFUVVNfU1RBVEVfTUFTSzsKIAl9CiAKQEAg LTExMDksNyArMTExMCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9kaXNhYmxlX2xvY2tlZChz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJtLCAiVGlt ZWQgb3V0IHdhaXRpbmcgUFNSIGlkbGUgc3RhdGVcbiIpOwogCiAJLyogV0EgMTQwODMzMDg0NyAq LwotCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfc2VsX2ZldGNoX2VuYWJsZWQgJiYKKwlpZiAoaW50 ZWxfZHAtPnBzci5wc3IyX3NlbF9mZXRjaF9lbmFibGVkICYmCiAJICAgIChJU19UR0xfRElTUF9T VEVQUElORyhkZXZfcHJpdiwgU1RFUF9BMCwgU1RFUF9BMCkgfHwKIAkgICAgIElTX1JLTF9SRVZJ RChkZXZfcHJpdiwgUktMX1JFVklEX0EwLCBSS0xfUkVWSURfQTApKSkKIAkJaW50ZWxfZGVfcm13 KGRldl9wcml2LCBDSElDS0VOX1BBUjFfMSwKQEAgLTExMTgsMTAgKzExMTksMTAgQEAgc3RhdGlj IHZvaWQgaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp CiAJLyogRGlzYWJsZSBQU1Igb24gU2luayAqLwogCWRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxf ZHAtPmF1eCwgRFBfUFNSX0VOX0NGRywgMCk7CiAKLQlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2Vu YWJsZWQpCisJaWYgKGludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkKQogCQlkcm1fZHBfZHBjZF93 cml0ZWIoJmludGVsX2RwLT5hdXgsIERQX1JFQ0VJVkVSX0FMUE1fQ09ORklHLCAwKTsKIAotCWRl dl9wcml2LT5wc3IuZW5hYmxlZCA9IGZhbHNlOworCWludGVsX2RwLT5wc3IuZW5hYmxlZCA9IGZh bHNlOwogfQogCiAvKioKQEAgLTExMzksMjAgKzExNDAsMjIgQEAgdm9pZCBpbnRlbF9wc3JfZGlz YWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCWlmICghb2xkX2NydGNfc3RhdGUtPmhh c19wc3IpCiAJCXJldHVybjsKIAotCWlmIChkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgIUNB Tl9QU1IoZGV2X3ByaXYpKSkKKwlpZiAoZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sICFDQU5f UFNSKGludGVsX2RwKSkpCiAJCXJldHVybjsKIAotCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3Iu bG9jayk7CisJbXV0ZXhfbG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsKIAogCWludGVsX3Bzcl9k aXNhYmxlX2xvY2tlZChpbnRlbF9kcCk7CiAKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3Iu bG9jayk7Ci0JY2FuY2VsX3dvcmtfc3luYygmZGV2X3ByaXYtPnBzci53b3JrKTsKLQljYW5jZWxf ZGVsYXllZF93b3JrX3N5bmMoJmRldl9wcml2LT5wc3IuZGMzY29fd29yayk7CisJbXV0ZXhfdW5s b2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOworCWNhbmNlbF93b3JrX3N5bmMoJmludGVsX2RwLT5w c3Iud29yayk7CisJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZpbnRlbF9kcC0+cHNyLmRjM2Nv X3dvcmspOwogfQogCi1zdGF0aWMgdm9pZCBwc3JfZm9yY2VfaHdfdHJhY2tpbmdfZXhpdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMgdm9pZCBwc3JfZm9yY2VfaHdf dHJhY2tpbmdfZXhpdChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogeworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOworCiAJaWYgKElT X1RJR0VSTEFLRShkZXZfcHJpdikpCiAJCS8qCiAJCSAqIFdyaXRlcyB0byBDVVJTVVJGTElWRSBp biBUR0wgYXJlIGNhdXNpbmcgSU9NTVUgZXJyb3JzIGFuZApAQCAtMTE2Niw3ICsxMTY5LDcgQEAg c3RhdGljIHZvaWQgcHNyX2ZvcmNlX2h3X3RyYWNraW5nX2V4aXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQogCQkgKiBTbyB1c2luZyB0aGlzIHdvcmthcm91bmQgdW50aWwgdGhp cyBpc3N1ZSBpcyByb290IGNhdXNlZAogCQkgKiBhbmQgYSBiZXR0ZXIgZml4IGlzIGZvdW5kLgog CQkgKi8KLQkJaW50ZWxfcHNyX2V4aXQoZGV2X3ByaXYpOworCQlpbnRlbF9wc3JfZXhpdChpbnRl bF9kcCk7CiAJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQogCQkvKgogCQkgKiBE aXNwbGF5IFdBICMwODg0OiBza2wrCkBAIC0xMTc3LDEzICsxMTgwLDEzIEBAIHN0YXRpYyB2b2lk IHBzcl9mb3JjZV9od190cmFja2luZ19leGl0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAkJICogYnV0IGl0IG1ha2VzIG1vcmUgc2Vuc2Ugd3JpdGUgdG8gdGhlIGN1cnJlbnQg YWN0aXZlCiAJCSAqIHBpcGUuCiAJCSAqLwotCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgQ1VS U1VSRkxJVkUoZGV2X3ByaXYtPnBzci5waXBlKSwgMCk7CisJCWludGVsX2RlX3dyaXRlKGRldl9w cml2LCBDVVJTVVJGTElWRShpbnRlbF9kcC0+cHNyLnBpcGUpLCAwKTsKIAllbHNlCiAJCS8qCiAJ CSAqIEEgd3JpdGUgdG8gQ1VSU1VSRkxJVkUgZG8gbm90IGNhdXNlIEhXIHRyYWNraW5nIHRvIGV4 aXQgUFNSCiAJCSAqIG9uIG9sZGVyIGdlbnMgc28gZG9pbmcgdGhlIG1hbnVhbCBleGl0IGluc3Rl YWQuCiAJCSAqLwotCQlpbnRlbF9wc3JfZXhpdChkZXZfcHJpdik7CisJCWludGVsX3Bzcl9leGl0 KGludGVsX2RwKTsKIH0KIAogdm9pZCBpbnRlbF9wc3IyX3Byb2dyYW1fcGxhbmVfc2VsX2ZldGNo KHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCkBAIC0xMjMxLDE2ICsxMjM0LDE5IEBAIHZvaWQg aW50ZWxfcHNyMl9wcm9ncmFtX3BsYW5lX3NlbF9mZXRjaChzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBs YW5lLAogCiB2b2lkIGludGVsX3BzcjJfcHJvZ3JhbV90cmFuc19tYW5fdHJrX2N0bChjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKLQlz dHJ1Y3QgaTkxNV9wc3IgKnBzciA9ICZkZXZfcHJpdi0+cHNyOworCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjLT5kZXYpOwor CXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwogCiAJaWYgKCFIQVNfUFNSMl9TRUxfRkVU Q0goZGV2X3ByaXYpIHx8CiAJICAgICFjcnRjX3N0YXRlLT5lbmFibGVfcHNyMl9zZWxfZmV0Y2gp CiAJCXJldHVybjsKIAotCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBQU1IyX01BTl9UUktfQ1RM KHBzci0+dHJhbnNjb2RlciksCi0JCSAgICAgICBjcnRjX3N0YXRlLT5wc3IyX21hbl90cmFja19j dGwpOworCWZvcl9lYWNoX2ludGVsX2VuY29kZXJfaXNfcHNyX2VuYWJsZWQoJmRldl9wcml2LT5k cm0sIGVuY29kZXIsCisJCQkJCSAgICAgIGNydGNfc3RhdGUtPnVhcGkuZW5jb2Rlcl9tYXNrKSB7 CisJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LAorCQkJICAgICAgIFBTUjJfTUFOX1RSS19DVEwo Y3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXIpLAorCQkJICAgICAgIGNydGNfc3RhdGUtPnBzcjJf bWFuX3RyYWNrX2N0bCk7CisJfQogfQogCiBzdGF0aWMgdm9pZCBwc3IyX21hbl90cmtfY3RsX2Nh bGMoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCkBAIC0xNDM1LDEzICsxNDQx LDEzIEBAIHZvaWQgaW50ZWxfcHNyX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAog CQkgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKIHsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2Rw KTsKLQlzdHJ1Y3QgaTkxNV9wc3IgKnBzciA9ICZkZXZfcHJpdi0+cHNyOworCXN0cnVjdCBpbnRl bF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+cHNyOwogCWJvb2wgZW5hYmxlLCBwc3IyX2VuYWJsZTsK IAotCWlmICghQ0FOX1BTUihkZXZfcHJpdikgfHwgUkVBRF9PTkNFKHBzci0+ZHApICE9IGludGVs X2RwKQorCWlmICghQ0FOX1BTUihpbnRlbF9kcCkpCiAJCXJldHVybjsKIAotCW11dGV4X2xvY2so JmRldl9wcml2LT5wc3IubG9jayk7CisJbXV0ZXhfbG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsK IAogCWVuYWJsZSA9IGNydGNfc3RhdGUtPmhhc19wc3I7CiAJcHNyMl9lbmFibGUgPSBjcnRjX3N0 YXRlLT5oYXNfcHNyMjsKQEAgLTE0NDksMTUgKzE0NTUsMTUgQEAgdm9pZCBpbnRlbF9wc3JfdXBk YXRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJaWYgKGVuYWJsZSA9PSBwc3ItPmVuYWJs ZWQgJiYgcHNyMl9lbmFibGUgPT0gcHNyLT5wc3IyX2VuYWJsZWQpIHsKIAkJLyogRm9yY2UgYSBQ U1IgZXhpdCB3aGVuIGVuYWJsaW5nIENSQyB0byBhdm9pZCBDUkMgdGltZW91dHMgKi8KIAkJaWYg KGNydGNfc3RhdGUtPmNyY19lbmFibGVkICYmIHBzci0+ZW5hYmxlZCkKLQkJCXBzcl9mb3JjZV9o d190cmFja2luZ19leGl0KGRldl9wcml2KTsKKwkJCXBzcl9mb3JjZV9od190cmFja2luZ19leGl0 KGludGVsX2RwKTsKIAkJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkgJiYgcHNyLT5l bmFibGVkKSB7CiAJCQkvKgogCQkJICogQWN0aXZhdGUgUFNSIGFnYWluIGFmdGVyIGEgZm9yY2Ug ZXhpdCB3aGVuIGVuYWJsaW5nCiAJCQkgKiBDUkMgaW4gb2xkZXIgZ2VucwogCQkJICovCi0JCQlp ZiAoIWRldl9wcml2LT5wc3IuYWN0aXZlICYmCi0JCQkgICAgIWRldl9wcml2LT5wc3IuYnVzeV9m cm9udGJ1ZmZlcl9iaXRzKQotCQkJCXNjaGVkdWxlX3dvcmsoJmRldl9wcml2LT5wc3Iud29yayk7 CisJCQlpZiAoIWludGVsX2RwLT5wc3IuYWN0aXZlICYmCisJCQkgICAgIWludGVsX2RwLT5wc3Iu YnVzeV9mcm9udGJ1ZmZlcl9iaXRzKQorCQkJCXNjaGVkdWxlX3dvcmsoJmludGVsX2RwLT5wc3Iu d29yayk7CiAJCX0KIAogCQlnb3RvIHVubG9jazsKQEAgLTE0NjcsMzQgKzE0NzMsMjMgQEAgdm9p ZCBpbnRlbF9wc3JfdXBkYXRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJCWludGVsX3Bz cl9kaXNhYmxlX2xvY2tlZChpbnRlbF9kcCk7CiAKIAlpZiAoZW5hYmxlKQotCQlpbnRlbF9wc3Jf ZW5hYmxlX2xvY2tlZChkZXZfcHJpdiwgY3J0Y19zdGF0ZSwgY29ubl9zdGF0ZSk7CisJCWludGVs X3Bzcl9lbmFibGVfbG9ja2VkKGludGVsX2RwLCBjcnRjX3N0YXRlLCBjb25uX3N0YXRlKTsKIAog dW5sb2NrOgotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKKwltdXRleF91bmxv Y2soJmludGVsX2RwLT5wc3IubG9jayk7CiB9CiAKIC8qKgotICogaW50ZWxfcHNyX3dhaXRfZm9y X2lkbGUgLSB3YWl0IGZvciBQU1IxIHRvIGlkbGUKLSAqIEBuZXdfY3J0Y19zdGF0ZTogbmV3IENS VEMgc3RhdGUKKyAqIHBzcl93YWl0X2Zvcl9pZGxlIC0gd2FpdCBmb3IgUFNSMSB0byBpZGxlCisg KiBAaW50ZWxfZHA6IEludGVsIERQCiAgKiBAb3V0X3ZhbHVlOiBQU1Igc3RhdHVzIGluIGNhc2Ug b2YgZmFpbHVyZQogICoKLSAqIFRoaXMgZnVuY3Rpb24gaXMgZXhwZWN0ZWQgdG8gYmUgY2FsbGVk IGZyb20gcGlwZV91cGRhdGVfc3RhcnQoKSB3aGVyZSBpdCBpcwotICogbm90IGV4cGVjdGVkIHRv IHJhY2Ugd2l0aCBQU1IgZW5hYmxlIG9yIGRpc2FibGUuCi0gKgogICogUmV0dXJuczogMCBvbiBz dWNjZXNzIG9yIC1FVElNRU9VVCBpZiBQU1Igc3RhdHVzIGRvZXMgbm90IGlkbGUuCisgKgogICov Ci1pbnQgaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKm5ld19jcnRjX3N0YXRlLAotCQkJICAgIHUzMiAqb3V0X3ZhbHVlKQorc3RhdGljIGludCBw c3Jfd2FpdF9mb3JfaWRsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1MzIgKm91dF92YWx1 ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMobmV3X2NydGNf c3RhdGUtPnVhcGkuY3J0Yyk7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShjcnRjLT5iYXNlLmRldik7Ci0KLQlpZiAoIWRldl9wcml2LT5wc3IuZW5hYmxlZCB8 fCAhbmV3X2NydGNfc3RhdGUtPmhhc19wc3IpCi0JCXJldHVybiAwOwotCi0JLyogRklYTUU6IFVw ZGF0ZSB0aGlzIGZvciBQU1IyIGlmIHdlIG5lZWQgdG8gd2FpdCBmb3IgaWRsZSAqLwotCWlmIChS RUFEX09OQ0UoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQpKQotCQlyZXR1cm4gMDsKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKIAog CS8qCiAJICogRnJvbSBic3BlYzogUGFuZWwgU2VsZiBSZWZyZXNoIChCRFcrKQpAQCAtMTUwMiwz MiArMTQ5Nyw2MyBAQCBpbnQgaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlLAogCSAqIGV4aXQgdHJhaW5pbmcgdGltZSAr IDEuNSBtcyBvZiBhdXggY2hhbm5lbCBoYW5kc2hha2UuIDUwIG1zIGlzCiAJICogZGVmZW5zaXZl IGVub3VnaCB0byBjb3ZlciBldmVyeXRoaW5nLgogCSAqLwotCiAJcmV0dXJuIF9faW50ZWxfd2Fp dF9mb3JfcmVnaXN0ZXIoJmRldl9wcml2LT51bmNvcmUsCi0JCQkJCSBFRFBfUFNSX1NUQVRVUyhk ZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpLAorCQkJCQkgRURQX1BTUl9TVEFUVVMoaW50ZWxfZHAt PnBzci50cmFuc2NvZGVyKSwKIAkJCQkJIEVEUF9QU1JfU1RBVFVTX1NUQVRFX01BU0ssCiAJCQkJ CSBFRFBfUFNSX1NUQVRVU19TVEFURV9JRExFLCAyLCA1MCwKIAkJCQkJIG91dF92YWx1ZSk7CiB9 CiAKLXN0YXRpYyBib29sIF9fcHNyX3dhaXRfZm9yX2lkbGVfbG9ja2VkKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKKy8qKgorICogaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUgLSB3 YWl0IGZvciBQU1IxIHRvIGlkbGUKKyAqIEBuZXdfY3J0Y19zdGF0ZTogbmV3IENSVEMgc3RhdGUK KyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGNhbGxlZCBmcm9tIHBpcGVf dXBkYXRlX3N0YXJ0KCkgd2hlcmUgaXQgaXMKKyAqIG5vdCBleHBlY3RlZCB0byByYWNlIHdpdGgg UFNSIGVuYWJsZSBvciBkaXNhYmxlLgorICovCit2b2lkIGludGVsX3Bzcl93YWl0X2Zvcl9pZGxl KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKK3sKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG5ld19jcnRjX3N0YXRlLT51 YXBpLmNydGMtPmRldik7CisJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7CisKKwlpZiAo IW5ld19jcnRjX3N0YXRlLT5oYXNfcHNyKQorCQlyZXR1cm47CisKKwlmb3JfZWFjaF9pbnRlbF9l bmNvZGVyX2lzX3Bzcl9lbmFibGVkKCZkZXZfcHJpdi0+ZHJtLCBlbmNvZGVyLAorCQkJCQkgICAg ICBuZXdfY3J0Y19zdGF0ZS0+dWFwaS5lbmNvZGVyX21hc2spIHsKKwkJc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcChlbmNvZGVyKTsKKworCQkvKiB3aGVuIHRoZSBQ U1IxIGlzIGVuYWJsZWQgKi8KKwkJaWYgKCFpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkgewor CQkJdTMyIHBzcl9zdGF0dXM7CisKKwkJCWlmIChwc3Jfd2FpdF9mb3JfaWRsZShpbnRlbF9kcCwg JnBzcl9zdGF0dXMpKQorCQkJCWRybV9lcnIoJmRldl9wcml2LT5kcm0sCisJCQkJCSJQU1IgaWRs ZSB0aW1lZCBvdXQgMHgleCwgYXRvbWljIHVwZGF0ZSBtYXkgZmFpbFxuIiwKKwkJCQkJcHNyX3N0 YXR1cyk7CisJCX0KKwl9Cit9CisKK3N0YXRpYyBib29sIF9fcHNyX3dhaXRfZm9yX2lkbGVfbG9j a2VkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiB7CiAJaTkxNV9yZWdfdCByZWc7CiAJdTMy IG1hc2s7CiAJaW50IGVycjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk cF90b19pOTE1KGludGVsX2RwKTsKIAotCWlmICghZGV2X3ByaXYtPnBzci5lbmFibGVkKQorCWlm ICghaW50ZWxfZHAtPnBzci5lbmFibGVkKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlpZiAoZGV2X3By aXYtPnBzci5wc3IyX2VuYWJsZWQpIHsKLQkJcmVnID0gRURQX1BTUjJfU1RBVFVTKGRldl9wcml2 LT5wc3IudHJhbnNjb2Rlcik7CisJaWYgKGludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkKSB7CisJ CXJlZyA9IEVEUF9QU1IyX1NUQVRVUyhpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpOwogCQltYXNr ID0gRURQX1BTUjJfU1RBVFVTX1NUQVRFX01BU0s7CiAJfSBlbHNlIHsKLQkJcmVnID0gRURQX1BT Ul9TVEFUVVMoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKTsKKwkJcmVnID0gRURQX1BTUl9TVEFU VVMoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKTsKIAkJbWFzayA9IEVEUF9QU1JfU1RBVFVTX1NU QVRFX01BU0s7CiAJfQogCi0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOworCW11 dGV4X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsKIAogCWVyciA9IGludGVsX2RlX3dhaXRf Zm9yX2NsZWFyKGRldl9wcml2LCByZWcsIG1hc2ssIDUwKTsKIAlpZiAoZXJyKQpAQCAtMTUzNSw4 ICsxNTYxLDggQEAgc3RhdGljIGJvb2wgX19wc3Jfd2FpdF9mb3JfaWRsZV9sb2NrZWQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJIlRpbWVkIG91dCB3YWl0aW5nIGZvciBQ U1IgSWRsZSBmb3IgcmUtZW5hYmxlXG4iKTsKIAogCS8qIEFmdGVyIHRoZSB1bmxvY2tlZCB3YWl0 LCB2ZXJpZnkgdGhhdCBQU1IgaXMgc3RpbGwgd2FudGVkISAqLwotCW11dGV4X2xvY2soJmRldl9w cml2LT5wc3IubG9jayk7Ci0JcmV0dXJuIGVyciA9PSAwICYmIGRldl9wcml2LT5wc3IuZW5hYmxl ZDsKKwltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOworCXJldHVybiBlcnIgPT0gMCAm JiBpbnRlbF9kcC0+cHNyLmVuYWJsZWQ7CiB9CiAKIHN0YXRpYyBpbnQgaW50ZWxfcHNyX2Zhc3Rz ZXRfZm9yY2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpAQCAtMTYwMiwxMSAr MTYyOCwxMiBAQCBzdGF0aWMgaW50IGludGVsX3Bzcl9mYXN0c2V0X2ZvcmNlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlyZXR1cm4gZXJyOwogfQogCi1pbnQgaW50ZWxfcHNy X2RlYnVnX3NldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCB2YWwpCitp bnQgaW50ZWxfcHNyX2RlYnVnX3NldChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1NjQgdmFs KQogewogCWNvbnN0IHUzMiBtb2RlID0gdmFsICYgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLOwog CXUzMiBvbGRfbW9kZTsKIAlpbnQgcmV0OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwogCiAJaWYgKHZhbCAmIH4oSTkxNV9QU1JfREVC VUdfSVJRIHwgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLKSB8fAogCSAgICBtb2RlID4gSTkxNV9Q U1JfREVCVUdfRk9SQ0VfUFNSMSkgewpAQCAtMTYxNCwyMSArMTY0MSwyMSBAQCBpbnQgaW50ZWxf cHNyX2RlYnVnX3NldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCB2YWwp CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJs ZSgmZGV2X3ByaXYtPnBzci5sb2NrKTsKKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUo JmludGVsX2RwLT5wc3IubG9jayk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCW9sZF9t b2RlID0gZGV2X3ByaXYtPnBzci5kZWJ1ZyAmIEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSzsKLQlk ZXZfcHJpdi0+cHNyLmRlYnVnID0gdmFsOworCW9sZF9tb2RlID0gaW50ZWxfZHAtPnBzci5kZWJ1 ZyAmIEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSzsKKwlpbnRlbF9kcC0+cHNyLmRlYnVnID0gdmFs OwogCiAJLyoKIAkgKiBEbyBpdCByaWdodCBhd2F5IGlmIGl0J3MgYWxyZWFkeSBlbmFibGVkLCBv dGhlcndpc2UgaXQgd2lsbCBiZSBkb25lCiAJICogd2hlbiBlbmFibGluZyB0aGUgc291cmNlLgog CSAqLwotCWlmIChkZXZfcHJpdi0+cHNyLmVuYWJsZWQpCi0JCXBzcl9pcnFfY29udHJvbChkZXZf cHJpdik7CisJaWYgKGludGVsX2RwLT5wc3IuZW5hYmxlZCkKKwkJcHNyX2lycV9jb250cm9sKGlu dGVsX2RwKTsKIAotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKKwltdXRleF91 bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7CiAKIAlpZiAob2xkX21vZGUgIT0gbW9kZSkKIAkJ cmV0ID0gaW50ZWxfcHNyX2Zhc3RzZXRfZm9yY2UoZGV2X3ByaXYpOwpAQCAtMTYzNiwyOCArMTY2 MywyOCBAQCBpbnQgaW50ZWxfcHNyX2RlYnVnX3NldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsIHU2NCB2YWwpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHZvaWQgaW50ZWxf cHNyX2hhbmRsZV9pcnEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3RhdGlj IHZvaWQgaW50ZWxfcHNyX2hhbmRsZV9pcnEoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsK LQlzdHJ1Y3QgaTkxNV9wc3IgKnBzciA9ICZkZXZfcHJpdi0+cHNyOworCXN0cnVjdCBpbnRlbF9w c3IgKnBzciA9ICZpbnRlbF9kcC0+cHNyOwogCi0JaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKHBz ci0+ZHApOworCWludGVsX3Bzcl9kaXNhYmxlX2xvY2tlZChpbnRlbF9kcCk7CiAJcHNyLT5zaW5r X25vdF9yZWxpYWJsZSA9IHRydWU7CiAJLyogbGV0J3MgbWFrZSBzdXJlIHRoYXQgc2luayBpcyBh d2FrZW4gKi8KLQlkcm1fZHBfZHBjZF93cml0ZWIoJnBzci0+ZHAtPmF1eCwgRFBfU0VUX1BPV0VS LCBEUF9TRVRfUE9XRVJfRDApOworCWRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1eCwg RFBfU0VUX1BPV0VSLCBEUF9TRVRfUE9XRVJfRDApOwogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9w c3Jfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0KLQkJY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqZGV2X3ByaXYp LCBwc3Iud29yayk7CisJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9CisJCWNvbnRhaW5lcl9v Zih3b3JrLCB0eXBlb2YoKmludGVsX2RwKSwgcHNyLndvcmspOwogCi0JbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPnBzci5sb2NrKTsKKwltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOwogCi0J aWYgKCFkZXZfcHJpdi0+cHNyLmVuYWJsZWQpCisJaWYgKCFpbnRlbF9kcC0+cHNyLmVuYWJsZWQp CiAJCWdvdG8gdW5sb2NrOwogCi0JaWYgKFJFQURfT05DRShkZXZfcHJpdi0+cHNyLmlycV9hdXhf ZXJyb3IpKQotCQlpbnRlbF9wc3JfaGFuZGxlX2lycShkZXZfcHJpdik7CisJaWYgKFJFQURfT05D RShpbnRlbF9kcC0+cHNyLmlycV9hdXhfZXJyb3IpKQorCQlpbnRlbF9wc3JfaGFuZGxlX2lycShp bnRlbF9kcCk7CiAKIAkvKgogCSAqIFdlIGhhdmUgdG8gbWFrZSBzdXJlIFBTUiBpcyByZWFkeSBm b3IgcmUtZW5hYmxlCkBAIC0xNjY1LDcgKzE2OTIsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3Jf d29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJICogUFNSIG1pZ2h0IHRha2Ugc29tZSB0 aW1lIHRvIGdldCBmdWxseSBkaXNhYmxlZAogCSAqIGFuZCBiZSByZWFkeSBmb3IgcmUtZW5hYmxl LgogCSAqLwotCWlmICghX19wc3Jfd2FpdF9mb3JfaWRsZV9sb2NrZWQoZGV2X3ByaXYpKQorCWlm ICghX19wc3Jfd2FpdF9mb3JfaWRsZV9sb2NrZWQoaW50ZWxfZHApKQogCQlnb3RvIHVubG9jazsK IAogCS8qCkBAIC0xNjczLDEyICsxNzAwLDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl93b3Jr KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkgKiByZWNoZWNrLiBTaW5jZSBwc3JfZmx1c2gg Zmlyc3QgY2xlYXJzIHRoaXMgYW5kIHRoZW4gcmVzY2hlZHVsZXMgd2UKIAkgKiB3b24ndCBldmVy IG1pc3MgYSBmbHVzaCB3aGVuIGJhaWxpbmcgb3V0IGhlcmUuCiAJICovCi0JaWYgKGRldl9wcml2 LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzIHx8IGRldl9wcml2LT5wc3IuYWN0aXZlKQorCWlm IChpbnRlbF9kcC0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cyB8fCBpbnRlbF9kcC0+cHNyLmFj dGl2ZSkKIAkJZ290byB1bmxvY2s7CiAKLQlpbnRlbF9wc3JfYWN0aXZhdGUoZGV2X3ByaXYtPnBz ci5kcCk7CisJaW50ZWxfcHNyX2FjdGl2YXRlKGludGVsX2RwKTsKIHVubG9jazoKLQltdXRleF91 bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7CisJbXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+cHNy LmxvY2spOwogfQogCiAvKioKQEAgLTE2OTcsMjcgKzE3MjQsMzUgQEAgc3RhdGljIHZvaWQgaW50 ZWxfcHNyX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogdm9pZCBpbnRlbF9wc3JfaW52 YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgIHVuc2lnbmVk IGZyb250YnVmZmVyX2JpdHMsIGVudW0gZmJfb3Bfb3JpZ2luIG9yaWdpbikKIHsKLQlpZiAoIUNB Tl9QU1IoZGV2X3ByaXYpKQotCQlyZXR1cm47CisJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXI7CisJc3RydWN0IGludGVsX2RwICppbnRlbF9kcDsKIAotCWlmIChvcmlnaW4gPT0gT1JJR0lO X0ZMSVApCi0JCXJldHVybjsKKwlmb3JfZWFjaF9pbnRlbF9kcCgmZGV2X3ByaXYtPmRybSwgZW5j b2RlcikgeworCQl1bnNpZ25lZCBwaXBlX2Zyb250YnVmZmVyX2JpdHMgPSBmcm9udGJ1ZmZlcl9i aXRzOwogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKLQlpZiAoIWRldl9wcml2 LT5wc3IuZW5hYmxlZCkgewotCQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7Ci0J CXJldHVybjsKLQl9CisJCWludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOworCQlp ZiAoIUNBTl9QU1IoaW50ZWxfZHApKQorCQkJY29udGludWU7CisKKwkJaWYgKG9yaWdpbiA9PSBP UklHSU5fRkxJUCkKKwkJCWNvbnRpbnVlOworCisJCW11dGV4X2xvY2soJmludGVsX2RwLT5wc3Iu bG9jayk7CisJCWlmICghaW50ZWxfZHAtPnBzci5lbmFibGVkKSB7CisJCQltdXRleF91bmxvY2so JmludGVsX2RwLT5wc3IubG9jayk7CisJCQljb250aW51ZTsKKwkJfQogCi0JZnJvbnRidWZmZXJf Yml0cyAmPSBJTlRFTF9GUk9OVEJVRkZFUl9BTExfTUFTSyhkZXZfcHJpdi0+cHNyLnBpcGUpOwot CWRldl9wcml2LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzIHw9IGZyb250YnVmZmVyX2JpdHM7 CisJCXBpcGVfZnJvbnRidWZmZXJfYml0cyAmPQorCQkJSU5URUxfRlJPTlRCVUZGRVJfQUxMX01B U0soaW50ZWxfZHAtPnBzci5waXBlKTsKKwkJaW50ZWxfZHAtPnBzci5idXN5X2Zyb250YnVmZmVy X2JpdHMgfD0gcGlwZV9mcm9udGJ1ZmZlcl9iaXRzOwogCi0JaWYgKGZyb250YnVmZmVyX2JpdHMp Ci0JCWludGVsX3Bzcl9leGl0KGRldl9wcml2KTsKKwkJaWYgKHBpcGVfZnJvbnRidWZmZXJfYml0 cykKKwkJCWludGVsX3Bzcl9leGl0KGludGVsX2RwKTsKIAotCW11dGV4X3VubG9jaygmZGV2X3By aXYtPnBzci5sb2NrKTsKKwkJbXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOworCX0K IH0KLQogLyoKICAqIFdoZW4gd2Ugd2lsbCBiZSBjb21wbGV0ZWx5IHJlbHkgb24gUFNSMiBTL1cg dHJhY2tpbmcgaW4gZnV0dXJlLAogICogaW50ZWxfcHNyX2ZsdXNoKCkgd2lsbCBpbnZhbGlkYXRl IGFuZCBmbHVzaCB0aGUgUFNSIGZvciBPUklHSU5fRkxJUApAQCAtMTcyNSwxNSArMTc2MCwxNSBA QCB2b2lkIGludGVsX3Bzcl9pbnZhbGlkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKICAqIGFjY29yZGluZ2x5IGluIGZ1dHVyZS4KICAqLwogc3RhdGljIHZvaWQKLXRnbF9k YzNjb19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCXVuc2lnbmVk IGludCBmcm9udGJ1ZmZlcl9iaXRzLCBlbnVtIGZiX29wX29yaWdpbiBvcmlnaW4pCit0Z2xfZGMz Y29fZmx1c2goc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdW5zaWduZWQgaW50IGZyb250YnVm ZmVyX2JpdHMsCisJCWVudW0gZmJfb3Bfb3JpZ2luIG9yaWdpbikKIHsKLQltdXRleF9sb2NrKCZk ZXZfcHJpdi0+cHNyLmxvY2spOworCW11dGV4X2xvY2soJmludGVsX2RwLT5wc3IubG9jayk7CiAK LQlpZiAoIWRldl9wcml2LT5wc3IuZGMzY29fZW5hYmxlZCkKKwlpZiAoIWludGVsX2RwLT5wc3Iu ZGMzY29fZW5hYmxlZCkKIAkJZ290byB1bmxvY2s7CiAKLQlpZiAoIWRldl9wcml2LT5wc3IucHNy Ml9lbmFibGVkIHx8ICFkZXZfcHJpdi0+cHNyLmFjdGl2ZSkKKwlpZiAoIWludGVsX2RwLT5wc3Iu cHNyMl9lbmFibGVkIHx8ICFpbnRlbF9kcC0+cHNyLmFjdGl2ZSkKIAkJZ290byB1bmxvY2s7CiAK IAkvKgpAQCAtMTc0MSwxNSArMTc3NiwxNSBAQCB0Z2xfZGMzY29fZmx1c2goc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCSAqIHdoZW4gZGVsYXllZCB3b3JrIHNjaGVkdWxlcyB0 aGF0IG1lYW5zIGRpc3BsYXkgaGFzIGJlZW4gaWRsZS4KIAkgKi8KIAlpZiAoIShmcm9udGJ1ZmZl cl9iaXRzICYKLQkgICAgSU5URUxfRlJPTlRCVUZGRVJfQUxMX01BU0soZGV2X3ByaXYtPnBzci5w aXBlKSkpCisJICAgIElOVEVMX0ZST05UQlVGRkVSX0FMTF9NQVNLKGludGVsX2RwLT5wc3IucGlw ZSkpKQogCQlnb3RvIHVubG9jazsKIAotCXRnbF9wc3IyX2VuYWJsZV9kYzNjbyhkZXZfcHJpdik7 Ci0JbW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fd3EsICZkZXZfcHJpdi0+cHNyLmRjM2NvX3dvcmss Ci0JCQkgZGV2X3ByaXYtPnBzci5kYzNjb19leGl0X2RlbGF5KTsKKwl0Z2xfcHNyMl9lbmFibGVf ZGMzY28oaW50ZWxfZHApOworCW1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX3dxLCAmaW50ZWxfZHAt PnBzci5kYzNjb193b3JrLAorCQkJIGludGVsX2RwLT5wc3IuZGMzY29fZXhpdF9kZWxheSk7CiAK IHVubG9jazoKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7CisJbXV0ZXhfdW5s b2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOwogfQogCiAvKioKQEAgLTE3NjgsNDUgKzE4MDMsNTcg QEAgdGdsX2RjM2NvX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHZv aWQgaW50ZWxfcHNyX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJ ICAgICB1bnNpZ25lZCBmcm9udGJ1ZmZlcl9iaXRzLCBlbnVtIGZiX29wX29yaWdpbiBvcmlnaW4p CiB7Ci0JaWYgKCFDQU5fUFNSKGRldl9wcml2KSkKLQkJcmV0dXJuOworCXN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyOworCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHA7CiAKLQlpZiAob3Jp Z2luID09IE9SSUdJTl9GTElQKSB7Ci0JCXRnbF9kYzNjb19mbHVzaChkZXZfcHJpdiwgZnJvbnRi dWZmZXJfYml0cywgb3JpZ2luKTsKLQkJcmV0dXJuOwotCX0KKwlmb3JfZWFjaF9pbnRlbF9kcCgm ZGV2X3ByaXYtPmRybSwgZW5jb2RlcikgeworCQlpbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcChl bmNvZGVyKTsKIAotCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7Ci0JaWYgKCFkZXZf cHJpdi0+cHNyLmVuYWJsZWQpIHsKLQkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2sp OwotCQlyZXR1cm47Ci0JfQorCQlpZiAoQ0FOX1BTUihpbnRlbF9kcCkpIHsKKwkJCXVuc2lnbmVk IHBpcGVfZnJvbnRidWZmZXJfYml0cyA9IGZyb250YnVmZmVyX2JpdHM7CiAKLQlmcm9udGJ1ZmZl cl9iaXRzICY9IElOVEVMX0ZST05UQlVGRkVSX0FMTF9NQVNLKGRldl9wcml2LT5wc3IucGlwZSk7 Ci0JZGV2X3ByaXYtPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMgJj0gfmZyb250YnVmZmVyX2Jp dHM7CisJCQlpZiAob3JpZ2luID09IE9SSUdJTl9GTElQKSB7CisJCQkJdGdsX2RjM2NvX2ZsdXNo KGludGVsX2RwLCBmcm9udGJ1ZmZlcl9iaXRzLCBvcmlnaW4pOworCQkJCWNvbnRpbnVlOworCQkJ fQorCisJCQltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOworCQkJaWYgKCFpbnRlbF9k cC0+cHNyLmVuYWJsZWQpIHsKKwkJCQltdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7 CisJCQkJY29udGludWU7CisJCQl9CiAKLQkvKiBCeSBkZWZpbml0aW9uIGZsdXNoID0gaW52YWxp ZGF0ZSArIGZsdXNoICovCi0JaWYgKGZyb250YnVmZmVyX2JpdHMpCi0JCXBzcl9mb3JjZV9od190 cmFja2luZ19leGl0KGRldl9wcml2KTsKKwkJCXBpcGVfZnJvbnRidWZmZXJfYml0cyAmPQorCQkJ CUlOVEVMX0ZST05UQlVGRkVSX0FMTF9NQVNLKGludGVsX2RwLT5wc3IucGlwZSk7CisJCQlpbnRl bF9kcC0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cyAmPSB+cGlwZV9mcm9udGJ1ZmZlcl9iaXRz OwogCi0JaWYgKCFkZXZfcHJpdi0+cHNyLmFjdGl2ZSAmJiAhZGV2X3ByaXYtPnBzci5idXN5X2Zy b250YnVmZmVyX2JpdHMpCi0JCXNjaGVkdWxlX3dvcmsoJmRldl9wcml2LT5wc3Iud29yayk7Ci0J bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOworCQkJLyogQnkgZGVmaW5pdGlvbiBm bHVzaCA9IGludmFsaWRhdGUgKyBmbHVzaCAqLworCQkJaWYgKHBpcGVfZnJvbnRidWZmZXJfYml0 cykKKwkJCQlwc3JfZm9yY2VfaHdfdHJhY2tpbmdfZXhpdChpbnRlbF9kcCk7CisKKwkJCWlmICgh aW50ZWxfZHAtPnBzci5hY3RpdmUgJiYgIWludGVsX2RwLT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9i aXRzKQorCQkJCXNjaGVkdWxlX3dvcmsoJmludGVsX2RwLT5wc3Iud29yayk7CisJCQltdXRleF91 bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7CisJCX0KKwl9CiB9CiAKIC8qKgogICogaW50ZWxf cHNyX2luaXQgLSBJbml0IGJhc2ljIFBTUiB3b3JrIGFuZCBtdXRleC4KLSAqIEBkZXZfcHJpdjog aTkxNSBkZXZpY2UgcHJpdmF0ZQorICogQGludGVsX2RwOiBJbnRlbCBEUAogICoKLSAqIFRoaXMg ZnVuY3Rpb24gaXMgIGNhbGxlZCBvbmx5IG9uY2UgYXQgZHJpdmVyIGxvYWQgdG8gaW5pdGlhbGl6 ZSBiYXNpYwotICogUFNSIHN0dWZmLgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYWZ0ZXIg dGhlIGluaXRpYWxpemluZyBjb25uZWN0b3IuCisgKiAodGhlIGluaXRpYWxpemluZyBvZiBjb25u ZWN0b3IgdHJlYXRzIHRoZSBoYW5kbGluZyBvZiBjb25uZWN0b3IgY2FwYWJpbGl0aWVzKQorICog QW5kIGl0IGluaXRpYWxpemVzIGJhc2ljIFBTUiBzdHVmZiBmb3IgZWFjaCBEUCBFbmNvZGVyLgog ICovCi12b2lkIGludGVsX3Bzcl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKK3ZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsK KwogCWlmICghSEFTX1BTUihkZXZfcHJpdikpCiAJCXJldHVybjsKIAotCWlmICghZGV2X3ByaXYt PnBzci5zaW5rX3N1cHBvcnQpCisJaWYgKCFpbnRlbF9kcC0+cHNyLnNpbmtfc3VwcG9ydCkKIAkJ cmV0dXJuOwogCiAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKQpAQCAtMTgyNCwxNCArMTg3MSwx NCBAQCB2b2lkIGludGVsX3Bzcl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIAkvKiBTZXQgbGlua19zdGFuZGJ5IHggbGlua19vZmYgZGVmYXVsdHMgKi8KIAlpZiAoSVNf SEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKIAkJLyogSFNXIGFu ZCBCRFcgcmVxdWlyZSB3b3JrYXJvdW5kcyB0aGF0IHdlIGRvbid0IGltcGxlbWVudC4gKi8KLQkJ ZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkgPSBmYWxzZTsKKwkJaW50ZWxfZHAtPnBzci5saW5r X3N0YW5kYnkgPSBmYWxzZTsKIAllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTIpCiAJ CS8qIEZvciBuZXcgcGxhdGZvcm1zIHVwIHRvIFRHTCBsZXQncyByZXNwZWN0IFZCVCBiYWNrIGFn YWluICovCi0JCWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5ID0gZGV2X3ByaXYtPnZidC5wc3Iu ZnVsbF9saW5rOworCQlpbnRlbF9kcC0+cHNyLmxpbmtfc3RhbmRieSA9IGRldl9wcml2LT52YnQu cHNyLmZ1bGxfbGluazsKIAotCUlOSVRfV09SSygmZGV2X3ByaXYtPnBzci53b3JrLCBpbnRlbF9w c3Jfd29yayk7Ci0JSU5JVF9ERUxBWUVEX1dPUksoJmRldl9wcml2LT5wc3IuZGMzY29fd29yaywg dGdsX2RjM2NvX2Rpc2FibGVfd29yayk7Ci0JbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPnBzci5sb2Nr KTsKKwlJTklUX1dPUksoJmludGVsX2RwLT5wc3Iud29yaywgaW50ZWxfcHNyX3dvcmspOworCUlO SVRfREVMQVlFRF9XT1JLKCZpbnRlbF9kcC0+cHNyLmRjM2NvX3dvcmssIHRnbF9kYzNjb19kaXNh YmxlX3dvcmspOworCW11dGV4X2luaXQoJmludGVsX2RwLT5wc3IubG9jayk7CiB9CiAKIHN0YXRp YyBpbnQgcHNyX2dldF9zdGF0dXNfYW5kX2Vycm9yX3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLApAQCAtMTg1Nyw3ICsxOTA0LDcgQEAgc3RhdGljIHZvaWQgcHNyX2FscG1fY2hlY2so c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKIAlzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4 ID0gJmludGVsX2RwLT5hdXg7Ci0Jc3RydWN0IGk5MTVfcHNyICpwc3IgPSAmZGV2X3ByaXYtPnBz cjsKKwlzdHJ1Y3QgaW50ZWxfcHNyICpwc3IgPSAmaW50ZWxfZHAtPnBzcjsKIAl1OCB2YWw7CiAJ aW50IHI7CiAKQEAgLTE4ODQsNyArMTkzMSw3IEBAIHN0YXRpYyB2b2lkIHBzcl9hbHBtX2NoZWNr KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiBzdGF0aWMgdm9pZCBwc3JfY2FwYWJpbGl0eV9j aGFuZ2VkX2NoZWNrKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiB7CiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7Ci0Jc3RydWN0IGk5 MTVfcHNyICpwc3IgPSAmZGV2X3ByaXYtPnBzcjsKKwlzdHJ1Y3QgaW50ZWxfcHNyICpwc3IgPSAm aW50ZWxfZHAtPnBzcjsKIAl1OCB2YWw7CiAJaW50IHI7CiAKQEAgLTE5MDgsMTggKzE5NTUsMTgg QEAgc3RhdGljIHZvaWQgcHNyX2NhcGFiaWxpdHlfY2hhbmdlZF9jaGVjayhzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwKQogdm9pZCBpbnRlbF9wc3Jfc2hvcnRfcHVsc2Uoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90 b19pOTE1KGludGVsX2RwKTsKLQlzdHJ1Y3QgaTkxNV9wc3IgKnBzciA9ICZkZXZfcHJpdi0+cHNy OworCXN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+cHNyOwogCXU4IHN0YXR1cywg ZXJyb3Jfc3RhdHVzOwogCWNvbnN0IHU4IGVycm9ycyA9IERQX1BTUl9SRkJfU1RPUkFHRV9FUlJP UiB8CiAJCQkgIERQX1BTUl9WU0NfU0RQX1VOQ09SUkVDVEFCTEVfRVJST1IgfAogCQkJICBEUF9Q U1JfTElOS19DUkNfRVJST1I7CiAKLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpIHx8ICFpbnRlbF9k cF9pc19lZHAoaW50ZWxfZHApKQorCWlmICghQ0FOX1BTUihpbnRlbF9kcCkgfHwgIWludGVsX2Rw X2lzX2VkcChpbnRlbF9kcCkpCiAJCXJldHVybjsKIAogCW11dGV4X2xvY2soJnBzci0+bG9jayk7 CiAKLQlpZiAoIXBzci0+ZW5hYmxlZCB8fCBwc3ItPmRwICE9IGludGVsX2RwKQorCWlmICghcHNy LT5lbmFibGVkKQogCQlnb3RvIGV4aXQ7CiAKIAlpZiAocHNyX2dldF9zdGF0dXNfYW5kX2Vycm9y X3N0YXR1cyhpbnRlbF9kcCwgJnN0YXR1cywgJmVycm9yX3N0YXR1cykpIHsKQEAgLTE5NjIsMTUg KzIwMDksMTQgQEAgdm9pZCBpbnRlbF9wc3Jfc2hvcnRfcHVsc2Uoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCkKIAogYm9vbCBpbnRlbF9wc3JfZW5hYmxlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUo aW50ZWxfZHApOwogCWJvb2wgcmV0OwogCi0JaWYgKCFDQU5fUFNSKGRldl9wcml2KSB8fCAhaW50 ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkKKwlpZiAoIUNBTl9QU1IoaW50ZWxfZHApIHx8ICFpbnRl bF9kcF9pc19lZHAoaW50ZWxfZHApKQogCQlyZXR1cm4gZmFsc2U7CiAKLQltdXRleF9sb2NrKCZk ZXZfcHJpdi0+cHNyLmxvY2spOwotCXJldCA9IChkZXZfcHJpdi0+cHNyLmRwID09IGludGVsX2Rw ICYmIGRldl9wcml2LT5wc3IuZW5hYmxlZCk7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNy LmxvY2spOworCW11dGV4X2xvY2soJmludGVsX2RwLT5wc3IubG9jayk7CisJcmV0ID0gaW50ZWxf ZHAtPnBzci5lbmFibGVkOworCW11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsKIAog CXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX3Bzci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuaApp bmRleCAwYTUxNzk3OGU4YWYuLjI3NTM5NzZhY2MyNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX3Bzci5oCkBAIC0xOCw3ICsxOCw3IEBAIHN0cnVjdCBpbnRlbF9hdG9taWNf c3RhdGU7CiBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGU7CiBzdHJ1Y3QgaW50ZWxfcGxhbmU7CiAK LSNkZWZpbmUgQ0FOX1BTUihkZXZfcHJpdikgKEhBU19QU1IoZGV2X3ByaXYpICYmIGRldl9wcml2 LT5wc3Iuc2lua19zdXBwb3J0KQorI2RlZmluZSBDQU5fUFNSKGludGVsX2RwKSAoSEFTX1BTUihk cF90b19pOTE1KGludGVsX2RwKSkgJiYgaW50ZWxfZHAtPnBzci5zaW5rX3N1cHBvcnQpCiB2b2lk IGludGVsX3Bzcl9pbml0X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7CiB2b2lkIGlu dGVsX3Bzcl9lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAkJICAgICAgY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCkBAIC0yOCwyMCArMjgsMTkgQEAg dm9pZCBpbnRlbF9wc3JfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogdm9pZCBp bnRlbF9wc3JfdXBkYXRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJCSAgICAgIGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkgICAgICBjb25zdCBzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSk7Ci1pbnQgaW50ZWxfcHNyX2RlYnVn X3NldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCB2YWx1ZSk7CitpbnQg aW50ZWxfcHNyX2RlYnVnX3NldChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1NjQgdmFsdWUp Owogdm9pZCBpbnRlbF9wc3JfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAJCQkgIHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMsCiAJCQkgIGVudW0gZmJfb3Bf b3JpZ2luIG9yaWdpbik7CiB2b2lkIGludGVsX3Bzcl9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCiAJCSAgICAgdW5zaWduZWQgZnJvbnRidWZmZXJfYml0cywKIAkJICAg ICBlbnVtIGZiX29wX29yaWdpbiBvcmlnaW4pOwotdm9pZCBpbnRlbF9wc3JfaW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwordm9pZCBpbnRlbF9wc3JfaW5pdChzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKTsKIHZvaWQgaW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSk7Ci12b2lkIGludGVsX3Bzcl9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBwc3JfaWlyKTsKK3ZvaWQgaW50ZWxfcHNyX2lycV9oYW5k bGVyKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHUzMiBwc3JfaWlyKTsKIHZvaWQgaW50ZWxf cHNyX3Nob3J0X3B1bHNlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwotaW50IGludGVsX3Bz cl93YWl0X2Zvcl9pZGxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19z dGF0ZSwKLQkJCSAgICB1MzIgKm91dF92YWx1ZSk7Cit2b2lkIGludGVsX3Bzcl93YWl0X2Zvcl9p ZGxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSk7CiBib29s IGludGVsX3Bzcl9lbmFibGVkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwogaW50IGludGVs X3BzcjJfc2VsX2ZldGNoX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwK IAkJCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9zcHJpdGUuYwppbmRleCA1MjEyMGY1NmRjNTQuLjk4NjAyOGRlZmZkMiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jCkBAIC05Niw3ICs5 Niw2IEBAIHZvaWQgaW50ZWxfcGlwZV91cGRhdGVfc3RhcnQoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQogCWJvb2wgbmVlZF92bHZfZHNpX3dhID0gKElTX1ZB TExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSAmJgogCQlpbnRl bF9jcnRjX2hhc190eXBlKG5ld19jcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRFNJKTsKIAlERUZJ TkVfV0FJVCh3YWl0KTsKLQl1MzIgcHNyX3N0YXR1czsKIAogCWlmIChuZXdfY3J0Y19zdGF0ZS0+ dWFwaS5hc3luY19mbGlwKQogCQlyZXR1cm47CkBAIC0xMjIsMTAgKzEyMSw3IEBAIHZvaWQgaW50 ZWxfcGlwZV91cGRhdGVfc3RhcnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19j cnRjX3N0YXRlKQogCSAqIFZCTCBpbnRlcnJ1cHRzIHdpbGwgc3RhcnQgdGhlIFBTUiBleGl0IGFu ZCBwcmV2ZW50IGEgUFNSCiAJICogcmUtZW50cnkgYXMgd2VsbC4KIAkgKi8KLQlpZiAoaW50ZWxf cHNyX3dhaXRfZm9yX2lkbGUobmV3X2NydGNfc3RhdGUsICZwc3Jfc3RhdHVzKSkKLQkJZHJtX2Vy cigmZGV2X3ByaXYtPmRybSwKLQkJCSJQU1IgaWRsZSB0aW1lZCBvdXQgMHgleCwgYXRvbWljIHVw ZGF0ZSBtYXkgZmFpbFxuIiwKLQkJCXBzcl9zdGF0dXMpOworCWludGVsX3Bzcl93YWl0X2Zvcl9p ZGxlKG5ld19jcnRjX3N0YXRlKTsKIAogCWxvY2FsX2lycV9kaXNhYmxlKCk7CiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCmluZGV4IDNlZGM5YzRmMmQyMS4uMzgxNmIxMmFhYzBjIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKQEAgLTQ3OCw0MiArNDc4LDYgQEAgc3RydWN0IGk5MTVfZHJycyB7CiAJ ZW51bSBkcnJzX3N1cHBvcnRfdHlwZSB0eXBlOwogfTsKIAotc3RydWN0IGk5MTVfcHNyIHsKLQlz dHJ1Y3QgbXV0ZXggbG9jazsKLQotI2RlZmluZSBJOTE1X1BTUl9ERUJVR19NT0RFX01BU0sJMHgw ZgotI2RlZmluZSBJOTE1X1BTUl9ERUJVR19ERUZBVUxUCQkweDAwCi0jZGVmaW5lIEk5MTVfUFNS X0RFQlVHX0RJU0FCTEUJCTB4MDEKLSNkZWZpbmUgSTkxNV9QU1JfREVCVUdfRU5BQkxFCQkweDAy Ci0jZGVmaW5lIEk5MTVfUFNSX0RFQlVHX0ZPUkNFX1BTUjEJMHgwMwotI2RlZmluZSBJOTE1X1BT Ul9ERUJVR19JUlEJCTB4MTAKLQotCXUzMiBkZWJ1ZzsKLQlib29sIHNpbmtfc3VwcG9ydDsKLQli b29sIGVuYWJsZWQ7Ci0Jc3RydWN0IGludGVsX2RwICpkcDsKLQllbnVtIHBpcGUgcGlwZTsKLQll bnVtIHRyYW5zY29kZXIgdHJhbnNjb2RlcjsKLQlib29sIGFjdGl2ZTsKLQlzdHJ1Y3Qgd29ya19z dHJ1Y3Qgd29yazsKLQl1bnNpZ25lZCBidXN5X2Zyb250YnVmZmVyX2JpdHM7Ci0JYm9vbCBzaW5r X3BzcjJfc3VwcG9ydDsKLQlib29sIGxpbmtfc3RhbmRieTsKLQlib29sIGNvbG9yaW1ldHJ5X3N1 cHBvcnQ7Ci0JYm9vbCBwc3IyX2VuYWJsZWQ7Ci0JYm9vbCBwc3IyX3NlbF9mZXRjaF9lbmFibGVk OwotCXU4IHNpbmtfc3luY19sYXRlbmN5OwotCWt0aW1lX3QgbGFzdF9lbnRyeV9hdHRlbXB0Owot CWt0aW1lX3QgbGFzdF9leGl0OwotCWJvb2wgc2lua19ub3RfcmVsaWFibGU7Ci0JYm9vbCBpcnFf YXV4X2Vycm9yOwotCXUxNiBzdV94X2dyYW51bGFyaXR5OwotCWJvb2wgZGMzY29fZW5hYmxlZDsK LQl1MzIgZGMzY29fZXhpdF9kZWxheTsKLQlzdHJ1Y3QgZGVsYXllZF93b3JrIGRjM2NvX3dvcms7 Ci0Jc3RydWN0IGRybV9kcF92c2Nfc2RwIHZzYzsKLX07Ci0KICNkZWZpbmUgUVVJUktfTFZEU19T U0NfRElTQUJMRSAoMTw8MSkKICNkZWZpbmUgUVVJUktfSU5WRVJUX0JSSUdIVE5FU1MgKDE8PDIp CiAjZGVmaW5lIFFVSVJLX0JBQ0tMSUdIVF9QUkVTRU5UICgxPDwzKQpAQCAtMTA0MSw4ICsxMDA1 LDYgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCiAJc3RydWN0IGk5MTVfcG93ZXJfZG9t YWlucyBwb3dlcl9kb21haW5zOwogCi0Jc3RydWN0IGk5MTVfcHNyIHBzcjsKLQogCXN0cnVjdCBp OTE1X2dwdV9lcnJvciBncHVfZXJyb3I7CiAKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq dmx2X3BjdHg7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwppbmRleCBhMzE5ODBmNjkxMjAuLjkwN2Ez NjZlOWMzMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCkBAIC0yMDg4LDEwICsyMDg4LDIyIEBA IHN0YXRpYyB2b2lkIGl2Yl9kaXNwbGF5X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIAkJaXZiX2Vycl9pbnRfaGFuZGxlcihkZXZfcHJpdik7CiAKIAlpZiAo ZGVfaWlyICYgREVfRURQX1BTUl9JTlRfSFNXKSB7Ci0JCXUzMiBwc3JfaWlyID0gaW50ZWxfdW5j b3JlX3JlYWQoJmRldl9wcml2LT51bmNvcmUsIEVEUF9QU1JfSUlSKTsKKwkJc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXI7CiAKLQkJaW50ZWxfcHNyX2lycV9oYW5kbGVyKGRldl9wcml2LCBw c3JfaWlyKTsKLQkJaW50ZWxfdW5jb3JlX3dyaXRlKCZkZXZfcHJpdi0+dW5jb3JlLCBFRFBfUFNS X0lJUiwgcHNyX2lpcik7CisJCWZvcl9lYWNoX2ludGVsX2RwKCZkZXZfcHJpdi0+ZHJtLCBlbmNv ZGVyKSB7CisJCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVu Y29kZXIpOworCisJCQlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQICYmCisJ CQkgICAgQ0FOX1BTUihpbnRlbF9kcCkpIHsKKwkJCQl1MzIgcHNyX2lpciA9IGludGVsX3VuY29y ZV9yZWFkKCZkZXZfcHJpdi0+dW5jb3JlLAorCQkJCQkJCQlFRFBfUFNSX0lJUik7CisKKwkJCQlp bnRlbF9wc3JfaXJxX2hhbmRsZXIoaW50ZWxfZHAsIHBzcl9paXIpOworCQkJCWludGVsX3VuY29y ZV93cml0ZSgmZGV2X3ByaXYtPnVuY29yZSwKKwkJCQkJCSAgIEVEUF9QU1JfSUlSLCBwc3JfaWly KTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQogCX0KIAogCWlmIChkZV9paXIgJiBERV9BVVhfQ0hB Tk5FTF9BX0lWQikKQEAgLTIzMDEsMjEgKzIzMTMsMzMgQEAgZ2VuOF9kZV9taXNjX2lycV9oYW5k bGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIGlpcikKIAl9CiAKIAlp ZiAoaWlyICYgR0VOOF9ERV9FRFBfUFNSKSB7CisJCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyOwogCQl1MzIgcHNyX2lpcjsKIAkJaTkxNV9yZWdfdCBpaXJfcmVnOwogCi0JCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDEyKQotCQkJaWlyX3JlZyA9IFRSQU5TX1BTUl9JSVIoZGV2X3By aXYtPnBzci50cmFuc2NvZGVyKTsKLQkJZWxzZQotCQkJaWlyX3JlZyA9IEVEUF9QU1JfSUlSOwor CQlmb3JfZWFjaF9pbnRlbF9kcCgmZGV2X3ByaXYtPmRybSwgZW5jb2RlcikgeworCQkJc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcChlbmNvZGVyKTsKKworCQkJaWYg KCFDQU5fUFNSKGludGVsX2RwKSkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gMTIpCisJCQkJaWlyX3JlZyA9IFRSQU5TX1BTUl9JSVIoaW50ZWxfZHAtPnBz ci50cmFuc2NvZGVyKTsKKwkJCWVsc2UKKwkJCQlpaXJfcmVnID0gRURQX1BTUl9JSVI7CiAKLQkJ cHNyX2lpciA9IGludGVsX3VuY29yZV9yZWFkKCZkZXZfcHJpdi0+dW5jb3JlLCBpaXJfcmVnKTsK LQkJaW50ZWxfdW5jb3JlX3dyaXRlKCZkZXZfcHJpdi0+dW5jb3JlLCBpaXJfcmVnLCBwc3JfaWly KTsKKwkJCXBzcl9paXIgPSBpbnRlbF91bmNvcmVfcmVhZCgmZGV2X3ByaXYtPnVuY29yZSwgaWly X3JlZyk7CisJCQlpbnRlbF91bmNvcmVfd3JpdGUoJmRldl9wcml2LT51bmNvcmUsIGlpcl9yZWcs IHBzcl9paXIpOwogCi0JCWlmIChwc3JfaWlyKQotCQkJZm91bmQgPSB0cnVlOworCQkJaWYgKHBz cl9paXIpCisJCQkJZm91bmQgPSB0cnVlOwogCi0JCWludGVsX3Bzcl9pcnFfaGFuZGxlcihkZXZf cHJpdiwgcHNyX2lpcik7CisJCQlpbnRlbF9wc3JfaXJxX2hhbmRsZXIoaW50ZWxfZHAsIHBzcl9p aXIpOworCisJCQkvKiBwcmlvciBHRU4xMiBvbmx5IGhhdmUgb25lIEVEUCBQU1IgKi8KKwkJCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTIpCisJCQkJYnJlYWs7CisJCX0KIAl9CiAKIAlpZiAo IWZvdW5kKQotLSAKMi4zMC4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK