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=-15.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,HK_RANDOM_FROM,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,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 F3723C43462 for ; Wed, 14 Apr 2021 11:51:05 +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 9C6696120E for ; Wed, 14 Apr 2021 11:51:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9C6696120E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.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 3383E6E92D; Wed, 14 Apr 2021 11:51:04 +0000 (UTC) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 180126E92C for ; Wed, 14 Apr 2021 11:51:02 +0000 (UTC) IronPort-SDR: gJWHR5uTmSQy6EjTBGzpvh2s9YotMEOyIRPBPgQbya7jmLW1AhKCwBw8kVd+sTPBDm3ArRY0hB E+yDQFFJLfOA== X-IronPort-AV: E=McAfee;i="6200,9189,9953"; a="174119555" X-IronPort-AV: E=Sophos;i="5.82,222,1613462400"; d="scan'208";a="174119555" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Apr 2021 04:51:01 -0700 IronPort-SDR: 4X3D21abD7ic9nV0N8LIOEMp94sFqjLA55gjgiOB+IzUM2PEhtBJwpxv3LiRy1MrqBFLh9ZQIJ O8R0qeATMBRA== X-IronPort-AV: E=Sophos;i="5.82,222,1613462400"; d="scan'208";a="521965244" Received: from bdebhal-mobl.ger.corp.intel.com (HELO localhost.localdomain) ([10.213.205.119]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Apr 2021 04:50:59 -0700 From: Tvrtko Ursulin To: Intel-gfx@lists.freedesktop.org Date: Wed, 14 Apr 2021 12:50:19 +0100 Message-Id: <20210414115028.168504-20-tvrtko.ursulin@linux.intel.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210414115028.168504-1-tvrtko.ursulin@linux.intel.com> References: <20210414115028.168504-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [RFC 19/28] drm/i915: Replace arithmetic INTEL_GEN checks with the IS_GEN macro 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClRoaXMgbW92 ZXMgdGhlIGNoZWNrcyB0byBhdCBjb21waWxlIHRpbWUgd2hpY2ggZW5hYmxlcyB0aGUgY29tcGls ZXIKdG8gZHJvcCBhIGxvdCBvZiBjb2RlIGluIGNhc2VzIHdoZXJlIHdob2xlIHBsYXRmb3JtIHNl dHMgYXJlIGRpc2FibGVkLgoKQ29jY2luZWxsZSB0cmFuc2Zvcm1hdGlvbjoKCkBACmV4cHJlc3Np b24gcDsKY29uc3RhbnQgZzsKQEAKKAotSU5URUxfR0VOKHApID49IGcKK0lTX0dFTihwLCBnLCBH RU5fRk9SRVZFUikKfAotSU5URUxfR0VOKHApIDw9IGcKK0lTX0dFTihwLCBHRU5fRk9SRVZFUiwg ZykKKQoKQEAKZXhwcmVzc2lvbiBwOwpAQAooCi1JTlRFTF9HRU4ocCkgPiAyCitJU19HRU4ocCwg MywgR0VOX0ZPUkVWRVIpCnwKLUlOVEVMX0dFTihwKSA+IDMKK0lTX0dFTihwLCA0LCBHRU5fRk9S RVZFUikKfAotSU5URUxfR0VOKHApID4gNAorSVNfR0VOKHAsIDUsIEdFTl9GT1JFVkVSKQp8Ci1J TlRFTF9HRU4ocCkgPiA1CitJU19HRU4ocCwgNiwgR0VOX0ZPUkVWRVIpCnwKLUlOVEVMX0dFTihw KSA+IDYKK0lTX0dFTihwLCA3LCBHRU5fRk9SRVZFUikKfAotSU5URUxfR0VOKHApID4gNworSVNf R0VOKHAsIDgsIEdFTl9GT1JFVkVSKQp8Ci1JTlRFTF9HRU4ocCkgPiA4CitJU19HRU4ocCwgOSwg R0VOX0ZPUkVWRVIpCnwKLUlOVEVMX0dFTihwKSA+IDkKK0lTX0dFTihwLCAxMCwgR0VOX0ZPUkVW RVIpCnwKLUlOVEVMX0dFTihwKSA+IDEwCitJU19HRU4ocCwgMTEsIEdFTl9GT1JFVkVSKQp8Ci1J TlRFTF9HRU4ocCkgPiAxMQorSVNfR0VOKHAsIDEyLCBHRU5fRk9SRVZFUikKfAotSU5URUxfR0VO KHApIDwgMgorSVNfR0VOKHAsIEdFTl9GT1JFVkVSLCAxKQp8Ci1JTlRFTF9HRU4ocCkgPCAzCitJ U19HRU4ocCwgR0VOX0ZPUkVWRVIsIDIpCnwKLUlOVEVMX0dFTihwKSA8IDQKK0lTX0dFTihwLCBH RU5fRk9SRVZFUiwgMykKfAotSU5URUxfR0VOKHApIDwgNQorSVNfR0VOKHAsIEdFTl9GT1JFVkVS LCA0KQp8Ci1JTlRFTF9HRU4ocCkgPCA2CitJU19HRU4ocCwgR0VOX0ZPUkVWRVIsIDUpCnwKLUlO VEVMX0dFTihwKSA8IDcKK0lTX0dFTihwLCBHRU5fRk9SRVZFUiwgNikKfAotSU5URUxfR0VOKHAp IDwgOAorSVNfR0VOKHAsIEdFTl9GT1JFVkVSLCA3KQp8Ci1JTlRFTF9HRU4ocCkgPCA5CitJU19H RU4ocCwgR0VOX0ZPUkVWRVIsIDgpCnwKLUlOVEVMX0dFTihwKSA8IDEwCitJU19HRU4ocCwgR0VO X0ZPUkVWRVIsIDkpCnwKLUlOVEVMX0dFTihwKSA8IDExCitJU19HRU4ocCwgR0VOX0ZPUkVWRVIs IDEwKQopCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50 ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICAg ICB8ICA4NiArKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAg ICAgICAgIHwgIDE2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAg ICAgICAgfCAgMTQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAg ICAgICB8ICAxOCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5j ICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuYyAg ICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAgICAg ICB8ICAzMCArLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYyAgICAg ICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgICAgICAg IHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYyAgICAgICAg fCAgIDggKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgICAgICAgICB8 ICA0MCArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAgICAgICAgICAg fCAgNTggKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyAgICAgICAgICAg ICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMgICAgICAgICAgICAg ICB8ICAgNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgICAgICAg IHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQuYyAgICAgICAgICAg fCAgMTIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYyAgICAgICAgICAgICB8 ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgICAgIHwg ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jICAgICAgICAgICAgfCAg IDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMgICAgICAgICAgICB8ICAg OCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYyAgICAgICAgICAgIHwgICAy ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYyAgICAgICAgICAgICAgfCAgIDYg Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jICAgICAgICAgICAgICB8ICAxMCAr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYyAgICAgIHwgIDE0ICst CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgICAgICAgfCAxOTQgKysr KysrKysrLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgICAg ICAgICAgfCAgMjggKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jICAg ICAgICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jICAg ICAgICB8ICAyMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgICAgICAgICAg ICAgIHwgIDMwICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmlmb191bmRlcnJ1bi5j ICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hlY2suYyAgICAg ICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyAgICAgICAgICAg ICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jICAgICAgICAgICAg IHwgIDEwICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgICAg fCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYyAgICAgICAgICAgICB8 ICAxMCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jICAgICAgICAgICAgIHwg ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMgICAgICAgICAgfCAg IDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgICAgICAgICAgICB8ICAx MCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGlwZV9jcmMuYyAgICAgICAgIHwgICAy ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgICAgICAgICAgfCAxMDAg KysrKy0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYyAgICAgICAgICAgICAg fCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAgICAgICB8 ICAzNCArLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm8uYyAgICAgICAgICAgICB8 ICAxNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgICAgICAgICAgIHwg IDMwICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdHYuYyAgICAgICAgICAgICAgIHwg ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYyAgICAgICAgICAgfCAg MjAgKy0KIC4uLi9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29oZXJlbmN5LmMgICB8ICAg NCArLQogLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jIHwgICAy ICstCiAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYyAgfCAgMTIg Ky0KIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2hhbmdjaGVjay5jICB8ICAgOCAr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3VuY29yZS5jIHwgICAyICst CiA1MSBmaWxlcyBjaGFuZ2VkLCA0NTcgaW5zZXJ0aW9ucygrKSwgNDU3IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggMmJkY2U5ZmVhNjcxLi5jYzkyMjMw NDJhNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC03MDksNyArNzA5LDcg QEAgc3RhdGljIGludCBpOTE1X2ludGVycnVwdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9p ZCAqZGF0YSkKIAkJCSAgIEk5MTVfUkVBRChHRU44X1BDVV9JSVIpKTsKIAkJc2VxX3ByaW50Ziht LCAiUENVIGludGVycnVwdCBlbmFibGU6XHQlMDh4XG4iLAogCQkJICAgSTkxNV9SRUFEKEdFTjhf UENVX0lFUikpOwotCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KSB7CisJfSBl bHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDgsIEdFTl9GT1JFVkVSKSkgewogCQlzZXFfcHJpbnRm KG0sICJNYXN0ZXIgSW50ZXJydXB0IENvbnRyb2w6XHQlMDh4XG4iLAogCQkJICAgSTkxNV9SRUFE KEdFTjhfTUFTVEVSX0lSUSkpOwogCkBAIC04NDYsNyArODQ2LDcgQEAgc3RhdGljIGludCBpOTE1 X2ludGVycnVwdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAkJc2VxX3By aW50ZihtLCAiR3JhcGhpY3MgSW50ZXJydXB0IG1hc2s6CQklMDh4XG4iLAogCQkJICAgSTkxNV9S RUFEKEdUSU1SKSk7CiAJfQotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsKKwlpZiAo SVNfR0VOKGRldl9wcml2LCA2LCBHRU5fRk9SRVZFUikpIHsKIAkJZm9yX2VhY2hfZW5naW5lKGVu Z2luZSwgZGV2X3ByaXYsIGlkKSB7CiAJCQlzZXFfcHJpbnRmKG0sCiAJCQkJICAgIkdyYXBoaWNz IEludGVycnVwdCBtYXNrICglcyk6CSUwOHhcbiIsCkBAIC0xMDU3LDcgKzEwNTcsNyBAQCBzdGF0 aWMgaW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVz ZWQpCiAJCQkgICAiZWZmaWNpZW50IChSUGUpIGZyZXF1ZW5jeTogJWQgTUh6XG4iLAogCQkJICAg aW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIHJwcy0+ZWZmaWNpZW50X2ZyZXEpKTsKIAkJbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwotCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA2KSB7CisJfSBlbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDYsIEdFTl9GT1JFVkVS KSkgewogCQl1MzIgcnBfc3RhdGVfbGltaXRzOwogCQl1MzIgZ3RfcGVyZl9zdGF0dXM7CiAJCXUz MiBycF9zdGF0ZV9jYXA7CkBAIC0xMDgxLDcgKzEwODEsNyBAQCBzdGF0aWMgaW50IGk5MTVfZnJl cXVlbmN5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJCWludGVsX3Vu Y29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKIAogCQlyZXFmID0g STkxNV9SRUFEKEdFTjZfUlBOU1dSRVEpOwotCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5 KQorCQlpZiAoSVNfR0VOKGRldl9wcml2LCA5LCBHRU5fRk9SRVZFUikpCiAJCQlyZXFmID4+PSAy MzsKIAkJZWxzZSB7CiAJCQlyZXFmICY9IH5HRU42X1RVUkJPX0RJU0FCTEU7CkBAIC0xMTM0LDcg KzExMzQsNyBAQCBzdGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICp1bnVzZWQpCiAJCQkgICBycHMtPnBtX2ludHJtc2tfbWJ6KTsKIAkJc2VxX3By aW50ZihtLCAiR1RfUEVSRl9TVEFUVVM6IDB4JTA4eFxuIiwgZ3RfcGVyZl9zdGF0dXMpOwogCQlz ZXFfcHJpbnRmKG0sICJSZW5kZXIgcC1zdGF0ZSByYXRpbzogJWRcbiIsCi0JCQkgICAoZ3RfcGVy Zl9zdGF0dXMgJiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5ID8gMHgxZmYwMCA6IDB4ZmYwMCkp ID4+IDgpOworCQkJICAgKGd0X3BlcmZfc3RhdHVzICYgKElTX0dFTihkZXZfcHJpdiwgOSwgR0VO X0ZPUkVWRVIpID8gMHgxZmYwMCA6IDB4ZmYwMCkpID4+IDgpOwogCQlzZXFfcHJpbnRmKG0sICJS ZW5kZXIgcC1zdGF0ZSBWSUQ6ICVkXG4iLAogCQkJICAgZ3RfcGVyZl9zdGF0dXMgJiAweGZmKTsK IAkJc2VxX3ByaW50ZihtLCAiUmVuZGVyIHAtc3RhdGUgbGltaXQ6ICVkXG4iLApAQCAtMTIxOSwx MyArMTIxOSwxMyBAQCBzdGF0aWMgdm9pZCBpOTE1X2luc3Rkb25lX2luZm8oc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCXNlcV9wcmludGYobSwgIlx0XHRJTlNURE9ORTogMHgl MDh4XG4iLAogCQkgICBpbnN0ZG9uZS0+aW5zdGRvbmUpOwogCi0JaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPD0gMykKKwlpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgMykpCiAJCXJl dHVybjsKIAogCXNlcV9wcmludGYobSwgIlx0XHRTQ19JTlNURE9ORTogMHglMDh4XG4iLAogCQkg ICBpbnN0ZG9uZS0+c2xpY2VfY29tbW9uKTsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9 IDYpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDYpKQogCQlyZXR1cm47CiAK IAlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShkZXZfcHJpdiwgc2xpY2UsIHN1YnNs aWNlKQpAQCAtMTQ3OSw3ICsxNDc5LDcgQEAgc3RhdGljIGludCBnZW42X2RycGNfaW5mbyhzdHJ1 Y3Qgc2VxX2ZpbGUgKm0pCiAJdHJhY2VfaTkxNV9yZWdfcncoZmFsc2UsIEdFTjZfR1RfQ09SRV9T VEFUVVMsIGd0X2NvcmVfc3RhdHVzLCA0LCB0cnVlKTsKIAogCXJjY3RsMSA9IEk5MTVfUkVBRChH RU42X1JDX0NPTlRST0wpOwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKKwlpZiAo SVNfR0VOKGRldl9wcml2LCA5LCBHRU5fRk9SRVZFUikpIHsKIAkJZ2VuOV9wb3dlcmdhdGVfZW5h YmxlID0gSTkxNV9SRUFEKEdFTjlfUEdfRU5BQkxFKTsKIAkJZ2VuOV9wb3dlcmdhdGVfc3RhdHVz ID0gSTkxNV9SRUFEKEdFTjlfUFdSR1RfRE9NQUlOX1NUQVRVUyk7CiAJfQpAQCAtMTQ5Miw3ICsx NDkyLDcgQEAgc3RhdGljIGludCBnZW42X2RycGNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCiAJ CSAgIHllc25vKHJjY3RsMSAmIEdFTjZfUkNfQ1RMX1JDMWVfRU5BQkxFKSk7CiAJc2VxX3ByaW50 ZihtLCAiUkM2IEVuYWJsZWQ6ICVzXG4iLAogCQkgICB5ZXNubyhyY2N0bDEgJiBHRU42X1JDX0NU TF9SQzZfRU5BQkxFKSk7Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgeworCWlmIChJ U19HRU4oZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkgewogCQlzZXFfcHJpbnRmKG0sICJSZW5k ZXIgV2VsbCBHYXRpbmcgRW5hYmxlZDogJXNcbiIsCiAJCQl5ZXNubyhnZW45X3Bvd2VyZ2F0ZV9l bmFibGUgJiBHRU45X1JFTkRFUl9QR19FTkFCTEUpKTsKIAkJc2VxX3ByaW50ZihtLCAiTWVkaWEg V2VsbCBHYXRpbmcgRW5hYmxlZDogJXNcbiIsCkBAIC0xNTI2LDcgKzE1MjYsNyBAQCBzdGF0aWMg aW50IGdlbjZfZHJwY19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSkKIAogCXNlcV9wcmludGYobSwg IkNvcmUgUG93ZXIgRG93bjogJXNcbiIsCiAJCSAgIHllc25vKGd0X2NvcmVfc3RhdHVzICYgR0VO Nl9DT1JFX0NQRF9TVEFURV9NQVNLKSk7Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkg eworCWlmIChJU19HRU4oZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkgewogCQlzZXFfcHJpbnRm KG0sICJSZW5kZXIgUG93ZXIgV2VsbDogJXNcbiIsCiAJCQkoZ2VuOV9wb3dlcmdhdGVfc3RhdHVz ICYKIAkJCSBHRU45X1BXUkdUX1JFTkRFUl9TVEFUVVNfTUFTSykgPyAiVXAiIDogIkRvd24iKTsK QEAgLTE1NjAsNyArMTU2MCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kcnBjX2luZm8oc3RydWN0IHNl cV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAKIAlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikg fHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCiAJCWVyciA9IHZsdl9kcnBjX2luZm8obSk7Ci0J ZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KQorCWVsc2UgaWYgKElTX0dFTihkZXZf cHJpdiwgNiwgR0VOX0ZPUkVWRVIpKQogCQllcnIgPSBnZW42X2RycGNfaW5mbyhtKTsKIAllbHNl CiAJCWVyciA9IGlyb25sYWtlX2RycGNfaW5mbyhtKTsKQEAgLTE2MDcsMTEgKzE2MDcsMTEgQEAg c3RhdGljIGludCBpOTE1X2ZiY19zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVz ZWQpCiAJaWYgKGludGVsX2ZiY19pc19hY3RpdmUoZGV2X3ByaXYpKSB7CiAJCXUzMiBtYXNrOwog Ci0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCisJCWlmIChJU19HRU4oZGV2X3ByaXYs IDgsIEdFTl9GT1JFVkVSKSkKIAkJCW1hc2sgPSBJOTE1X1JFQUQoSVZCX0ZCQ19TVEFUVVMyKSAm IEJEV19GQkNfQ09NUF9TRUdfTUFTSzsKLQkJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA3KQorCQllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDcsIEdFTl9GT1JFVkVSKSkKIAkJCW1h c2sgPSBJOTE1X1JFQUQoSVZCX0ZCQ19TVEFUVVMyKSAmIElWQl9GQkNfQ09NUF9TRUdfTUFTSzsK LQkJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA1KQorCQllbHNlIGlmIChJU19HRU4o ZGV2X3ByaXYsIDUsIEdFTl9GT1JFVkVSKSkKIAkJCW1hc2sgPSBJOTE1X1JFQUQoSUxLX0RQRkNf U1RBVFVTKSAmIElMS19EUEZDX0NPTVBfU0VHX01BU0s7CiAJCWVsc2UgaWYgKElTX0c0WChkZXZf cHJpdikpCiAJCQltYXNrID0gSTkxNV9SRUFEKERQRkNfU1RBVFVTKSAmIERQRkNfQ09NUF9TRUdf TUFTSzsKQEAgLTE2MzIsNyArMTYzMiw3IEBAIHN0YXRpYyBpbnQgaTkxNV9mYmNfZmFsc2VfY29s b3JfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRhdGE7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDcgfHwgIUhB U19GQkMoZGV2X3ByaXYpKQorCWlmIChJU19HRU4oZGV2X3ByaXYsIEdFTl9GT1JFVkVSLCA2KSB8 fCAhSEFTX0ZCQyhkZXZfcHJpdikpCiAJCXJldHVybiAtRU5PREVWOwogCiAJKnZhbCA9IGRldl9w cml2LT5mYmMuZmFsc2VfY29sb3I7CkBAIC0xNjQ1LDcgKzE2NDUsNyBAQCBzdGF0aWMgaW50IGk5 MTVfZmJjX2ZhbHNlX2NvbG9yX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRhdGE7CiAJdTMyIHJlZzsKIAotCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpIDwgNyB8fCAhSEFTX0ZCQyhkZXZfcHJpdikpCisJaWYgKElTX0dFTihkZXZf cHJpdiwgR0VOX0ZPUkVWRVIsIDYpIHx8ICFIQVNfRkJDKGRldl9wcml2KSkKIAkJcmV0dXJuIC1F Tk9ERVY7CiAKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZmJjLmxvY2spOwpAQCAtMTY3Nyw3ICsx Njc3LDcgQEAgc3RhdGljIGludCBpOTE1X2lwc19zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2 b2lkICp1bnVzZWQpCiAJc2VxX3ByaW50ZihtLCAiRW5hYmxlZCBieSBrZXJuZWwgcGFyYW1ldGVy OiAlc1xuIiwKIAkJICAgeWVzbm8oaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2lwcykpOwogCi0JaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkgeworCWlmIChJU19HRU4oZGV2X3ByaXYsIDgsIEdF Tl9GT1JFVkVSKSkgewogCQlzZXFfcHV0cyhtLCAiQ3VycmVudGx5OiB1bmtub3duXG4iKTsKIAl9 IGVsc2UgewogCQlpZiAoSTkxNV9SRUFEKElQU19DVEwpICYgSVBTX0VOQUJMRSkKQEAgLTE2OTks NyArMTY5OSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9zcl9zdGF0dXMoc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICp1bnVzZWQpCiAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwogCWludGVs X2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fSU5JVCk7CiAKLQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQorCWlmIChJU19HRU4oZGV2X3ByaXYsIDksIEdFTl9G T1JFVkVSKSkKIAkJLyogbm8gZ2xvYmFsIFNSIHN0YXR1czsgaW5zcGVjdCBwZXItcGxhbmUgV00g Ki87CiAJZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJpdikpCiAJCXNyX2VuYWJsZWQgPSBJ OTE1X1JFQUQoV00xX0xQX0lMSykgJiBXTTFfTFBfU1JfRU47CkBAIC0xOTc5LDcgKzE5NzksNyBA QCBzdGF0aWMgaW50IGk5MTVfc3dpenpsZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq ZGF0YSkKIAkJCSAgIEk5MTVfUkVBRDE2KEMwRFJCMykpOwogCQlzZXFfcHJpbnRmKG0sICJDMURS QjMgPSAweCUwNHhcbiIsCiAJCQkgICBJOTE1X1JFQUQxNihDMURSQjMpKTsKLQl9IGVsc2UgaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikgeworCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2 LCA2LCBHRU5fRk9SRVZFUikpIHsKIAkJc2VxX3ByaW50ZihtLCAiTUFEX0RJTU1fQzAgPSAweCUw OHhcbiIsCiAJCQkgICBJOTE1X1JFQUQoTUFEX0RJTU1fQzApKTsKIAkJc2VxX3ByaW50ZihtLCAi TUFEX0RJTU1fQzEgPSAweCUwOHhcbiIsCkBAIC0xOTg4LDcgKzE5ODgsNyBAQCBzdGF0aWMgaW50 IGk5MTVfc3dpenpsZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAkJCSAg IEk5MTVfUkVBRChNQURfRElNTV9DMikpOwogCQlzZXFfcHJpbnRmKG0sICJUSUxFQ1RMID0gMHgl MDh4XG4iLAogCQkJICAgSTkxNV9SRUFEKFRJTEVDVEwpKTsKLQkJaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gOCkKKwkJaWYgKElTX0dFTihkZXZfcHJpdiwgOCwgR0VOX0ZPUkVWRVIpKQogCQkJ c2VxX3ByaW50ZihtLCAiR0FNVEFSQk1PREUgPSAweCUwOHhcbiIsCiAJCQkJICAgSTkxNV9SRUFE KEdBTVRBUkJNT0RFKSk7CiAJCWVsc2UKQEAgLTIwOTYsOSArMjA5Niw5IEBAIHN0YXRpYyBpbnQg aTkxNV9wcGd0dF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAogCWludGVs X3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDgpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgOCwgR0VOX0ZPUkVWRVIpKQogCQlnZW44X3BwZ3R0 X2luZm8obSwgZGV2X3ByaXYpOwotCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikK KwllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDYsIEdFTl9GT1JFVkVSKSkKIAkJZ2VuNl9wcGd0 dF9pbmZvKG0sIGRldl9wcml2KTsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmV2ZXJzZShmaWxl LCAmZGV2LT5maWxlbGlzdCwgbGhlYWQpIHsKQEAgLTIxOTIsNyArMjE5Miw3IEBAIHN0YXRpYyBp bnQgaTkxNV9ycHNfYm9vc3RfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAJ CSAgIGF0b21pY19yZWFkKCZycHMtPmJvb3N0cykpOwogCW11dGV4X3VubG9jaygmZGV2LT5maWxl bGlzdF9tdXRleCk7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2ICYmCisJaWYgKElT X0dFTihkZXZfcHJpdiwgNiwgR0VOX0ZPUkVWRVIpICYmCiAJICAgIHJwcy0+ZW5hYmxlZCAmJgog CSAgICBkZXZfcHJpdi0+Z3QuYWN0aXZlX3JlcXVlc3RzKSB7CiAJCXUzMiBycHVwLCBycHVwZWk7 CkBAIC0yMjIzLDcgKzIyMjMsNyBAQCBzdGF0aWMgaW50IGk5MTVfcnBzX2Jvb3N0X2luZm8oc3Ry dWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogc3RhdGljIGludCBpOTE1X2xsYyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwotCWNvbnN0IGJvb2wgZWRyYW0gPSBJ TlRFTF9HRU4oZGV2X3ByaXYpID4gODsKKwljb25zdCBib29sIGVkcmFtID0gSVNfR0VOKGRldl9w cml2LCA5LCBHRU5fRk9SRVZFUik7CiAKIAlzZXFfcHJpbnRmKG0sICJMTEM6ICVzXG4iLCB5ZXNu byhIQVNfTExDKGRldl9wcml2KSkpOwogCXNlcV9wcmludGYobSwgIiVzOiAlbGx1TUJcbiIsIGVk cmFtID8gImVEUkFNIiA6ICJlTExDIiwKQEAgLTI2NzgsNyArMjY3OCw3IEBAIHN0YXRpYyBpbnQg aTkxNV9lbmVyZ3lfdUooc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogCXVuc2lnbmVk IGxvbmcgbG9uZyBwb3dlcjsKIAl1MzIgdW5pdHM7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA8IDYpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDUpKQogCQlyZXR1cm4g LUVOT0RFVjsKIAogCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKQEAgLTMyOTMsNyAr MzI5Myw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kZGJfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZv aWQgKnVudXNlZCkKIAllbnVtIHBpcGUgcGlwZTsKIAlpbnQgcGxhbmU7CiAKLQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA8IDkpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDgp KQogCQlyZXR1cm4gLUVOT0RFVjsKIAogCWRybV9tb2Rlc2V0X2xvY2tfYWxsKGRldik7CkBAIC0z NjkyLDcgKzM2OTIsNyBAQCBzdGF0aWMgdm9pZCB3bV9sYXRlbmN5X3Nob3coc3RydWN0IHNlcV9m aWxlICptLCBjb25zdCB1aW50MTZfdCB3bVs4XSkKIAkJICogLSBXTTErIGxhdGVuY3kgdmFsdWVz IGluIDAuNXVzIHVuaXRzCiAJCSAqIC0gbGF0ZW5jaWVzIGFyZSBpbiB1cyBvbiBnZW45L3Zsdi9j aHYKIAkJICovCi0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkgfHwKKwkJaWYgKElTX0dF TihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVWRVIpIHx8CiAJCSAgICBJU19WQUxMRVlWSUVXKGRldl9w cml2KSB8fAogCQkgICAgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikgfHwKIAkJICAgIElTX0c0WChk ZXZfcHJpdikpCkBAIC0zNzEyLDcgKzM3MTIsNyBAQCBzdGF0aWMgaW50IHByaV93bV9sYXRlbmN5 X3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IG0tPnByaXZhdGU7CiAJY29uc3QgdWludDE2X3QgKmxhdGVuY2ll czsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCisJaWYgKElTX0dFTihkZXZfcHJp diwgOSwgR0VOX0ZPUkVWRVIpKQogCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVu Y3k7CiAJZWxzZQogCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20ucHJpX2xhdGVuY3k7CkBAIC0z NzI3LDcgKzM3MjcsNyBAQCBzdGF0aWMgaW50IHNwcl93bV9sYXRlbmN5X3Nob3coc3RydWN0IHNl cV9maWxlICptLCB2b2lkICpkYXRhKQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IG0tPnByaXZhdGU7CiAJY29uc3QgdWludDE2X3QgKmxhdGVuY2llczsKIAotCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDkpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVW RVIpKQogCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3k7CiAJZWxzZQogCQls YXRlbmNpZXMgPSBkZXZfcHJpdi0+d20uc3ByX2xhdGVuY3k7CkBAIC0zNzQyLDcgKzM3NDIsNyBA QCBzdGF0aWMgaW50IGN1cl93bV9sYXRlbmN5X3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lk ICpkYXRhKQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG0tPnByaXZhdGU7 CiAJY29uc3QgdWludDE2X3QgKmxhdGVuY2llczsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDkpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVWRVIpKQogCQlsYXRlbmNp ZXMgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3k7CiAJZWxzZQogCQlsYXRlbmNpZXMgPSBkZXZf cHJpdi0+d20uY3VyX2xhdGVuY3k7CkBAIC0zNzU2LDcgKzM3NTYsNyBAQCBzdGF0aWMgaW50IHBy aV93bV9sYXRlbmN5X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUp CiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gaW5vZGUtPmlfcHJpdmF0 ZTsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNSAmJiAhSVNfRzRYKGRldl9wcml2KSkK KwlpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgNCkgJiYgIUlTX0c0WChkZXZfcHJp dikpCiAJCXJldHVybiAtRU5PREVWOwogCiAJcmV0dXJuIHNpbmdsZV9vcGVuKGZpbGUsIHByaV93 bV9sYXRlbmN5X3Nob3csIGRldl9wcml2KTsKQEAgLTM4MzUsNyArMzgzNSw3IEBAIHN0YXRpYyBz c2l6ZV90IHByaV93bV9sYXRlbmN5X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFy IF9fdXNlciAqdWJ1ZiwKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBtLT5w cml2YXRlOwogCXVpbnQxNl90ICpsYXRlbmNpZXM7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA5KQorCWlmIChJU19HRU4oZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkKIAkJbGF0ZW5j aWVzID0gZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5OwogCWVsc2UKIAkJbGF0ZW5jaWVzID0gZGV2 X3ByaXYtPndtLnByaV9sYXRlbmN5OwpAQCAtMzg1MCw3ICszODUwLDcgQEAgc3RhdGljIHNzaXpl X3Qgc3ByX3dtX2xhdGVuY3lfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191 c2VyICp1YnVmLAogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG0tPnByaXZh dGU7CiAJdWludDE2X3QgKmxhdGVuY2llczsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDkpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVWRVIpKQogCQlsYXRlbmNpZXMg PSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3k7CiAJZWxzZQogCQlsYXRlbmNpZXMgPSBkZXZfcHJp di0+d20uc3ByX2xhdGVuY3k7CkBAIC0zODY1LDcgKzM4NjUsNyBAQCBzdGF0aWMgc3NpemVfdCBj dXJfd21fbGF0ZW5jeV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIg KnVidWYsCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbS0+cHJpdmF0ZTsK IAl1aW50MTZfdCAqbGF0ZW5jaWVzOwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkK KwlpZiAoSVNfR0VOKGRldl9wcml2LCA5LCBHRU5fRk9SRVZFUikpCiAJCWxhdGVuY2llcyA9IGRl dl9wcml2LT53bS5za2xfbGF0ZW5jeTsKIAllbHNlCiAJCWxhdGVuY2llcyA9IGRldl9wcml2LT53 bS5jdXJfbGF0ZW5jeTsKQEAgLTQxMDMsNyArNDEwMyw3IEBAIGk5MTVfbWF4X2ZyZXFfZ2V0KHZv aWQgKmRhdGEsIHU2NCAqdmFsKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRhdGE7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDYpCisJaWYgKElTX0dFTihk ZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDUpKQogCQlyZXR1cm4gLUVOT0RFVjsKIAogCSp2YWwgPSBp bnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPmd0X3BtLnJwcy5tYXhfZnJlcV9zb2Z0 bGltaXQpOwpAQCAtNDExOCw3ICs0MTE4LDcgQEAgaTkxNV9tYXhfZnJlcV9zZXQodm9pZCAqZGF0 YSwgdTY0IHZhbCkKIAl1MzIgaHdfbWF4LCBod19taW47CiAJaW50IHJldDsKIAotCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpIDwgNikKKwlpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwg NSkpCiAJCXJldHVybiAtRU5PREVWOwogCiAJRFJNX0RFQlVHX0RSSVZFUigiTWFudWFsbHkgc2V0 dGluZyBtYXggZnJlcSB0byAlbGx1XG4iLCB2YWwpOwpAQCAtNDE1OSw3ICs0MTU5LDcgQEAgaTkx NV9taW5fZnJlcV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGF0YTsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwg NikKKwlpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgNSkpCiAJCXJldHVybiAtRU5P REVWOwogCiAJKnZhbCA9IGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+Z3RfcG0u cnBzLm1pbl9mcmVxX3NvZnRsaW1pdCk7CkBAIC00MTc0LDcgKzQxNzQsNyBAQCBpOTE1X21pbl9m cmVxX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQogCXUzMiBod19tYXgsIGh3X21pbjsKIAlpbnQg cmV0OwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA2KQorCWlmIChJU19HRU4oZGV2X3By aXYsIEdFTl9GT1JFVkVSLCA1KSkKIAkJcmV0dXJuIC1FTk9ERVY7CiAKIAlEUk1fREVCVUdfRFJJ VkVSKCJNYW51YWxseSBzZXR0aW5nIG1pbiBmcmVxIHRvICVsbHVcbiIsIHZhbCk7CkBAIC00NDcy LDcgKzQ0NzIsNyBAQCBzdGF0aWMgaW50IGk5MTVfc3NldV9zdGF0dXMoc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICp1bnVzZWQpCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g bm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwogCXN0cnVjdCBzc2V1X2Rldl9pbmZvIHNzZXU7CiAK LQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDgpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgR0VO X0ZPUkVWRVIsIDcpKQogCQlyZXR1cm4gLUVOT0RFVjsKIAogCXNlcV9wdXRzKG0sICJTU0VVIERl dmljZSBJbmZvXG4iKTsKQEAgLTQ0ODksNyArNDQ4OSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9zc2V1 X3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAkJYnJvYWR3ZWxsX3Nz ZXVfZGV2aWNlX3N0YXR1cyhkZXZfcHJpdiwgJnNzZXUpOwogCX0gZWxzZSBpZiAoSVNfR0VOOShk ZXZfcHJpdikpIHsKIAkJZ2VuOV9zc2V1X2RldmljZV9zdGF0dXMoZGV2X3ByaXYsICZzc2V1KTsK LQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTApIHsKKwl9IGVsc2UgaWYgKElT X0dFTihkZXZfcHJpdiwgMTAsIEdFTl9GT1JFVkVSKSkgewogCQlnZW4xMF9zc2V1X2RldmljZV9z dGF0dXMoZGV2X3ByaXYsICZzc2V1KTsKIAl9CiAKQEAgLTQ1MDQsNyArNDUwNCw3IEBAIHN0YXRp YyBpbnQgaTkxNV9mb3JjZXdha2Vfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmls ZSAqZmlsZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGlub2RlLT5pX3By aXZhdGU7CiAKLQlpZiAoSU5URUxfR0VOKGk5MTUpIDwgNikKKwlpZiAoSVNfR0VOKGk5MTUsIEdF Tl9GT1JFVkVSLCA1KSkKIAkJcmV0dXJuIDA7CiAKIAlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1 KTsKQEAgLTQ1MTcsNyArNDUxNyw3IEBAIHN0YXRpYyBpbnQgaTkxNV9mb3JjZXdha2VfcmVsZWFz ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGlub2RlLT5pX3ByaXZhdGU7CiAKLQlpZiAoSU5URUxfR0VO KGk5MTUpIDwgNikKKwlpZiAoSVNfR0VOKGk5MTUsIEdFTl9GT1JFVkVSLCA1KSkKIAkJcmV0dXJu IDA7CiAKIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3VzZXJfcHV0KGk5MTUpOwpAQCAtNDYxNSw3 ICs0NjE1LDcgQEAgc3RhdGljIGludCBpOTE1X2RycnNfY3RsX3NldCh2b2lkICpkYXRhLCB1NjQg dmFsKQogCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwogCXN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHA7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDcpCisJaWYgKElTX0dFTihk ZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDYpKQogCQlyZXR1cm4gLUVOT0RFVjsKIAogCWRybV9tb2Rl c2V0X2xvY2tfYWxsKGRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwppbmRleCBjZDU3Zjk0NmNm NDUuLmY1MDUyM2Y1NjA3MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCkBAIC00NTMsMTIgKzQ1 MywxMiBAQCBzdGF0aWMgaW50IGk5MTVfZ2V0X2JyaWRnZV9kZXYoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQogc3RhdGljIGludAogaW50ZWxfYWxsb2NfbWNoYmFyX3Jlc291cmNl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlpbnQgcmVnID0gSU5URUxf R0VOKGRldl9wcml2KSA+PSA0ID8gTUNIQkFSX0k5NjUgOiBNQ0hCQVJfSTkxNTsKKwlpbnQgcmVn ID0gSVNfR0VOKGRldl9wcml2LCA0LCBHRU5fRk9SRVZFUikgPyBNQ0hCQVJfSTk2NSA6IE1DSEJB Ul9JOTE1OwogCXUzMiB0ZW1wX2xvLCB0ZW1wX2hpID0gMDsKIAl1NjQgbWNoYmFyX2FkZHI7CiAJ aW50IHJldDsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCisJaWYgKElTX0dFTihk ZXZfcHJpdiwgNCwgR0VOX0ZPUkVWRVIpKQogCQlwY2lfcmVhZF9jb25maWdfZHdvcmQoZGV2X3By aXYtPmJyaWRnZV9kZXYsIHJlZyArIDQsICZ0ZW1wX2hpKTsKIAlwY2lfcmVhZF9jb25maWdfZHdv cmQoZGV2X3ByaXYtPmJyaWRnZV9kZXYsIHJlZywgJnRlbXBfbG8pOwogCW1jaGJhcl9hZGRyID0g KCh1NjQpdGVtcF9oaSA8PCAzMikgfCB0ZW1wX2xvOwpAQCAtNDg1LDcgKzQ4NSw3IEBAIGludGVs X2FsbG9jX21jaGJhcl9yZXNvdXJjZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAJCXJldHVybiByZXQ7CiAJfQogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkKKwlp ZiAoSVNfR0VOKGRldl9wcml2LCA0LCBHRU5fRk9SRVZFUikpCiAJCXBjaV93cml0ZV9jb25maWdf ZHdvcmQoZGV2X3ByaXYtPmJyaWRnZV9kZXYsIHJlZyArIDQsCiAJCQkJICAgICAgIHVwcGVyXzMy X2JpdHMoZGV2X3ByaXYtPm1jaF9yZXMuc3RhcnQpKTsKIApAQCAtNDk4LDcgKzQ5OCw3IEBAIGlu dGVsX2FsbG9jX21jaGJhcl9yZXNvdXJjZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiBzdGF0aWMgdm9pZAogaW50ZWxfc2V0dXBfbWNoYmFyKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIHsKLQlpbnQgbWNoYmFyX3JlZyA9IElOVEVMX0dFTihkZXZfcHJpdikg Pj0gNCA/IE1DSEJBUl9JOTY1IDogTUNIQkFSX0k5MTU7CisJaW50IG1jaGJhcl9yZWcgPSBJU19H RU4oZGV2X3ByaXYsIDQsIEdFTl9GT1JFVkVSKSA/IE1DSEJBUl9JOTY1IDogTUNIQkFSX0k5MTU7 CiAJdTMyIHRlbXA7CiAJYm9vbCBlbmFibGVkOwogCkBAIC01MzcsNyArNTM3LDcgQEAgaW50ZWxf c2V0dXBfbWNoYmFyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHN0YXRpYyB2 b2lkCiBpbnRlbF90ZWFyZG93bl9tY2hiYXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogewotCWludCBtY2hiYXJfcmVnID0gSU5URUxfR0VOKGRldl9wcml2KSA+PSA0ID8gTUNI QkFSX0k5NjUgOiBNQ0hCQVJfSTkxNTsKKwlpbnQgbWNoYmFyX3JlZyA9IElTX0dFTihkZXZfcHJp diwgNCwgR0VOX0ZPUkVWRVIpID8gTUNIQkFSX0k5NjUgOiBNQ0hCQVJfSTkxNTsKIAogCWlmIChk ZXZfcHJpdi0+bWNoYmFyX25lZWRfZGlzYWJsZSkgewogCQlpZiAoSVNfSTkxNUcoZGV2X3ByaXYp IHx8IElTX0k5MTVHTShkZXZfcHJpdikpIHsKQEAgLTk3OCw3ICs5NzgsNyBAQCBzdGF0aWMgaW50 IGk5MTVfbW1pb19zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJICog dGhlIHJlZ2lzdGVyIEJBUiByZW1haW5zIHRoZSBzYW1lIHNpemUgZm9yIGFsbCB0aGUgZWFybGll cgogCSAqIGdlbmVyYXRpb25zIHVwIHRvIElyb25sYWtlLgogCSAqLwotCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpIDwgNSkKKwlpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgNCkpCiAJ CW1taW9fc2l6ZSA9IDUxMiAqIDEwMjQ7CiAJZWxzZQogCQltbWlvX3NpemUgPSAyICogMTAyNCAq IDEwMjQ7CkBAIC0xMTc2LDcgKzExNzYsNyBAQCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2luaXRf aHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCSAqIHByb3Blcmx5IGRlYWQg YWZ0ZXJ3YXJkcy4gU28gd2UnbGwganVzdCBkaXNhYmxlIHRoZW0gZm9yIGFsbAogCSAqIHByZS1n ZW41IGNoaXBzZXRzLgogCSAqLwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKKwlp ZiAoSVNfR0VOKGRldl9wcml2LCA1LCBHRU5fRk9SRVZFUikpIHsKIAkJaWYgKHBjaV9lbmFibGVf bXNpKHBkZXYpIDwgMCkKIAkJCURSTV9ERUJVR19EUklWRVIoImNhbid0IGVuYWJsZSBNU0kiKTsK IAl9CkBAIC0xNjY3LDcgKzE2NjcsNyBAQCBzdGF0aWMgaW50IGk5MTVfZHJtX3N1c3BlbmRfbGF0 ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sIGhpYmVybmF0aW9uKQogCSAqIEZ1aml0c3Ug RlNDIFM3MTEwCiAJICogQWNlciBBc3BpcmUgMTgzMFQKIAkgKi8KLQlpZiAoIShoaWJlcm5hdGlv biAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNikpCisJaWYgKCEoaGliZXJuYXRpb24gJiYgSVNf R0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgNSkpKQogCQlwY2lfc2V0X3Bvd2VyX3N0YXRlKHBk ZXYsIFBDSV9EM2hvdCk7CiAKIAlkZXZfcHJpdi0+c3VzcGVuZGVkX3RvX2lkbGUgPSBzdXNwZW5k X3RvX2lkbGUoZGV2X3ByaXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMGU2NWUwYmMz ZDA5Li42ZjU2ZjNhNDJjZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMjgzMyw3ICsy ODMzLDcgQEAgaW50ZWxfaW5mbyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAgKiBpbnRlcnJ1cHRzLgogICovCiAjZGVmaW5lIEhBU19BVVhfSVJRKGRldl9wcml2KSAg IHRydWUKLSNkZWZpbmUgSEFTX0dNQlVTX0lSUShkZXZfcHJpdikgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gNCkKKyNkZWZpbmUgSEFTX0dNQlVTX0lSUShkZXZfcHJpdikgKElTX0dFTihkZXZfcHJp diwgNCwgR0VOX0ZPUkVWRVIpKQogCiAvKiBXaXRoIHRoZSA5NDUgYW5kIGxhdGVyLCBZIHRpbGlu ZyBnb3QgYWRqdXN0ZWQgc28gdGhhdCBpdCB3YXMgMzIgMTI4LWJ5dGUKICAqIHJvd3MsIHdoaWNo IGNoYW5nZWQgdGhlIGFsaWdubWVudCByZXF1aXJlbWVudHMgYW5kIGZlbmNlIHByb2dyYW1taW5n LgpAQCAtMjg0NCw3ICsyODQ0LDcgQEAgaW50ZWxfaW5mbyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAjZGVmaW5lIFNVUFBPUlRTX1RWKGRldl9wcml2KQkJKChkZXZf cHJpdiktPmluZm8uc3VwcG9ydHNfdHYpCiAjZGVmaW5lIEk5MTVfSEFTX0hPVFBMVUcoZGV2X3By aXYpCSgoZGV2X3ByaXYpLT5pbmZvLmhhc19ob3RwbHVnKQogCi0jZGVmaW5lIEhBU19GV19CTEMo ZGV2X3ByaXYpIAkoSU5URUxfR0VOKGRldl9wcml2KSA+IDIpCisjZGVmaW5lIEhBU19GV19CTEMo ZGV2X3ByaXYpIAkoSVNfR0VOKGRldl9wcml2LCAzLCBHRU5fRk9SRVZFUikpCiAjZGVmaW5lIEhB U19GQkMoZGV2X3ByaXYpCSgoZGV2X3ByaXYpLT5pbmZvLmhhc19mYmMpCiAjZGVmaW5lIEhBU19D VVJfRkJDKGRldl9wcml2KQkoIUhBU19HTUNIX0RJU1BMQVkoZGV2X3ByaXYpICYmIElOVEVMX0lO Rk8oZGV2X3ByaXYpLT5nZW4gPj0gNykKIApAQCAtMjkyOSw3ICsyOTI5LDcgQEAgaW50ZWxfaW5m byhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKICNkZWZpbmUgSEFT X0dNQ0hfRElTUExBWShkZXZfcHJpdikgKChkZXZfcHJpdiktPmluZm8uaGFzX2dtY2hfZGlzcGxh eSkKIAotI2RlZmluZSBIQVNfTFNQQ09OKGRldl9wcml2KSAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA5KQorI2RlZmluZSBIQVNfTFNQQ09OKGRldl9wcml2KSAoSVNfR0VOKGRldl9wcml2LCA5LCBH RU5fRk9SRVZFUikpCiAKIC8qIERQRiA9PSBkeW5hbWljIHBhcml0eSBmZWF0dXJlICovCiAjZGVm aW5lIEhBU19MM19EUEYoZGV2X3ByaXYpICgoZGV2X3ByaXYpLT5pbmZvLmhhc19sM19kcGYpCkBA IC0yOTUyLDcgKzI5NTIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxfdnRkX2FjdGl2ZSh2 b2lkKQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxfc2Nhbm91dF9uZWVkc192dGRfd2Eoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCXJldHVybiBJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDYgJiYgaW50ZWxfdnRkX2FjdGl2ZSgpOworCXJldHVybiBJU19HRU4oZGV2X3By aXYsIDYsIEdFTl9GT1JFVkVSKSAmJiBpbnRlbF92dGRfYWN0aXZlKCk7CiB9CiAKIHN0YXRpYyBp bmxpbmUgYm9vbApAQCAtMzUzOSw3ICszNTM5LDcgQEAgdm9pZCBpOTE1X2dlbV9mbHVzaF9nZ3R0 X3dyaXRlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogc3RhdGljIGlubGlu ZSB2b2lkIGk5MTVfZ2VtX2NoaXBzZXRfZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogewogCXdtYigpOwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNikKKwlpZiAo SVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgNSkpCiAJCWludGVsX2d0dF9jaGlwc2V0X2Zs dXNoKCk7CiB9CiAKQEAgLTM5NzQsNyArMzk3NCw3IEBAIHN0YXRpYyBpbmxpbmUgaTkxNV9yZWdf dCBpOTE1X3ZnYWNudHJsX3JlZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7 CiAJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYp KQogCQlyZXR1cm4gVkxWX1ZHQUNOVFJMOwotCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gNSkKKwllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDUsIEdFTl9GT1JFVkVSKSkKIAkJcmV0 dXJuIENQVV9WR0FDTlRSTDsKIAllbHNlCiAJCXJldHVybiBWR0FDTlRSTDsKQEAgLTQxNDIsNyAr NDE0Miw3IEBAIGludCByZW1hcF9pb19tYXBwaW5nKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1h LAogCiBzdGF0aWMgaW5saW5lIGludCBpbnRlbF9od3NfY3NiX3dyaXRlX2luZGV4KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQogewotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTApCisJ aWYgKElTX0dFTihpOTE1LCAxMCwgR0VOX0ZPUkVWRVIpKQogCQlyZXR1cm4gQ05MX0hXU19DU0Jf V1JJVEVfSU5ERVg7CiAJZWxzZQogCQlyZXR1cm4gSTkxNV9IV1NfQ1NCX1dSSVRFX0lOREVYOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXggZmM2OGIzNTg1NGRmLi40NmZlOWJhNmE1ZTggMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpAQCAtMzg2LDcgKzM4Niw3IEBAIGk5MTVfZ2VtX29iamVj dF93YWl0X2ZlbmNlKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlLAogCSAqIGVhY2ggY2xpZW50IHRv IHdhaXRib29zdCBvbmNlIGluIGEgYnVzeSBwZXJpb2QuCiAJICovCiAJaWYgKHJwc19jbGllbnQg JiYgIWk5MTVfZ2VtX3JlcXVlc3Rfc3RhcnRlZChycSkpIHsKLQkJaWYgKElOVEVMX0dFTihycS0+ aTkxNSkgPj0gNikKKwkJaWYgKElTX0dFTihycS0+aTkxNSwgNiwgR0VOX0ZPUkVWRVIpKQogCQkJ Z2VuNl9ycHNfYm9vc3QocnEsIHJwc19jbGllbnQpOwogCX0KIApAQCAtMzE0OCw3ICszMTQ4LDcg QEAgdm9pZCBpOTE1X2dlbV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAJaWYgKGRldl9wcml2LT5ndC5hd2FrZSkgewogCQlpbnRlbF9zYW5pdGl6ZV9ndF9wb3dlcnNh dmUoZGV2X3ByaXYpOwogCQlpbnRlbF9lbmFibGVfZ3RfcG93ZXJzYXZlKGRldl9wcml2KTsKLQkJ aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikKKwkJaWYgKElTX0dFTihkZXZfcHJpdiwgNiwg R0VOX0ZPUkVWRVIpKQogCQkJZ2VuNl9ycHNfYnVzeShkZXZfcHJpdik7CiAJfQogfQpAQCAtMzQ4 MCw3ICszNDgwLDcgQEAgaTkxNV9nZW1faWRsZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3Ry dWN0ICp3b3JrKQogCUdFTV9CVUdfT04oZXBvY2ggPT0gSTkxNV9FUE9DSF9JTlZBTElEKTsKIAly ZWFybV9oYW5nY2hlY2sgPSBmYWxzZTsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYp CisJaWYgKElTX0dFTihkZXZfcHJpdiwgNiwgR0VOX0ZPUkVWRVIpKQogCQlnZW42X3Jwc19pZGxl KGRldl9wcml2KTsKIAogCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9E T01BSU5fR1RfSVJRKTsKQEAgLTQ4ODgsNyArNDg4OCw3IEBAIHZvaWQgaTkxNV9nZW1fc2FuaXRp emUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJICogaXQgbWF5IGltcGFjdCB0aGUg ZGlzcGxheSBhbmQgd2UgYXJlIHVuY2VydGFpbiBhYm91dCB0aGUgc3RhYmlsaXR5CiAJICogb2Yg dGhlIHJlc2V0LCBzbyB0aGlzIGNvdWxkIGJlIGFwcGxpZWQgdG8gZXZlbiBlYXJsaWVyIGdlbi4K IAkgKi8KLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDUgJiYgaW50ZWxfaGFzX2dwdV9yZXNldChp OTE1KSkKKwlpZiAoSVNfR0VOKGk5MTUsIDUsIEdFTl9GT1JFVkVSKSAmJiBpbnRlbF9oYXNfZ3B1 X3Jlc2V0KGk5MTUpKQogCQlXQVJOX09OKGludGVsX2dwdV9yZXNldChpOTE1LCBBTExfRU5HSU5F UykpOwogfQogCkBAIC01MDE0LDcgKzUwMTQsNyBAQCB2b2lkIGk5MTVfZ2VtX3Jlc3VtZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAogdm9pZCBpOTE1X2dlbV9pbml0X3N3aXp6bGlu ZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0JaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPCA1IHx8CisJaWYgKElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDQpIHx8 CiAJICAgIGRldl9wcml2LT5tbS5iaXRfNl9zd2l6emxlX3ggPT0gSTkxNV9CSVRfNl9TV0laWkxF X05PTkUpCiAJCXJldHVybjsKIApAQCAtNTA4OCw3ICs1MDg4LDcgQEAgaW50IGk5MTVfZ2VtX2lu aXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCS8qIERvdWJsZSBsYXll ciBzZWN1cml0eSBibGFua2V0LCBzZWUgaTkxNV9nZW1faW5pdCgpICovCiAJaW50ZWxfdW5jb3Jl X2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwogCi0JaWYgKEhBU19FRFJB TShkZXZfcHJpdikgJiYgSU5URUxfR0VOKGRldl9wcml2KSA8IDkpCisJaWYgKEhBU19FRFJBTShk ZXZfcHJpdikgJiYgSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgOCkpCiAJCUk5MTVfV1JJ VEUoSFNXX0lESUNSLCBJOTE1X1JFQUQoSFNXX0lESUNSKSB8IElESUhBU0hNU0soMHhmKSk7CiAK IAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpCkBAIC01MTAwLDcgKzUxMDAsNyBAQCBpbnQgaTkx NV9nZW1faW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQl1MzIg dGVtcCA9IEk5MTVfUkVBRChHRU43X01TR19DVEwpOwogCQkJdGVtcCAmPSB+KFdBSVRfRk9SX1BD SF9GTFJfQUNLIHwgV0FJVF9GT1JfUENIX1JFU0VUX0FDSyk7CiAJCQlJOTE1X1dSSVRFKEdFTjdf TVNHX0NUTCwgdGVtcCk7Ci0JCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA3KSB7 CisJCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA3LCBHRU5fRk9SRVZFUikpIHsKIAkJCXUz MiB0ZW1wID0gSTkxNV9SRUFEKEhTV19OREVfUlNUV1JOX09QVCk7CiAJCQl0ZW1wICY9IH5SRVNF VF9QQ0hfSEFORFNIQUtFX0VOQUJMRTsKIAkJCUk5MTVfV1JJVEUoSFNXX05ERV9SU1RXUk5fT1BU LCB0ZW1wKTsKQEAgLTU0MjQsMTAgKzU0MjQsMTAgQEAgaTkxNV9nZW1fbG9hZF9pbml0X2ZlbmNl cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJaW50IGk7CiAKLQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA3ICYmICFJU19WQUxMRVlWSUVXKGRldl9wcml2KSAmJgor CWlmIChJU19HRU4oZGV2X3ByaXYsIDcsIEdFTl9GT1JFVkVSKSAmJiAhSVNfVkFMTEVZVklFVyhk ZXZfcHJpdikgJiYKIAkgICAgIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQogCQlkZXZfcHJpdi0+ bnVtX2ZlbmNlX3JlZ3MgPSAzMjsKLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQg fHwKKwllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDQsIEdFTl9GT1JFVkVSKSB8fAogCQkgSVNf STk0NUcoZGV2X3ByaXYpIHx8IElTX0k5NDVHTShkZXZfcHJpdikgfHwKIAkJIElTX0czMyhkZXZf cHJpdikgfHwgSVNfUElORVZJRVcoZGV2X3ByaXYpKQogCQlkZXZfcHJpdi0+bnVtX2ZlbmNlX3Jl Z3MgPSAxNjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNi dWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwppbmRl eCBkNmExZjJjZTFmY2QuLjIyYjhiYTljOTRhMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2V4ZWNidWZmZXIuYwpAQCAtMjUyMiw3ICsyNTIyLDcgQEAgaTkxNV9nZW1fZXhlY2J1 ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQlleGVjMl9saXN0W2ld LnJlbG9jc19wdHIgPSBleGVjX2xpc3RbaV0ucmVsb2NzX3B0cjsKIAkJZXhlYzJfbGlzdFtpXS5h bGlnbm1lbnQgPSBleGVjX2xpc3RbaV0uYWxpZ25tZW50OwogCQlleGVjMl9saXN0W2ldLm9mZnNl dCA9IGV4ZWNfbGlzdFtpXS5vZmZzZXQ7Ci0JCWlmIChJTlRFTF9HRU4odG9faTkxNShkZXYpKSA8 IDQpCisJCWlmIChJU19HRU4odG9faTkxNShkZXYpLCBHRU5fRk9SRVZFUiwgMykpCiAJCQlleGVj Ml9saXN0W2ldLmZsYWdzID0gRVhFQ19PQkpFQ1RfTkVFRFNfRkVOQ0U7CiAJCWVsc2UKIAkJCWV4 ZWMyX2xpc3RbaV0uZmxhZ3MgPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZmVuY2VfcmVnLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5j ZV9yZWcuYwppbmRleCBiODMzOGQ3NWM2ZjMuLjMwYTFkMGQ3ZTVlMyAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmMKQEAgLTU1Nyw3ICs1NTcsNyBAQCBpOTE1X2dl bV9kZXRlY3RfYml0XzZfc3dpenpsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAJdWludDMyX3Qgc3dpenpsZV94ID0gSTkxNV9CSVRfNl9TV0laWkxFX1VOS05PV047CiAJdWlu dDMyX3Qgc3dpenpsZV95ID0gSTkxNV9CSVRfNl9TV0laWkxFX1VOS05PV047CiAKLQlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA4IHx8IElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKSB7CisJaWYg KElTX0dFTihkZXZfcHJpdiwgOCwgR0VOX0ZPUkVWRVIpIHx8IElTX1ZBTExFWVZJRVcoZGV2X3By aXYpKSB7CiAJCS8qCiAJCSAqIE9uIEJEVyssIHN3aXp6bGluZyBpcyBub3QgdXNlZC4gV2UgbGVh dmUgdGhlIENQVSBtZW1vcnkKIAkJICogY29udHJvbGxlciBpbiBjaGFyZ2Ugb2Ygb3B0aW1pemlu ZyBtZW1vcnkgYWNjZXNzZXMgd2l0aG91dApAQCAtNTY3LDcgKzU2Nyw3IEBAIGk5MTVfZ2VtX2Rl dGVjdF9iaXRfNl9zd2l6emxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJ ICovCiAJCXN3aXp6bGVfeCA9IEk5MTVfQklUXzZfU1dJWlpMRV9OT05FOwogCQlzd2l6emxlX3kg PSBJOTE1X0JJVF82X1NXSVpaTEVfTk9ORTsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gNikgeworCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA2LCBHRU5fRk9SRVZFUikp IHsKIAkJaWYgKGRldl9wcml2LT5wcmVzZXJ2ZV9iaW9zX3N3aXp6bGUpIHsKIAkJCWlmIChJOTE1 X1JFQUQoRElTUF9BUkJfQ1RMKSAmCiAJCQkgICAgRElTUF9USUxFX1NVUkZBQ0VfU1dJWlpMSU5H KSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmluZGV4IDBjMGYxYWZmZGRhZC4uOWE1 OTZhZjNlODI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwpAQCAtMTU0LDcgKzE1 NCw3IEBAIGludCBpbnRlbF9zYW5pdGl6ZV9lbmFibGVfcHBndHQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAogCSAqIFdlIGRvbid0IGFsbG93IGRpc2FibGluZyBQUEdUVCBmb3Ig Z2VuOSsgYXMgaXQncyBhIHJlcXVpcmVtZW50IGZvcgogCSAqIGV4ZWNsaXN0cywgdGhlIHNvbGUg bWVjaGFuaXNtIGF2YWlsYWJsZSB0byBzdWJtaXQgd29yay4KIAkgKi8KLQlpZiAoZW5hYmxlX3Bw Z3R0ID09IDAgJiYgSU5URUxfR0VOKGRldl9wcml2KSA8IDkpCisJaWYgKGVuYWJsZV9wcGd0dCA9 PSAwICYmIElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDgpKQogCQlyZXR1cm4gMDsKIAog CWlmIChlbmFibGVfcHBndHQgPT0gMSkKQEAgLTIxMDksNyArMjEwOSw3IEBAIHN0YXRpYyBpbnQg X19od19wcGd0dF9pbml0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKIAlwcGd0dC0+YmFz ZS5pOTE1ID0gZGV2X3ByaXY7CiAJcHBndHQtPmJhc2UuZG1hID0gJmRldl9wcml2LT5kcm0ucGRl di0+ZGV2OwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA4KQorCWlmIChJU19HRU4oZGV2 X3ByaXYsIEdFTl9GT1JFVkVSLCA3KSkKIAkJcmV0dXJuIGdlbjZfcHBndHRfaW5pdChwcGd0dCk7 CiAJZWxzZQogCQlyZXR1cm4gZ2VuOF9wcGd0dF9pbml0KHBwZ3R0KTsKQEAgLTIxNzAsNyArMjE3 MCw3IEBAIHN0YXRpYyB2b2lkIGd0dF93cml0ZV93b3JrYXJvdW5kcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJICogZHJpdmVyLgogCSAqLwogCWlmIChIQVNfUEFHRV9TSVpF UyhkZXZfcHJpdiwgSTkxNV9HVFRfUEFHRV9TSVpFXzY0SykgJiYKLQkgICAgSU5URUxfR0VOKGRl dl9wcml2KSA8PSAxMCkKKwkgICAgSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgMTApKQog CQlJOTE1X1dSSVRFKEdFTjhfR0FNV19FQ09fREVWX1JXX0lBLAogCQkJICAgSTkxNV9SRUFEKEdF TjhfR0FNV19FQ09fREVWX1JXX0lBKSB8CiAJCQkgICBHQU1XX0VDT19FTkFCTEVfNjRLX0lQU19G SUVMRCk7CkBAIC0yMTkzLDcgKzIxOTMsNyBAQCBpbnQgaTkxNV9wcGd0dF9pbml0X2h3KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJZ2VuNl9wcGd0dF9lbmFibGUoZGV2X3By aXYpOwogCWVsc2UgaWYgKElTX0dFTjcoZGV2X3ByaXYpKQogCQlnZW43X3BwZ3R0X2VuYWJsZShk ZXZfcHJpdik7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KQorCWVsc2UgaWYg KElTX0dFTihkZXZfcHJpdiwgOCwgR0VOX0ZPUkVWRVIpKQogCQlnZW44X3BwZ3R0X2VuYWJsZShk ZXZfcHJpdik7CiAJZWxzZQogCQlNSVNTSU5HX0NBU0UoSU5URUxfR0VOKGRldl9wcml2KSk7CkBA IC0yMzM4LDkgKzIzMzgsOSBAQCBzdGF0aWMgdm9pZCBnZW44X2NoZWNrX2FuZF9jbGVhcl9mYXVs dHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogdm9pZCBpOTE1X2NoZWNrX2Fu ZF9jbGVhcl9mYXVsdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCS8q IEZyb20gR0VOOCBvbndhcmRzIHdlIG9ubHkgaGF2ZSBvbmUgJ0FsbCBFbmdpbmUgRmF1bHQgUmVn aXN0ZXInICovCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkKKwlpZiAoSVNfR0VOKGRl dl9wcml2LCA4LCBHRU5fRk9SRVZFUikpCiAJCWdlbjhfY2hlY2tfYW5kX2NsZWFyX2ZhdWx0cyhk ZXZfcHJpdik7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KQorCWVsc2UgaWYg KElTX0dFTihkZXZfcHJpdiwgNiwgR0VOX0ZPUkVWRVIpKQogCQlnZW42X2NoZWNrX2FuZF9jbGVh cl9mYXVsdHMoZGV2X3ByaXYpOwogCWVsc2UKIAkJcmV0dXJuOwpAQCAtMjM1Myw3ICsyMzUzLDcg QEAgdm9pZCBpOTE1X2dlbV9zdXNwZW5kX2d0dF9tYXBwaW5ncyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiAJLyogRG9uJ3QgYm90aGVyIG1lc3Npbmcgd2l0aCBmYXVsdHMgcHJl IEdFTjYgYXMgd2UgaGF2ZSBsaXR0bGUKIAkgKiBkb2N1bWVudGF0aW9uIHN1cHBvcnRpbmcgdGhh dCBpdCdzIGEgZ29vZCBpZGVhLgogCSAqLwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNikK KwlpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgNSkpCiAJCXJldHVybjsKIAogCWk5 MTVfY2hlY2tfYW5kX2NsZWFyX2ZhdWx0cyhkZXZfcHJpdik7CkBAIC0yOTk5LDcgKzI5OTksNyBA QCBzdGF0aWMgaW50IGdndHRfcHJvYmVfY29tbW9uKHN0cnVjdCBpOTE1X2dndHQgKmdndHQsIHU2 NCBzaXplKQogCSAqIHJlc29ydCB0byBhbiB1bmNhY2hlZCBtYXBwaW5nLiBUaGUgV0MgaXNzdWUg aXMgZWFzaWx5IGNhdWdodCBieSB0aGUKIAkgKiByZWFkYmFjayBjaGVjayB3aGVuIHdyaXRpbmcg R1RUIFBURSBlbnRyaWVzLgogCSAqLwotCWlmIChJU19HRU45X0xQKGRldl9wcml2KSB8fCBJTlRF TF9HRU4oZGV2X3ByaXYpID49IDEwKQorCWlmIChJU19HRU45X0xQKGRldl9wcml2KSB8fCBJU19H RU4oZGV2X3ByaXYsIDEwLCBHRU5fRk9SRVZFUikpCiAJCWdndHQtPmdzbSA9IGlvcmVtYXBfbm9j YWNoZShwaHlzX2FkZHIsIHNpemUpOwogCWVsc2UKIAkJZ2d0dC0+Z3NtID0gaW9yZW1hcF93Yyhw aHlzX2FkZHIsIHNpemUpOwpAQCAtMzI5NCw3ICszMjk0LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBf cHJpdmF0ZV9wYXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAJcHBhdC0+ aTkxNSA9IGRldl9wcml2OwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTApCisJaWYg KElTX0dFTihkZXZfcHJpdiwgMTAsIEdFTl9GT1JFVkVSKSkKIAkJY25sX3NldHVwX3ByaXZhdGVf cHBhdChwcGF0KTsKIAllbHNlIGlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSB8fCBJU19HRU45 X0xQKGRldl9wcml2KSkKIAkJY2h2X3NldHVwX3ByaXZhdGVfcHBhdChwcGF0KTsKQEAgLTMzMzQs NyArMzMzNCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9nbWNoX3Byb2JlKHN0cnVjdCBpOTE1X2dndHQg KmdndHQpCiAKIAlwY2lfcmVhZF9jb25maWdfd29yZChwZGV2LCBTTkJfR01DSF9DVFJMLCAmc25i X2dtY2hfY3RsKTsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKKwlpZiAoSVNf R0VOKGRldl9wcml2LCA5LCBHRU5fRk9SRVZFUikpIHsKIAkJc2l6ZSA9IGdlbjhfZ2V0X3RvdGFs X2d0dF9zaXplKHNuYl9nbWNoX2N0bCk7CiAJfSBlbHNlIGlmIChJU19DSEVSUllWSUVXKGRldl9w cml2KSkgewogCQlzaXplID0gY2h2X2dldF90b3RhbF9ndHRfc2l6ZShzbmJfZ21jaF9jdGwpOwpA QCAtMzQxOCw3ICszNDE4LDcgQEAgc3RhdGljIGludCBnZW42X2dtY2hfcHJvYmUoc3RydWN0IGk5 MTVfZ2d0dCAqZ2d0dCkKIAkJZ2d0dC0+YmFzZS5wdGVfZW5jb2RlID0gaHN3X3B0ZV9lbmNvZGU7 CiAJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCiAJCWdndHQtPmJhc2UucHRlX2Vu Y29kZSA9IGJ5dF9wdGVfZW5jb2RlOwotCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g NykKKwllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDcsIEdFTl9GT1JFVkVSKSkKIAkJZ2d0dC0+ YmFzZS5wdGVfZW5jb2RlID0gaXZiX3B0ZV9lbmNvZGU7CiAJZWxzZQogCQlnZ3R0LT5iYXNlLnB0 ZV9lbmNvZGUgPSBzbmJfcHRlX2VuY29kZTsKQEAgLTM0ODEsOSArMzQ4MSw5IEBAIGludCBpOTE1 X2dndHRfcHJvYmVfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWdndHQt PmJhc2UuaTkxNSA9IGRldl9wcml2OwogCWdndHQtPmJhc2UuZG1hID0gJmRldl9wcml2LT5kcm0u cGRldi0+ZGV2OwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gNSkKKwlpZiAoSVNfR0VO KGRldl9wcml2LCBHRU5fRk9SRVZFUiwgNSkpCiAJCXJldCA9IGk5MTVfZ21jaF9wcm9iZShnZ3R0 KTsKLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOCkKKwllbHNlIGlmIChJU19HRU4o ZGV2X3ByaXYsIEdFTl9GT1JFVkVSLCA3KSkKIAkJcmV0ID0gZ2VuNl9nbWNoX3Byb2JlKGdndHQp OwogCWVsc2UKIAkJcmV0ID0gZ2VuOF9nbWNoX3Byb2JlKGdndHQpOwpAQCAtMzU3NCw3ICszNTc0 LDcgQEAgaW50IGk5MTVfZ2d0dF9pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAogaW50IGk5MTVfZ2d0dF9lbmFibGVfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogewotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNiAmJiAhaW50ZWxfZW5h YmxlX2d0dCgpKQorCWlmIChJU19HRU4oZGV2X3ByaXYsIEdFTl9GT1JFVkVSLCA1KSAmJiAhaW50 ZWxfZW5hYmxlX2d0dCgpKQogCQlyZXR1cm4gLUVJTzsKIAogCXJldHVybiAwOwpAQCAtMzYzMSw3 ICszNjMxLDcgQEAgdm9pZCBpOTE1X2dlbV9yZXN0b3JlX2d0dF9tYXBwaW5ncyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAlnZ3R0LT5iYXNlLmNsb3NlZCA9IGZhbHNlOwog Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkgeworCWlmIChJU19HRU4oZGV2X3ByaXYs IDgsIEdFTl9GT1JFVkVSKSkgewogCQlzdHJ1Y3QgaW50ZWxfcHBhdCAqcHBhdCA9ICZkZXZfcHJp di0+cHBhdDsKIAogCQliaXRtYXBfc2V0KHBwYXQtPmRpcnR5LCAwLCBwcGF0LT5tYXhfZW50cmll cyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKaW5kZXggOGJjN2M1MGI4 NDE4Li45NzdmMDIzYjc5YmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3JlcXVlc3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0 LmMKQEAgLTI3OSw3ICsyNzksNyBAQCBzdGF0aWMgdm9pZCBtYXJrX2J1c3koc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCiAKIAlpbnRlbF9lbmFibGVfZ3RfcG93ZXJzYXZlKGk5MTUpOwog CWk5MTVfdXBkYXRlX2dmeF92YWwoaTkxNSk7Ci0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA2KQor CWlmIChJU19HRU4oaTkxNSwgNiwgR0VOX0ZPUkVWRVIpKQogCQlnZW42X3Jwc19idXN5KGk5MTUp OwogCWk5MTVfcG11X2d0X3VucGFya2VkKGk5MTUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3N0b2xlbi5jCmluZGV4IGYxOGRhOWUyYmU4ZS4uMGFmZDUwY2Y3MWRlIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwpAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgaW50 IGk5MTVfYWRqdXN0X3N0b2xlbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ ICovCiAKIAkvKiBNYWtlIHN1cmUgd2UgZG9uJ3QgY2xvYmJlciB0aGUgR1RUIGlmIGl0J3Mgd2l0 aGluIHN0b2xlbiBtZW1vcnkgKi8KLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA0ICYmCisJ aWYgKElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDQpICYmCiAJICAgICFJU19HMzMoZGV2 X3ByaXYpICYmICFJU19QSU5FVklFVyhkZXZfcHJpdikgJiYgIUlTX0c0WChkZXZfcHJpdikpIHsK IAkJc3RydWN0IHJlc291cmNlIHN0b2xlblsyXSA9IHsqZHNtLCAqZHNtfTsKIAkJc3RydWN0IHJl c291cmNlIGdndHRfcmVzOwpAQCAtMzM2LDcgKzMzNiw3IEBAIGludCBpOTE1X2dlbV9pbml0X3N0 b2xlbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCXJldHVybiAwOwogCX0K IAotCWlmIChpbnRlbF92dGRfYWN0aXZlKCkgJiYgSU5URUxfR0VOKGRldl9wcml2KSA8IDgpIHsK KwlpZiAoaW50ZWxfdnRkX2FjdGl2ZSgpICYmIElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIs IDcpKSB7CiAJCURSTV9JTkZPKCJETUFSIGFjdGl2ZSwgZGlzYWJsaW5nIHVzZSBvZiBzdG9sZW4g bWVtb3J5XG4iKTsKIAkJcmV0dXJuIDA7CiAJfQpAQCAtNDEyLDcgKzQxMiw3IEBAIGludCBpOTE1 X2dlbV9pbml0X3N0b2xlbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAlz dG9sZW5fdXNhYmxlX3N0YXJ0ID0gMDsKIAkvKiBXYVNraXBTdG9sZW5NZW1vcnlGaXJzdFBhZ2U6 YmR3KyAqLwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCisJaWYgKElTX0dFTihkZXZf cHJpdiwgOCwgR0VOX0ZPUkVWRVIpKQogCQlzdG9sZW5fdXNhYmxlX3N0YXJ0ID0gNDA5NjsKIAog CWRldl9wcml2LT5zdG9sZW5fdXNhYmxlX3NpemUgPQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV90aWxpbmcuYwppbmRleCBkOWRjOWRmNTIzYjUuLjQwNWI4YjIyM2MyNCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMKQEAgLTgwLDcgKzgwLDcgQEAgdTMyIGk5MTVfZ2Vt X2ZlbmNlX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAKIAlHRU1fQlVHX09O KCFzdHJpZGUpOwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA0KSB7CisJaWYgKElTX0dFTihp OTE1LCA0LCBHRU5fRk9SRVZFUikpIHsKIAkJc3RyaWRlICo9IGk5MTVfZ2VtX3RpbGVfaGVpZ2h0 KHRpbGluZyk7CiAJCUdFTV9CVUdfT04oIUlTX0FMSUdORUQoc3RyaWRlLCBJOTY1X0ZFTkNFX1BB R0UpKTsKIAkJcmV0dXJuIHJvdW5kdXAoc2l6ZSwgc3RyaWRlKTsKQEAgLTEyMCw3ICsxMjAsNyBA QCB1MzIgaTkxNV9nZW1fZmVuY2VfYWxpZ25tZW50KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LCB1MzIgc2l6ZSwKIAlpZiAodGlsaW5nID09IEk5MTVfVElMSU5HX05PTkUpCiAJCXJldHVy biBJOTE1X0dUVF9NSU5fQUxJR05NRU5UOwogCi0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSA0KQor CWlmIChJU19HRU4oaTkxNSwgNCwgR0VOX0ZPUkVWRVIpKQogCQlyZXR1cm4gSTk2NV9GRU5DRV9Q QUdFOwogCiAJLyoKQEAgLTE0OCwxMCArMTQ4LDEwIEBAIGk5MTVfdGlsaW5nX29rKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJLyogY2hlY2sgbWF4aW11bSBzdHJpZGUgJiBvYmpl Y3Qgc2l6ZSAqLwogCS8qIGk5NjUrIHN0b3JlcyB0aGUgZW5kIGFkZHJlc3Mgb2YgdGhlIGd0dCBt YXBwaW5nIGluIHRoZSBmZW5jZQogCSAqIHJlZywgc28gZG9udCBib3RoZXIgdG8gY2hlY2sgdGhl IHNpemUgKi8KLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDcpIHsKKwlpZiAoSVNfR0VOKGk5MTUs IDcsIEdFTl9GT1JFVkVSKSkgewogCQlpZiAoc3RyaWRlIC8gMTI4ID4gR0VON19GRU5DRV9NQVhf UElUQ0hfVkFMKQogCQkJcmV0dXJuIGZhbHNlOwotCX0gZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUp ID49IDQpIHsKKwl9IGVsc2UgaWYgKElTX0dFTihpOTE1LCA0LCBHRU5fRk9SRVZFUikpIHsKIAkJ aWYgKHN0cmlkZSAvIDEyOCA+IEk5NjVfRkVOQ0VfTUFYX1BJVENIX1ZBTCkKIAkJCXJldHVybiBm YWxzZTsKIAl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n cHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKaW5kZXgg MTYxZDkxMDNhNjVlLi4wMWMwMjkzMWFkOTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3B1X2Vycm9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVf ZXJyb3IuYwpAQCAtMzc2LDEzICszNzYsMTMgQEAgc3RhdGljIHZvaWQgZXJyb3JfcHJpbnRfaW5z dGRvbmUoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKIAllcnJfcHJpbnRmKG0s ICIgIElOU1RET05FOiAweCUwOHhcbiIsCiAJCSAgIGVlLT5pbnN0ZG9uZS5pbnN0ZG9uZSk7CiAK LQlpZiAoZWUtPmVuZ2luZV9pZCAhPSBSQ1MgfHwgSU5URUxfR0VOKG0tPmk5MTUpIDw9IDMpCisJ aWYgKGVlLT5lbmdpbmVfaWQgIT0gUkNTIHx8IElTX0dFTihtLT5pOTE1LCBHRU5fRk9SRVZFUiwg MykpCiAJCXJldHVybjsKIAogCWVycl9wcmludGYobSwgIiAgU0NfSU5TVERPTkU6IDB4JTA4eFxu IiwKIAkJICAgZWUtPmluc3Rkb25lLnNsaWNlX2NvbW1vbik7CiAKLQlpZiAoSU5URUxfR0VOKG0t Pmk5MTUpIDw9IDYpCisJaWYgKElTX0dFTihtLT5pOTE1LCBHRU5fRk9SRVZFUiwgNikpCiAJCXJl dHVybjsKIAogCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKG0tPmk5MTUsIHNsaWNl LCBzdWJzbGljZSkKQEAgLTQ1NSw3ICs0NTUsNyBAQCBzdGF0aWMgdm9pZCBlcnJvcl9wcmludF9l bmdpbmUoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKIAkJCSAgIHVwcGVyXzMy X2JpdHMoc3RhcnQpLCBsb3dlcl8zMl9iaXRzKHN0YXJ0KSwKIAkJCSAgIHVwcGVyXzMyX2JpdHMo ZW5kKSwgbG93ZXJfMzJfYml0cyhlbmQpKTsKIAl9Ci0JaWYgKElOVEVMX0dFTihtLT5pOTE1KSA+ PSA0KSB7CisJaWYgKElTX0dFTihtLT5pOTE1LCA0LCBHRU5fRk9SRVZFUikpIHsKIAkJZXJyX3By aW50ZihtLCAiICBCQkFERFI6IDB4JTA4eF8lMDh4XG4iLAogCQkJICAgKHUzMikoZWUtPmJiYWRk cj4+MzIpLCAodTMyKWVlLT5iYmFkZHIpOwogCQllcnJfcHJpbnRmKG0sICIgIEJCX1NUQVRFOiAw eCUwOHhcbiIsIGVlLT5iYnN0YXRlKTsKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9pZCBl cnJvcl9wcmludF9lbmdpbmUoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKIAll cnJfcHJpbnRmKG0sICIgIElOU1RQTTogMHglMDh4XG4iLCBlZS0+aW5zdHBtKTsKIAllcnJfcHJp bnRmKG0sICIgIEZBRERSOiAweCUwOHggJTA4eFxuIiwgdXBwZXJfMzJfYml0cyhlZS0+ZmFkZHIp LAogCQkgICBsb3dlcl8zMl9iaXRzKGVlLT5mYWRkcikpOwotCWlmIChJTlRFTF9HRU4obS0+aTkx NSkgPj0gNikgeworCWlmIChJU19HRU4obS0+aTkxNSwgNiwgR0VOX0ZPUkVWRVIpKSB7CiAJCWVy cl9wcmludGYobSwgIiAgUkMgUFNNSTogMHglMDh4XG4iLCBlZS0+cmNfcHNtaSk7CiAJCWVycl9w cmludGYobSwgIiAgRkFVTFRfUkVHOiAweCUwOHhcbiIsIGVlLT5mYXVsdF9yZWcpOwogCQllcnJf cHJpbnRmKG0sICIgIFNZTkNfMDogMHglMDh4XG4iLApAQCAtNDc4LDcgKzQ3OCw3IEBAIHN0YXRp YyB2b2lkIGVycm9yX3ByaW50X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVm ICptLAogCWlmIChVU0VTX1BQR1RUKG0tPmk5MTUpKSB7CiAJCWVycl9wcmludGYobSwgIiAgR0ZY X01PREU6IDB4JTA4eFxuIiwgZWUtPnZtX2luZm8uZ2Z4X21vZGUpOwogCi0JCWlmIChJTlRFTF9H RU4obS0+aTkxNSkgPj0gOCkgeworCQlpZiAoSVNfR0VOKG0tPmk5MTUsIDgsIEdFTl9GT1JFVkVS KSkgewogCQkJaW50IGk7CiAJCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQogCQkJCWVycl9wcmlu dGYobSwgIiAgUERQJWQ6IDB4JTAxNmxseFxuIiwKQEAgLTY5MywxMCArNjkzLDEwIEBAIGludCBp OTE1X2Vycm9yX3N0YXRlX3RvX3N0cihzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICpt LAogCWZvciAoaSA9IDA7IGkgPCBlcnJvci0+bmZlbmNlOyBpKyspCiAJCWVycl9wcmludGYobSwg IiAgZmVuY2VbJWRdID0gJTA4bGx4XG4iLCBpLCBlcnJvci0+ZmVuY2VbaV0pOwogCi0JaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gNikgeworCWlmIChJU19HRU4oZGV2X3ByaXYsIDYsIEdFTl9G T1JFVkVSKSkgewogCQllcnJfcHJpbnRmKG0sICJFUlJPUjogMHglMDh4XG4iLCBlcnJvci0+ZXJy b3IpOwogCi0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCisJCWlmIChJU19HRU4oZGV2 X3ByaXYsIDgsIEdFTl9GT1JFVkVSKSkKIAkJCWVycl9wcmludGYobSwgIkZBVUxUX1RMQl9EQVRB OiAweCUwOHggMHglMDh4XG4iLAogCQkJCSAgIGVycm9yLT5mYXVsdF9kYXRhMSwgZXJyb3ItPmZh dWx0X2RhdGEwKTsKIApAQCAtMTA4OSwxMCArMTA4OSwxMCBAQCBzdGF0aWMgdm9pZCBpOTE1X2dl bV9yZWNvcmRfZmVuY2VzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHsKIAlp bnQgaTsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsKKwlpZiAoSVNfR0VOKGRl dl9wcml2LCA2LCBHRU5fRk9SRVZFUikpIHsKIAkJZm9yIChpID0gMDsgaSA8IGRldl9wcml2LT5u dW1fZmVuY2VfcmVnczsgaSsrKQogCQkJZXJyb3ItPmZlbmNlW2ldID0gSTkxNV9SRUFENjQoRkVO Q0VfUkVHX0dFTjZfTE8oaSkpOwotCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0 KSB7CisJfSBlbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDQsIEdFTl9GT1JFVkVSKSkgewogCQlm b3IgKGkgPSAwOyBpIDwgZGV2X3ByaXYtPm51bV9mZW5jZV9yZWdzOyBpKyspCiAJCQllcnJvci0+ ZmVuY2VbaV0gPSBJOTE1X1JFQUQ2NChGRU5DRV9SRUdfOTY1X0xPKGkpKTsKIAl9IGVsc2UgewpA QCAtMTE5NCw5ICsxMTk0LDkgQEAgc3RhdGljIHZvaWQgZXJyb3JfcmVjb3JkX2VuZ2luZV9yZWdp c3RlcnMoc3RydWN0IGk5MTVfZ3B1X3N0YXRlICplcnJvciwKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA2KSB7CisJaWYgKElTX0dFTihkZXZfcHJpdiwgNiwgR0VOX0ZPUkVWRVIpKSB7CiAJ CWVlLT5yY19wc21pID0gSTkxNV9SRUFEKFJJTkdfUFNNSV9DVEwoZW5naW5lLT5tbWlvX2Jhc2Up KTsKLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkgeworCQlpZiAoSVNfR0VOKGRldl9w cml2LCA4LCBHRU5fRk9SRVZFUikpIHsKIAkJCWVlLT5mYXVsdF9yZWcgPSBJOTE1X1JFQUQoR0VO OF9SSU5HX0ZBVUxUX1JFRyk7CiAJCX0gZWxzZSB7CiAJCQlnZW42X3JlY29yZF9zZW1hcGhvcmVf c3RhdGUoZW5naW5lLCBlZSk7CkBAIC0xMjA0LDEzICsxMjA0LDEzIEBAIHN0YXRpYyB2b2lkIGVy cm9yX3JlY29yZF9lbmdpbmVfcmVnaXN0ZXJzKHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3Is CiAJCX0KIAl9CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7CisJaWYgKElTX0dF TihkZXZfcHJpdiwgNCwgR0VOX0ZPUkVWRVIpKSB7CiAJCWVlLT5mYWRkciA9IEk5MTVfUkVBRChS SU5HX0RNQV9GQUREKGVuZ2luZS0+bW1pb19iYXNlKSk7CiAJCWVlLT5pcGVpciA9IEk5MTVfUkVB RChSSU5HX0lQRUlSKGVuZ2luZS0+bW1pb19iYXNlKSk7CiAJCWVlLT5pcGVociA9IEk5MTVfUkVB RChSSU5HX0lQRUhSKGVuZ2luZS0+bW1pb19iYXNlKSk7CiAJCWVlLT5pbnN0cHMgPSBJOTE1X1JF QUQoUklOR19JTlNUUFMoZW5naW5lLT5tbWlvX2Jhc2UpKTsKIAkJZWUtPmJiYWRkciA9IEk5MTVf UkVBRChSSU5HX0JCQUREUihlbmdpbmUtPm1taW9fYmFzZSkpOwotCQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA4KSB7CisJCWlmIChJU19HRU4oZGV2X3ByaXYsIDgsIEdFTl9GT1JFVkVSKSkg ewogCQkJZWUtPmZhZGRyIHw9ICh1NjQpIEk5MTVfUkVBRChSSU5HX0RNQV9GQUREX1VEVyhlbmdp bmUtPm1taW9fYmFzZSkpIDw8IDMyOwogCQkJZWUtPmJiYWRkciB8PSAodTY0KSBJOTE1X1JFQUQo UklOR19CQkFERFJfVURXKGVuZ2luZS0+bW1pb19iYXNlKSkgPDwgMzI7CiAJCX0KQEAgLTEyMzIs NyArMTIzMiw3IEBAIHN0YXRpYyB2b2lkIGVycm9yX3JlY29yZF9lbmdpbmVfcmVnaXN0ZXJzKHN0 cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJyb3IsCiAJZWUtPmhlYWQgPSBJOTE1X1JFQURfSEVBRChl bmdpbmUpOwogCWVlLT50YWlsID0gSTkxNV9SRUFEX1RBSUwoZW5naW5lKTsKIAllZS0+Y3RsID0g STkxNV9SRUFEX0NUTChlbmdpbmUpOwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID4gMikKKwlp ZiAoSVNfR0VOKGRldl9wcml2LCAzLCBHRU5fRk9SRVZFUikpCiAJCWVlLT5tb2RlID0gSTkxNV9S RUFEX01PREUoZW5naW5lKTsKIAogCWlmICghSFdTX05FRURTX1BIWVNJQ0FMKGRldl9wcml2KSkg ewpAQCAtMTI4Miw3ICsxMjgyLDcgQEAgc3RhdGljIHZvaWQgZXJyb3JfcmVjb3JkX2VuZ2luZV9y ZWdpc3RlcnMoc3RydWN0IGk5MTVfZ3B1X3N0YXRlICplcnJvciwKIAkJZWxzZSBpZiAoSVNfR0VO NyhkZXZfcHJpdikpCiAJCQllZS0+dm1faW5mby5wcF9kaXJfYmFzZSA9CiAJCQkJSTkxNV9SRUFE KFJJTkdfUFBfRElSX0JBU0UoZW5naW5lKSk7Ci0JCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gOCkKKwkJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA4LCBHRU5fRk9SRVZFUikpCiAJ CQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAJCQkJZWUtPnZtX2luZm8ucGRwW2ldID0KIAkJ CQkJSTkxNV9SRUFEKEdFTjhfUklOR19QRFBfVURXKGVuZ2luZSwgaSkpOwpAQCAtMTY0OSw3ICsx NjQ5LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9jYXB0dXJlX3JlZ19zdGF0ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJaWYgKElTX0dFTjcoZGV2X3ByaXYpKQogCQllcnJvci0+ ZXJyX2ludCA9IEk5MTVfUkVBRChHRU43X0VSUl9JTlQpOwogCi0JaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gOCkgeworCWlmIChJU19HRU4oZGV2X3ByaXYsIDgsIEdFTl9GT1JFVkVSKSkgewog CQllcnJvci0+ZmF1bHRfZGF0YTAgPSBJOTE1X1JFQUQoR0VOOF9GQVVMVF9UTEJfREFUQTApOwog CQllcnJvci0+ZmF1bHRfZGF0YTEgPSBJOTE1X1JFQUQoR0VOOF9GQVVMVF9UTEJfREFUQTEpOwog CX0KQEAgLTE2NjEsMTYgKzE2NjEsMTYgQEAgc3RhdGljIHZvaWQgaTkxNV9jYXB0dXJlX3JlZ19z dGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJfQogCiAJLyogMjogUmVn aXN0ZXJzIHdoaWNoIGJlbG9uZyB0byBtdWx0aXBsZSBnZW5lcmF0aW9ucyAqLwotCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDcpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgNywgR0VOX0ZPUkVW RVIpKQogCQllcnJvci0+Zm9yY2V3YWtlID0gSTkxNV9SRUFEX0ZXKEZPUkNFV0FLRV9NVCk7CiAK LQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KSB7CisJaWYgKElTX0dFTihkZXZfcHJpdiwg NiwgR0VOX0ZPUkVWRVIpKSB7CiAJCWVycm9yLT5kZXJybXIgPSBJOTE1X1JFQUQoREVSUk1SKTsK IAkJZXJyb3ItPmVycm9yID0gSTkxNV9SRUFEKEVSUk9SX0dFTjYpOwogCQllcnJvci0+ZG9uZV9y ZWcgPSBJOTE1X1JFQUQoRE9ORV9SRUcpOwogCX0KIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDUpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgNSwgR0VOX0ZPUkVWRVIpKQogCQllcnJvci0+ Y2NpZCA9IEk5MTVfUkVBRChDQ0lEKTsKIAogCS8qIDM6IEZlYXR1cmUgc3BlY2lmaWMgcmVnaXN0 ZXJzICovCkBAIC0xNjgwLDcgKzE2ODAsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2NhcHR1cmVfcmVn X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAl9CiAKIAkvKiA0OiBF dmVyeXRoaW5nIGVsc2UgKi8KLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KSB7CisJaWYg KElTX0dFTihkZXZfcHJpdiwgOCwgR0VOX0ZPUkVWRVIpKSB7CiAJCWVycm9yLT5pZXIgPSBJOTE1 X1JFQUQoR0VOOF9ERV9NSVNDX0lFUik7CiAJCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspCiAJCQll cnJvci0+Z3RpZXJbaV0gPSBJOTE1X1JFQUQoR0VOOF9HVF9JRVIoaSkpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfaXJxLmMKaW5kZXggYjg4NmJkNDU5YWNjLi44ZTMzZjYzOTlhYWQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9pcnEuYwpAQCAtMzA4LDE3ICszMDgsMTcgQEAgdm9pZCBnZW41X2Rpc2FibGVfZ3RfaXJx KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdWludDMyX3QgbWFzaykKIAogc3Rh dGljIGk5MTVfcmVnX3QgZ2VuNl9wbV9paXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogewotCXJldHVybiBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDggPyBHRU44X0dUX0lJUigy KSA6IEdFTjZfUE1JSVI7CisJcmV0dXJuIElTX0dFTihkZXZfcHJpdiwgOCwgR0VOX0ZPUkVWRVIp ID8gR0VOOF9HVF9JSVIoMikgOiBHRU42X1BNSUlSOwogfQogCiBzdGF0aWMgaTkxNV9yZWdfdCBn ZW42X3BtX2ltcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0JcmV0dXJu IElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCA/IEdFTjhfR1RfSU1SKDIpIDogR0VONl9QTUlNUjsK KwlyZXR1cm4gSVNfR0VOKGRldl9wcml2LCA4LCBHRU5fRk9SRVZFUikgPyBHRU44X0dUX0lNUigy KSA6IEdFTjZfUE1JTVI7CiB9CiAKIHN0YXRpYyBpOTE1X3JlZ190IGdlbjZfcG1faWVyKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlyZXR1cm4gSU5URUxfR0VOKGRldl9w cml2KSA+PSA4ID8gR0VOOF9HVF9JRVIoMikgOiBHRU42X1BNSUVSOworCXJldHVybiBJU19HRU4o ZGV2X3ByaXYsIDgsIEdFTl9GT1JFVkVSKSA/IEdFTjhfR1RfSUVSKDIpIDogR0VONl9QTUlFUjsK IH0KIAogLyoqCkBAIC01ODUsNyArNTg1LDcgQEAgdTMyIGk5MTVfcGlwZXN0YXRfZW5hYmxlX21h c2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiAJbG9ja2RlcF9hc3NlcnRf aGVsZCgmZGV2X3ByaXYtPmlycV9sb2NrKTsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwg NSkKKwlpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgNCkpCiAJCWdvdG8gb3V0Owog CiAJLyoKQEAgLTY3Niw3ICs2NzYsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2VuYWJsZV9hc2xlX3Bp cGVzdGF0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlzcGluX2xvY2tfaXJx KCZkZXZfcHJpdi0+aXJxX2xvY2spOwogCiAJaTkxNV9lbmFibGVfcGlwZXN0YXQoZGV2X3ByaXYs IFBJUEVfQiwgUElQRV9MRUdBQ1lfQkxDX0VWRU5UX1NUQVRVUyk7Ci0JaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gNCkKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA0LCBHRU5fRk9SRVZFUikpCiAJ CWk5MTVfZW5hYmxlX3BpcGVzdGF0KGRldl9wcml2LCBQSVBFX0EsCiAJCQkJICAgICBQSVBFX0xF R0FDWV9CTENfRVZFTlRfU1RBVFVTKTsKIApAQCAtOTQ3LDcgKzk0Nyw3IEBAIHN0YXRpYyBib29s IGk5MTVfZ2V0X2NydGNfc2Nhbm91dHBvcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25l ZCBpbnQgcGlwZSwKIAlpZiAoc3RpbWUpCiAJCSpzdGltZSA9IGt0aW1lX2dldCgpOwogCi0JaWYg KElTX0dFTjIoZGV2X3ByaXYpIHx8IElTX0c0WChkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9w cml2KSA+PSA1KSB7CisJaWYgKElTX0dFTjIoZGV2X3ByaXYpIHx8IElTX0c0WChkZXZfcHJpdikg fHwgSVNfR0VOKGRldl9wcml2LCA1LCBHRU5fRk9SRVZFUikpIHsKIAkJLyogTm8gb2J2aW91cyBw aXhlbGNvdW50IHJlZ2lzdGVyLiBPbmx5IHF1ZXJ5IHZlcnRpY2FsCiAJCSAqIHNjYW5vdXQgcG9z aXRpb24gZnJvbSBEaXNwbGF5IHNjYW4gbGluZSByZWdpc3Rlci4KIAkJICovCkBAIC0xMDA3LDcg KzEwMDcsNyBAQCBzdGF0aWMgYm9vbCBpOTE1X2dldF9jcnRjX3NjYW5vdXRwb3Moc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUsCiAJZWxzZQogCQlwb3NpdGlvbiArPSB2 dG90YWwgLSB2YmxfZW5kOwogCi0JaWYgKElTX0dFTjIoZGV2X3ByaXYpIHx8IElTX0c0WChkZXZf cHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSA1KSB7CisJaWYgKElTX0dFTjIoZGV2X3By aXYpIHx8IElTX0c0WChkZXZfcHJpdikgfHwgSVNfR0VOKGRldl9wcml2LCA1LCBHRU5fRk9SRVZF UikpIHsKIAkJKnZwb3MgPSBwb3NpdGlvbjsKIAkJKmhwb3MgPSAwOwogCX0gZWxzZSB7CkBAIC0x NjUyLDcgKzE2NTIsNyBAQCBzdGF0aWMgdm9pZCBkaXNwbGF5X3BpcGVfY3JjX2lycV9oYW5kbGVy KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJICogZG9uJ3QgdHJ1c3QgdGhh dCBvbmUgZWl0aGVyLgogCQkgKi8KIAkJaWYgKHBpcGVfY3JjLT5za2lwcGVkID09IDAgfHwKLQkJ ICAgIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDggJiYgcGlwZV9jcmMtPnNraXBwZWQgPT0gMSkp IHsKKwkJICAgIChJU19HRU4oZGV2X3ByaXYsIDgsIEdFTl9GT1JFVkVSKSAmJiBwaXBlX2NyYy0+ c2tpcHBlZCA9PSAxKSkgewogCQkJcGlwZV9jcmMtPnNraXBwZWQrKzsKIAkJCXNwaW5fdW5sb2Nr KCZwaXBlX2NyYy0+bG9jayk7CiAJCQlyZXR1cm47CkBAIC0xNzAyLDEyICsxNzAyLDEyIEBAIHN0 YXRpYyB2b2lkIGk5eHhfcGlwZV9jcmNfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAogewogCXVpbnQzMl90IHJlczEsIHJlczI7CiAKLQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSAzKQorCWlmIChJU19HRU4oZGV2X3ByaXYsIDMsIEdFTl9GT1JFVkVSKSkK IAkJcmVzMSA9IEk5MTVfUkVBRChQSVBFX0NSQ19SRVNfUkVTMV9JOTE1KHBpcGUpKTsKIAllbHNl CiAJCXJlczEgPSAwOwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSB8fCBJU19HNFgo ZGV2X3ByaXYpKQorCWlmIChJU19HRU4oZGV2X3ByaXYsIDUsIEdFTl9GT1JFVkVSKSB8fCBJU19H NFgoZGV2X3ByaXYpKQogCQlyZXMyID0gSTkxNV9SRUFEKFBJUEVfQ1JDX1JFU19SRVMyX0c0WChw aXBlKSk7CiAJZWxzZQogCQlyZXMyID0gMDsKQEAgLTE3MzYsNyArMTczNiw3IEBAIHN0YXRpYyB2 b2lkIGdlbjZfcnBzX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgdTMyIHBtX2lpcikKIAkJc3Bpbl91bmxvY2soJmRldl9wcml2LT5pcnFfbG9jayk7CiAJfQog Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA4 LCBHRU5fRk9SRVZFUikpCiAJCXJldHVybjsKIAogCWlmIChIQVNfVkVCT1goZGV2X3ByaXYpKSB7 CkBAIC0yNDgyLDcgKzI0ODIsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgaXJvbmxha2VfaXJxX2hh bmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQogCWlmIChndF9paXIpIHsKIAkJSTkxNV9XUklURShH VElJUiwgZ3RfaWlyKTsKIAkJcmV0ID0gSVJRX0hBTkRMRUQ7Ci0JCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDYpCisJCWlmIChJU19HRU4oZGV2X3ByaXYsIDYsIEdFTl9GT1JFVkVSKSkKIAkJ CXNuYl9ndF9pcnFfaGFuZGxlcihkZXZfcHJpdiwgZ3RfaWlyKTsKIAkJZWxzZQogCQkJaWxrX2d0 X2lycV9oYW5kbGVyKGRldl9wcml2LCBndF9paXIpOwpAQCAtMjQ5MiwxMyArMjQ5MiwxMyBAQCBz dGF0aWMgaXJxcmV0dXJuX3QgaXJvbmxha2VfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJn KQogCWlmIChkZV9paXIpIHsKIAkJSTkxNV9XUklURShERUlJUiwgZGVfaWlyKTsKIAkJcmV0ID0g SVJRX0hBTkRMRUQ7Ci0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcpCisJCWlmIChJU19H RU4oZGV2X3ByaXYsIDcsIEdFTl9GT1JFVkVSKSkKIAkJCWl2Yl9kaXNwbGF5X2lycV9oYW5kbGVy KGRldl9wcml2LCBkZV9paXIpOwogCQllbHNlCiAJCQlpbGtfZGlzcGxheV9pcnFfaGFuZGxlcihk ZXZfcHJpdiwgZGVfaWlyKTsKIAl9CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KSB7 CisJaWYgKElTX0dFTihkZXZfcHJpdiwgNiwgR0VOX0ZPUkVWRVIpKSB7CiAJCXUzMiBwbV9paXIg PSBJOTE1X1JFQUQoR0VONl9QTUlJUik7CiAJCWlmIChwbV9paXIpIHsKIAkJCUk5MTVfV1JJVEUo R0VONl9QTUlJUiwgcG1faWlyKTsKQEAgLTI1NjcsNyArMjU2Nyw3IEBAIGdlbjhfZGVfaXJxX2hh bmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWFzdGVyX2N0bCkK IAkJCXJldCA9IElSUV9IQU5ETEVEOwogCiAJCQl0bXBfbWFzayA9IEdFTjhfQVVYX0NIQU5ORUxf QTsKLQkJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCisJCQlpZiAoSVNfR0VOKGRldl9w cml2LCA5LCBHRU5fRk9SRVZFUikpCiAJCQkJdG1wX21hc2sgfD0gR0VOOV9BVVhfQ0hBTk5FTF9C IHwKIAkJCQkJICAgIEdFTjlfQVVYX0NIQU5ORUxfQyB8CiAJCQkJCSAgICBHRU45X0FVWF9DSEFO TkVMX0Q7CkBAIC0yNjMzLDcgKzI2MzMsNyBAQCBnZW44X2RlX2lycV9oYW5kbGVyKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1hc3Rlcl9jdGwpCiAJCQlpbnRlbF9jcHVf Zmlmb191bmRlcnJ1bl9pcnFfaGFuZGxlcihkZXZfcHJpdiwgcGlwZSk7CiAKIAkJZmF1bHRfZXJy b3JzID0gaWlyOwotCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQorCQlpZiAoSVNfR0VO KGRldl9wcml2LCA5LCBHRU5fRk9SRVZFUikpCiAJCQlmYXVsdF9lcnJvcnMgJj0gR0VOOV9ERV9Q SVBFX0lSUV9GQVVMVF9FUlJPUlM7CiAJCWVsc2UKIAkJCWZhdWx0X2Vycm9ycyAmPSBHRU44X0RF X1BJUEVfSVJRX0ZBVUxUX0VSUk9SUzsKQEAgLTI4MDIsNyArMjgwMiw3IEBAIHN0YXRpYyB2b2lk IGk5MTVfY2xlYXJfZXJyb3JfcmVnaXN0ZXJzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAlpZiAoIUlTX0dFTjIoZGV2X3ByaXYpKQogCQlJOTE1X1dSSVRFKFBHVEJMX0VSLCBJ OTE1X1JFQUQoUEdUQkxfRVIpKTsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkKKwlp ZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgMykpCiAJCUk5MTVfV1JJVEUoSVBFSVIs IEk5MTVfUkVBRChJUEVJUikpOwogCWVsc2UKIAkJSTkxNV9XUklURShJUEVJUl9JOTY1LCBJOTE1 X1JFQUQoSVBFSVJfSTk2NSkpOwpAQCAtMjk0NCw3ICsyOTQ0LDcgQEAgc3RhdGljIGludCBpcm9u bGFrZV9lbmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBw aXBlKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2 KTsKIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwotCXVpbnQzMl90IGJpdCA9IElOVEVMX0dFTihk ZXZfcHJpdikgPj0gNyA/CisJdWludDMyX3QgYml0ID0gSVNfR0VOKGRldl9wcml2LCA3LCBHRU5f Rk9SRVZFUikgPwogCQlERV9QSVBFX1ZCTEFOS19JVkIocGlwZSkgOiBERV9QSVBFX1ZCTEFOSyhw aXBlKTsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGlycWZsYWdz KTsKQEAgLTI5OTQsNyArMjk5NCw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX2Rpc2FibGVfdmJs YW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKQogewogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAl1bnNpZ25lZCBs b25nIGlycWZsYWdzOwotCXVpbnQzMl90IGJpdCA9IElOVEVMX0dFTihkZXZfcHJpdikgPj0gNyA/ CisJdWludDMyX3QgYml0ID0gSVNfR0VOKGRldl9wcml2LCA3LCBHRU5fRk9SRVZFUikgPwogCQlE RV9QSVBFX1ZCTEFOS19JVkIocGlwZSkgOiBERV9QSVBFX1ZCTEFOSyhwaXBlKTsKIAogCXNwaW5f bG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGlycWZsYWdzKTsKQEAgLTMwNDYsNyAr MzA0Niw3IEBAIHN0YXRpYyB2b2lkIGlieF9pcnFfcHJlX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCiBzdGF0aWMgdm9pZCBnZW41X2d0X2lycV9yZXNldChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJR0VOM19JUlFfUkVTRVQoR1QpOwotCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDYpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgNiwgR0VOX0ZPUkVW RVIpKQogCQlHRU4zX0lSUV9SRVNFVChHRU42X1BNKTsKIH0KIApAQCAtMzMzMCwxMiArMzMzMCwx MiBAQCBzdGF0aWMgdm9pZCBpbGtfaHBkX2lycV9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiB7CiAJdTMyIGhvdHBsdWdfaXJxcywgZW5hYmxlZF9pcnFzOwogCi0JaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkgeworCWlmIChJU19HRU4oZGV2X3ByaXYsIDgsIEdF Tl9GT1JFVkVSKSkgewogCQlob3RwbHVnX2lycXMgPSBHRU44X1BPUlRfRFBfQV9IT1RQTFVHOwog CQllbmFibGVkX2lycXMgPSBpbnRlbF9ocGRfZW5hYmxlZF9pcnFzKGRldl9wcml2LCBocGRfYmR3 KTsKIAogCQliZHdfdXBkYXRlX3BvcnRfaXJxKGRldl9wcml2LCBob3RwbHVnX2lycXMsIGVuYWJs ZWRfaXJxcyk7Ci0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcpIHsKKwl9IGVs c2UgaWYgKElTX0dFTihkZXZfcHJpdiwgNywgR0VOX0ZPUkVWRVIpKSB7CiAJCWhvdHBsdWdfaXJx cyA9IERFX0RQX0FfSE9UUExVR19JVkI7CiAJCWVuYWJsZWRfaXJxcyA9IGludGVsX2hwZF9lbmFi bGVkX2lycXMoZGV2X3ByaXYsIGhwZF9pdmIpOwogCkBAIC0zNDQ4LDcgKzM0NDgsNyBAQCBzdGF0 aWMgdm9pZCBnZW41X2d0X2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQog CiAJR0VOM19JUlFfSU5JVChHVCwgZGV2X3ByaXYtPmd0X2lycV9tYXNrLCBndF9pcnFzKTsKIAot CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA2 LCBHRU5fRk9SRVZFUikpIHsKIAkJLyoKIAkJICogUlBTIGludGVycnVwdHMgd2lsbCBnZXQgZW5h YmxlZC9kaXNhYmxlZCBvbiBkZW1hbmQgd2hlbiBSUFMKIAkJICogaXRzZWxmIGlzIGVuYWJsZWQv ZGlzYWJsZWQuCkBAIC0zNDY4LDcgKzM0NjgsNyBAQCBzdGF0aWMgaW50IGlyb25sYWtlX2lycV9w b3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAl1MzIgZGlzcGxheV9tYXNrLCBleHRyYV9t YXNrOwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykgeworCWlmIChJU19HRU4oZGV2 X3ByaXYsIDcsIEdFTl9GT1JFVkVSKSkgewogCQlkaXNwbGF5X21hc2sgPSAoREVfTUFTVEVSX0lS UV9DT05UUk9MIHwgREVfR1NFX0lWQiB8CiAJCQkJREVfUENIX0VWRU5UX0lWQiB8IERFX0FVWF9D SEFOTkVMX0FfSVZCKTsKIAkJZXh0cmFfbWFzayA9IChERV9QSVBFQ19WQkxBTktfSVZCIHwgREVf UElQRUJfVkJMQU5LX0lWQiB8CkBAIC0zNTk2LDcgKzM1OTYsNyBAQCBzdGF0aWMgdm9pZCBnZW44 X2RlX2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJ dTMyIGRlX21pc2NfbWFza2VkID0gR0VOOF9ERV9NSVNDX0dTRTsKIAllbnVtIHBpcGUgcGlwZTsK IAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKKwlpZiAoSVNfR0VOKGRldl9wcml2 LCA5LCBHRU5fRk9SRVZFUikpIHsKIAkJZGVfcGlwZV9tYXNrZWQgfD0gR0VOOV9ERV9QSVBFX0lS UV9GQVVMVF9FUlJPUlM7CiAJCWRlX3BvcnRfbWFza2VkIHw9IEdFTjlfQVVYX0NIQU5ORUxfQiB8 IEdFTjlfQVVYX0NIQU5ORUxfQyB8CiAJCQkJICBHRU45X0FVWF9DSEFOTkVMX0Q7CkBAIC00MDQ4 LDE2ICs0MDQ4LDE2IEBAIHZvaWQgaW50ZWxfaXJxX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCSAqCiAJICogVE9ETzogdmVyaWZ5IGlmIHRoaXMgY2FuIGJlIHJlcHJv ZHVjZWQgb24gVkxWLENIVi4KIAkgKi8KLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA3KQor CWlmIChJU19HRU4oZGV2X3ByaXYsIEdFTl9GT1JFVkVSLCA3KSkKIAkJcnBzLT5wbV9pbnRybXNr X21ieiB8PSBHRU42X1BNX1JQX1VQX0VJX0VYUElSRUQ7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA4KQorCWlmIChJU19HRU4oZGV2X3ByaXYsIDgsIEdFTl9GT1JFVkVSKSkKIAkJcnBz LT5wbV9pbnRybXNrX21ieiB8PSBHRU44X1BNSU5UUl9ESVNBQkxFX1JFRElSRUNUX1RPX0dVQzsK IAogCWlmIChJU19HRU4yKGRldl9wcml2KSkgewogCQkvKiBHZW4yIGRvZXNuJ3QgaGF2ZSBhIGhh cmR3YXJlIGZyYW1lIGNvdW50ZXIgKi8KIAkJZGV2LT5tYXhfdmJsYW5rX2NvdW50ID0gMDsKLQl9 IGVsc2UgaWYgKElTX0c0WChkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSA1KSB7 CisJfSBlbHNlIGlmIChJU19HNFgoZGV2X3ByaXYpIHx8IElTX0dFTihkZXZfcHJpdiwgNSwgR0VO X0ZPUkVWRVIpKSB7CiAJCWRldi0+bWF4X3ZibGFua19jb3VudCA9IDB4ZmZmZmZmZmY7IC8qIGZ1 bGwgMzIgYml0IGNvdW50ZXIgKi8KIAkJZGV2LT5kcml2ZXItPmdldF92YmxhbmtfY291bnRlciA9 IGc0eF9nZXRfdmJsYW5rX2NvdW50ZXI7CiAJfSBlbHNlIHsKQEAgLTQxMDQsNyArNDEwNCw3IEBA IHZvaWQgaW50ZWxfaXJxX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog CQlkZXYtPmRyaXZlci0+ZW5hYmxlX3ZibGFuayA9IGk5NjVfZW5hYmxlX3ZibGFuazsKIAkJZGV2 LT5kcml2ZXItPmRpc2FibGVfdmJsYW5rID0gaTk2NV9kaXNhYmxlX3ZibGFuazsKIAkJZGV2X3By aXYtPmRpc3BsYXkuaHBkX2lycV9zZXR1cCA9IGk5MTVfaHBkX2lycV9zZXR1cDsKLQl9IGVsc2Ug aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkgeworCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9w cml2LCA4LCBHRU5fRk9SRVZFUikpIHsKIAkJZGV2LT5kcml2ZXItPmlycV9oYW5kbGVyID0gZ2Vu OF9pcnFfaGFuZGxlcjsKIAkJZGV2LT5kcml2ZXItPmlycV9wcmVpbnN0YWxsID0gZ2VuOF9pcnFf cmVzZXQ7CiAJCWRldi0+ZHJpdmVyLT5pcnFfcG9zdGluc3RhbGwgPSBnZW44X2lycV9wb3N0aW5z dGFsbDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKaW5kZXggZjBjZmRlY2UxNGFlLi4wODRlNTMz MWFiNzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCkBAIC0zMjUzLDcgKzMyNTMsNyBAQCBp bnQgaTkxNV9wZXJmX2FkZF9jb25maWdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9p ZCAqZGF0YSwKIAkJZ290byByZWdfZXJyOwogCX0KIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp IDwgOCkgeworCWlmIChJU19HRU4oZGV2X3ByaXYsIEdFTl9GT1JFVkVSLCA3KSkgewogCQlpZiAo YXJncy0+bl9mbGV4X3JlZ3MgIT0gMCkgewogCQkJZXJyID0gLUVJTlZBTDsKIAkJCWdvdG8gcmVn X2VycjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCmluZGV4IDk2NDQ2N2IwM2U0ZC4uMWVlYzhlZjM0 NzY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMKQEAgLTMxOSw3ICszMTksNyBAQCBlbmdpbmVf ZXZlbnRfc3RhdHVzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAljYXNlIEk5MTVf U0FNUExFX1dBSVQ6CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9TQU1QTEVfU0VNQToKLQkJaWYgKElO VEVMX0dFTihlbmdpbmUtPmk5MTUpIDwgNikKKwkJaWYgKElTX0dFTihlbmdpbmUtPmk5MTUsIEdF Tl9GT1JFVkVSLCA1KSkKIAkJCXJldHVybiAtRU5PREVWOwogCQlicmVhazsKIAlkZWZhdWx0OgpA QCAtMzM5LDcgKzMzOSw3IEBAIGNvbmZpZ19zdGF0dXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsIHU2NCBjb25maWcpCiAJCQlyZXR1cm4gLUVOT0RFVjsKIAkJLyogRmFsbC10aHJvdWdo LiAqLwogCWNhc2UgSTkxNV9QTVVfUkVRVUVTVEVEX0ZSRVFVRU5DWToKLQkJaWYgKElOVEVMX0dF TihpOTE1KSA8IDYpCisJCWlmIChJU19HRU4oaTkxNSwgR0VOX0ZPUkVWRVIsIDUpKQogCQkJcmV0 dXJuIC1FTk9ERVY7CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9QTVVfSU5URVJSVVBUUzoKQEAgLTEw MTgsNyArMTAxOCw3IEBAIHZvaWQgaTkxNV9wbXVfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCiB7CiAJaW50IHJldDsKIAotCWlmIChJTlRFTF9HRU4oaTkxNSkgPD0gMikg eworCWlmIChJU19HRU4oaTkxNSwgR0VOX0ZPUkVWRVIsIDIpKSB7CiAJCURSTV9JTkZPKCJQTVUg bm90IHN1cHBvcnRlZCBmb3IgdGhpcyBHUFUuIik7CiAJCXJldHVybjsKIAl9CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZWcuaAppbmRleCBlOWM3OWI1NjA4MjMuLjAzNjVlYTc5YTEwZiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oCkBAIC0zNzkyLDcgKzM3OTIsNyBAQCBlbnVtIGk5MTVfcG93ZXJfd2VsbF9p ZCB7CiAjZGVmaW5lIElOVEVSVkFMXzFfMjhfVVModXMpCXJvdW5kdXAoKCh1cykgKiAxMDApID4+ IDcsIDI1KQogI2RlZmluZSBJTlRFUlZBTF8xXzMzX1VTKHVzKQkoKCh1cykgKiAzKSAgID4+IDIp CiAjZGVmaW5lIElOVEVSVkFMXzBfODMzX1VTKHVzKQkoKCh1cykgKiA2KSAvIDUpCi0jZGVmaW5l IEdUX0lOVEVSVkFMX0ZST01fVVMoZGV2X3ByaXYsIHVzKSAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA5ID8gXAorI2RlZmluZSBHVF9JTlRFUlZBTF9GUk9NX1VTKGRldl9wcml2LCB1cykgKElTX0dF TihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVWRVIpID8gXAogCQkJCShJU19HRU45X0xQKGRldl9wcml2 KSA/IFwKIAkJCQlJTlRFUlZBTF8wXzgzM19VUyh1cykgOiBcCiAJCQkJSU5URVJWQUxfMV8zM19V Uyh1cykpIDogXApAQCAtMzgwMSw3ICszODAxLDcgQEAgZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQg ewogI2RlZmluZSBJTlRFUlZBTF8xXzI4X1RPX1VTKGludGVydmFsKSAgKCgoaW50ZXJ2YWwpIDw8 IDcpIC8gMTAwKQogI2RlZmluZSBJTlRFUlZBTF8xXzMzX1RPX1VTKGludGVydmFsKSAgKCgoaW50 ZXJ2YWwpIDw8IDIpIC8gMykKICNkZWZpbmUgSU5URVJWQUxfMF84MzNfVE9fVVMoaW50ZXJ2YWwp ICgoKGludGVydmFsKSAqIDUpICAvIDYpCi0jZGVmaW5lIEdUX1BNX0lOVEVSVkFMX1RPX1VTKGRl dl9wcml2LCBpbnRlcnZhbCkgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSA/IFwKKyNkZWZpbmUg R1RfUE1fSU5URVJWQUxfVE9fVVMoZGV2X3ByaXYsIGludGVydmFsKSAoSVNfR0VOKGRldl9wcml2 LCA5LCBHRU5fRk9SRVZFUikgPyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSVNfR0VO OV9MUChkZXZfcHJpdikgPyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlRFUlZBTF8w XzgzM19UT19VUyhpbnRlcnZhbCkgOiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlRF UlZBTF8xXzMzX1RPX1VTKGludGVydmFsKSkgOiBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3N1c3BlbmQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVu ZC5jCmluZGV4IDhmM2FhNGRjMGM5OC4uNTcyNWZhNzI3NDRlIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3N1c3BlbmQuYwpAQCAtMzIsMjUgKzMyLDI1IEBACiBzdGF0aWMgdm9pZCBpOTE1X3NhdmVf ZGlzcGxheShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJLyogRGlzcGxh eSBhcmJpdHJhdGlvbiBjb250cm9sICovCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gNCkK KwlpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgNCkpCiAJCWRldl9wcml2LT5yZWdm aWxlLnNhdmVEU1BBUkIgPSBJOTE1X1JFQUQoRFNQQVJCKTsKIAogCS8qIHNhdmUgRkJDIGludGVy dmFsICovCi0JaWYgKEhBU19GQkMoZGV2X3ByaXYpICYmIElOVEVMX0dFTihkZXZfcHJpdikgPD0g NCAmJiAhSVNfRzRYKGRldl9wcml2KSkKKwlpZiAoSEFTX0ZCQyhkZXZfcHJpdikgJiYgSVNfR0VO KGRldl9wcml2LCBHRU5fRk9SRVZFUiwgNCkgJiYgIUlTX0c0WChkZXZfcHJpdikpCiAJCWRldl9w cml2LT5yZWdmaWxlLnNhdmVGQkNfQ09OVFJPTCA9IEk5MTVfUkVBRChGQkNfQ09OVFJPTCk7CiB9 CiAKIHN0YXRpYyB2b2lkIGk5MTVfcmVzdG9yZV9kaXNwbGF5KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIHsKIAkvKiBEaXNwbGF5IGFyYml0cmF0aW9uICovCi0JaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPD0gNCkKKwlpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwg NCkpCiAJCUk5MTVfV1JJVEUoRFNQQVJCLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlRFNQQVJCKTsK IAogCS8qIG9ubHkgcmVzdG9yZSBGQkMgaW5mbyBvbiB0aGUgcGxhdGZvcm0gdGhhdCBzdXBwb3J0 cyBGQkMqLwogCWludGVsX2ZiY19nbG9iYWxfZGlzYWJsZShkZXZfcHJpdik7CiAKIAkvKiByZXN0 b3JlIEZCQyBpbnRlcnZhbCAqLwotCWlmIChIQVNfRkJDKGRldl9wcml2KSAmJiBJTlRFTF9HRU4o ZGV2X3ByaXYpIDw9IDQgJiYgIUlTX0c0WChkZXZfcHJpdikpCisJaWYgKEhBU19GQkMoZGV2X3By aXYpICYmIElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDQpICYmICFJU19HNFgoZGV2X3By aXYpKQogCQlJOTE1X1dSSVRFKEZCQ19DT05UUk9MLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlRkJD X0NPTlRST0wpOwogCiAJaTkxNV9yZWRpc2FibGVfdmdhKGRldl9wcml2KTsKQEAgLTcwLDcgKzcw LDcgQEAgaW50IGk5MTVfc2F2ZV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAJCQkJICAgICAmZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZUdDREdNQlVTKTsKIAogCS8qIENh Y2hlIG1vZGUgc3RhdGUgKi8KLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDcpCisJaWYgKElT X0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDYpKQogCQlkZXZfcHJpdi0+cmVnZmlsZS5zYXZl Q0FDSEVfTU9ERV8wID0gSTkxNV9SRUFEKENBQ0hFX01PREVfMCk7CiAKIAkvKiBNZW1vcnkgQXJi aXRyYXRpb24gc3RhdGUgKi8KQEAgLTExNCw3ICsxMTQsNyBAQCBpbnQgaTkxNV9yZXN0b3JlX3N0 YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlpOTE1X3Jlc3RvcmVfZGlz cGxheShkZXZfcHJpdik7CiAKIAkvKiBDYWNoZSBtb2RlIHN0YXRlICovCi0JaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPCA3KQorCWlmIChJU19HRU4oZGV2X3ByaXYsIEdFTl9GT1JFVkVSLCA2KSkK IAkJSTkxNV9XUklURShDQUNIRV9NT0RFXzAsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVDQUNIRV9N T0RFXzAgfAogCQkJICAgMHhmZmZmMDAwMCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfc3lzZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYwpp bmRleCBjNzRhMjBiODAxODIuLjA0NTAzY2JkMzhjMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9zeXNmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lz ZnMuYwpAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgaTkxNV9zZXR1cF9zeXNmcyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJcmV0ID0gMDsKIAlpZiAoSVNfVkFMTEVZVklFVyhk ZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCiAJCXJldCA9IHN5c2ZzX2NyZWF0 ZV9maWxlcygma2Rldi0+a29iaiwgdmx2X2F0dHJzKTsKLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDYpCisJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA2LCBHRU5fRk9SRVZFUikp CiAJCXJldCA9IHN5c2ZzX2NyZWF0ZV9maWxlcygma2Rldi0+a29iaiwgZ2VuNl9hdHRycyk7CiAJ aWYgKHJldCkKIAkJRFJNX0VSUk9SKCJSUFMgc3lzZnMgc2V0dXAgZmFpbGVkXG4iKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKaW5kZXggMGVlMzIyNzU5OTRhLi4y NjhlMmE1MjE4ZTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21p Y19wbGFuZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5j CkBAIC0xNzIsNyArMTcyLDcgQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jaGVja193aXRoX3N0 YXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y18KIAkgKiBZLXRpbGlu ZyBpcyBub3Qgc3VwcG9ydGVkIGluIElGLUlEIEludGVybGFjZSBtb2RlIGluCiAJICogR0VOOSBh bmQgYWJvdmUuCiAJICovCi0JaWYgKHN0YXRlLT5mYiAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDkgJiYgY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUgJiYKKwlpZiAoc3RhdGUtPmZiICYmIElTX0dF TihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVWRVIpICYmIGNydGNfc3RhdGUtPmJhc2UuZW5hYmxlICYm CiAJICAgIGFkanVzdGVkX21vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpIHsK IAkJaWYgKHN0YXRlLT5mYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQgfHwK IAkJICAgIHN0YXRlLT5mYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEKSB7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwppbmRleCBmZjQ1NWM3MjQ3NzUuLmVmN2JkMTM3 NTk3OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCkBAIC03MDQsNyArNzA0LDcgQEAg dm9pZCBpbnRlbF9pbml0X2F1ZGlvX2hvb2tzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJ RVcoZGV2X3ByaXYpKSB7CiAJCWRldl9wcml2LT5kaXNwbGF5LmF1ZGlvX2NvZGVjX2VuYWJsZSA9 IGlsa19hdWRpb19jb2RlY19lbmFibGU7CiAJCWRldl9wcml2LT5kaXNwbGF5LmF1ZGlvX2NvZGVj X2Rpc2FibGUgPSBpbGtfYXVkaW9fY29kZWNfZGlzYWJsZTsKLQl9IGVsc2UgaWYgKElTX0hBU1dF TEwoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkgeworCX0gZWxzZSBpZiAo SVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfR0VOKGRldl9wcml2LCA4LCBHRU5fRk9SRVZFUikp IHsKIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZW5hYmxlID0gaHN3X2F1ZGlvX2Nv ZGVjX2VuYWJsZTsKIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZGlzYWJsZSA9IGhz d19hdWRpb19jb2RlY19kaXNhYmxlOwogCX0gZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJp dikpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jCmluZGV4IGFhYjZkMTUzOGZmZi4uNDU5 MTUyZDYzNjI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMKQEAgLTE4OTUsNyArMTg5 NSw3IEBAIHZvaWQgaW50ZWxfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIHN0YXRpYyBpbnQgaW50ZWxfcGl4ZWxfcmF0ZV90b19jZGNsayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJICAgICBpbnQgcGl4ZWxfcmF0ZSkKIHsKLQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkKKwlpZiAoSVNfR0VOKGRldl9wcml2LCAxMCwgR0VO X0ZPUkVWRVIpKQogCQlyZXR1cm4gRElWX1JPVU5EX1VQKHBpeGVsX3JhdGUsIDIpOwogCWVsc2Ug aWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQogCQkvKgpAQCAtMTk1MCw3ICsxOTUwLDcgQEAg aW50IGludGVsX2NydGNfY29tcHV0ZV9taW5fY2RjbGsoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCiAJLyogQWNjb3JkaW5nIHRvIEJTcGVjLCAiVGhlIENEIGNsb2Nr IGZyZXF1ZW5jeSBtdXN0IGJlIGF0IGxlYXN0IHR3aWNlCiAJICogdGhlIGZyZXF1ZW5jeSBvZiB0 aGUgQXphbGlhIEJDTEsuIiBhbmQgQkNMSyBpcyA5NiBNSHogYnkgZGVmYXVsdC4KIAkgKi8KLQlp ZiAoY3J0Y19zdGF0ZS0+aGFzX2F1ZGlvICYmIElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKKwlp ZiAoY3J0Y19zdGF0ZS0+aGFzX2F1ZGlvICYmIElTX0dFTihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVW RVIpKQogCQltaW5fY2RjbGsgPSBtYXgoMiAqIDk2MDAwLCBtaW5fY2RjbGspOwogCiAJLyoKQEAg LTIyMjAsNyArMjIyMCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY29tcHV0ZV9tYXhfZG90Y2xrKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlpbnQgbWF4X2NkY2xrX2ZyZXEg PSBkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXE7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSAxMCkKKwlpZiAoSVNfR0VOKGRldl9wcml2LCAxMCwgR0VOX0ZPUkVWRVIpKQogCQlyZXR1cm4g MiAqIG1heF9jZGNsa19mcmVxOwogCWVsc2UgaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQog CQkvKgpAQCAtMjIzMyw3ICsyMjMzLDcgQEAgc3RhdGljIGludCBpbnRlbF9jb21wdXRlX21heF9k b3RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlyZXR1cm4gbWF4X2Nk Y2xrX2ZyZXE7CiAJZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCiAJCXJldHVybiBt YXhfY2RjbGtfZnJlcSo5NS8xMDA7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQp CisJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgMykpCiAJCXJldHVybiAy Km1heF9jZGNsa19mcmVxKjkwLzEwMDsKIAllbHNlCiAJCXJldHVybiBtYXhfY2RjbGtfZnJlcSo5 MC8xMDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYwppbmRleCBhYTY2ZTk1MmE5NWQuLjgx YTg0NTUyMGM4MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3Iu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCkBAIC0yMjIsNyArMjIy LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9sb2FkX2NzY19tYXRyaXgoc3RydWN0IGRybV9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQogCUk5MTVfV1JJVEUoUElQRV9DU0NfUFJFT0ZGX01FKHBpcGUpLCAw KTsKIAlJOTE1X1dSSVRFKFBJUEVfQ1NDX1BSRU9GRl9MTyhwaXBlKSwgMCk7CiAKLQlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+IDYpIHsKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA3LCBHRU5fRk9S RVZFUikpIHsKIAkJdWludDE2X3QgcG9zdG9mZiA9IDA7CiAKIAkJaWYgKGludGVsX2NydGNfc3Rh dGUtPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9jcnQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jCmluZGV4IGQx NDkzY2VkMTZmOC4uYTJhOGM2ODVkMjhlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9jcnQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYwpAQCAt MTU0LDcgKzE1NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydF9zZXRfZHBtcyhzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRq dXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7CiAJdTMyIGFkcGE7 CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA1KQorCWlmIChJU19HRU4oZGV2X3ByaXYs IDUsIEdFTl9GT1JFVkVSKSkKIAkJYWRwYSA9IEFEUEFfSE9UUExVR19CSVRTOwogCWVsc2UKIAkJ YWRwYSA9IDA7CkBAIC03OTksNyArNzk5LDcgQEAgaW50ZWxfY3J0X2RldGVjdChzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCWlmIChyZXQgPiAwKSB7CiAJCWlmIChpbnRlbF9jcnRf ZGV0ZWN0X2RkYyhjb25uZWN0b3IpKQogCQkJc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19jb25u ZWN0ZWQ7Ci0JCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0KQorCQllbHNlIGlmIChJ U19HRU4oZGV2X3ByaXYsIEdFTl9GT1JFVkVSLCAzKSkKIAkJCXN0YXR1cyA9IGludGVsX2NydF9s b2FkX2RldGVjdChjcnQsCiAJCQkJdG9faW50ZWxfY3J0Yyhjb25uZWN0b3ItPnN0YXRlLT5jcnRj KS0+cGlwZSk7CiAJCWVsc2UgaWYgKGk5MTVfbW9kcGFyYW1zLmxvYWRfZGV0ZWN0X3Rlc3QpCkBA IC04NTUsNyArODU1LDcgQEAgdm9pZCBpbnRlbF9jcnRfcmVzZXQoc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyKQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZW5jb2Rlci0+ZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfY3J0ICpjcnQgPSBpbnRlbF9lbmNvZGVyX3Rv X2NydCh0b19pbnRlbF9lbmNvZGVyKGVuY29kZXIpKTsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDUpIHsKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA1LCBHRU5fRk9SRVZFUikpIHsKIAkJ dTMyIGFkcGE7CiAKIAkJYWRwYSA9IEk5MTVfUkVBRChjcnQtPmFkcGFfcmVnKTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGRpLmMKaW5kZXggOGNhMzc2YWNhOGJkLi44NGFlNjBiOGMwMTAgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RkaS5jCkBAIC0xNDU4LDcgKzE0NTgsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9kZGlfY2xvY2tfZ2V0KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogewogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYp OwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gOCkKKwlpZiAoSVNfR0VOKGRldl9wcml2 LCBHRU5fRk9SRVZFUiwgOCkpCiAJCWhzd19kZGlfY2xvY2tfZ2V0KGVuY29kZXIsIHBpcGVfY29u ZmlnKTsKIAllbHNlIGlmIChJU19HRU45X0JDKGRldl9wcml2KSkKIAkJc2tsX2RkaV9jbG9ja19n ZXQoZW5jb2RlciwgcGlwZV9jb25maWcpOwpAQCAtMjE1Miw3ICsyMTUyLDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfZGRpX2Nsa19zZWxlY3Qoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAK IAkJSTkxNV9XUklURShEUExMX0NUUkwyLCB2YWwpOwogCi0JfSBlbHNlIGlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpIDwgOSkgeworCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZF UiwgOCkpIHsKIAkJSTkxNV9XUklURShQT1JUX0NMS19TRUwocG9ydCksIGhzd19wbGxfdG9fZGRp X3BsbF9zZWwocGxsKSk7CiAJfQogCkBAIC0yMTcwLDcgKzIxNzAsNyBAQCBzdGF0aWMgdm9pZCBp bnRlbF9kZGlfY2xrX2Rpc2FibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiAJZWxz ZSBpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpCiAJCUk5MTVfV1JJVEUoRFBMTF9DVFJMMiwgSTkx NV9SRUFEKERQTExfQ1RSTDIpIHwKIAkJCSAgIERQTExfQ1RSTDJfRERJX0NMS19PRkYocG9ydCkp OwotCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA5KQorCWVsc2UgaWYgKElTX0dFTihk ZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDgpKQogCQlJOTE1X1dSSVRFKFBPUlRfQ0xLX1NFTChwb3J0 KSwgUE9SVF9DTEtfU0VMX05PTkUpOwogfQogCkBAIC0yMjA3LDcgKzIyMDcsNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKIAlpZiAoIWlzX21zdCkKIAkJaW50ZWxfZHBfc2lua19kcG1zKGludGVsX2RwLCBEUk1fTU9E RV9EUE1TX09OKTsKIAlpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKGludGVsX2RwKTsKLQlpZiAo cG9ydCAhPSBQT1JUX0EgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQorCWlmIChwb3J0ICE9 IFBPUlRfQSB8fCBJU19HRU4oZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkKIAkJaW50ZWxfZHBf c3RvcF9saW5rX3RyYWluKGludGVsX2RwKTsKIH0KIApAQCAtMjQwOSw3ICsyNDA5LDcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfZW5hYmxlX2RkaV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKIAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVy LT5iYXNlKTsKIAllbnVtIHBvcnQgcG9ydCA9IGVuY29kZXItPnBvcnQ7CiAKLQlpZiAocG9ydCA9 PSBQT1JUX0EgJiYgSU5URUxfR0VOKGRldl9wcml2KSA8IDkpCisJaWYgKHBvcnQgPT0gUE9SVF9B ICYmIElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDgpKQogCQlpbnRlbF9kcF9zdG9wX2xp bmtfdHJhaW4oaW50ZWxfZHApOwogCiAJaW50ZWxfZWRwX2JhY2tsaWdodF9vbihjcnRjX3N0YXRl LCBjb25uX3N0YXRlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rl dmljZV9pbmZvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCmlu ZGV4IDM5ODNkNmE0NGY3OC4uMTk4MjE4ZDhmMjI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RldmljZV9pbmZvLmMKQEAgLTM4MCw3ICszODAsNyBAQCBzdGF0aWMgdTMyIHJlYWRfdGlt ZXN0YW1wX2ZyZXF1ZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJdTMy IGYxOV8yX21oeiA9IDE5MjAwOwogCXUzMiBmMjRfbWh6ID0gMjQwMDA7CiAKLQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA8PSA0KSB7CisJaWYgKElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIs IDQpKSB7CiAJCS8qIFBSTXMgc2F5OgogCQkgKgogCQkgKiAgICAgIlRoZSB2YWx1ZSBpbiB0aGlz IHJlZ2lzdGVyIGluY3JlbWVudHMgb25jZSBldmVyeSAxNgpAQCAtMzg4LDcgKzM4OCw3IEBAIHN0 YXRpYyB1MzIgcmVhZF90aW1lc3RhbXBfZnJlcXVlbmN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIAkJICogICAgICAo4oCcQ0xLQ0ZH4oCdKSBNQ0hCQVIgcmVnaXN0ZXIpCiAJ CSAqLwogCQlyZXR1cm4gZGV2X3ByaXYtPnJhd2Nsa19mcmVxIC8gMTY7Ci0JfSBlbHNlIGlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpIDw9IDgpIHsKKwl9IGVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwg R0VOX0ZPUkVWRVIsIDgpKSB7CiAJCS8qIFBSTXMgc2F5OgogCQkgKgogCQkgKiAgICAgIlRoZSBQ Q1UgVFNDIGNvdW50cyAxMG5zIGluY3JlbWVudHM7IHRoaXMgdGltZXN0YW1wCkBAIC0zOTYsNyAr Mzk2LDcgQEAgc3RhdGljIHUzMiByZWFkX3RpbWVzdGFtcF9mcmVxdWVuY3koc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkgKiAgICAgIHJvbGxpbmcgb3ZlciBldmVyeSAxLjUg aG91cnMpLgogCQkgKi8KIAkJcmV0dXJuIGYxMl81X21oejsKLQl9IGVsc2UgaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPD0gOSkgeworCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9S RVZFUiwgOSkpIHsKIAkJdTMyIGN0Y19yZWcgPSBJOTE1X1JFQUQoQ1RDX01PREUpOwogCQl1MzIg ZnJlcSA9IDA7CiAKQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGF0aWMgdTMyIHJlYWRfdGltZXN0YW1w X2ZyZXF1ZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCX0KIAogCQly ZXR1cm4gZnJlcTsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gMTApIHsKKwl9 IGVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDEwKSkgewogCQl1MzIgY3Rj X3JlZyA9IEk5MTVfUkVBRChDVENfTU9ERSk7CiAJCXUzMiBmcmVxID0gMDsKIAkJdTMyIHJwbV9j b25maWdfcmVnID0gMDsKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIGludGVsX2RldmljZV9pbmZv X3J1bnRpbWVfaW5pdChzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gKmluZm8pCiAJCWNvbnRhaW5l cl9vZihpbmZvLCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSwgaW5mbyk7CiAJZW51bSBwaXBlIHBp cGU7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkgeworCWlmIChJU19HRU4oZGV2 X3ByaXYsIDEwLCBHRU5fRk9SRVZFUikpIHsKIAkJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlw ZSkKIAkJCWluZm8tPm51bV9zY2FsZXJzW3BpcGVdID0gMjsKIAl9IGVsc2UgaWYgKElTX0dFTjko ZGV2X3ByaXYpKSB7CkBAIC01MDcsNyArNTA3LDcgQEAgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19y dW50aW1lX2luaXQoc3RydWN0IGludGVsX2RldmljZV9pbmZvICppbmZvKQogCX0gZWxzZSBpZiAo SVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKIAkJ Zm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkKIAkJCWluZm8tPm51bV9zcHJpdGVzW3BpcGVd ID0gMjsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSB8fCBJU19HNFgoZGV2 X3ByaXYpKSB7CisJfSBlbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDUsIEdFTl9GT1JFVkVSKSB8 fCBJU19HNFgoZGV2X3ByaXYpKSB7CiAJCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpCiAJ CQlpbmZvLT5udW1fc3ByaXRlc1twaXBlXSA9IDE7CiAJfQpAQCAtNTgwLDcgKzU4MCw3IEBAIHZv aWQgaW50ZWxfZGV2aWNlX2luZm9fcnVudGltZV9pbml0KHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5m byAqaW5mbykKIAkJYnJvYWR3ZWxsX3NzZXVfaW5mb19pbml0KGRldl9wcml2KTsKIAllbHNlIGlm IChJU19HRU45KGRldl9wcml2KSkKIAkJZ2VuOV9zc2V1X2luZm9faW5pdChkZXZfcHJpdik7Ci0J ZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkKKwllbHNlIGlmIChJU19HRU4oZGV2 X3ByaXYsIDEwLCBHRU5fRk9SRVZFUikpCiAJCWdlbjEwX3NzZXVfaW5mb19pbml0KGRldl9wcml2 KTsKIAogCS8qIEluaXRpYWxpemUgY29tbWFuZCBzdHJlYW0gdGltZXN0YW1wIGZyZXF1ZW5jeSAq LwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDBkNTIwN2RiZmRhYy4uZjdh M2NlZmFhYWVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC0xMDQ0LDcg KzEwNDQsNyBAQCBpbnRlbF93YWl0X2Zvcl9waXBlX29mZihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpCiAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19p bnRlbF9jcnRjKG9sZF9jcnRjX3N0YXRlLT5iYXNlLmNydGMpOwogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwogCi0JaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gNCkgeworCWlmIChJU19HRU4oZGV2X3ByaXYsIDQsIEdFTl9GT1JF VkVSKSkgewogCQllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBvbGRfY3J0Y19zdGF0 ZS0+Y3B1X3RyYW5zY29kZXI7CiAJCWk5MTVfcmVnX3QgcmVnID0gUElQRUNPTkYoY3B1X3RyYW5z Y29kZXIpOwogCkBAIC0xNTQyLDcgKzE1NDIsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2VuYWJsZV9w bGwoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJUE9TVElOR19SRUFEKHJlZyk7CiAJdWRlbGF5 KDE1MCk7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7CisJaWYgKElTX0dFTihk ZXZfcHJpdiwgNCwgR0VOX0ZPUkVWRVIpKSB7CiAJCUk5MTVfV1JJVEUoRFBMTF9NRChjcnRjLT5w aXBlKSwKIAkJCSAgIGNydGNfc3RhdGUtPmRwbGxfaHdfc3RhdGUuZHBsbF9tZCk7CiAJfSBlbHNl IHsKQEAgLTIwMjksMTIgKzIwMjksMTIgQEAgc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9jdXJz b3JfYWxpZ25tZW50KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHIKIAogc3Rh dGljIHVuc2lnbmVkIGludCBpbnRlbF9saW5lYXJfYWxpZ25tZW50KGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5 KQorCWlmIChJU19HRU4oZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkKIAkJcmV0dXJuIDI1NiAq IDEwMjQ7CiAJZWxzZSBpZiAoSVNfSTk2NUcoZGV2X3ByaXYpIHx8IElTX0k5NjVHTShkZXZfcHJp dikgfHwKIAkJIElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3By aXYpKQogCQlyZXR1cm4gMTI4ICogMTAyNDsKLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDQpCisJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA0LCBHRU5fRk9SRVZFUikpCiAJCXJl dHVybiA0ICogMTAyNDsKIAllbHNlCiAJCXJldHVybiAwOwpAQCAtMjA1Myw3ICsyMDUzLDcgQEAg c3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9zdXJmX2FsaWdubWVudChjb25zdCBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiwKIAljYXNlIERSTV9GT1JNQVRfTU9EX0xJTkVBUjoKIAkJcmV0dXJu IGludGVsX2xpbmVhcl9hbGlnbm1lbnQoZGV2X3ByaXYpOwogCWNhc2UgSTkxNV9GT1JNQVRfTU9E X1hfVElMRUQ6Ci0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCisJCWlmIChJU19HRU4o ZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkKIAkJCXJldHVybiAyNTYgKiAxMDI0OwogCQlyZXR1 cm4gMDsKIAljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUzoKQEAgLTMxNjMsNyArMzE2 Myw3IEBAIHN0YXRpYyB1MzIgaTl4eF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCiAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FE V0VMTChkZXZfcHJpdikpCiAJCWRzcGNudHIgfD0gRElTUFBMQU5FX1BJUEVfQ1NDX0VOQUJMRTsK IAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkKKwlpZiAoSVNfR0VOKGRldl9wcml2LCBH RU5fRk9SRVZFUiwgMykpCiAJCWRzcGNudHIgfD0gRElTUFBMQU5FX1NFTF9QSVBFKGNydGMtPnBp cGUpOwogCiAJc3dpdGNoIChmYi0+Zm9ybWF0LT5mb3JtYXQpIHsKQEAgLTMxOTMsNyArMzE5Myw3 IEBAIHN0YXRpYyB1MzIgaTl4eF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCiAJCXJldHVybiAwOwogCX0KIAotCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDQgJiYKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA0LCBHRU5fRk9SRVZFUikgJiYKIAkg ICAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEKQogCQlkc3BjbnRyIHw9 IERJU1BQTEFORV9USUxFRDsKIApAQCAtMzIxNiw3ICszMjE2LDcgQEAgaW50IGk5eHhfY2hlY2tf cGxhbmVfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogCiAJ aW50ZWxfYWRkX2ZiX29mZnNldHMoJnNyY194LCAmc3JjX3ksIHBsYW5lX3N0YXRlLCAwKTsKIAot CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgNCwg R0VOX0ZPUkVWRVIpKQogCQlvZmZzZXQgPSBpbnRlbF9jb21wdXRlX3RpbGVfb2Zmc2V0KCZzcmNf eCwgJnNyY195LAogCQkJCQkJICAgcGxhbmVfc3RhdGUsIDApOwogCWVsc2UKQEAgLTMyNjAsMTQg KzMyNjAsMTQgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcGxhbmUoc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSwKIAogCWxpbmVhcl9vZmZzZXQgPSBpbnRlbF9mYl94eV90b19saW5lYXIoeCwg eSwgcGxhbmVfc3RhdGUsIDApOwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkKKwlp ZiAoSVNfR0VOKGRldl9wcml2LCA0LCBHRU5fRk9SRVZFUikpCiAJCWRzcGFkZHJfb2Zmc2V0ID0g cGxhbmVfc3RhdGUtPm1haW4ub2Zmc2V0OwogCWVsc2UKIAkJZHNwYWRkcl9vZmZzZXQgPSBsaW5l YXJfb2Zmc2V0OwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT51bmNvcmUubG9jaywg aXJxZmxhZ3MpOwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0KSB7CisJaWYgKElTX0dF TihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDMpKSB7CiAJCS8qIHBpcGVzcmMgYW5kIGRzcHNpemUg Y29udHJvbCB0aGUgc2l6ZSB0aGF0IGlzIHNjYWxlZCBmcm9tLAogCQkgKiB3aGljaCBzaG91bGQg YWx3YXlzIGJlIHRoZSB1c2VyJ3MgcmVxdWVzdGVkIHNpemUuCiAJCSAqLwpAQCAtMzI5MSw3ICsz MjkxLDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5l ICpwbGFuZSwKIAkJCSAgICAgIGludGVsX3BsYW5lX2dndHRfb2Zmc2V0KHBsYW5lX3N0YXRlKSAr CiAJCQkgICAgICBkc3BhZGRyX29mZnNldCk7CiAJCUk5MTVfV1JJVEVfRlcoRFNQT0ZGU0VUKGk5 eHhfcGxhbmUpLCAoeSA8PCAxNikgfCB4KTsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gNCkgeworCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA0LCBHRU5fRk9SRVZFUikp IHsKIAkJSTkxNV9XUklURV9GVyhEU1BTVVJGKGk5eHhfcGxhbmUpLAogCQkJICAgICAgaW50ZWxf cGxhbmVfZ2d0dF9vZmZzZXQocGxhbmVfc3RhdGUpICsKIAkJCSAgICAgIGRzcGFkZHJfb2Zmc2V0 KTsKQEAgLTMzMTcsNyArMzMxNyw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfZGlzYWJsZV9wbGFuZShz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+ dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKIAogCUk5MTVfV1JJVEVfRlcoRFNQQ05UUihpOXh4X3Bs YW5lKSwgMCk7Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkKKwlpZiAoSVNfR0VOKGRl dl9wcml2LCA0LCBHRU5fRk9SRVZFUikpCiAJCUk5MTVfV1JJVEVfRlcoRFNQU1VSRihpOXh4X3Bs YW5lKSwgMCk7CiAJZWxzZQogCQlJOTE1X1dSSVRFX0ZXKERTUEFERFIoaTl4eF9wbGFuZSksIDAp OwpAQCAtMzUzOCw3ICszNTM4LDcgQEAgdTMyIHNrbF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAKIAlwbGFuZV9jdGwgPSBQTEFORV9DVExfRU5B QkxFOwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMCAmJiAhSVNfR0VNSU5JTEFLRShk ZXZfcHJpdikpIHsKKwlpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgOSkgJiYgIUlT X0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7CiAJCXBsYW5lX2N0bCB8PSBza2xfcGxhbmVfY3RsX2Fs cGhhKGZiLT5mb3JtYXQtPmZvcm1hdCk7CiAJCXBsYW5lX2N0bCB8PQogCQkJUExBTkVfQ1RMX1BJ UEVfR0FNTUFfRU5BQkxFIHwKQEAgLTM1NTAsNyArMzU1MCw3IEBAIHUzMiBza2xfcGxhbmVfY3Rs KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCXBsYW5lX2N0bCB8 PSBza2xfcGxhbmVfY3RsX3RpbGluZyhmYi0+bW9kaWZpZXIpOwogCXBsYW5lX2N0bCB8PSBza2xf cGxhbmVfY3RsX3JvdGF0ZShyb3RhdGlvbiAmIERSTV9NT0RFX1JPVEFURV9NQVNLKTsKIAotCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKQorCWlmIChJU19HRU4oZGV2X3ByaXYsIDEwLCBH RU5fRk9SRVZFUikpCiAJCXBsYW5lX2N0bCB8PSBjbmxfcGxhbmVfY3RsX2ZsaXAocm90YXRpb24g JgogCQkJCQkJRFJNX01PREVfUkVGTEVDVF9NQVNLKTsKIApAQCAtMzYxOCw3ICszNjE4LDcgQEAg X19pbnRlbF9kaXNwbGF5X3Jlc3VtZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogc3RhdGljIGJv b2wgZ3B1X3Jlc2V0X2Nsb2JiZXJzX2Rpc3BsYXkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogewogCXJldHVybiBpbnRlbF9oYXNfZ3B1X3Jlc2V0KGRldl9wcml2KSAmJgotCQlJ TlRFTF9HRU4oZGV2X3ByaXYpIDwgNSAmJiAhSVNfRzRYKGRldl9wcml2KTsKKwkJSVNfR0VOKGRl dl9wcml2LCBHRU5fRk9SRVZFUiwgNCkgJiYgIUlTX0c0WChkZXZfcHJpdik7CiB9CiAKIHZvaWQg aW50ZWxfcHJlcGFyZV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCkBA IC0zNzU3LDcgKzM3NTcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfcGlwZV9jb25maWco Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YQogCQkgICAobmV3X2Ny dGNfc3RhdGUtPnBpcGVfc3JjX2ggLSAxKSk7CiAKIAkvKiBvbiBza3lsYWtlIHRoaXMgaXMgZG9u ZSBieSBkZXRhY2hpbmcgc2NhbGVycyAqLwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkp IHsKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA5LCBHRU5fRk9SRVZFUikpIHsKIAkJc2tsX2RldGFj aF9zY2FsZXJzKGNydGMpOwogCiAJCWlmIChuZXdfY3J0Y19zdGF0ZS0+cGNoX3BmaXQuZW5hYmxl ZCkKQEAgLTQ2ODMsNyArNDY4Myw3IEBAIHNrbF91cGRhdGVfc2NhbGVyKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLCBib29sIGZvcmNlX2RldGFjaCwKIAkgKiBPbmNlIE5WMTIg aXMgZW5hYmxlZCwgaGFuZGxlIGl0IGhlcmUgd2hpbGUgYWxsb2NhdGluZyBzY2FsZXIKIAkgKiBm b3IgTlYxMi4KIAkgKi8KLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5ICYmIGNydGNfc3Rh dGUtPmJhc2UuZW5hYmxlICYmCisJaWYgKElTX0dFTihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVWRVIp ICYmIGNydGNfc3RhdGUtPmJhc2UuZW5hYmxlICYmCiAJICAgIG5lZWRfc2NhbGluZyAmJiBhZGp1 c3RlZF9tb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKSB7CiAJCURSTV9ERUJV R19LTVMoIlBpcGUvUGxhbmUgc2NhbGluZyBub3Qgc3VwcG9ydGVkIHdpdGggSUYtSUQgbW9kZVxu Iik7CiAJCXJldHVybiAtRUlOVkFMOwpAQCAtNTQ3Nyw3ICs1NDc3LDcgQEAgc3RhdGljIHZvaWQg aGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcs CiAJaWYgKHBzbF9jbGtnYXRlX3dhKQogCQlnbGtfcGlwZV9zY2FsZXJfY2xvY2tfZ2F0aW5nX3dh KGRldl9wcml2LCBwaXBlLCB0cnVlKTsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkp CisJaWYgKElTX0dFTihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVWRVIpKQogCQlza3lsYWtlX3BmaXRf ZW5hYmxlKGludGVsX2NydGMpOwogCWVsc2UKIAkJaXJvbmxha2VfcGZpdF9lbmFibGUoaW50ZWxf Y3J0Yyk7CkBAIC01NjIzLDcgKzU2MjMsNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZGlz YWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCiAJaWYgKCF0cmFu c2NvZGVyX2lzX2RzaShjcHVfdHJhbnNjb2RlcikpCiAJCWludGVsX2RkaV9kaXNhYmxlX3RyYW5z Y29kZXJfZnVuYyhkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIpOwogCi0JaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOSkKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA5LCBHRU5fRk9SRVZFUikpCiAJ CXNreWxha2Vfc2NhbGVyX2Rpc2FibGUoaW50ZWxfY3J0Yyk7CiAJZWxzZQogCQlpcm9ubGFrZV9w Zml0X2Rpc2FibGUoaW50ZWxfY3J0YywgZmFsc2UpOwpAQCAtNjMwNyw3ICs2MzA3LDcgQEAgc3Rh dGljIGJvb2wgaW50ZWxfY3J0Y19zdXBwb3J0c19kb3VibGVfd2lkZShjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YykKIAljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKIAogCS8qIEdERyBkb3VibGUgd2lkZSBvbiBlaXRo ZXIgcGlwZSwgb3RoZXJ3aXNlIHBpcGUgQSBvbmx5ICovCi0JcmV0dXJuIElOVEVMX0dFTihkZXZf cHJpdikgPCA0ICYmCisJcmV0dXJuIElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDMpICYm CiAJCShjcnRjLT5waXBlID09IFBJUEVfQSB8fCBJU19JOTE1RyhkZXZfcHJpdikpOwogfQogCkBA IC02MzY3LDcgKzYzNjcsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfY29tcHV0ZV9jb25maWco c3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg KmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKIAlpbnQg Y2xvY2tfbGltaXQgPSBkZXZfcHJpdi0+bWF4X2RvdGNsa19mcmVxOwogCi0JaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPCA0KSB7CisJaWYgKElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDMp KSB7CiAJCWNsb2NrX2xpbWl0ID0gZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxICogOSAvIDEwOwog CiAJCS8qCkBAIC02NDIwLDcgKzY0MjAsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfY29tcHV0 ZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJLyogQ2FudGlnYSsgY2Fubm90IGhh bmRsZSBtb2RlcyB3aXRoIGEgaHN5bmMgZnJvbnQgcG9yY2ggb2YgMC4KIAkgKiBXYVBydW5lTW9k ZVdpdGhJbmNvcnJlY3RIc3luY09mZnNldDpjdGcsZWxrLGlsayxzbmIsaXZiLHZsdixoc3cuCiAJ ICovCi0JaWYgKChJTlRFTF9HRU4oZGV2X3ByaXYpID4gNCB8fCBJU19HNFgoZGV2X3ByaXYpKSAm JgorCWlmICgoSVNfR0VOKGRldl9wcml2LCA1LCBHRU5fRk9SRVZFUikgfHwgSVNfRzRYKGRldl9w cml2KSkgJiYKIAkJYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oc3luY19zdGFydCA9PSBhZGp1c3RlZF9t b2RlLT5jcnRjX2hkaXNwbGF5KQogCQlyZXR1cm4gLUVJTlZBTDsKIApAQCAtNjU3Nyw3ICs2NTc3 LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3B1X3RyYW5zY29kZXJfc2V0X21fbihzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YywKIAlpbnQgcGlwZSA9IGNydGMtPnBpcGU7CiAJZW51bSB0cmFuc2NvZGVy IHRyYW5zY29kZXIgPSBjcnRjLT5jb25maWctPmNwdV90cmFuc2NvZGVyOwogCi0JaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gNSkgeworCWlmIChJU19HRU4oZGV2X3ByaXYsIDUsIEdFTl9GT1JF VkVSKSkgewogCQlJOTE1X1dSSVRFKFBJUEVfREFUQV9NMSh0cmFuc2NvZGVyKSwgVFVfU0laRSht X24tPnR1KSB8IG1fbi0+Z21jaF9tKTsKIAkJSTkxNV9XUklURShQSVBFX0RBVEFfTjEodHJhbnNj b2RlciksIG1fbi0+Z21jaF9uKTsKIAkJSTkxNV9XUklURShQSVBFX0xJTktfTTEodHJhbnNjb2Rl ciksIG1fbi0+bGlua19tKTsKQEAgLTY1ODcsNyArNjU4Nyw3IEBAIHN0YXRpYyB2b2lkIGludGVs X2NwdV90cmFuc2NvZGVyX3NldF9tX24oc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCSAqIHJl Z2lzdGVycyBhcmUgbm90IHVubmVjZXNzYXJpbHkgYWNjZXNzZWQpLgogCQkgKi8KIAkJaWYgKG0y X24yICYmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSB8fAotCQkgICAgSU5URUxfR0VOKGRldl9w cml2KSA8IDgpICYmIGNydGMtPmNvbmZpZy0+aGFzX2RycnMpIHsKKwkJICAgIElTX0dFTihkZXZf cHJpdiwgR0VOX0ZPUkVWRVIsIDcpKSAmJiBjcnRjLT5jb25maWctPmhhc19kcnJzKSB7CiAJCQlJ OTE1X1dSSVRFKFBJUEVfREFUQV9NMih0cmFuc2NvZGVyKSwKIAkJCQkJVFVfU0laRShtMl9uMi0+ dHUpIHwgbTJfbjItPmdtY2hfbSk7CiAJCQlJOTE1X1dSSVRFKFBJUEVfREFUQV9OMih0cmFuc2Nv ZGVyKSwgbTJfbjItPmdtY2hfbik7CkBAIC02OTcxLDcgKzY5NzEsNyBAQCBzdGF0aWMgdm9pZCBp OXh4X2NvbXB1dGVfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJZHBsbCB8PSBEUExM Ql9MVkRTX1AyX0NMT0NLX0RJVl8xNDsKIAkJYnJlYWs7CiAJfQotCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDQpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgNCwgR0VOX0ZPUkVWRVIpKQogCQlk cGxsIHw9ICg2IDw8IFBMTF9MT0FEX1BVTFNFX1BIQVNFX1NISUZUKTsKIAogCWlmIChjcnRjX3N0 YXRlLT5zZHZvX3R2X2Nsb2NrKQpAQCAtNjk4NSw3ICs2OTg1LDcgQEAgc3RhdGljIHZvaWQgaTl4 eF9jb21wdXRlX2RwbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJZHBsbCB8PSBEUExMX1ZD T19FTkFCTEU7CiAJY3J0Y19zdGF0ZS0+ZHBsbF9od19zdGF0ZS5kcGxsID0gZHBsbDsKIAotCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA0LCBH RU5fRk9SRVZFUikpIHsKIAkJdTMyIGRwbGxfbWQgPSAoY3J0Y19zdGF0ZS0+cGl4ZWxfbXVsdGlw bGllciAtIDEpCiAJCQk8PCBEUExMX01EX1VESV9NVUxUSVBMSUVSX1NISUZUOwogCQljcnRjX3N0 YXRlLT5kcGxsX2h3X3N0YXRlLmRwbGxfbWQgPSBkcGxsX21kOwpAQCAtNzA1OCw3ICs3MDU4LDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfc2V0X3BpcGVfdGltaW5ncyhzdHJ1Y3QgaW50ZWxfY3J0YyAq aW50ZWxfY3J0YykKIAkJCXZzeW5jc2hpZnQgKz0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19odG90YWw7 CiAJfQogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPiAzKQorCWlmIChJU19HRU4oZGV2X3By aXYsIDQsIEdFTl9GT1JFVkVSKSkKIAkJSTkxNV9XUklURShWU1lOQ1NISUZUKGNwdV90cmFuc2Nv ZGVyKSwgdnN5bmNzaGlmdCk7CiAKIAlJOTE1X1dSSVRFKEhUT1RBTChjcHVfdHJhbnNjb2Rlciks CkBAIC03MjE3LDcgKzcyMTcsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3NldF9waXBlY29uZihzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKIAl9CiAKIAlpZiAoaW50ZWxfY3J0Yy0+Y29uZmln LT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkgewot CQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQgfHwKKwkJaWYgKElTX0dFTihkZXZfcHJpdiwg R0VOX0ZPUkVWRVIsIDMpIHx8CiAJCSAgICBpbnRlbF9jcnRjX2hhc190eXBlKGludGVsX2NydGMt PmNvbmZpZywgSU5URUxfT1VUUFVUX1NEVk8pKQogCQkJcGlwZWNvbmYgfD0gUElQRUNPTkZfSU5U RVJMQUNFX1dfRklFTERfSU5ESUNBVElPTjsKIAkJZWxzZQpAQCAtNzQyOCw3ICs3NDI4LDcgQEAg c3RhdGljIHZvaWQgaTl4eF9nZXRfcGZpdF9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMs CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNl LmRldik7CiAJdWludDMyX3QgdG1wOwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gMyAm JgorCWlmIChJU19HRU4oZGV2X3ByaXYsIEdFTl9GT1JFVkVSLCAzKSAmJgogCSAgICAoSVNfSTgz MChkZXZfcHJpdikgfHwgIUlTX01PQklMRShkZXZfcHJpdikpKQogCQlyZXR1cm47CiAKQEAgLTc0 MzcsNyArNzQzNyw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfZ2V0X3BmaXRfY29uZmlnKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAogCQlyZXR1cm47CiAKIAkvKiBDaGVjayB3aGV0aGVyIHRoZSBwZml0 IGlzIGF0dGFjaGVkIHRvIG91ciBwaXBlLiAqLwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwg NCkgeworCWlmIChJU19HRU4oZGV2X3ByaXYsIEdFTl9GT1JFVkVSLCAzKSkgewogCQlpZiAoY3J0 Yy0+cGlwZSAhPSBQSVBFX0IpCiAJCQlyZXR1cm47CiAJfSBlbHNlIHsKQEAgLTc1MDYsNyArNzUw Niw3IEBAIGk5eHhfZ2V0X2luaXRpYWxfcGxhbmVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLAogCiAJdmFsID0gSTkxNV9SRUFEKERTUENOVFIoaTl4eF9wbGFuZSkpOwogCi0JaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gNCkgeworCWlmIChJU19HRU4oZGV2X3ByaXYsIDQsIEdFTl9G T1JFVkVSKSkgewogCQlpZiAodmFsICYgRElTUFBMQU5FX1RJTEVEKSB7CiAJCQlwbGFuZV9jb25m aWctPnRpbGluZyA9IEk5MTVfVElMSU5HX1g7CiAJCQlmYi0+bW9kaWZpZXIgPSBJOTE1X0ZPUk1B VF9NT0RfWF9USUxFRDsKQEAgLTc1MjAsNyArNzUyMCw3IEBAIGk5eHhfZ2V0X2luaXRpYWxfcGxh bmVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCWlmIChJU19IQVNXRUxMKGRldl9w cml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7CiAJCW9mZnNldCA9IEk5MTVfUkVBRChE U1BPRkZTRVQoaTl4eF9wbGFuZSkpOwogCQliYXNlID0gSTkxNV9SRUFEKERTUFNVUkYoaTl4eF9w bGFuZSkpICYgMHhmZmZmZjAwMDsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g NCkgeworCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA0LCBHRU5fRk9SRVZFUikpIHsKIAkJ aWYgKHBsYW5lX2NvbmZpZy0+dGlsaW5nKQogCQkJb2Zmc2V0ID0gSTkxNV9SRUFEKERTUFRJTEVP RkYoaTl4eF9wbGFuZSkpOwogCQllbHNlCkBAIC03NjI2LDcgKzc2MjYsNyBAQCBzdGF0aWMgYm9v bCBpOXh4X2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkgICAgKHRt cCAmIFBJUEVDT05GX0NPTE9SX1JBTkdFX1NFTEVDVCkpCiAJCXBpcGVfY29uZmlnLT5saW1pdGVk X2NvbG9yX3JhbmdlID0gdHJ1ZTsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkKKwlp ZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgMykpCiAJCXBpcGVfY29uZmlnLT5kb3Vi bGVfd2lkZSA9IHRtcCAmIFBJUEVDT05GX0RPVUJMRV9XSURFOwogCiAJaW50ZWxfZ2V0X3BpcGVf dGltaW5ncyhjcnRjLCBwaXBlX2NvbmZpZyk7CkBAIC03NjM0LDcgKzc2MzQsNyBAQCBzdGF0aWMg Ym9vbCBpOXh4X2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAogCWk5 eHhfZ2V0X3BmaXRfY29uZmlnKGNydGMsIHBpcGVfY29uZmlnKTsKIAotCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDQpIHsKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA0LCBHRU5fRk9SRVZFUikp IHsKIAkJLyogTm8gd2F5IHRvIHJlYWQgaXQgb3V0IG9uIHBpcGVzIEIgYW5kIEMgKi8KIAkJaWYg KElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpICYmIGNydGMtPnBpcGUgIT0gUElQRV9BKQogCQkJdG1w ID0gZGV2X3ByaXYtPmNodl9kcGxsX21kW2NydGMtPnBpcGVdOwpAQCAtODE5NCw3ICs4MTk0LDcg QEAgc3RhdGljIHZvaWQgaGFzd2VsbF9zZXRfcGlwZW1pc2Moc3RydWN0IGRybV9jcnRjICpjcnRj KQogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsK IAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY29uZmlnID0gaW50ZWxfY3J0Yy0+Y29uZmlnOwog Ci0JaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSA5 KSB7CisJaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikgfHwgSVNfR0VOKGRldl9wcml2LCA5LCBH RU5fRk9SRVZFUikpIHsKIAkJdTMyIHZhbCA9IDA7CiAKIAkJc3dpdGNoIChpbnRlbF9jcnRjLT5j b25maWctPnBpcGVfYnBwKSB7CkBAIC04NDI1LDcgKzg0MjUsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9jcHVfdHJhbnNjb2Rlcl9nZXRfbV9uKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwog CWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDUpIHsKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA1LCBHRU5fRk9SRVZFUikpIHsKIAkJbV9u LT5saW5rX20gPSBJOTE1X1JFQUQoUElQRV9MSU5LX00xKHRyYW5zY29kZXIpKTsKIAkJbV9uLT5s aW5rX24gPSBJOTE1X1JFQUQoUElQRV9MSU5LX04xKHRyYW5zY29kZXIpKTsKIAkJbV9uLT5nbWNo X20gPSBJOTE1X1JFQUQoUElQRV9EQVRBX00xKHRyYW5zY29kZXIpKQpAQCAtODQzNyw3ICs4NDM3 LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3B1X3RyYW5zY29kZXJfZ2V0X21fbihzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YywKIAkJICogZ2VuIDwgOCkgYW5kIGlmIERSUlMgaXMgc3VwcG9ydGVkICh0 byBtYWtlIHN1cmUgdGhlCiAJCSAqIHJlZ2lzdGVycyBhcmUgbm90IHVubmVjZXNzYXJpbHkgcmVh ZCkuCiAJCSAqLwotCQlpZiAobTJfbjIgJiYgSU5URUxfR0VOKGRldl9wcml2KSA8IDggJiYKKwkJ aWYgKG0yX24yICYmIElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDcpICYmCiAJCQljcnRj LT5jb25maWctPmhhc19kcnJzKSB7CiAJCQltMl9uMi0+bGlua19tID0gSTkxNV9SRUFEKFBJUEVf TElOS19NMih0cmFuc2NvZGVyKSk7CiAJCQltMl9uMi0+bGlua19uID0JSTkxNV9SRUFEKFBJUEVf TElOS19OMih0cmFuc2NvZGVyKSk7CkBAIC04NTM2LDEyICs4NTM2LDEyIEBAIHNreWxha2VfZ2V0 X2luaXRpYWxfcGxhbmVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCiAJdmFsID0g STkxNV9SRUFEKFBMQU5FX0NUTChwaXBlLCBwbGFuZV9pZCkpOwogCi0JaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gMTEpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgMTEsIEdFTl9GT1JFVkVSKSkK IAkJcGl4ZWxfZm9ybWF0ID0gdmFsICYgSUNMX1BMQU5FX0NUTF9GT1JNQVRfTUFTSzsKIAllbHNl CiAJCXBpeGVsX2Zvcm1hdCA9IHZhbCAmIFBMQU5FX0NUTF9GT1JNQVRfTUFTSzsKIAotCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDEwIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7CisJ aWYgKElTX0dFTihkZXZfcHJpdiwgMTAsIEdFTl9GT1JFVkVSKSB8fCBJU19HRU1JTklMQUtFKGRl dl9wcml2KSkgewogCQlhbHBoYSA9IEk5MTVfUkVBRChQTEFORV9DT0xPUl9DVEwocGlwZSwgcGxh bmVfaWQpKTsKIAkJYWxwaGEgJj0gUExBTkVfQ09MT1JfQUxQSEFfTUFTSzsKIAl9IGVsc2UgewpA QCAtOTE4OCw3ICs5MTg4LDcgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9nZXRfZGRpX3BvcnRfc3Rh dGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJICogRERJIEUuIFNvIGp1c3QgY2hlY2sgd2hl dGhlciB0aGlzIHBpcGUgaXMgd2lyZWQgdG8gRERJIEUgYW5kIHdoZXRoZXIKIAkgKiB0aGUgUENI IHRyYW5zY29kZXIgaXMgb24uCiAJICovCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA5ICYm CisJaWYgKElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDgpICYmCiAJICAgIChwb3J0ID09 IFBPUlRfRSkgJiYgSTkxNV9SRUFEKExQVF9UUkFOU0NPTkYpICYgVFJBTlNfRU5BQkxFKSB7CiAJ CXBpcGVfY29uZmlnLT5oYXNfcGNoX2VuY29kZXIgPSB0cnVlOwogCkBAIC05MjM4LDExICs5MjM4 LDExIEBAIHN0YXRpYyBib29sIGhhc3dlbGxfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAogCXBpcGVfY29uZmlnLT5nYW1tYV9tb2RlID0KIAkJSTkxNV9SRUFEKEdBTU1B X01PREUoY3J0Yy0+cGlwZSkpICYgR0FNTUFfTU9ERV9NT0RFX01BU0s7CiAKLQlpZiAoSVNfQlJP QURXRUxMKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKKwlpZiAoSVNf QlJPQURXRUxMKGRldl9wcml2KSB8fCBJU19HRU4oZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkg ewogCQl1MzIgdG1wID0gSTkxNV9SRUFEKFBJUEVNSVNDKGNydGMtPnBpcGUpKTsKIAkJYm9vbCBj bHJzcGFjZV95dXYgPSB0bXAgJiBQSVBFTUlTQ19PVVRQVVRfQ09MT1JTUEFDRV9ZVVY7CiAKLQkJ aWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTAp IHsKKwkJaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8IElTX0dFTihkZXZfcHJpdiwgMTAs IEdFTl9GT1JFVkVSKSkgewogCQkJYm9vbCBibGVuZF9tb2RlXzQyMCA9IHRtcCAmCiAJCQkJCSAg ICAgIFBJUEVNSVNDX1lVVjQyMF9NT0RFX0ZVTExfQkxFTkQ7CiAKQEAgLTkyNTgsNyArOTI1OCw3 IEBAIHN0YXRpYyBib29sIGhhc3dlbGxfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjLAogCXBvd2VyX2RvbWFpbiA9IFBPV0VSX0RPTUFJTl9QSVBFX1BBTkVMX0ZJVFRFUihj cnRjLT5waXBlKTsKIAlpZiAoaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZf cHJpdiwgcG93ZXJfZG9tYWluKSkgewogCQlwb3dlcl9kb21haW5fbWFzayB8PSBCSVRfVUxMKHBv d2VyX2RvbWFpbik7Ci0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCisJCWlmIChJU19H RU4oZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkKIAkJCXNreWxha2VfZ2V0X3BmaXRfY29uZmln KGNydGMsIHBpcGVfY29uZmlnKTsKIAkJZWxzZQogCQkJaXJvbmxha2VfZ2V0X3BmaXRfY29uZmln KGNydGMsIHBpcGVfY29uZmlnKTsKQEAgLTEwMjI3LDcgKzEwMjI3LDcgQEAgaW50IGludGVsX3Bs YW5lX2F0b21pY19jYWxjX2NoYW5nZXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9s ZF9jcnRjX3N0YXQKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5m YjsKIAlpbnQgcmV0OwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSAmJiBwbGFuZS0+ aWQgIT0gUExBTkVfQ1VSU09SKSB7CisJaWYgKElTX0dFTihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVW RVIpICYmIHBsYW5lLT5pZCAhPSBQTEFORV9DVVJTT1IpIHsKIAkJcmV0ID0gc2tsX3VwZGF0ZV9z Y2FsZXJfcGxhbmUoCiAJCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpLAogCQkJdG9f aW50ZWxfcGxhbmVfc3RhdGUocGxhbmVfc3RhdGUpKTsKQEAgLTEwMjc2LDIxICsxMDI3NiwyMSBA QCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdlcyhjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdAogCQkJIHR1cm5fb2ZmLCB0dXJuX29uLCBtb2RlX2No YW5nZWQpOwogCiAJaWYgKHR1cm5fb24pIHsKLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA1 ICYmICFJU19HNFgoZGV2X3ByaXYpKQorCQlpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZF UiwgNCkgJiYgIUlTX0c0WChkZXZfcHJpdikpCiAJCQlwaXBlX2NvbmZpZy0+dXBkYXRlX3dtX3By ZSA9IHRydWU7CiAKIAkJLyogbXVzdCBkaXNhYmxlIGN4c3IgYXJvdW5kIHBsYW5lIGVuYWJsZS9k aXNhYmxlICovCiAJCWlmIChwbGFuZS0+aWQgIT0gUExBTkVfQ1VSU09SKQogCQkJcGlwZV9jb25m aWctPmRpc2FibGVfY3hzciA9IHRydWU7CiAJfSBlbHNlIGlmICh0dXJuX29mZikgewotCQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA8IDUgJiYgIUlTX0c0WChkZXZfcHJpdikpCisJCWlmIChJU19H RU4oZGV2X3ByaXYsIEdFTl9GT1JFVkVSLCA0KSAmJiAhSVNfRzRYKGRldl9wcml2KSkKIAkJCXBp cGVfY29uZmlnLT51cGRhdGVfd21fcG9zdCA9IHRydWU7CiAKIAkJLyogbXVzdCBkaXNhYmxlIGN4 c3IgYXJvdW5kIHBsYW5lIGVuYWJsZS9kaXNhYmxlICovCiAJCWlmIChwbGFuZS0+aWQgIT0gUExB TkVfQ1VSU09SKQogCQkJcGlwZV9jb25maWctPmRpc2FibGVfY3hzciA9IHRydWU7CiAJfSBlbHNl IGlmIChpbnRlbF93bV9uZWVkX3VwZGF0ZSgmcGxhbmUtPmJhc2UsIHBsYW5lX3N0YXRlKSkgewot CQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDUgJiYgIUlTX0c0WChkZXZfcHJpdikpIHsKKwkJ aWYgKElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDQpICYmICFJU19HNFgoZGV2X3ByaXYp KSB7CiAJCQkvKiBGSVhNRSBib2xsb2NrcyAqLwogCQkJcGlwZV9jb25maWctPnVwZGF0ZV93bV9w cmUgPSB0cnVlOwogCQkJcGlwZV9jb25maWctPnVwZGF0ZV93bV9wb3N0ID0gdHJ1ZTsKQEAgLTEw NDA3LDExICsxMDQwNywxMSBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfYXRvbWljX2NoZWNrKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCXJldHVybiByZXQ7CiAJCX0KIAl9IGVsc2UgaWYgKGRl dl9wcml2LT5kaXNwbGF5LmNvbXB1dGVfaW50ZXJtZWRpYXRlX3dtKSB7Ci0JCWlmIChIQVNfUENI X1NQTElUKGRldl9wcml2KSAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSkKKwkJaWYgKEhBU19Q Q0hfU1BMSVQoZGV2X3ByaXYpICYmIElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDgpKQog CQkJcGlwZV9jb25maWctPndtLmlsay5pbnRlcm1lZGlhdGUgPSBwaXBlX2NvbmZpZy0+d20uaWxr Lm9wdGltYWw7CiAJfQogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgeworCWlmIChJ U19HRU4oZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkgewogCQlpZiAobW9kZV9jaGFuZ2VkKQog CQkJcmV0ID0gc2tsX3VwZGF0ZV9zY2FsZXJfY3J0YyhwaXBlX2NvbmZpZyk7CiAKQEAgLTEwNDk5 LDcgKzEwNDk5LDcgQEAgY29tcHV0ZV9iYXNlbGluZV9waXBlX2JwcChzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKIAlpZiAoKElTX0c0WChkZXZfcHJpdikgfHwgSVNfVkFMTEVZVklFVyhkZXZfcHJp dikgfHwKIAkgICAgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpKQogCQlicHAgPSAxMCozOwotCWVs c2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkKKwllbHNlIGlmIChJU19HRU4oZGV2X3By aXYsIDUsIEdFTl9GT1JFVkVSKSkKIAkJYnBwID0gMTIqMzsKIAllbHNlCiAJCWJwcCA9IDgqMzsK QEAgLTEwNjQxLDcgKzEwNjQxLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHVtcF9waXBlX2NvbmZp ZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJICAgICAgcGlwZV9jb25maWctPnBpcGVfc3Jj X3csIHBpcGVfY29uZmlnLT5waXBlX3NyY19oLAogCQkgICAgICBwaXBlX2NvbmZpZy0+cGl4ZWxf cmF0ZSk7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQorCWlmIChJU19HRU4oZGV2 X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkKIAkJRFJNX0RFQlVHX0tNUygibnVtX3NjYWxlcnM6ICVk LCBzY2FsZXJfdXNlcnM6IDB4JXgsIHNjYWxlcl9pZDogJWRcbiIsCiAJCQkgICAgICBjcnRjLT5u dW1fc2NhbGVycywKIAkJCSAgICAgIHBpcGVfY29uZmlnLT5zY2FsZXJfc3RhdGUuc2NhbGVyX3Vz ZXJzLApAQCAtMTA2ODIsNyArMTA2ODIsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kdW1wX3BpcGVf Y29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQkJICAgICAgcGxhbmUtPmJhc2UuaWQs IHBsYW5lLT5uYW1lLAogCQkJICAgICAgZmItPmJhc2UuaWQsIGZiLT53aWR0aCwgZmItPmhlaWdo dCwKIAkJCSAgICAgIGRybV9nZXRfZm9ybWF0X25hbWUoZmItPmZvcm1hdC0+Zm9ybWF0LCAmZm9y bWF0X25hbWUpKTsKLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKKwkJaWYgKElTX0dF TihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVWRVIpKQogCQkJRFJNX0RFQlVHX0tNUygiXHRzY2FsZXI6 JWQgc3JjICVkeCVkKyVkKyVkIGRzdCAlZHglZCslZCslZFxuIiwKIAkJCQkgICAgICBzdGF0ZS0+ c2NhbGVyX2lkLAogCQkJCSAgICAgIHN0YXRlLT5iYXNlLnNyYy54MSA+PiAxNiwKQEAgLTExMTY3 LDcgKzExMTY3LDcgQEAgaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJUElQRV9DT05GX0NIRUNLX0kobGFuZV9jb3VudCk7CiAJUElQ RV9DT05GX0NIRUNLX1gobGFuZV9sYXRfb3B0aW1fbWFzayk7CiAKLQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA8IDgpIHsKKwlpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgNykpIHsK IAkJUElQRV9DT05GX0NIRUNLX01fTihkcF9tX24pOwogCiAJCWlmIChjdXJyZW50X2NvbmZpZy0+ aGFzX2RycnMpCkBAIC0xMTE5Myw3ICsxMTE5Myw3IEBAIGludGVsX3BpcGVfY29uZmlnX2NvbXBh cmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiAJUElQRV9DT05GX0NIRUNL X0kocGl4ZWxfbXVsdGlwbGllcik7CiAJUElQRV9DT05GX0NIRUNLX0JPT0woaGFzX2hkbWlfc2lu ayk7Ci0JaWYgKChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOCAmJiAhSVNfSEFTV0VMTChkZXZfcHJp dikpIHx8CisJaWYgKChJU19HRU4oZGV2X3ByaXYsIEdFTl9GT1JFVkVSLCA3KSAmJiAhSVNfSEFT V0VMTChkZXZfcHJpdikpIHx8CiAJICAgIElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NI RVJSWVZJRVcoZGV2X3ByaXYpKQogCQlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChsaW1pdGVkX2NvbG9y X3JhbmdlKTsKIApAQCAtMTEyMjAsNyArMTEyMjAsNyBAQCBpbnRlbF9waXBlX2NvbmZpZ19jb21w YXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCVBJUEVfQ09ORl9DSEVD S19YKGdtY2hfcGZpdC5jb250cm9sKTsKIAkvKiBwZml0IHJhdGlvcyBhcmUgYXV0b2NvbXB1dGVk IGJ5IHRoZSBodyBvbiBnZW40KyAqLwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkKKwlp ZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgMykpCiAJCVBJUEVfQ09ORl9DSEVDS19Y KGdtY2hfcGZpdC5wZ21fcmF0aW9zKTsKIAlQSVBFX0NPTkZfQ0hFQ0tfWChnbWNoX3BmaXQubHZk c19ib3JkZXJfYml0cyk7CiAKQEAgLTExMjY2LDcgKzExMjY2LDcgQEAgaW50ZWxfcGlwZV9jb25m aWdfY29tcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJUElQRV9DT05G X0NIRUNLX1goZHNpX3BsbC5jdHJsKTsKIAlQSVBFX0NPTkZfQ0hFQ0tfWChkc2lfcGxsLmRpdik7 CiAKLQlpZiAoSVNfRzRYKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpCisJ aWYgKElTX0c0WChkZXZfcHJpdikgfHwgSVNfR0VOKGRldl9wcml2LCA1LCBHRU5fRk9SRVZFUikp CiAJCVBJUEVfQ09ORl9DSEVDS19JKHBpcGVfYnBwKTsKIAogCVBJUEVfQ09ORl9DSEVDS19DTE9D S19GVVpaWShiYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayk7CkBAIC0xMTMxNiw3ICsxMTMx Niw3IEBAIHN0YXRpYyB2b2lkIHZlcmlmeV93bV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMs CiAJY29uc3QgZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwogCWludCBwbGFuZSwg bGV2ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2X3ByaXYpOwogCi0JaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPCA5IHx8ICFuZXdfc3RhdGUtPmFjdGl2ZSkKKwlpZiAoSVNfR0VO KGRldl9wcml2LCBHRU5fRk9SRVZFUiwgOCkgfHwgIW5ld19zdGF0ZS0+YWN0aXZlKQogCQlyZXR1 cm47CiAKIAlza2xfcGlwZV93bV9nZXRfaHdfc3RhdGUoY3J0YywgJmh3X3dtKTsKQEAgLTEyMjkz LDcgKzEyMjkzLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkJCQkgKgogCQkJCSAqIE5vIGNsdWUgd2hhdCB0 aGlzIGlzIHN1cHBvc2VkIHRvIGFjaGlldmUuCiAJCQkJICovCi0JCQkJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOSkKKwkJCQlpZiAoSVNfR0VOKGRldl9wcml2LCA5LCBHRU5fRk9SRVZFUikp CiAJCQkJCWRldl9wcml2LT5kaXNwbGF5LmluaXRpYWxfd2F0ZXJtYXJrcyhpbnRlbF9zdGF0ZSwK IAkJCQkJCQkJCSAgICAgdG9faW50ZWxfY3J0Y19zdGF0ZShuZXdfY3J0Y19zdGF0ZSkpOwogCQkJ fQpAQCAtMTI0ODUsNyArMTI0ODUsNyBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jb21taXQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkgKiBGSVhNRSBkb2luZyB3YXRlcm1hcmtzIGFuZCBm YiBjbGVhbnVwIGZyb20gYSB2Ymxhbmsgd29ya2VyCiAJICogKGFzc3VtaW5nIHdlIGhhZCBhbnkp IHdvdWxkIHNvbHZlIHRoZXNlIHByb2JsZW1zLgogCSAqLwotCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpIDwgOSAmJiBzdGF0ZS0+bGVnYWN5X2N1cnNvcl91cGRhdGUpIHsKKwlpZiAoSVNfR0VOKGRl dl9wcml2LCBHRU5fRk9SRVZFUiwgOCkgJiYgc3RhdGUtPmxlZ2FjeV9jdXJzb3JfdXBkYXRlKSB7 CiAJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZTsKIAkJc3RydWN0IGlu dGVsX2NydGMgKmNydGM7CiAJCWludCBpOwpAQCAtMTI1OTIsNyArMTI1OTIsNyBAQCBzdGF0aWMg dm9pZCBhZGRfcnBzX2Jvb3N0X2FmdGVyX3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJ aWYgKCFkbWFfZmVuY2VfaXNfaTkxNShmZW5jZSkpCiAJCXJldHVybjsKIAotCWlmIChJTlRFTF9H RU4odG9faTkxNShjcnRjLT5kZXYpKSA8IDYpCisJaWYgKElTX0dFTih0b19pOTE1KGNydGMtPmRl diksIEdFTl9GT1JFVkVSLCA1KSkKIAkJcmV0dXJuOwogCiAJaWYgKGRybV9jcnRjX3ZibGFua19n ZXQoY3J0YykpCkBAIC0xMjc3MCw3ICsxMjc3MCw3IEBAIHNrbF9tYXhfc2NhbGUoc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NydGMsIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl CiAJY3J0Y19jbG9jayA9IGNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2Nr OwogCW1heF9kb3RjbGsgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUoY3J0Y19zdGF0ZS0+YmFzZS5z dGF0ZSktPmNkY2xrLmxvZ2ljYWwuY2RjbGs7CiAKLQlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJp dikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkKKwlpZiAoSVNfR0VNSU5JTEFLRShkZXZf cHJpdikgfHwgSVNfR0VOKGRldl9wcml2LCAxMCwgR0VOX0ZPUkVWRVIpKQogCQltYXhfZG90Y2xr ICo9IDI7CiAKIAlpZiAoV0FSTl9PTl9PTkNFKCFjcnRjX2Nsb2NrIHx8IG1heF9kb3RjbGsgPCBj cnRjX2Nsb2NrKSkKQEAgLTEyODAxLDcgKzEyODAxLDcgQEAgaW50ZWxfY2hlY2tfcHJpbWFyeV9w bGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCXN0cnVjdCBkcm1fcmVjdCBjbGlwID0g e307CiAJaW50IHJldDsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKKwlpZiAo SVNfR0VOKGRldl9wcml2LCA5LCBHRU5fRk9SRVZFUikpIHsKIAkJLyogdXNlIHNjYWxlciB3aGVu IGNvbG9ya2V5IGlzIG5vdCByZXF1aXJlZCAqLwogCQlpZiAoIXN0YXRlLT5ja2V5LmZsYWdzKSB7 CiAJCQltaW5fc2NhbGUgPSAxOwpAQCAtMTI4MjUsNyArMTI4MjUsNyBAQCBpbnRlbF9jaGVja19w cmltYXJ5X3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCiAJaWYgKCFzdGF0ZS0+YmFz ZS5mYikKIAkJcmV0dXJuIDA7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7CisJ aWYgKElTX0dFTihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVWRVIpKSB7CiAJCXJldCA9IHNrbF9jaGVj a19wbGFuZV9zdXJmYWNlKGNydGNfc3RhdGUsIHN0YXRlKTsKIAkJaWYgKHJldCkKIAkJCXJldHVy biByZXQ7CkBAIC0xMjgzOSw3ICsxMjgzOSw3IEBAIGludGVsX2NoZWNrX3ByaW1hcnlfcGxhbmUo c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKIAkJc3RhdGUtPmN0bCA9IGk5eHhfcGxhbmVfY3Rs KGNydGNfc3RhdGUsIHN0YXRlKTsKIAl9CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAx MCB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkKKwlpZiAoSVNfR0VOKGRldl9wcml2LCAxMCwg R0VOX0ZPUkVWRVIpIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQogCQlzdGF0ZS0+Y29sb3Jf Y3RsID0gZ2xrX3BsYW5lX2NvbG9yX2N0bChjcnRjX3N0YXRlLCBzdGF0ZSk7CiAKIAlyZXR1cm4g MDsKQEAgLTEyODc0LDcgKzEyODc0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfYmVnaW5fY3J0Y19j b21taXQoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJaWYgKGludGVsX2NzdGF0ZS0+dXBkYXRl X3BpcGUpCiAJCWludGVsX3VwZGF0ZV9waXBlX2NvbmZpZyhvbGRfaW50ZWxfY3N0YXRlLCBpbnRl bF9jc3RhdGUpOwotCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKKwllbHNlIGlm IChJU19HRU4oZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkKIAkJc2tsX2RldGFjaF9zY2FsZXJz KGludGVsX2NydGMpOwogCiBvdXQ6CkBAIC0xMjk5OCw5ICsxMjk5OCw5IEBAIHN0YXRpYyBib29s IGludGVsX3ByaW1hcnlfcGxhbmVfZm9ybWF0X21vZF9zdXBwb3J0ZWQoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCiAJICAgIG1vZGlmaWVyICE9IERSTV9GT1JNQVRfTU9EX0xJTkVBUikKIAkJcmV0 dXJuIGZhbHNlOwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKKwlpZiAoSVNfR0VO KGRldl9wcml2LCA5LCBHRU5fRk9SRVZFUikpCiAJCXJldHVybiBza2xfbW9kX3N1cHBvcnRlZChm b3JtYXQsIG1vZGlmaWVyKTsKLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCisJ ZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA0LCBHRU5fRk9SRVZFUikpCiAJCXJldHVybiBpOTY1 X21vZF9zdXBwb3J0ZWQoZm9ybWF0LCBtb2RpZmllcik7CiAJZWxzZQogCQlyZXR1cm4gaTh4eF9t b2Rfc3VwcG9ydGVkKGZvcm1hdCwgbW9kaWZpZXIpOwpAQCAtMTMxOTcsNyArMTMxOTcsNyBAQCBp bnRlbF9wcmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIGVudW0gcGlwZSBwaXBlKQogCiAJcHJpbWFyeS0+Y2FuX3NjYWxlID0gZmFsc2U7CiAJcHJp bWFyeS0+bWF4X2Rvd25zY2FsZSA9IDE7Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkg eworCWlmIChJU19HRU4oZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkgewogCQlwcmltYXJ5LT5j YW5fc2NhbGUgPSB0cnVlOwogCQlzdGF0ZS0+c2NhbGVyX2lkID0gLTE7CiAJfQpAQCAtMTMyMDYs NyArMTMyMDYsNyBAQCBpbnRlbF9wcmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBlKQogCSAqIE9uIGdlbjIvMyBvbmx5IHBs YW5lIEEgY2FuIGRvIEZCQywgYnV0IHRoZSBwYW5lbCBmaXR0ZXIgYW5kIExWRFMKIAkgKiBwb3J0 IGlzIGhvb2tlZCB0byBwaXBlIEIuIEhlbmNlIHdlIHdhbnQgcGxhbmUgQSBmZWVkaW5nIHBpcGUg Qi4KIAkgKi8KLQlpZiAoSEFTX0ZCQyhkZXZfcHJpdikgJiYgSU5URUxfR0VOKGRldl9wcml2KSA8 IDQpCisJaWYgKEhBU19GQkMoZGV2X3ByaXYpICYmIElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVW RVIsIDMpKQogCQlwcmltYXJ5LT5pOXh4X3BsYW5lID0gKGVudW0gaTl4eF9wbGFuZV9pZCkgIXBp cGU7CiAJZWxzZQogCQlwcmltYXJ5LT5pOXh4X3BsYW5lID0gKGVudW0gaTl4eF9wbGFuZV9pZCkg cGlwZTsKQEAgLTEzMjE0LDcgKzEzMjE0LDcgQEAgaW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSkKIAlwcmlt YXJ5LT5mcm9udGJ1ZmZlcl9iaXQgPSBJTlRFTF9GUk9OVEJVRkZFUihwaXBlLCBwcmltYXJ5LT5p ZCk7CiAJcHJpbWFyeS0+Y2hlY2tfcGxhbmUgPSBpbnRlbF9jaGVja19wcmltYXJ5X3BsYW5lOwog Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgeworCWlmIChJU19HRU4oZGV2X3ByaXYs IDksIEdFTl9GT1JFVkVSKSkgewogCQlpbnRlbF9wcmltYXJ5X2Zvcm1hdHMgPSBza2xfcHJpbWFy eV9mb3JtYXRzOwogCQludW1fZm9ybWF0cyA9IEFSUkFZX1NJWkUoc2tsX3ByaW1hcnlfZm9ybWF0 cyk7CiAKQEAgLTEzMjI2LDcgKzEzMjI2LDcgQEAgaW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSkKIAkJcHJp bWFyeS0+dXBkYXRlX3BsYW5lID0gc2tsX3VwZGF0ZV9wbGFuZTsKIAkJcHJpbWFyeS0+ZGlzYWJs ZV9wbGFuZSA9IHNrbF9kaXNhYmxlX3BsYW5lOwogCQlwcmltYXJ5LT5nZXRfaHdfc3RhdGUgPSBz a2xfcGxhbmVfZ2V0X2h3X3N0YXRlOwotCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA0KSB7CisJfSBlbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDQsIEdFTl9GT1JFVkVSKSkgewog CQlpbnRlbF9wcmltYXJ5X2Zvcm1hdHMgPSBpOTY1X3ByaW1hcnlfZm9ybWF0czsKIAkJbnVtX2Zv cm1hdHMgPSBBUlJBWV9TSVpFKGk5NjVfcHJpbWFyeV9mb3JtYXRzKTsKIAkJbW9kaWZpZXJzID0g aTl4eF9mb3JtYXRfbW9kaWZpZXJzOwpAQCAtMTMyNDQsMTQgKzEzMjQ0LDE0IEBAIGludGVsX3By aW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51 bSBwaXBlIHBpcGUpCiAJCXByaW1hcnktPmdldF9od19zdGF0ZSA9IGk5eHhfcGxhbmVfZ2V0X2h3 X3N0YXRlOwogCX0KIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCisJaWYgKElTX0dF TihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVWRVIpKQogCQlyZXQgPSBkcm1fdW5pdmVyc2FsX3BsYW5l X2luaXQoJmRldl9wcml2LT5kcm0sICZwcmltYXJ5LT5iYXNlLAogCQkJCQkgICAgICAgMCwgJmlu dGVsX3BsYW5lX2Z1bmNzLAogCQkJCQkgICAgICAgaW50ZWxfcHJpbWFyeV9mb3JtYXRzLCBudW1f Zm9ybWF0cywKIAkJCQkJICAgICAgIG1vZGlmaWVycywKIAkJCQkJICAgICAgIERSTV9QTEFORV9U WVBFX1BSSU1BUlksCiAJCQkJCSAgICAgICAicGxhbmUgMSVjIiwgcGlwZV9uYW1lKHBpcGUpKTsK LQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUgfHwgSVNfRzRYKGRldl9wcml2KSkK KwllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDUsIEdFTl9GT1JFVkVSKSB8fCBJU19HNFgoZGV2 X3ByaXYpKQogCQlyZXQgPSBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoJmRldl9wcml2LT5kcm0s ICZwcmltYXJ5LT5iYXNlLAogCQkJCQkgICAgICAgMCwgJmludGVsX3BsYW5lX2Z1bmNzLAogCQkJ CQkgICAgICAgaW50ZWxfcHJpbWFyeV9mb3JtYXRzLCBudW1fZm9ybWF0cywKQEAgLTEzMjY5LDEy ICsxMzI2OSwxMiBAQCBpbnRlbF9wcmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBlKQogCWlmIChyZXQpCiAJCWdvdG8gZmFp bDsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKSB7CisJaWYgKElTX0dFTihkZXZf cHJpdiwgMTAsIEdFTl9GT1JFVkVSKSkgewogCQlzdXBwb3J0ZWRfcm90YXRpb25zID0KIAkJCURS TV9NT0RFX1JPVEFURV8wIHwgRFJNX01PREVfUk9UQVRFXzkwIHwKIAkJCURSTV9NT0RFX1JPVEFU RV8xODAgfCBEUk1fTU9ERV9ST1RBVEVfMjcwIHwKIAkJCURSTV9NT0RFX1JFRkxFQ1RfWDsKLQl9 IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgeworCX0gZWxzZSBpZiAoSVNfR0VO KGRldl9wcml2LCA5LCBHRU5fRk9SRVZFUikpIHsKIAkJc3VwcG9ydGVkX3JvdGF0aW9ucyA9CiAJ CQlEUk1fTU9ERV9ST1RBVEVfMCB8IERSTV9NT0RFX1JPVEFURV85MCB8CiAJCQlEUk1fTU9ERV9S T1RBVEVfMTgwIHwgRFJNX01PREVfUk9UQVRFXzI3MDsKQEAgLTEzMjgyLDE0ICsxMzI4MiwxNCBA QCBpbnRlbF9wcmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIGVudW0gcGlwZSBwaXBlKQogCQlzdXBwb3J0ZWRfcm90YXRpb25zID0KIAkJCURSTV9N T0RFX1JPVEFURV8wIHwgRFJNX01PREVfUk9UQVRFXzE4MCB8CiAJCQlEUk1fTU9ERV9SRUZMRUNU X1g7Ci0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKKwl9IGVsc2UgaWYg KElTX0dFTihkZXZfcHJpdiwgNCwgR0VOX0ZPUkVWRVIpKSB7CiAJCXN1cHBvcnRlZF9yb3RhdGlv bnMgPQogCQkJRFJNX01PREVfUk9UQVRFXzAgfCBEUk1fTU9ERV9ST1RBVEVfMTgwOwogCX0gZWxz ZSB7CiAJCXN1cHBvcnRlZF9yb3RhdGlvbnMgPSBEUk1fTU9ERV9ST1RBVEVfMDsKIAl9CiAKLQlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KQorCWlmIChJU19HRU4oZGV2X3ByaXYsIDQsIEdF Tl9GT1JFVkVSKSkKIAkJZHJtX3BsYW5lX2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0eSgmcHJpbWFy eS0+YmFzZSwKIAkJCQkJCSAgIERSTV9NT0RFX1JPVEFURV8wLAogCQkJCQkJICAgc3VwcG9ydGVk X3JvdGF0aW9ucyk7CkBAIC0xMzM2MiwxMyArMTMzNjIsMTMgQEAgaW50ZWxfY3Vyc29yX3BsYW5l X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJaWYgKHJldCkKIAkJ Z290byBmYWlsOwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkKKwlpZiAoSVNfR0VO KGRldl9wcml2LCA0LCBHRU5fRk9SRVZFUikpCiAJCWRybV9wbGFuZV9jcmVhdGVfcm90YXRpb25f cHJvcGVydHkoJmN1cnNvci0+YmFzZSwKIAkJCQkJCSAgIERSTV9NT0RFX1JPVEFURV8wLAogCQkJ CQkJICAgRFJNX01PREVfUk9UQVRFXzAgfAogCQkJCQkJICAgRFJNX01PREVfUk9UQVRFXzE4MCk7 CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQorCWlmIChJU19HRU4oZGV2X3ByaXYs IDksIEdFTl9GT1JFVkVSKSkKIAkJc3RhdGUtPnNjYWxlcl9pZCA9IC0xOwogCiAJZHJtX3BsYW5l X2hlbHBlcl9hZGQoJmN1cnNvci0+YmFzZSwgJmludGVsX3BsYW5lX2hlbHBlcl9mdW5jcyk7CkBA IC0xMzU0OCw3ICsxMzU0OCw3IEBAIHN0YXRpYyBib29sIGhhc19lZHBfYShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIHN0YXRpYyBib29sIGludGVsX2NydF9wcmVzZW50KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA5KQorCWlmIChJU19HRU4oZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkKIAkJcmV0 dXJuIGZhbHNlOwogCiAJaWYgKElTX0hTV19VTFQoZGV2X3ByaXYpIHx8IElTX0JEV19VTFQoZGV2 X3ByaXYpKQpAQCAtMTM5MjksNyArMTM5MjksNyBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVm ZmVyX2luaXQoc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYiwKIAkJLyogZmFsbCB0 aHJvdWdoICovCiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRDoKIAljYXNlIEk5MTVfRk9S TUFUX01PRF9ZZl9USUxFRDoKLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA5KSB7CisJCWlm IChJU19HRU4oZGV2X3ByaXYsIEdFTl9GT1JFVkVSLCA4KSkgewogCQkJRFJNX0RFQlVHX0tNUygi VW5zdXBwb3J0ZWQgdGlsaW5nIDB4JWxseCFcbiIsCiAJCQkJICAgICAgbW9kZV9jbWQtPm1vZGlm aWVyWzBdKTsKIAkJCWdvdG8gZXJyOwpAQCAtMTM5NDcsNyArMTM5NDcsNyBAQCBzdGF0aWMgaW50 IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICppbnRlbF9m YiwKIAkgKiBnZW4yLzMgZGlzcGxheSBlbmdpbmUgdXNlcyB0aGUgZmVuY2UgaWYgcHJlc2VudCwK IAkgKiBzbyB0aGUgdGlsaW5nIG1vZGUgbXVzdCBtYXRjaCB0aGUgZmIgbW9kaWZpZXIgZXhhY3Rs eS4KIAkgKi8KLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQgJiYKKwlpZiAoSVNfR0VOKGRl dl9wcml2LCBHRU5fRk9SRVZFUiwgMykgJiYKIAkgICAgdGlsaW5nICE9IGludGVsX2ZiX21vZGlm aWVyX3RvX3RpbGluZyhtb2RlX2NtZC0+bW9kaWZpZXJbMF0pKSB7CiAJCURSTV9ERUJVR19LTVMo InRpbGluZ19tb2RlIG11c3QgbWF0Y2ggZmIgbW9kaWZpZXIgZXhhY3RseSBvbiBnZW4yLzNcbiIp OwogCQlnb3RvIGVycjsKQEAgLTEzOTgxLDcgKzEzOTgxLDcgQEAgc3RhdGljIGludCBpbnRlbF9m cmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAqaW50ZWxfZmIsCiAJY2Fz ZSBEUk1fRk9STUFUX0FSR0I4ODg4OgogCQlicmVhazsKIAljYXNlIERSTV9GT1JNQVRfWFJHQjE1 NTU6Ci0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID4gMykgeworCQlpZiAoSVNfR0VOKGRldl9w cml2LCA0LCBHRU5fRk9SRVZFUikpIHsKIAkJCURSTV9ERUJVR19LTVMoInVuc3VwcG9ydGVkIHBp eGVsIGZvcm1hdDogJXNcbiIsCiAJCQkJICAgICAgZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2Nt ZC0+cGl4ZWxfZm9ybWF0LCAmZm9ybWF0X25hbWUpKTsKIAkJCWdvdG8gZXJyOwpAQCAtMTM5ODks NyArMTM5ODksNyBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGlu dGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYiwKIAkJYnJlYWs7CiAJY2FzZSBEUk1fRk9STUFUX0FC R1I4ODg4OgogCQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYpICYmICFJU19DSEVSUllWSUVX KGRldl9wcml2KSAmJgotCQkgICAgSU5URUxfR0VOKGRldl9wcml2KSA8IDkpIHsKKwkJICAgIElT X0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDgpKSB7CiAJCQlEUk1fREVCVUdfS01TKCJ1bnN1 cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLAogCQkJCSAgICAgIGRybV9nZXRfZm9ybWF0X25h bWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCwgJmZvcm1hdF9uYW1lKSk7CiAJCQlnb3RvIGVycjsK QEAgLTEzOTk4LDcgKzEzOTk4LDcgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0 KHN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAqaW50ZWxfZmIsCiAJY2FzZSBEUk1fRk9STUFUX1hC R1I4ODg4OgogCWNhc2UgRFJNX0ZPUk1BVF9YUkdCMjEwMTAxMDoKIAljYXNlIERSTV9GT1JNQVRf WEJHUjIxMDEwMTA6Ci0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkgeworCQlpZiAoSVNf R0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgMykpIHsKIAkJCURSTV9ERUJVR19LTVMoInVuc3Vw cG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsCiAJCQkJICAgICAgZHJtX2dldF9mb3JtYXRfbmFt ZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0LCAmZm9ybWF0X25hbWUpKTsKIAkJCWdvdG8gZXJyOwpA QCAtMTQwMTUsNyArMTQwMTUsNyBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQo c3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYiwKIAljYXNlIERSTV9GT1JNQVRfVVlW WToKIAljYXNlIERSTV9GT1JNQVRfWVZZVToKIAljYXNlIERSTV9GT1JNQVRfVllVWToKLQkJaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPCA1ICYmICFJU19HNFgoZGV2X3ByaXYpKSB7CisJCWlmIChJ U19HRU4oZGV2X3ByaXYsIEdFTl9GT1JFVkVSLCA0KSAmJiAhSVNfRzRYKGRldl9wcml2KSkgewog CQkJRFJNX0RFQlVHX0tNUygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwKIAkJCQkg ICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQsICZmb3JtYXRf bmFtZSkpOwogCQkJZ290byBlcnI7CkBAIC0xNDE2Miw3ICsxNDE2Miw3IEBAIHZvaWQgaW50ZWxf aW5pdF9kaXNwbGF5X2hvb2tzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsK IAlpbnRlbF9pbml0X2NkY2xrX2hvb2tzKGRldl9wcml2KTsKIAotCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDkpIHsKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA5LCBHRU5fRk9SRVZFUikpIHsK IAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X3BpcGVfY29uZmlnID0gaGFzd2VsbF9nZXRfcGlwZV9j b25maWc7CiAJCWRldl9wcml2LT5kaXNwbGF5LmdldF9pbml0aWFsX3BsYW5lX2NvbmZpZyA9CiAJ CQlza3lsYWtlX2dldF9pbml0aWFsX3BsYW5lX2NvbmZpZzsKQEAgLTE0MjQxLDcgKzE0MjQxLDcg QEAgdm9pZCBpbnRlbF9pbml0X2Rpc3BsYXlfaG9va3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogCQlkZXZfcHJpdi0+ZGlzcGxheS5mZGlfbGlua190cmFpbiA9IGhzd19mZGlf bGlua190cmFpbjsKIAl9CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQorCWlmIChJ U19HRU4oZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkKIAkJZGV2X3ByaXYtPmRpc3BsYXkudXBk YXRlX2NydGNzID0gc2tsX3VwZGF0ZV9jcnRjczsKIAllbHNlCiAJCWRldl9wcml2LT5kaXNwbGF5 LnVwZGF0ZV9jcnRjcyA9IGludGVsX3VwZGF0ZV9jcnRjczsKQEAgLTE0Nzc0LDcgKzE0Nzc0LDcg QEAgaW50ZWxfc2FuaXRpemVfcGxhbmVfbWFwcGluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiB7CiAJc3RydWN0IGludGVsX2NydGMgKmNydGM7CiAKLQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA0KQorCWlmIChJU19HRU4oZGV2X3ByaXYsIDQsIEdFTl9GT1JFVkVSKSkK IAkJcmV0dXJuOwogCiAJZm9yX2VhY2hfaW50ZWxfY3J0YygmZGV2X3ByaXYtPmRybSwgY3J0Yykg ewpAQCAtMTUyMTAsNyArMTUyMTAsNyBAQCBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2 KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkgewogCQl2bHZfd21fZ2V0X2h3X3N0YXRlKGRl dik7CiAJCXZsdl93bV9zYW5pdGl6ZShkZXZfcHJpdik7Ci0JfSBlbHNlIGlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDkpIHsKKwl9IGVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgOSwgR0VOX0ZP UkVWRVIpKSB7CiAJCXNrbF93bV9nZXRfaHdfc3RhdGUoZGV2KTsKIAl9IGVsc2UgaWYgKEhBU19Q Q0hfU1BMSVQoZGV2X3ByaXYpKSB7CiAJCWlsa193bV9nZXRfaHdfc3RhdGUoZGV2KTsKQEAgLTE1 MzYxLDcgKzE1MzYxLDcgQEAgdm9pZCBpbnRlbF9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogICovCiBpbnQgaW50ZWxfbW9kZXNldF92 Z2Ffc2V0X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCBzdGF0 ZSkKIHsKLQl1bnNpZ25lZCByZWcgPSBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYgPyBTTkJfR01D SF9DVFJMIDogSU5URUxfR01DSF9DVFJMOworCXVuc2lnbmVkIHJlZyA9IElTX0dFTihkZXZfcHJp diwgNiwgR0VOX0ZPUkVWRVIpID8gU05CX0dNQ0hfQ1RSTCA6IElOVEVMX0dNQ0hfQ1RSTDsKIAl1 MTYgZ21jaF9jdHJsOwogCiAJaWYgKHBjaV9yZWFkX2NvbmZpZ193b3JkKGRldl9wcml2LT5icmlk Z2VfZGV2LCByZWcsICZnbWNoX2N0cmwpKSB7CkBAIC0xNTQ2NywxMyArMTU0NjcsMTMgQEAgaW50 ZWxfZGlzcGxheV9jYXB0dXJlX2Vycm9yX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIAogCQllcnJvci0+cGxhbmVbaV0uY29udHJvbCA9IEk5MTVfUkVBRChEU1BDTlRS KGkpKTsKIAkJZXJyb3ItPnBsYW5lW2ldLnN0cmlkZSA9IEk5MTVfUkVBRChEU1BTVFJJREUoaSkp OwotCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSAzKSB7CisJCWlmIChJU19HRU4oZGV2X3By aXYsIEdFTl9GT1JFVkVSLCAzKSkgewogCQkJZXJyb3ItPnBsYW5lW2ldLnNpemUgPSBJOTE1X1JF QUQoRFNQU0laRShpKSk7CiAJCQllcnJvci0+cGxhbmVbaV0ucG9zID0gSTkxNV9SRUFEKERTUFBP UyhpKSk7CiAJCX0KLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gNyAmJiAhSVNfSEFTV0VM TChkZXZfcHJpdikpCisJCWlmIChJU19HRU4oZGV2X3ByaXYsIEdFTl9GT1JFVkVSLCA3KSAmJiAh SVNfSEFTV0VMTChkZXZfcHJpdikpCiAJCQllcnJvci0+cGxhbmVbaV0uYWRkciA9IEk5MTVfUkVB RChEU1BBRERSKGkpKTsKLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgeworCQlpZiAo SVNfR0VOKGRldl9wcml2LCA0LCBHRU5fRk9SRVZFUikpIHsKIAkJCWVycm9yLT5wbGFuZVtpXS5z dXJmYWNlID0gSTkxNV9SRUFEKERTUFNVUkYoaSkpOwogCQkJZXJyb3ItPnBsYW5lW2ldLnRpbGVf b2Zmc2V0ID0gSTkxNV9SRUFEKERTUFRJTEVPRkYoaSkpOwogCQl9CkBAIC0xNTUzOCwxMyArMTU1 MzgsMTMgQEAgaW50ZWxfZGlzcGxheV9wcmludF9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVf ZXJyb3Jfc3RhdGVfYnVmICptLAogCQllcnJfcHJpbnRmKG0sICJQbGFuZSBbJWRdOlxuIiwgaSk7 CiAJCWVycl9wcmludGYobSwgIiAgQ05UUjogJTA4eFxuIiwgZXJyb3ItPnBsYW5lW2ldLmNvbnRy b2wpOwogCQllcnJfcHJpbnRmKG0sICIgIFNUUklERTogJTA4eFxuIiwgZXJyb3ItPnBsYW5lW2ld LnN0cmlkZSk7Ci0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDMpIHsKKwkJaWYgKElTX0dF TihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDMpKSB7CiAJCQllcnJfcHJpbnRmKG0sICIgIFNJWkU6 ICUwOHhcbiIsIGVycm9yLT5wbGFuZVtpXS5zaXplKTsKIAkJCWVycl9wcmludGYobSwgIiAgUE9T OiAlMDh4XG4iLCBlcnJvci0+cGxhbmVbaV0ucG9zKTsKIAkJfQotCQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA8PSA3ICYmICFJU19IQVNXRUxMKGRldl9wcml2KSkKKwkJaWYgKElTX0dFTihkZXZf cHJpdiwgR0VOX0ZPUkVWRVIsIDcpICYmICFJU19IQVNXRUxMKGRldl9wcml2KSkKIAkJCWVycl9w cmludGYobSwgIiAgQUREUjogJTA4eFxuIiwgZXJyb3ItPnBsYW5lW2ldLmFkZHIpOwotCQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7CisJCWlmIChJU19HRU4oZGV2X3ByaXYsIDQsIEdF Tl9GT1JFVkVSKSkgewogCQkJZXJyX3ByaW50ZihtLCAiICBTVVJGOiAlMDh4XG4iLCBlcnJvci0+ cGxhbmVbaV0uc3VyZmFjZSk7CiAJCQllcnJfcHJpbnRmKG0sICIgIFRJTEVPRkY6ICUwOHhcbiIs IGVycm9yLT5wbGFuZVtpXS50aWxlX29mZnNldCk7CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5j CmluZGV4IGFiYmUxZTRlMGFmNS4uNDUzNGFmZTRmZTE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMKQEAgLTE0NjcsNyArMTQ2Nyw3IEBAIHN0YXRpYyBpOTE1X3JlZ190IHNrbF9hdXhfZGF0YV9y ZWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogc3RhdGljIGk5MTVfcmVnX3Qg aW50ZWxfYXV4X2N0bF9yZWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJ CSAgICBlbnVtIHBvcnQgcG9ydCkKIHsKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQor CWlmIChJU19HRU4oZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkKIAkJcmV0dXJuIHNrbF9hdXhf Y3RsX3JlZyhkZXZfcHJpdiwgcG9ydCk7CiAJZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJp dikpCiAJCXJldHVybiBpbGtfYXV4X2N0bF9yZWcoZGV2X3ByaXYsIHBvcnQpOwpAQCAtMTQ3OCw3 ICsxNDc4LDcgQEAgc3RhdGljIGk5MTVfcmVnX3QgaW50ZWxfYXV4X2N0bF9yZWcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogc3RhdGljIGk5MTVfcmVnX3QgaW50ZWxfYXV4X2Rh dGFfcmVnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgICAgIGVudW0g cG9ydCBwb3J0LCBpbnQgaW5kZXgpCiB7Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkK KwlpZiAoSVNfR0VOKGRldl9wcml2LCA5LCBHRU5fRk9SRVZFUikpCiAJCXJldHVybiBza2xfYXV4 X2RhdGFfcmVnKGRldl9wcml2LCBwb3J0LCBpbmRleCk7CiAJZWxzZSBpZiAoSEFTX1BDSF9TUExJ VChkZXZfcHJpdikpCiAJCXJldHVybiBpbGtfYXV4X2RhdGFfcmVnKGRldl9wcml2LCBwb3J0LCBp bmRleCk7CkBAIC0xNzI2LDcgKzE3MjYsNyBAQCBpbnRlbF9kcF9jb21wdXRlX2NvbmZpZyhzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAogCQlpbnRlbF9maXhlZF9wYW5lbF9tb2RlKHBh bmVsX21vZGUsIGFkanVzdGVkX21vZGUpOwogCi0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDkpIHsKKwkJaWYgKElTX0dFTihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVWRVIpKSB7CiAJCQlpbnQg cmV0OwogCQkJcmV0ID0gc2tsX3VwZGF0ZV9zY2FsZXJfY3J0YyhwaXBlX2NvbmZpZyk7CiAJCQlp ZiAocmV0KQpAQCAtMzIwOCw3ICszMjA4LDcgQEAgaW50ZWxfZHBfdm9sdGFnZV9tYXgoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCkKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGludGVsX2RwX3RvX2RldihpbnRlbF9kcCkpOwogCWVudW0gcG9ydCBwb3J0ID0g ZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLT5iYXNlLnBvcnQ7CiAKLQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA5KSB7CisJaWYgKElTX0dFTihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVWRVIpKSB7 CiAJCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gJmRwX3RvX2RpZ19wb3J0KGludGVs X2RwKS0+YmFzZTsKIAkJcmV0dXJuIGludGVsX2RkaV9kcF92b2x0YWdlX21heChlbmNvZGVyKTsK IAl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2 X3ByaXYpKQpAQCAtMzIyNyw3ICszMjI3LDcgQEAgaW50ZWxfZHBfcHJlX2VtcGhhc2lzX21heChz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1aW50OF90IHZvbHRhZ2Vfc3dpbmcpCiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShpbnRlbF9kcF90b19kZXYoaW50 ZWxfZHApKTsKIAllbnVtIHBvcnQgcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+YmFz ZS5wb3J0OwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgeworCWlmIChJU19HRU4o ZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkgewogCQlzd2l0Y2ggKHZvbHRhZ2Vfc3dpbmcgJiBE UF9UUkFJTl9WT0xUQUdFX1NXSU5HX01BU0spIHsKIAkJY2FzZSBEUF9UUkFJTl9WT0xUQUdFX1NX SU5HX0xFVkVMXzA6CiAJCQlyZXR1cm4gRFBfVFJBSU5fUFJFX0VNUEhfTEVWRUxfMzsKQEAgLTM3 NjAsNyArMzc2MCw3IEBAIGludGVsX2VkcF9pbml0X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCkKIAkJRFJNX0RFQlVHX0tNUygiRGV0ZWN0ZWQgRURQIFBTUiBQYW5lbC5cbiIpOwogCX0K IAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkgJiYKKwlpZiAoSVNfR0VOKGRldl9wcml2 LCA5LCBHRU5fRk9SRVZFUikgJiYKIAkgICAgKGludGVsX2RwLT5wc3JfZHBjZFswXSAmIERQX1BT UjJfSVNfU1VQUE9SVEVEKSkgewogCQl1aW50OF90IGZyYW1lX3N5bmNfY2FwOwogCkBAIC01NDY4 LDEwICs1NDY4LDEwIEBAIGJvb2wgaW50ZWxfZHBfaXNfcG9ydF9lZHAoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCkKIAkgKiBlRFAgbm90IHN1cHBvcnRl ZCBvbiBnNHguIHNvIGJhaWwgb3V0IGVhcmx5IGp1c3QKIAkgKiBmb3IgYSBiaXQgZXh0cmEgc2Fm ZXR5IGluIGNhc2UgdGhlIFZCVCBpcyBib25rZXJzLgogCSAqLwotCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpIDwgNSkKKwlpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgNCkpCiAJCXJl dHVybiBmYWxzZTsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSAmJiBwb3J0ID09IFBP UlRfQSkKKwlpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgOCkgJiYgcG9ydCA9PSBQ T1JUX0EpCiAJCXJldHVybiB0cnVlOwogCiAJcmV0dXJuIGludGVsX2Jpb3NfaXNfcG9ydF9lZHAo ZGV2X3ByaXYsIHBvcnQpOwpAQCAtNTgzMCw3ICs1ODMwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf ZHBfc2V0X2RycnNfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQly ZXR1cm47CiAJfQogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCAmJiAhSVNfQ0hFUlJZ VklFVyhkZXZfcHJpdikpIHsKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA4LCBHRU5fRk9SRVZFUikg JiYgIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7CiAJCXN3aXRjaCAoaW5kZXgpIHsKIAkJY2Fz ZSBEUlJTX0hJR0hfUlI6CiAJCQlpbnRlbF9kcF9zZXRfbV9uKGludGVsX2NydGMsIE0xX04xKTsK QEAgLTU4NDIsNyArNTg0Miw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RwX3NldF9kcnJzX3N0YXRl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJZGVmYXVsdDoKIAkJCURSTV9F UlJPUigiVW5zdXBwb3J0ZWQgcmVmcmVzaHJhdGUgdHlwZVxuIik7CiAJCX0KLQl9IGVsc2UgaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPiA2KSB7CisJfSBlbHNlIGlmIChJU19HRU4oZGV2X3ByaXYs IDcsIEdFTl9GT1JFVkVSKSkgewogCQlpOTE1X3JlZ190IHJlZyA9IFBJUEVDT05GKGNydGNfc3Rh dGUtPmNwdV90cmFuc2NvZGVyKTsKIAkJdTMyIHZhbDsKIApAQCAtNjExNSw3ICs2MTE1LDcgQEAg aW50ZWxfZHBfZHJyc19pbml0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAlJ TklUX0RFTEFZRURfV09SSygmZGV2X3ByaXYtPmRycnMud29yaywgaW50ZWxfZWRwX2RycnNfZG93 bmNsb2NrX3dvcmspOwogCW11dGV4X2luaXQoJmRldl9wcml2LT5kcnJzLm11dGV4KTsKIAotCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDYpIHsKKwlpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5f Rk9SRVZFUiwgNikpIHsKIAkJRFJNX0RFQlVHX0tNUygiRFJSUyBzdXBwb3J0ZWQgZm9yIEdlbjcg YW5kIGFib3ZlXG4iKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQpAQCAtNjM1Myw3ICs2MzUzLDcgQEAg aW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxf ZGlnX3BvcnQsCiAJaW50ZWxfZHAtPmFjdGl2ZV9waXBlID0gSU5WQUxJRF9QSVBFOwogCiAJLyog aW50ZWxfZHAgdmZ1bmNzICovCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKKwlpZiAo SVNfR0VOKGRldl9wcml2LCA5LCBHRU5fRk9SRVZFUikpCiAJCWludGVsX2RwLT5nZXRfYXV4X2Ns b2NrX2RpdmlkZXIgPSBza2xfZ2V0X2F1eF9jbG9ja19kaXZpZGVyOwogCWVsc2UgaWYgKElTX0hB U1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCiAJCWludGVsX2RwLT5n ZXRfYXV4X2Nsb2NrX2RpdmlkZXIgPSBoc3dfZ2V0X2F1eF9jbG9ja19kaXZpZGVyOwpAQCAtNjM2 Miw3ICs2MzYyLDcgQEAgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCiAJZWxzZQogCQlpbnRlbF9kcC0+Z2V0X2F1eF9jbG9j a19kaXZpZGVyID0gZzR4X2dldF9hdXhfY2xvY2tfZGl2aWRlcjsKIAotCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDkpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVWRVIpKQog CQlpbnRlbF9kcC0+Z2V0X2F1eF9zZW5kX2N0bCA9IHNrbF9nZXRfYXV4X3NlbmRfY3RsOwogCWVs c2UKIAkJaW50ZWxfZHAtPmdldF9hdXhfc2VuZF9jdGwgPSBnNHhfZ2V0X2F1eF9zZW5kX2N0bDsK QEAgLTY1MDEsNyArNjUwMSw3IEBAIGJvb2wgaW50ZWxfZHBfaW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJCWludGVsX2VuY29kZXItPmVuYWJsZSA9IHZsdl9lbmFibGVf ZHA7CiAJCWludGVsX2VuY29kZXItPmRpc2FibGUgPSB2bHZfZGlzYWJsZV9kcDsKIAkJaW50ZWxf ZW5jb2Rlci0+cG9zdF9kaXNhYmxlID0gdmx2X3Bvc3RfZGlzYWJsZV9kcDsKLQl9IGVsc2UgaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkgeworCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2 LCA1LCBHRU5fRk9SRVZFUikpIHsKIAkJaW50ZWxfZW5jb2Rlci0+cHJlX2VuYWJsZSA9IGc0eF9w cmVfZW5hYmxlX2RwOwogCQlpbnRlbF9lbmNvZGVyLT5lbmFibGUgPSBnNHhfZW5hYmxlX2RwOwog CQlpbnRlbF9lbmNvZGVyLT5kaXNhYmxlID0gaWxrX2Rpc2FibGVfZHA7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHBsbF9tZ3IuYwppbmRleCA1MWM1YWU0ZTkxMTYuLjcwNzQzYmY3ZTA3NCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jCkBAIC0yMTAsNyArMjEwLDcgQEAgdm9p ZCBpbnRlbF9kaXNhYmxlX3NoYXJlZF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogCXVu c2lnbmVkIGNydGNfbWFzayA9IDEgPDwgZHJtX2NydGNfaW5kZXgoJmNydGMtPmJhc2UpOwogCiAJ LyogUENIIG9ubHkgYXZhaWxhYmxlIG9uIElMSysgKi8KLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA8IDUpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDQpKQogCQlyZXR1cm47 CiAKIAlpZiAocGxsID09IE5VTEwpCkBAIC0xODYwLDcgKzE4NjAsNyBAQCBzdGF0aWMgdm9pZCBp bnRlbF9kZGlfcGxsX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAKLQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA8IDkpIHsKKwlpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgOCkp IHsKIAkJdWludDMyX3QgdmFsID0gSTkxNV9SRUFEKExDUExMX0NUTCk7CiAKIAkJLyoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKaW5kZXggMGFkOTE4NGViYTk3Li4zMmExZmVl NzE5YTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCkBAIC0xOTMsNyAr MTkzLDcgQEAgX19pbnRlbF9lbmdpbmVfY29udGV4dF9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdTggY2xhc3MpCiAJY2FzZSBWSURFT19ERUNPREVfQ0xBU1M6CiAJY2Fz ZSBWSURFT19FTkhBTkNFTUVOVF9DTEFTUzoKIAljYXNlIENPUFlfRU5HSU5FX0NMQVNTOgotCQlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDgpCisJCWlmIChJU19HRU4oZGV2X3ByaXYsIEdFTl9G T1JFVkVSLCA3KSkKIAkJCXJldHVybiAwOwogCQlyZXR1cm4gR0VOOF9MUl9DT05URVhUX09USEVS X1NJWkU7CiAJfQpAQCAtNjk2LDEwICs2OTYsMTAgQEAgdTY0IGludGVsX2VuZ2luZV9nZXRfYWN0 aXZlX2hlYWQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKIAl1NjQgYWN0aGQ7CiAKLQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA4KQorCWlmIChJU19HRU4oZGV2X3ByaXYsIDgsIEdFTl9G T1JFVkVSKSkKIAkJYWN0aGQgPSBJOTE1X1JFQUQ2NF8yeDMyKFJJTkdfQUNUSEQoZW5naW5lLT5t bWlvX2Jhc2UpLAogCQkJCQkgUklOR19BQ1RIRF9VRFcoZW5naW5lLT5tbWlvX2Jhc2UpKTsKLQll bHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCisJZWxzZSBpZiAoSVNfR0VOKGRldl9w cml2LCA0LCBHRU5fRk9SRVZFUikpCiAJCWFjdGhkID0gSTkxNV9SRUFEKFJJTkdfQUNUSEQoZW5n aW5lLT5tbWlvX2Jhc2UpKTsKIAllbHNlCiAJCWFjdGhkID0gSTkxNV9SRUFEKEFDVEhEKTsKQEAg LTcxMiw3ICs3MTIsNyBAQCB1NjQgaW50ZWxfZW5naW5lX2dldF9sYXN0X2JhdGNoX2hlYWQoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKIAl1NjQgYmJhZGRyOwogCi0JaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOCkKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA4LCBHRU5fRk9SRVZFUikpCiAJ CWJiYWRkciA9IEk5MTVfUkVBRDY0XzJ4MzIoUklOR19CQkFERFIoZW5naW5lLT5tbWlvX2Jhc2Up LAogCQkJCQkgIFJJTkdfQkJBRERSX1VEVyhlbmdpbmUtPm1taW9fYmFzZSkpOwogCWVsc2UKQEAg LTE0NzIsNyArMTQ3Miw3IEBAIHN0YXRpYyBib29sIHJpbmdfaXNfaWRsZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiAJCWlkbGUgPSBmYWxzZTsKIAogCS8qIE5vIGJpdCBmb3IgZ2Vu Miwgc28gYXNzdW1lIHRoZSBDUyBwYXJzZXIgaXMgaWRsZSAqLwotCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID4gMiAmJiAhKEk5MTVfUkVBRF9NT0RFKGVuZ2luZSkgJiBNT0RFX0lETEUpKQorCWlm IChJU19HRU4oZGV2X3ByaXYsIDMsIEdFTl9GT1JFVkVSKSAmJiAhKEk5MTVfUkVBRF9NT0RFKGVu Z2luZSkgJiBNT0RFX0lETEUpKQogCQlpZGxlID0gZmFsc2U7CiAKIAlpbnRlbF9ydW50aW1lX3Bt X3B1dChkZXZfcHJpdik7CkBAIC0xNzczLDcgKzE3NzMsNyBAQCB2b2lkIGludGVsX2VuZ2luZV9k dW1wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAlkcm1fcHJpbnRmKG0sICJcdFJJ TkdfQ1RMOiAgIDB4JTA4eCVzXG4iLAogCQkgICBJOTE1X1JFQUQoUklOR19DVEwoZW5naW5lLT5t bWlvX2Jhc2UpKSwKIAkJICAgSTkxNV9SRUFEKFJJTkdfQ1RMKGVuZ2luZS0+bW1pb19iYXNlKSkg JiAoUklOR19XQUlUIHwgUklOR19XQUlUX1NFTUFQSE9SRSkgPyAiIFt3YWl0aW5nXSIgOiAiIik7 Ci0JaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID4gMikgeworCWlmIChJU19HRU4oZW5naW5l LT5pOTE1LCAzLCBHRU5fRk9SRVZFUikpIHsKIAkJZHJtX3ByaW50ZihtLCAiXHRSSU5HX01PREU6 ICAweCUwOHglc1xuIiwKIAkJCSAgIEk5MTVfUkVBRChSSU5HX01JX01PREUoZW5naW5lLT5tbWlv X2Jhc2UpKSwKIAkJCSAgIEk5MTVfUkVBRChSSU5HX01JX01PREUoZW5naW5lLT5tbWlvX2Jhc2Up KSAmIChNT0RFX0lETEUpID8gIiBbaWRsZV0iIDogIiIpOwpAQCAtMTc5NiwxNiArMTc5NiwxNiBA QCB2b2lkIGludGVsX2VuZ2luZV9kdW1wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwK IAlhZGRyID0gaW50ZWxfZW5naW5lX2dldF9sYXN0X2JhdGNoX2hlYWQoZW5naW5lKTsKIAlkcm1f cHJpbnRmKG0sICJcdEJCQUREUjogMHglMDh4XyUwOHhcbiIsCiAJCSAgIHVwcGVyXzMyX2JpdHMo YWRkciksIGxvd2VyXzMyX2JpdHMoYWRkcikpOwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDgpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgOCwgR0VOX0ZPUkVWRVIpKQogCQlhZGRyID0gSTkx NV9SRUFENjRfMngzMihSSU5HX0RNQV9GQUREKGVuZ2luZS0+bW1pb19iYXNlKSwKIAkJCQkJUklO R19ETUFfRkFERF9VRFcoZW5naW5lLT5tbWlvX2Jhc2UpKTsKLQllbHNlIGlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDQpCisJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA0LCBHRU5fRk9SRVZF UikpCiAJCWFkZHIgPSBJOTE1X1JFQUQoUklOR19ETUFfRkFERChlbmdpbmUtPm1taW9fYmFzZSkp OwogCWVsc2UKIAkJYWRkciA9IEk5MTVfUkVBRChETUFfRkFERF9JOFhYKTsKIAlkcm1fcHJpbnRm KG0sICJcdERNQV9GQUREUjogMHglMDh4XyUwOHhcbiIsCiAJCSAgIHVwcGVyXzMyX2JpdHMoYWRk ciksIGxvd2VyXzMyX2JpdHMoYWRkcikpOwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQp IHsKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA0LCBHRU5fRk9SRVZFUikpIHsKIAkJZHJtX3ByaW50 ZihtLCAiXHRJUEVJUjogMHglMDh4XG4iLAogCQkJICAgSTkxNV9SRUFEKFJJTkdfSVBFSVIoZW5n aW5lLT5tbWlvX2Jhc2UpKSk7CiAJCWRybV9wcmludGYobSwgIlx0SVBFSFI6IDB4JTA4eFxuIiwK QEAgLTE4NjUsNyArMTg2NSw3IEBAIHZvaWQgaW50ZWxfZW5naW5lX2R1bXAoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLAogCQl9CiAJCWRybV9wcmludGYobSwgIlx0XHRIVyBhY3RpdmU/ IDB4JXhcbiIsIGV4ZWNsaXN0cy0+YWN0aXZlKTsKIAkJcmN1X3JlYWRfdW5sb2NrKCk7Ci0JfSBl bHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID4gNikgeworCX0gZWxzZSBpZiAoSVNfR0VOKGRl dl9wcml2LCA3LCBHRU5fRk9SRVZFUikpIHsKIAkJZHJtX3ByaW50ZihtLCAiXHRQUF9ESVJfQkFT RTogMHglMDh4XG4iLAogCQkJICAgSTkxNV9SRUFEKFJJTkdfUFBfRElSX0JBU0UoZW5naW5lKSkp OwogCQlkcm1fcHJpbnRmKG0sICJcdFBQX0RJUl9CQVNFX1JFQUQ6IDB4JTA4eFxuIiwKQEAgLTE4 OTUsNyArMTg5NSw3IEBAIHZvaWQgaW50ZWxfZW5naW5lX2R1bXAoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLAogCX0KIAlzcGluX3VubG9ja19pcnEoJmItPnJiX2xvY2spOwogCi0JaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikgeworCWlmIChJU19HRU4oZGV2X3ByaXYsIDYsIEdF Tl9GT1JFVkVSKSkgewogCQlkcm1fcHJpbnRmKG0sICJcdFJJTkdfSU1SOiAlMDh4XG4iLCBJOTE1 X1JFQURfSU1SKGVuZ2luZSkpOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZmJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwppbmRleCAw YWQ4NTQwOTVjMzguLjc5MWM3NzA0NDQ2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZmJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKQEAg LTQ4LDE3ICs0OCwxNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZmJjX3N1cHBvcnRlZChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBmYmNfb25f cGlwZV9hX29ubHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCXJldHVy biBJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDg7CisJcmV0 dXJuIElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0dFTihkZXZfcHJpdiwgOCwgR0VOX0ZPUkVW RVIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgZmJjX29uX3BsYW5lX2Ffb25seShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0JcmV0dXJuIElOVEVMX0dFTihkZXZfcHJp dikgPCA0OworCXJldHVybiBJU19HRU4oZGV2X3ByaXYsIEdFTl9GT1JFVkVSLCAzKTsKIH0KIAog c3RhdGljIGlubGluZSBib29sIG5vX2ZiY19vbl9tdWx0aXBsZV9waXBlcyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0JcmV0dXJuIElOVEVMX0dFTihkZXZfcHJpdikgPD0g MzsKKwlyZXR1cm4gSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgMyk7CiB9CiAKIC8qCkBA IC05Niw3ICs5Niw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZmJjX2NhbGN1bGF0ZV9jZmJfc2l6ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJaW50ZWxfZmJjX2dldF9wbGFuZV9z b3VyY2Vfc2l6ZShjYWNoZSwgTlVMTCwgJmxpbmVzKTsKIAlpZiAoSVNfR0VONyhkZXZfcHJpdikp CiAJCWxpbmVzID0gbWluKGxpbmVzLCAyMDQ4KTsKLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDgpCisJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA4LCBHRU5fRk9SRVZFUikpCiAJ CWxpbmVzID0gbWluKGxpbmVzLCAyNTYwKTsKIAogCS8qIEhhcmR3YXJlIG5lZWRzIHRoZSBmdWxs IGJ1ZmZlciBzdHJpZGUsIG5vdCBqdXN0IHRoZSBhY3RpdmUgYXJlYS4gKi8KQEAgLTM1Nyw3ICsz NTcsNyBAQCBzdGF0aWMgdm9pZCBnZW43X2ZiY19hY3RpdmF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiAKIHN0YXRpYyBib29sIGludGVsX2ZiY19od19pc19hY3RpdmUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDUpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgNSwgR0VOX0ZPUkVWRVIpKQogCQlyZXR1 cm4gaWxrX2ZiY19pc19hY3RpdmUoZGV2X3ByaXYpOwogCWVsc2UgaWYgKElTX0dNNDUoZGV2X3By aXYpKQogCQlyZXR1cm4gZzR4X2ZiY19pc19hY3RpdmUoZGV2X3ByaXYpOwpAQCAtMzcxLDkgKzM3 MSw5IEBAIHN0YXRpYyB2b2lkIGludGVsX2ZiY19od19hY3RpdmF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAlmYmMtPmFjdGl2ZSA9IHRydWU7CiAKLQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA3KQorCWlmIChJU19HRU4oZGV2X3ByaXYsIDcsIEdFTl9GT1JFVkVS KSkKIAkJZ2VuN19mYmNfYWN0aXZhdGUoZGV2X3ByaXYpOwotCWVsc2UgaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gNSkKKwllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDUsIEdFTl9GT1JFVkVS KSkKIAkJaWxrX2ZiY19hY3RpdmF0ZShkZXZfcHJpdik7CiAJZWxzZSBpZiAoSVNfR000NShkZXZf cHJpdikpCiAJCWc0eF9mYmNfYWN0aXZhdGUoZGV2X3ByaXYpOwpAQCAtMzg3LDcgKzM4Nyw3IEBA IHN0YXRpYyB2b2lkIGludGVsX2ZiY19od19kZWFjdGl2YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIAogCWZiYy0+YWN0aXZlID0gZmFsc2U7CiAKLQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA1KQorCWlmIChJU19HRU4oZGV2X3ByaXYsIDUsIEdFTl9GT1JFVkVSKSkK IAkJaWxrX2ZiY19kZWFjdGl2YXRlKGRldl9wcml2KTsKIAllbHNlIGlmIChJU19HTTQ1KGRldl9w cml2KSkKIAkJZzR4X2ZiY19kZWFjdGl2YXRlKGRldl9wcml2KTsKQEAgLTU2OCw3ICs1NjgsNyBA QCBzdGF0aWMgaW50IGZpbmRfY29tcHJlc3Npb25fdGhyZXNob2xkKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAogCXJldCA9IGk5MTVfZ2VtX3N0b2xlbl9pbnNlcnRfbm9kZV9p bl9yYW5nZShkZXZfcHJpdiwgbm9kZSwgc2l6ZSA+Pj0gMSwKIAkJCQkJCSAgIDQwOTYsIDAsIGVu ZCk7Ci0JaWYgKHJldCAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDQpIHsKKwlpZiAocmV0ICYm IElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDQpKSB7CiAJCXJldHVybiAwOwogCX0gZWxz ZSBpZiAocmV0KSB7CiAJCWNvbXByZXNzaW9uX3RocmVzaG9sZCA8PD0gMTsKQEAgLTYwMSw3ICs2 MDEsNyBAQCBzdGF0aWMgaW50IGludGVsX2ZiY19hbGxvY19jZmIoc3RydWN0IGludGVsX2NydGMg KmNydGMpCiAKIAlmYmMtPnRocmVzaG9sZCA9IHJldDsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDUpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgNSwgR0VOX0ZPUkVWRVIpKQogCQlJOTE1 X1dSSVRFKElMS19EUEZDX0NCX0JBU0UsIGZiYy0+Y29tcHJlc3NlZF9mYi5zdGFydCk7CiAJZWxz ZSBpZiAoSVNfR000NShkZXZfcHJpdikpIHsKIAkJSTkxNV9XUklURShEUEZDX0NCX0JBU0UsIGZi Yy0+Y29tcHJlc3NlZF9mYi5zdGFydCk7CkBAIC03MjQsMTAgKzcyNCwxMCBAQCBzdGF0aWMgYm9v bCBpbnRlbF9mYmNfaHdfdHJhY2tpbmdfY292ZXJzX3NjcmVlbihzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YykKIAlzdHJ1Y3QgaW50ZWxfZmJjICpmYmMgPSAmZGV2X3ByaXYtPmZiYzsKIAl1bnNpZ25l ZCBpbnQgZWZmZWN0aXZlX3csIGVmZmVjdGl2ZV9oLCBtYXhfdywgbWF4X2g7CiAKLQlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA4IHx8IElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7CisJaWYgKElT X0dFTihkZXZfcHJpdiwgOCwgR0VOX0ZPUkVWRVIpIHx8IElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7 CiAJCW1heF93ID0gNDA5NjsKIAkJbWF4X2ggPSA0MDk2OwotCX0gZWxzZSBpZiAoSVNfRzRYKGRl dl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKKwl9IGVsc2UgaWYgKElTX0c0 WChkZXZfcHJpdikgfHwgSVNfR0VOKGRldl9wcml2LCA1LCBHRU5fRk9SRVZFUikpIHsKIAkJbWF4 X3cgPSA0MDk2OwogCQltYXhfaCA9IDIwNDg7CiAJfSBlbHNlIHsKQEAgLTgyMCw3ICs4MjAsNyBA QCBzdGF0aWMgYm9vbCBpbnRlbF9mYmNfY2FuX2FjdGl2YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjKQogCQlmYmMtPm5vX2ZiY19yZWFzb24gPSAiZnJhbWVidWZmZXIgbm90IHRpbGVkIG9yIGZl bmNlZCI7CiAJCXJldHVybiBmYWxzZTsKIAl9Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0g NCAmJiAhSVNfRzRYKGRldl9wcml2KSAmJgorCWlmIChJU19HRU4oZGV2X3ByaXYsIEdFTl9GT1JF VkVSLCA0KSAmJiAhSVNfRzRYKGRldl9wcml2KSAmJgogCSAgICBjYWNoZS0+cGxhbmUucm90YXRp b24gIT0gRFJNX01PREVfUk9UQVRFXzApIHsKIAkJZmJjLT5ub19mYmNfcmVhc29uID0gInJvdGF0 aW9uIHVuc3VwcG9ydGVkIjsKIAkJcmV0dXJuIGZhbHNlOwpAQCAtMTMyNSw3ICsxMzI1LDcgQEAg c3RhdGljIGludCBpbnRlbF9zYW5pdGl6ZV9mYmNfb3B0aW9uKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIAlpZiAoIUhBU19GQkMoZGV2X3ByaXYpKQogCQlyZXR1cm4gMDsKIAot CWlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkK KwlpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSB8fCBJU19HRU4oZGV2X3ByaXYsIDksIEdFTl9G T1JFVkVSKSkKIAkJcmV0dXJuIDE7CiAKIAlyZXR1cm4gMDsKQEAgLTEzODIsNyArMTM4Miw3IEBA IHZvaWQgaW50ZWxfZmJjX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog CX0KIAogCS8qIFRoaXMgdmFsdWUgd2FzIHB1bGxlZCBvdXQgb2Ygc29tZW9uZSdzIGhhdCAqLwot CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDQgJiYgIUlTX0dNNDUoZGV2X3ByaXYpKQorCWlm IChJU19HRU4oZGV2X3ByaXYsIEdFTl9GT1JFVkVSLCA0KSAmJiAhSVNfR000NShkZXZfcHJpdikp CiAJCUk5MTVfV1JJVEUoRkJDX0NPTlRST0wsIDUwMCA8PCBGQkNfQ1RMX0lOVEVSVkFMX1NISUZU KTsKIAogCS8qIFdlIHN0aWxsIGRvbid0IGhhdmUgYW55IHNvcnQgb2YgaGFyZHdhcmUgc3RhdGUg cmVhZG91dCBmb3IgRkJDLCBzbwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZmlmb191bmRlcnJ1bi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmlmb191bmRl cnJ1bi5jCmluZGV4IDc3YzEyM2NjODgxNy4uM2Q2ODNhNmEwODQ5IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9maWZvX3VuZGVycnVuLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZmlmb191bmRlcnJ1bi5jCkBAIC0yNjQsNyArMjY0LDcgQEAgc3RhdGlj IGJvb2wgX19pbnRlbF9zZXRfY3B1X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAJCWlyb25sYWtlX3NldF9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXYs IHBpcGUsIGVuYWJsZSk7CiAJZWxzZSBpZiAoSVNfR0VONyhkZXZfcHJpdikpCiAJCWl2eWJyaWRn ZV9zZXRfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2LCBwaXBlLCBlbmFibGUsIG9sZCk7Ci0J ZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KQorCWVsc2UgaWYgKElTX0dFTihkZXZf cHJpdiwgOCwgR0VOX0ZPUkVWRVIpKQogCQlicm9hZHdlbGxfc2V0X2ZpZm9fdW5kZXJydW5fcmVw b3J0aW5nKGRldiwgcGlwZSwgZW5hYmxlKTsKIAogCXJldHVybiBvbGQ7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hlY2suYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hhbmdjaGVjay5jCmluZGV4IDQyZTQ1YWU4NzM5My4uNzY5MTIxNjg4ZTUxIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hlY2suYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hlY2suYwpAQCAtOTcsNyArOTcsNyBAQCBz ZW1hcGhvcmVfd2FpdHNfZm9yKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyICpz ZXFubykKIAkgKiByaW5nYnVmZmVyIGl0c2VsZi4KIAkgKi8KIAloZWFkID0gSTkxNV9SRUFEX0hF QUQoZW5naW5lKSAmIEhFQURfQUREUjsKLQliYWNrd2FyZHMgPSAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA4KSA/IDUgOiA0OworCWJhY2t3YXJkcyA9IChJU19HRU4oZGV2X3ByaXYsIDgsIEdFTl9G T1JFVkVSKSkgPyA1IDogNDsKIAl2YWRkciA9ICh2b2lkIF9faW9tZW0gKillbmdpbmUtPmJ1ZmZl ci0+dmFkZHI7CiAKIAlmb3IgKGkgPSBiYWNrd2FyZHM7IGk7IC0taSkgewpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaGRjcC5jCmluZGV4IDE0Y2E1ZDMwNTdhNy4uZWQxNjEyYzk3ZDc0IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaGRjcC5jCkBAIC02NTEsNyArNjUxLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf aGRjcF9wcm9wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogYm9vbCBpc19oZGNwX3N1 cHBvcnRlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0 KQogewogCS8qIFBPUlQgRSBkb2Vzbid0IGhhdmUgSERDUCwgYW5kIFBPUlQgRiBpcyBkaXNhYmxl ZCAqLwotCXJldHVybiAoKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCB8fCBJU19IQVNXRUxMKGRl dl9wcml2KSkgJiYKKwlyZXR1cm4gKChJU19HRU4oZGV2X3ByaXYsIDgsIEdFTl9GT1JFVkVSKSB8 fCBJU19IQVNXRUxMKGRldl9wcml2KSkgJiYKIAkJIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYpICYm IHBvcnQgPCBQT1JUX0UpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKaW5kZXggZjVk N2JmYjQzMDA2Li5kNDM2YWRhMjM2MTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2hkbWkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKQEAg LTE0ODEsMTEgKzE0ODEsMTEgQEAgc3RhdGljIGludCBpbnRlbF9oZG1pX3NvdXJjZV9tYXhfdG1k c19jbG9jayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIAkJJmRldl9wcml2LT52YnQu ZGRpX3BvcnRfaW5mb1tlbmNvZGVyLT5wb3J0XTsKIAlpbnQgbWF4X3RtZHNfY2xvY2s7CiAKLQlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkK KwlpZiAoSVNfR0VOKGRldl9wcml2LCAxMCwgR0VOX0ZPUkVWRVIpIHx8IElTX0dFTUlOSUxBS0Uo ZGV2X3ByaXYpKQogCQltYXhfdG1kc19jbG9jayA9IDU5NDAwMDsKLQllbHNlIGlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDggfHwgSVNfSEFTV0VMTChkZXZfcHJpdikpCisJZWxzZSBpZiAoSVNf R0VOKGRldl9wcml2LCA4LCBHRU5fRk9SRVZFUikgfHwgSVNfSEFTV0VMTChkZXZfcHJpdikpCiAJ CW1heF90bWRzX2Nsb2NrID0gMzAwMDAwOwotCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gNSkKKwllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDUsIEdFTl9GT1JFVkVSKSkKIAkJbWF4 X3RtZHNfY2xvY2sgPSAyMjUwMDA7CiAJZWxzZQogCQltYXhfdG1kc19jbG9jayA9IDE2NTAwMDsK QEAgLTE3NTQsNyArMTc1NCw3IEBAIGJvb2wgaW50ZWxfaGRtaV9jb21wdXRlX2NvbmZpZyhzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAogCXBpcGVfY29uZmlnLT5sYW5lX2NvdW50ID0g NDsKIAotCWlmIChzY2RjLT5zY3JhbWJsaW5nLnN1cHBvcnRlZCAmJiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSAxMCB8fAorCWlmIChzY2RjLT5zY3JhbWJsaW5nLnN1cHBvcnRlZCAmJiAoSVNfR0VO KGRldl9wcml2LCAxMCwgR0VOX0ZPUkVWRVIpIHx8CiAJCQkJCSAgIElTX0dFTUlOSUxBS0UoZGV2 X3ByaXYpKSkgewogCQlpZiAoc2NkYy0+c2NyYW1ibGluZy5sb3dfcmF0ZXMpCiAJCQlwaXBlX2Nv bmZpZy0+aGRtaV9zY3JhbWJsaW5nID0gdHJ1ZTsKQEAgLTIzMjQsNyArMjMyNCw3IEBAIHZvaWQg aW50ZWxfaGRtaV9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRl bF9kaWdfcG9ydCwKIAljb25uZWN0b3ItPmRvdWJsZXNjYW5fYWxsb3dlZCA9IDA7CiAJY29ubmVj dG9yLT5zdGVyZW9fYWxsb3dlZCA9IDE7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAx MCB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkKKwlpZiAoSVNfR0VOKGRldl9wcml2LCAxMCwg R0VOX0ZPUkVWRVIpIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQogCQljb25uZWN0b3ItPnlj YmNyXzQyMF9hbGxvd2VkID0gdHJ1ZTsKIAogCWludGVsX2hkbWktPmRkY19idXMgPSBpbnRlbF9o ZG1pX2RkY19waW4oZGV2X3ByaXYsIHBvcnQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwppbmRl eCBjMmM4MzgwYTAxMjEuLjU1ZGYxOWVjODc5ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMK QEAgLTE0ODgsNyArMTQ4OCw3IEBAIHN0YXRpYyB2b2lkIGVuYWJsZV9leGVjbGlzdHMoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCSAqIGRlZXBlciBGSUZPIGl0J3Mgbm90IG5lZWRl ZCBhbmQgaXQncyBub3Qgd29ydGggYWRkaW5nCiAJICogbW9yZSBzdGF0ZW1lbnRzIHRvIHRoZSBp cnEgaGFuZGxlciB0byBzdXBwb3J0IGl0LgogCSAqLwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDExKQorCWlmIChJU19HRU4oZGV2X3ByaXYsIDExLCBHRU5fRk9SRVZFUikpCiAJCUk5MTVf V1JJVEUoUklOR19NT0RFX0dFTjcoZW5naW5lKSwKIAkJCSAgIF9NQVNLRURfQklUX0RJU0FCTEUo R0VOMTFfR0ZYX0RJU0FCTEVfTEVHQUNZX01PREUpKTsKIAllbHNlCkBAIC0yMDY4LDcgKzIwNjgs NyBAQCBpbnQgbG9naWNhbF9yZW5kZXJfcmluZ19pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKIAkJZW5naW5lLT5pcnFfa2VlcF9tYXNrIHw9IEdUX1JFTkRFUl9MM19QQVJJVFlf RVJST1JfSU5URVJSVVBUOwogCiAJLyogT3ZlcnJpZGUgc29tZSBmb3IgcmVuZGVyIHJpbmcuICov Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA5 LCBHRU5fRk9SRVZFUikpCiAJCWVuZ2luZS0+aW5pdF9odyA9IGdlbjlfaW5pdF9yZW5kZXJfcmlu ZzsKIAllbHNlCiAJCWVuZ2luZS0+aW5pdF9odyA9IGdlbjhfaW5pdF9yZW5kZXJfcmluZzsKQEAg LTIxMTEsNyArMjExMSw3IEBAIG1ha2VfcnBjcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiAJICogTm8gZXhwbGljaXQgUlBDUyByZXF1ZXN0IGlzIG5lZWRlZCB0byBlbnN1cmUg ZnVsbAogCSAqIHNsaWNlL3N1YnNsaWNlL0VVIGVuYWJsZW1lbnQgcHJpb3IgdG8gR2VuOS4KIAkq LwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSkKKwlpZiAoSVNfR0VOKGRldl9wcml2LCBH RU5fRk9SRVZFUiwgOCkpCiAJCXJldHVybiAwOwogCiAJLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2 ZHMuYwppbmRleCA0Njc3YWMwYjEwZDcuLjhkNTlmZWVjOTA0OSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2x2ZHMuYwpAQCAtMTM5LDEyICsxMzksMTIgQEAgc3RhdGljIHZvaWQgaW50ZWxfbHZkc19n ZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCiAJcGlwZV9jb25maWct PmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyB8PSBmbGFnczsKIAotCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpIDwgNSkKKwlpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgNCkpCiAJCXBp cGVfY29uZmlnLT5nbWNoX3BmaXQubHZkc19ib3JkZXJfYml0cyA9CiAJCQl0bXAgJiBMVkRTX0JP UkRFUl9FTkFCTEU7CiAKIAkvKiBnZW4yLzMgc3RvcmUgZGl0aGVyIHN0YXRlIGluIHBmaXQgY29u dHJvbCwgbmVlZHMgdG8gbWF0Y2ggKi8KLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpIHsK KwlpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgMykpIHsKIAkJdG1wID0gSTkxNV9S RUFEKFBGSVRfQ09OVFJPTCk7CiAKIAkJcGlwZV9jb25maWctPmdtY2hfcGZpdC5jb250cm9sIHw9 IHRtcCAmIFBBTkVMXzhUTzZfRElUSEVSX0VOQUJMRTsKQEAgLTE4OSw3ICsxODksNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9sdmRzX3Bwc19nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAogCS8qIENvbnZlcnQgZnJvbSAxMDBtcyB0byAxMDB1cyB1bml0cyAqLwog CXBwcy0+dDQgPSB2YWwgKiAxMDAwOwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gNCAm JgorCWlmIChJU19HRU4oZGV2X3ByaXYsIEdFTl9GT1JFVkVSLCA0KSAmJgogCSAgICBwcHMtPnQx X3QyID09IDAgJiYgcHBzLT50NSA9PSAwICYmIHBwcy0+dDMgPT0gMCAmJiBwcHMtPnR4ID09IDAp IHsKIAkJRFJNX0RFQlVHX0tNUygiUGFuZWwgcG93ZXIgdGltaW5ncyB1bmluaXRpYWxpemVkLCAi CiAJCQkgICAgICAic2V0dGluZyBkZWZhdWx0c1xuIik7CkBAIC0zOTYsNyArMzk2LDcgQEAgc3Rh dGljIGJvb2wgaW50ZWxfbHZkc19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq aW50ZWxfZW5jb2RlciwKIAl1bnNpZ25lZCBpbnQgbHZkc19icHA7CiAKIAkvKiBTaG91bGQgbmV2 ZXIgaGFwcGVuISEgKi8KLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQgJiYgaW50ZWxfY3J0 Yy0+cGlwZSA9PSAwKSB7CisJaWYgKElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDMpICYm IGludGVsX2NydGMtPnBpcGUgPT0gMCkgewogCQlEUk1fRVJST1IoIkNhbid0IHN1cHBvcnQgTFZE UyBvbiBwaXBlIEFcbiIpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQpAQCAtOTE0LDcgKzkxNCw3IEBA IHN0YXRpYyBib29sIGludGVsX2x2ZHNfc3VwcG9ydGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIAogCS8qIE90aGVyd2lzZSBMVkRTIHdhcyBvbmx5IGF0dGFjaGVkIHRvIG1v YmlsZSBwcm9kdWN0cywKIAkgKiBleGNlcHQgZm9yIHRoZSBpbmdsb3Jpb3VzIDgzMGdtICovCi0J aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gNCAmJgorCWlmIChJU19HRU4oZGV2X3ByaXYsIEdF Tl9GT1JFVkVSLCA0KSAmJgogCSAgICBJU19NT0JJTEUoZGV2X3ByaXYpICYmICFJU19JODMwKGRl dl9wcml2KSkKIAkJcmV0dXJuIHRydWU7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX21vY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYwppbmRl eCBhYmI3YThjMWUzNDAuLjRkYjJlZDgwZGZhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbW9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3Mu YwpAQCAtMTg3LDcgKzE4Nyw3IEBAIHN0YXRpYyBib29sIGdldF9tb2NzX3NldHRpbmdzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJdGFibGUtPnRhYmxlID0gYnJveHRvbl9t b2NzX3RhYmxlOwogCQlyZXN1bHQgPSB0cnVlOwogCX0gZWxzZSB7Ci0JCVdBUk5fT05DRShJTlRF TF9HRU4oZGV2X3ByaXYpID49IDksCisJCVdBUk5fT05DRShJU19HRU4oZGV2X3ByaXYsIDksIEdF Tl9GT1JFVkVSKSwKIAkJCSAgIlBsYXRmb3JtIHRoYXQgc2hvdWxkIGhhdmUgYSBNT0NTIHRhYmxl IGRvZXMgbm90LlxuIik7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9vdmVybGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKaW5k ZXggNDFlOTQ2NWQ0NGE4Li44Y2ZmNjkzYjJjNGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX292ZXJsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9v dmVybGF5LmMKQEAgLTk0NSw3ICs5NDUsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfcGZpdF92c2Nh bGVfcmF0aW8oc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCiAJLyogWFhYOiBUaGlzIGlz IG5vdCB0aGUgc2FtZSBsb2dpYyBhcyBpbiB0aGUgeG9yZyBkcml2ZXIsIGJ1dCBtb3JlIGluCiAJ ICogbGluZSB3aXRoIHRoZSBpbnRlbCBkb2N1bWVudGF0aW9uIGZvciB0aGUgaTk2NQogCSAqLwot CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA0 LCBHRU5fRk9SRVZFUikpIHsKIAkJLyogb24gaTk2NSB1c2UgdGhlIFBHTSByZWcgdG8gcmVhZCBv dXQgdGhlIGF1dG9zY2FsZXIgdmFsdWVzICovCiAJCXJhdGlvID0gSTkxNV9SRUFEKFBGSVRfUEdN X1JBVElPUykgPj4gUEZJVF9WRVJUX1NDQUxFX1NISUZUXzk2NTsKIAl9IGVsc2UgewpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BhbmVsLmMKaW5kZXggNzhhNTNjOGIxNzg5Li45OTAwYTFmNWFiMjMgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwpAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgaW50 ZWxfZ21jaF9wYW5lbF9maXR0aW5nKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAogCQli cmVhazsKIAljYXNlIERSTV9NT0RFX1NDQUxFX0FTUEVDVDoKIAkJLyogU2NhbGUgYnV0IHByZXNl cnZlIHRoZSBhc3BlY3QgcmF0aW8gKi8KLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkK KwkJaWYgKElTX0dFTihkZXZfcHJpdiwgNCwgR0VOX0ZPUkVWRVIpKQogCQkJaTk2NV9zY2FsZV9h c3BlY3QocGlwZV9jb25maWcsICZwZml0X2NvbnRyb2wpOwogCQllbHNlCiAJCQlpOXh4X3NjYWxl X2FzcGVjdChwaXBlX2NvbmZpZywgJnBmaXRfY29udHJvbCwKQEAgLTM0MCw3ICszNDAsNyBAQCB2 b2lkIGludGVsX2dtY2hfcGFuZWxfZml0dGluZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YywKIAkJaWYgKHBpcGVfY29uZmlnLT5waXBlX3NyY19oICE9IGFkanVzdGVkX21vZGUtPmNydGNf dmRpc3BsYXkgfHwKIAkJICAgIHBpcGVfY29uZmlnLT5waXBlX3NyY193ICE9IGFkanVzdGVkX21v ZGUtPmNydGNfaGRpc3BsYXkpIHsKIAkJCXBmaXRfY29udHJvbCB8PSBQRklUX0VOQUJMRTsKLQkJ CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCisJCQlpZiAoSVNfR0VOKGRldl9wcml2LCA0 LCBHRU5fRk9SRVZFUikpCiAJCQkJcGZpdF9jb250cm9sIHw9IFBGSVRfU0NBTElOR19BVVRPOwog CQkJZWxzZQogCQkJCXBmaXRfY29udHJvbCB8PSAoVkVSVF9BVVRPX1NDQUxFIHwKQEAgLTM1Niw3 ICszNTYsNyBAQCB2b2lkIGludGVsX2dtY2hfcGFuZWxfZml0dGluZyhzdHJ1Y3QgaW50ZWxfY3J0 YyAqaW50ZWxfY3J0YywKIAogCS8qIDk2NSsgd2FudHMgZnV6enkgZml0dGluZyAqLwogCS8qIEZJ WE1FOiBoYW5kbGUgbXVsdGlwbGUgcGFuZWxzIGJ5IGZhaWxpbmcgZ3JhY2VmdWxseSAqLwotCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgNCwgR0VO X0ZPUkVWRVIpKQogCQlwZml0X2NvbnRyb2wgfD0gKChpbnRlbF9jcnRjLT5waXBlIDw8IFBGSVRf UElQRV9TSElGVCkgfAogCQkJCSBQRklUX0ZJTFRFUl9GVVpaWSk7CiAKQEAgLTM2Nyw3ICszNjcs NyBAQCB2b2lkIGludGVsX2dtY2hfcGFuZWxfZml0dGluZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YywKIAl9CiAKIAkvKiBNYWtlIHN1cmUgcHJlLTk2NSBzZXQgZGl0aGVyIGNvcnJlY3Rs eSBmb3IgMThicHAgcGFuZWxzLiAqLwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCAmJiBw aXBlX2NvbmZpZy0+cGlwZV9icHAgPT0gMTgpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgR0VOX0ZP UkVWRVIsIDMpICYmIHBpcGVfY29uZmlnLT5waXBlX2JwcCA9PSAxOCkKIAkJcGZpdF9jb250cm9s IHw9IFBBTkVMXzhUTzZfRElUSEVSX0VOQUJMRTsKIAogCXBpcGVfY29uZmlnLT5nbWNoX3BmaXQu Y29udHJvbCA9IHBmaXRfY29udHJvbDsKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBzdGF0aWMgdTMyIGk5 eHhfZ2V0X2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCiAJdTMy IHZhbDsKIAogCXZhbCA9IEk5MTVfUkVBRChCTENfUFdNX0NUTCkgJiBCQUNLTElHSFRfRFVUWV9D WUNMRV9NQVNLOwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkKKwlpZiAoSVNfR0VOKGRl dl9wcml2LCBHRU5fRk9SRVZFUiwgMykpCiAJCXZhbCA+Pj0gMTsKIAogCWlmIChwYW5lbC0+YmFj a2xpZ2h0LmNvbWJpbmF0aW9uX21vZGUpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BpcGVfY3JjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9waXBlX2Ny Yy5jCmluZGV4IDFmNWNkNTcyYTdmZi4uZDMzYjY1Y2YyNmMwIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9waXBlX2NyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BpcGVfY3JjLmMKQEAgLTYwNCw3ICs2MDQsNyBAQCBzdGF0aWMgaW50IGdldF9uZXdf Y3JjX2N0bF9yZWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogewogCWlmIChJ U19HRU4yKGRldl9wcml2KSkKIAkJcmV0dXJuIGk4eHhfcGlwZV9jcmNfY3RsX3JlZyhzb3VyY2Us IHZhbCk7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDUpCisJZWxzZSBpZiAoSVNf R0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgNCkpCiAJCXJldHVybiBpOXh4X3BpcGVfY3JjX2N0 bF9yZWcoZGV2X3ByaXYsIHBpcGUsIHNvdXJjZSwgdmFsKTsKIAllbHNlIGlmIChJU19WQUxMRVlW SUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKIAkJcmV0dXJuIHZsdl9w aXBlX2NyY19jdGxfcmVnKGRldl9wcml2LCBwaXBlLCBzb3VyY2UsIHZhbCk7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYwppbmRleCBiMDI2YjAyMGQ4YjguLmYzY2JiYzI4MjM3YiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jCkBAIC0yNTcxLDkgKzI1NzEsOSBAQCBzdGF0aWMgdWludDMyX3QgaWxrX2Nv bXB1dGVfZmJjX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiBzdGF0 aWMgdW5zaWduZWQgaW50CiBpbGtfZGlzcGxheV9maWZvX3NpemUoY29uc3Qgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgp CisJaWYgKElTX0dFTihkZXZfcHJpdiwgOCwgR0VOX0ZPUkVWRVIpKQogCQlyZXR1cm4gMzA3MjsK LQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcpCisJZWxzZSBpZiAoSVNfR0VOKGRl dl9wcml2LCA3LCBHRU5fRk9SRVZFUikpCiAJCXJldHVybiA3Njg7CiAJZWxzZQogCQlyZXR1cm4g NTEyOwpAQCAtMjU4MywxMCArMjU4MywxMCBAQCBzdGF0aWMgdW5zaWduZWQgaW50CiBpbGtfcGxh bmVfd21fcmVnX21heChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ CSAgICAgaW50IGxldmVsLCBib29sIGlzX3Nwcml0ZSkKIHsKLQlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA4KQorCWlmIChJU19HRU4oZGV2X3ByaXYsIDgsIEdFTl9GT1JFVkVSKSkKIAkJLyog QkRXIHByaW1hcnkvc3ByaXRlIHBsYW5lIHdhdGVybWFya3MgKi8KIAkJcmV0dXJuIGxldmVsID09 IDAgPyAyNTUgOiAyMDQ3OwotCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykKKwll bHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDcsIEdFTl9GT1JFVkVSKSkKIAkJLyogSVZCL0hTVyBw cmltYXJ5L3Nwcml0ZSBwbGFuZSB3YXRlcm1hcmtzICovCiAJCXJldHVybiBsZXZlbCA9PSAwID8g MTI3IDogMTAyMzsKIAllbHNlIGlmICghaXNfc3ByaXRlKQpAQCAtMjYwMCw3ICsyNjAwLDcgQEAg aWxrX3BsYW5lX3dtX3JlZ19tYXgoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAogc3RhdGljIHVuc2lnbmVkIGludAogaWxrX2N1cnNvcl93bV9yZWdfbWF4KGNvbnN0IHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGxldmVsKQogewotCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDcpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgNywgR0VOX0ZPUkVW RVIpKQogCQlyZXR1cm4gbGV2ZWwgPT0gMCA/IDYzIDogMjU1OwogCWVsc2UKIAkJcmV0dXJuIGxl dmVsID09IDAgPyAzMSA6IDYzOwpAQCAtMjYwOCw3ICsyNjA4LDcgQEAgaWxrX2N1cnNvcl93bV9y ZWdfbWF4KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGxldmVs KQogCiBzdGF0aWMgdW5zaWduZWQgaW50IGlsa19mYmNfd21fcmVnX21heChjb25zdCBzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gOCkKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA4LCBHRU5fRk9SRVZFUikpCiAJCXJldHVybiAz MTsKIAllbHNlCiAJCXJldHVybiAxNTsKQEAgLTI2MzcsNyArMjYzNyw3IEBAIHN0YXRpYyB1bnNp Z25lZCBpbnQgaWxrX3BsYW5lX3dtX21heChjb25zdCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAog CQkgKiBGSUZPIHNpemUgaXMgb25seSBoYWxmIG9mIHRoZSBzZWxmCiAJCSAqIHJlZnJlc2ggRklG TyBzaXplIG9uIElMSy9TTkIuCiAJCSAqLwotCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA2 KQorCQlpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgNikpCiAJCQlmaWZvX3NpemUg Lz0gMjsKIAl9CiAKQEAgLTI3OTgsNyArMjc5OCw3IEBAIGhzd19jb21wdXRlX2xpbmV0aW1lX3dt KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCiBzdGF0aWMgdm9pZCBpbnRl bF9yZWFkX3dtX2xhdGVuY3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJ CSAgdWludDE2X3Qgd21bOF0pCiB7Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewor CWlmIChJU19HRU4oZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkgewogCQl1aW50MzJfdCB2YWw7 CiAJCWludCByZXQsIGk7CiAJCWludCBsZXZlbCwgbWF4X2xldmVsID0gaWxrX3dtX21heF9sZXZl bChkZXZfcHJpdik7CkBAIC0yODgzLDE0ICsyODgzLDE0IEBAIHN0YXRpYyB2b2lkIGludGVsX3Jl YWRfd21fbGF0ZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCXdtWzJd ID0gKHNza3BkID4+IDEyKSAmIDB4RkY7CiAJCXdtWzNdID0gKHNza3BkID4+IDIwKSAmIDB4MUZG OwogCQl3bVs0XSA9IChzc2twZCA+PiAzMikgJiAweDFGRjsKLQl9IGVsc2UgaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gNikgeworCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA2LCBHRU5f Rk9SRVZFUikpIHsKIAkJdWludDMyX3Qgc3NrcGQgPSBJOTE1X1JFQUQoTUNIX1NTS1BEKTsKIAog CQl3bVswXSA9IChzc2twZCA+PiBTU0tQRF9XTTBfU0hJRlQpICYgU1NLUERfV01fTUFTSzsKIAkJ d21bMV0gPSAoc3NrcGQgPj4gU1NLUERfV00xX1NISUZUKSAmIFNTS1BEX1dNX01BU0s7CiAJCXdt WzJdID0gKHNza3BkID4+IFNTS1BEX1dNMl9TSElGVCkgJiBTU0tQRF9XTV9NQVNLOwogCQl3bVsz XSA9IChzc2twZCA+PiBTU0tQRF9XTTNfU0hJRlQpICYgU1NLUERfV01fTUFTSzsKLQl9IGVsc2Ug aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkgeworCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9w cml2LCA1LCBHRU5fRk9SRVZFUikpIHsKIAkJdWludDMyX3QgbWx0ciA9IEk5MTVfUkVBRChNTFRS X0lMSyk7CiAKIAkJLyogSUxLIHByaW1hcnkgTFAwIGxhdGVuY3kgaXMgNzAwIG5zICovCkBAIC0y OTI1LDExICsyOTI1LDExIEBAIHN0YXRpYyB2b2lkIGludGVsX2ZpeHVwX2N1cl93bV9sYXRlbmN5 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIGludCBpbGtfd21fbWF4X2xldmVs KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAkvKiBob3cgbWFu eSBXTSBsZXZlbHMgYXJlIHdlIGV4cGVjdGluZyAqLwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDkpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVWRVIpKQogCQlyZXR1cm4g NzsKIAllbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3By aXYpKQogCQlyZXR1cm4gNDsKLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpCisJ ZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA2LCBHRU5fRk9SRVZFUikpCiAJCXJldHVybiAzOwog CWVsc2UKIAkJcmV0dXJuIDI7CkBAIC0yOTU0LDcgKzI5NTQsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9wcmludF93bV9sYXRlbmN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJ ICogLSBsYXRlbmNpZXMgYXJlIGluIHVzIG9uIGdlbjkuCiAJCSAqIC0gYmVmb3JlIHRoZW4sIFdN MSsgbGF0ZW5jeSB2YWx1ZXMgYXJlIGluIDAuNXVzIHVuaXRzCiAJCSAqLwotCQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA5KQorCQlpZiAoSVNfR0VOKGRldl9wcml2LCA5LCBHRU5fRk9SRVZF UikpCiAJCQlsYXRlbmN5ICo9IDEwOwogCQllbHNlIGlmIChsZXZlbCA+IDApCiAJCQlsYXRlbmN5 ICo9IDU7CkBAIC0zMDkwLDcgKzMwOTAsNyBAQCBzdGF0aWMgaW50IGlsa19jb21wdXRlX3BpcGVf d20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKIAl1c2FibGVfbGV2ZWwgPSBtYXhf bGV2ZWw7CiAKIAkvKiBJTEsvU05COiBMUDIrIHdhdGVybWFya3Mgb25seSB3L28gc3ByaXRlcyAq LwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDYgJiYgcGlwZV93bS0+c3ByaXRlc19lbmFi bGVkKQorCWlmIChJU19HRU4oZGV2X3ByaXYsIEdFTl9GT1JFVkVSLCA2KSAmJiBwaXBlX3dtLT5z cHJpdGVzX2VuYWJsZWQpCiAJCXVzYWJsZV9sZXZlbCA9IDE7CiAKIAkvKiBJTEsvU05CL0lWQjog TFAxKyB3YXRlcm1hcmtzIG9ubHkgdy9vIHNjYWxpbmcgKi8KQEAgLTMyMzUsMTIgKzMyMzUsMTIg QEAgc3RhdGljIHZvaWQgaWxrX3dtX21lcmdlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaW50 IGxhc3RfZW5hYmxlZF9sZXZlbCA9IG1heF9sZXZlbDsKIAogCS8qIElMSy9TTkIvSVZCOiBMUDEr IHdhdGVybWFya3Mgb25seSB3LyBzaW5nbGUgcGlwZSAqLwotCWlmICgoSU5URUxfR0VOKGRldl9w cml2KSA8PSA2IHx8IElTX0lWWUJSSURHRShkZXZfcHJpdikpICYmCisJaWYgKChJU19HRU4oZGV2 X3ByaXYsIEdFTl9GT1JFVkVSLCA2KSB8fCBJU19JVllCUklER0UoZGV2X3ByaXYpKSAmJgogCSAg ICBjb25maWctPm51bV9waXBlc19hY3RpdmUgPiAxKQogCQlsYXN0X2VuYWJsZWRfbGV2ZWwgPSAw OwogCiAJLyogSUxLOiBGQkMgV00gbXVzdCBiZSBkaXNhYmxlZCBhbHdheXMgKi8KLQltZXJnZWQt PmZiY193bV9lbmFibGVkID0gSU5URUxfR0VOKGRldl9wcml2KSA+PSA2OworCW1lcmdlZC0+ZmJj X3dtX2VuYWJsZWQgPSBJU19HRU4oZGV2X3ByaXYsIDYsIEdFTl9GT1JFVkVSKTsKIAogCS8qIG1l cmdlIGVhY2ggV00xKyBsZXZlbCAqLwogCWZvciAobGV2ZWwgPSAxOyBsZXZlbCA8PSBtYXhfbGV2 ZWw7IGxldmVsKyspIHsKQEAgLTMzMzAsNyArMzMzMCw3IEBAIHN0YXRpYyB2b2lkIGlsa19jb21w dXRlX3dtX3Jlc3VsdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJaWYgKHItPmVuYWJsZSkK IAkJCXJlc3VsdHMtPndtX2xwW3dtX2xwIC0gMV0gfD0gV00xX0xQX1NSX0VOOwogCi0JCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCisJCWlmIChJU19HRU4oZGV2X3ByaXYsIDgsIEdFTl9G T1JFVkVSKSkKIAkJCXJlc3VsdHMtPndtX2xwW3dtX2xwIC0gMV0gfD0KIAkJCQlyLT5mYmNfdmFs IDw8IFdNMV9MUF9GQkNfU0hJRlRfQkRXOwogCQllbHNlCkBAIC0zMzQxLDcgKzMzNDEsNyBAQCBz dGF0aWMgdm9pZCBpbGtfY29tcHV0ZV93bV9yZXN1bHRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CiAJCSAqIEFsd2F5cyBzZXQgV00xU19MUF9FTiB3aGVuIHNwcl92YWwgIT0gMCwgZXZlbiBpZiB0 aGUKIAkJICogbGV2ZWwgaXMgZGlzYWJsZWQuIERvaW5nIG90aGVyd2lzZSBjb3VsZCBjYXVzZSB1 bmRlcnJ1bnMuCiAJCSAqLwotCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA2ICYmIHItPnNw cl92YWwpIHsKKwkJaWYgKElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDYpICYmIHItPnNw cl92YWwpIHsKIAkJCVdBUk5fT04od21fbHAgIT0gMSk7CiAJCQlyZXN1bHRzLT53bV9scF9zcHJb d21fbHAgLSAxXSA9IFdNMVNfTFBfRU4gfCByLT5zcHJfdmFsOwogCQl9IGVsc2UKQEAgLTM1NDYs NyArMzU0Niw3IEBAIHN0YXRpYyB2b2lkIGlsa193cml0ZV93bV92YWx1ZXMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCSAgICBwcmV2aW91cy0+d21fbHBfc3ByWzBdICE9IHJl c3VsdHMtPndtX2xwX3NwclswXSkKIAkJSTkxNV9XUklURShXTTFTX0xQX0lMSywgcmVzdWx0cy0+ d21fbHBfc3ByWzBdKTsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcpIHsKKwlpZiAo SVNfR0VOKGRldl9wcml2LCA3LCBHRU5fRk9SRVZFUikpIHsKIAkJaWYgKGRpcnR5ICYgV01fRElS VFlfTFAoMikgJiYgcHJldmlvdXMtPndtX2xwX3NwclsxXSAhPSByZXN1bHRzLT53bV9scF9zcHJb MV0pCiAJCQlJOTE1X1dSSVRFKFdNMlNfTFBfSVZCLCByZXN1bHRzLT53bV9scF9zcHJbMV0pOwog CQlpZiAoZGlydHkgJiBXTV9ESVJUWV9MUCgzKSAmJiBwcmV2aW91cy0+d21fbHBfc3ByWzJdICE9 IHJlc3VsdHMtPndtX2xwX3NwclsyXSkKQEAgLTM3ODUsNyArMzc4NSw3IEBAIHNrbF9kZGJfZ2V0 X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlkZGJfc2l6 ZSA9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5kZGJfc2l6ZTsKIAlXQVJOX09OKGRkYl9zaXplID09 IDApOwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMSkKKwlpZiAoSVNfR0VOKGRldl9w cml2LCBHRU5fRk9SRVZFUiwgMTApKQogCQlkZGJfc2l6ZSAtPSA0OyAvKiA0IGJsb2NrcyBmb3Ig YnlwYXNzIHBhdGggYWxsb2NhdGlvbiAqLwogCiAJLyoKQEAgLTM5OTYsNyArMzk5Niw3IEBAIGlu dCBza2xfY2hlY2tfcGlwZV9tYXhfcGl4ZWxfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YywKIAljcnRjX2Nsb2NrID0gY3J0Y19zdGF0ZS0+YWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2Nr OwogCWRvdGNsayA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSktPmNkY2xrLmxvZ2ljYWwu Y2RjbGs7CiAKLQlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9w cml2KSA+PSAxMCkKKwlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSVNfR0VOKGRldl9w cml2LCAxMCwgR0VOX0ZPUkVWRVIpKQogCQlkb3RjbGsgKj0gMjsKIAogCXBpcGVfbWF4X3BpeGVs X3JhdGUgPSBkaXZfcm91bmRfdXBfdTMyX2ZpeGVkMTYoZG90Y2xrLCBwaXBlX2Rvd25zY2FsZSk7 CkBAIC00MzMwLDcgKzQzMzAsNyBAQCBza2xfd21fbWV0aG9kMShjb25zdCBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVpbnQzMl90IHBpeGVsX3JhdGUsCiAJd21faW50ZXJtZWRp YXRlX3ZhbCA9IGxhdGVuY3kgKiBwaXhlbF9yYXRlICogY3BwOwogCXJldCA9IGRpdl9maXhlZDE2 KHdtX2ludGVybWVkaWF0ZV92YWwsIDEwMDAgKiBkYnVmX2Jsb2NrX3NpemUpOwogCi0JaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gMTApCisJaWYgKElTX0dFTihkZXZfcHJpdiwgMTAsIEdFTl9G T1JFVkVSKSkKIAkJcmV0ID0gYWRkX2ZpeGVkMTZfdTMyKHJldCwgMSk7CiAKIAlyZXR1cm4gcmV0 OwpAQCAtNDQzOCw3ICs0NDM4LDcgQEAgc2tsX2NvbXB1dGVfcGxhbmVfd21fcGFyYW1zKGNvbnN0 IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAl3cC0+cGxhbmVfcGl4ZWxfcmF0 ZSA9IHNrbF9hZGp1c3RlZF9wbGFuZV9waXhlbF9yYXRlKGNzdGF0ZSwKIAkJCQkJCQkgICAgIGlu dGVsX3BzdGF0ZSk7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSAmJgorCWlmIChJ U19HRU4oZGV2X3ByaXYsIDExLCBHRU5fRk9SRVZFUikgJiYKIAkgICAgZmItPm1vZGlmaWVyID09 IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRCAmJiB3cC0+Y3BwID09IDgpCiAJCXdwLT5kYnVmX2Js b2NrX3NpemUgPSAyNTY7CiAJZWxzZQpAQCAtNDQ3Myw3ICs0NDczLDcgQEAgc2tsX2NvbXB1dGVf cGxhbmVfd21fcGFyYW1zKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAkJCQkJICAgd3AtPnlfbWluX3NjYW5saW5lcywKIAkJCQkJICAgd3AtPmRidWZfYmxvY2tfc2l6 ZSk7CiAKLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTApCisJCWlmIChJU19HRU4oZGV2 X3ByaXYsIDEwLCBHRU5fRk9SRVZFUikpCiAJCQlpbnRlcm1fcGJwbCsrOwogCiAJCXdwLT5wbGFu ZV9ibG9ja3NfcGVyX2xpbmUgPSBkaXZfZml4ZWQxNihpbnRlcm1fcGJwbCwKQEAgLTQ1NzMsNyAr NDU3Myw3IEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQl9CiAJfQogCi0JaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gMTEpIHsKKwlpZiAoSVNfR0VOKGRldl9wcml2LCAxMSwgR0VOX0ZPUkVWRVIpKSB7 CiAJCWlmICh3cC0+eV90aWxlZCkgewogCQkJdWludDMyX3QgZXh0cmFfbGluZXM7CiAJCQl1aW50 X2ZpeGVkXzE2XzE2X3QgZnBfbWluX2Rpc3BfYnVmX25lZWRlZDsKQEAgLTQ3MDUsMTQgKzQ3MDUs MTQgQEAgc3RhdGljIHZvaWQgc2tsX2NvbXB1dGVfdHJhbnNpdGlvbl93bShzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3N0YXRlLAogCQlnb3RvIGV4aXQ7CiAKIAkvKiBUcmFuc2l0aW9uIFdNIGFy ZSBub3QgcmVjb21tZW5kZWQgYnkgSFcgdGVhbSBmb3IgR0VOOSAqLwotCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpIDw9IDkpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDkpKQog CQlnb3RvIGV4aXQ7CiAKIAkvKiBUcmFuc2l0aW9uIFdNIGRvbid0IG1ha2UgYW55IHNlbnNlIGlm IGlwYyBpcyBkaXNhYmxlZCAqLwogCWlmICghZGV2X3ByaXYtPmlwY19lbmFibGVkKQogCQlnb3Rv IGV4aXQ7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkKKwlpZiAoSVNfR0VOKGRl dl9wcml2LCAxMCwgR0VOX0ZPUkVWRVIpKQogCQl0cmFuc19taW4gPSA0OwogCiAJdHJhbnNfb2Zm c2V0X2IgPSB0cmFuc19taW4gKyB0cmFuc19hbW91bnQ7CkBAIC00ODM1LDcgKzQ4MzUsNyBAQCBz dGF0aWMgdm9pZCBza2xfd3JpdGVfcGxhbmVfd20oc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMsCiAKIAlza2xfZGRiX2VudHJ5X3dyaXRlKGRldl9wcml2LCBQTEFORV9CVUZfQ0ZHKHBpcGUs IHBsYW5lX2lkKSwKIAkJCSAgICAmZGRiLT5wbGFuZVtwaXBlXVtwbGFuZV9pZF0pOwotCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpIDwgMTEpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVW RVIsIDEwKSkKIAkJc2tsX2RkYl9lbnRyeV93cml0ZShkZXZfcHJpdiwKIAkJCQkgICAgUExBTkVf TlYxMl9CVUZfQ0ZHKHBpcGUsIHBsYW5lX2lkKSwKIAkJCQkgICAgJmRkYi0+eV9wbGFuZVtwaXBl XVtwbGFuZV9pZF0pOwpAQCAtNTI0OSw3ICs1MjQ5LDcgQEAgc3RhdGljIHZvaWQgaWxrX3Byb2dy YW1fd2F0ZXJtYXJrcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJaWxrX3dt X21lcmdlKGRldiwgJmNvbmZpZywgJm1heCwgJmxwX3dtXzFfMik7CiAKIAkvKiA1LzYgc3BsaXQg b25seSBpbiBzaW5nbGUgcGlwZSBjb25maWcgb24gSVZCKyAqLwotCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDcgJiYKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA3LCBHRU5fRk9SRVZFUikgJiYK IAkgICAgY29uZmlnLm51bV9waXBlc19hY3RpdmUgPT0gMSAmJiBjb25maWcuc3ByaXRlc19lbmFi bGVkKSB7CiAJCWlsa19jb21wdXRlX3dtX21heGltdW1zKGRldiwgMSwgJmNvbmZpZywgSU5URUxf RERCX1BBUlRfNV82LCAmbWF4KTsKIAkJaWxrX3dtX21lcmdlKGRldiwgJmNvbmZpZywgJm1heCwg JmxwX3dtXzVfNik7CkBAIC01ODQ4LDcgKzU4NDgsNyBAQCB2b2lkIGlsa193bV9nZXRfaHdfc3Rh dGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlody0+d21fbHBbMl0gPSBJOTE1X1JFQUQoV00z X0xQX0lMSyk7CiAKIAlody0+d21fbHBfc3ByWzBdID0gSTkxNV9SRUFEKFdNMVNfTFBfSUxLKTsK LQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA3KSB7CisJaWYgKElTX0dFTihkZXZfcHJpdiwg NywgR0VOX0ZPUkVWRVIpKSB7CiAJCWh3LT53bV9scF9zcHJbMV0gPSBJOTE1X1JFQUQoV00yU19M UF9JVkIpOwogCQlody0+d21fbHBfc3ByWzJdID0gSTkxNV9SRUFEKFdNM1NfTFBfSVZCKTsKIAl9 CkBAIC02MDc2LDcgKzYwNzYsNyBAQCBzdGF0aWMgdTMyIGludGVsX3Jwc19saW1pdHMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCB2YWwpCiAJICogdGhlIGh3IHJ1bnMgYXQg dGhlIG1pbmltYWwgY2xvY2sgYmVmb3JlIHNlbGVjdGluZyB0aGUgZGVzaXJlZAogCSAqIGZyZXF1 ZW5jeSwgaWYgdGhlIGRvd24gdGhyZXNob2xkIGV4cGlyZXMgaW4gdGhhdCB3aW5kb3cgd2Ugd2ls bCBub3QKIAkgKiByZWNlaXZlIGEgZG93biBpbnRlcnJ1cHQuICovCi0JaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOSkgeworCWlmIChJU19HRU4oZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkg ewogCQlsaW1pdHMgPSAocnBzLT5tYXhfZnJlcV9zb2Z0bGltaXQpIDw8IDIzOwogCQlpZiAodmFs IDw9IHJwcy0+bWluX2ZyZXFfc29mdGxpbWl0KQogCQkJbGltaXRzIHw9IChycHMtPm1pbl9mcmVx X3NvZnRsaW1pdCkgPDwgMTQ7CkBAIC02MjIyLDcgKzYyMjIsNyBAQCBzdGF0aWMgaW50IGdlbjZf c2V0X3JwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IHZhbCkKIAlpZiAo dmFsICE9IHJwcy0+Y3VyX2ZyZXEpIHsKIAkJZ2VuNl9zZXRfcnBzX3RocmVzaG9sZHMoZGV2X3By aXYsIHZhbCk7CiAKLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKKwkJaWYgKElTX0dF TihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVWRVIpKQogCQkJSTkxNV9XUklURShHRU42X1JQTlNXUkVR LAogCQkJCSAgIEdFTjlfRlJFUVVFTkNZKHZhbCkpOwogCQllbHNlIGlmIChJU19IQVNXRUxMKGRl dl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQpAQCAtNjY1Myw3ICs2NjUzLDcgQEAg c3RhdGljIHZvaWQgZ2VuOV9lbmFibGVfcmM2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAlJOTE1X1dSSVRFKEdFTjZfUkNfQ09OVFJPTCwgMCk7CiAKIAkvKiAyYjogUHJvZ3Jh bSBSQzYgdGhyZXNob2xkcy4qLwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKSB7CisJ aWYgKElTX0dFTihkZXZfcHJpdiwgMTAsIEdFTl9GT1JFVkVSKSkgewogCQlJOTE1X1dSSVRFKEdF TjZfUkM2X1dBS0VfUkFURV9MSU1JVCwgNTQgPDwgMTYgfCA4NSk7CiAJCUk5MTVfV1JJVEUoR0VO MTBfTUVESUFfV0FLRV9SQVRFX0xJTUlULCAxNTApOwogCX0gZWxzZSBpZiAoSVNfU0tZTEFLRShk ZXZfcHJpdikpIHsKQEAgLTY5NDMsNyArNjk0Myw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfdXBkYXRl X3JpbmdfZnJlcShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQkgKiBObyBm bG9vciByZXF1aXJlZCBmb3IgcmluZyBmcmVxdWVuY3kgb24gU0tMLgogCQkJICovCiAJCQlyaW5n X2ZyZXEgPSBncHVfZnJlcTsKLQkJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgp IHsKKwkJfSBlbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDgsIEdFTl9GT1JFVkVSKSkgewogCQkJ LyogbWF4KDIgKiBHVCwgRERSKS4gTkI6IEdUIGlzIDUwTUh6IHVuaXRzICovCiAJCQlyaW5nX2Zy ZXEgPSBtYXgobWluX3JpbmdfZnJlcSwgZ3B1X2ZyZXEpOwogCQl9IGVsc2UgaWYgKElTX0hBU1dF TEwoZGV2X3ByaXYpKSB7CkBAIC03OTYwLDcgKzc5NjAsNyBAQCB2b2lkIGludGVsX2luaXRfZ3Rf cG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJY2hlcnJ5dmll d19pbml0X2d0X3Bvd2Vyc2F2ZShkZXZfcHJpdik7CiAJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhk ZXZfcHJpdikpCiAJCXZhbGxleXZpZXdfaW5pdF9ndF9wb3dlcnNhdmUoZGV2X3ByaXYpOwotCWVs c2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikKKwllbHNlIGlmIChJU19HRU4oZGV2X3By aXYsIDYsIEdFTl9GT1JFVkVSKSkKIAkJZ2VuNl9pbml0X3Jwc19mcmVxdWVuY2llcyhkZXZfcHJp dik7CiAKIAkvKiBEZXJpdmUgaW5pdGlhbCB1c2VyIHByZWZlcmVuY2VzL2xpbWl0cyBmcm9tIHRo ZSBoYXJkd2FyZSBsaW1pdHMgKi8KQEAgLTgwMTUsNyArODAxNSw3IEBAIHZvaWQgaW50ZWxfY2xl YW51cF9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogICov CiB2b2lkIGludGVsX3N1c3BlbmRfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIHsKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDYpCisJaWYgKElTX0dF TihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDUpKQogCQlyZXR1cm47CiAKIAkvKiBnZW42X3Jwc19p ZGxlKCkgd2lsbCBiZSBjYWxsZWQgbGF0ZXIgdG8gZGlzYWJsZSBpbnRlcnJ1cHRzICovCkBAIC04 MDQ5LDEzICs4MDQ5LDEzIEBAIHN0YXRpYyB2b2lkIGludGVsX2Rpc2FibGVfcmM2KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlpZiAoIWRldl9wcml2LT5ndF9wbS5yYzYuZW5h YmxlZCkKIAkJcmV0dXJuOwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKKwlpZiAo SVNfR0VOKGRldl9wcml2LCA5LCBHRU5fRk9SRVZFUikpCiAJCWdlbjlfZGlzYWJsZV9yYzYoZGV2 X3ByaXYpOwogCWVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQogCQljaGVycnl2aWV3 X2Rpc2FibGVfcmM2KGRldl9wcml2KTsKIAllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2 KSkKIAkJdmFsbGV5dmlld19kaXNhYmxlX3JjNihkZXZfcHJpdik7Ci0JZWxzZSBpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA2KQorCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgNiwgR0VOX0ZP UkVWRVIpKQogCQlnZW42X2Rpc2FibGVfcmM2KGRldl9wcml2KTsKIAogCWRldl9wcml2LT5ndF9w bS5yYzYuZW5hYmxlZCA9IGZhbHNlOwpAQCAtODA2OCwxMyArODA2OCwxMyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9kaXNhYmxlX3JwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJ aWYgKCFkZXZfcHJpdi0+Z3RfcG0ucnBzLmVuYWJsZWQpCiAJCXJldHVybjsKIAotCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDkpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVW RVIpKQogCQlnZW45X2Rpc2FibGVfcnBzKGRldl9wcml2KTsKIAllbHNlIGlmIChJU19DSEVSUllW SUVXKGRldl9wcml2KSkKIAkJY2hlcnJ5dmlld19kaXNhYmxlX3JwcyhkZXZfcHJpdik7CiAJZWxz ZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCiAJCXZhbGxleXZpZXdfZGlzYWJsZV9ycHMo ZGV2X3ByaXYpOwotCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikKKwllbHNlIGlm IChJU19HRU4oZGV2X3ByaXYsIDYsIEdFTl9GT1JFVkVSKSkKIAkJZ2VuNl9kaXNhYmxlX3Jwcyhk ZXZfcHJpdik7CiAJZWxzZSBpZiAoSVNfSVJPTkxBS0VfTShkZXZfcHJpdikpCiAJCWlyb25sYWtl X2Rpc2FibGVfZHJwcyhkZXZfcHJpdik7CkBAIC04MTE3LDExICs4MTE3LDExIEBAIHN0YXRpYyB2 b2lkIGludGVsX2VuYWJsZV9yYzYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog CQljaGVycnl2aWV3X2VuYWJsZV9yYzYoZGV2X3ByaXYpOwogCWVsc2UgaWYgKElTX1ZBTExFWVZJ RVcoZGV2X3ByaXYpKQogCQl2YWxsZXl2aWV3X2VuYWJsZV9yYzYoZGV2X3ByaXYpOwotCWVsc2Ug aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKKwllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYs IDksIEdFTl9GT1JFVkVSKSkKIAkJZ2VuOV9lbmFibGVfcmM2KGRldl9wcml2KTsKIAllbHNlIGlm IChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQogCQlnZW44X2VuYWJsZV9yYzYoZGV2X3ByaXYpOwot CWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikKKwllbHNlIGlmIChJU19HRU4oZGV2 X3ByaXYsIDYsIEdFTl9GT1JFVkVSKSkKIAkJZ2VuNl9lbmFibGVfcmM2KGRldl9wcml2KTsKIAog CWRldl9wcml2LT5ndF9wbS5yYzYuZW5hYmxlZCA9IHRydWU7CkBAIC04MTQwLDExICs4MTQwLDEx IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9ycHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogCQljaGVycnl2aWV3X2VuYWJsZV9ycHMoZGV2X3ByaXYpOwogCX0gZWxzZSBp ZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpIHsKIAkJdmFsbGV5dmlld19lbmFibGVfcnBzKGRl dl9wcml2KTsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgeworCX0gZWxz ZSBpZiAoSVNfR0VOKGRldl9wcml2LCA5LCBHRU5fRk9SRVZFUikpIHsKIAkJZ2VuOV9lbmFibGVf cnBzKGRldl9wcml2KTsKIAl9IGVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKIAkJ Z2VuOF9lbmFibGVfcnBzKGRldl9wcml2KTsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gNikgeworCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA2LCBHRU5fRk9SRVZFUikp IHsKIAkJZ2VuNl9lbmFibGVfcnBzKGRldl9wcml2KTsKIAl9IGVsc2UgaWYgKElTX0lST05MQUtF X00oZGV2X3ByaXYpKSB7CiAJCWlyb25sYWtlX2VuYWJsZV9kcnBzKGRldl9wcml2KTsKQEAgLTkw NTksNyArOTA1OSw3IEBAIHZvaWQgaW50ZWxfaW5pdF9wbShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiAJCWk5MTVfaXJvbmxha2VfZ2V0X21lbV9mcmVxKGRldl9wcml2KTsKIAog CS8qIEZvciBGSUZPIHdhdGVybWFyayB1cGRhdGVzICovCi0JaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gOSkgeworCWlmIChJU19HRU4oZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkgewogCQlz a2xfc2V0dXBfd21fbGF0ZW5jeShkZXZfcHJpdik7CiAJCWRldl9wcml2LT5kaXNwbGF5LmluaXRp YWxfd2F0ZXJtYXJrcyA9IHNrbF9pbml0aWFsX3dtOwogCQlkZXZfcHJpdi0+ZGlzcGxheS5hdG9t aWNfdXBkYXRlX3dhdGVybWFya3MgPSBza2xfYXRvbWljX3VwZGF0ZV9jcnRjX3dtOwpAQCAtOTIw NSw3ICs5MjA1LDcgQEAgaW50IHNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWJveCwgdTMyICp2YWwKIAkqdmFsID0gSTkxNV9SRUFE X0ZXKEdFTjZfUENPREVfREFUQSk7CiAJSTkxNV9XUklURV9GVyhHRU42X1BDT0RFX0RBVEEsIDAp OwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPiA2KQorCWlmIChJU19HRU4oZGV2X3ByaXYs IDcsIEdFTl9GT1JFVkVSKSkKIAkJc3RhdHVzID0gZ2VuN19jaGVja19tYWlsYm94X3N0YXR1cyhk ZXZfcHJpdik7CiAJZWxzZQogCQlzdGF0dXMgPSBnZW42X2NoZWNrX21haWxib3hfc3RhdHVzKGRl dl9wcml2KTsKQEAgLTkyNTMsNyArOTI1Myw3IEBAIGludCBzYW5keWJyaWRnZV9wY29kZV93cml0 ZV90aW1lb3V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCUk5MTVfV1JJ VEVfRlcoR0VONl9QQ09ERV9EQVRBLCAwKTsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID4g NikKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA3LCBHRU5fRk9SRVZFUikpCiAJCXN0YXR1cyA9IGdl bjdfY2hlY2tfbWFpbGJveF9zdGF0dXMoZGV2X3ByaXYpOwogCWVsc2UKIAkJc3RhdHVzID0gZ2Vu Nl9jaGVja19tYWlsYm94X3N0YXR1cyhkZXZfcHJpdik7CkBAIC05MzgyLDcgKzkzODIsNyBAQCBz dGF0aWMgaW50IGNodl9mcmVxX29wY29kZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIGludCB2YWwpCiAKIGludCBpbnRlbF9ncHVfZnJlcShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIGludCB2YWwpCiB7Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkK KwlpZiAoSVNfR0VOKGRldl9wcml2LCA5LCBHRU5fRk9SRVZFUikpCiAJCXJldHVybiBESVZfUk9V TkRfQ0xPU0VTVCh2YWwgKiBHVF9GUkVRVUVOQ1lfTVVMVElQTElFUiwKIAkJCQkJIEdFTjlfRlJF UV9TQ0FMRVIpOwogCWVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQpAQCAtOTM5NSw3 ICs5Mzk1LDcgQEAgaW50IGludGVsX2dwdV9mcmVxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgaW50IHZhbCkKIAogaW50IGludGVsX2ZyZXFfb3Bjb2RlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHZhbCkKIHsKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA5KQorCWlmIChJU19HRU4oZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkKIAkJcmV0dXJu IERJVl9ST1VORF9DTE9TRVNUKHZhbCAqIEdFTjlfRlJFUV9TQ0FMRVIsCiAJCQkJCSBHVF9GUkVR VUVOQ1lfTVVMVElQTElFUik7CiAJZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCkBA IC05NDk2LDcgKzk0OTYsNyBAQCB1MzIgaW50ZWxfZ2V0X2NhZ2Yoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCB1MzIgcnBzdGF0KQogewogCXUzMiBjYWdmOwogCi0JaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gOSkKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA5LCBHRU5fRk9SRVZF UikpCiAJCWNhZ2YgPSAocnBzdGF0ICYgR0VOOV9DQUdGX01BU0spID4+IEdFTjlfQ0FHRl9TSElG VDsKIAllbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3By aXYpKQogCQljYWdmID0gKHJwc3RhdCAmIEhTV19DQUdGX01BU0spID4+IEhTV19DQUdGX1NISUZU OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYwppbmRleCAyZWYzNzRmOTM2YjkuLmI5N2E3YmRhYjFk MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKQEAgLTEyNiw3ICsxMjYsNyBAQCBzdGF0aWMg dm9pZCB2bHZfcHNyX2VuYWJsZV9zaW5rKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiBzdGF0 aWMgaTkxNV9yZWdfdCBwc3JfYXV4X2N0bF9yZWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogCQkJCSAgICAgICBlbnVtIHBvcnQgcG9ydCkKIHsKLQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA5KQorCWlmIChJU19HRU4oZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkKIAkJ cmV0dXJuIERQX0FVWF9DSF9DVEwocG9ydCk7CiAJZWxzZQogCQlyZXR1cm4gRURQX1BTUl9BVVhf Q1RMOwpAQCAtMTM1LDcgKzEzNSw3IEBAIHN0YXRpYyBpOTE1X3JlZ190IHBzcl9hdXhfY3RsX3Jl ZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiBzdGF0aWMgaTkxNV9yZWdfdCBw c3JfYXV4X2RhdGFfcmVnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkJ ZW51bSBwb3J0IHBvcnQsIGludCBpbmRleCkKIHsKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA5KQorCWlmIChJU19HRU4oZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkKIAkJcmV0dXJuIERQ X0FVWF9DSF9EQVRBKHBvcnQsIGluZGV4KTsKIAllbHNlCiAJCXJldHVybiBFRFBfUFNSX0FVWF9E QVRBKGluZGV4KTsKQEAgLTUyMSw3ICs1MjEsNyBAQCB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwKIAlkZXZfcHJpdi0+cHNyLmVuYWJsZV9zb3VyY2UoaW50 ZWxfZHAsIGNydGNfc3RhdGUpOwogCWRldl9wcml2LT5wc3IuZW5hYmxlZCA9IGludGVsX2RwOwog Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgeworCWlmIChJU19HRU4oZGV2X3ByaXYs IDksIEdFTl9GT1JFVkVSKSkgewogCQlpbnRlbF9wc3JfYWN0aXZhdGUoaW50ZWxfZHApOwogCX0g ZWxzZSB7CiAJCS8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKaW5kZXgg NTcxOGYzNzE2MGM1Li4xYmQzN2Q4Y2VkZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmMKQEAgLTM0Niw3ICszNDYsNyBAQCBzdGF0aWMgdm9pZCByaW5nX3NldHVwX3Bo eXNfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCXUzMiBhZGRy OwogCiAJYWRkciA9IGRldl9wcml2LT5zdGF0dXNfcGFnZV9kbWFoLT5idXNhZGRyOwotCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgNCwgR0VOX0ZP UkVWRVIpKQogCQlhZGRyIHw9IChkZXZfcHJpdi0+c3RhdHVzX3BhZ2VfZG1haC0+YnVzYWRkciA+ PiAyOCkgJiAweGYwOwogCUk5MTVfV1JJVEUoSFdTX1BHQSwgYWRkcik7CiB9CkBAIC0zODYsNyAr Mzg2LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcmluZ19zZXR1cF9zdGF0dXNfcGFnZShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCW1taW8gPSBSSU5HX0hXU19QR0EoZW5naW5lLT5t bWlvX2Jhc2UpOwogCX0KIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpCisJaWYgKElT X0dFTihkZXZfcHJpdiwgNiwgR0VOX0ZPUkVWRVIpKQogCQlJOTE1X1dSSVRFKFJJTkdfSFdTVEFN KGVuZ2luZS0+bW1pb19iYXNlKSwgMHhmZmZmZmZmZik7CiAKIAlJOTE1X1dSSVRFKG1taW8sIGVu Z2luZS0+c3RhdHVzX3BhZ2UuZ2d0dF9vZmZzZXQpOwpAQCAtNDE0LDcgKzQxNCw3IEBAIHN0YXRp YyBib29sIHN0b3BfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1OwogCi0JaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPiAyKSB7CisJaWYgKElTX0dFTihkZXZfcHJpdiwgMywgR0VOX0ZP UkVWRVIpKSB7CiAJCUk5MTVfV1JJVEVfTU9ERShlbmdpbmUsIF9NQVNLRURfQklUX0VOQUJMRShT VE9QX1JJTkcpKTsKIAkJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LAogCQkJ CQkgICAgUklOR19NSV9NT0RFKGVuZ2luZS0+bW1pb19iYXNlKSwKQEAgLTUyMSw3ICs1MjEsNyBA QCBzdGF0aWMgaW50IGluaXRfcmluZ19jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQogCiAJaW50ZWxfZW5naW5lX2luaXRfaGFuZ2NoZWNrKGVuZ2luZSk7CiAKLQlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+IDIpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgMywgR0VOX0ZPUkVW RVIpKQogCQlJOTE1X1dSSVRFX01PREUoZW5naW5lLCBfTUFTS0VEX0JJVF9ESVNBQkxFKFNUT1Bf UklORykpOwogCiBvdXQ6CkBAIC02NTUsNyArNjU1LDcgQEAgc3RhdGljIGludCBpbml0X3JlbmRl cl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlpZiAoSVNfR0VOKGRldl9w cml2LCA2LCA3KSkKIAkJSTkxNV9XUklURShJTlNUUE0sIF9NQVNLRURfQklUX0VOQUJMRShJTlNU UE1fRk9SQ0VfT1JERVJJTkcpKTsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpCisJ aWYgKElTX0dFTihkZXZfcHJpdiwgNiwgR0VOX0ZPUkVWRVIpKQogCQlJOTE1X1dSSVRFX0lNUihl bmdpbmUsIH5lbmdpbmUtPmlycV9rZWVwX21hc2spOwogCiAJcmV0dXJuIGluaXRfd29ya2Fyb3Vu ZHNfcmluZyhlbmdpbmUpOwpAQCAtMTM1Miw3ICsxMzUyLDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVf Y2xlYW51cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1OwogCi0JV0FSTl9PTihJTlRFTF9H RU4oZGV2X3ByaXYpID4gMiAmJgorCVdBUk5fT04oSVNfR0VOKGRldl9wcml2LCAzLCBHRU5fRk9S RVZFUikgJiYKIAkJKEk5MTVfUkVBRF9NT0RFKGVuZ2luZSkgJiBNT0RFX0lETEUpID09IDApOwog CiAJaW50ZWxfcmluZ191bnBpbihlbmdpbmUtPmJ1ZmZlcik7CkBAIC0xODkyLDcgKzE4OTIsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9yaW5nX2luaXRfc2VtYXBob3JlcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJaWYgKCFIQVNfTEVHQUNZX1NFTUFQSE9SRVMoZGV2X3ByaXYp KQogCQlyZXR1cm47CiAKLQlHRU1fQlVHX09OKElOVEVMX0dFTihkZXZfcHJpdikgPCA2KTsKKwlH RU1fQlVHX09OKElTX0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDUpKTsKIAllbmdpbmUtPnNl bWFwaG9yZS5zeW5jX3RvID0gZ2VuNl9yaW5nX3N5bmNfdG87CiAJZW5naW5lLT5zZW1hcGhvcmUu c2lnbmFsID0gZ2VuNl9zaWduYWw7CiAKQEAgLTE5NDksMTUgKzE5NDksMTUgQEAgc3RhdGljIHZv aWQgaW50ZWxfcmluZ19pbml0X2lycShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiB7CiAJZW5naW5lLT5pcnFfZW5hYmxlX21hc2sgPSBHVF9SRU5ERVJfVVNFUl9JTlRFUlJVUFQg PDwgZW5naW5lLT5pcnFfc2hpZnQ7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KSB7 CisJaWYgKElTX0dFTihkZXZfcHJpdiwgNiwgR0VOX0ZPUkVWRVIpKSB7CiAJCWVuZ2luZS0+aXJx X2VuYWJsZSA9IGdlbjZfaXJxX2VuYWJsZTsKIAkJZW5naW5lLT5pcnFfZGlzYWJsZSA9IGdlbjZf aXJxX2Rpc2FibGU7CiAJCWVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIgPSBnZW42X3NlcW5vX2Jh cnJpZXI7Ci0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKKwl9IGVsc2Ug aWYgKElTX0dFTihkZXZfcHJpdiwgNSwgR0VOX0ZPUkVWRVIpKSB7CiAJCWVuZ2luZS0+aXJxX2Vu YWJsZSA9IGdlbjVfaXJxX2VuYWJsZTsKIAkJZW5naW5lLT5pcnFfZGlzYWJsZSA9IGdlbjVfaXJx X2Rpc2FibGU7CiAJCWVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIgPSBnZW41X3NlcW5vX2JhcnJp ZXI7Ci0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDMpIHsKKwl9IGVsc2UgaWYg KElTX0dFTihkZXZfcHJpdiwgMywgR0VOX0ZPUkVWRVIpKSB7CiAJCWVuZ2luZS0+aXJxX2VuYWJs ZSA9IGk5eHhfaXJxX2VuYWJsZTsKIAkJZW5naW5lLT5pcnFfZGlzYWJsZSA9IGk5eHhfaXJxX2Rp c2FibGU7CiAJfSBlbHNlIHsKQEAgLTE5ODUsNyArMTk4NSw3IEBAIHN0YXRpYyB2b2lkIGludGVs X3JpbmdfZGVmYXVsdF92ZnVuY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAog CQkJCSAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAkvKiBnZW44KyBh cmUgb25seSBzdXBwb3J0ZWQgd2l0aCBleGVjbGlzdHMgKi8KLQlHRU1fQlVHX09OKElOVEVMX0dF TihkZXZfcHJpdikgPj0gOCk7CisJR0VNX0JVR19PTihJU19HRU4oZGV2X3ByaXYsIDgsIEdFTl9G T1JFVkVSKSk7CiAKIAlpbnRlbF9yaW5nX2luaXRfaXJxKGRldl9wcml2LCBlbmdpbmUpOwogCWlu dGVsX3JpbmdfaW5pdF9zZW1hcGhvcmVzKGRldl9wcml2LCBlbmdpbmUpOwpAQCAtMjAxMyw5ICsy MDEzLDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAllbmdpbmUtPnNldF9kZWZhdWx0X3N1Ym1pc3Np b24gPSBpOXh4X3NldF9kZWZhdWx0X3N1Ym1pc3Npb247CiAKLQlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA2KQorCWlmIChJU19HRU4oZGV2X3ByaXYsIDYsIEdFTl9GT1JFVkVSKSkKIAkJZW5n aW5lLT5lbWl0X2JiX3N0YXJ0ID0gZ2VuNl9lbWl0X2JiX3N0YXJ0OwotCWVsc2UgaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gNCkKKwllbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDQsIEdFTl9G T1JFVkVSKSkKIAkJZW5naW5lLT5lbWl0X2JiX3N0YXJ0ID0gaTk2NV9lbWl0X2JiX3N0YXJ0Owog CWVsc2UgaWYgKElTX0k4MzAoZGV2X3ByaXYpIHx8IElTX0k4NDVHKGRldl9wcml2KSkKIAkJZW5n aW5lLT5lbWl0X2JiX3N0YXJ0ID0gaTgzMF9lbWl0X2JiX3N0YXJ0OwpAQCAtMjAzMyw3ICsyMDMz LDcgQEAgaW50IGludGVsX2luaXRfcmVuZGVyX3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKIAlpZiAoSEFTX0wzX0RQRihkZXZfcHJpdikpCiAJCWVuZ2luZS0+aXJx X2tlZXBfbWFzayA9IEdUX1JFTkRFUl9MM19QQVJJVFlfRVJST1JfSU5URVJSVVBUOwogCi0JaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikgeworCWlmIChJU19HRU4oZGV2X3ByaXYsIDYsIEdF Tl9GT1JFVkVSKSkgewogCQllbmdpbmUtPmluaXRfY29udGV4dCA9IGludGVsX3Jjc19jdHhfaW5p dDsKIAkJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuN19yZW5kZXJfcmluZ19mbHVzaDsKIAkJaWYg KElTX0dFTjYoZGV2X3ByaXYpKQpAQCAtMjA0MSw3ICsyMDQxLDcgQEAgaW50IGludGVsX2luaXRf cmVuZGVyX3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAl9IGVs c2UgaWYgKElTX0dFTjUoZGV2X3ByaXYpKSB7CiAJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjRf cmVuZGVyX3JpbmdfZmx1c2g7CiAJfSBlbHNlIHsKLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikg PCA0KQorCQlpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgMykpCiAJCQllbmdpbmUt PmVtaXRfZmx1c2ggPSBnZW4yX3JlbmRlcl9yaW5nX2ZsdXNoOwogCQllbHNlCiAJCQllbmdpbmUt PmVtaXRfZmx1c2ggPSBnZW40X3JlbmRlcl9yaW5nX2ZsdXNoOwpAQCAtMjA1Nyw3ICsyMDU3LDcg QEAgaW50IGludGVsX2luaXRfcmVuZGVyX3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gNikgeworCWlmIChJU19HRU4oZGV2X3ByaXYsIDYsIEdFTl9GT1JFVkVSKSkg ewogCQlyZXQgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX3NjcmF0Y2goZW5naW5lLCBQQUdFX1NJWkUp OwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKQEAgLTIwNzYsNyArMjA3Niw3IEBAIGludCBp bnRlbF9pbml0X2JzZF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp CiAKIAlpbnRlbF9yaW5nX2RlZmF1bHRfdmZ1bmNzKGRldl9wcml2LCBlbmdpbmUpOwogCi0JaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikgeworCWlmIChJU19HRU4oZGV2X3ByaXYsIDYsIEdF Tl9GT1JFVkVSKSkgewogCQkvKiBnZW42IGJzZCBuZWVkcyBhIHNwZWNpYWwgd2EgZm9yIHRhaWwg dXBkYXRlcyAqLwogCQlpZiAoSVNfR0VONihkZXZfcHJpdikpCiAJCQllbmdpbmUtPnNldF9kZWZh dWx0X3N1Ym1pc3Npb24gPSBnZW42X2JzZF9zZXRfZGVmYXVsdF9zdWJtaXNzaW9uOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2R2by5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfc2R2by5jCmluZGV4IDBiZjk3ZWQ1ZmZhYy4uYTgyZmVjZDY5MDQyIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zZHZvLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfc2R2by5jCkBAIC0xMzM1LDEzICsxMzM1LDEzIEBAIHN0YXRpYyB2 b2lkIGludGVsX3Nkdm9fcHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5j b2RlciwKIAkJcmV0dXJuOwogCiAJLyogU2V0IHRoZSBTRFZPIGNvbnRyb2wgcmVncy4gKi8KLQlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7CisJaWYgKElTX0dFTihkZXZfcHJpdiwgNCwg R0VOX0ZPUkVWRVIpKSB7CiAJCS8qIFRoZSByZWFsIG1vZGUgcG9sYXJpdHkgaXMgc2V0IGJ5IHRo ZSBTRFZPIGNvbW1hbmRzLCB1c2luZwogCQkgKiBzdHJ1Y3QgaW50ZWxfc2R2b19kdGQuICovCiAJ CXNkdm94ID0gU0RWT19WU1lOQ19BQ1RJVkVfSElHSCB8IFNEVk9fSFNZTkNfQUNUSVZFX0hJR0g7 CiAJCWlmICghSEFTX1BDSF9TUExJVChkZXZfcHJpdikgJiYgY3J0Y19zdGF0ZS0+bGltaXRlZF9j b2xvcl9yYW5nZSkKIAkJCXNkdm94IHw9IEhETUlfQ09MT1JfUkFOR0VfMTZfMjM1OwotCQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA8IDUpCisJCWlmIChJU19HRU4oZGV2X3ByaXYsIEdFTl9GT1JF VkVSLCA0KSkKIAkJCXNkdm94IHw9IFNEVk9fQk9SREVSX0VOQUJMRTsKIAl9IGVsc2UgewogCQlz ZHZveCA9IEk5MTVfUkVBRChpbnRlbF9zZHZvLT5zZHZvX3JlZyk7CkBAIC0xMzU4LDExICsxMzU4 LDExIEBAIHN0YXRpYyB2b2lkIGludGVsX3Nkdm9fcHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqaW50ZWxfZW5jb2RlciwKIAkJc2R2b3ggfD0gU0RWT19QSVBFX1NFTChjcnRjLT5waXBl KTsKIAogCWlmIChjcnRjX3N0YXRlLT5oYXNfYXVkaW8pIHsKLQkJV0FSTl9PTl9PTkNFKElOVEVM X0dFTihkZXZfcHJpdikgPCA0KTsKKwkJV0FSTl9PTl9PTkNFKElTX0dFTihkZXZfcHJpdiwgR0VO X0ZPUkVWRVIsIDMpKTsKIAkJc2R2b3ggfD0gU0RWT19BVURJT19FTkFCTEU7CiAJfQogCi0JaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgeworCWlmIChJU19HRU4oZGV2X3ByaXYsIDQsIEdF Tl9GT1JFVkVSKSkgewogCQkvKiBkb25lIGluIGNydGNfbW9kZV9zZXQgYXMgdGhlIGRwbGxfbWQg cmVnIG11c3QgYmUgd3JpdHRlbiBlYXJseSAqLwogCX0gZWxzZSBpZiAoSVNfSTk0NUcoZGV2X3By aXYpIHx8IElTX0k5NDVHTShkZXZfcHJpdikgfHwKIAkJICAgSVNfRzMzKGRldl9wcml2KSB8fCBJ U19QSU5FVklFVyhkZXZfcHJpdikpIHsKQEAgLTEzNzMsNyArMTM3Myw3IEBAIHN0YXRpYyB2b2lk IGludGVsX3Nkdm9fcHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2Rl ciwKIAl9CiAKIAlpZiAoaW5wdXRfZHRkLnBhcnQyLnNkdm9fZmxhZ3MgJiBTRFZPX05FRURfVE9f U1RBTEwgJiYKLQkgICAgSU5URUxfR0VOKGRldl9wcml2KSA8IDUpCisJICAgIElTX0dFTihkZXZf cHJpdiwgR0VOX0ZPUkVWRVIsIDQpKQogCQlzZHZveCB8PSBTRFZPX1NUQUxMX1NFTEVDVDsKIAlp bnRlbF9zZHZvX3dyaXRlX3Nkdm94KGludGVsX3Nkdm8sIHNkdm94KTsKIH0KQEAgLTI0MzMsNyAr MjQzMyw3IEBAIGludGVsX3Nkdm9fYWRkX2hkbWlfcHJvcGVydGllcyhzdHJ1Y3QgaW50ZWxfc2R2 byAqaW50ZWxfc2R2bywKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGNvbm5lY3Rvci0+YmFzZS5iYXNlLmRldik7CiAKIAlpbnRlbF9hdHRhY2hfZm9yY2VfYXVk aW9fcHJvcGVydHkoJmNvbm5lY3Rvci0+YmFzZS5iYXNlKTsKLQlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA0ICYmIElTX01PQklMRShkZXZfcHJpdikpIHsKKwlpZiAoSVNfR0VOKGRldl9wcml2 LCA0LCBHRU5fRk9SRVZFUikgJiYgSVNfTU9CSUxFKGRldl9wcml2KSkgewogCQlpbnRlbF9hdHRh Y2hfYnJvYWRjYXN0X3JnYl9wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNlLmJhc2UpOwogCX0KIAlp bnRlbF9hdHRhY2hfYXNwZWN0X3JhdGlvX3Byb3BlcnR5KCZjb25uZWN0b3ItPmJhc2UuYmFzZSk7 CkBAIC0yNTAyLDcgKzI1MDIsNyBAQCBpbnRlbF9zZHZvX2R2aV9pbml0KHN0cnVjdCBpbnRlbF9z ZHZvICppbnRlbF9zZHZvLCBpbnQgZGV2aWNlKQogCWNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUg PSBEUk1fTU9ERV9DT05ORUNUT1JfRFZJRDsKIAogCS8qIGdlbjMgZG9lc24ndCBkbyB0aGUgaGRt aSBiaXRzIGluIHRoZSBTRFZPIHJlZ2lzdGVyICovCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gNCAmJgorCWlmIChJU19HRU4oZGV2X3ByaXYsIDQsIEdFTl9GT1JFVkVSKSAmJgogCSAgICBp bnRlbF9zZHZvX2lzX2hkbWlfY29ubmVjdG9yKGludGVsX3Nkdm8sIGRldmljZSkpIHsKIAkJY29u bmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9IERSTV9NT0RFX0NPTk5FQ1RPUl9IRE1JQTsKIAkJaW50 ZWxfc2R2by0+aXNfaGRtaSA9IHRydWU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCmlu ZGV4IDNiZTIyYzBmY2ZiNS4uZmQ4MzZjZWU2ZTUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9zcHJpdGUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9z cHJpdGUuYwpAQCAtMjYzLDcgKzI2Myw3IEBAIHNrbF91cGRhdGVfcGxhbmUoc3RydWN0IGludGVs X3BsYW5lICpwbGFuZSwKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+dW5jb3JlLmxv Y2ssIGlycWZsYWdzKTsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwIHx8IElTX0dF TUlOSUxBS0UoZGV2X3ByaXYpKQorCWlmIChJU19HRU4oZGV2X3ByaXYsIDEwLCBHRU5fRk9SRVZF UikgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCiAJCUk5MTVfV1JJVEVfRlcoUExBTkVfQ09M T1JfQ1RMKHBpcGUsIHBsYW5lX2lkKSwKIAkJCSAgICAgIHBsYW5lX3N0YXRlLT5jb2xvcl9jdGwp OwogCWlmIChrZXktPmZsYWdzKSB7CkBAIC04NjUsNyArODY1LDcgQEAgaW50ZWxfY2hlY2tfc3By aXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCiAJc3RydWN0IGRybV9yZWN0ICpz cmMgPSAmc3RhdGUtPmJhc2Uuc3JjOwogCXN0cnVjdCBkcm1fcmVjdCAqZHN0ID0gJnN0YXRlLT5i YXNlLmRzdDsKIAlzdHJ1Y3QgZHJtX3JlY3QgY2xpcCA9IHt9OwotCWludCBtYXhfc3RyaWRlID0g SU5URUxfR0VOKGRldl9wcml2KSA+PSA5ID8gMzI3NjggOiAxNjM4NDsKKwlpbnQgbWF4X3N0cmlk ZSA9IElTX0dFTihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVWRVIpID8gMzI3NjggOiAxNjM4NDsKIAlp bnQgaHNjYWxlLCB2c2NhbGU7CiAJaW50IG1heF9zY2FsZSwgbWluX3NjYWxlOwogCWJvb2wgY2Fu X3NjYWxlOwpAQCAtODkyLDcgKzg5Miw3IEBAIGludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCX0KIAogCS8qIHNldHVwIGNhbl9zY2FsZSwgbWluX3Nj YWxlLCBtYXhfc2NhbGUgKi8KLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7CisJaWYg KElTX0dFTihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVWRVIpKSB7CiAJCS8qIHVzZSBzY2FsZXIgd2hl biBjb2xvcmtleSBpcyBub3QgcmVxdWlyZWQgKi8KIAkJaWYgKCFzdGF0ZS0+Y2tleS5mbGFncykg ewogCQkJY2FuX3NjYWxlID0gMTsKQEAgLTEwMTIsOCArMTAxMiw4IEBAIGludGVsX2NoZWNrX3Nw cml0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCiAJCXdpZHRoX2J5dGVzID0g KChzcmNfeCAqIGNwcCkgJiA2MykgKyBzcmNfdyAqIGNwcDsKIAotCQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA8IDkgJiYgKHNyY193ID4gMjA0OCB8fCBzcmNfaCA+IDIwNDggfHwKLQkJICAgIHdp ZHRoX2J5dGVzID4gNDA5NiB8fCBmYi0+cGl0Y2hlc1swXSA+IDQwOTYpKSB7CisJCWlmIChJU19H RU4oZGV2X3ByaXYsIEdFTl9GT1JFVkVSLCA4KSAmJiAoc3JjX3cgPiAyMDQ4IHx8IHNyY19oID4g MjA0OCB8fAorCQkJCQkJCSB3aWR0aF9ieXRlcyA+IDQwOTYgfHwgZmItPnBpdGNoZXNbMF0gPiA0 MDk2KSkgewogCQkJRFJNX0RFQlVHX0tNUygiU291cmNlIGRpbWVuc2lvbnMgZXhjZWVkIGhhcmR3 YXJlIGxpbWl0c1xuIik7CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQpAQCAtMTAzMSw3ICsxMDMx LDcgQEAgaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUs CiAJZHN0LT55MSA9IGNydGNfeTsKIAlkc3QtPnkyID0gY3J0Y195ICsgY3J0Y19oOwogCi0JaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgeworCWlmIChJU19HRU4oZGV2X3ByaXYsIDksIEdF Tl9GT1JFVkVSKSkgewogCQlyZXQgPSBza2xfY2hlY2tfcGxhbmVfc3VyZmFjZShjcnRjX3N0YXRl LCBzdGF0ZSk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwpAQCAtMTA0Myw3ICsxMDQzLDcg QEAgaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCiAJ CQlyZXR1cm4gcmV0OwogCiAJCXN0YXRlLT5jdGwgPSB2bHZfc3ByaXRlX2N0bChjcnRjX3N0YXRl LCBzdGF0ZSk7Ci0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcpIHsKKwl9IGVs c2UgaWYgKElTX0dFTihkZXZfcHJpdiwgNywgR0VOX0ZPUkVWRVIpKSB7CiAJCXJldCA9IGk5eHhf Y2hlY2tfcGxhbmVfc3VyZmFjZShzdGF0ZSk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwpA QCAtMTA1Nyw3ICsxMDU3LDcgQEAgaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUsCiAJCXN0YXRlLT5jdGwgPSBnNHhfc3ByaXRlX2N0bChjcnRjX3N0YXRl LCBzdGF0ZSk7CiAJfQogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTAgfHwgSVNfR0VN SU5JTEFLRShkZXZfcHJpdikpCisJaWYgKElTX0dFTihkZXZfcHJpdiwgMTAsIEdFTl9GT1JFVkVS KSB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkKIAkJc3RhdGUtPmNvbG9yX2N0bCA9IGdsa19w bGFuZV9jb2xvcl9jdGwoY3J0Y19zdGF0ZSwgc3RhdGUpOwogCiAJcmV0dXJuIDA7CkBAIC0xMjkw LDExICsxMjkwLDExIEBAIHN0YXRpYyBib29sIGludGVsX3Nwcml0ZV9wbGFuZV9mb3JtYXRfbW9k X3N1cHBvcnRlZChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkgICAgbW9kaWZpZXIgIT0gRFJN X0ZPUk1BVF9NT0RfTElORUFSKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA5KQorCWlmIChJU19HRU4oZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSkKIAkJ cmV0dXJuIHNrbF9tb2Rfc3VwcG9ydGVkKGZvcm1hdCwgbW9kaWZpZXIpOwogCWVsc2UgaWYgKElT X1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQogCQlyZXR1 cm4gdmx2X21vZF9zdXBwb3J0ZWQoZm9ybWF0LCBtb2RpZmllcik7Ci0JZWxzZSBpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA2KQorCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgNiwgR0VOX0ZP UkVWRVIpKQogCQlyZXR1cm4gc25iX21vZF9zdXBwb3J0ZWQoZm9ybWF0LCBtb2RpZmllcik7CiAJ ZWxzZQogCQlyZXR1cm4gZzR4X21vZF9zdXBwb3J0ZWQoZm9ybWF0LCBtb2RpZmllcik7CkBAIC0x MzE3LDcgKzEzMTcsNyBAQCBib29sIHNrbF9wbGFuZV9oYXNfY2NzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAlpZiAocGxhbmVfaWQgPT0gUExBTkVfQ1VSU09SKQogCQlyZXR1 cm4gZmFsc2U7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkKKwlpZiAoSVNfR0VO KGRldl9wcml2LCAxMCwgR0VOX0ZPUkVWRVIpKQogCQlyZXR1cm4gdHJ1ZTsKIAogCWlmIChJU19H RU1JTklMQUtFKGRldl9wcml2KSkKQEAgLTEzNTQsNyArMTM1NCw3IEBAIGludGVsX3Nwcml0ZV9w bGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCX0KIAlpbnRl bF9wbGFuZS0+YmFzZS5zdGF0ZSA9ICZzdGF0ZS0+YmFzZTsKIAotCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDkpIHsKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA5LCBHRU5fRk9SRVZFUikpIHsK IAkJaW50ZWxfcGxhbmUtPmNhbl9zY2FsZSA9IHRydWU7CiAJCXN0YXRlLT5zY2FsZXJfaWQgPSAt MTsKIApAQCAtMTM4MCw3ICsxMzgwLDcgQEAgaW50ZWxfc3ByaXRlX3BsYW5lX2NyZWF0ZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCXBsYW5lX2Zvcm1hdHMgPSB2bHZfcGxh bmVfZm9ybWF0czsKIAkJbnVtX3BsYW5lX2Zvcm1hdHMgPSBBUlJBWV9TSVpFKHZsdl9wbGFuZV9m b3JtYXRzKTsKIAkJbW9kaWZpZXJzID0gaTl4eF9wbGFuZV9mb3JtYXRfbW9kaWZpZXJzOwotCX0g ZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA3KSB7CisJfSBlbHNlIGlmIChJU19HRU4o ZGV2X3ByaXYsIDcsIEdFTl9GT1JFVkVSKSkgewogCQlpZiAoSVNfSVZZQlJJREdFKGRldl9wcml2 KSkgewogCQkJaW50ZWxfcGxhbmUtPmNhbl9zY2FsZSA9IHRydWU7CiAJCQlpbnRlbF9wbGFuZS0+ bWF4X2Rvd25zY2FsZSA9IDI7CkBAIC0xNDE0LDcgKzE0MTQsNyBAQCBpbnRlbF9zcHJpdGVfcGxh bmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJfQogCX0KIAot CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA5 LCBHRU5fRk9SRVZFUikpIHsKIAkJc3VwcG9ydGVkX3JvdGF0aW9ucyA9CiAJCQlEUk1fTU9ERV9S T1RBVEVfMCB8IERSTV9NT0RFX1JPVEFURV85MCB8CiAJCQlEUk1fTU9ERV9ST1RBVEVfMTgwIHwg RFJNX01PREVfUk9UQVRFXzI3MDsKQEAgLTE0MzUsNyArMTQzNSw3IEBAIGludGVsX3Nwcml0ZV9w bGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiAJcG9zc2li bGVfY3J0Y3MgPSAoMSA8PCBwaXBlKTsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkp CisJaWYgKElTX0dFTihkZXZfcHJpdiwgOSwgR0VOX0ZPUkVWRVIpKQogCQlyZXQgPSBkcm1fdW5p dmVyc2FsX3BsYW5lX2luaXQoJmRldl9wcml2LT5kcm0sICZpbnRlbF9wbGFuZS0+YmFzZSwKIAkJ CQkJICAgICAgIHBvc3NpYmxlX2NydGNzLCAmaW50ZWxfc3ByaXRlX3BsYW5lX2Z1bmNzLAogCQkJ CQkgICAgICAgcGxhbmVfZm9ybWF0cywgbnVtX3BsYW5lX2Zvcm1hdHMsCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90di5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfdHYuYwppbmRleCBiM2RhYmMyMTllNmEuLmYyMjIzZDg2MmNiOCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdHYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF90di5jCkBAIC0xMDY3LDcgKzEwNjcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF90dl9wcmVf ZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCiAJc2V0X2NvbG9yX2NvbnZl cnNpb24oZGV2X3ByaXYsIGNvbG9yX2NvbnZlcnNpb24pOwogCi0JaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gNCkKKwlpZiAoSVNfR0VOKGRldl9wcml2LCA0LCBHRU5fRk9SRVZFUikpCiAJCUk5 MTVfV1JJVEUoVFZfQ0xSX0tOT0JTLCAweDAwNDA0MDAwKTsKIAllbHNlCiAJCUk5MTVfV1JJVEUo VFZfQ0xSX0tOT0JTLCAweDAwNjA2MDAwKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3VuY29yZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMK aW5kZXggNWFlOWE2MjcxMmNhLi4xODQwZDlkZTJlYWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3VuY29yZS5jCkBAIC00MzUsNyArNDM1LDcgQEAgdTY0IGludGVsX3VuY29yZV9lZHJhbV9zaXpl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkvKiBUaGUgbmVlZGVkIGNhcGFi aWxpdHkgYml0cyBmb3Igc2l6ZSBjYWxjdWxhdGlvbgogCSAqIGFyZSBub3QgdGhlcmUgd2l0aCBw cmUgZ2VuOSBzbyByZXR1cm4gMTI4TUIgYWx3YXlzLgogCSAqLwotCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpIDwgOSkKKwlpZiAoSVNfR0VOKGRldl9wcml2LCBHRU5fRk9SRVZFUiwgOCkpCiAJCXJl dHVybiAxMjggKiAxMDI0ICogMTAyNDsKIAogCXJldHVybiBnZW45X2VkcmFtX3NpemUoZGV2X3By aXYpOwpAQCAtNDQ1LDcgKzQ0NSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3VuY29yZV9lZHJhbV9k ZXRlY3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCWlmIChJU19IQVNX RUxMKGRldl9wcml2KSB8fAogCSAgICBJU19CUk9BRFdFTEwoZGV2X3ByaXYpIHx8Ci0JICAgIElO VEVMX0dFTihkZXZfcHJpdikgPj0gOSkgeworCSAgICBJU19HRU4oZGV2X3ByaXYsIDksIEdFTl9G T1JFVkVSKSkgewogCQlkZXZfcHJpdi0+ZWRyYW1fY2FwID0gX19yYXdfaTkxNV9yZWFkMzIoZGV2 X3ByaXYsCiAJCQkJCQkJSFNXX0VEUkFNX0NBUCk7CiAKQEAgLTgzNyw3ICs4MzcsNyBAQCBmaW5k X2Z3X2RvbWFpbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBvZmZzZXQp CiAJeyAuc3RhcnQgPSAocyksIC5lbmQgPSAoZSksIC5kb21haW5zID0gKGQpIH0KIAogI2RlZmlu ZSBIQVNfRldUQUJMRShkZXZfcHJpdikgXAotCShJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkgfHwg XAorCShJU19HRU4oZGV2X3ByaXYsIDksIEdFTl9GT1JFVkVSKSB8fCBcCiAJIElTX0NIRVJSWVZJ RVcoZGV2X3ByaXYpIHx8IFwKIAkgSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCiAKQEAgLTEyNTMs NyArMTI1Myw3IEBAIHN0YXRpYyB2b2lkIGZ3X2RvbWFpbl9pbml0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAogc3RhdGljIHZvaWQgaW50ZWxfdW5jb3JlX2Z3X2RvbWFpbnNf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0JaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPD0gNSB8fCBpbnRlbF92Z3B1X2FjdGl2ZShkZXZfcHJpdikpCisJaWYgKElT X0dFTihkZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDUpIHx8IGludGVsX3ZncHVfYWN0aXZlKGRldl9w cml2KSkKIAkJcmV0dXJuOwogCiAJaWYgKElTX0dFTjYoZGV2X3ByaXYpKSB7CkBAIC0xMjY3LDcg KzEyNjcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF91bmNvcmVfZndfZG9tYWluc19pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJZGV2X3ByaXYtPnVuY29yZS5md19jbGVh ciA9IF9NQVNLRURfQklUX0RJU0FCTEUoRk9SQ0VXQUtFX0tFUk5FTCk7CiAJfQogCi0JaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gOSkgeworCWlmIChJU19HRU4oZGV2X3ByaXYsIDksIEdFTl9G T1JFVkVSKSkgewogCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfZ2V0ID0KIAkJ CWZ3X2RvbWFpbnNfZ2V0X3dpdGhfZmFsbGJhY2s7CiAJCWRldl9wcml2LT51bmNvcmUuZnVuY3Mu Zm9yY2Vfd2FrZV9wdXQgPSBmd19kb21haW5zX3B1dDsKQEAgLTE1NDMsNyArMTU0Myw3IEBAIHN0 YXRpYyB2b2lkIGk5MTVfc3RvcF9lbmdpbmVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CiAJZW51bSBpbnRlbF9lbmdp bmVfaWQgaWQ7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDMpCisJaWYgKElTX0dFTihk ZXZfcHJpdiwgR0VOX0ZPUkVWRVIsIDIpKQogCQlyZXR1cm47CiAKIAlmb3JfZWFjaF9lbmdpbmVf bWFza2VkKGVuZ2luZSwgZGV2X3ByaXYsIGVuZ2luZV9tYXNrLCBpZCkKQEAgLTE4ODMsOSArMTg4 Myw5IEBAIHN0YXRpYyByZXNldF9mdW5jIGludGVsX2dldF9ncHVfcmVzZXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWlmICghaTkxNV9tb2RwYXJhbXMucmVzZXQpCiAJCXJl dHVybiBOVUxMOwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkKKwlpZiAoSVNfR0VO KGRldl9wcml2LCA4LCBHRU5fRk9SRVZFUikpCiAJCXJldHVybiBnZW44X3Jlc2V0X2VuZ2luZXM7 Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KQorCWVsc2UgaWYgKElTX0dFTihk ZXZfcHJpdiwgNiwgR0VOX0ZPUkVWRVIpKQogCQlyZXR1cm4gZ2VuNl9yZXNldF9lbmdpbmVzOwog CWVsc2UgaWYgKElTX0dFTjUoZGV2X3ByaXYpKQogCQlyZXR1cm4gaXJvbmxha2VfZG9fcmVzZXQ7 CkBAIC0xODkzLDcgKzE4OTMsNyBAQCBzdGF0aWMgcmVzZXRfZnVuYyBpbnRlbF9nZXRfZ3B1X3Jl c2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJcmV0dXJuIGc0eF9kb19y ZXNldDsKIAllbHNlIGlmIChJU19HMzMoZGV2X3ByaXYpIHx8IElTX1BJTkVWSUVXKGRldl9wcml2 KSkKIAkJcmV0dXJuIGczM19kb19yZXNldDsKLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDMpCisJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCAzLCBHRU5fRk9SRVZFUikpCiAJCXJl dHVybiBpOTE1X2RvX3Jlc2V0OwogCWVsc2UKIAkJcmV0dXJuIE5VTEw7CkBAIC0xOTk2LDcgKzE5 OTYsNyBAQCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2Zvcl9yZWFkKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAogCWlmIChIQVNfRldUQUJMRShkZXZfcHJpdikpIHsKIAkJZndf ZG9tYWlucyA9IF9fZnd0YWJsZV9yZWdfcmVhZF9md19kb21haW5zKG9mZnNldCk7Ci0JfSBlbHNl IGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsKKwl9IGVsc2UgaWYgKElTX0dFTihkZXZf cHJpdiwgNiwgR0VOX0ZPUkVWRVIpKSB7CiAJCWZ3X2RvbWFpbnMgPSBfX2dlbjZfcmVnX3JlYWRf ZndfZG9tYWlucyhvZmZzZXQpOwogCX0gZWxzZSB7CiAJCVdBUk5fT04oIUlTX0dFTihkZXZfcHJp diwgMiwgNSkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5 MTVfZ2VtX2NvaGVyZW5jeS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVf Z2VtX2NvaGVyZW5jeS5jCmluZGV4IDdhMGQxZTE3YzFhZC4uNzBkZTFjZGRjZTMyIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29oZXJlbmN5LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5j CkBAIC0yMDQsMTIgKzIwNCwxMiBAQCBzdGF0aWMgaW50IGdwdV9zZXQoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKIAkJcmV0dXJuIFBUUl9FUlIoY3MpOwogCX0KIAotCWlmIChJTlRF TF9HRU4oaTkxNSkgPj0gOCkgeworCWlmIChJU19HRU4oaTkxNSwgOCwgR0VOX0ZPUkVWRVIpKSB7 CiAJCSpjcysrID0gTUlfU1RPUkVfRFdPUkRfSU1NX0dFTjQgfCAxIDw8IDIyOwogCQkqY3MrKyA9 IGxvd2VyXzMyX2JpdHMoaTkxNV9nZ3R0X29mZnNldCh2bWEpICsgb2Zmc2V0KTsKIAkJKmNzKysg PSB1cHBlcl8zMl9iaXRzKGk5MTVfZ2d0dF9vZmZzZXQodm1hKSArIG9mZnNldCk7CiAJCSpjcysr ID0gdjsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA0KSB7CisJfSBlbHNlIGlmIChJ U19HRU4oaTkxNSwgNCwgR0VOX0ZPUkVWRVIpKSB7CiAJCSpjcysrID0gTUlfU1RPUkVfRFdPUkRf SU1NX0dFTjQgfCAxIDw8IDIyOwogCQkqY3MrKyA9IDA7CiAJCSpjcysrID0gaTkxNV9nZ3R0X29m ZnNldCh2bWEpICsgb2Zmc2V0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggNTZhODAzZDExOTE2Li40ZWY3MjFlODQwZGEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0 LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQu YwpAQCAtMTU5LDcgKzE1OSw3IEBAIHN0YXRpYyBpbnQgZ3B1X2ZpbGwoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKIAl9CiAKIAlmbGFncyA9IDA7Ci0JaWYgKElOVEVMX0dFTih2bS0+ aTkxNSkgPD0gNSkKKwlpZiAoSVNfR0VOKHZtLT5pOTE1LCBHRU5fRk9SRVZFUiwgNSkpCiAJCWZs YWdzIHw9IEk5MTVfRElTUEFUQ0hfU0VDVVJFOwogCiAJZXJyID0gZW5naW5lLT5lbWl0X2JiX3N0 YXJ0KHJxLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVf Z2VtX29iamVjdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX29i amVjdC5jCmluZGV4IGYzMmFhNmJiNzllMi4uY2JiYWNmNzE4YzhiIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX29iamVjdC5jCkBAIC0zNTUsNyArMzU1 LDcgQEAgc3RhdGljIGludCBpZ3RfcGFydGlhbF90aWxpbmcodm9pZCAqYXJnKQogCQkgICAgdGls ZS5zd2l6emxlID09IEk5MTVfQklUXzZfU1dJWlpMRV85XzEwXzE3KQogCQkJY29udGludWU7CiAK LQkJaWYgKElOVEVMX0dFTihpOTE1KSA8PSAyKSB7CisJCWlmIChJU19HRU4oaTkxNSwgR0VOX0ZP UkVWRVIsIDIpKSB7CiAJCQl0aWxlLmhlaWdodCA9IDE2OwogCQkJdGlsZS53aWR0aCA9IDEyODsK IAkJCXRpbGUuc2l6ZSA9IDExOwpAQCAtMzcwLDkgKzM3MCw5IEBAIHN0YXRpYyBpbnQgaWd0X3Bh cnRpYWxfdGlsaW5nKHZvaWQgKmFyZykKIAkJCXRpbGUuc2l6ZSA9IDEyOwogCQl9CiAKLQkJaWYg KElOVEVMX0dFTihpOTE1KSA8IDQpCisJCWlmIChJU19HRU4oaTkxNSwgR0VOX0ZPUkVWRVIsIDMp KQogCQkJbWF4X3BpdGNoID0gODE5MiAvIHRpbGUud2lkdGg7Ci0JCWVsc2UgaWYgKElOVEVMX0dF TihpOTE1KSA8IDcpCisJCWVsc2UgaWYgKElTX0dFTihpOTE1LCBHRU5fRk9SRVZFUiwgNikpCiAJ CQltYXhfcGl0Y2ggPSAxMjggKiBJOTY1X0ZFTkNFX01BWF9QSVRDSF9WQUwgLyB0aWxlLndpZHRo OwogCQllbHNlCiAJCQltYXhfcGl0Y2ggPSAxMjggKiBHRU43X0ZFTkNFX01BWF9QSVRDSF9WQUwg LyB0aWxlLndpZHRoOwpAQCAtMzg1LDcgKzM4NSw3IEBAIHN0YXRpYyBpbnQgaWd0X3BhcnRpYWxf dGlsaW5nKHZvaWQgKmFyZykKIAkJCWlmIChlcnIpCiAJCQkJZ290byBvdXRfdW5sb2NrOwogCi0J CQlpZiAocGl0Y2ggPiAyICYmIElOVEVMX0dFTihpOTE1KSA+PSA0KSB7CisJCQlpZiAocGl0Y2gg PiAyICYmIElTX0dFTihpOTE1LCA0LCBHRU5fRk9SRVZFUikpIHsKIAkJCQl0aWxlLnN0cmlkZSA9 IHRpbGUud2lkdGggKiAocGl0Y2ggLSAxKTsKIAkJCQllcnIgPSBjaGVja19wYXJ0aWFsX21hcHBp bmcob2JqLCAmdGlsZSwgZW5kKTsKIAkJCQlpZiAoZXJyID09IC1FSU5UUikKQEAgLTM5NCw3ICsz OTQsNyBAQCBzdGF0aWMgaW50IGlndF9wYXJ0aWFsX3RpbGluZyh2b2lkICphcmcpCiAJCQkJCWdv dG8gb3V0X3VubG9jazsKIAkJCX0KIAotCQkJaWYgKHBpdGNoIDwgbWF4X3BpdGNoICYmIElOVEVM X0dFTihpOTE1KSA+PSA0KSB7CisJCQlpZiAocGl0Y2ggPCBtYXhfcGl0Y2ggJiYgSVNfR0VOKGk5 MTUsIDQsIEdFTl9GT1JFVkVSKSkgewogCQkJCXRpbGUuc3RyaWRlID0gdGlsZS53aWR0aCAqIChw aXRjaCArIDEpOwogCQkJCWVyciA9IGNoZWNrX3BhcnRpYWxfbWFwcGluZyhvYmosICZ0aWxlLCBl bmQpOwogCQkJCWlmIChlcnIgPT0gLUVJTlRSKQpAQCAtNDA0LDcgKzQwNCw3IEBAIHN0YXRpYyBp bnQgaWd0X3BhcnRpYWxfdGlsaW5nKHZvaWQgKmFyZykKIAkJCX0KIAkJfQogCi0JCWlmIChJTlRF TF9HRU4oaTkxNSkgPj0gNCkgeworCQlpZiAoSVNfR0VOKGk5MTUsIDQsIEdFTl9GT1JFVkVSKSkg ewogCQkJZm9yX2VhY2hfcHJpbWVfbnVtYmVyKHBpdGNoLCBtYXhfcGl0Y2gpIHsKIAkJCQl0aWxl LnN0cmlkZSA9IHRpbGUud2lkdGggKiBwaXRjaDsKIAkJCQllcnIgPSBjaGVja19wYXJ0aWFsX21h cHBpbmcob2JqLCAmdGlsZSwgZW5kKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pbnRlbF9oYW5nY2hlY2suYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pbnRlbF9oYW5nY2hlY2suYwppbmRleCBkMWQyYzI0NTZmNjkuLmIwYTI4YWM0ODg1NCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2hhbmdjaGVj ay5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9oYW5nY2hlY2su YwpAQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBpbnQgZW1pdF9yZWN1cnNlX2JhdGNoKHN0cnVj dCBoYW5nICpoLAogCX0KIAogCWJhdGNoID0gaC0+YmF0Y2g7Ci0JaWYgKElOVEVMX0dFTihpOTE1 KSA+PSA4KSB7CisJaWYgKElTX0dFTihpOTE1LCA4LCBHRU5fRk9SRVZFUikpIHsKIAkJKmJhdGNo KysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONDsKIAkJKmJhdGNoKysgPSBsb3dlcl8zMl9iaXRz KGh3c19hZGRyZXNzKGh3cywgcnEpKTsKIAkJKmJhdGNoKysgPSB1cHBlcl8zMl9iaXRzKGh3c19h ZGRyZXNzKGh3cywgcnEpKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgaW50IGVtaXRfcmVj dXJzZV9iYXRjaChzdHJ1Y3QgaGFuZyAqaCwKIAkJKmJhdGNoKysgPSBNSV9CQVRDSF9CVUZGRVJf U1RBUlQgfCAxIDw8IDggfCAxOwogCQkqYmF0Y2grKyA9IGxvd2VyXzMyX2JpdHModm1hLT5ub2Rl LnN0YXJ0KTsKIAkJKmJhdGNoKysgPSB1cHBlcl8zMl9iaXRzKHZtYS0+bm9kZS5zdGFydCk7Ci0J fSBlbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNikgeworCX0gZWxzZSBpZiAoSVNfR0VOKGk5 MTUsIDYsIEdFTl9GT1JFVkVSKSkgewogCQkqYmF0Y2grKyA9IE1JX1NUT1JFX0RXT1JEX0lNTV9H RU40OwogCQkqYmF0Y2grKyA9IDA7CiAJCSpiYXRjaCsrID0gbG93ZXJfMzJfYml0cyhod3NfYWRk cmVzcyhod3MsIHJxKSk7CkBAIC0xNjMsNyArMTYzLDcgQEAgc3RhdGljIGludCBlbWl0X3JlY3Vy c2VfYmF0Y2goc3RydWN0IGhhbmcgKmgsCiAJCSpiYXRjaCsrID0gTUlfQVJCX0NIRUNLOwogCQkq YmF0Y2grKyA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IDEgPDwgODsKIAkJKmJhdGNoKysgPSBs b3dlcl8zMl9iaXRzKHZtYS0+bm9kZS5zdGFydCk7Ci0JfSBlbHNlIGlmIChJTlRFTF9HRU4oaTkx NSkgPj0gNCkgeworCX0gZWxzZSBpZiAoSVNfR0VOKGk5MTUsIDQsIEdFTl9GT1JFVkVSKSkgewog CQkqYmF0Y2grKyA9IE1JX1NUT1JFX0RXT1JEX0lNTV9HRU40IHwgMSA8PCAyMjsKIAkJKmJhdGNo KysgPSAwOwogCQkqYmF0Y2grKyA9IGxvd2VyXzMyX2JpdHMoaHdzX2FkZHJlc3MoaHdzLCBycSkp OwpAQCAtMTkzLDcgKzE5Myw3IEBAIHN0YXRpYyBpbnQgZW1pdF9yZWN1cnNlX2JhdGNoKHN0cnVj dCBoYW5nICpoLAogCWk5MTVfZ2VtX2NoaXBzZXRfZmx1c2goaC0+aTkxNSk7CiAKIAlmbGFncyA9 IDA7Ci0JaWYgKElOVEVMX0dFTih2bS0+aTkxNSkgPD0gNSkKKwlpZiAoSVNfR0VOKHZtLT5pOTE1 LCBHRU5fRk9SRVZFUiwgNSkpCiAJCWZsYWdzIHw9IEk5MTVfRElTUEFUQ0hfU0VDVVJFOwogCiAJ ZXJyID0gcnEtPmVuZ2luZS0+ZW1pdF9iYl9zdGFydChycSwgdm1hLT5ub2RlLnN0YXJ0LCBQQUdF X1NJWkUsIGZsYWdzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pbnRlbF91bmNvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF91 bmNvcmUuYwppbmRleCAyZjYzNjc2NDMxNzEuLmJmYTRkNWQ0NDkzZCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3VuY29yZS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF91bmNvcmUuYwpAQCAtMTczLDcgKzE3Myw3IEBA IGludCBpbnRlbF91bmNvcmVfbGl2ZV9zZWxmdGVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUpCiAJLyogQ29uZmlybSB0aGUgdGFibGUgd2UgbG9hZCBpcyBzdGlsbCB2YWxpZCAqLwog CWVyciA9IGludGVsX2Z3X3RhYmxlX2NoZWNrKGk5MTUtPnVuY29yZS5md19kb21haW5zX3RhYmxl LAogCQkJCSAgIGk5MTUtPnVuY29yZS5md19kb21haW5zX3RhYmxlX2VudHJpZXMsCi0JCQkJICAg SU5URUxfR0VOKGk5MTUpID49IDkpOworCQkJCSAgIElTX0dFTihpOTE1LCA5LCBHRU5fRk9SRVZF UikpOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKLS0gCjIuMjcuMAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==