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=-14.0 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY, 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 8C183C433DB for ; Fri, 8 Jan 2021 09:53:45 +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 3A42B235DD for ; Fri, 8 Jan 2021 09:53:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3A42B235DD 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 8C0D36E7F1; Fri, 8 Jan 2021 09:53:44 +0000 (UTC) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 775AA6E7DD for ; Fri, 8 Jan 2021 09:53:43 +0000 (UTC) IronPort-SDR: sSE/ZMGlszaxAh6nwBwiQzQiEJYoh66iTY7yOUO1K8NRYqF77ztR2n3C6U9GYDD5G0dNy3xW0J U47ZrhQnvg1g== X-IronPort-AV: E=McAfee;i="6000,8403,9857"; a="262342619" X-IronPort-AV: E=Sophos;i="5.79,330,1602572400"; d="scan'208";a="262342619" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jan 2021 01:53:42 -0800 IronPort-SDR: kxvpD6SuAHpZwQcZzq5yzXH1bOlVsNGug4s2sOgxFwtjo0Sn63sVbdzfq6HC8kYbNad+FLaUxg nqUEQtdn2MMg== X-IronPort-AV: E=Sophos;i="5.79,330,1602572400"; d="scan'208";a="380073530" Received: from helsinki.fi.intel.com ([10.237.66.162]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jan 2021 01:53:39 -0800 From: Gwan-gyeong Mun To: intel-gfx@lists.freedesktop.org Date: Fri, 8 Jan 2021 11:53:14 +0200 Message-Id: <20210108095315.1636814-1-gwan-gyeong.mun@intel.com> X-Mailer: git-send-email 2.25.0 MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v11 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 djk6IEZpeCBjb21taXQgbWVzc2FnZQp2MTA6IFJlYmFzZWQKVjExOiBBZGRyZXNzIEpvc2UncyBy ZXZpZXcgY29tbWVudC4KICAtIFJlb3JkZXIgY2FsbGluZyBvcmRlciBvZiBpbnRlbF9wc3IyX3By b2dyYW1fdHJhbnNfbWFuX3Rya19jdGwoKS4KICAtIEluIG9yZGVyIHRvIHJlZHVjZSBjaGFuZ2Vz IGtlZXAgdGhlIG9sZCBuYW1lIGZvciBkcm1faTkxNV9wcml2YXRlLgogIC0gQ2hhbmdlIHJlc3Ry aWN0aW9ucyBvZiBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgUFNSLgoKU2lnbmVkLW9mZi1ieTogR3dh bi1neWVvbmcgTXVuIDxnd2FuLWd5ZW9uZy5tdW5AaW50ZWwuY29tPgpDYzogSm9zw6kgUm9iZXJ0 byBkZSBTb3V6YSA8am9zZS5zb3V6YUBpbnRlbC5jb20+CkNjOiBKdWhhLVBla2thIEhlaWtraWxh IDxqdWhhcGVra2EuaGVpa2tpbGFAZ21haWwuY29tPgpDYzogQW5zaHVtYW4gR3VwdGEgPGFuc2h1 bWFuLmd1cHRhQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IEFuc2h1bWFuIEd1cHRhIDxhbnNodW1h bi5ndXB0YUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kZGkuYyAgICAgIHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGlzcGxheS5jICB8ICAgNCAtCiAuLi4vZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2Rl YnVnZnMuYyAgfCAxMTEgKystLQogLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90 eXBlcy5oICAgIHwgIDM4ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rw LmMgICAgICAgfCAgMjMgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNy LmMgICAgICB8IDU2OCArKysrKysrKysrLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfcHNyLmggICAgICB8ICAxNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9zcHJpdGUuYyAgIHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oICAgICAgICAgICAgICAgfCAgMzggLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf aXJxLmMgICAgICAgICAgICAgICB8ICA0OSArLQogMTAgZmlsZXMgY2hhbmdlZCwgNDgzIGluc2Vy dGlvbnMoKyksIDM3MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kZGkuYwppbmRleCAzZGY2OTEzMzY5YmMuLjdiZjg2ZDQzOWM2NiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCkBAIC00MzYxLDYgKzQzNjEsOSBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9kZGlfdXBkYXRlX3BpcGVfZHAoc3RydWN0IGludGVsX2F0b21pY19zdGF0 ZSAqc3RhdGUsCiAJaW50ZWxfZGRpX3NldF9kcF9tc2EoY3J0Y19zdGF0ZSwgY29ubl9zdGF0ZSk7 CiAKIAlpbnRlbF9wc3JfdXBkYXRlKGludGVsX2RwLCBjcnRjX3N0YXRlLCBjb25uX3N0YXRlKTsK KwkvL1RPRE86IG1vdmUgUFNSIHJlbGF0ZWQgZnVuY3Rpb25zIGludG8gaW50ZWxfcHNyX3VwZGF0 ZSgpCisJaW50ZWxfcHNyMl9wcm9ncmFtX3RyYW5zX21hbl90cmtfY3RsKGludGVsX2RwLCBjcnRj X3N0YXRlKTsKKwogCWludGVsX2RwX3NldF9pbmZvZnJhbWVzKGVuY29kZXIsIHRydWUsIGNydGNf c3RhdGUsIGNvbm5fc3RhdGUpOwogCWludGVsX2VkcF9kcnJzX3VwZGF0ZShpbnRlbF9kcCwgY3J0 Y19zdGF0ZSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5 LmMKaW5kZXggMDE4OWQzNzlhNTVlLi5jYjExZjRjNDIxNzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCkBAIC0xNDg0MSw4ICsxNDg0MSw2IEBAIHN0 YXRpYyB2b2lkIGNvbW1pdF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpz dGF0ZSwKIAogCQlpZiAobmV3X2NydGNfc3RhdGUtPnVwZGF0ZV9waXBlKQogCQkJaW50ZWxfcGlw ZV9mYXN0c2V0KG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSk7Ci0KLQkJaW50ZWxfcHNy Ml9wcm9ncmFtX3RyYW5zX21hbl90cmtfY3RsKG5ld19jcnRjX3N0YXRlKTsKIAl9CiAKIAlpZiAo ZGV2X3ByaXYtPmRpc3BsYXkuYXRvbWljX3VwZGF0ZV93YXRlcm1hcmtzKQpAQCAtMTYzNjgsOCAr MTYzNjYsNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zZXR1cF9vdXRwdXRzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKIAkJaW50ZWxfZHZvX2luaXQoZGV2X3ByaXYpOwogCX0KIAot CWludGVsX3Bzcl9pbml0KGRldl9wcml2KTsKLQogCWZvcl9lYWNoX2ludGVsX2VuY29kZXIoJmRl dl9wcml2LT5kcm0sIGVuY29kZXIpIHsKIAkJZW5jb2Rlci0+YmFzZS5wb3NzaWJsZV9jcnRjcyA9 CiAJCQlpbnRlbF9lbmNvZGVyX3Bvc3NpYmxlX2NydGNzKGVuY29kZXIpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2RlYnVnZnMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9kZWJ1Z2ZzLmMKaW5kZXgg Y2Q3ZTU1MTllZTdkLi4wNDEwNTMxNjdkN2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2RlYnVnZnMuYwpAQCAtMjQ5LDE4ICsyNDksMTcg QEAgc3RhdGljIGludCBpOTE1X3Bzcl9zaW5rX3N0YXR1c19zaG93KHN0cnVjdCBzZXFfZmlsZSAq bSwgdm9pZCAqZGF0YSkKIAkJInNpbmsgaW50ZXJuYWwgZXJyb3IiLAogCX07CiAJc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciA9IG0tPnByaXZhdGU7Ci0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmRldik7CiAJc3RydWN0IGludGVs X2RwICppbnRlbF9kcCA9CiAJCWludGVsX2F0dGFjaGVkX2RwKHRvX2ludGVsX2Nvbm5lY3Rvcihj b25uZWN0b3IpKTsKIAlpbnQgcmV0OwogCi0JaWYgKCFDQU5fUFNSKGRldl9wcml2KSkgewotCQlz ZXFfcHV0cyhtLCAiUFNSIFVuc3VwcG9ydGVkXG4iKTsKKwlpZiAoY29ubmVjdG9yLT5zdGF0dXMg IT0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQpCiAJCXJldHVybiAtRU5PREVWOwotCX0KIAot CWlmIChjb25uZWN0b3ItPnN0YXR1cyAhPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCkKKwlp ZiAoIUNBTl9QU1IoaW50ZWxfZHApKSB7CisJCXNlcV9wdXRzKG0sICJQU1IgVW5zdXBwb3J0ZWRc biIpOwogCQlyZXR1cm4gLUVOT0RFVjsKKwl9CiAKIAlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkYigm aW50ZWxfZHAtPmF1eCwgRFBfUFNSX1NUQVRVUywgJnZhbCk7CiAKQEAgLTI4MCwxMiArMjc5LDEz IEBAIHN0YXRpYyBpbnQgaTkxNV9wc3Jfc2lua19zdGF0dXNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIHZvaWQgKmRhdGEpCiBERUZJTkVfU0hPV19BVFRSSUJVVEUoaTkxNV9wc3Jfc2lua19zdGF0 dXMpOwogCiBzdGF0aWMgdm9pZAotcHNyX3NvdXJjZV9zdGF0dXMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCitwc3Jfc291cmNlX3N0YXR1cyhz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCiB7CiAJdTMyIHZh bCwgc3RhdHVzX3ZhbDsKIAljb25zdCBjaGFyICpzdGF0dXMgPSAidW5rbm93biI7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7CiAKLQlp ZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQpIHsKKwlpZiAoaW50ZWxfZHAtPnBzci5wc3Iy X2VuYWJsZWQpIHsKIAkJc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBsaXZlX3N0YXR1c1tdID0g ewogCQkJIklETEUiLAogCQkJIkNBUFRVUkUiLApAQCAtMzAwLDcgKzMwMCw3IEBAIHBzcl9zb3Vy Y2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgc3RydWN0IHNlcV9m aWxlICptKQogCQkJIlRHX09OIgogCQl9OwogCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2 LAotCQkJCSAgICBFRFBfUFNSMl9TVEFUVVMoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSk7CisJ CQkJICAgIEVEUF9QU1IyX1NUQVRVUyhpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpKTsKIAkJc3Rh dHVzX3ZhbCA9ICh2YWwgJiBFRFBfUFNSMl9TVEFUVVNfU1RBVEVfTUFTSykgPj4KIAkJCSAgICAg IEVEUF9QU1IyX1NUQVRVU19TVEFURV9TSElGVDsKIAkJaWYgKHN0YXR1c192YWwgPCBBUlJBWV9T SVpFKGxpdmVfc3RhdHVzKSkKQEAgLTMxNyw3ICszMTcsNyBAQCBwc3Jfc291cmNlX3N0YXR1cyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHN0cnVjdCBzZXFfZmlsZSAqbSkKIAkJ CSJTUkRFTlRfT04iLAogCQl9OwogCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LAotCQkJ CSAgICBFRFBfUFNSX1NUQVRVUyhkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKTsKKwkJCQkgICAg RURQX1BTUl9TVEFUVVMoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSk7CiAJCXN0YXR1c192YWwg PSAodmFsICYgRURQX1BTUl9TVEFUVVNfU1RBVEVfTUFTSykgPj4KIAkJCSAgICAgIEVEUF9QU1Jf U1RBVFVTX1NUQVRFX1NISUZUOwogCQlpZiAoc3RhdHVzX3ZhbCA8IEFSUkFZX1NJWkUobGl2ZV9z dGF0dXMpKQpAQCAtMzI3LDIxICszMjcsMTggQEAgcHNyX3NvdXJjZV9zdGF0dXMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCiAJc2VxX3ByaW50 ZihtLCAiU291cmNlIFBTUiBzdGF0dXM6ICVzIFsweCUwOHhdXG4iLCBzdGF0dXMsIHZhbCk7CiB9 CiAKLXN0YXRpYyBpbnQgaTkxNV9lZHBfcHNyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZv aWQgKmRhdGEpCitzdGF0aWMgaW50IGludGVsX3Bzcl9zdGF0dXMoc3RydWN0IHNlcV9maWxlICpt LCBzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKLQlzdHJ1Y3QgaTkxNV9wc3Ig KnBzciA9ICZkZXZfcHJpdi0+cHNyOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOworCXN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZpbnRl bF9kcC0+cHNyOwogCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwogCWNvbnN0IGNoYXIgKnN0YXR1 czsKIAlib29sIGVuYWJsZWQ7CiAJdTMyIHZhbDsKIAotCWlmICghSEFTX1BTUihkZXZfcHJpdikp Ci0JCXJldHVybiAtRU5PREVWOwotCiAJc2VxX3ByaW50ZihtLCAiU2luayBzdXBwb3J0OiAlcyIs IHllc25vKHBzci0+c2lua19zdXBwb3J0KSk7Ci0JaWYgKHBzci0+ZHApCi0JCXNlcV9wcmludGYo bSwgIiBbMHglMDJ4XSIsIHBzci0+ZHAtPnBzcl9kcGNkWzBdKTsKKwlpZiAocHNyLT5zaW5rX3N1 cHBvcnQpCisJCXNlcV9wcmludGYobSwgIiBbMHglMDJ4XSIsIGludGVsX2RwLT5wc3JfZHBjZFsw XSk7CiAJc2VxX3B1dHMobSwgIlxuIik7CiAKIAlpZiAoIXBzci0+c2lua19zdXBwb3J0KQpAQCAt MzY1LDE2ICszNjIsMTYgQEAgc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBz ZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAogCWlmIChwc3ItPnBzcjJfZW5hYmxlZCkgewogCQl2 YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LAotCQkJCSAgICBFRFBfUFNSMl9DVEwoZGV2X3By aXYtPnBzci50cmFuc2NvZGVyKSk7CisJCQkJICAgIEVEUF9QU1IyX0NUTChpbnRlbF9kcC0+cHNy LnRyYW5zY29kZXIpKTsKIAkJZW5hYmxlZCA9IHZhbCAmIEVEUF9QU1IyX0VOQUJMRTsKIAl9IGVs c2UgewogCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LAotCQkJCSAgICBFRFBfUFNSX0NU TChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKTsKKwkJCQkgICAgRURQX1BTUl9DVEwoaW50ZWxf ZHAtPnBzci50cmFuc2NvZGVyKSk7CiAJCWVuYWJsZWQgPSB2YWwgJiBFRFBfUFNSX0VOQUJMRTsK IAl9CiAJc2VxX3ByaW50ZihtLCAiU291cmNlIFBTUiBjdGw6ICVzIFsweCUwOHhdXG4iLAogCQkg ICBlbmFibGVkZGlzYWJsZWQoZW5hYmxlZCksIHZhbCk7Ci0JcHNyX3NvdXJjZV9zdGF0dXMoZGV2 X3ByaXYsIG0pOworCXBzcl9zb3VyY2Vfc3RhdHVzKGludGVsX2RwLCBtKTsKIAlzZXFfcHJpbnRm KG0sICJCdXN5IGZyb250YnVmZmVyIGJpdHM6IDB4JTA4eFxuIiwKIAkJICAgcHNyLT5idXN5X2Zy b250YnVmZmVyX2JpdHMpOwogCkBAIC0zODMsNyArMzgwLDcgQEAgc3RhdGljIGludCBpOTE1X2Vk cF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAkgKi8KIAlpZiAo SVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewogCQl2YWwg PSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LAotCQkJCSAgICBFRFBfUFNSX1BFUkZfQ05UKGRldl9w cml2LT5wc3IudHJhbnNjb2RlcikpOworCQkJCSAgICBFRFBfUFNSX1BFUkZfQ05UKGludGVsX2Rw LT5wc3IudHJhbnNjb2RlcikpOwogCQl2YWwgJj0gRURQX1BTUl9QRVJGX0NOVF9NQVNLOwogCQlz ZXFfcHJpbnRmKG0sICJQZXJmb3JtYW5jZSBjb3VudGVyOiAldVxuIiwgdmFsKTsKIAl9CkBAIC00 MDQsNyArNDAxLDcgQEAgc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFf ZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAkJICovCiAJCWZvciAoZnJhbWUgPSAwOyBmcmFtZSA8IFBT UjJfU1VfU1RBVFVTX0ZSQU1FUzsgZnJhbWUgKz0gMykgewogCQkJdmFsID0gaW50ZWxfZGVfcmVh ZChkZXZfcHJpdiwKLQkJCQkJICAgIFBTUjJfU1VfU1RBVFVTKGRldl9wcml2LT5wc3IudHJhbnNj b2RlciwgZnJhbWUpKTsKKwkJCQkJICAgIFBTUjJfU1VfU1RBVFVTKGludGVsX2RwLT5wc3IudHJh bnNjb2RlciwgZnJhbWUpKTsKIAkJCXN1X2ZyYW1lc192YWxbZnJhbWUgLyAzXSA9IHZhbDsKIAkJ fQogCkBAIC00MzAsMjMgKzQyNyw1NyBAQCBzdGF0aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMo c3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogCXJldHVybiAwOwogfQogCitzdGF0aWMg aW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQor eworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5w cml2YXRlKTsKKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKKwlzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwID0gTlVMTDsKKworCWlmICghSEFTX1BTUihkZXZfcHJpdikpCisJCXJldHVy biAtRU5PREVWOworCisJLyogRmluZCB0aGUgZmlyc3QgRURQICovCisJZm9yX2VhY2hfaW50ZWxf ZHAoJmRldl9wcml2LT5kcm0sIGVuY29kZXIpIHsKKwkJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5U RUxfT1VUUFVUX0VEUCkgeworCQkJaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7 CisJCQlicmVhazsKKwkJfQorCX0KKworCWlmICghaW50ZWxfZHApCisJCXJldHVybiAtRU5PREVW OworCisJcmV0dXJuIGludGVsX3Bzcl9zdGF0dXMobSwgaW50ZWxfZHApOworfQorCiBzdGF0aWMg aW50CiBpOTE1X2VkcF9wc3JfZGVidWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCiB7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGF0YTsKIAlpbnRlbF93YWtlcmVmX3Qg d2FrZXJlZjsKLQlpbnQgcmV0OworCWludCByZXQgPSAtRU5PREVWOworCXN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyOwogCi0JaWYgKCFDQU5fUFNSKGRldl9wcml2KSkKLQkJcmV0dXJuIC1F Tk9ERVY7CisJaWYgKCFIQVNfUFNSKGRldl9wcml2KSkKKwkJcmV0dXJuIHJldDsKIAotCWRybV9k Ymdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiU2V0dGluZyBQU1IgZGVidWcgdG8gJWxseFxuIiwgdmFs KTsKKwlmb3JfZWFjaF9pbnRlbF9kcCgmZGV2X3ByaXYtPmRybSwgZW5jb2RlcikgeworCQlzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOwogCi0Jd2Fr ZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KCZkZXZfcHJpdi0+cnVudGltZV9wbSk7CisJCWlm ICghQ0FOX1BTUihpbnRlbF9kcCkpCisJCQljb250aW51ZTsKIAotCXJldCA9IGludGVsX3Bzcl9k ZWJ1Z19zZXQoZGV2X3ByaXYsIHZhbCk7CisJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09V VFBVVF9FRFApIHsKKwkJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiU2V0dGluZyBQU1Ig ZGVidWcgdG8gJWxseFxuIiwgdmFsKTsKIAotCWludGVsX3J1bnRpbWVfcG1fcHV0KCZkZXZfcHJp di0+cnVudGltZV9wbSwgd2FrZXJlZik7CisJCQl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9n ZXQoJmRldl9wcml2LT5ydW50aW1lX3BtKTsKKworCQkJLy8gVE9ETzogc3BsaXQgdG8gZWFjaCB0 cmFuc2NvZGVyJ3MgUFNSIGRlYnVnIHN0YXRlCisJCQlyZXQgPSBpbnRlbF9wc3JfZGVidWdfc2V0 KGludGVsX2RwLCB2YWwpOworCisJCQlpbnRlbF9ydW50aW1lX3BtX3B1dCgmZGV2X3ByaXYtPnJ1 bnRpbWVfcG0sIHdha2VyZWYpOworCQl9CisJfQogCiAJcmV0dXJuIHJldDsKIH0KQEAgLTQ1NSwx MiArNDg2LDI1IEBAIHN0YXRpYyBpbnQKIGk5MTVfZWRwX3Bzcl9kZWJ1Z19nZXQodm9pZCAqZGF0 YSwgdTY0ICp2YWwpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGF0 YTsKKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKIAotCWlmICghQ0FOX1BTUihkZXZf cHJpdikpCisJaWYgKCFIQVNfUFNSKGRldl9wcml2KSkKIAkJcmV0dXJuIC1FTk9ERVY7CiAKLQkq dmFsID0gUkVBRF9PTkNFKGRldl9wcml2LT5wc3IuZGVidWcpOwotCXJldHVybiAwOworCWZvcl9l YWNoX2ludGVsX2RwKCZkZXZfcHJpdi0+ZHJtLCBlbmNvZGVyKSB7CisJCXN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7CisKKwkJaWYgKCFDQU5fUFNS KGludGVsX2RwKSkKKwkJCWNvbnRpbnVlOworCisJCS8vIFRPRE86IHNwbGl0IHRvIGVhY2ggdHJh bnNjb2RlcidzIFBTUiBkZWJ1ZyBzdGF0ZQorCQlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9P VVRQVVRfRURQKSB7CisJCQkqdmFsID0gUkVBRF9PTkNFKGludGVsX2RwLT5wc3IuZGVidWcpOwor CQkJcmV0dXJuIDA7CisJCX0KKwl9CisKKwlyZXR1cm4gLUVOT0RFVjsKIH0KIAogREVGSU5FX1NJ TVBMRV9BVFRSSUJVVEUoaTkxNV9lZHBfcHNyX2RlYnVnX2ZvcHMsCkBAIC0xMjM0LDkgKzEyNzgs NiBAQCBzdGF0aWMgdm9pZCBkcnJzX3N0YXR1c19wZXJfY3J0YyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0s CiAJCS8qIGRpc2FibGVfZHJycygpIHdpbGwgbWFrZSBkcnJzLT5kcCBOVUxMICovCiAJCWlmICgh ZHJycy0+ZHApIHsKIAkJCXNlcV9wdXRzKG0sICJJZGxlbmVzcyBEUlJTOiBEaXNhYmxlZFxuIik7 Ci0JCQlpZiAoZGV2X3ByaXYtPnBzci5lbmFibGVkKQotCQkJCXNlcV9wdXRzKG0sCi0JCQkJIlx0 QXMgUFNSIGlzIGVuYWJsZWQsIERSUlMgaXMgbm90IGVuYWJsZWRcbiIpOwogCQkJbXV0ZXhfdW5s b2NrKCZkcnJzLT5tdXRleCk7CiAJCQlyZXR1cm47CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgKaW5kZXggMTA2N2JkMDczYzk1 Li5lMmY3MTg1OGUwYmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGlzcGxheV90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGlzcGxheV90eXBlcy5oCkBAIC0xMzQ0LDYgKzEzNDQsNDIgQEAgc3RydWN0IGludGVs X2RwX3Bjb25fZnJsIHsKIAlpbnQgdHJhaW5lZF9yYXRlX2dicHM7CiB9OwogCitzdHJ1Y3QgaW50 ZWxfcHNyIHsKKwkvKiBNdXRleCBmb3IgUFNSIHN0YXRlIG9mIHRoZSB0cmFuc2NvZGVyICovCisJ c3RydWN0IG11dGV4IGxvY2s7CisKKyNkZWZpbmUgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLCTB4 MGYKKyNkZWZpbmUgSTkxNV9QU1JfREVCVUdfREVGQVVMVAkJMHgwMAorI2RlZmluZSBJOTE1X1BT Ul9ERUJVR19ESVNBQkxFCQkweDAxCisjZGVmaW5lIEk5MTVfUFNSX0RFQlVHX0VOQUJMRQkJMHgw MgorI2RlZmluZSBJOTE1X1BTUl9ERUJVR19GT1JDRV9QU1IxCTB4MDMKKyNkZWZpbmUgSTkxNV9Q U1JfREVCVUdfSVJRCQkweDEwCisKKwl1MzIgZGVidWc7CisJYm9vbCBzaW5rX3N1cHBvcnQ7CisJ Ym9vbCBlbmFibGVkOworCWVudW0gcGlwZSBwaXBlOworCWVudW0gdHJhbnNjb2RlciB0cmFuc2Nv ZGVyOworCWJvb2wgYWN0aXZlOworCXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOworCXVuc2lnbmVk IGludCBidXN5X2Zyb250YnVmZmVyX2JpdHM7CisJYm9vbCBzaW5rX3BzcjJfc3VwcG9ydDsKKwli b29sIGxpbmtfc3RhbmRieTsKKwlib29sIGNvbG9yaW1ldHJ5X3N1cHBvcnQ7CisJYm9vbCBwc3Iy X2VuYWJsZWQ7CisJYm9vbCBwc3IyX3NlbF9mZXRjaF9lbmFibGVkOworCXU4IHNpbmtfc3luY19s YXRlbmN5OworCWt0aW1lX3QgbGFzdF9lbnRyeV9hdHRlbXB0OworCWt0aW1lX3QgbGFzdF9leGl0 OworCWJvb2wgc2lua19ub3RfcmVsaWFibGU7CisJYm9vbCBpcnFfYXV4X2Vycm9yOworCXUxNiBz dV94X2dyYW51bGFyaXR5OworCWJvb2wgZGMzY29fZW5hYmxlZDsKKwl1MzIgZGMzY29fZXhpdF9k ZWxheTsKKwlzdHJ1Y3QgZGVsYXllZF93b3JrIGRjM2NvX3dvcms7CisJc3RydWN0IGRybV9kcF92 c2Nfc2RwIHZzYzsKK307CisKIHN0cnVjdCBpbnRlbF9kcCB7CiAJaTkxNV9yZWdfdCBvdXRwdXRf cmVnOwogCXUzMiBEUDsKQEAgLTE0NzMsNiArMTUwOSw4IEBAIHN0cnVjdCBpbnRlbF9kcCB7CiAJ Ym9vbCBob2JsX2FjdGl2ZTsKIAogCXN0cnVjdCBpbnRlbF9kcF9wY29uX2ZybCBmcmw7CisKKwlz dHJ1Y3QgaW50ZWxfcHNyIHBzcjsKIH07CiAKIGVudW0gbHNwY29uX3ZlbmRvciB7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMKaW5kZXggOGEwMGU2MDkwODVmLi42NDJhY2Fl ODdjZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMKQEAgLTI3Mjks MTIgKzI3MjksMTAgQEAgdm9pZCBpbnRlbF9kcF9jb21wdXRlX3Bzcl92c2Nfc2RwKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsCiAJCQkJICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0 ZSAqY29ubl9zdGF0ZSwKIAkJCQkgIHN0cnVjdCBkcm1fZHBfdnNjX3NkcCAqdnNjKQogewotCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwot CiAJdnNjLT5zZHBfdHlwZSA9IERQX1NEUF9WU0M7CiAKLQlpZiAoZGV2X3ByaXYtPnBzci5wc3Iy X2VuYWJsZWQpIHsKLQkJaWYgKGRldl9wcml2LT5wc3IuY29sb3JpbWV0cnlfc3VwcG9ydCAmJgor CWlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkgeworCQlpZiAoaW50ZWxfZHAtPnBzci5j b2xvcmltZXRyeV9zdXBwb3J0ICYmCiAJCSAgICBpbnRlbF9kcF9uZWVkc192c2Nfc2RwKGNydGNf c3RhdGUsIGNvbm5fc3RhdGUpKSB7CiAJCQkvKiBbUFNSMiwgK0NvbG9yaW1ldHJ5XSAqLwogCQkJ aW50ZWxfZHBfY29tcHV0ZV92c2NfY29sb3JpbWV0cnkoY3J0Y19zdGF0ZSwgY29ubl9zdGF0ZSwK QEAgLTM4OTgsNyArMzg5Niw3IEBAIGJvb2wgaW50ZWxfZHBfaW5pdGlhbF9mYXN0c2V0X2NoZWNr KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQlyZXR1cm4gZmFsc2U7CiAJfQogCi0J aWYgKENBTl9QU1IoaTkxNSkgJiYgaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkgeworCWlmIChD QU5fUFNSKGludGVsX2RwKSAmJiBpbnRlbF9kcF9pc19lZHAoaW50ZWxfZHApKSB7CiAJCWRybV9k Ymdfa21zKCZpOTE1LT5kcm0sICJGb3JjaW5nIGZ1bGwgbW9kZXNldCB0byBjb21wdXRlIFBTUiBz dGF0ZVxuIik7CiAJCWNydGNfc3RhdGUtPnVhcGkubW9kZV9jaGFuZ2VkID0gdHJ1ZTsKIAkJcmV0 dXJuIGZhbHNlOwpAQCAtODUxMCw2ICs4NTA4LDE3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RwX21v ZGVzZXRfcmV0cnlfd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJZHJtX2ttc19o ZWxwZXJfaG90cGx1Z19ldmVudChjb25uZWN0b3ItPmRldik7CiB9CiAKK3N0YXRpYyB2b2lkIGlu dGVsX2RwX3VwZGF0ZV9waXBlKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAorCQkJ CSBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCQkgY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQkJIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlICpjb25uX3N0YXRlKQoreworCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNf dG9faW50ZWxfZHAoZW5jb2Rlcik7CisKKwlpbnRlbF9wYW5lbF91cGRhdGVfYmFja2xpZ2h0KHN0 YXRlLCBlbmNvZGVyLCBjcnRjX3N0YXRlLCBjb25uX3N0YXRlKTsKKwlpbnRlbF9wc3IyX3Byb2dy YW1fdHJhbnNfbWFuX3Rya19jdGwoaW50ZWxfZHAsIGNydGNfc3RhdGUpOworfQorCiBib29sCiBp bnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9y dCwKIAkJCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKQEAgLTg2Mjcs NiArODYzNiw4IEBAIGludGVsX2RwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFs X3BvcnQgKmRpZ19wb3J0LAogCWludGVsX2RwLT5mcmwuaXNfdHJhaW5lZCA9IGZhbHNlOwogCWlu dGVsX2RwLT5mcmwudHJhaW5lZF9yYXRlX2dicHMgPSAwOwogCisJaW50ZWxfcHNyX2luaXQoaW50 ZWxfZHApOworCiAJcmV0dXJuIHRydWU7CiAKIGZhaWw6CkBAIC04NjY4LDcgKzg2NzksNyBAQCBi b29sIGludGVsX2RwX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWlu dGVsX2VuY29kZXItPmdldF9jb25maWcgPSBpbnRlbF9kcF9nZXRfY29uZmlnOwogCWludGVsX2Vu Y29kZXItPnN5bmNfc3RhdGUgPSBpbnRlbF9kcF9zeW5jX3N0YXRlOwogCWludGVsX2VuY29kZXIt PmluaXRpYWxfZmFzdHNldF9jaGVjayA9IGludGVsX2RwX2luaXRpYWxfZmFzdHNldF9jaGVjazsK LQlpbnRlbF9lbmNvZGVyLT51cGRhdGVfcGlwZSA9IGludGVsX3BhbmVsX3VwZGF0ZV9iYWNrbGln aHQ7CisJaW50ZWxfZW5jb2Rlci0+dXBkYXRlX3BpcGUgPSBpbnRlbF9kcF91cGRhdGVfcGlwZTsK IAlpbnRlbF9lbmNvZGVyLT5zdXNwZW5kID0gaW50ZWxfZHBfZW5jb2Rlcl9zdXNwZW5kOwogCWlu dGVsX2VuY29kZXItPnNodXRkb3duID0gaW50ZWxfZHBfZW5jb2Rlcl9zaHV0ZG93bjsKIAlpZiAo SVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX3Bzci5jCmluZGV4IGMyNGFlNjk0MjZjZi4uNDFlN2NjNDQ4OTdkIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMKQEAgLTc5LDkgKzc5LDExIEBACiAgKiB1c2Ug cGFnZSBmbGlwcy4KICAqLwogCi1zdGF0aWMgYm9vbCBwc3JfZ2xvYmFsX2VuYWJsZWQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCitzdGF0aWMgYm9vbCBwc3JfZ2xvYmFsX2VuYWJsZWQo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsKLQlzd2l0Y2ggKGk5MTUtPnBzci5kZWJ1ZyAm IEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSykgeworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7CisKKwlzd2l0Y2ggKGludGVsX2RwLT5wc3IuZGVi dWcgJiBJOTE1X1BTUl9ERUJVR19NT0RFX01BU0spIHsKIAljYXNlIEk5MTVfUFNSX0RFQlVHX0RF RkFVTFQ6CiAJCXJldHVybiBpOTE1LT5wYXJhbXMuZW5hYmxlX3BzcjsKIAljYXNlIEk5MTVfUFNS X0RFQlVHX0RJU0FCTEU6CkBAIC05MSw5ICs5Myw5IEBAIHN0YXRpYyBib29sIHBzcl9nbG9iYWxf ZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAl9CiB9CiAKLXN0YXRpYyBi b29sIHBzcjJfZ2xvYmFsX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQorc3RhdGljIGJvb2wgcHNyMl9nbG9iYWxfZW5hYmxlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKQogewotCXN3aXRjaCAoZGV2X3ByaXYtPnBzci5kZWJ1ZyAmIEk5MTVfUFNSX0RFQlVHX01P REVfTUFTSykgeworCXN3aXRjaCAoaW50ZWxfZHAtPnBzci5kZWJ1ZyAmIEk5MTVfUFNSX0RFQlVH X01PREVfTUFTSykgewogCWNhc2UgSTkxNV9QU1JfREVCVUdfRElTQUJMRToKIAljYXNlIEk5MTVf UFNSX0RFQlVHX0ZPUkNFX1BTUjE6CiAJCXJldHVybiBmYWxzZTsKQEAgLTEwMiwxMSArMTA0LDEy IEBAIHN0YXRpYyBib29sIHBzcjJfZ2xvYmFsX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCX0KIH0KIAotc3RhdGljIHZvaWQgcHNyX2lycV9jb250cm9sKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyB2b2lkIHBzcl9pcnFfY29udHJv bChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogewogCWVudW0gdHJhbnNjb2RlciB0cmFuc19z aGlmdDsKIAl1MzIgbWFzaywgdmFsOwogCWk5MTVfcmVnX3QgaW1yX3JlZzsKKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKIAogCS8qCiAJ ICogZ2VuMTIrIGhhcyByZWdpc3RlcnMgcmVsYXRpdmUgdG8gdHJhbnNjb2RlciBhbmQgb25lIHBl ciB0cmFuc2NvZGVyCkBAIC0xMTUsMTQgKzExOCwxNCBAQCBzdGF0aWMgdm9pZCBwc3JfaXJxX2Nv bnRyb2woc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCSAqLwogCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDEyKSB7CiAJCXRyYW5zX3NoaWZ0ID0gMDsKLQkJaW1yX3JlZyA9 IFRSQU5TX1BTUl9JTVIoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKTsKKwkJaW1yX3JlZyA9IFRS QU5TX1BTUl9JTVIoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKTsKIAl9IGVsc2UgewotCQl0cmFu c19zaGlmdCA9IGRldl9wcml2LT5wc3IudHJhbnNjb2RlcjsKKwkJdHJhbnNfc2hpZnQgPSBpbnRl bF9kcC0+cHNyLnRyYW5zY29kZXI7CiAJCWltcl9yZWcgPSBFRFBfUFNSX0lNUjsKIAl9CiAKIAlt YXNrID0gRURQX1BTUl9FUlJPUih0cmFuc19zaGlmdCk7Ci0JaWYgKGRldl9wcml2LT5wc3IuZGVi dWcgJiBJOTE1X1BTUl9ERUJVR19JUlEpCisJaWYgKGludGVsX2RwLT5wc3IuZGVidWcgJiBJOTE1 X1BTUl9ERUJVR19JUlEpCiAJCW1hc2sgfD0gRURQX1BTUl9QT1NUX0VYSVQodHJhbnNfc2hpZnQp IHwKIAkJCUVEUF9QU1JfUFJFX0VOVFJZKHRyYW5zX3NoaWZ0KTsKIApAQCAtMTcxLDMwICsxNzQs MzEgQEAgc3RhdGljIHZvaWQgcHNyX2V2ZW50X3ByaW50KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1LAogCQlkcm1fZGJnX2ttcygmaTkxNS0+ZHJtLCAiXHRQU1IgZGlzYWJsZWRcbiIpOwog fQogCi12b2lkIGludGVsX3Bzcl9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsIHUzMiBwc3JfaWlyKQordm9pZCBpbnRlbF9wc3JfaXJxX2hhbmRsZXIoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCwgdTMyIHBzcl9paXIpCiB7Ci0JZW51bSB0cmFuc2NvZGVyIGNw dV90cmFuc2NvZGVyID0gZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyOworCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOworCWVudW0gdHJhbnNj b2RlciBjcHVfdHJhbnNjb2RlciA9IGludGVsX2RwLT5wc3IudHJhbnNjb2RlcjsKIAllbnVtIHRy YW5zY29kZXIgdHJhbnNfc2hpZnQ7CiAJaTkxNV9yZWdfdCBpbXJfcmVnOwogCWt0aW1lX3QgdGlt ZV9ucyA9ICBrdGltZV9nZXQoKTsKIAogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyKSB7 CiAJCXRyYW5zX3NoaWZ0ID0gMDsKLQkJaW1yX3JlZyA9IFRSQU5TX1BTUl9JTVIoZGV2X3ByaXYt PnBzci50cmFuc2NvZGVyKTsKKwkJaW1yX3JlZyA9IFRSQU5TX1BTUl9JTVIoaW50ZWxfZHAtPnBz ci50cmFuc2NvZGVyKTsKIAl9IGVsc2UgewotCQl0cmFuc19zaGlmdCA9IGRldl9wcml2LT5wc3Iu dHJhbnNjb2RlcjsKKwkJdHJhbnNfc2hpZnQgPSBpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXI7CiAJ CWltcl9yZWcgPSBFRFBfUFNSX0lNUjsKIAl9CiAKIAlpZiAocHNyX2lpciAmIEVEUF9QU1JfUFJF X0VOVFJZKHRyYW5zX3NoaWZ0KSkgewotCQlkZXZfcHJpdi0+cHNyLmxhc3RfZW50cnlfYXR0ZW1w dCA9IHRpbWVfbnM7CisJCWludGVsX2RwLT5wc3IubGFzdF9lbnRyeV9hdHRlbXB0ID0gdGltZV9u czsKIAkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sCiAJCQkgICAgIlt0cmFuc2NvZGVyICVz XSBQU1IgZW50cnkgYXR0ZW1wdCBpbiAyIHZibGFua3NcbiIsCiAJCQkgICAgdHJhbnNjb2Rlcl9u YW1lKGNwdV90cmFuc2NvZGVyKSk7CiAJfQogCiAJaWYgKHBzcl9paXIgJiBFRFBfUFNSX1BPU1Rf RVhJVCh0cmFuc19zaGlmdCkpIHsKLQkJZGV2X3ByaXYtPnBzci5sYXN0X2V4aXQgPSB0aW1lX25z OworCQlpbnRlbF9kcC0+cHNyLmxhc3RfZXhpdCA9IHRpbWVfbnM7CiAJCWRybV9kYmdfa21zKCZk ZXZfcHJpdi0+ZHJtLAogCQkJICAgICJbdHJhbnNjb2RlciAlc10gUFNSIGV4aXQgY29tcGxldGVk XG4iLAogCQkJICAgIHRyYW5zY29kZXJfbmFtZShjcHVfdHJhbnNjb2RlcikpOwpAQCAtMjAyLDcg KzIwNiw3IEBAIHZvaWQgaW50ZWxfcHNyX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdTMyIHBzcl9paXIpCiAJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDkpIHsKIAkJCXUzMiB2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LAogCQkJCQkJUFNSX0VW RU5UKGNwdV90cmFuc2NvZGVyKSk7Ci0JCQlib29sIHBzcjJfZW5hYmxlZCA9IGRldl9wcml2LT5w c3IucHNyMl9lbmFibGVkOworCQkJYm9vbCBwc3IyX2VuYWJsZWQgPSBpbnRlbF9kcC0+cHNyLnBz cjJfZW5hYmxlZDsKIAogCQkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIFBTUl9FVkVOVChjcHVf dHJhbnNjb2RlciksCiAJCQkJICAgICAgIHZhbCk7CkBAIC0yMTYsNyArMjIwLDcgQEAgdm9pZCBp bnRlbF9wc3JfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1 MzIgcHNyX2lpcikKIAkJZHJtX3dhcm4oJmRldl9wcml2LT5kcm0sICJbdHJhbnNjb2RlciAlc10g UFNSIGF1eCBlcnJvclxuIiwKIAkJCSB0cmFuc2NvZGVyX25hbWUoY3B1X3RyYW5zY29kZXIpKTsK IAotCQlkZXZfcHJpdi0+cHNyLmlycV9hdXhfZXJyb3IgPSB0cnVlOworCQlpbnRlbF9kcC0+cHNy LmlycV9hdXhfZXJyb3IgPSB0cnVlOwogCiAJCS8qCiAJCSAqIElmIHRoaXMgaW50ZXJydXB0aW9u IGlzIG5vdCBtYXNrZWQgaXQgd2lsbCBrZWVwCkBAIC0yMzAsNyArMjM0LDcgQEAgdm9pZCBpbnRl bF9wc3JfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIg cHNyX2lpcikKIAkJdmFsIHw9IEVEUF9QU1JfRVJST1IodHJhbnNfc2hpZnQpOwogCQlpbnRlbF9k ZV93cml0ZShkZXZfcHJpdiwgaW1yX3JlZywgdmFsKTsKIAotCQlzY2hlZHVsZV93b3JrKCZkZXZf cHJpdi0+cHNyLndvcmspOworCQlzY2hlZHVsZV93b3JrKCZpbnRlbF9kcC0+cHNyLndvcmspOwog CX0KIH0KIApAQCAtMjkxLDEyICsyOTUsNiBAQCB2b2lkIGludGVsX3Bzcl9pbml0X2RwY2Qoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCkKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPQogCQl0b19pOTE1KGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+YmFzZS5iYXNlLmRldik7 CiAKLQlpZiAoZGV2X3ByaXYtPnBzci5kcCkgewotCQlkcm1fd2FybigmZGV2X3ByaXYtPmRybSwK LQkJCSAiTW9yZSB0aGFuIG9uZSBlRFAgcGFuZWwgZm91bmQsIFBTUiBzdXBwb3J0IHNob3VsZCBi ZSBleHRlbmRlZFxuIik7Ci0JCXJldHVybjsKLQl9Ci0KIAlkcm1fZHBfZHBjZF9yZWFkKCZpbnRl bF9kcC0+YXV4LCBEUF9QU1JfU1VQUE9SVCwgaW50ZWxfZHAtPnBzcl9kcGNkLAogCQkJIHNpemVv ZihpbnRlbF9kcC0+cHNyX2RwY2QpKTsKIApAQCAtMzE3LDEyICszMTUsMTAgQEAgdm9pZCBpbnRl bF9wc3JfaW5pdF9kcGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJCXJldHVybjsKIAl9 CiAKLQlkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydCA9IHRydWU7Ci0JZGV2X3ByaXYtPnBzci5z aW5rX3N5bmNfbGF0ZW5jeSA9CisJaW50ZWxfZHAtPnBzci5zaW5rX3N1cHBvcnQgPSB0cnVlOwor CWludGVsX2RwLT5wc3Iuc2lua19zeW5jX2xhdGVuY3kgPQogCQlpbnRlbF9kcF9nZXRfc2lua19z eW5jX2xhdGVuY3koaW50ZWxfZHApOwogCi0JZGV2X3ByaXYtPnBzci5kcCA9IGludGVsX2RwOwot CiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSAmJgogCSAgICAoaW50ZWxfZHAtPnBzcl9k cGNkWzBdID09IERQX1BTUjJfV0lUSF9ZX0NPT1JEX0lTX1NVUFBPUlRFRCkpIHsKIAkJYm9vbCB5 X3JlcSA9IGludGVsX2RwLT5wc3JfZHBjZFsxXSAmCkBAIC0zNDAsMTQgKzMzNiwxNCBAQCB2b2lk IGludGVsX3Bzcl9pbml0X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAkJICogWS1j b29yZGluYXRlIHJlcXVpcmVtZW50IHBhbmVscyB3ZSB3b3VsZCBuZWVkIHRvIGVuYWJsZQogCQkg KiBHVEMgZmlyc3QuCiAJCSAqLwotCQlkZXZfcHJpdi0+cHNyLnNpbmtfcHNyMl9zdXBwb3J0ID0g eV9yZXEgJiYgYWxwbTsKKwkJaW50ZWxfZHAtPnBzci5zaW5rX3BzcjJfc3VwcG9ydCA9IHlfcmVx ICYmIGFscG07CiAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiUFNSMiAlc3N1cHBvcnRl ZFxuIiwKLQkJCSAgICBkZXZfcHJpdi0+cHNyLnNpbmtfcHNyMl9zdXBwb3J0ID8gIiIgOiAibm90 ICIpOworCQkJICAgIGludGVsX2RwLT5wc3Iuc2lua19wc3IyX3N1cHBvcnQgPyAiIiA6ICJub3Qg Iik7CiAKLQkJaWYgKGRldl9wcml2LT5wc3Iuc2lua19wc3IyX3N1cHBvcnQpIHsKLQkJCWRldl9w cml2LT5wc3IuY29sb3JpbWV0cnlfc3VwcG9ydCA9CisJCWlmIChpbnRlbF9kcC0+cHNyLnNpbmtf cHNyMl9zdXBwb3J0KSB7CisJCQlpbnRlbF9kcC0+cHNyLmNvbG9yaW1ldHJ5X3N1cHBvcnQgPQog CQkJCWludGVsX2RwX2dldF9jb2xvcmltZXRyeV9zdGF0dXMoaW50ZWxfZHApOwotCQkJZGV2X3By aXYtPnBzci5zdV94X2dyYW51bGFyaXR5ID0KKwkJCWludGVsX2RwLT5wc3Iuc3VfeF9ncmFudWxh cml0eSA9CiAJCQkJaW50ZWxfZHBfZ2V0X3N1X3hfZ3JhbnVsYXJ0aXkoaW50ZWxfZHApOwogCQl9 CiAJfQpAQCAtMzczLDcgKzM2OSw3IEBAIHN0YXRpYyB2b2lkIGhzd19wc3Jfc2V0dXBfYXV4KHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJQlVJTERfQlVHX09OKHNpemVvZihhdXhfbXNnKSA+ IDIwKTsKIAlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGF1eF9tc2cpOyBpICs9IDQpCiAJCWludGVs X2RlX3dyaXRlKGRldl9wcml2LAotCQkJICAgICAgIEVEUF9QU1JfQVVYX0RBVEEoZGV2X3ByaXYt PnBzci50cmFuc2NvZGVyLCBpID4+IDIpLAorCQkJICAgICAgIEVEUF9QU1JfQVVYX0RBVEEoaW50 ZWxfZHAtPnBzci50cmFuc2NvZGVyLCBpID4+IDIpLAogCQkJICAgICAgIGludGVsX2RwX3BhY2tf YXV4KCZhdXhfbXNnW2ldLCBzaXplb2YoYXV4X21zZykgLSBpKSk7CiAKIAlhdXhfY2xvY2tfZGl2 aWRlciA9IGludGVsX2RwLT5nZXRfYXV4X2Nsb2NrX2RpdmlkZXIoaW50ZWxfZHAsIDApOwpAQCAt Mzg0LDcgKzM4MCw3IEBAIHN0YXRpYyB2b2lkIGhzd19wc3Jfc2V0dXBfYXV4KHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCiAKIAkvKiBTZWxlY3Qgb25seSB2YWxpZCBiaXRzIGZvciBTUkRfQVVY X0NUTCAqLwogCWF1eF9jdGwgJj0gcHNyX2F1eF9tYXNrOwotCWludGVsX2RlX3dyaXRlKGRldl9w cml2LCBFRFBfUFNSX0FVWF9DVEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSwKKwlpbnRlbF9k ZV93cml0ZShkZXZfcHJpdiwgRURQX1BTUl9BVVhfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2Rl ciksCiAJCSAgICAgICBhdXhfY3RsKTsKIH0KIApAQCAtMzk0LDE0ICszOTAsMTQgQEAgc3RhdGlj IHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9zaW5rKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJ dTggZHBjZF92YWwgPSBEUF9QU1JfRU5BQkxFOwogCiAJLyogRW5hYmxlIEFMUE0gYXQgc2luayBm b3IgcHNyMiAqLwotCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkgeworCWlmIChpbnRl bF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkgewogCQlkcm1fZHBfZHBjZF93cml0ZWIoJmludGVsX2Rw LT5hdXgsIERQX1JFQ0VJVkVSX0FMUE1fQ09ORklHLAogCQkJCSAgIERQX0FMUE1fRU5BQkxFIHwK IAkJCQkgICBEUF9BTFBNX0xPQ0tfRVJST1JfSVJRX0hQRF9FTkFCTEUpOwogCiAJCWRwY2RfdmFs IHw9IERQX1BTUl9FTkFCTEVfUFNSMiB8IERQX1BTUl9JUlFfSFBEX1dJVEhfQ1JDX0VSUk9SUzsK IAl9IGVsc2UgewotCQlpZiAoZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkpCisJCWlmIChpbnRl bF9kcC0+cHNyLmxpbmtfc3RhbmRieSkKIAkJCWRwY2RfdmFsIHw9IERQX1BTUl9NQUlOX0xJTktf QUNUSVZFOwogCiAJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCkBAIC00NjQsNyArNDYw LDcgQEAgc3RhdGljIHU4IHBzcl9jb21wdXRlX2lkbGVfZnJhbWVzKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHApCiAJICogb2ZmLWJ5LW9uZSBpc3N1ZSB0aGF0IEhXIGhhcyBpbiBzb21lIGNhc2Vz LgogCSAqLwogCWlkbGVfZnJhbWVzID0gbWF4KDYsIGRldl9wcml2LT52YnQucHNyLmlkbGVfZnJh bWVzKTsKLQlpZGxlX2ZyYW1lcyA9IG1heChpZGxlX2ZyYW1lcywgZGV2X3ByaXYtPnBzci5zaW5r X3N5bmNfbGF0ZW5jeSArIDEpOworCWlkbGVfZnJhbWVzID0gbWF4KGlkbGVfZnJhbWVzLCBpbnRl bF9kcC0+cHNyLnNpbmtfc3luY19sYXRlbmN5ICsgMSk7CiAKIAlpZiAoZHJtX1dBUk5fT04oJmRl dl9wcml2LT5kcm0sIGlkbGVfZnJhbWVzID4gMHhmKSkKIAkJaWRsZV9mcmFtZXMgPSAweGY7CkBA IC00ODQsNyArNDgwLDcgQEAgc3RhdGljIHZvaWQgaHN3X2FjdGl2YXRlX3BzcjEoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCkKIAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpCiAJCXZhbCB8PSBF RFBfUFNSX01JTl9MSU5LX0VOVFJZX1RJTUVfOF9MSU5FUzsKIAotCWlmIChkZXZfcHJpdi0+cHNy Lmxpbmtfc3RhbmRieSkKKwlpZiAoaW50ZWxfZHAtPnBzci5saW5rX3N0YW5kYnkpCiAJCXZhbCB8 PSBFRFBfUFNSX0xJTktfU1RBTkRCWTsKIAogCXZhbCB8PSBpbnRlbF9wc3IxX2dldF90cF90aW1l KGludGVsX2RwKTsKQEAgLTQ5Miw5ICs0ODgsOSBAQCBzdGF0aWMgdm9pZCBoc3dfYWN0aXZhdGVf cHNyMShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDgpCiAJCXZhbCB8PSBFRFBfUFNSX0NSQ19FTkFCTEU7CiAKLQl2YWwgfD0gKGludGVsX2Rl X3JlYWQoZGV2X3ByaXYsIEVEUF9QU1JfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpICYK Kwl2YWwgfD0gKGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIEVEUF9QU1JfQ1RMKGludGVsX2RwLT5w c3IudHJhbnNjb2RlcikpICYKIAkJRURQX1BTUl9SRVNUT1JFX1BTUl9BQ1RJVkVfQ1RYX01BU0sp OwotCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0NUTChkZXZfcHJpdi0+cHNyLnRy YW5zY29kZXIpLCB2YWwpOworCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0NUTChp bnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpLCB2YWwpOwogfQogCiBzdGF0aWMgdTMyIGludGVsX3Bz cjJfZ2V0X3RwX3RpbWUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKQEAgLTUyOSw3ICs1MjUs NyBAQCBzdGF0aWMgdm9pZCBoc3dfYWN0aXZhdGVfcHNyMihzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKQogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwIHx8IElTX0dFTUlOSUxBS0UoZGV2 X3ByaXYpKQogCQl2YWwgfD0gRURQX1lfQ09PUkRJTkFURV9FTkFCTEU7CiAKLQl2YWwgfD0gRURQ X1BTUjJfRlJBTUVfQkVGT1JFX1NVKGRldl9wcml2LT5wc3Iuc2lua19zeW5jX2xhdGVuY3kgKyAx KTsKKwl2YWwgfD0gRURQX1BTUjJfRlJBTUVfQkVGT1JFX1NVKGludGVsX2RwLT5wc3Iuc2lua19z eW5jX2xhdGVuY3kgKyAxKTsKIAl2YWwgfD0gaW50ZWxfcHNyMl9nZXRfdHBfdGltZShpbnRlbF9k cCk7CiAKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikgewpAQCAtNTQ4LDcgKzU0NCw3 IEBAIHN0YXRpYyB2b2lkIGhzd19hY3RpdmF0ZV9wc3IyKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCiAJCXZhbCB8PSBFRFBfUFNSMl9GQVNUX1dBS0UoNyk7CiAJfQogCi0JaWYgKGRldl9wcml2 LT5wc3IucHNyMl9zZWxfZmV0Y2hfZW5hYmxlZCkgeworCWlmIChpbnRlbF9kcC0+cHNyLnBzcjJf c2VsX2ZldGNoX2VuYWJsZWQpIHsKIAkJLyogV0EgMTQwODMzMDg0NyAqLwogCQlpZiAoSVNfVEdM X0RJU1BfUkVWSUQoZGV2X3ByaXYsIFRHTF9SRVZJRF9BMCwgVEdMX1JFVklEX0EwKSB8fAogCQkg ICAgSVNfUktMX1JFVklEKGRldl9wcml2LCBSS0xfUkVWSURfQTAsIFJLTF9SRVZJRF9BMCkpCkBA IC01NTcsMjAgKzU1MywyMCBAQCBzdGF0aWMgdm9pZCBoc3dfYWN0aXZhdGVfcHNyMihzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKQogCQkJCSAgICAgRElTX1JBTV9CWVBBU1NfUFNSMl9NQU5fVFJB Q0spOwogCiAJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LAotCQkJICAgICAgIFBTUjJfTUFOX1RS S19DVEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSwKKwkJCSAgICAgICBQU1IyX01BTl9UUktf Q1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlciksCiAJCQkgICAgICAgUFNSMl9NQU5fVFJLX0NU TF9FTkFCTEUpOwogCX0gZWxzZSBpZiAoSEFTX1BTUjJfU0VMX0ZFVENIKGRldl9wcml2KSkgewog CQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwKLQkJCSAgICAgICBQU1IyX01BTl9UUktfQ1RMKGRl dl9wcml2LT5wc3IudHJhbnNjb2RlciksIDApOworCQkJICAgICAgIFBTUjJfTUFOX1RSS19DVEwo aW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSwgMCk7CiAJfQogCiAJLyoKIAkgKiBQU1IyIEhXIGlz IGluY29ycmVjdGx5IHVzaW5nIEVEUF9QU1JfVFAxX1RQM19TRUwgYW5kIEJTcGVjIGlzCiAJICog cmVjb21tZW5kaW5nIGtlZXAgdGhpcyBiaXQgdW5zZXQgd2hpbGUgUFNSMiBpcyBlbmFibGVkLgog CSAqLwotCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0NUTChkZXZfcHJpdi0+cHNy LnRyYW5zY29kZXIpLCAwKTsKKwlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRURQX1BTUl9DVEwo aW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSwgMCk7CiAKLQlpbnRlbF9kZV93cml0ZShkZXZfcHJp diwgRURQX1BTUjJfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlciksIHZhbCk7CisJaW50ZWxf ZGVfd3JpdGUoZGV2X3ByaXYsIEVEUF9QU1IyX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIp LCB2YWwpOwogfQogCiBzdGF0aWMgYm9vbApAQCAtNTkzLDU1ICs1ODksNTggQEAgc3RhdGljIHUz MiBpbnRlbF9nZXRfZnJhbWVfdGltZV91cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3N0YXRlKQogCQkJICAgIGRybV9tb2RlX3ZyZWZyZXNoKCZjc3RhdGUtPmh3LmFkanVzdGVkX21v ZGUpKTsKIH0KIAotc3RhdGljIHZvaWQgcHNyMl9wcm9ncmFtX2lkbGVfZnJhbWVzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKK3N0YXRpYyB2b2lkIHBzcjJfcHJvZ3JhbV9pZGxl X2ZyYW1lcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCQkJCSAgICAgdTMyIGlkbGVfZnJh bWVzKQogeworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUo aW50ZWxfZHApOwogCXUzMiB2YWw7CiAKIAlpZGxlX2ZyYW1lcyA8PD0gIEVEUF9QU1IyX0lETEVf RlJBTUVfU0hJRlQ7Ci0JdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgRURQX1BTUjJfQ1RM KGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpOworCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3By aXYsIEVEUF9QU1IyX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpKTsKIAl2YWwgJj0gfkVE UF9QU1IyX0lETEVfRlJBTUVfTUFTSzsKIAl2YWwgfD0gaWRsZV9mcmFtZXM7Ci0JaW50ZWxfZGVf d3JpdGUoZGV2X3ByaXYsIEVEUF9QU1IyX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpLCB2 YWwpOworCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSMl9DVEwoaW50ZWxfZHAtPnBz ci50cmFuc2NvZGVyKSwgdmFsKTsKIH0KIAotc3RhdGljIHZvaWQgdGdsX3BzcjJfZW5hYmxlX2Rj M2NvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyB2b2lkIHRnbF9w c3IyX2VuYWJsZV9kYzNjbyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogewotCXBzcjJfcHJv Z3JhbV9pZGxlX2ZyYW1lcyhkZXZfcHJpdiwgMCk7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7CisKKwlwc3IyX3Byb2dyYW1faWRsZV9m cmFtZXMoaW50ZWxfZHAsIDApOwogCWludGVsX2Rpc3BsYXlfcG93ZXJfc2V0X3RhcmdldF9kY19z dGF0ZShkZXZfcHJpdiwgRENfU1RBVEVfRU5fREMzQ08pOwogfQogCi1zdGF0aWMgdm9pZCB0Z2xf cHNyMl9kaXNhYmxlX2RjM2NvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0 YXRpYyB2b2lkIHRnbF9wc3IyX2Rpc2FibGVfZGMzY28oc3RydWN0IGludGVsX2RwICppbnRlbF9k cCkKIHsKLQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZGV2X3ByaXYtPnBzci5kcDsKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsK IAogCWludGVsX2Rpc3BsYXlfcG93ZXJfc2V0X3RhcmdldF9kY19zdGF0ZShkZXZfcHJpdiwgRENf U1RBVEVfRU5fVVBUT19EQzYpOwotCXBzcjJfcHJvZ3JhbV9pZGxlX2ZyYW1lcyhkZXZfcHJpdiwg cHNyX2NvbXB1dGVfaWRsZV9mcmFtZXMoaW50ZWxfZHApKTsKKwlwc3IyX3Byb2dyYW1faWRsZV9m cmFtZXMoaW50ZWxfZHAsIHBzcl9jb21wdXRlX2lkbGVfZnJhbWVzKGludGVsX2RwKSk7CiB9CiAK IHN0YXRpYyB2b2lkIHRnbF9kYzNjb19kaXNhYmxlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3 b3JrKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Ci0JCWNvbnRhaW5l cl9vZih3b3JrLCB0eXBlb2YoKmRldl9wcml2KSwgcHNyLmRjM2NvX3dvcmsud29yayk7CisJc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCA9CisJCWNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKmlu dGVsX2RwKSwgcHNyLmRjM2NvX3dvcmsud29yayk7CiAKLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ cHNyLmxvY2spOworCW11dGV4X2xvY2soJmludGVsX2RwLT5wc3IubG9jayk7CiAJLyogSWYgZGVs YXllZCB3b3JrIGlzIHBlbmRpbmcsIGl0IGlzIG5vdCBpZGxlICovCi0JaWYgKGRlbGF5ZWRfd29y a19wZW5kaW5nKCZkZXZfcHJpdi0+cHNyLmRjM2NvX3dvcmspKQorCWlmIChkZWxheWVkX3dvcmtf cGVuZGluZygmaW50ZWxfZHAtPnBzci5kYzNjb193b3JrKSkKIAkJZ290byB1bmxvY2s7CiAKLQl0 Z2xfcHNyMl9kaXNhYmxlX2RjM2NvKGRldl9wcml2KTsKKwl0Z2xfcHNyMl9kaXNhYmxlX2RjM2Nv KGludGVsX2RwKTsKIHVubG9jazoKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7 CisJbXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOwogfQogCi1zdGF0aWMgdm9pZCB0 Z2xfZGlzYWxsb3dfZGMzY29fb25fcHNyMl9leGl0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKK3N0YXRpYyB2b2lkIHRnbF9kaXNhbGxvd19kYzNjb19vbl9wc3IyX2V4aXQoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsKLQlpZiAoIWRldl9wcml2LT5wc3IuZGMzY29fZW5h YmxlZCkKKwlpZiAoIWludGVsX2RwLT5wc3IuZGMzY29fZW5hYmxlZCkKIAkJcmV0dXJuOwogCi0J Y2FuY2VsX2RlbGF5ZWRfd29yaygmZGV2X3ByaXYtPnBzci5kYzNjb193b3JrKTsKKwljYW5jZWxf ZGVsYXllZF93b3JrKCZpbnRlbF9kcC0+cHNyLmRjM2NvX3dvcmspOwogCS8qIEJlZm9yZSBQU1Iy IGV4aXQgZGlzYWxsb3cgZGMzY28qLwotCXRnbF9wc3IyX2Rpc2FibGVfZGMzY28oZGV2X3ByaXYp OworCXRnbF9wc3IyX2Rpc2FibGVfZGMzY28oaW50ZWxfZHApOwogfQogCiBzdGF0aWMgdm9pZApA QCAtNzE0LDcgKzcxMyw3IEBAIHN0YXRpYyBib29sIGludGVsX3BzcjJfY29uZmlnX3ZhbGlkKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJaW50IGNydGNfdmRpc3BsYXkgPSBjcnRjX3N0YXRl LT5ody5hZGp1c3RlZF9tb2RlLmNydGNfdmRpc3BsYXk7CiAJaW50IHBzcl9tYXhfaCA9IDAsIHBz cl9tYXhfdiA9IDAsIG1heF9icHAgPSAwOwogCi0JaWYgKCFkZXZfcHJpdi0+cHNyLnNpbmtfcHNy Ml9zdXBwb3J0KQorCWlmICghaW50ZWxfZHAtPnBzci5zaW5rX3BzcjJfc3VwcG9ydCkKIAkJcmV0 dXJuIGZhbHNlOwogCiAJaWYgKCF0cmFuc2NvZGVyX2hhc19wc3IyKGRldl9wcml2LCBjcnRjX3N0 YXRlLT5jcHVfdHJhbnNjb2RlcikpIHsKQEAgLTcyNCw3ICs3MjMsNyBAQCBzdGF0aWMgYm9vbCBp bnRlbF9wc3IyX2NvbmZpZ192YWxpZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCQlyZXR1 cm4gZmFsc2U7CiAJfQogCi0JaWYgKCFwc3IyX2dsb2JhbF9lbmFibGVkKGRldl9wcml2KSkgewor CWlmICghcHNyMl9nbG9iYWxfZW5hYmxlZChpbnRlbF9kcCkpIHsKIAkJZHJtX2RiZ19rbXMoJmRl dl9wcml2LT5kcm0sICJQU1IyIGRpc2FibGVkIGJ5IGZsYWdcbiIpOwogCQlyZXR1cm4gZmFsc2U7 CiAJfQpAQCAtNzczLDEwICs3NzIsMTAgQEAgc3RhdGljIGJvb2wgaW50ZWxfcHNyMl9jb25maWdf dmFsaWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAkgKiBvbmx5IG5lZWQgdG8gdmFsaWRh dGUgdGhlIFNVIGJsb2NrIHdpZHRoIGlzIGEgbXVsdGlwbGUgb2YKIAkgKiB4IGdyYW51bGFyaXR5 LgogCSAqLwotCWlmIChjcnRjX2hkaXNwbGF5ICUgZGV2X3ByaXYtPnBzci5zdV94X2dyYW51bGFy aXR5KSB7CisJaWYgKGNydGNfaGRpc3BsYXkgJSBpbnRlbF9kcC0+cHNyLnN1X3hfZ3JhbnVsYXJp dHkpIHsKIAkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sCiAJCQkgICAgIlBTUjIgbm90IGVu YWJsZWQsIGhkaXNwbGF5KCVkKSBub3QgbXVsdGlwbGUgb2YgJWRcbiIsCi0JCQkgICAgY3J0Y19o ZGlzcGxheSwgZGV2X3ByaXYtPnBzci5zdV94X2dyYW51bGFyaXR5KTsKKwkJCSAgICBjcnRjX2hk aXNwbGF5LCBpbnRlbF9kcC0+cHNyLnN1X3hfZ3JhbnVsYXJpdHkpOwogCQlyZXR1cm4gZmFsc2U7 CiAJfQogCkBAIC04MTEsMTMgKzgxMCwxMCBAQCB2b2lkIGludGVsX3Bzcl9jb21wdXRlX2NvbmZp ZyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRf bW9kZTsKIAlpbnQgcHNyX3NldHVwX3RpbWU7CiAKLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQor CWlmICghQ0FOX1BTUihpbnRlbF9kcCkpCiAJCXJldHVybjsKIAotCWlmIChpbnRlbF9kcCAhPSBk ZXZfcHJpdi0+cHNyLmRwKQotCQlyZXR1cm47Ci0KLQlpZiAoIXBzcl9nbG9iYWxfZW5hYmxlZChk ZXZfcHJpdikpIHsKKwlpZiAoIXBzcl9nbG9iYWxfZW5hYmxlZChpbnRlbF9kcCkpIHsKIAkJZHJt X2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJQU1IgZGlzYWJsZWQgYnkgZmxhZ1xuIik7CiAJCXJl dHVybjsKIAl9CkBAIC04MjUsMTYgKzgyMSwxOCBAQCB2b2lkIGludGVsX3Bzcl9jb21wdXRlX2Nv bmZpZyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCS8qCiAJICogSFNXIHNwZWMgZXhwbGlj aXRseSBzYXlzIFBTUiBpcyB0aWVkIHRvIHBvcnQgQS4KIAkgKiBCRFcrIHBsYXRmb3JtcyBoYXZl IGEgaW5zdGFuY2Ugb2YgUFNSIHJlZ2lzdGVycyBwZXIgdHJhbnNjb2RlciBidXQKLQkgKiBmb3Ig bm93IGl0IG9ubHkgc3VwcG9ydHMgb25lIGluc3RhbmNlIG9mIFBTUiwgc28gbGV0cyBrZWVwIGl0 Ci0JICogaGFyZGNvZGVkIHRvIFBPUlRfQQorCSAqIEJEVywgR0VOOSBhbmQgR0VOMTEgYXJlIG5v dCB2YWxpZGF0ZWQgYnkgSFcgdGVhbS4KKwkgKiBGb3Igbm93IGl0IG9ubHkgc3VwcG9ydHMgb25l IGluc3RhbmNlIG9mIFBTUiBmb3IgQkRXLEdFTjkgYW5kIEdFTjExLgorCSAqIFNvIGxldHMga2Vl cCBpdCBoYXJkY29kZWQgdG8gUE9SVF9BIGZvciBCRFcsIEdFTjkgYW5kIEdFTjExLgorCSAqIEJ1 dCBHRU4xMiBzdXBwb3J0cyBhIGluc3RhbmNlIG9mIFBTUiByZWdpc3RlcnMgcGVyIHRyYW5zY29k ZXIuCiAJICovCi0JaWYgKGRpZ19wb3J0LT5iYXNlLnBvcnQgIT0gUE9SVF9BKSB7CisJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPCAxMiAmJiBkaWdfcG9ydC0+YmFzZS5wb3J0ICE9IFBPUlRfQSkg ewogCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwKIAkJCSAgICAiUFNSIGNvbmRpdGlvbiBm YWlsZWQ6IFBvcnQgbm90IHN1cHBvcnRlZFxuIik7CiAJCXJldHVybjsKIAl9CiAKLQlpZiAoZGV2 X3ByaXYtPnBzci5zaW5rX25vdF9yZWxpYWJsZSkgeworCWlmIChpbnRlbF9kcC0+cHNyLnNpbmtf bm90X3JlbGlhYmxlKSB7CiAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLAogCQkJICAgICJQ U1Igc2luayBpbXBsZW1lbnRhdGlvbiBpcyBub3QgcmVsaWFibGVcbiIpOwogCQlyZXR1cm47CkBA IC04NzAsMjMgKzg2OCwyNCBAQCB2b2lkIGludGVsX3Bzcl9jb21wdXRlX2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLAogc3RhdGljIHZvaWQgaW50ZWxfcHNyX2FjdGl2YXRlKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7CisJZW51bSB0cmFuc2NvZGVyIHRyYW5zY29kZXIg PSBpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXI7CiAKLQlpZiAodHJhbnNjb2Rlcl9oYXNfcHNyMihk ZXZfcHJpdiwgZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSkKKwlpZiAodHJhbnNjb2Rlcl9oYXNf cHNyMihkZXZfcHJpdiwgdHJhbnNjb2RlcikpCiAJCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJt LAotCQkJICAgIGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIEVEUF9QU1IyX0NUTChkZXZfcHJpdi0+ cHNyLnRyYW5zY29kZXIpKSAmIEVEUF9QU1IyX0VOQUJMRSk7CisJCQkgICAgaW50ZWxfZGVfcmVh ZChkZXZfcHJpdiwgRURQX1BTUjJfQ1RMKHRyYW5zY29kZXIpKSAmIEVEUF9QU1IyX0VOQUJMRSk7 CiAKIAlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwKLQkJICAgIGludGVsX2RlX3JlYWQoZGV2 X3ByaXYsIEVEUF9QU1JfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpICYgRURQX1BTUl9F TkFCTEUpOwotCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCBkZXZfcHJpdi0+cHNyLmFjdGl2 ZSk7Ci0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPnBzci5sb2NrKTsKKwkJICAgIGlu dGVsX2RlX3JlYWQoZGV2X3ByaXYsIEVEUF9QU1JfQ1RMKHRyYW5zY29kZXIpKSAmIEVEUF9QU1Jf RU5BQkxFKTsKKwlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgaW50ZWxfZHAtPnBzci5hY3Rp dmUpOworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmludGVsX2RwLT5wc3IubG9jayk7CiAKIAkvKiBw c3IxIGFuZCBwc3IyIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuKi8KLQlpZiAoZGV2X3ByaXYtPnBz ci5wc3IyX2VuYWJsZWQpCisJaWYgKGludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkKQogCQloc3df YWN0aXZhdGVfcHNyMihpbnRlbF9kcCk7CiAJZWxzZQogCQloc3dfYWN0aXZhdGVfcHNyMShpbnRl bF9kcCk7CiAKLQlkZXZfcHJpdi0+cHNyLmFjdGl2ZSA9IHRydWU7CisJaW50ZWxfZHAtPnBzci5h Y3RpdmUgPSB0cnVlOwogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxlX3NvdXJjZShz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLApAQCAtOTAyLDcgKzkwMSw3IEBAIHN0YXRpYyB2b2lk IGludGVsX3Bzcl9lbmFibGVfc291cmNlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJaWYg KElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCiAJCWhzd19w c3Jfc2V0dXBfYXV4KGludGVsX2RwKTsKIAotCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxl ZCAmJiAoSVNfR0VOKGRldl9wcml2LCA5KSAmJgorCWlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5h YmxlZCAmJiAoSVNfR0VOKGRldl9wcml2LCA5KSAmJgogCQkJCQkgICAhSVNfR0VNSU5JTEFLRShk ZXZfcHJpdikpKSB7CiAJCWk5MTVfcmVnX3QgcmVnID0gQ0hJQ0tFTl9UUkFOUyhjcHVfdHJhbnNj b2Rlcik7CiAJCXUzMiBjaGlja2VuID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgcmVnKTsKQEAg LTkyNiwxMCArOTI1LDEwIEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9lbmFibGVfc291cmNlKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMSkK IAkJbWFzayB8PSBFRFBfUFNSX0RFQlVHX01BU0tfRElTUF9SRUdfV1JJVEU7CiAKLQlpbnRlbF9k ZV93cml0ZShkZXZfcHJpdiwgRURQX1BTUl9ERUJVRyhkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIp LAorCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0RFQlVHKGludGVsX2RwLT5wc3Iu dHJhbnNjb2RlciksCiAJCSAgICAgICBtYXNrKTsKIAotCXBzcl9pcnFfY29udHJvbChkZXZfcHJp dik7CisJcHNyX2lycV9jb250cm9sKGludGVsX2RwKTsKIAogCWlmIChjcnRjX3N0YXRlLT5kYzNj b19leGl0bGluZSkgewogCQl1MzIgdmFsOwpAQCAtOTQ3LDMwICs5NDYsMzAgQEAgc3RhdGljIHZv aWQgaW50ZWxfcHNyX2VuYWJsZV9zb3VyY2Uoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAog CWlmIChIQVNfUFNSX0hXX1RSQUNLSU5HKGRldl9wcml2KSAmJiBIQVNfUFNSMl9TRUxfRkVUQ0go ZGV2X3ByaXYpKQogCQlpbnRlbF9kZV9ybXcoZGV2X3ByaXYsIENISUNLRU5fUEFSMV8xLCBJR05P UkVfUFNSMl9IV19UUkFDS0lORywKLQkJCSAgICAgZGV2X3ByaXYtPnBzci5wc3IyX3NlbF9mZXRj aF9lbmFibGVkID8KKwkJCSAgICAgaW50ZWxfZHAtPnBzci5wc3IyX3NlbF9mZXRjaF9lbmFibGVk ID8KIAkJCSAgICAgSUdOT1JFX1BTUjJfSFdfVFJBQ0tJTkcgOiAwKTsKIH0KIAotc3RhdGljIHZv aWQgaW50ZWxfcHNyX2VuYWJsZV9sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAorc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9sb2NrZWQoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCwKIAkJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCiAJCQkJICAgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0 YXRlKQogewotCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBkZXZfcHJpdi0+cHNyLmRwOwor CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHAp OwogCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQo aW50ZWxfZHApOwogCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gJmRpZ19wb3J0LT5i YXNlOwogCXUzMiB2YWw7CiAKLQlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgZGV2X3ByaXYt PnBzci5lbmFibGVkKTsKKwlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgaW50ZWxfZHAtPnBz ci5lbmFibGVkKTsKIAotCWRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkID0gY3J0Y19zdGF0ZS0+ aGFzX3BzcjI7Ci0JZGV2X3ByaXYtPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMgPSAwOwotCWRl dl9wcml2LT5wc3IucGlwZSA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKS0+ cGlwZTsKLQlkZXZfcHJpdi0+cHNyLmRjM2NvX2VuYWJsZWQgPSAhIWNydGNfc3RhdGUtPmRjM2Nv X2V4aXRsaW5lOwotCWRldl9wcml2LT5wc3IudHJhbnNjb2RlciA9IGNydGNfc3RhdGUtPmNwdV90 cmFuc2NvZGVyOworCWludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkID0gY3J0Y19zdGF0ZS0+aGFz X3BzcjI7CisJaW50ZWxfZHAtPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMgPSAwOworCWludGVs X2RwLT5wc3IucGlwZSA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKS0+cGlw ZTsKKwlpbnRlbF9kcC0+cHNyLmRjM2NvX2VuYWJsZWQgPSAhIWNydGNfc3RhdGUtPmRjM2NvX2V4 aXRsaW5lOworCWludGVsX2RwLT5wc3IudHJhbnNjb2RlciA9IGNydGNfc3RhdGUtPmNwdV90cmFu c2NvZGVyOwogCS8qIERDNS9EQzYgcmVxdWlyZXMgYXQgbGVhc3QgNiBpZGxlIGZyYW1lcyAqLwog CXZhbCA9IHVzZWNzX3RvX2ppZmZpZXMoaW50ZWxfZ2V0X2ZyYW1lX3RpbWVfdXMoY3J0Y19zdGF0 ZSkgKiA2KTsKLQlkZXZfcHJpdi0+cHNyLmRjM2NvX2V4aXRfZGVsYXkgPSB2YWw7Ci0JZGV2X3By aXYtPnBzci5wc3IyX3NlbF9mZXRjaF9lbmFibGVkID0gY3J0Y19zdGF0ZS0+ZW5hYmxlX3BzcjJf c2VsX2ZldGNoOworCWludGVsX2RwLT5wc3IuZGMzY29fZXhpdF9kZWxheSA9IHZhbDsKKwlpbnRl bF9kcC0+cHNyLnBzcjJfc2VsX2ZldGNoX2VuYWJsZWQgPSBjcnRjX3N0YXRlLT5lbmFibGVfcHNy Ml9zZWxfZmV0Y2g7CiAKIAkvKgogCSAqIElmIGEgUFNSIGVycm9yIGhhcHBlbmVkIGFuZCB0aGUg ZHJpdmVyIGlzIHJlbG9hZGVkLCB0aGUgRURQX1BTUl9JSVIKQEAgLTk4MiwyNyArOTgxLDI3IEBA IHN0YXRpYyB2b2lkIGludGVsX3Bzcl9lbmFibGVfbG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIAkgKi8KIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikgewog CQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LAotCQkJCSAgICBUUkFOU19QU1JfSUlSKGRl dl9wcml2LT5wc3IudHJhbnNjb2RlcikpOworCQkJCSAgICBUUkFOU19QU1JfSUlSKGludGVsX2Rw LT5wc3IudHJhbnNjb2RlcikpOwogCQl2YWwgJj0gRURQX1BTUl9FUlJPUigwKTsKIAl9IGVsc2Ug ewogCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBFRFBfUFNSX0lJUik7Ci0JCXZhbCAm PSBFRFBfUFNSX0VSUk9SKGRldl9wcml2LT5wc3IudHJhbnNjb2Rlcik7CisJCXZhbCAmPSBFRFBf UFNSX0VSUk9SKGludGVsX2RwLT5wc3IudHJhbnNjb2Rlcik7CiAJfQogCWlmICh2YWwpIHsKLQkJ ZGV2X3ByaXYtPnBzci5zaW5rX25vdF9yZWxpYWJsZSA9IHRydWU7CisJCWludGVsX2RwLT5wc3Iu c2lua19ub3RfcmVsaWFibGUgPSB0cnVlOwogCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwK IAkJCSAgICAiUFNSIGludGVycnVwdGlvbiBlcnJvciBzZXQsIG5vdCBlbmFibGluZyBQU1JcbiIp OwogCQlyZXR1cm47CiAJfQogCiAJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJFbmFibGlu ZyBQU1Ilc1xuIiwKLQkJICAgIGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkID8gIjIiIDogIjEi KTsKKwkJICAgIGludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkID8gIjIiIDogIjEiKTsKIAlpbnRl bF9kcF9jb21wdXRlX3Bzcl92c2Nfc2RwKGludGVsX2RwLCBjcnRjX3N0YXRlLCBjb25uX3N0YXRl LAotCQkJCSAgICAgJmRldl9wcml2LT5wc3IudnNjKTsKLQlpbnRlbF93cml0ZV9kcF92c2Nfc2Rw KGVuY29kZXIsIGNydGNfc3RhdGUsICZkZXZfcHJpdi0+cHNyLnZzYyk7CisJCQkJICAgICAmaW50 ZWxfZHAtPnBzci52c2MpOworCWludGVsX3dyaXRlX2RwX3ZzY19zZHAoZW5jb2RlciwgY3J0Y19z dGF0ZSwgJmludGVsX2RwLT5wc3IudnNjKTsKIAlpbnRlbF9wc3JfZW5hYmxlX3NpbmsoaW50ZWxf ZHApOwogCWludGVsX3Bzcl9lbmFibGVfc291cmNlKGludGVsX2RwLCBjcnRjX3N0YXRlKTsKLQlk ZXZfcHJpdi0+cHNyLmVuYWJsZWQgPSB0cnVlOworCWludGVsX2RwLT5wc3IuZW5hYmxlZCA9IHRy dWU7CiAKIAlpbnRlbF9wc3JfYWN0aXZhdGUoaW50ZWxfZHApOwogfQpAQCAtMTAyMSw3ICsxMDIw LDcgQEAgdm9pZCBpbnRlbF9wc3JfZW5hYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiB7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9k cCk7CiAKLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpIHx8IGRldl9wcml2LT5wc3IuZHAgIT0gaW50 ZWxfZHApCisJaWYgKCFDQU5fUFNSKGludGVsX2RwKSkKIAkJcmV0dXJuOwogCiAJaWYgKCFjcnRj X3N0YXRlLT5oYXNfcHNyKQpAQCAtMTAyOSw0NiArMTAyOCw0NyBAQCB2b2lkIGludGVsX3Bzcl9l bmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAogCWRybV9XQVJOX09OKCZkZXZfcHJp di0+ZHJtLCBkZXZfcHJpdi0+ZHJycy5kcCk7CiAKLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNy LmxvY2spOwotCWludGVsX3Bzcl9lbmFibGVfbG9ja2VkKGRldl9wcml2LCBjcnRjX3N0YXRlLCBj b25uX3N0YXRlKTsKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7CisJbXV0ZXhf bG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsKKwlpbnRlbF9wc3JfZW5hYmxlX2xvY2tlZChpbnRl bF9kcCwgY3J0Y19zdGF0ZSwgY29ubl9zdGF0ZSk7CisJbXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+ cHNyLmxvY2spOwogfQogCi1zdGF0aWMgdm9pZCBpbnRlbF9wc3JfZXhpdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZXhpdChzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKQogeworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwogCXUzMiB2YWw7CiAKLQlpZiAoIWRldl9wcml2LT5w c3IuYWN0aXZlKSB7Ci0JCWlmICh0cmFuc2NvZGVyX2hhc19wc3IyKGRldl9wcml2LCBkZXZfcHJp di0+cHNyLnRyYW5zY29kZXIpKSB7CisJaWYgKCFpbnRlbF9kcC0+cHNyLmFjdGl2ZSkgeworCQlp ZiAodHJhbnNjb2Rlcl9oYXNfcHNyMihkZXZfcHJpdiwgaW50ZWxfZHAtPnBzci50cmFuc2NvZGVy KSkgewogCQkJdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwKLQkJCQkJICAgIEVEUF9QU1Iy X0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKTsKKwkJCQkJICAgIEVEUF9QU1IyX0NUTChp bnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpKTsKIAkJCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJt LCB2YWwgJiBFRFBfUFNSMl9FTkFCTEUpOwogCQl9CiAKIAkJdmFsID0gaW50ZWxfZGVfcmVhZChk ZXZfcHJpdiwKLQkJCQkgICAgRURQX1BTUl9DVEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSk7 CisJCQkJICAgIEVEUF9QU1JfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlcikpOwogCQlkcm1f V0FSTl9PTigmZGV2X3ByaXYtPmRybSwgdmFsICYgRURQX1BTUl9FTkFCTEUpOwogCiAJCXJldHVy bjsKIAl9CiAKLQlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQpIHsKLQkJdGdsX2Rpc2Fs bG93X2RjM2NvX29uX3BzcjJfZXhpdChkZXZfcHJpdik7CisJaWYgKGludGVsX2RwLT5wc3IucHNy Ml9lbmFibGVkKSB7CisJCXRnbF9kaXNhbGxvd19kYzNjb19vbl9wc3IyX2V4aXQoaW50ZWxfZHAp OwogCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LAotCQkJCSAgICBFRFBfUFNSMl9DVEwo ZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSk7CisJCQkJICAgIEVEUF9QU1IyX0NUTChpbnRlbF9k cC0+cHNyLnRyYW5zY29kZXIpKTsKIAkJZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sICEodmFs ICYgRURQX1BTUjJfRU5BQkxFKSk7CiAJCXZhbCAmPSB+RURQX1BTUjJfRU5BQkxFOwogCQlpbnRl bF9kZV93cml0ZShkZXZfcHJpdiwKLQkJCSAgICAgICBFRFBfUFNSMl9DVEwoZGV2X3ByaXYtPnBz ci50cmFuc2NvZGVyKSwgdmFsKTsKKwkJCSAgICAgICBFRFBfUFNSMl9DVEwoaW50ZWxfZHAtPnBz ci50cmFuc2NvZGVyKSwgdmFsKTsKIAl9IGVsc2UgewogCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRl dl9wcml2LAotCQkJCSAgICBFRFBfUFNSX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKTsK KwkJCQkgICAgRURQX1BTUl9DVEwoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSk7CiAJCWRybV9X QVJOX09OKCZkZXZfcHJpdi0+ZHJtLCAhKHZhbCAmIEVEUF9QU1JfRU5BQkxFKSk7CiAJCXZhbCAm PSB+RURQX1BTUl9FTkFCTEU7CiAJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LAotCQkJICAgICAg IEVEUF9QU1JfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlciksIHZhbCk7CisJCQkgICAgICAg RURQX1BTUl9DVEwoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSwgdmFsKTsKIAl9Ci0JZGV2X3By aXYtPnBzci5hY3RpdmUgPSBmYWxzZTsKKwlpbnRlbF9kcC0+cHNyLmFjdGl2ZSA9IGZhbHNlOwog fQogCiBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZGlzYWJsZV9sb2NrZWQoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkKQEAgLTEwNzcsMjEgKzEwNzcsMjEgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNy X2Rpc2FibGVfbG9ja2VkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJaTkxNV9yZWdfdCBw c3Jfc3RhdHVzOwogCXUzMiBwc3Jfc3RhdHVzX21hc2s7CiAKLQlsb2NrZGVwX2Fzc2VydF9oZWxk KCZkZXZfcHJpdi0+cHNyLmxvY2spOworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmludGVsX2RwLT5w c3IubG9jayk7CiAKLQlpZiAoIWRldl9wcml2LT5wc3IuZW5hYmxlZCkKKwlpZiAoIWludGVsX2Rw LT5wc3IuZW5hYmxlZCkKIAkJcmV0dXJuOwogCiAJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0s ICJEaXNhYmxpbmcgUFNSJXNcbiIsCi0JCSAgICBkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCA/ ICIyIiA6ICIxIik7CisJCSAgICBpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCA/ICIyIiA6ICIx Iik7CiAKLQlpbnRlbF9wc3JfZXhpdChkZXZfcHJpdik7CisJaW50ZWxfcHNyX2V4aXQoaW50ZWxf ZHApOwogCi0JaWYgKGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkKSB7Ci0JCXBzcl9zdGF0dXMg PSBFRFBfUFNSMl9TVEFUVVMoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKTsKKwlpZiAoaW50ZWxf ZHAtPnBzci5wc3IyX2VuYWJsZWQpIHsKKwkJcHNyX3N0YXR1cyA9IEVEUF9QU1IyX1NUQVRVUyhp bnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpOwogCQlwc3Jfc3RhdHVzX21hc2sgPSBFRFBfUFNSMl9T VEFUVVNfU1RBVEVfTUFTSzsKIAl9IGVsc2UgewotCQlwc3Jfc3RhdHVzID0gRURQX1BTUl9TVEFU VVMoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKTsKKwkJcHNyX3N0YXR1cyA9IEVEUF9QU1JfU1RB VFVTKGludGVsX2RwLT5wc3IudHJhbnNjb2Rlcik7CiAJCXBzcl9zdGF0dXNfbWFzayA9IEVEUF9Q U1JfU1RBVFVTX1NUQVRFX01BU0s7CiAJfQogCkBAIC0xMTAxLDcgKzExMDEsNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9wc3JfZGlzYWJsZV9sb2NrZWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK IAkJZHJtX2VycigmZGV2X3ByaXYtPmRybSwgIlRpbWVkIG91dCB3YWl0aW5nIFBTUiBpZGxlIHN0 YXRlXG4iKTsKIAogCS8qIFdBIDE0MDgzMzA4NDcgKi8KLQlpZiAoZGV2X3ByaXYtPnBzci5wc3Iy X3NlbF9mZXRjaF9lbmFibGVkICYmCisJaWYgKGludGVsX2RwLT5wc3IucHNyMl9zZWxfZmV0Y2hf ZW5hYmxlZCAmJgogCSAgICAoSVNfVEdMX0RJU1BfUkVWSUQoZGV2X3ByaXYsIFRHTF9SRVZJRF9B MCwgVEdMX1JFVklEX0EwKSB8fAogCSAgICAgSVNfUktMX1JFVklEKGRldl9wcml2LCBSS0xfUkVW SURfQTAsIFJLTF9SRVZJRF9BMCkpKQogCQlpbnRlbF9kZV9ybXcoZGV2X3ByaXYsIENISUNLRU5f UEFSMV8xLApAQCAtMTExMCwxMCArMTExMCwxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZGlz YWJsZV9sb2NrZWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAkvKiBEaXNhYmxlIFBTUiBv biBTaW5rICovCiAJZHJtX2RwX2RwY2Rfd3JpdGViKCZpbnRlbF9kcC0+YXV4LCBEUF9QU1JfRU5f Q0ZHLCAwKTsKIAotCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkKKwlpZiAoaW50ZWxf ZHAtPnBzci5wc3IyX2VuYWJsZWQpCiAJCWRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1 eCwgRFBfUkVDRUlWRVJfQUxQTV9DT05GSUcsIDApOwogCi0JZGV2X3ByaXYtPnBzci5lbmFibGVk ID0gZmFsc2U7CisJaW50ZWxfZHAtPnBzci5lbmFibGVkID0gZmFsc2U7CiB9CiAKIC8qKgpAQCAt MTEzMSwyMCArMTEzMSwyMiBAQCB2b2lkIGludGVsX3Bzcl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsCiAJaWYgKCFvbGRfY3J0Y19zdGF0ZS0+aGFzX3BzcikKIAkJcmV0dXJuOwog Ci0JaWYgKGRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCAhQ0FOX1BTUihkZXZfcHJpdikpKQor CWlmIChkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgIUNBTl9QU1IoaW50ZWxfZHApKSkKIAkJ cmV0dXJuOwogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKKwltdXRleF9sb2Nr KCZpbnRlbF9kcC0+cHNyLmxvY2spOwogCiAJaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKGludGVs X2RwKTsKIAotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKLQljYW5jZWxfd29y a19zeW5jKCZkZXZfcHJpdi0+cHNyLndvcmspOwotCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygm ZGV2X3ByaXYtPnBzci5kYzNjb193b3JrKTsKKwltdXRleF91bmxvY2soJmludGVsX2RwLT5wc3Iu bG9jayk7CisJY2FuY2VsX3dvcmtfc3luYygmaW50ZWxfZHAtPnBzci53b3JrKTsKKwljYW5jZWxf ZGVsYXllZF93b3JrX3N5bmMoJmludGVsX2RwLT5wc3IuZGMzY29fd29yayk7CiB9CiAKLXN0YXRp YyB2b2lkIHBzcl9mb3JjZV9od190cmFja2luZ19leGl0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKK3N0YXRpYyB2b2lkIHBzcl9mb3JjZV9od190cmFja2luZ19leGl0KHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApCiB7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7CisKIAlpZiAoSVNfVElHRVJMQUtFKGRldl9wcml2 KSkKIAkJLyoKIAkJICogV3JpdGVzIHRvIENVUlNVUkZMSVZFIGluIFRHTCBhcmUgY2F1c2luZyBJ T01NVSBlcnJvcnMgYW5kCkBAIC0xMTU4LDcgKzExNjAsNyBAQCBzdGF0aWMgdm9pZCBwc3JfZm9y Y2VfaHdfdHJhY2tpbmdfZXhpdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJ CSAqIFNvIHVzaW5nIHRoaXMgd29ya2Fyb3VuZCB1bnRpbCB0aGlzIGlzc3VlIGlzIHJvb3QgY2F1 c2VkCiAJCSAqIGFuZCBhIGJldHRlciBmaXggaXMgZm91bmQuCiAJCSAqLwotCQlpbnRlbF9wc3Jf ZXhpdChkZXZfcHJpdik7CisJCWludGVsX3Bzcl9leGl0KGludGVsX2RwKTsKIAllbHNlIGlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCiAJCS8qCiAJCSAqIERpc3BsYXkgV0EgIzA4ODQ6IHNr bCsKQEAgLTExNjksMTMgKzExNzEsMTMgQEAgc3RhdGljIHZvaWQgcHNyX2ZvcmNlX2h3X3RyYWNr aW5nX2V4aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkgKiBidXQgaXQg bWFrZXMgbW9yZSBzZW5zZSB3cml0ZSB0byB0aGUgY3VycmVudCBhY3RpdmUKIAkJICogcGlwZS4K IAkJICovCi0JCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBDVVJTVVJGTElWRShkZXZfcHJpdi0+ cHNyLnBpcGUpLCAwKTsKKwkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIENVUlNVUkZMSVZFKGlu dGVsX2RwLT5wc3IucGlwZSksIDApOwogCWVsc2UKIAkJLyoKIAkJICogQSB3cml0ZSB0byBDVVJT VVJGTElWRSBkbyBub3QgY2F1c2UgSFcgdHJhY2tpbmcgdG8gZXhpdCBQU1IKIAkJICogb24gb2xk ZXIgZ2VucyBzbyBkb2luZyB0aGUgbWFudWFsIGV4aXQgaW5zdGVhZC4KIAkJICovCi0JCWludGVs X3Bzcl9leGl0KGRldl9wcml2KTsKKwkJaW50ZWxfcHNyX2V4aXQoaW50ZWxfZHApOwogfQogCiB2 b2lkIGludGVsX3BzcjJfcHJvZ3JhbV9wbGFuZV9zZWxfZmV0Y2goc3RydWN0IGludGVsX3BsYW5l ICpwbGFuZSwKQEAgLTEyMjEsMTEgKzEyMjMsMTEgQEAgdm9pZCBpbnRlbF9wc3IyX3Byb2dyYW1f cGxhbmVfc2VsX2ZldGNoKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCiAJaW50ZWxfZGVfd3Jp dGVfZncoZGV2X3ByaXYsIFBMQU5FX1NFTF9GRVRDSF9TSVpFKHBpcGUsIHBsYW5lLT5pZCksIHZh bCk7CiB9CiAKLXZvaWQgaW50ZWxfcHNyMl9wcm9ncmFtX3RyYW5zX21hbl90cmtfY3RsKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQordm9pZCBpbnRlbF9wc3IyX3By b2dyYW1fdHJhbnNfbWFuX3Rya19jdGwoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKKwkJCQkJ ICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKLQlzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsK LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2Uu ZGV2KTsKLQlzdHJ1Y3QgaTkxNV9wc3IgKnBzciA9ICZkZXZfcHJpdi0+cHNyOworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOworCXN0cnVj dCBpbnRlbF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+cHNyOwogCiAJaWYgKCFIQVNfUFNSMl9TRUxf RkVUQ0goZGV2X3ByaXYpIHx8CiAJICAgICFjcnRjX3N0YXRlLT5lbmFibGVfcHNyMl9zZWxfZmV0 Y2gpCkBAIC0xNDI3LDEzICsxNDI5LDEzIEBAIHZvaWQgaW50ZWxfcHNyX3VwZGF0ZShzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLAogCQkgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9z dGF0ZSAqY29ubl9zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkcF90b19pOTE1KGludGVsX2RwKTsKLQlzdHJ1Y3QgaTkxNV9wc3IgKnBzciA9ICZkZXZfcHJp di0+cHNyOworCXN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+cHNyOwogCWJvb2wg ZW5hYmxlLCBwc3IyX2VuYWJsZTsKIAotCWlmICghQ0FOX1BTUihkZXZfcHJpdikgfHwgUkVBRF9P TkNFKHBzci0+ZHApICE9IGludGVsX2RwKQorCWlmICghQ0FOX1BTUihpbnRlbF9kcCkpCiAJCXJl dHVybjsKIAotCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7CisJbXV0ZXhfbG9jaygm aW50ZWxfZHAtPnBzci5sb2NrKTsKIAogCWVuYWJsZSA9IGNydGNfc3RhdGUtPmhhc19wc3I7CiAJ cHNyMl9lbmFibGUgPSBjcnRjX3N0YXRlLT5oYXNfcHNyMjsKQEAgLTE0NDEsMTUgKzE0NDMsMTUg QEAgdm9pZCBpbnRlbF9wc3JfdXBkYXRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJaWYg KGVuYWJsZSA9PSBwc3ItPmVuYWJsZWQgJiYgcHNyMl9lbmFibGUgPT0gcHNyLT5wc3IyX2VuYWJs ZWQpIHsKIAkJLyogRm9yY2UgYSBQU1IgZXhpdCB3aGVuIGVuYWJsaW5nIENSQyB0byBhdm9pZCBD UkMgdGltZW91dHMgKi8KIAkJaWYgKGNydGNfc3RhdGUtPmNyY19lbmFibGVkICYmIHBzci0+ZW5h YmxlZCkKLQkJCXBzcl9mb3JjZV9od190cmFja2luZ19leGl0KGRldl9wcml2KTsKKwkJCXBzcl9m b3JjZV9od190cmFja2luZ19leGl0KGludGVsX2RwKTsKIAkJZWxzZSBpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA8IDkgJiYgcHNyLT5lbmFibGVkKSB7CiAJCQkvKgogCQkJICogQWN0aXZhdGUgUFNS IGFnYWluIGFmdGVyIGEgZm9yY2UgZXhpdCB3aGVuIGVuYWJsaW5nCiAJCQkgKiBDUkMgaW4gb2xk ZXIgZ2VucwogCQkJICovCi0JCQlpZiAoIWRldl9wcml2LT5wc3IuYWN0aXZlICYmCi0JCQkgICAg IWRldl9wcml2LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzKQotCQkJCXNjaGVkdWxlX3dvcmso JmRldl9wcml2LT5wc3Iud29yayk7CisJCQlpZiAoIWludGVsX2RwLT5wc3IuYWN0aXZlICYmCisJ CQkgICAgIWludGVsX2RwLT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzKQorCQkJCXNjaGVkdWxl X3dvcmsoJmludGVsX2RwLT5wc3Iud29yayk7CiAJCX0KIAogCQlnb3RvIHVubG9jazsKQEAgLTE0 NTksMzQgKzE0NjEsMjMgQEAgdm9pZCBpbnRlbF9wc3JfdXBkYXRlKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsCiAJCWludGVsX3Bzcl9kaXNhYmxlX2xvY2tlZChpbnRlbF9kcCk7CiAKIAlpZiAo ZW5hYmxlKQotCQlpbnRlbF9wc3JfZW5hYmxlX2xvY2tlZChkZXZfcHJpdiwgY3J0Y19zdGF0ZSwg Y29ubl9zdGF0ZSk7CisJCWludGVsX3Bzcl9lbmFibGVfbG9ja2VkKGludGVsX2RwLCBjcnRjX3N0 YXRlLCBjb25uX3N0YXRlKTsKIAogdW5sb2NrOgotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBz ci5sb2NrKTsKKwltdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7CiB9CiAKIC8qKgot ICogaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUgLSB3YWl0IGZvciBQU1IxIHRvIGlkbGUKLSAqIEBu ZXdfY3J0Y19zdGF0ZTogbmV3IENSVEMgc3RhdGUKKyAqIHBzcl93YWl0X2Zvcl9pZGxlIC0gd2Fp dCBmb3IgUFNSMSB0byBpZGxlCisgKiBAaW50ZWxfZHA6IEludGVsIERQCiAgKiBAb3V0X3ZhbHVl OiBQU1Igc3RhdHVzIGluIGNhc2Ugb2YgZmFpbHVyZQogICoKLSAqIFRoaXMgZnVuY3Rpb24gaXMg ZXhwZWN0ZWQgdG8gYmUgY2FsbGVkIGZyb20gcGlwZV91cGRhdGVfc3RhcnQoKSB3aGVyZSBpdCBp cwotICogbm90IGV4cGVjdGVkIHRvIHJhY2Ugd2l0aCBQU1IgZW5hYmxlIG9yIGRpc2FibGUuCi0g KgogICogUmV0dXJuczogMCBvbiBzdWNjZXNzIG9yIC1FVElNRU9VVCBpZiBQU1Igc3RhdHVzIGRv ZXMgbm90IGlkbGUuCisgKgogICovCi1pbnQgaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlLAotCQkJICAgIHUzMiAqb3V0 X3ZhbHVlKQorc3RhdGljIGludCBwc3Jfd2FpdF9mb3JfaWRsZShzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLCB1MzIgKm91dF92YWx1ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRv X2ludGVsX2NydGMobmV3X2NydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Ci0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Ci0KLQlpZiAoIWRl dl9wcml2LT5wc3IuZW5hYmxlZCB8fCAhbmV3X2NydGNfc3RhdGUtPmhhc19wc3IpCi0JCXJldHVy biAwOwotCi0JLyogRklYTUU6IFVwZGF0ZSB0aGlzIGZvciBQU1IyIGlmIHdlIG5lZWQgdG8gd2Fp dCBmb3IgaWRsZSAqLwotCWlmIChSRUFEX09OQ0UoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQp KQotCQlyZXR1cm4gMDsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90 b19pOTE1KGludGVsX2RwKTsKIAogCS8qCiAJICogRnJvbSBic3BlYzogUGFuZWwgU2VsZiBSZWZy ZXNoIChCRFcrKQpAQCAtMTQ5NCwzMiArMTQ4NSw2NCBAQCBpbnQgaW50ZWxfcHNyX3dhaXRfZm9y X2lkbGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlLAogCSAq IGV4aXQgdHJhaW5pbmcgdGltZSArIDEuNSBtcyBvZiBhdXggY2hhbm5lbCBoYW5kc2hha2UuIDUw IG1zIGlzCiAJICogZGVmZW5zaXZlIGVub3VnaCB0byBjb3ZlciBldmVyeXRoaW5nLgogCSAqLwot CiAJcmV0dXJuIF9faW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoJmRldl9wcml2LT51bmNvcmUsCi0J CQkJCSBFRFBfUFNSX1NUQVRVUyhkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpLAorCQkJCQkgRURQ X1BTUl9TVEFUVVMoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSwKIAkJCQkJIEVEUF9QU1JfU1RB VFVTX1NUQVRFX01BU0ssCiAJCQkJCSBFRFBfUFNSX1NUQVRVU19TVEFURV9JRExFLCAyLCA1MCwK IAkJCQkJIG91dF92YWx1ZSk7CiB9CiAKLXN0YXRpYyBib29sIF9fcHNyX3dhaXRfZm9yX2lkbGVf bG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKKy8qKgorICogaW50ZWxf cHNyX3dhaXRfZm9yX2lkbGUgLSB3YWl0IGZvciBQU1IxIHRvIGlkbGUKKyAqIEBuZXdfY3J0Y19z dGF0ZTogbmV3IENSVEMgc3RhdGUKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRv IGJlIGNhbGxlZCBmcm9tIHBpcGVfdXBkYXRlX3N0YXJ0KCkgd2hlcmUgaXQgaXMKKyAqIG5vdCBl eHBlY3RlZCB0byByYWNlIHdpdGggUFNSIGVuYWJsZSBvciBkaXNhYmxlLgorICovCit2b2lkIGlu dGVsX3Bzcl93YWl0X2Zvcl9pZGxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdf Y3J0Y19zdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KG5ld19jcnRjX3N0YXRlLT51YXBpLmNydGMtPmRldik7CisJc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXI7CisJdTMyIHBzcl9zdGF0dXM7CisKKwlpZiAoIW5ld19jcnRjX3N0YXRlLT5o YXNfcHNyKQorCQlyZXR1cm47CisKKwlmb3JfZWFjaF9pbnRlbF9kcCgmZGV2X3ByaXYtPmRybSwg ZW5jb2RlcikgeworCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2Rw KGVuY29kZXIpOworCisJCWlmIChlbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9FRFApCisJ CQljb250aW51ZTsKKworCQkvKiB3aGVuIHRoZSBQU1IxIGlzIGVuYWJsZWQgKi8KKwkJaWYgKGlu dGVsX2RwLT5wc3IuZW5hYmxlZCAmJiAhaW50ZWxfZHAtPnBzci5wc3IyX2VuYWJsZWQpIHsKKwkJ CWlmIChwc3Jfd2FpdF9mb3JfaWRsZShpbnRlbF9kcCwgJnBzcl9zdGF0dXMpKQorCQkJCWRybV9l cnIoJmRldl9wcml2LT5kcm0sCisJCQkJCSJQU1IgaWRsZSB0aW1lZCBvdXQgMHgleCwgYXRvbWlj IHVwZGF0ZSBtYXkgZmFpbFxuIiwKKwkJCQkJcHNyX3N0YXR1cyk7CisJCX0KKwl9Cit9CisKK3N0 YXRpYyBib29sIF9fcHNyX3dhaXRfZm9yX2lkbGVfbG9ja2VkKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHApCiB7CiAJaTkxNV9yZWdfdCByZWc7CiAJdTMyIG1hc2s7CiAJaW50IGVycjsKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKIAot CWlmICghZGV2X3ByaXYtPnBzci5lbmFibGVkKQorCWlmICghaW50ZWxfZHAtPnBzci5lbmFibGVk KQogCQlyZXR1cm4gZmFsc2U7CiAKLQlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQpIHsK LQkJcmVnID0gRURQX1BTUjJfU1RBVFVTKGRldl9wcml2LT5wc3IudHJhbnNjb2Rlcik7CisJaWYg KGludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkKSB7CisJCXJlZyA9IEVEUF9QU1IyX1NUQVRVUyhp bnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpOwogCQltYXNrID0gRURQX1BTUjJfU1RBVFVTX1NUQVRF X01BU0s7CiAJfSBlbHNlIHsKLQkJcmVnID0gRURQX1BTUl9TVEFUVVMoZGV2X3ByaXYtPnBzci50 cmFuc2NvZGVyKTsKKwkJcmVnID0gRURQX1BTUl9TVEFUVVMoaW50ZWxfZHAtPnBzci50cmFuc2Nv ZGVyKTsKIAkJbWFzayA9IEVEUF9QU1JfU1RBVFVTX1NUQVRFX01BU0s7CiAJfQogCi0JbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOworCW11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBz ci5sb2NrKTsKIAogCWVyciA9IGludGVsX2RlX3dhaXRfZm9yX2NsZWFyKGRldl9wcml2LCByZWcs IG1hc2ssIDUwKTsKIAlpZiAoZXJyKQpAQCAtMTUyNyw4ICsxNTUwLDggQEAgc3RhdGljIGJvb2wg X19wc3Jfd2FpdF9mb3JfaWRsZV9sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCQkJIlRpbWVkIG91dCB3YWl0aW5nIGZvciBQU1IgSWRsZSBmb3IgcmUtZW5hYmxlXG4i KTsKIAogCS8qIEFmdGVyIHRoZSB1bmxvY2tlZCB3YWl0LCB2ZXJpZnkgdGhhdCBQU1IgaXMgc3Rp bGwgd2FudGVkISAqLwotCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7Ci0JcmV0dXJu IGVyciA9PSAwICYmIGRldl9wcml2LT5wc3IuZW5hYmxlZDsKKwltdXRleF9sb2NrKCZpbnRlbF9k cC0+cHNyLmxvY2spOworCXJldHVybiBlcnIgPT0gMCAmJiBpbnRlbF9kcC0+cHNyLmVuYWJsZWQ7 CiB9CiAKIHN0YXRpYyBpbnQgaW50ZWxfcHNyX2Zhc3RzZXRfZm9yY2Uoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQpAQCAtMTU5NCwxMSArMTYxNywxMiBAQCBzdGF0aWMgaW50IGlu dGVsX3Bzcl9mYXN0c2V0X2ZvcmNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK IAlyZXR1cm4gZXJyOwogfQogCi1pbnQgaW50ZWxfcHNyX2RlYnVnX3NldChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCB2YWwpCitpbnQgaW50ZWxfcHNyX2RlYnVnX3NldChz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1NjQgdmFsKQogewogCWNvbnN0IHUzMiBtb2RlID0g dmFsICYgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLOwogCXUzMiBvbGRfbW9kZTsKIAlpbnQgcmV0 OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxf ZHApOwogCiAJaWYgKHZhbCAmIH4oSTkxNV9QU1JfREVCVUdfSVJRIHwgSTkxNV9QU1JfREVCVUdf TU9ERV9NQVNLKSB8fAogCSAgICBtb2RlID4gSTkxNV9QU1JfREVCVUdfRk9SQ0VfUFNSMSkgewpA QCAtMTYwNiwyMSArMTYzMCwyMSBAQCBpbnQgaW50ZWxfcHNyX2RlYnVnX3NldChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCB2YWwpCiAJCXJldHVybiAtRUlOVkFMOwogCX0K IAotCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2X3ByaXYtPnBzci5sb2NrKTsK KwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmludGVsX2RwLT5wc3IubG9jayk7CiAJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCW9sZF9tb2RlID0gZGV2X3ByaXYtPnBzci5kZWJ1 ZyAmIEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSzsKLQlkZXZfcHJpdi0+cHNyLmRlYnVnID0gdmFs OworCW9sZF9tb2RlID0gaW50ZWxfZHAtPnBzci5kZWJ1ZyAmIEk5MTVfUFNSX0RFQlVHX01PREVf TUFTSzsKKwlpbnRlbF9kcC0+cHNyLmRlYnVnID0gdmFsOwogCiAJLyoKIAkgKiBEbyBpdCByaWdo dCBhd2F5IGlmIGl0J3MgYWxyZWFkeSBlbmFibGVkLCBvdGhlcndpc2UgaXQgd2lsbCBiZSBkb25l CiAJICogd2hlbiBlbmFibGluZyB0aGUgc291cmNlLgogCSAqLwotCWlmIChkZXZfcHJpdi0+cHNy LmVuYWJsZWQpCi0JCXBzcl9pcnFfY29udHJvbChkZXZfcHJpdik7CisJaWYgKGludGVsX2RwLT5w c3IuZW5hYmxlZCkKKwkJcHNyX2lycV9jb250cm9sKGludGVsX2RwKTsKIAotCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPnBzci5sb2NrKTsKKwltdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9j ayk7CiAKIAlpZiAob2xkX21vZGUgIT0gbW9kZSkKIAkJcmV0ID0gaW50ZWxfcHNyX2Zhc3RzZXRf Zm9yY2UoZGV2X3ByaXYpOwpAQCAtMTYyOCwyOCArMTY1MiwyOCBAQCBpbnQgaW50ZWxfcHNyX2Rl YnVnX3NldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCB2YWwpCiAJcmV0 dXJuIHJldDsKIH0KIAotc3RhdGljIHZvaWQgaW50ZWxfcHNyX2hhbmRsZV9pcnEoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3RhdGljIHZvaWQgaW50ZWxfcHNyX2hhbmRsZV9p cnEoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsKLQlzdHJ1Y3QgaTkxNV9wc3IgKnBzciA9 ICZkZXZfcHJpdi0+cHNyOworCXN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+cHNy OwogCi0JaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKHBzci0+ZHApOworCWludGVsX3Bzcl9kaXNh YmxlX2xvY2tlZChpbnRlbF9kcCk7CiAJcHNyLT5zaW5rX25vdF9yZWxpYWJsZSA9IHRydWU7CiAJ LyogbGV0J3MgbWFrZSBzdXJlIHRoYXQgc2luayBpcyBhd2FrZW4gKi8KLQlkcm1fZHBfZHBjZF93 cml0ZWIoJnBzci0+ZHAtPmF1eCwgRFBfU0VUX1BPV0VSLCBEUF9TRVRfUE9XRVJfRDApOworCWRy bV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1eCwgRFBfU0VUX1BPV0VSLCBEUF9TRVRfUE9X RVJfRDApOwogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9wc3Jfd29yayhzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KLQkJY29u dGFpbmVyX29mKHdvcmssIHR5cGVvZigqZGV2X3ByaXYpLCBwc3Iud29yayk7CisJc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCA9CisJCWNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKmludGVsX2Rw KSwgcHNyLndvcmspOwogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKKwltdXRl eF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOwogCi0JaWYgKCFkZXZfcHJpdi0+cHNyLmVuYWJs ZWQpCisJaWYgKCFpbnRlbF9kcC0+cHNyLmVuYWJsZWQpCiAJCWdvdG8gdW5sb2NrOwogCi0JaWYg KFJFQURfT05DRShkZXZfcHJpdi0+cHNyLmlycV9hdXhfZXJyb3IpKQotCQlpbnRlbF9wc3JfaGFu ZGxlX2lycShkZXZfcHJpdik7CisJaWYgKFJFQURfT05DRShpbnRlbF9kcC0+cHNyLmlycV9hdXhf ZXJyb3IpKQorCQlpbnRlbF9wc3JfaGFuZGxlX2lycShpbnRlbF9kcCk7CiAKIAkvKgogCSAqIFdl IGhhdmUgdG8gbWFrZSBzdXJlIFBTUiBpcyByZWFkeSBmb3IgcmUtZW5hYmxlCkBAIC0xNjU3LDcg KzE2ODEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3Jfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3Qg KndvcmspCiAJICogUFNSIG1pZ2h0IHRha2Ugc29tZSB0aW1lIHRvIGdldCBmdWxseSBkaXNhYmxl ZAogCSAqIGFuZCBiZSByZWFkeSBmb3IgcmUtZW5hYmxlLgogCSAqLwotCWlmICghX19wc3Jfd2Fp dF9mb3JfaWRsZV9sb2NrZWQoZGV2X3ByaXYpKQorCWlmICghX19wc3Jfd2FpdF9mb3JfaWRsZV9s b2NrZWQoaW50ZWxfZHApKQogCQlnb3RvIHVubG9jazsKIAogCS8qCkBAIC0xNjY1LDEyICsxNjg5 LDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29y aykKIAkgKiByZWNoZWNrLiBTaW5jZSBwc3JfZmx1c2ggZmlyc3QgY2xlYXJzIHRoaXMgYW5kIHRo ZW4gcmVzY2hlZHVsZXMgd2UKIAkgKiB3b24ndCBldmVyIG1pc3MgYSBmbHVzaCB3aGVuIGJhaWxp bmcgb3V0IGhlcmUuCiAJICovCi0JaWYgKGRldl9wcml2LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9i aXRzIHx8IGRldl9wcml2LT5wc3IuYWN0aXZlKQorCWlmIChpbnRlbF9kcC0+cHNyLmJ1c3lfZnJv bnRidWZmZXJfYml0cyB8fCBpbnRlbF9kcC0+cHNyLmFjdGl2ZSkKIAkJZ290byB1bmxvY2s7CiAK LQlpbnRlbF9wc3JfYWN0aXZhdGUoZGV2X3ByaXYtPnBzci5kcCk7CisJaW50ZWxfcHNyX2FjdGl2 YXRlKGludGVsX2RwKTsKIHVubG9jazoKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9j ayk7CisJbXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOwogfQogCiAvKioKQEAgLTE2 ODksMjcgKzE3MTMsMzUgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX3dvcmsoc3RydWN0IHdvcmtf c3RydWN0ICp3b3JrKQogdm9pZCBpbnRlbF9wc3JfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgIHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMsIGVudW0g ZmJfb3Bfb3JpZ2luIG9yaWdpbikKIHsKLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQotCQlyZXR1 cm47CisJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7CisJc3RydWN0IGludGVsX2RwICpp bnRlbF9kcDsKIAotCWlmIChvcmlnaW4gPT0gT1JJR0lOX0ZMSVApCi0JCXJldHVybjsKKwlmb3Jf ZWFjaF9pbnRlbF9kcCgmZGV2X3ByaXYtPmRybSwgZW5jb2RlcikgewogCi0JbXV0ZXhfbG9jaygm ZGV2X3ByaXYtPnBzci5sb2NrKTsKLQlpZiAoIWRldl9wcml2LT5wc3IuZW5hYmxlZCkgewotCQlt dXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7Ci0JCXJldHVybjsKLQl9CisJCWludGVs X2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOworCQlpZiAoZW5jb2Rlci0+dHlwZSAhPSBJ TlRFTF9PVVRQVVRfRURQKQorCQkJY29udGludWU7CisJCWlmICghQ0FOX1BTUihpbnRlbF9kcCkp CisJCQljb250aW51ZTsKIAotCWZyb250YnVmZmVyX2JpdHMgJj0gSU5URUxfRlJPTlRCVUZGRVJf QUxMX01BU0soZGV2X3ByaXYtPnBzci5waXBlKTsKLQlkZXZfcHJpdi0+cHNyLmJ1c3lfZnJvbnRi dWZmZXJfYml0cyB8PSBmcm9udGJ1ZmZlcl9iaXRzOworCQlpZiAob3JpZ2luID09IE9SSUdJTl9G TElQKQorCQkJY29udGludWU7CisKKwkJbXV0ZXhfbG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsK KwkJaWYgKCFpbnRlbF9kcC0+cHNyLmVuYWJsZWQpIHsKKwkJCW11dGV4X3VubG9jaygmaW50ZWxf ZHAtPnBzci5sb2NrKTsKKwkJCWNvbnRpbnVlOworCQl9CiAKLQlpZiAoZnJvbnRidWZmZXJfYml0 cykKLQkJaW50ZWxfcHNyX2V4aXQoZGV2X3ByaXYpOworCQlmcm9udGJ1ZmZlcl9iaXRzICY9IElO VEVMX0ZST05UQlVGRkVSX0FMTF9NQVNLKGludGVsX2RwLT5wc3IucGlwZSk7CisJCWludGVsX2Rw LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzIHw9IGZyb250YnVmZmVyX2JpdHM7CiAKLQltdXRl eF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7Ci19CisJCWlmIChmcm9udGJ1ZmZlcl9iaXRz KQorCQkJaW50ZWxfcHNyX2V4aXQoaW50ZWxfZHApOwogCisJCW11dGV4X3VubG9jaygmaW50ZWxf ZHAtPnBzci5sb2NrKTsKKwl9Cit9CiAvKgogICogV2hlbiB3ZSB3aWxsIGJlIGNvbXBsZXRlbHkg cmVseSBvbiBQU1IyIFMvVyB0cmFja2luZyBpbiBmdXR1cmUsCiAgKiBpbnRlbF9wc3JfZmx1c2go KSB3aWxsIGludmFsaWRhdGUgYW5kIGZsdXNoIHRoZSBQU1IgZm9yIE9SSUdJTl9GTElQCkBAIC0x NzE3LDE1ICsxNzQ5LDE1IEBAIHZvaWQgaW50ZWxfcHNyX2ludmFsaWRhdGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogICogYWNjb3JkaW5nbHkgaW4gZnV0dXJlLgogICovCiBz dGF0aWMgdm9pZAotdGdsX2RjM2NvX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKLQkJdW5zaWduZWQgaW50IGZyb250YnVmZmVyX2JpdHMsIGVudW0gZmJfb3Bfb3JpZ2lu IG9yaWdpbikKK3RnbF9kYzNjb19mbHVzaChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1bnNp Z25lZCBpbnQgZnJvbnRidWZmZXJfYml0cywKKwkJZW51bSBmYl9vcF9vcmlnaW4gb3JpZ2luKQog ewotCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7CisJbXV0ZXhfbG9jaygmaW50ZWxf ZHAtPnBzci5sb2NrKTsKIAotCWlmICghZGV2X3ByaXYtPnBzci5kYzNjb19lbmFibGVkKQorCWlm ICghaW50ZWxfZHAtPnBzci5kYzNjb19lbmFibGVkKQogCQlnb3RvIHVubG9jazsKIAotCWlmICgh ZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQgfHwgIWRldl9wcml2LT5wc3IuYWN0aXZlKQorCWlm ICghaW50ZWxfZHAtPnBzci5wc3IyX2VuYWJsZWQgfHwgIWludGVsX2RwLT5wc3IuYWN0aXZlKQog CQlnb3RvIHVubG9jazsKIAogCS8qCkBAIC0xNzMzLDE1ICsxNzY1LDE1IEBAIHRnbF9kYzNjb19m bHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJICogd2hlbiBkZWxheWVk IHdvcmsgc2NoZWR1bGVzIHRoYXQgbWVhbnMgZGlzcGxheSBoYXMgYmVlbiBpZGxlLgogCSAqLwog CWlmICghKGZyb250YnVmZmVyX2JpdHMgJgotCSAgICBJTlRFTF9GUk9OVEJVRkZFUl9BTExfTUFT SyhkZXZfcHJpdi0+cHNyLnBpcGUpKSkKKwkgICAgSU5URUxfRlJPTlRCVUZGRVJfQUxMX01BU0so aW50ZWxfZHAtPnBzci5waXBlKSkpCiAJCWdvdG8gdW5sb2NrOwogCi0JdGdsX3BzcjJfZW5hYmxl X2RjM2NvKGRldl9wcml2KTsKLQltb2RfZGVsYXllZF93b3JrKHN5c3RlbV93cSwgJmRldl9wcml2 LT5wc3IuZGMzY29fd29yaywKLQkJCSBkZXZfcHJpdi0+cHNyLmRjM2NvX2V4aXRfZGVsYXkpOwor CXRnbF9wc3IyX2VuYWJsZV9kYzNjbyhpbnRlbF9kcCk7CisJbW9kX2RlbGF5ZWRfd29yayhzeXN0 ZW1fd3EsICZpbnRlbF9kcC0+cHNyLmRjM2NvX3dvcmssCisJCQkgaW50ZWxfZHAtPnBzci5kYzNj b19leGl0X2RlbGF5KTsKIAogdW5sb2NrOgotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5s b2NrKTsKKwltdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7CiB9CiAKIC8qKgpAQCAt MTc2MCw0NSArMTc5Miw1NCBAQCB0Z2xfZGMzY29fZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAogdm9pZCBpbnRlbF9wc3JfZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAogCQkgICAgIHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMsIGVudW0gZmJf b3Bfb3JpZ2luIG9yaWdpbikKIHsKLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQotCQlyZXR1cm47 CisJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7CisJc3RydWN0IGludGVsX2RwICppbnRl bF9kcDsKIAotCWlmIChvcmlnaW4gPT0gT1JJR0lOX0ZMSVApIHsKLQkJdGdsX2RjM2NvX2ZsdXNo KGRldl9wcml2LCBmcm9udGJ1ZmZlcl9iaXRzLCBvcmlnaW4pOwotCQlyZXR1cm47Ci0JfQorCWZv cl9lYWNoX2ludGVsX2RwKCZkZXZfcHJpdi0+ZHJtLCBlbmNvZGVyKSB7CisJCWludGVsX2RwID0g ZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOwogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5s b2NrKTsKLQlpZiAoIWRldl9wcml2LT5wc3IuZW5hYmxlZCkgewotCQltdXRleF91bmxvY2soJmRl dl9wcml2LT5wc3IubG9jayk7Ci0JCXJldHVybjsKLQl9CisJCWlmIChlbmNvZGVyLT50eXBlID09 IElOVEVMX09VVFBVVF9FRFAgJiYgQ0FOX1BTUihpbnRlbF9kcCkpIHsKKwkJCWlmIChvcmlnaW4g PT0gT1JJR0lOX0ZMSVApIHsKKwkJCQl0Z2xfZGMzY29fZmx1c2goaW50ZWxfZHAsIGZyb250YnVm ZmVyX2JpdHMsIG9yaWdpbik7CisJCQkJY29udGludWU7CisJCQl9CiAKLQlmcm9udGJ1ZmZlcl9i aXRzICY9IElOVEVMX0ZST05UQlVGRkVSX0FMTF9NQVNLKGRldl9wcml2LT5wc3IucGlwZSk7Ci0J ZGV2X3ByaXYtPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMgJj0gfmZyb250YnVmZmVyX2JpdHM7 CisJCQltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOworCQkJaWYgKCFpbnRlbF9kcC0+ cHNyLmVuYWJsZWQpIHsKKwkJCQltdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7CisJ CQkJY29udGludWU7CisJCQl9CiAKLQkvKiBCeSBkZWZpbml0aW9uIGZsdXNoID0gaW52YWxpZGF0 ZSArIGZsdXNoICovCi0JaWYgKGZyb250YnVmZmVyX2JpdHMpCi0JCXBzcl9mb3JjZV9od190cmFj a2luZ19leGl0KGRldl9wcml2KTsKKwkJCWZyb250YnVmZmVyX2JpdHMgJj0gSU5URUxfRlJPTlRC VUZGRVJfQUxMX01BU0soaW50ZWxfZHAtPnBzci5waXBlKTsKKwkJCWludGVsX2RwLT5wc3IuYnVz eV9mcm9udGJ1ZmZlcl9iaXRzICY9IH5mcm9udGJ1ZmZlcl9iaXRzOwogCi0JaWYgKCFkZXZfcHJp di0+cHNyLmFjdGl2ZSAmJiAhZGV2X3ByaXYtPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMpCi0J CXNjaGVkdWxlX3dvcmsoJmRldl9wcml2LT5wc3Iud29yayk7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZf cHJpdi0+cHNyLmxvY2spOworCQkJLyogQnkgZGVmaW5pdGlvbiBmbHVzaCA9IGludmFsaWRhdGUg KyBmbHVzaCAqLworCQkJaWYgKGZyb250YnVmZmVyX2JpdHMpCisJCQkJcHNyX2ZvcmNlX2h3X3Ry YWNraW5nX2V4aXQoaW50ZWxfZHApOworCisJCQlpZiAoIWludGVsX2RwLT5wc3IuYWN0aXZlICYm ICFpbnRlbF9kcC0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cykKKwkJCQlzY2hlZHVsZV93b3Jr KCZpbnRlbF9kcC0+cHNyLndvcmspOworCQkJbXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+cHNyLmxv Y2spOworCQl9CisJfQogfQogCiAvKioKICAqIGludGVsX3Bzcl9pbml0IC0gSW5pdCBiYXNpYyBQ U1Igd29yayBhbmQgbXV0ZXguCi0gKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlIHByaXZhdGUKKyAq IEBpbnRlbF9kcDogSW50ZWwgRFAKICAqCi0gKiBUaGlzIGZ1bmN0aW9uIGlzICBjYWxsZWQgb25s eSBvbmNlIGF0IGRyaXZlciBsb2FkIHRvIGluaXRpYWxpemUgYmFzaWMKLSAqIFBTUiBzdHVmZi4K KyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFmdGVyIHRoZSBpbml0aWFsaXppbmcgY29ubmVj dG9yLgorICogKHRoZSBpbml0aWFsaXppbmcgb2YgY29ubmVjdG9yIHRyZWF0cyB0aGUgaGFuZGxp bmcgb2YgY29ubmVjdG9yIGNhcGFiaWxpdGllcykKKyAqIEFuZCBpdCBpbml0aWFsaXplcyBiYXNp YyBQU1Igc3R1ZmYgZm9yIGVhY2ggRFAgRW5jb2Rlci4KICAqLwotdm9pZCBpbnRlbF9wc3JfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit2b2lkIGludGVsX3Bzcl9pbml0 KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiB7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7CisKIAlpZiAoIUhBU19QU1IoZGV2X3By aXYpKQogCQlyZXR1cm47CiAKLQlpZiAoIWRldl9wcml2LT5wc3Iuc2lua19zdXBwb3J0KQorCWlm ICghaW50ZWxfZHAtPnBzci5zaW5rX3N1cHBvcnQpCiAJCXJldHVybjsKIAogCWlmIChJU19IQVNX RUxMKGRldl9wcml2KSkKQEAgLTE4MTYsMTQgKzE4NTcsMTQgQEAgdm9pZCBpbnRlbF9wc3JfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJLyogU2V0IGxpbmtfc3RhbmRi eSB4IGxpbmtfb2ZmIGRlZmF1bHRzICovCiAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElT X0JST0FEV0VMTChkZXZfcHJpdikpCiAJCS8qIEhTVyBhbmQgQkRXIHJlcXVpcmUgd29ya2Fyb3Vu ZHMgdGhhdCB3ZSBkb24ndCBpbXBsZW1lbnQuICovCi0JCWRldl9wcml2LT5wc3IubGlua19zdGFu ZGJ5ID0gZmFsc2U7CisJCWludGVsX2RwLT5wc3IubGlua19zdGFuZGJ5ID0gZmFsc2U7CiAJZWxz ZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDEyKQogCQkvKiBGb3IgbmV3IHBsYXRmb3JtcyB1 cCB0byBUR0wgbGV0J3MgcmVzcGVjdCBWQlQgYmFjayBhZ2FpbiAqLwotCQlkZXZfcHJpdi0+cHNy Lmxpbmtfc3RhbmRieSA9IGRldl9wcml2LT52YnQucHNyLmZ1bGxfbGluazsKKwkJaW50ZWxfZHAt PnBzci5saW5rX3N0YW5kYnkgPSBkZXZfcHJpdi0+dmJ0LnBzci5mdWxsX2xpbms7CiAKLQlJTklU X1dPUksoJmRldl9wcml2LT5wc3Iud29yaywgaW50ZWxfcHNyX3dvcmspOwotCUlOSVRfREVMQVlF RF9XT1JLKCZkZXZfcHJpdi0+cHNyLmRjM2NvX3dvcmssIHRnbF9kYzNjb19kaXNhYmxlX3dvcmsp OwotCW11dGV4X2luaXQoJmRldl9wcml2LT5wc3IubG9jayk7CisJSU5JVF9XT1JLKCZpbnRlbF9k cC0+cHNyLndvcmssIGludGVsX3Bzcl93b3JrKTsKKwlJTklUX0RFTEFZRURfV09SSygmaW50ZWxf ZHAtPnBzci5kYzNjb193b3JrLCB0Z2xfZGMzY29fZGlzYWJsZV93b3JrKTsKKwltdXRleF9pbml0 KCZpbnRlbF9kcC0+cHNyLmxvY2spOwogfQogCiBzdGF0aWMgaW50IHBzcl9nZXRfc3RhdHVzX2Fu ZF9lcnJvcl9zdGF0dXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKQEAgLTE4NDksNyArMTg5 MCw3IEBAIHN0YXRpYyB2b2lkIHBzcl9hbHBtX2NoZWNrKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShp bnRlbF9kcCk7CiAJc3RydWN0IGRybV9kcF9hdXggKmF1eCA9ICZpbnRlbF9kcC0+YXV4OwotCXN0 cnVjdCBpOTE1X3BzciAqcHNyID0gJmRldl9wcml2LT5wc3I7CisJc3RydWN0IGludGVsX3BzciAq cHNyID0gJmludGVsX2RwLT5wc3I7CiAJdTggdmFsOwogCWludCByOwogCkBAIC0xODc2LDcgKzE5 MTcsNyBAQCBzdGF0aWMgdm9pZCBwc3JfYWxwbV9jaGVjayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKQogc3RhdGljIHZvaWQgcHNyX2NhcGFiaWxpdHlfY2hhbmdlZF9jaGVjayhzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRwX3RvX2k5MTUoaW50ZWxfZHApOwotCXN0cnVjdCBpOTE1X3BzciAqcHNyID0gJmRldl9wcml2 LT5wc3I7CisJc3RydWN0IGludGVsX3BzciAqcHNyID0gJmludGVsX2RwLT5wc3I7CiAJdTggdmFs OwogCWludCByOwogCkBAIC0xOTAwLDE4ICsxOTQxLDE4IEBAIHN0YXRpYyB2b2lkIHBzcl9jYXBh YmlsaXR5X2NoYW5nZWRfY2hlY2soc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHZvaWQgaW50 ZWxfcHNyX3Nob3J0X3B1bHNlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiB7CiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7Ci0Jc3Ry dWN0IGk5MTVfcHNyICpwc3IgPSAmZGV2X3ByaXYtPnBzcjsKKwlzdHJ1Y3QgaW50ZWxfcHNyICpw c3IgPSAmaW50ZWxfZHAtPnBzcjsKIAl1OCBzdGF0dXMsIGVycm9yX3N0YXR1czsKIAljb25zdCB1 OCBlcnJvcnMgPSBEUF9QU1JfUkZCX1NUT1JBR0VfRVJST1IgfAogCQkJICBEUF9QU1JfVlNDX1NE UF9VTkNPUlJFQ1RBQkxFX0VSUk9SIHwKIAkJCSAgRFBfUFNSX0xJTktfQ1JDX0VSUk9SOwogCi0J aWYgKCFDQU5fUFNSKGRldl9wcml2KSB8fCAhaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkKKwlp ZiAoIUNBTl9QU1IoaW50ZWxfZHApIHx8ICFpbnRlbF9kcF9pc19lZHAoaW50ZWxfZHApKQogCQly ZXR1cm47CiAKIAltdXRleF9sb2NrKCZwc3ItPmxvY2spOwogCi0JaWYgKCFwc3ItPmVuYWJsZWQg fHwgcHNyLT5kcCAhPSBpbnRlbF9kcCkKKwlpZiAoIXBzci0+ZW5hYmxlZCkKIAkJZ290byBleGl0 OwogCiAJaWYgKHBzcl9nZXRfc3RhdHVzX2FuZF9lcnJvcl9zdGF0dXMoaW50ZWxfZHAsICZzdGF0 dXMsICZlcnJvcl9zdGF0dXMpKSB7CkBAIC0xOTU0LDE1ICsxOTk1LDE0IEBAIHZvaWQgaW50ZWxf cHNyX3Nob3J0X3B1bHNlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAKIGJvb2wgaW50ZWxf cHNyX2VuYWJsZWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsKLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKIAlib29sIHJldDsK IAotCWlmICghQ0FOX1BTUihkZXZfcHJpdikgfHwgIWludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkp CisJaWYgKCFDQU5fUFNSKGludGVsX2RwKSB8fCAhaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkK IAkJcmV0dXJuIGZhbHNlOwogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKLQly ZXQgPSAoZGV2X3ByaXYtPnBzci5kcCA9PSBpbnRlbF9kcCAmJiBkZXZfcHJpdi0+cHNyLmVuYWJs ZWQpOwotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKKwltdXRleF9sb2NrKCZp bnRlbF9kcC0+cHNyLmxvY2spOworCXJldCA9IGludGVsX2RwLT5wc3IuZW5hYmxlZDsKKwltdXRl eF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7CiAKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmgKaW5kZXggMGE1MTc5NzhlOGFmLi4wM2Vi MTk1NDdkMDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf cHNyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuaApAQCAt MTgsNyArMTgsNyBAQCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlOwogc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlOwogc3RydWN0IGludGVsX3BsYW5lOwogCi0jZGVmaW5lIENBTl9QU1IoZGV2X3By aXYpIChIQVNfUFNSKGRldl9wcml2KSAmJiBkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydCkKKyNk ZWZpbmUgQ0FOX1BTUihpbnRlbF9kcCkgKEhBU19QU1IoZHBfdG9faTkxNShpbnRlbF9kcCkpICYm IGludGVsX2RwLT5wc3Iuc2lua19zdXBwb3J0KQogdm9pZCBpbnRlbF9wc3JfaW5pdF9kcGNkKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwogdm9pZCBpbnRlbF9wc3JfZW5hYmxlKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsCiAJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLApAQCAtMjgsMjQgKzI4LDI0IEBAIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGUo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIHZvaWQgaW50ZWxfcHNyX3VwZGF0ZShzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLAogCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKIAkJICAgICAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg KmNvbm5fc3RhdGUpOwotaW50IGludGVsX3Bzcl9kZWJ1Z19zZXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCB1NjQgdmFsdWUpOworaW50IGludGVsX3Bzcl9kZWJ1Z19zZXQoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwgdTY0IHZhbHVlKTsKIHZvaWQgaW50ZWxfcHNyX2ludmFs aWRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJICB1bnNpZ25lZCBm cm9udGJ1ZmZlcl9iaXRzLAogCQkJICBlbnVtIGZiX29wX29yaWdpbiBvcmlnaW4pOwogdm9pZCBp bnRlbF9wc3JfZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkgICAg IHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMsCiAJCSAgICAgZW51bSBmYl9vcF9vcmlnaW4gb3Jp Z2luKTsKLXZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KTsKK3ZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7CiB2 b2lkIGludGVsX3Bzcl9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAog CQkJICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwotdm9pZCBpbnRl bF9wc3JfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIg cHNyX2lpcik7Cit2b2lkIGludGVsX3Bzcl9pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLCB1MzIgcHNyX2lpcik7CiB2b2lkIGludGVsX3Bzcl9zaG9ydF9wdWxzZShzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKTsKLWludCBpbnRlbF9wc3Jfd2FpdF9mb3JfaWRsZShjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUsCi0JCQkgICAgdTMyICpvdXRf dmFsdWUpOwordm9pZCBpbnRlbF9wc3Jfd2FpdF9mb3JfaWRsZShjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpOwogYm9vbCBpbnRlbF9wc3JfZW5hYmxlZChzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKIGludCBpbnRlbF9wc3IyX3NlbF9mZXRjaF91cGRhdGUo c3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJCQkJc3RydWN0IGludGVsX2NydGMg KmNydGMpOwotdm9pZCBpbnRlbF9wc3IyX3Byb2dyYW1fdHJhbnNfbWFuX3Rya19jdGwoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwordm9pZCBpbnRlbF9wc3IyX3By b2dyYW1fdHJhbnNfbWFuX3Rya19jdGwoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKKwkJCQkJ ICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7CiB2b2lkIGludGVs X3BzcjJfcHJvZ3JhbV9wbGFuZV9zZWxfZmV0Y2goc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwK IAkJCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkJCWNv bnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYwppbmRleCBjZjM1ODlmZDBkZGIuLjU5ZjRj Nzc0Zjk4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9z cHJpdGUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5j CkBAIC04NSw3ICs4NSw2IEBAIHZvaWQgaW50ZWxfcGlwZV91cGRhdGVfc3RhcnQoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQogCWJvb2wgbmVlZF92bHZfZHNp X3dhID0gKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYp KSAmJgogCQlpbnRlbF9jcnRjX2hhc190eXBlKG5ld19jcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRf RFNJKTsKIAlERUZJTkVfV0FJVCh3YWl0KTsKLQl1MzIgcHNyX3N0YXR1czsKIAogCWlmIChuZXdf Y3J0Y19zdGF0ZS0+dWFwaS5hc3luY19mbGlwKQogCQlyZXR1cm47CkBAIC0xMTAsMTAgKzEwOSw3 IEBAIHZvaWQgaW50ZWxfcGlwZV91cGRhdGVfc3RhcnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKm5ld19jcnRjX3N0YXRlKQogCSAqIFZCTCBpbnRlcnJ1cHRzIHdpbGwgc3RhcnQgdGhl IFBTUiBleGl0IGFuZCBwcmV2ZW50IGEgUFNSCiAJICogcmUtZW50cnkgYXMgd2VsbC4KIAkgKi8K LQlpZiAoaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUobmV3X2NydGNfc3RhdGUsICZwc3Jfc3RhdHVz KSkKLQkJZHJtX2VycigmZGV2X3ByaXYtPmRybSwKLQkJCSJQU1IgaWRsZSB0aW1lZCBvdXQgMHgl eCwgYXRvbWljIHVwZGF0ZSBtYXkgZmFpbFxuIiwKLQkJCXBzcl9zdGF0dXMpOworCWludGVsX3Bz cl93YWl0X2Zvcl9pZGxlKG5ld19jcnRjX3N0YXRlKTsKIAogCWxvY2FsX2lycV9kaXNhYmxlKCk7 CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDVlNWJjZWYyMGUzMy4uMjExNTgwZWYzMDI3 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTQ3NSw0MiArNDc1LDYgQEAgc3RydWN0IGk5 MTVfZHJycyB7CiAJZW51bSBkcnJzX3N1cHBvcnRfdHlwZSB0eXBlOwogfTsKIAotc3RydWN0IGk5 MTVfcHNyIHsKLQlzdHJ1Y3QgbXV0ZXggbG9jazsKLQotI2RlZmluZSBJOTE1X1BTUl9ERUJVR19N T0RFX01BU0sJMHgwZgotI2RlZmluZSBJOTE1X1BTUl9ERUJVR19ERUZBVUxUCQkweDAwCi0jZGVm aW5lIEk5MTVfUFNSX0RFQlVHX0RJU0FCTEUJCTB4MDEKLSNkZWZpbmUgSTkxNV9QU1JfREVCVUdf RU5BQkxFCQkweDAyCi0jZGVmaW5lIEk5MTVfUFNSX0RFQlVHX0ZPUkNFX1BTUjEJMHgwMwotI2Rl ZmluZSBJOTE1X1BTUl9ERUJVR19JUlEJCTB4MTAKLQotCXUzMiBkZWJ1ZzsKLQlib29sIHNpbmtf c3VwcG9ydDsKLQlib29sIGVuYWJsZWQ7Ci0Jc3RydWN0IGludGVsX2RwICpkcDsKLQllbnVtIHBp cGUgcGlwZTsKLQllbnVtIHRyYW5zY29kZXIgdHJhbnNjb2RlcjsKLQlib29sIGFjdGl2ZTsKLQlz dHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKLQl1bnNpZ25lZCBidXN5X2Zyb250YnVmZmVyX2JpdHM7 Ci0JYm9vbCBzaW5rX3BzcjJfc3VwcG9ydDsKLQlib29sIGxpbmtfc3RhbmRieTsKLQlib29sIGNv bG9yaW1ldHJ5X3N1cHBvcnQ7Ci0JYm9vbCBwc3IyX2VuYWJsZWQ7Ci0JYm9vbCBwc3IyX3NlbF9m ZXRjaF9lbmFibGVkOwotCXU4IHNpbmtfc3luY19sYXRlbmN5OwotCWt0aW1lX3QgbGFzdF9lbnRy eV9hdHRlbXB0OwotCWt0aW1lX3QgbGFzdF9leGl0OwotCWJvb2wgc2lua19ub3RfcmVsaWFibGU7 Ci0JYm9vbCBpcnFfYXV4X2Vycm9yOwotCXUxNiBzdV94X2dyYW51bGFyaXR5OwotCWJvb2wgZGMz Y29fZW5hYmxlZDsKLQl1MzIgZGMzY29fZXhpdF9kZWxheTsKLQlzdHJ1Y3QgZGVsYXllZF93b3Jr IGRjM2NvX3dvcms7Ci0Jc3RydWN0IGRybV9kcF92c2Nfc2RwIHZzYzsKLX07Ci0KICNkZWZpbmUg UVVJUktfTFZEU19TU0NfRElTQUJMRSAoMTw8MSkKICNkZWZpbmUgUVVJUktfSU5WRVJUX0JSSUdI VE5FU1MgKDE8PDIpCiAjZGVmaW5lIFFVSVJLX0JBQ0tMSUdIVF9QUkVTRU5UICgxPDwzKQpAQCAt MTAzOCw4ICsxMDAyLDYgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCiAJc3RydWN0IGk5 MTVfcG93ZXJfZG9tYWlucyBwb3dlcl9kb21haW5zOwogCi0Jc3RydWN0IGk5MTVfcHNyIHBzcjsK LQogCXN0cnVjdCBpOTE1X2dwdV9lcnJvciBncHVfZXJyb3I7CiAKIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqdmx2X3BjdHg7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwppbmRleCBkZDE5NzEw NDBiYmMuLmEwMWZjYjA0NzRhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9pcnEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCkBAIC0yMDY2LDEw ICsyMDY2LDIyIEBAIHN0YXRpYyB2b2lkIGl2Yl9kaXNwbGF5X2lycV9oYW5kbGVyKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJaXZiX2Vycl9pbnRfaGFuZGxlcihkZXZfcHJp dik7CiAKIAlpZiAoZGVfaWlyICYgREVfRURQX1BTUl9JTlRfSFNXKSB7Ci0JCXUzMiBwc3JfaWly ID0gaW50ZWxfdW5jb3JlX3JlYWQoJmRldl9wcml2LT51bmNvcmUsIEVEUF9QU1JfSUlSKTsKKwkJ c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7CiAKLQkJaW50ZWxfcHNyX2lycV9oYW5kbGVy KGRldl9wcml2LCBwc3JfaWlyKTsKLQkJaW50ZWxfdW5jb3JlX3dyaXRlKCZkZXZfcHJpdi0+dW5j b3JlLCBFRFBfUFNSX0lJUiwgcHNyX2lpcik7CisJCWZvcl9lYWNoX2ludGVsX2RwKCZkZXZfcHJp di0+ZHJtLCBlbmNvZGVyKSB7CisJCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3Rv X2ludGVsX2RwKGVuY29kZXIpOworCisJCQlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQ VVRfRURQICYmCisJCQkgICAgQ0FOX1BTUihpbnRlbF9kcCkpIHsKKwkJCQl1MzIgcHNyX2lpciA9 IGludGVsX3VuY29yZV9yZWFkKCZkZXZfcHJpdi0+dW5jb3JlLAorCQkJCQkJCQlFRFBfUFNSX0lJ Uik7CisKKwkJCQlpbnRlbF9wc3JfaXJxX2hhbmRsZXIoaW50ZWxfZHAsIHBzcl9paXIpOworCQkJ CWludGVsX3VuY29yZV93cml0ZSgmZGV2X3ByaXYtPnVuY29yZSwKKwkJCQkJCSAgIEVEUF9QU1Jf SUlSLCBwc3JfaWlyKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQogCX0KIAogCWlmIChkZV9paXIg JiBERV9BVVhfQ0hBTk5FTF9BX0lWQikKQEAgLTIyNzksMjEgKzIyOTEsMzQgQEAgZ2VuOF9kZV9t aXNjX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIGlp cikKIAl9CiAKIAlpZiAoaWlyICYgR0VOOF9ERV9FRFBfUFNSKSB7CisJCXN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyOwogCQl1MzIgcHNyX2lpcjsKIAkJaTkxNV9yZWdfdCBpaXJfcmVnOwog Ci0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyKQotCQkJaWlyX3JlZyA9IFRSQU5TX1BT Ul9JSVIoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKTsKLQkJZWxzZQotCQkJaWlyX3JlZyA9IEVE UF9QU1JfSUlSOworCQlmb3JfZWFjaF9pbnRlbF9kcCgmZGV2X3ByaXYtPmRybSwgZW5jb2Rlcikg eworCQkJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcChlbmNvZGVy KTsKIAotCQlwc3JfaWlyID0gaW50ZWxfdW5jb3JlX3JlYWQoJmRldl9wcml2LT51bmNvcmUsIGlp cl9yZWcpOwotCQlpbnRlbF91bmNvcmVfd3JpdGUoJmRldl9wcml2LT51bmNvcmUsIGlpcl9yZWcs IHBzcl9paXIpOworCQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgJiYgQ0FOX1BTUihp bnRlbF9kcCkpIHsKKwkJCQlpaXJfcmVnID0gVFJBTlNfUFNSX0lJUihpbnRlbF9kcC0+cHNyLnRy YW5zY29kZXIpOworCQkJfSBlbHNlIGlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9F RFAgJiYKKwkJCQkgICBDQU5fUFNSKGludGVsX2RwKSkgeworCQkJCWlpcl9yZWcgPSBFRFBfUFNS X0lJUjsKKwkJCX0gZWxzZSB7CisJCQkJY29udGludWU7CisJCQl9CisKKwkJCXBzcl9paXIgPSBp bnRlbF91bmNvcmVfcmVhZCgmZGV2X3ByaXYtPnVuY29yZSwgaWlyX3JlZyk7CisJCQlpbnRlbF91 bmNvcmVfd3JpdGUoJmRldl9wcml2LT51bmNvcmUsIGlpcl9yZWcsIHBzcl9paXIpOworCisJCQlp ZiAocHNyX2lpcikKKwkJCQlmb3VuZCA9IHRydWU7CiAKLQkJaWYgKHBzcl9paXIpCi0JCQlmb3Vu ZCA9IHRydWU7CisJCQlpbnRlbF9wc3JfaXJxX2hhbmRsZXIoaW50ZWxfZHAsIHBzcl9paXIpOwog Ci0JCWludGVsX3Bzcl9pcnFfaGFuZGxlcihkZXZfcHJpdiwgcHNyX2lpcik7CisJCQkvKiBwcmlv ciBHRU4xMiBvbmx5IGhhdmUgb25lIEVEUCBQU1IgKi8KKwkJCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpIDwgMTIpCisJCQkJYnJlYWs7CisJCX0KIAl9CiAKIAlpZiAoIWZvdW5kKQotLSAKMi4yNS4w CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK