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=-12.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 728B3C47420 for ; Tue, 29 Sep 2020 23:35:23 +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 D418E20773 for ; Tue, 29 Sep 2020 23:35:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D418E20773 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 3866C6E488; Tue, 29 Sep 2020 23:35:22 +0000 (UTC) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 176356E480 for ; Tue, 29 Sep 2020 23:35:21 +0000 (UTC) IronPort-SDR: JsySg5h/OBYnMNmtYp9Es5sMbGmpV0+5O8fl0XBxum7Ir3oW4EcQ/dSJjCoiOGzmRzS0fefF8b /kcv4b13WkAg== X-IronPort-AV: E=McAfee;i="6000,8403,9759"; a="159651566" X-IronPort-AV: E=Sophos;i="5.77,320,1596524400"; d="scan'208";a="159651566" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Sep 2020 16:35:20 -0700 IronPort-SDR: F7mEjn27XLfNLTBPZbOHUW5nPsAZQwZ+7GyTHinp7tUMoAZUhSSNPdrlGNLo2rvhtAK8LP/xgj HzZlhu/niBxA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,320,1596524400"; d="scan'208";a="312389290" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by orsmga006.jf.intel.com with SMTP; 29 Sep 2020 16:35:17 -0700 Received: by stinkbox (sSMTP sendmail emulation); Wed, 30 Sep 2020 02:35:17 +0300 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Date: Wed, 30 Sep 2020 02:34:48 +0300 Message-Id: <20200929233449.32323-11-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200929233449.32323-1-ville.syrjala@linux.intel.com> References: <20200929233449.32323-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v2 10/11] drm/i915: Plumb crtc_state to link training 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" RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkdl dCByaWQgb2YgbW9kZSBjcnRjLT5jb25maWcgdXNhZ2UsIGFuZCBzb21lIGFkLWhvYyBpbnRlbF9k cCBzdGF0ZQp1c2FnZSBieSBwbHVtYmluZyB0aGUgY3J0YyBzdGF0ZSBhbGwgdGhlIHdheSBkb3du IHRvIHRoZSBsaW5rIHRyYWluaW5nCmNvZGUuCgpVbmZvcnR1bmF0ZWx5IHdlIGRvIGhhdmUgdG8g a2VlcCBzb21lIGNhY2hlZCBzdGF0ZSBpbiBpbnRlbF9kcCBzbwp0aGF0IHdlIGNhbiBkbyB0aGUg ImRvZXMgdGhlIGxpbmsgbmVlZCByZXRyYWluaW5nPyIgY2hlY2tzIGZyb20KdGhlIHNob3J0IGhw ZCBoYW5kbGVyLgoKdjI6IEFkZCBpbnRlbF9jcnRjX3N0YXRlIGZvcndhcmQgZGVjbGFyYXRpb24K djM6IERvbid0IGtpbGwgdGhlIFBIWSB0ZXN0IGNvZGUgdG90YWxseSBzaW5jZSBpdCdzCiAgICBu b3cgaW4gdGhlIGhvdHBsdWcgd29yayB3aGVyZSB3ZSBjYW4gZ2V0IGF0IHRoZSBzdGF0ZXMKClNp Z25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5j b20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYyAgICAgIHwg NDE2ICsrKysrKysrKy0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kZGkuaCAgICAgIHwgICA2ICstCiAuLi4vZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5 X3R5cGVzLmggICAgfCAgMTcgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZHAuYyAgICAgICB8IDEyMyArKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZHAuaCAgICAgICB8ICAxMCArLQogLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBfbGlu a190cmFpbmluZy5jIHwgMTAyICsrKy0tCiAuLi4vZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF9s aW5rX3RyYWluaW5nLmggfCAgIDggKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZHBpb19waHkuYyB8ICAyMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kcGlvX3BoeS5oIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf aGRtaS5jICAgICB8ICAgNyArLQogMTAgZmlsZXMgY2hhbmdlZCwgMzg4IGluc2VydGlvbnMoKyks IDMyNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGku YwppbmRleCA3MDMyYzM2NzA3NWEuLmNkZjNlNTU0MDQ4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2RkaS5jCkBAIC0xMDM0LDcgKzEwMzQsOCBAQCBjbmxfZ2V0X2J1Zl90 cmFuc19lZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVzKQog fQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLWljbF9nZXRfY29t Ym9fYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCB0eXBl LCBpbnQgcmF0ZSwKK2ljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAogCQkJICAgICBpbnQgKm5fZW50cmllcykKIHsKIAkqbl9lbnRyaWVzID0gQVJS QVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7CkBAIC0xMDQyLDcg KzEwNDMsOCBAQCBpY2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLCBpbnQgdHlwZSwgaW50IHJhdGUsCiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgY25sX2RkaV9idWZfdHJhbnMgKgotaWNsX2dldF9jb21ib19idWZfdHJhbnNfZHAoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCB0eXBlLCBpbnQgcmF0ZSwKK2ljbF9nZXRfY29t Ym9fYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkgICBpbnQgKm5fZW50 cmllcykKIHsKIAkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFu c2xhdGlvbnNfZHBfaGJyMik7CkBAIC0xMDUwLDEyICsxMDUyLDEzIEBAIGljbF9nZXRfY29tYm9f YnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgdHlwZSwgaW50 IHJhdGUsCiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgotaWNs X2dldF9jb21ib19idWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBp bnQgdHlwZSwgaW50IHJhdGUsCitpY2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19lZHAoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCiAJCQkgICAgaW50ICpuX2VudHJpZXMpCiB7CiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CiAKLQlp ZiAocmF0ZSA+IDU0MDAwMCkgeworCWlmIChjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrID4gNTQwMDAw KSB7CiAJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0 aW9uc19lZHBfaGJyMyk7CiAJCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNf ZWRwX2hicjM7CiAJfSBlbHNlIGlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7CkBA IC0xMDYzLDIzICsxMDY2LDI1IEBAIGljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2VkcChzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50IHR5cGUsIGludCByYXRlLAogCQlyZXR1cm4gaWNs X2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIyOwogCX0KIAotCXJldHVybiBpY2xf Z2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVyLCB0eXBlLCByYXRlLCBuX2VudHJpZXMpOwor CXJldHVybiBpY2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBu X2VudHJpZXMpOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoK LWljbF9nZXRfY29tYm9fYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBp bnQgdHlwZSwgaW50IHJhdGUsCitpY2xfZ2V0X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKKwkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAogCQkJaW50ICpuX2VudHJpZXMpCiB7Ci0JaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVU X0hETUkpCi0JCXJldHVybiBpY2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIHR5 cGUsIHJhdGUsIG5fZW50cmllcyk7Ci0JZWxzZSBpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQ KQotCQlyZXR1cm4gaWNsX2dldF9jb21ib19idWZfdHJhbnNfZWRwKGVuY29kZXIsIHR5cGUsIHJh dGUsIG5fZW50cmllcyk7CisJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5U RUxfT1VUUFVUX0hETUkpKQorCQlyZXR1cm4gaWNsX2dldF9jb21ib19idWZfdHJhbnNfaGRtaShl bmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOworCWVsc2UgaWYgKGludGVsX2NydGNfaGFz X3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCisJCXJldHVybiBpY2xfZ2V0X2Nv bWJvX2J1Zl90cmFuc19lZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKIAllbHNl Ci0JCXJldHVybiBpY2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVyLCB0eXBlLCByYXRl LCBuX2VudHJpZXMpOworCQlyZXR1cm4gaWNsX2dldF9jb21ib19idWZfdHJhbnNfZHAoZW5jb2Rl ciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBpY2xf bWdfcGh5X2RkaV9idWZfdHJhbnMgKgotaWNsX2dldF9tZ19idWZfdHJhbnNfaGRtaShzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50IHR5cGUsIGludCByYXRlLAoraWNsX2dldF9tZ19i dWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkgIGludCAqbl9lbnRyaWVz KQogewogCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9tZ19waHlfZGRpX3RyYW5zbGF0aW9u c19oZG1pKTsKQEAgLTEwODcsMTAgKzEwOTIsMTEgQEAgaWNsX2dldF9tZ19idWZfdHJhbnNfaGRt aShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50IHR5cGUsIGludCByYXRlLAogfQog CiBzdGF0aWMgY29uc3Qgc3RydWN0IGljbF9tZ19waHlfZGRpX2J1Zl90cmFucyAqCi1pY2xfZ2V0 X21nX2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50IHR5cGUs IGludCByYXRlLAoraWNsX2dldF9tZ19idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCisJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK IAkJCWludCAqbl9lbnRyaWVzKQogewotCWlmIChyYXRlID4gMjcwMDAwKSB7CisJaWYgKGNydGNf c3RhdGUtPnBvcnRfY2xvY2sgPiAyNzAwMDApIHsKIAkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUo aWNsX21nX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hicjJfaGJyMyk7CiAJCXJldHVybiBpY2xfbWdf cGh5X2RkaV90cmFuc2xhdGlvbnNfaGJyMl9oYnIzOwogCX0gZWxzZSB7CkBAIC0xMTAwLDE3ICsx MTA2LDE5IEBAIGljbF9nZXRfbWdfYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLCBpbnQgdHlwZSwgaW50IHJhdGUsCiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWNs X21nX3BoeV9kZGlfYnVmX3RyYW5zICoKLWljbF9nZXRfbWdfYnVmX3RyYW5zKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLCBpbnQgdHlwZSwgaW50IHJhdGUsCitpY2xfZ2V0X21nX2J1Zl90 cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJICAgICBjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJICAgICBpbnQgKm5fZW50cmllcykKIHsK LQlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkKLQkJcmV0dXJuIGljbF9nZXRfbWdfYnVm X3RyYW5zX2hkbWkoZW5jb2RlciwgdHlwZSwgcmF0ZSwgbl9lbnRyaWVzKTsKKwlpZiAoaW50ZWxf Y3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfSERNSSkpCisJCXJldHVybiBp Y2xfZ2V0X21nX2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7 CiAJZWxzZQotCQlyZXR1cm4gaWNsX2dldF9tZ19idWZfdHJhbnNfZHAoZW5jb2RlciwgdHlwZSwg cmF0ZSwgbl9lbnRyaWVzKTsKKwkJcmV0dXJuIGljbF9nZXRfbWdfYnVmX3RyYW5zX2RwKGVuY29k ZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY25s X2RkaV9idWZfdHJhbnMgKgotZWhsX2dldF9jb21ib19idWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50IHR5cGUsIGludCByYXRlLAorZWhsX2dldF9jb21ib19i dWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICAgY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkgICAgIGludCAqbl9l bnRyaWVzKQogewogCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3Ry YW5zbGF0aW9uc19oZG1pKTsKQEAgLTExMTgsNyArMTEyNiw4IEBAIGVobF9nZXRfY29tYm9fYnVm X3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCB0eXBlLCBpbnQg cmF0ZSwKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCi1laGxf Z2V0X2NvbWJvX2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50 IHR5cGUsIGludCByYXRlLAorZWhsX2dldF9jb21ib19idWZfdHJhbnNfZHAoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCisJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKIAkJCSAgIGludCAqbl9lbnRyaWVzKQogewogCSpuX2VudHJpZXMgPSBBUlJB WV9TSVpFKGVobF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcCk7CkBAIC0xMTI2LDEzICsx MTM1LDE0IEBAIGVobF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLCBpbnQgdHlwZSwgaW50IHJhdGUsCiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg Y25sX2RkaV9idWZfdHJhbnMgKgotZWhsX2dldF9jb21ib19idWZfdHJhbnNfZWRwKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgdHlwZSwgaW50IHJhdGUsCitlaGxfZ2V0X2NvbWJv X2J1Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkgICAgY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkgICAgaW50ICpuX2Vu dHJpZXMpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShl bmNvZGVyLT5iYXNlLmRldik7CiAKIAlpZiAoZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykg ewotCQlpZiAocmF0ZSA+IDU0MDAwMCkgeworCQlpZiAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+ IDU0MDAwMCkgewogCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlf dHJhbnNsYXRpb25zX2VkcF9oYnIzKTsKIAkJCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFu c2xhdGlvbnNfZWRwX2hicjM7CiAJCX0gZWxzZSB7CkBAIC0xMTQxLDIzICsxMTUxLDI1IEBAIGVo bF9nZXRfY29tYm9fYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rlciwg aW50IHR5cGUsIGludCByYXRlLAogCQl9CiAJfQogCi0JcmV0dXJuIGVobF9nZXRfY29tYm9fYnVm X3RyYW5zX2RwKGVuY29kZXIsIHR5cGUsIHJhdGUsIG5fZW50cmllcyk7CisJcmV0dXJuIGVobF9n ZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7CiB9 CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgotZWhsX2dldF9jb21i b19idWZfdHJhbnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCB0eXBlLCBpbnQg cmF0ZSwKK2VobF9nZXRfY29tYm9fYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAorCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQlp bnQgKm5fZW50cmllcykKIHsKLQlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkKLQkJcmV0 dXJuIGVobF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgdHlwZSwgcmF0ZSwgbl9l bnRyaWVzKTsKLQllbHNlIGlmICh0eXBlID09IElOVEVMX09VVFBVVF9FRFApCi0JCXJldHVybiBl aGxfZ2V0X2NvbWJvX2J1Zl90cmFuc19lZHAoZW5jb2RlciwgdHlwZSwgcmF0ZSwgbl9lbnRyaWVz KTsKKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfSERN SSkpCisJCXJldHVybiBlaGxfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNf c3RhdGUsIG5fZW50cmllcyk7CisJZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0 YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkKKwkJcmV0dXJuIGVobF9nZXRfY29tYm9fYnVmX3RyYW5z X2VkcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwogCWVsc2UKLQkJcmV0dXJuIGVo bF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVuY29kZXIsIHR5cGUsIHJhdGUsIG5fZW50cmllcyk7 CisJCXJldHVybiBlaGxfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVyLCBjcnRjX3N0YXRl LCBuX2VudHJpZXMpOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5z ICoKLXRnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsIGludCB0eXBlLCBpbnQgcmF0ZSwKK3RnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWko c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJICAgICBpbnQgKm5fZW50cmllcykKIHsKIAkq bl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRt aSk7CkBAIC0xMTY1LDEyICsxMTc3LDEzIEBAIHRnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWko c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCB0eXBlLCBpbnQgcmF0ZSwKIH0KIAog c3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCi10Z2xfZ2V0X2NvbWJvX2J1 Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50IHR5cGUsIGludCBy YXRlLAordGdsX2dldF9jb21ib19idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCisJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK IAkJCSAgIGludCAqbl9lbnRyaWVzKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwogCi0JaWYgKHJhdGUgPiAyNzAwMDAp IHsKKwlpZiAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+IDI3MDAwMCkgewogCQlpZiAoSVNfVEdM X1UoZGV2X3ByaXYpIHx8IElTX1RHTF9ZKGRldl9wcml2KSkgewogCQkJKm5fZW50cmllcyA9IEFS UkFZX1NJWkUodGdsX3V5X2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjIpOwogCQkJ cmV0dXJuIHRnbF91eV9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyOwpAQCAtMTE4 NSwxMyArMTE5OCwxNCBAQCB0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwgaW50IHR5cGUsIGludCByYXRlLAogfQogCiBzdGF0aWMgY29uc3Qg c3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLXRnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2VkcChz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50IHR5cGUsIGludCByYXRlLAordGdsX2dl dF9jb21ib19idWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJ ICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJICAgIGlu dCAqbl9lbnRyaWVzKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwogCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBl bmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7CiAKLQlpZiAocmF0ZSA+IDU0MDAwMCkgeworCWlmIChj cnRjX3N0YXRlLT5wb3J0X2Nsb2NrID4gNTQwMDAwKSB7CiAJCSpuX2VudHJpZXMgPSBBUlJBWV9T SVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMyk7CiAJCXJldHVybiBp Y2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjM7CiAJfSBlbHNlIGlmIChkZXZf cHJpdi0+dmJ0LmVkcC5ob2JsICYmICFpbnRlbF9kcC0+aG9ibF9mYWlsZWQpIHsKQEAgLTEyMDIs MjMgKzEyMTYsMjUgQEAgdGdsX2dldF9jb21ib19idWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLCBpbnQgdHlwZSwgaW50IHJhdGUsCiAJCXJldHVybiBpY2xfY29tYm9f cGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjI7CiAJfQogCi0JcmV0dXJuIHRnbF9nZXRfY29t Ym9fYnVmX3RyYW5zX2RwKGVuY29kZXIsIHR5cGUsIHJhdGUsIG5fZW50cmllcyk7CisJcmV0dXJu IHRnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmll cyk7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgotdGdsX2dl dF9jb21ib19idWZfdHJhbnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCB0eXBl LCBpbnQgcmF0ZSwKK3RnbF9nZXRfY29tYm9fYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAorCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs CiAJCQlpbnQgKm5fZW50cmllcykKIHsKLQlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkK LQkJcmV0dXJuIHRnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgdHlwZSwgcmF0 ZSwgbl9lbnRyaWVzKTsKLQllbHNlIGlmICh0eXBlID09IElOVEVMX09VVFBVVF9FRFApCi0JCXJl dHVybiB0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19lZHAoZW5jb2RlciwgdHlwZSwgcmF0ZSwgbl9l bnRyaWVzKTsKKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQ VVRfSERNSSkpCisJCXJldHVybiB0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKGVuY29kZXIs IGNydGNfc3RhdGUsIG5fZW50cmllcyk7CisJZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShj cnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkKKwkJcmV0dXJuIHRnbF9nZXRfY29tYm9fYnVm X3RyYW5zX2VkcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwogCWVsc2UKLQkJcmV0 dXJuIHRnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVuY29kZXIsIHR5cGUsIHJhdGUsIG5fZW50 cmllcyk7CisJCXJldHVybiB0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVyLCBjcnRj X3N0YXRlLCBuX2VudHJpZXMpOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHRnbF9ka2xfcGh5 X2RkaV9idWZfdHJhbnMgKgotdGdsX2dldF9ka2xfYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsIGludCB0eXBlLCBpbnQgcmF0ZSwKK3RnbF9nZXRfZGtsX2J1Zl90 cmFuc19oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkgICBpbnQgKm5fZW50cmllcykK IHsKIAkqbl9lbnRyaWVzID0gQVJSQVlfU0laRSh0Z2xfZGtsX3BoeV9oZG1pX2RkaV90cmFucyk7 CkBAIC0xMjI2LDEwICsxMjQyLDExIEBAIHRnbF9nZXRfZGtsX2J1Zl90cmFuc19oZG1pKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgdHlwZSwgaW50IHJhdGUsCiB9CiAKIHN0YXRp YyBjb25zdCBzdHJ1Y3QgdGdsX2RrbF9waHlfZGRpX2J1Zl90cmFucyAqCi10Z2xfZ2V0X2RrbF9i dWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCB0eXBlLCBpbnQg cmF0ZSwKK3RnbF9nZXRfZGtsX2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKKwkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJ CSBpbnQgKm5fZW50cmllcykKIHsKLQlpZiAocmF0ZSA+IDI3MDAwMCkgeworCWlmIChjcnRjX3N0 YXRlLT5wb3J0X2Nsb2NrID4gMjcwMDAwKSB7CiAJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHRn bF9ka2xfcGh5X2RwX2RkaV90cmFuc19oYnIyKTsKIAkJcmV0dXJuIHRnbF9ka2xfcGh5X2RwX2Rk aV90cmFuc19oYnIyOwogCX0gZWxzZSB7CkBAIC0xMjM5LDE2ICsxMjU2LDE4IEBAIHRnbF9nZXRf ZGtsX2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50IHR5cGUs IGludCByYXRlLAogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHRnbF9ka2xfcGh5X2RkaV9idWZf dHJhbnMgKgotdGdsX2dldF9ka2xfYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLCBpbnQgdHlwZSwgaW50IHJhdGUsCit0Z2xfZ2V0X2RrbF9idWZfdHJhbnMoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCisJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAogCQkgICAgICBpbnQgKm5fZW50cmllcykKIHsKLQlpZiAodHlwZSA9 PSBJTlRFTF9PVVRQVVRfSERNSSkKLQkJcmV0dXJuIHRnbF9nZXRfZGtsX2J1Zl90cmFuc19oZG1p KGVuY29kZXIsIHR5cGUsIHJhdGUsIG5fZW50cmllcyk7CisJaWYgKGludGVsX2NydGNfaGFzX3R5 cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQorCQlyZXR1cm4gdGdsX2dldF9ka2xf YnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKIAllbHNlCi0J CXJldHVybiB0Z2xfZ2V0X2RrbF9idWZfdHJhbnNfZHAoZW5jb2RlciwgdHlwZSwgcmF0ZSwgbl9l bnRyaWVzKTsKKwkJcmV0dXJuIHRnbF9nZXRfZGtsX2J1Zl90cmFuc19kcChlbmNvZGVyLCBjcnRj X3N0YXRlLCBuX2VudHJpZXMpOwogfQogCi1zdGF0aWMgaW50IGludGVsX2RkaV9oZG1pX2xldmVs KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQorc3RhdGljIGludCBpbnRlbF9kZGlfaGRt aV9sZXZlbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCQljb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKIAlpbnQgbl9lbnRyaWVz LCBsZXZlbCwgZGVmYXVsdF9lbnRyeTsKQEAgLTEyNTYsMTkgKzEyNzUsMTUgQEAgc3RhdGljIGlu dCBpbnRlbF9kZGlfaGRtaV9sZXZlbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIAog CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyKSB7CiAJCWlmIChpbnRlbF9waHlfaXNfY29t Ym8oZGV2X3ByaXYsIHBoeSkpCi0JCQl0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFucyhlbmNvZGVyLCBJ TlRFTF9PVVRQVVRfSERNSSwKLQkJCQkJCTAsICZuX2VudHJpZXMpOworCQkJdGdsX2dldF9jb21i b19idWZfdHJhbnNfaGRtaShlbmNvZGVyLCBjcnRjX3N0YXRlLCAmbl9lbnRyaWVzKTsKIAkJZWxz ZQotCQkJdGdsX2dldF9ka2xfYnVmX3RyYW5zKGVuY29kZXIsIElOVEVMX09VVFBVVF9IRE1JLCAw LAotCQkJCQkgICAgICAmbl9lbnRyaWVzKTsKKwkJCXRnbF9nZXRfZGtsX2J1Zl90cmFuc19oZG1p KGVuY29kZXIsIGNydGNfc3RhdGUsICZuX2VudHJpZXMpOwogCQlkZWZhdWx0X2VudHJ5ID0gbl9l bnRyaWVzIC0gMTsKIAl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPT0gMTEpIHsKIAkJ aWYgKGludGVsX3BoeV9pc19jb21ibyhkZXZfcHJpdiwgcGh5KSkKLQkJCWljbF9nZXRfY29tYm9f YnVmX3RyYW5zKGVuY29kZXIsIElOVEVMX09VVFBVVF9IRE1JLAotCQkJCQkJMCwgJm5fZW50cmll cyk7CisJCQlpY2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3RhdGUs ICZuX2VudHJpZXMpOwogCQllbHNlCi0JCQlpY2xfZ2V0X21nX2J1Zl90cmFucyhlbmNvZGVyLCBJ TlRFTF9PVVRQVVRfSERNSSwgMCwKLQkJCQkJICAgICAmbl9lbnRyaWVzKTsKKwkJCWljbF9nZXRf bWdfYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5fZW50cmllcyk7CiAJCWRl ZmF1bHRfZW50cnkgPSBuX2VudHJpZXMgLSAxOwogCX0gZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShk ZXZfcHJpdikpIHsKIAkJY25sX2dldF9idWZfdHJhbnNfaGRtaShlbmNvZGVyLCAmbl9lbnRyaWVz KTsKQEAgLTE1OTUsMTQgKzE2MTAsMTUgQEAgdm9pZCBoc3dfZmRpX2xpbmtfdHJhaW4oc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCSAgICAgICBEUF9UUF9DVExfRU5BQkxFKTsKIH0K IAotc3RhdGljIHZvaWQgaW50ZWxfZGRpX2luaXRfZHBfYnVmX3JlZyhzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlcikKK3N0YXRpYyB2b2lkIGludGVsX2RkaV9pbml0X2RwX2J1Zl9yZWcoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkJICAgICAgY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7CiAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9 IGVuY190b19pbnRlbF9kcChlbmNvZGVyKTsKIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpk aWdfcG9ydCA9IGVuY190b19kaWdfcG9ydChlbmNvZGVyKTsKIAogCWludGVsX2RwLT5EUCA9IGRp Z19wb3J0LT5zYXZlZF9wb3J0X2JpdHMgfAogCQlERElfQlVGX0NUTF9FTkFCTEUgfCBERElfQlVG X1RSQU5TX1NFTEVDVCgwKTsKLQlpbnRlbF9kcC0+RFAgfD0gRERJX1BPUlRfV0lEVEgoaW50ZWxf ZHAtPmxhbmVfY291bnQpOworCWludGVsX2RwLT5EUCB8PSBERElfUE9SVF9XSURUSChjcnRjX3N0 YXRlLT5sYW5lX2NvdW50KTsKIH0KIAogc3RhdGljIGludCBpY2xfY2FsY190YnRfcGxsX2xpbmso c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LApAQCAtMjI2NiwxMyArMjI4MiwxNCBA QCBzdGF0aWMgdm9pZCBfc2tsX2RkaV9zZXRfaWJvb3N0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIH0KIAogc3RhdGljIHZvaWQgc2tsX2RkaV9zZXRfaWJvb3N0KHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJICAgICAgIGludCBsZXZlbCwgZW51bSBpbnRlbF9v dXRwdXRfdHlwZSB0eXBlKQorCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAorCQkJICAgICAgIGludCBsZXZlbCkKIHsKIAlzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICpkaWdfcG9ydCA9IGVuY190b19kaWdfcG9ydChlbmNvZGVyKTsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsK IAl1OCBpYm9vc3Q7CiAKLQlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkKKwlpZiAoaW50 ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfSERNSSkpCiAJCWlib29z dCA9IGludGVsX2Jpb3NfaGRtaV9ib29zdF9sZXZlbChlbmNvZGVyKTsKIAllbHNlCiAJCWlib29z dCA9IGludGVsX2Jpb3NfZHBfYm9vc3RfbGV2ZWwoZW5jb2Rlcik7CkBAIC0yMjgxLDE0ICsyMjk4 LDEyIEBAIHN0YXRpYyB2b2lkIHNrbF9kZGlfc2V0X2lib29zdChzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKIAkJY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKmRkaV90cmFuc2xhdGlv bnM7CiAJCWludCBuX2VudHJpZXM7CiAKLQkJaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0hETUkp CisJCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1J KSkKIAkJCWRkaV90cmFuc2xhdGlvbnMgPSBpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19oZG1pKGVu Y29kZXIsICZuX2VudHJpZXMpOwotCQllbHNlIGlmICh0eXBlID09IElOVEVMX09VVFBVVF9FRFAp Ci0JCQlkZGlfdHJhbnNsYXRpb25zID0gaW50ZWxfZGRpX2dldF9idWZfdHJhbnNfZWRwKGVuY29k ZXIsCi0JCQkJCQkJCSAgICAgICAmbl9lbnRyaWVzKTsKKwkJZWxzZSBpZiAoaW50ZWxfY3J0Y19o YXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkKKwkJCWRkaV90cmFuc2xhdGlv bnMgPSBpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19lZHAoZW5jb2RlciwgJm5fZW50cmllcyk7CiAJ CWVsc2UKLQkJCWRkaV90cmFuc2xhdGlvbnMgPSBpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19kcChl bmNvZGVyLAotCQkJCQkJCQkgICAgICAmbl9lbnRyaWVzKTsKKwkJCWRkaV90cmFuc2xhdGlvbnMg PSBpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCAmbl9lbnRyaWVzKTsKIAogCQlp ZiAoZHJtX1dBUk5fT05fT05DRSgmZGV2X3ByaXYtPmRybSwgIWRkaV90cmFuc2xhdGlvbnMpKQog CQkJcmV0dXJuOwpAQCAtMjMxMSwxNiArMjMyNiwxNyBAQCBzdGF0aWMgdm9pZCBza2xfZGRpX3Nl dF9pYm9vc3Qoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiB9CiAKIHN0YXRpYyB2b2lk IGJ4dF9kZGlfdnN3aW5nX3NlcXVlbmNlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAot CQkJCSAgICBpbnQgbGV2ZWwsIGVudW0gaW50ZWxfb3V0cHV0X3R5cGUgdHlwZSkKKwkJCQkgICAg Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQkJICAgIGludCBs ZXZlbCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVu Y29kZXItPmJhc2UuZGV2KTsKIAljb25zdCBzdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgKmRkaV90 cmFuc2xhdGlvbnM7CiAJZW51bSBwb3J0IHBvcnQgPSBlbmNvZGVyLT5wb3J0OwogCWludCBuX2Vu dHJpZXM7CiAKLQlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkKKwlpZiAoaW50ZWxfY3J0 Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfSERNSSkpCiAJCWRkaV90cmFuc2xh dGlvbnMgPSBieHRfZ2V0X2J1Zl90cmFuc19oZG1pKGVuY29kZXIsICZuX2VudHJpZXMpOwotCWVs c2UgaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkKKwllbHNlIGlmIChpbnRlbF9jcnRjX2hh c190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9FRFApKQogCQlkZGlfdHJhbnNsYXRpb25z ID0gYnh0X2dldF9idWZfdHJhbnNfZWRwKGVuY29kZXIsICZuX2VudHJpZXMpOwogCWVsc2UKIAkJ ZGRpX3RyYW5zbGF0aW9ucyA9IGJ4dF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsICZuX2VudHJp ZXMpOwpAQCAtMjMzNyw3ICsyMzUzLDggQEAgc3RhdGljIHZvaWQgYnh0X2RkaV92c3dpbmdfc2Vx dWVuY2Uoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCQkJICAgICBkZGlfdHJhbnNs YXRpb25zW2xldmVsXS5kZWVtcGhhc2lzKTsKIH0KIAotc3RhdGljIHU4IGludGVsX2RkaV9kcF92 b2x0YWdlX21heChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQorc3RhdGljIHU4IGludGVsX2Rk aV9kcF92b2x0YWdlX21heChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAorCQkJCSAgIGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewogCXN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyID0gJmRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+YmFzZTsKIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2 KTsKQEAgLTIzNDcsMzMgKzIzNjQsMjggQEAgc3RhdGljIHU4IGludGVsX2RkaV9kcF92b2x0YWdl X21heChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCiAJaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTIpIHsKIAkJaWYgKGludGVsX3BoeV9pc19jb21ibyhkZXZfcHJpdiwgcGh5KSkKLQkJ CXRnbF9nZXRfY29tYm9fYnVmX3RyYW5zKGVuY29kZXIsIGVuY29kZXItPnR5cGUsCi0JCQkJCQlp bnRlbF9kcC0+bGlua19yYXRlLCAmbl9lbnRyaWVzKTsKKwkJCXRnbF9nZXRfY29tYm9fYnVmX3Ry YW5zKGVuY29kZXIsIGNydGNfc3RhdGUsICZuX2VudHJpZXMpOwogCQllbHNlCi0JCQl0Z2xfZ2V0 X2RrbF9idWZfdHJhbnMoZW5jb2RlciwgZW5jb2Rlci0+dHlwZSwKLQkJCQkJICAgICAgaW50ZWxf ZHAtPmxpbmtfcmF0ZSwgJm5fZW50cmllcyk7CisJCQl0Z2xfZ2V0X2RrbF9idWZfdHJhbnMoZW5j b2RlciwgY3J0Y19zdGF0ZSwgJm5fZW50cmllcyk7CiAJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID09IDExKSB7CiAJCWlmIChJU19FTEtIQVJUTEFLRShkZXZfcHJpdikpCi0JCQllaGxf Z2V0X2NvbWJvX2J1Zl90cmFucyhlbmNvZGVyLCBlbmNvZGVyLT50eXBlLAotCQkJCQkJaW50ZWxf ZHAtPmxpbmtfcmF0ZSwgJm5fZW50cmllcyk7CisJCQllaGxfZ2V0X2NvbWJvX2J1Zl90cmFucyhl bmNvZGVyLCBjcnRjX3N0YXRlLCAmbl9lbnRyaWVzKTsKIAkJZWxzZSBpZiAoaW50ZWxfcGh5X2lz X2NvbWJvKGRldl9wcml2LCBwaHkpKQotCQkJaWNsX2dldF9jb21ib19idWZfdHJhbnMoZW5jb2Rl ciwgZW5jb2Rlci0+dHlwZSwKLQkJCQkJCWludGVsX2RwLT5saW5rX3JhdGUsICZuX2VudHJpZXMp OworCQkJaWNsX2dldF9jb21ib19idWZfdHJhbnMoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5fZW50 cmllcyk7CiAJCWVsc2UKLQkJCWljbF9nZXRfbWdfYnVmX3RyYW5zKGVuY29kZXIsIGVuY29kZXIt PnR5cGUsCi0JCQkJCSAgICAgaW50ZWxfZHAtPmxpbmtfcmF0ZSwgJm5fZW50cmllcyk7CisJCQlp Y2xfZ2V0X21nX2J1Zl90cmFucyhlbmNvZGVyLCBjcnRjX3N0YXRlLCAmbl9lbnRyaWVzKTsKIAl9 IGVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKSB7Ci0JCWlmIChlbmNvZGVyLT50eXBl ID09IElOVEVMX09VVFBVVF9FRFApCisJCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3Rh dGUsIElOVEVMX09VVFBVVF9FRFApKQogCQkJY25sX2dldF9idWZfdHJhbnNfZWRwKGVuY29kZXIs ICZuX2VudHJpZXMpOwogCQllbHNlCiAJCQljbmxfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCAm bl9lbnRyaWVzKTsKIAl9IGVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7Ci0JCWlmIChl bmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFApCisJCWlmIChpbnRlbF9jcnRjX2hhc190 eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9FRFApKQogCQkJYnh0X2dldF9idWZfdHJhbnNf ZWRwKGVuY29kZXIsICZuX2VudHJpZXMpOwogCQllbHNlCiAJCQlieHRfZ2V0X2J1Zl90cmFuc19k cChlbmNvZGVyLCAmbl9lbnRyaWVzKTsKIAl9IGVsc2UgewotCQlpZiAoZW5jb2Rlci0+dHlwZSA9 PSBJTlRFTF9PVVRQVVRfRURQKQorCQlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRl LCBJTlRFTF9PVVRQVVRfRURQKSkKIAkJCWludGVsX2RkaV9nZXRfYnVmX3RyYW5zX2VkcChlbmNv ZGVyLCAmbl9lbnRyaWVzKTsKIAkJZWxzZQogCQkJaW50ZWxfZGRpX2dldF9idWZfdHJhbnNfZHAo ZW5jb2RlciwgJm5fZW50cmllcyk7CkBAIC0yNDAwLDcgKzI0MTIsOCBAQCBzdGF0aWMgdTggaW50 ZWxfZGRpX2RwX3ByZWVtcGhfbWF4KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiB9CiAKIHN0 YXRpYyB2b2lkIGNubF9kZGlfdnN3aW5nX3Byb2dyYW0oc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCi0JCQkJICAgaW50IGxldmVsLCBlbnVtIGludGVsX291dHB1dF90eXBlIHR5cGUpCisJ CQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQkJICAg aW50IGxldmVsKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwogCWNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAq ZGRpX3RyYW5zbGF0aW9uczsKQEAgLTI0MDgsOSArMjQyMSw5IEBAIHN0YXRpYyB2b2lkIGNubF9k ZGlfdnN3aW5nX3Byb2dyYW0oc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJaW50IG5f ZW50cmllcywgbG47CiAJdTMyIHZhbDsKIAotCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9IRE1J KQorCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1J KSkKIAkJZGRpX3RyYW5zbGF0aW9ucyA9IGNubF9nZXRfYnVmX3RyYW5zX2hkbWkoZW5jb2Rlciwg Jm5fZW50cmllcyk7Ci0JZWxzZSBpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKQorCWVsc2Ug aWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCiAJ CWRkaV90cmFuc2xhdGlvbnMgPSBjbmxfZ2V0X2J1Zl90cmFuc19lZHAoZW5jb2RlciwgJm5fZW50 cmllcyk7CiAJZWxzZQogCQlkZGlfdHJhbnNsYXRpb25zID0gY25sX2dldF9idWZfdHJhbnNfZHAo ZW5jb2RlciwgJm5fZW50cmllcyk7CkBAIC0yNDY0LDIyICsyNDc3LDE2IEBAIHN0YXRpYyB2b2lk IGNubF9kZGlfdnN3aW5nX3Byb2dyYW0oc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiB9 CiAKIHN0YXRpYyB2b2lkIGNubF9kZGlfdnN3aW5nX3NlcXVlbmNlKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAotCQkJCSAgICBpbnQgbGV2ZWwsIGVudW0gaW50ZWxfb3V0cHV0X3R5cGUg dHlwZSkKKwkJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs CisJCQkJICAgIGludCBsZXZlbCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKIAllbnVtIHBvcnQgcG9ydCA9IGVuY29k ZXItPnBvcnQ7CiAJaW50IHdpZHRoLCByYXRlLCBsbjsKIAl1MzIgdmFsOwogCi0JaWYgKHR5cGUg PT0gSU5URUxfT1VUUFVUX0hETUkpIHsKLQkJd2lkdGggPSA0OwotCQlyYXRlID0gMDsgLyogUmF0 ZSBpcyBhbHdheXMgPCB0aGFuIDZHSHogZm9yIEhETUkgKi8KLQl9IGVsc2UgewotCQlzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOwotCi0JCXdpZHRo ID0gaW50ZWxfZHAtPmxhbmVfY291bnQ7Ci0JCXJhdGUgPSBpbnRlbF9kcC0+bGlua19yYXRlOwot CX0KKwl3aWR0aCA9IGNydGNfc3RhdGUtPmxhbmVfY291bnQ7CisJcmF0ZSA9IGNydGNfc3RhdGUt PnBvcnRfY2xvY2s7CiAKIAkvKgogCSAqIDEuIElmIHBvcnQgdHlwZSBpcyBlRFAgb3IgRFAsCkBA IC0yNDg3LDEwICsyNDk0LDEwIEBAIHN0YXRpYyB2b2lkIGNubF9kZGlfdnN3aW5nX3NlcXVlbmNl KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCSAqIGVsc2UgY2xlYXIgdG8gMGIuCiAJ ICovCiAJdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgQ05MX1BPUlRfUENTX0RXMV9MTjAo cG9ydCkpOwotCWlmICh0eXBlICE9IElOVEVMX09VVFBVVF9IRE1JKQotCQl2YWwgfD0gQ09NTU9O X0tFRVBFUl9FTjsKLQllbHNlCisJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwg SU5URUxfT1VUUFVUX0hETUkpKQogCQl2YWwgJj0gfkNPTU1PTl9LRUVQRVJfRU47CisJZWxzZQor CQl2YWwgfD0gQ09NTU9OX0tFRVBFUl9FTjsKIAlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgQ05M X1BPUlRfUENTX0RXMV9HUlAocG9ydCksIHZhbCk7CiAKIAkvKiAyLiBQcm9ncmFtIGxvYWRnZW4g c2VsZWN0ICovCkBAIC0yNTIyLDcgKzI1MjksNyBAQCBzdGF0aWMgdm9pZCBjbmxfZGRpX3Zzd2lu Z19zZXF1ZW5jZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlpbnRlbF9kZV93cml0 ZShkZXZfcHJpdiwgQ05MX1BPUlRfVFhfRFc1X0dSUChwb3J0KSwgdmFsKTsKIAogCS8qIDUuIFBy b2dyYW0gc3dpbmcgYW5kIGRlLWVtcGhhc2lzICovCi0JY25sX2RkaV92c3dpbmdfcHJvZ3JhbShl bmNvZGVyLCBsZXZlbCwgdHlwZSk7CisJY25sX2RkaV92c3dpbmdfcHJvZ3JhbShlbmNvZGVyLCBj cnRjX3N0YXRlLCBsZXZlbCk7CiAKIAkvKiA2LiBTZXQgdHJhaW5pbmcgZW5hYmxlIHRvIHRyaWdn ZXIgdXBkYXRlICovCiAJdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgQ05MX1BPUlRfVFhf RFc1X0xOMChwb3J0KSk7CkBAIC0yNTMxLDIzICsyNTM4LDIxIEBAIHN0YXRpYyB2b2lkIGNubF9k ZGlfdnN3aW5nX3NlcXVlbmNlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogfQogCiBz dGF0aWMgdm9pZCBpY2xfZGRpX2NvbWJvX3Zzd2luZ19wcm9ncmFtKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAotCQkJCQkgdTMyIGxldmVsLCBpbnQgdHlwZSwgaW50IHJhdGUpCisJCQkJ CSBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCQkJIGludCBs ZXZlbCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVu Y29kZXItPmJhc2UuZGV2KTsKKwljb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKmRkaV90 cmFuc2xhdGlvbnM7CiAJZW51bSBwaHkgcGh5ID0gaW50ZWxfcG9ydF90b19waHkoZGV2X3ByaXYs IGVuY29kZXItPnBvcnQpOwotCWNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqZGRpX3Ry YW5zbGF0aW9ucyA9IE5VTEw7Ci0JdTMyIG5fZW50cmllcywgdmFsOwotCWludCBsbjsKKwlpbnQg bl9lbnRyaWVzLCBsbjsKKwl1MzIgdmFsOwogCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g MTIpCi0JCWRkaV90cmFuc2xhdGlvbnMgPSB0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFucyhlbmNvZGVy LCB0eXBlLCByYXRlLAotCQkJCQkJCSAgICZuX2VudHJpZXMpOworCQlkZGlfdHJhbnNsYXRpb25z ID0gdGdsX2dldF9jb21ib19idWZfdHJhbnMoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5fZW50cmll cyk7CiAJZWxzZSBpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpKQotCQlkZGlfdHJhbnNsYXRp b25zID0gZWhsX2dldF9jb21ib19idWZfdHJhbnMoZW5jb2RlciwgdHlwZSwgcmF0ZSwKLQkJCQkJ CQkgICAmbl9lbnRyaWVzKTsKKwkJZGRpX3RyYW5zbGF0aW9ucyA9IGVobF9nZXRfY29tYm9fYnVm X3RyYW5zKGVuY29kZXIsIGNydGNfc3RhdGUsICZuX2VudHJpZXMpOwogCWVsc2UKLQkJZGRpX3Ry YW5zbGF0aW9ucyA9IGljbF9nZXRfY29tYm9fYnVmX3RyYW5zKGVuY29kZXIsIHR5cGUsIHJhdGUs Ci0JCQkJCQkJICAgJm5fZW50cmllcyk7CisJCWRkaV90cmFuc2xhdGlvbnMgPSBpY2xfZ2V0X2Nv bWJvX2J1Zl90cmFucyhlbmNvZGVyLCBjcnRjX3N0YXRlLCAmbl9lbnRyaWVzKTsKIAlpZiAoIWRk aV90cmFuc2xhdGlvbnMpCiAJCXJldHVybjsKIApAQCAtMjU1OCw3ICsyNTYzLDcgQEAgc3RhdGlj IHZvaWQgaWNsX2RkaV9jb21ib192c3dpbmdfcHJvZ3JhbShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKIAkJbGV2ZWwgPSBuX2VudHJpZXMgLSAxOwogCX0KIAotCWlmICh0eXBlID09IElO VEVMX09VVFBVVF9FRFApIHsKKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJ TlRFTF9PVVRQVVRfRURQKSkgewogCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3Rv X2ludGVsX2RwKGVuY29kZXIpOwogCiAJCXZhbCA9IEVEUDRLMktfTU9ERV9PVlJEX0VOIHwgRURQ NEsyS19NT0RFX09WUkRfT1BUSU1JWkVEOwpAQCAtMjYwNiwyNSArMjYxMSwxNiBAQCBzdGF0aWMg dm9pZCBpY2xfZGRpX2NvbWJvX3Zzd2luZ19wcm9ncmFtKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAogfQogCiBzdGF0aWMgdm9pZCBpY2xfY29tYm9fcGh5X2RkaV92c3dpbmdfc2VxdWVu Y2Uoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCi0JCQkJCSAgICAgIHUzMiBsZXZlbCwK LQkJCQkJICAgICAgZW51bSBpbnRlbF9vdXRwdXRfdHlwZSB0eXBlKQorCQkJCQkgICAgICBjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCQkJICAgICAgaW50IGxl dmVsKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5j b2Rlci0+YmFzZS5kZXYpOwogCWVudW0gcGh5IHBoeSA9IGludGVsX3BvcnRfdG9fcGh5KGRldl9w cml2LCBlbmNvZGVyLT5wb3J0KTsKLQlpbnQgd2lkdGggPSAwOwotCWludCByYXRlID0gMDsKKwlp bnQgd2lkdGgsIHJhdGUsIGxuOwogCXUzMiB2YWw7Ci0JaW50IGxuID0gMDsKIAotCWlmICh0eXBl ID09IElOVEVMX09VVFBVVF9IRE1JKSB7Ci0JCXdpZHRoID0gNDsKLQkJLyogUmF0ZSBpcyBhbHdh eXMgPCB0aGFuIDZHSHogZm9yIEhETUkgKi8KLQl9IGVsc2UgewotCQlzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOwotCi0JCXdpZHRoID0gaW50ZWxf ZHAtPmxhbmVfY291bnQ7Ci0JCXJhdGUgPSBpbnRlbF9kcC0+bGlua19yYXRlOwotCX0KKwl3aWR0 aCA9IGNydGNfc3RhdGUtPmxhbmVfY291bnQ7CisJcmF0ZSA9IGNydGNfc3RhdGUtPnBvcnRfY2xv Y2s7CiAKIAkvKgogCSAqIDEuIElmIHBvcnQgdHlwZSBpcyBlRFAgb3IgRFAsCkBAIC0yNjMyLDcg KzI2MjgsNyBAQCBzdGF0aWMgdm9pZCBpY2xfY29tYm9fcGh5X2RkaV92c3dpbmdfc2VxdWVuY2Uo c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJICogZWxzZSBjbGVhciB0byAwYi4KIAkg Ki8KIAl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBJQ0xfUE9SVF9QQ1NfRFcxX0xOMChw aHkpKTsKLQlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkKKwlpZiAoaW50ZWxfY3J0Y19o YXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfSERNSSkpCiAJCXZhbCAmPSB+Q09NTU9O X0tFRVBFUl9FTjsKIAllbHNlCiAJCXZhbCB8PSBDT01NT05fS0VFUEVSX0VOOwpAQCAtMjY2Nyw3 ICsyNjYzLDcgQEAgc3RhdGljIHZvaWQgaWNsX2NvbWJvX3BoeV9kZGlfdnN3aW5nX3NlcXVlbmNl KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCWludGVsX2RlX3dyaXRlKGRldl9wcml2 LCBJQ0xfUE9SVF9UWF9EVzVfR1JQKHBoeSksIHZhbCk7CiAKIAkvKiA1LiBQcm9ncmFtIHN3aW5n IGFuZCBkZS1lbXBoYXNpcyAqLwotCWljbF9kZGlfY29tYm9fdnN3aW5nX3Byb2dyYW0oZW5jb2Rl ciwgbGV2ZWwsIHR5cGUsIHJhdGUpOworCWljbF9kZGlfY29tYm9fdnN3aW5nX3Byb2dyYW0oZW5j b2RlciwgY3J0Y19zdGF0ZSwgbGV2ZWwpOwogCiAJLyogNi4gU2V0IHRyYWluaW5nIGVuYWJsZSB0 byB0cmlnZ2VyIHVwZGF0ZSAqLwogCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIElDTF9Q T1JUX1RYX0RXNV9MTjAocGh5KSk7CkBAIC0yNjc2LDIzICsyNjcyLDE2IEBAIHN0YXRpYyB2b2lk IGljbF9jb21ib19waHlfZGRpX3Zzd2luZ19zZXF1ZW5jZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKIH0KIAogc3RhdGljIHZvaWQgaWNsX21nX3BoeV9kZGlfdnN3aW5nX3NlcXVlbmNl KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJCQkgICBpbnQgbGlua19jbG9jaywg dTMyIGxldmVsLAotCQkJCQkgICBlbnVtIGludGVsX291dHB1dF90eXBlIHR5cGUpCisJCQkJCSAg IGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJCQkgICBpbnQg bGV2ZWwpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShl bmNvZGVyLT5iYXNlLmRldik7CiAJZW51bSB0Y19wb3J0IHRjX3BvcnQgPSBpbnRlbF9wb3J0X3Rv X3RjKGRldl9wcml2LCBlbmNvZGVyLT5wb3J0KTsKIAljb25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9k ZGlfYnVmX3RyYW5zICpkZGlfdHJhbnNsYXRpb25zOwotCXUzMiBuX2VudHJpZXMsIHZhbDsKLQlp bnQgbG4sIHJhdGUgPSAwOworCWludCBuX2VudHJpZXMsIGxuOworCXUzMiB2YWw7CiAKLQlpZiAo dHlwZSAhPSBJTlRFTF9PVVRQVVRfSERNSSkgewotCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw ID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOwotCi0JCXJhdGUgPSBpbnRlbF9kcC0+bGlua19y YXRlOwotCX0KLQotCWRkaV90cmFuc2xhdGlvbnMgPSBpY2xfZ2V0X21nX2J1Zl90cmFucyhlbmNv ZGVyLCB0eXBlLCByYXRlLAotCQkJCQkJJm5fZW50cmllcyk7CisJZGRpX3RyYW5zbGF0aW9ucyA9 IGljbF9nZXRfbWdfYnVmX3RyYW5zKGVuY29kZXIsIGNydGNfc3RhdGUsICZuX2VudHJpZXMpOwog CS8qIFRoZSB0YWJsZSBkb2VzIG5vdCBoYXZlIHZhbHVlcyBmb3IgbGV2ZWwgMyBhbmQgbGV2ZWwg OS4gKi8KIAlpZiAobGV2ZWwgPj0gbl9lbnRyaWVzIHx8IGxldmVsID09IDMgfHwgbGV2ZWwgPT0g OSkgewogCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwKQEAgLTI3NTksNyArMjc0OCw3IEBA IHN0YXRpYyB2b2lkIGljbF9tZ19waHlfZGRpX3Zzd2luZ19zZXF1ZW5jZShzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKIAkgKi8KIAlmb3IgKGxuID0gMDsgbG4gPCAyOyBsbisrKSB7CiAJ CXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIE1HX0NMS0hVQihsbiwgdGNfcG9ydCkpOwot CQlpZiAobGlua19jbG9jayA8IDMwMDAwMCkKKwkJaWYgKGNydGNfc3RhdGUtPnBvcnRfY2xvY2sg PCAzMDAwMDApCiAJCQl2YWwgfD0gQ0ZHX0xPV19SQVRFX0xLUkVOX0VOOwogCQllbHNlCiAJCQl2 YWwgJj0gfkNGR19MT1dfUkFURV9MS1JFTl9FTjsKQEAgLTI3NzAsNyArMjc1OSw3IEBAIHN0YXRp YyB2b2lkIGljbF9tZ19waHlfZGRpX3Zzd2luZ19zZXF1ZW5jZShzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKIAlmb3IgKGxuID0gMDsgbG4gPCAyOyBsbisrKSB7CiAJCXZhbCA9IGludGVs X2RlX3JlYWQoZGV2X3ByaXYsIE1HX1RYMV9EQ0MobG4sIHRjX3BvcnQpKTsKIAkJdmFsICY9IH5D RkdfQU1JX0NLX0RJVl9PVkVSUklERV9WQUxfTUFTSzsKLQkJaWYgKGxpbmtfY2xvY2sgPD0gNTAw MDAwKSB7CisJCWlmIChjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrIDw9IDUwMDAwMCkgewogCQkJdmFs ICY9IH5DRkdfQU1JX0NLX0RJVl9PVkVSUklERV9FTjsKIAkJfSBlbHNlIHsKIAkJCXZhbCB8PSBD RkdfQU1JX0NLX0RJVl9PVkVSUklERV9FTiB8CkBAIC0yNzgwLDcgKzI3NjksNyBAQCBzdGF0aWMg dm9pZCBpY2xfbWdfcGh5X2RkaV92c3dpbmdfc2VxdWVuY2Uoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCiAKIAkJdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgTUdfVFgyX0RDQyhs biwgdGNfcG9ydCkpOwogCQl2YWwgJj0gfkNGR19BTUlfQ0tfRElWX09WRVJSSURFX1ZBTF9NQVNL OwotCQlpZiAobGlua19jbG9jayA8PSA1MDAwMDApIHsKKwkJaWYgKGNydGNfc3RhdGUtPnBvcnRf Y2xvY2sgPD0gNTAwMDAwKSB7CiAJCQl2YWwgJj0gfkNGR19BTUlfQ0tfRElWX09WRVJSSURFX0VO OwogCQl9IGVsc2UgewogCQkJdmFsIHw9IENGR19BTUlfQ0tfRElWX09WRVJSSURFX0VOIHwKQEAg LTI4MDYsMzggKzI3OTUsMzAgQEAgc3RhdGljIHZvaWQgaWNsX21nX3BoeV9kZGlfdnN3aW5nX3Nl cXVlbmNlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogfQogCiBzdGF0aWMgdm9pZCBp Y2xfZGRpX3Zzd2luZ19zZXF1ZW5jZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJ CQkgICAgaW50IGxpbmtfY2xvY2ssCi0JCQkJICAgIHUzMiBsZXZlbCwKLQkJCQkgICAgZW51bSBp bnRlbF9vdXRwdXRfdHlwZSB0eXBlKQorCQkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCQkgICAgaW50IGxldmVsKQogewogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwogCWVudW0g cGh5IHBoeSA9IGludGVsX3BvcnRfdG9fcGh5KGRldl9wcml2LCBlbmNvZGVyLT5wb3J0KTsKIAog CWlmIChpbnRlbF9waHlfaXNfY29tYm8oZGV2X3ByaXYsIHBoeSkpCi0JCWljbF9jb21ib19waHlf ZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBsZXZlbCwgdHlwZSk7CisJCWljbF9jb21ib19w aHlfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBjcnRjX3N0YXRlLCBsZXZlbCk7CiAJZWxz ZQotCQlpY2xfbWdfcGh5X2RkaV92c3dpbmdfc2VxdWVuY2UoZW5jb2RlciwgbGlua19jbG9jaywg bGV2ZWwsCi0JCQkJCSAgICAgICB0eXBlKTsKKwkJaWNsX21nX3BoeV9kZGlfdnN3aW5nX3NlcXVl bmNlKGVuY29kZXIsIGNydGNfc3RhdGUsIGxldmVsKTsKIH0KIAogc3RhdGljIHZvaWQKLXRnbF9k a2xfcGh5X2RkaV92c3dpbmdfc2VxdWVuY2Uoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs IGludCBsaW5rX2Nsb2NrLAotCQkJCXUzMiBsZXZlbCwgZW51bSBpbnRlbF9vdXRwdXRfdHlwZSB0 eXBlKQordGdsX2RrbF9waHlfZGRpX3Zzd2luZ19zZXF1ZW5jZShzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKKwkJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKKwkJCQlpbnQgbGV2ZWwpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CiAJZW51bSB0Y19wb3J0IHRjX3BvcnQgPSBp bnRlbF9wb3J0X3RvX3RjKGRldl9wcml2LCBlbmNvZGVyLT5wb3J0KTsKIAljb25zdCBzdHJ1Y3Qg dGdsX2RrbF9waHlfZGRpX2J1Zl90cmFucyAqZGRpX3RyYW5zbGF0aW9uczsKLQl1MzIgbl9lbnRy aWVzLCB2YWwsIGxuLCBkcGNudF9tYXNrLCBkcGNudF92YWw7Ci0JaW50IHJhdGUgPSAwOworCXUz MiB2YWwsIGRwY250X21hc2ssIGRwY250X3ZhbDsKKwlpbnQgbl9lbnRyaWVzLCBsbjsKIAotCWlm ICh0eXBlID09IElOVEVMX09VVFBVVF9IRE1JKSB7Ci0JCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7Ci0KLQkJcmF0ZSA9IGludGVsX2RwLT5saW5r X3JhdGU7Ci0JfQotCi0JZGRpX3RyYW5zbGF0aW9ucyA9IHRnbF9nZXRfZGtsX2J1Zl90cmFucyhl bmNvZGVyLCBlbmNvZGVyLT50eXBlLCByYXRlLAotCQkJCQkJICZuX2VudHJpZXMpOworCWRkaV90 cmFuc2xhdGlvbnMgPSB0Z2xfZ2V0X2RrbF9idWZfdHJhbnMoZW5jb2RlciwgY3J0Y19zdGF0ZSwg Jm5fZW50cmllcyk7CiAKIAlpZiAobGV2ZWwgPj0gbl9lbnRyaWVzKQogCQlsZXZlbCA9IG5fZW50 cmllcyAtIDE7CkBAIC0yODczLDIwICsyODU0LDIwIEBAIHRnbF9ka2xfcGh5X2RkaV92c3dpbmdf c2VxdWVuY2Uoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCBsaW5rX2Nsb2NrLAog fQogCiBzdGF0aWMgdm9pZCB0Z2xfZGRpX3Zzd2luZ19zZXF1ZW5jZShzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwKLQkJCQkgICAgaW50IGxpbmtfY2xvY2ssCi0JCQkJICAgIHUzMiBsZXZl bCwKLQkJCQkgICAgZW51bSBpbnRlbF9vdXRwdXRfdHlwZSB0eXBlKQorCQkJCSAgICBjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCQkgICAgaW50IGxldmVsKQog ewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+ YmFzZS5kZXYpOwogCWVudW0gcGh5IHBoeSA9IGludGVsX3BvcnRfdG9fcGh5KGRldl9wcml2LCBl bmNvZGVyLT5wb3J0KTsKIAogCWlmIChpbnRlbF9waHlfaXNfY29tYm8oZGV2X3ByaXYsIHBoeSkp Ci0JCWljbF9jb21ib19waHlfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBsZXZlbCwgdHlw ZSk7CisJCWljbF9jb21ib19waHlfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBjcnRjX3N0 YXRlLCBsZXZlbCk7CiAJZWxzZQotCQl0Z2xfZGtsX3BoeV9kZGlfdnN3aW5nX3NlcXVlbmNlKGVu Y29kZXIsIGxpbmtfY2xvY2ssIGxldmVsLCB0eXBlKTsKKwkJdGdsX2RrbF9waHlfZGRpX3Zzd2lu Z19zZXF1ZW5jZShlbmNvZGVyLCBjcnRjX3N0YXRlLCBsZXZlbCk7CiB9CiAKLXN0YXRpYyB1MzIg dHJhbnNsYXRlX3NpZ25hbF9sZXZlbChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgc2ln bmFsX2xldmVscykKK3N0YXRpYyBpbnQgdHJhbnNsYXRlX3NpZ25hbF9sZXZlbChzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLAorCQkJCSAgdTggc2lnbmFsX2xldmVscykKIHsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwogCWludCBpOwpAQCAt MjkwMyw1NSArMjg4NCw1OCBAQCBzdGF0aWMgdTMyIHRyYW5zbGF0ZV9zaWduYWxfbGV2ZWwoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IHNpZ25hbF9sZXZlbHMpCiAJcmV0dXJuIDA7CiB9 CiAKLXN0YXRpYyB1MzIgaW50ZWxfZGRpX2RwX2xldmVsKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCitzdGF0aWMgaW50IGludGVsX2RkaV9kcF9sZXZlbChzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKQogewogCXU4IHRyYWluX3NldCA9IGludGVsX2RwLT50cmFpbl9zZXRbMF07Ci0JaW50IHNp Z25hbF9sZXZlbHMgPSB0cmFpbl9zZXQgJiAoRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19NQVNLIHwK LQkJCQkJIERQX1RSQUlOX1BSRV9FTVBIQVNJU19NQVNLKTsKKwl1OCBzaWduYWxfbGV2ZWxzID0g dHJhaW5fc2V0ICYgKERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTUFTSyB8CisJCQkJCURQX1RSQUlO X1BSRV9FTVBIQVNJU19NQVNLKTsKIAogCXJldHVybiB0cmFuc2xhdGVfc2lnbmFsX2xldmVsKGlu dGVsX2RwLCBzaWduYWxfbGV2ZWxzKTsKIH0KIAogc3RhdGljIHZvaWQKLXRnbF9zZXRfc2lnbmFs X2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQordGdsX3NldF9zaWduYWxfbGV2ZWxz KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCisJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewogCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy ID0gJmRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+YmFzZTsKIAlpbnQgbGV2ZWwgPSBpbnRlbF9k ZGlfZHBfbGV2ZWwoaW50ZWxfZHApOwogCi0JdGdsX2RkaV92c3dpbmdfc2VxdWVuY2UoZW5jb2Rl ciwgaW50ZWxfZHAtPmxpbmtfcmF0ZSwKLQkJCQlsZXZlbCwgZW5jb2Rlci0+dHlwZSk7CisJdGds X2RkaV92c3dpbmdfc2VxdWVuY2UoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbGV2ZWwpOwogfQogCiBz dGF0aWMgdm9pZAotaWNsX3NldF9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCitpY2xfc2V0X3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKKwkJ ICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7CiAJc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSAmZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLT5i YXNlOwogCWludCBsZXZlbCA9IGludGVsX2RkaV9kcF9sZXZlbChpbnRlbF9kcCk7CiAKLQlpY2xf ZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBpbnRlbF9kcC0+bGlua19yYXRlLAotCQkJCWxl dmVsLCBlbmNvZGVyLT50eXBlKTsKKwlpY2xfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBj cnRjX3N0YXRlLCBsZXZlbCk7CiB9CiAKIHN0YXRpYyB2b2lkCi1jbmxfc2V0X3NpZ25hbF9sZXZl bHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKK2NubF9zZXRfc2lnbmFsX2xldmVscyhzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLAorCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9ICZk cF90b19kaWdfcG9ydChpbnRlbF9kcCktPmJhc2U7CiAJaW50IGxldmVsID0gaW50ZWxfZGRpX2Rw X2xldmVsKGludGVsX2RwKTsKIAotCWNubF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIsIGxl dmVsLCBlbmNvZGVyLT50eXBlKTsKKwljbmxfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBj cnRjX3N0YXRlLCBsZXZlbCk7CiB9CiAKIHN0YXRpYyB2b2lkCi1ieHRfc2V0X3NpZ25hbF9sZXZl bHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKK2J4dF9zZXRfc2lnbmFsX2xldmVscyhzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLAorCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9ICZk cF90b19kaWdfcG9ydChpbnRlbF9kcCktPmJhc2U7CiAJaW50IGxldmVsID0gaW50ZWxfZGRpX2Rw X2xldmVsKGludGVsX2RwKTsKIAotCWJ4dF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIsIGxl dmVsLCBlbmNvZGVyLT50eXBlKTsKKwlieHRfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBj cnRjX3N0YXRlLCBsZXZlbCk7CiB9CiAKIHN0YXRpYyB2b2lkCi1oc3dfc2V0X3NpZ25hbF9sZXZl bHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKK2hzd19zZXRfc2lnbmFsX2xldmVscyhzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLAorCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9ICZk cF90b19kaWdfcG9ydChpbnRlbF9kcCktPmJhc2U7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CkBAIC0yOTY4LDcgKzI5NTIs NyBAQCBoc3dfc2V0X3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAlp bnRlbF9kcC0+RFAgfD0gc2lnbmFsX2xldmVsczsKIAogCWlmIChJU19HRU45X0JDKGRldl9wcml2 KSkKLQkJc2tsX2RkaV9zZXRfaWJvb3N0KGVuY29kZXIsIGxldmVsLCBlbmNvZGVyLT50eXBlKTsK KwkJc2tsX2RkaV9zZXRfaWJvb3N0KGVuY29kZXIsIGNydGNfc3RhdGUsIGxldmVsKTsKIAogCWlu dGVsX2RlX3dyaXRlKGRldl9wcml2LCBERElfQlVGX0NUTChwb3J0KSwgaW50ZWxfZHAtPkRQKTsK IAlpbnRlbF9kZV9wb3N0aW5nX3JlYWQoZGV2X3ByaXYsIERESV9CVUZfQ1RMKHBvcnQpKTsKQEAg LTMzNzUsOCArMzM1OSw5IEBAIHN0YXRpYyB2b2lkIHRnbF9kZGlfcHJlX2VuYWJsZV9kcChzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKIAlpbnQgbGV2ZWwgPSBpbnRlbF9kZGlfZHBf bGV2ZWwoaW50ZWxfZHApOwogCWVudW0gdHJhbnNjb2RlciB0cmFuc2NvZGVyID0gY3J0Y19zdGF0 ZS0+Y3B1X3RyYW5zY29kZXI7CiAKLQlpbnRlbF9kcF9zZXRfbGlua19wYXJhbXMoaW50ZWxfZHAs IGNydGNfc3RhdGUtPnBvcnRfY2xvY2ssCi0JCQkJIGNydGNfc3RhdGUtPmxhbmVfY291bnQsIGlz X21zdCk7CisJaW50ZWxfZHBfc2V0X2xpbmtfcGFyYW1zKGludGVsX2RwLAorCQkJCSBjcnRjX3N0 YXRlLT5wb3J0X2Nsb2NrLAorCQkJCSBjcnRjX3N0YXRlLT5sYW5lX2NvdW50KTsKIAogCWludGVs X2RwLT5yZWdzLmRwX3RwX2N0bCA9IFRHTF9EUF9UUF9DVEwodHJhbnNjb2Rlcik7CiAJaW50ZWxf ZHAtPnJlZ3MuZHBfdHBfc3RhdHVzID0gVEdMX0RQX1RQX1NUQVRVUyh0cmFuc2NvZGVyKTsKQEAg LTM0NDgsOCArMzQzMyw3IEBAIHN0YXRpYyB2b2lkIHRnbF9kZGlfcHJlX2VuYWJsZV9kcChzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkgKi8KIAogCS8qIDcuZSBDb25maWd1cmUg dm9sdGFnZSBzd2luZyBhbmQgcmVsYXRlZCBJTyBzZXR0aW5ncyAqLwotCXRnbF9kZGlfdnN3aW5n X3NlcXVlbmNlKGVuY29kZXIsIGNydGNfc3RhdGUtPnBvcnRfY2xvY2ssIGxldmVsLAotCQkJCWVu Y29kZXItPnR5cGUpOworCXRnbF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIsIGNydGNfc3Rh dGUsIGxldmVsKTsKIAogCS8qCiAJICogNy5mIENvbWJvIFBIWTogQ29uZmlndXJlIFBPUlRfQ0xf RFcxMCBTdGF0aWMgUG93ZXIgRG93biB0byBwb3dlciB1cApAQCAtMzQ3Miw3ICszNDU2LDcgQEAg c3RhdGljIHZvaWQgdGdsX2RkaV9wcmVfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKnN0YXRlLAogCSAqIFdlIG9ubHkgY29uZmlndXJlIHdoYXQgdGhlIHJlZ2lzdGVyIHZhbHVl IHdpbGwgYmUgaGVyZS4gIEFjdHVhbAogCSAqIGVuYWJsaW5nIGhhcHBlbnMgZHVyaW5nIGxpbmsg dHJhaW5pbmcgZmFydGhlciBkb3duLgogCSAqLwotCWludGVsX2RkaV9pbml0X2RwX2J1Zl9yZWco ZW5jb2Rlcik7CisJaW50ZWxfZGRpX2luaXRfZHBfYnVmX3JlZyhlbmNvZGVyLCBjcnRjX3N0YXRl KTsKIAogCWlmICghaXNfbXN0KQogCQlpbnRlbF9kcF9zaW5rX2RwbXMoaW50ZWxfZHAsIERSTV9N T0RFX0RQTVNfT04pOwpAQCAtMzQ5MiwxMSArMzQ3NiwxMSBAQCBzdGF0aWMgdm9pZCB0Z2xfZGRp X3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJICogICAg IFBhdHRlcm4sIHdhaXQgZm9yIDUgaWRsZSBwYXR0ZXJucyAoRFBfVFBfU1RBVFVTIE1pbl9JZGxl c19TZW50KQogCSAqICAgICAodGltZW91dCBhZnRlciA4MDAgdXMpCiAJICovCi0JaW50ZWxfZHBf c3RhcnRfbGlua190cmFpbihpbnRlbF9kcCk7CisJaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihp bnRlbF9kcCwgY3J0Y19zdGF0ZSk7CiAKIAkvKiA3LmsgU2V0IERQX1RQX0NUTCBsaW5rIHRyYWlu aW5nIHRvIE5vcm1hbCAqLwogCWlmICghaXNfdHJhbnNfcG9ydF9zeW5jX21vZGUoY3J0Y19zdGF0 ZSkpCi0JCWludGVsX2RwX3N0b3BfbGlua190cmFpbihpbnRlbF9kcCk7CisJCWludGVsX2RwX3N0 b3BfbGlua190cmFpbihpbnRlbF9kcCwgY3J0Y19zdGF0ZSk7CiAKIAkvKiA3LmwgQ29uZmlndXJl IGFuZCBlbmFibGUgRkVDIGlmIG5lZWRlZCAqLwogCWludGVsX2RkaV9lbmFibGVfZmVjKGVuY29k ZXIsIGNydGNfc3RhdGUpOwpAQCAtMzUyMiw4ICszNTA2LDkgQEAgc3RhdGljIHZvaWQgaHN3X2Rk aV9wcmVfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAogCWVsc2UK IAkJZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sIGlzX21zdCAmJiBwb3J0ID09IFBPUlRfQSk7 CiAKLQlpbnRlbF9kcF9zZXRfbGlua19wYXJhbXMoaW50ZWxfZHAsIGNydGNfc3RhdGUtPnBvcnRf Y2xvY2ssCi0JCQkJIGNydGNfc3RhdGUtPmxhbmVfY291bnQsIGlzX21zdCk7CisJaW50ZWxfZHBf c2V0X2xpbmtfcGFyYW1zKGludGVsX2RwLAorCQkJCSBjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrLAor CQkJCSBjcnRjX3N0YXRlLT5sYW5lX2NvdW50KTsKIAogCWludGVsX2VkcF9wYW5lbF9vbihpbnRl bF9kcCk7CiAKQEAgLTM1MzcsMTIgKzM1MjIsMTEgQEAgc3RhdGljIHZvaWQgaHN3X2RkaV9wcmVf ZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAogCWljbF9wcm9ncmFt X21nX2RwX21vZGUoZGlnX3BvcnQsIGNydGNfc3RhdGUpOwogCiAJaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gMTEpCi0JCWljbF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIsIGNydGNfc3Rh dGUtPnBvcnRfY2xvY2ssCi0JCQkJCWxldmVsLCBlbmNvZGVyLT50eXBlKTsKKwkJaWNsX2RkaV92 c3dpbmdfc2VxdWVuY2UoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbGV2ZWwpOwogCWVsc2UgaWYgKElT X0NBTk5PTkxBS0UoZGV2X3ByaXYpKQotCQljbmxfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVy LCBsZXZlbCwgZW5jb2Rlci0+dHlwZSk7CisJCWNubF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29k ZXIsIGNydGNfc3RhdGUsIGxldmVsKTsKIAllbHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkK LQkJYnh0X2RkaV92c3dpbmdfc2VxdWVuY2UoZW5jb2RlciwgbGV2ZWwsIGVuY29kZXItPnR5cGUp OworCQlieHRfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBjcnRjX3N0YXRlLCBsZXZlbCk7 CiAJZWxzZQogCQlpbnRlbF9wcmVwYXJlX2RwX2RkaV9idWZmZXJzKGVuY29kZXIsIGNydGNfc3Rh dGUpOwogCkBAIC0zNTU1LDE3ICszNTM5LDE3IEBAIHN0YXRpYyB2b2lkIGhzd19kZGlfcHJlX2Vu YWJsZV9kcChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJCQkJICAgICAgIGxh bmVfcmV2ZXJzYWwpOwogCX0KIAotCWludGVsX2RkaV9pbml0X2RwX2J1Zl9yZWcoZW5jb2Rlcik7 CisJaW50ZWxfZGRpX2luaXRfZHBfYnVmX3JlZyhlbmNvZGVyLCBjcnRjX3N0YXRlKTsKIAlpZiAo IWlzX21zdCkKIAkJaW50ZWxfZHBfc2lua19kcG1zKGludGVsX2RwLCBEUk1fTU9ERV9EUE1TX09O KTsKIAlpbnRlbF9kcF9jb25maWd1cmVfcHJvdG9jb2xfY29udmVydGVyKGludGVsX2RwKTsKIAlp bnRlbF9kcF9zaW5rX3NldF9kZWNvbXByZXNzaW9uX3N0YXRlKGludGVsX2RwLCBjcnRjX3N0YXRl LAogCQkJCQkgICAgICB0cnVlKTsKIAlpbnRlbF9kcF9zaW5rX3NldF9mZWNfcmVhZHkoaW50ZWxf ZHAsIGNydGNfc3RhdGUpOwotCWludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oaW50ZWxfZHApOwor CWludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oaW50ZWxfZHAsIGNydGNfc3RhdGUpOwogCWlmICgo cG9ydCAhPSBQT1JUX0EgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSAmJgogCSAgICAhaXNf dHJhbnNfcG9ydF9zeW5jX21vZGUoY3J0Y19zdGF0ZSkpCi0JCWludGVsX2RwX3N0b3BfbGlua190 cmFpbihpbnRlbF9kcCk7CisJCWludGVsX2RwX3N0b3BfbGlua190cmFpbihpbnRlbF9kcCwgY3J0 Y19zdGF0ZSk7CiAKIAlpbnRlbF9kZGlfZW5hYmxlX2ZlYyhlbmNvZGVyLCBjcnRjX3N0YXRlKTsK IApAQCAtMzYwNSw3ICszNTg5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVf aGRtaShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKIAlzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICpkaWdfcG9ydCA9IGVuY190b19kaWdfcG9ydChlbmNvZGVyKTsKIAlzdHJ1Y3Qg aW50ZWxfaGRtaSAqaW50ZWxfaGRtaSA9ICZkaWdfcG9ydC0+aGRtaTsKIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKLQlpbnQg bGV2ZWwgPSBpbnRlbF9kZGlfaGRtaV9sZXZlbChlbmNvZGVyKTsKKwlpbnQgbGV2ZWwgPSBpbnRl bF9kZGlfaGRtaV9sZXZlbChlbmNvZGVyLCBjcnRjX3N0YXRlKTsKIAogCWludGVsX2RwX2R1YWxf bW9kZV9zZXRfdG1kc19vdXRwdXQoaW50ZWxfaGRtaSwgdHJ1ZSk7CiAJaW50ZWxfZGRpX2Nsa19z ZWxlY3QoZW5jb2RlciwgY3J0Y19zdGF0ZSk7CkBAIC0zNjE1LDIwICszNTk5LDE4IEBAIHN0YXRp YyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2hkbWkoc3RydWN0IGludGVsX2F0b21pY19zdGF0 ZSAqc3RhdGUsCiAJaWNsX3Byb2dyYW1fbWdfZHBfbW9kZShkaWdfcG9ydCwgY3J0Y19zdGF0ZSk7 CiAKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikKLQkJdGdsX2RkaV92c3dpbmdfc2Vx dWVuY2UoZW5jb2RlciwgY3J0Y19zdGF0ZS0+cG9ydF9jbG9jaywKLQkJCQkJbGV2ZWwsIElOVEVM X09VVFBVVF9IRE1JKTsKKwkJdGdsX2RkaV92c3dpbmdfc2VxdWVuY2UoZW5jb2RlciwgY3J0Y19z dGF0ZSwgbGV2ZWwpOwogCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPT0gMTEpCi0JCWlj bF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIsIGNydGNfc3RhdGUtPnBvcnRfY2xvY2ssCi0J CQkJCWxldmVsLCBJTlRFTF9PVVRQVVRfSERNSSk7CisJCWljbF9kZGlfdnN3aW5nX3NlcXVlbmNl KGVuY29kZXIsIGNydGNfc3RhdGUsIGxldmVsKTsKIAllbHNlIGlmIChJU19DQU5OT05MQUtFKGRl dl9wcml2KSkKLQkJY25sX2RkaV92c3dpbmdfc2VxdWVuY2UoZW5jb2RlciwgbGV2ZWwsIElOVEVM X09VVFBVVF9IRE1JKTsKKwkJY25sX2RkaV92c3dpbmdfc2VxdWVuY2UoZW5jb2RlciwgY3J0Y19z dGF0ZSwgbGV2ZWwpOwogCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQotCQlieHRfZGRp X3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBsZXZlbCwgSU5URUxfT1VUUFVUX0hETUkpOworCQli eHRfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBjcnRjX3N0YXRlLCBsZXZlbCk7CiAJZWxz ZQogCQlpbnRlbF9wcmVwYXJlX2hkbWlfZGRpX2J1ZmZlcnMoZW5jb2RlciwgbGV2ZWwpOwogCiAJ aWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKQotCQlza2xfZGRpX3NldF9pYm9vc3QoZW5jb2Rlciwg bGV2ZWwsIElOVEVMX09VVFBVVF9IRE1JKTsKKwkJc2tsX2RkaV9zZXRfaWJvb3N0KGVuY29kZXIs IGNydGNfc3RhdGUsIGxldmVsKTsKIAogCWludGVsX2RkaV9lbmFibGVfcGlwZV9jbG9jayhlbmNv ZGVyLCBjcnRjX3N0YXRlKTsKIApAQCAtMzkxOCwxMiArMzkwMCwxNCBAQCBzdGF0aWMgdm9pZCB0 cmFuc19wb3J0X3N5bmNfc3RvcF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUg KnN0YXRlLAogCQkgICAgY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXIpCiAJCQljb250aW51ZTsK IAotCQlpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oZW5jX3RvX2ludGVsX2RwKHNsYXZlX2VuY29k ZXIpKTsKKwkJaW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKGVuY190b19pbnRlbF9kcChzbGF2ZV9l bmNvZGVyKSwKKwkJCQkJIHNsYXZlX2NydGNfc3RhdGUpOwogCX0KIAogCXVzbGVlcF9yYW5nZSgy MDAsIDQwMCk7CiAKLQlpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oZW5jX3RvX2ludGVsX2RwKGVu Y29kZXIpKTsKKwlpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oZW5jX3RvX2ludGVsX2RwKGVuY29k ZXIpLAorCQkJCSBjcnRjX3N0YXRlKTsKIH0KIAogc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX2Rk aV9kcChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKQEAgLTM5MzYsNyArMzkyMCw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9kZGlfZHAoc3RydWN0IGludGVsX2F0b21pY19z dGF0ZSAqc3RhdGUsCiAJZW51bSBwb3J0IHBvcnQgPSBlbmNvZGVyLT5wb3J0OwogCiAJaWYgKHBv cnQgPT0gUE9SVF9BICYmIElOVEVMX0dFTihkZXZfcHJpdikgPCA5KQotCQlpbnRlbF9kcF9zdG9w X2xpbmtfdHJhaW4oaW50ZWxfZHApOworCQlpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oaW50ZWxf ZHAsIGNydGNfc3RhdGUpOwogCiAJaW50ZWxfZWRwX2JhY2tsaWdodF9vbihjcnRjX3N0YXRlLCBj b25uX3N0YXRlKTsKIAlpbnRlbF9wc3JfZW5hYmxlKGludGVsX2RwLCBjcnRjX3N0YXRlLCBjb25u X3N0YXRlKTsKQEAgLTQxOTcsNyArNDE4MSw4IEBAIGludGVsX2RkaV9wcmVfcGxsX2VuYWJsZShz dHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJCQkJCWNydGNfc3RhdGUtPmxhbmVf bGF0X29wdGltX21hc2spOwogfQogCi1zdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlcGFyZV9saW5r X3JldHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKK3N0YXRpYyB2b2lkIGludGVsX2Rk aV9wcmVwYXJlX2xpbmtfcmV0cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAorCQkJCQkg ICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKIAlzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19wb3J0LT5i YXNlLmJhc2UuZGV2KTsKQEAgLTQyMjQsMTAgKzQyMDksMTEgQEAgc3RhdGljIHZvaWQgaW50ZWxf ZGRpX3ByZXBhcmVfbGlua19yZXRyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJCQlp bnRlbF93YWl0X2RkaV9idWZfaWRsZShkZXZfcHJpdiwgcG9ydCk7CiAJfQogCi0JZHBfdHBfY3Rs ID0gRFBfVFBfQ1RMX0VOQUJMRSB8IERQX1RQX0NUTF9MSU5LX1RSQUlOX1BBVDE7Ci0JaWYgKGlu dGVsX2RwLT5saW5rX21zdCkKKwlkcF90cF9jdGwgPSBEUF9UUF9DVExfRU5BQkxFIHwKKwkJICAg IERQX1RQX0NUTF9MSU5LX1RSQUlOX1BBVDEgfCBEUF9UUF9DVExfU0NSQU1CTEVfRElTQUJMRTsK KwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRFBfTVNU KSkgewogCQlkcF90cF9jdGwgfD0gRFBfVFBfQ1RMX01PREVfTVNUOwotCWVsc2UgeworCX0gZWxz ZSB7CiAJCWRwX3RwX2N0bCB8PSBEUF9UUF9DVExfTU9ERV9TU1Q7CiAJCWlmIChkcm1fZHBfZW5o YW5jZWRfZnJhbWVfY2FwKGludGVsX2RwLT5kcGNkKSkKIAkJCWRwX3RwX2N0bCB8PSBEUF9UUF9D VExfRU5IQU5DRURfRlJBTUVfRU5BQkxFOwpAQCAtNDI0Myw2ICs0MjI5LDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfZGRpX3ByZXBhcmVfbGlua19yZXRyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCiB9CiAKIHN0YXRpYyB2b2lkIGludGVsX2RkaV9zZXRfbGlua190cmFpbihzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLAorCQkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCiAJCQkJICAgICB1OCBkcF90cmFpbl9wYXQpCiB7CiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7CkBAIC00MjczLDcg KzQyNjAsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfc2V0X2xpbmtfdHJhaW4oc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCwKIAlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgaW50ZWxfZHAtPnJl Z3MuZHBfdHBfY3RsLCB0ZW1wKTsKIH0KIAotc3RhdGljIHZvaWQgaW50ZWxfZGRpX3NldF9pZGxl X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKK3N0YXRpYyB2b2lkIGludGVs X2RkaV9zZXRfaWRsZV9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCisJCQkJ CSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7CiAJc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSAmZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLT5iYXNl OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+ YmFzZS5kZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kZGkuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmgKaW5kZXgg ZjVmYjYyZmM5NDAwLi45YTJhYzczMTY0ZjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kZGkuaApAQCAtNDEsOCArNDEsMTAgQEAgdm9pZCBpbnRlbF9kZGlfc2V0X3ZjX3Bh eWxvYWRfYWxsb2MoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJ CQkJICAgIGJvb2wgc3RhdGUpOwogdm9pZCBpbnRlbF9kZGlfY29tcHV0ZV9taW5fdm9sdGFnZV9s ZXZlbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJCSBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Ci11MzIgYnh0X3NpZ25hbF9sZXZlbHMoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCk7Ci11MzIgZGRpX3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCk7Cit1MzIgYnh0X3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwKKwkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpOwordTMyIGRkaV9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCisJ CSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKIGludCBp bnRlbF9kZGlfdG9nZ2xlX2hkY3Bfc2lnbmFsbGluZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50 ZWxfZW5jb2RlciwKIAkJCQkgICAgIGVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciwKIAkJ CQkgICAgIGJvb2wgZW5hYmxlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgKaW5kZXggZTMzMzllNDFkZGY3Li42NmQxOTcxNTNjOTMg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90 eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90 eXBlcy5oCkBAIC0xMjczLDcgKzEyNzMsNiBAQCBzdHJ1Y3QgaW50ZWxfZHAgewogCWludCBsaW5r X3JhdGU7CiAJdTggbGFuZV9jb3VudDsKIAl1OCBzaW5rX2NvdW50OwotCWJvb2wgbGlua19tc3Q7 CiAJYm9vbCBsaW5rX3RyYWluZWQ7CiAJYm9vbCBoYXNfaGRtaV9zaW5rOwogCWJvb2wgaGFzX2F1 ZGlvOwpAQCAtMTM2NiwxMyArMTM2NSwxOSBAQCBzdHJ1Y3QgaW50ZWxfZHAgewogCWk5MTVfcmVn X3QgKCphdXhfY2hfZGF0YV9yZWcpKHN0cnVjdCBpbnRlbF9kcCAqZHAsIGludCBpbmRleCk7CiAK IAkvKiBUaGlzIGlzIGNhbGxlZCBiZWZvcmUgYSBsaW5rIHRyYWluaW5nIGlzIHN0YXJ0ZXJkICov Ci0Jdm9pZCAoKnByZXBhcmVfbGlua19yZXRyYWluKShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KTsKLQl2b2lkICgqc2V0X2xpbmtfdHJhaW4pKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHU4 IGRwX3RyYWluX3BhdCk7Ci0Jdm9pZCAoKnNldF9pZGxlX2xpbmtfdHJhaW4pKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApOwotCXZvaWQgKCpzZXRfc2lnbmFsX2xldmVscykoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCk7CisJdm9pZCAoKnByZXBhcmVfbGlua19yZXRyYWluKShzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLAorCQkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpOworCXZvaWQgKCpzZXRfbGlua190cmFpbikoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwKKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKKwkJCSAgICAgICB1OCBkcF90cmFpbl9wYXQpOworCXZvaWQgKCpzZXRfaWRsZV9saW5r X3RyYWluKShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAorCQkJCSAgICBjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7CisJdm9pZCAoKnNldF9zaWduYWxfbGV2ZWxz KShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAorCQkJCSAgY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpOwogCiAJdTggKCpwcmVlbXBoX21heCkoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCk7Ci0JdTggKCp2b2x0YWdlX21heCkoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCk7CisJdTggKCp2b2x0YWdlX21heCkoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKKwkJ CSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwogCiAJLyogRGlz cGxheXBvcnQgY29tcGxpYW5jZSB0ZXN0aW5nICovCiAJc3RydWN0IGludGVsX2RwX2NvbXBsaWFu Y2UgY29tcGxpYW5jZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwppbmRl eCA2NzE4ZTAxOTA5Y2QuLjVhYzhhMDY1NzVkNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZHAuYwpAQCAtMjc5OSwxMyArMjc5OSwxMSBAQCBpbnRlbF9kcF9jb21wdXRlX2Nv bmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIH0KIAogdm9pZCBpbnRlbF9kcF9z ZXRfbGlua19wYXJhbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKLQkJCSAgICAgIGludCBs aW5rX3JhdGUsIHU4IGxhbmVfY291bnQsCi0JCQkgICAgICBib29sIGxpbmtfbXN0KQorCQkJICAg ICAgaW50IGxpbmtfcmF0ZSwgaW50IGxhbmVfY291bnQpCiB7CiAJaW50ZWxfZHAtPmxpbmtfdHJh aW5lZCA9IGZhbHNlOwogCWludGVsX2RwLT5saW5rX3JhdGUgPSBsaW5rX3JhdGU7CiAJaW50ZWxf ZHAtPmxhbmVfY291bnQgPSBsYW5lX2NvdW50OwotCWludGVsX2RwLT5saW5rX21zdCA9IGxpbmtf bXN0OwogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9kcF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLApAQCAtMjgxNywxMCArMjgxNSw5IEBAIHN0YXRpYyB2b2lkIGludGVsX2Rw X3ByZXBhcmUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJc3RydWN0IGludGVsX2Ny dGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKHBpcGVfY29uZmlnLT51YXBpLmNydGMpOwogCWNvbnN0 IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5o dy5hZGp1c3RlZF9tb2RlOwogCi0JaW50ZWxfZHBfc2V0X2xpbmtfcGFyYW1zKGludGVsX2RwLCBw aXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKLQkJCQkgcGlwZV9jb25maWctPmxhbmVfY291bnQsCi0J CQkJIGludGVsX2NydGNfaGFzX3R5cGUocGlwZV9jb25maWcsCi0JCQkJCQkgICAgIElOVEVMX09V VFBVVF9EUF9NU1QpKTsKKwlpbnRlbF9kcF9zZXRfbGlua19wYXJhbXMoaW50ZWxfZHAsCisJCQkJ IHBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrLAorCQkJCSBwaXBlX2NvbmZpZy0+bGFuZV9jb3VudCk7 CiAKIAkvKgogCSAqIFRoZXJlIGFyZSBmb3VyIGtpbmRzIG9mIERQIHJlZ2lzdGVyczoKQEAgLTM3 OTEsNiArMzc4OCw3IEBAIHN0YXRpYyB2b2lkIGNodl9wb3N0X2Rpc2FibGVfZHAoc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAKIHN0YXRpYyB2b2lkCiBjcHRfc2V0X2xpbmtfdHJh aW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKKwkJICAgY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCSAgIHU4IGRwX3RyYWluX3BhdCkKIHsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKQEAgLTM4 MjEsNiArMzgxOSw3IEBAIGNwdF9zZXRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwLAogCiBzdGF0aWMgdm9pZAogZzR4X3NldF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsCisJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LAogCQkgICB1OCBkcF90cmFpbl9wYXQpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7CkBAIC0zODU2LDcgKzM4NTUsOCBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9kcF9lbmFibGVfcG9ydChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAog CiAJLyogZW5hYmxlIHdpdGggcGF0dGVybiAxIChhcyBwZXIgc3BlYykgKi8KIAotCWludGVsX2Rw X3Byb2dyYW1fbGlua190cmFpbmluZ19wYXR0ZXJuKGludGVsX2RwLCBEUF9UUkFJTklOR19QQVRU RVJOXzEpOworCWludGVsX2RwX3Byb2dyYW1fbGlua190cmFpbmluZ19wYXR0ZXJuKGludGVsX2Rw LCBjcnRjX3N0YXRlLAorCQkJCQkgICAgICAgRFBfVFJBSU5JTkdfUEFUVEVSTl8xKTsKIAogCS8q CiAJICogTWFnaWMgZm9yIFZMVi9DSFYuIFdlIF9tdXN0XyBmaXJzdCBzZXQgdXAgdGhlIHJlZ2lz dGVyCkBAIC0zOTQ3LDggKzM5NDcsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfZHAoc3Ry dWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAKIAlpbnRlbF9kcF9zaW5rX2RwbXMoaW50 ZWxfZHAsIERSTV9NT0RFX0RQTVNfT04pOwogCWludGVsX2RwX2NvbmZpZ3VyZV9wcm90b2NvbF9j b252ZXJ0ZXIoaW50ZWxfZHApOwotCWludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oaW50ZWxfZHAp OwotCWludGVsX2RwX3N0b3BfbGlua190cmFpbihpbnRlbF9kcCk7CisJaW50ZWxfZHBfc3RhcnRf bGlua190cmFpbihpbnRlbF9kcCwgcGlwZV9jb25maWcpOworCWludGVsX2RwX3N0b3BfbGlua190 cmFpbihpbnRlbF9kcCwgcGlwZV9jb25maWcpOwogCiAJaWYgKHBpcGVfY29uZmlnLT5oYXNfYXVk aW8pIHsKIAkJZHJtX2RiZygmZGV2X3ByaXYtPmRybSwgIkVuYWJsaW5nIERQIGF1ZGlvIG9uIHBp cGUgJWNcbiIsCkBAIC00MTU3LDEyICs0MTU3LDE0IEBAIGludGVsX2RwX2dldF9saW5rX3N0YXR1 cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1OCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRV CiAJCQkJRFBfTElOS19TVEFUVVNfU0laRSkgPT0gRFBfTElOS19TVEFUVVNfU0laRTsKIH0KIAot c3RhdGljIHU4IGludGVsX2RwX3ZvbHRhZ2VfbWF4XzIoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCkKK3N0YXRpYyB1OCBpbnRlbF9kcF92b2x0YWdlX21heF8yKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAsCisJCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQog ewogCXJldHVybiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzI7CiB9CiAKLXN0YXRpYyB1 OCBpbnRlbF9kcF92b2x0YWdlX21heF8zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCitzdGF0 aWMgdTggaW50ZWxfZHBfdm9sdGFnZV9tYXhfMyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAor CQkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKIAlyZXR1 cm4gRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8zOwogfQpAQCAtNDE3Nyw3ICs0MTc5LDgg QEAgc3RhdGljIHU4IGludGVsX2RwX3ByZWVtcGhfbWF4XzMoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCkKIAlyZXR1cm4gRFBfVFJBSU5fUFJFX0VNUEhfTEVWRUxfMzsKIH0KIAotc3RhdGljIHZv aWQgdmx2X3NldF9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCitzdGF0 aWMgdm9pZCB2bHZfc2V0X3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwK KwkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewogCXN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gJmRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+ YmFzZTsKIAl1bnNpZ25lZCBsb25nIGRlbXBoX3JlZ192YWx1ZSwgcHJlZW1waF9yZWdfdmFsdWUs CkBAIC00MjU3LDExICs0MjYwLDEzIEBAIHN0YXRpYyB2b2lkIHZsdl9zZXRfc2lnbmFsX2xldmVs cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCQlyZXR1cm47CiAJfQogCi0Jdmx2X3NldF9w aHlfc2lnbmFsX2xldmVsKGVuY29kZXIsIGRlbXBoX3JlZ192YWx1ZSwgcHJlZW1waF9yZWdfdmFs dWUsCisJdmx2X3NldF9waHlfc2lnbmFsX2xldmVsKGVuY29kZXIsIGNydGNfc3RhdGUsCisJCQkJ IGRlbXBoX3JlZ192YWx1ZSwgcHJlZW1waF9yZWdfdmFsdWUsCiAJCQkJIHVuaXF0cmFuc2NhbGVf cmVnX3ZhbHVlLCAwKTsKIH0KIAotc3RhdGljIHZvaWQgY2h2X3NldF9zaWduYWxfbGV2ZWxzKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCitzdGF0aWMgdm9pZCBjaHZfc2V0X3NpZ25hbF9sZXZl bHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKKwkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewogCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy ID0gJmRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+YmFzZTsKIAl1MzIgZGVlbXBoX3JlZ192YWx1 ZSwgbWFyZ2luX3JlZ192YWx1ZTsKQEAgLTQzMzgsOCArNDM0Myw5IEBAIHN0YXRpYyB2b2lkIGNo dl9zZXRfc2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCQlyZXR1cm47 CiAJfQogCi0JY2h2X3NldF9waHlfc2lnbmFsX2xldmVsKGVuY29kZXIsIGRlZW1waF9yZWdfdmFs dWUsCi0JCQkJIG1hcmdpbl9yZWdfdmFsdWUsIHVuaXFfdHJhbnNfc2NhbGUpOworCWNodl9zZXRf cGh5X3NpZ25hbF9sZXZlbChlbmNvZGVyLCBjcnRjX3N0YXRlLAorCQkJCSBkZWVtcGhfcmVnX3Zh bHVlLCBtYXJnaW5fcmVnX3ZhbHVlLAorCQkJCSB1bmlxX3RyYW5zX3NjYWxlKTsKIH0KIAogc3Rh dGljIHUzMiBnNHhfc2lnbmFsX2xldmVscyh1OCB0cmFpbl9zZXQpCkBAIC00MzgwLDcgKzQzODYs OCBAQCBzdGF0aWMgdTMyIGc0eF9zaWduYWxfbGV2ZWxzKHU4IHRyYWluX3NldCkKIH0KIAogc3Rh dGljIHZvaWQKLWc0eF9zZXRfc2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KQorZzR4X3NldF9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCisJCSAg ICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwogCXU4 IHRyYWluX3NldCA9IGludGVsX2RwLT50cmFpbl9zZXRbMF07CkBAIC00NDI3LDcgKzQ0MzQsOCBA QCBzdGF0aWMgdTMyIHNuYl9jcHVfZWRwX3NpZ25hbF9sZXZlbHModTggdHJhaW5fc2V0KQogfQog CiBzdGF0aWMgdm9pZAotc25iX2NwdV9lZHBfc2V0X3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCkKK3NuYl9jcHVfZWRwX3NldF9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsCisJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90 b19pOTE1KGludGVsX2RwKTsKIAl1OCB0cmFpbl9zZXQgPSBpbnRlbF9kcC0+dHJhaW5fc2V0WzBd OwpAQCAtNDQ3OCw3ICs0NDg2LDggQEAgc3RhdGljIHUzMiBpdmJfY3B1X2VkcF9zaWduYWxfbGV2 ZWxzKHU4IHRyYWluX3NldCkKIH0KIAogc3RhdGljIHZvaWQKLWl2Yl9jcHVfZWRwX3NldF9zaWdu YWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCitpdmJfY3B1X2VkcF9zZXRfc2ln bmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAorCQkJICAgICAgY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7CiAJdTggdHJhaW5fc2V0ID0g aW50ZWxfZHAtPnRyYWluX3NldFswXTsKQEAgLTQ0OTYsNyArNDUwNSw4IEBAIGl2Yl9jcHVfZWRw X3NldF9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJaW50ZWxfZGVf cG9zdGluZ19yZWFkKGRldl9wcml2LCBpbnRlbF9kcC0+b3V0cHV0X3JlZyk7CiB9CiAKLXZvaWQg aW50ZWxfZHBfc2V0X3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKK3Zv aWQgaW50ZWxfZHBfc2V0X3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwK KwkJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKIAl1 OCB0cmFpbl9zZXQgPSBpbnRlbF9kcC0+dHJhaW5fc2V0WzBdOwpAQCAtNDUxMCwxMSArNDUyMCwx MiBAQCB2b2lkIGludGVsX2RwX3NldF9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHApCiAJCSAgICB0cmFpbl9zZXQgJiBEUF9UUkFJTl9NQVhfUFJFX0VNUEhBU0lTX1JFQUNI RUQgPwogCQkgICAgIiAobWF4KSIgOiAiIik7CiAKLQlpbnRlbF9kcC0+c2V0X3NpZ25hbF9sZXZl bHMoaW50ZWxfZHApOworCWludGVsX2RwLT5zZXRfc2lnbmFsX2xldmVscyhpbnRlbF9kcCwgY3J0 Y19zdGF0ZSk7CiB9CiAKIHZvaWQKIGludGVsX2RwX3Byb2dyYW1fbGlua190cmFpbmluZ19wYXR0 ZXJuKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCisJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJCSAgICAgICB1OCBkcF90cmFpbl9wYXQp CiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRl bF9kcCk7CkBAIC00NTI1LDEzICs0NTM2LDE0IEBAIGludGVsX2RwX3Byb2dyYW1fbGlua190cmFp bmluZ19wYXR0ZXJuKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJCQkgICAgIlVzaW5nIERQ IHRyYWluaW5nIHBhdHRlcm4gVFBTJWRcbiIsCiAJCQkgICAgZHBfdHJhaW5fcGF0ICYgdHJhaW5f cGF0X21hc2spOwogCi0JaW50ZWxfZHAtPnNldF9saW5rX3RyYWluKGludGVsX2RwLCBkcF90cmFp bl9wYXQpOworCWludGVsX2RwLT5zZXRfbGlua190cmFpbihpbnRlbF9kcCwgY3J0Y19zdGF0ZSwg ZHBfdHJhaW5fcGF0KTsKIH0KIAotdm9pZCBpbnRlbF9kcF9zZXRfaWRsZV9saW5rX3RyYWluKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCit2b2lkIGludGVsX2RwX3NldF9pZGxlX2xpbmtfdHJh aW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKKwkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewogCWlmIChpbnRlbF9kcC0+c2V0X2lkbGVfbGlua190 cmFpbikKLQkJaW50ZWxfZHAtPnNldF9pZGxlX2xpbmtfdHJhaW4oaW50ZWxfZHApOworCQlpbnRl bF9kcC0+c2V0X2lkbGVfbGlua190cmFpbihpbnRlbF9kcCwgY3J0Y19zdGF0ZSk7CiB9CiAKIHN0 YXRpYyB2b2lkCkBAIC01NDI0LDE0ICs1NDM2LDE0IEBAIHN0YXRpYyB1OCBpbnRlbF9kcF9hdXRv dGVzdF9lZGlkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJcmV0dXJuIHRlc3RfcmVzdWx0 OwogfQogCi1zdGF0aWMgdm9pZCBpbnRlbF9kcF9waHlfcGF0dGVybl91cGRhdGUoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCkKK3N0YXRpYyB2b2lkIGludGVsX2RwX3BoeV9wYXR0ZXJuX3VwZGF0 ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAorCQkJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPQogCQkJdG9faTkxNShkcF90b19kaWdfcG9ydChpbnRlbF9kcCktPmJhc2UuYmFzZS5kZXYp OwotCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQo aW50ZWxfZHApOwogCXN0cnVjdCBkcm1fZHBfcGh5X3Rlc3RfcGFyYW1zICpkYXRhID0KIAkJCSZp bnRlbF9kcC0+Y29tcGxpYW5jZS50ZXN0X2RhdGEucGh5dGVzdDsKLQlzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoZGlnX3BvcnQtPmJhc2UuYmFzZS5jcnRjKTsKKwlzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRj KTsKIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CiAJdTMyIHBhdHRlcm5fdmFsOwogCkBA IC01NDkxLDcgKzU1MDMsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9waHlfcGF0dGVybl91cGRh dGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIH0KIAogc3RhdGljIHZvaWQKLWludGVsX2Rw X2F1dG90ZXN0X3BoeV9kZGlfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQoraW50 ZWxfZHBfYXV0b3Rlc3RfcGh5X2RkaV9kaXNhYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAs CisJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKIAlz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVs X2RwKTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXY7 CkBAIC01NTE3LDcgKzU1MzAsOCBAQCBpbnRlbF9kcF9hdXRvdGVzdF9waHlfZGRpX2Rpc2FibGUo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIH0KIAogc3RhdGljIHZvaWQKLWludGVsX2RwX2F1 dG90ZXN0X3BoeV9kZGlfZW5hYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHVpbnQ4X3Qg bGFuZV9jbnQpCitpbnRlbF9kcF9hdXRvdGVzdF9waHlfZGRpX2VuYWJsZShzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwLAorCQkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGRwX3RvX2Rp Z19wb3J0KGludGVsX2RwKTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGlnX3BvcnQtPmJh c2UuYmFzZS5kZXY7CkBAIC01NTQzLDcgKzU1NTcsOCBAQCBpbnRlbF9kcF9hdXRvdGVzdF9waHlf ZGRpX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1aW50OF90IGxhbmVfY250KQog CQkgICAgICAgdHJhbnNfZGRpX2Z1bmNfY3RsX3ZhbHVlKTsKIH0KIAotc3RhdGljIHZvaWQgaW50 ZWxfZHBfcHJvY2Vzc19waHlfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQorc3Rh dGljIHZvaWQgaW50ZWxfZHBfcHJvY2Vzc19waHlfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLAorCQkJCQkgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp CiB7CiAJc3RydWN0IGRybV9kcF9waHlfdGVzdF9wYXJhbXMgKmRhdGEgPQogCQkmaW50ZWxfZHAt PmNvbXBsaWFuY2UudGVzdF9kYXRhLnBoeXRlc3Q7CkBAIC01NTU1LDE1ICs1NTcwLDE1IEBAIHN0 YXRpYyB2b2lkIGludGVsX2RwX3Byb2Nlc3NfcGh5X3JlcXVlc3Qoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCkKIAl9CiAKIAkvKiByZXRyaWV2ZSB2c3dpbmcgJiBwcmUtZW1waGFzaXMgc2V0dGlu ZyAqLwotCWludGVsX2RwX2dldF9hZGp1c3RfdHJhaW4oaW50ZWxfZHAsIGxpbmtfc3RhdHVzKTsK KwlpbnRlbF9kcF9nZXRfYWRqdXN0X3RyYWluKGludGVsX2RwLCBjcnRjX3N0YXRlLCBsaW5rX3N0 YXR1cyk7CiAKLQlpbnRlbF9kcF9hdXRvdGVzdF9waHlfZGRpX2Rpc2FibGUoaW50ZWxfZHApOwor CWludGVsX2RwX2F1dG90ZXN0X3BoeV9kZGlfZGlzYWJsZShpbnRlbF9kcCwgY3J0Y19zdGF0ZSk7 CiAKLQlpbnRlbF9kcF9zZXRfc2lnbmFsX2xldmVscyhpbnRlbF9kcCk7CisJaW50ZWxfZHBfc2V0 X3NpZ25hbF9sZXZlbHMoaW50ZWxfZHAsIGNydGNfc3RhdGUpOwogCi0JaW50ZWxfZHBfcGh5X3Bh dHRlcm5fdXBkYXRlKGludGVsX2RwKTsKKwlpbnRlbF9kcF9waHlfcGF0dGVybl91cGRhdGUoaW50 ZWxfZHAsIGNydGNfc3RhdGUpOwogCi0JaW50ZWxfZHBfYXV0b3Rlc3RfcGh5X2RkaV9lbmFibGUo aW50ZWxfZHAsIGRhdGEtPm51bV9sYW5lcyk7CisJaW50ZWxfZHBfYXV0b3Rlc3RfcGh5X2RkaV9l bmFibGUoaW50ZWxfZHAsIGNydGNfc3RhdGUpOwogCiAJZHJtX2RwX3NldF9waHlfdGVzdF9wYXR0 ZXJuKCZpbnRlbF9kcC0+YXV4LCBkYXRhLAogCQkJCSAgICBsaW5rX3N0YXR1c1tEUF9EUENEX1JF Vl0pOwpAQCAtNTcxOSw2ICs1NzM0LDEwIEBAIGludGVsX2RwX25lZWRzX2xpbmtfcmV0cmFpbihz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCS8qCiAJICogVmFsaWRhdGUgdGhlIGNhY2hlZCB2 YWx1ZXMgb2YgaW50ZWxfZHAtPmxpbmtfcmF0ZSBhbmQKIAkgKiBpbnRlbF9kcC0+bGFuZV9jb3Vu dCBiZWZvcmUgYXR0ZW1wdGluZyB0byByZXRyYWluLgorCSAqCisJICogRklYTUUgd291bGQgYmUg bmljZSB0byB1c2VyIHRoZSBjcnRjIHN0YXRlIGhlcmUsIGJ1dCBzaW5jZQorCSAqIHdlIG5lZWQg dG8gY2FsbCB0aGlzIGZyb20gdGhlIHNob3J0IEhQRCBoYW5kbGVyIHRoYXQgc2VlbXMKKwkgKiBh IGJpdCBoYXJkLgogCSAqLwogCWlmICghaW50ZWxfZHBfbGlua19wYXJhbXNfdmFsaWQoaW50ZWxf ZHAsIGludGVsX2RwLT5saW5rX3JhdGUsCiAJCQkJCWludGVsX2RwLT5sYW5lX2NvdW50KSkKQEAg LTU4NTIsOCArNTg3MSwyMCBAQCBpbnQgaW50ZWxfZHBfcmV0cmFpbl9saW5rKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAogCQkJCQkJCSAgICAgIGludGVsX2NydGNfcGNoX3RyYW5zY29k ZXIoY3J0YyksIGZhbHNlKTsKIAl9CiAKLQlpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKGludGVs X2RwKTsKLQlpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oaW50ZWxfZHApOworCWZvcl9lYWNoX2lu dGVsX2NydGNfbWFzaygmZGV2X3ByaXYtPmRybSwgY3J0YywgY3J0Y19tYXNrKSB7CisJCWNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0KKwkJCXRvX2ludGVsX2NydGNf c3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSk7CisKKwkJLyogcmV0cmFpbiBvbiB0aGUgTVNUIG1hc3Rl ciB0cmFuc2NvZGVyICovCisJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyICYmCisJCSAg ICBpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9EUF9NU1QpICYm CisJCSAgICBjcnRjX3N0YXRlLT5jcHVfdHJhbnNjb2RlciAhPSBjcnRjX3N0YXRlLT5tc3RfbWFz dGVyX3RyYW5zY29kZXIpCisJCQljb250aW51ZTsKKworCQlpbnRlbF9kcF9zdGFydF9saW5rX3Ry YWluKGludGVsX2RwLCBjcnRjX3N0YXRlKTsKKwkJaW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKGlu dGVsX2RwLCBjcnRjX3N0YXRlKTsKKwkJYnJlYWs7CisJfQogCiAJZm9yX2VhY2hfaW50ZWxfY3J0 Y19tYXNrKCZkZXZfcHJpdi0+ZHJtLCBjcnRjLCBjcnRjX21hc2spIHsKIAkJY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPQpAQCAtNTkyMyw2ICs1OTU0LDcgQEAgc3Rh dGljIGludCBpbnRlbF9kcF9kb19waHlfdGVzdChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29k ZXItPmJhc2UuZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVs X2RwKGVuY29kZXIpOworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjOwogCXUzMiBjcnRjX21hc2s7 CiAJaW50IHJldDsKIApAQCAtNTk0MCw3ICs1OTcyLDIwIEBAIHN0YXRpYyBpbnQgaW50ZWxfZHBf ZG9fcGh5X3Rlc3Qoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAKIAlkcm1fZGJnX2tt cygmZGV2X3ByaXYtPmRybSwgIltFTkNPREVSOiVkOiVzXSBQSFkgdGVzdFxuIiwKIAkJICAgIGVu Y29kZXItPmJhc2UuYmFzZS5pZCwgZW5jb2Rlci0+YmFzZS5uYW1lKTsKLQlpbnRlbF9kcF9wcm9j ZXNzX3BoeV9yZXF1ZXN0KGludGVsX2RwKTsKKworCWZvcl9lYWNoX2ludGVsX2NydGNfbWFzaygm ZGV2X3ByaXYtPmRybSwgY3J0YywgY3J0Y19tYXNrKSB7CisJCWNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlID0KKwkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFz ZS5zdGF0ZSk7CisKKwkJLyogdGVzdCBvbiB0aGUgTVNUIG1hc3RlciB0cmFuc2NvZGVyICovCisJ CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyICYmCisJCSAgICBpbnRlbF9jcnRjX2hhc190 eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9EUF9NU1QpICYmCisJCSAgICBjcnRjX3N0YXRl LT5jcHVfdHJhbnNjb2RlciAhPSBjcnRjX3N0YXRlLT5tc3RfbWFzdGVyX3RyYW5zY29kZXIpCisJ CQljb250aW51ZTsKKworCQlpbnRlbF9kcF9wcm9jZXNzX3BoeV9yZXF1ZXN0KGludGVsX2RwLCBj cnRjX3N0YXRlKTsKKwkJYnJlYWs7CisJfQogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2RwLmgKaW5kZXggNjBmNDRmNDFmZDA4Li42Njg1NGFhYjk4ODcg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmgKQEAgLTQ1LDggKzQ1LDcg QEAgYm9vbCBpbnRlbF9kcF9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg aTkxNV9yZWdfdCBvdXRwdXRfcmVnLAogYm9vbCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1 Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCwKIAkJCSAgICAgc3RydWN0IGludGVsX2Nv bm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKTsKIHZvaWQgaW50ZWxfZHBfc2V0X2xpbmtfcGFyYW1z KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCi0JCQkgICAgICBpbnQgbGlua19yYXRlLCB1OCBs YW5lX2NvdW50LAotCQkJICAgICAgYm9vbCBsaW5rX21zdCk7CisJCQkgICAgICBpbnQgbGlua19y YXRlLCBpbnQgbGFuZV9jb3VudCk7CiBpbnQgaW50ZWxfZHBfZ2V0X2xpbmtfdHJhaW5fZmFsbGJh Y2tfdmFsdWVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJCQkJCSAgICBpbnQgbGlua19y YXRlLCB1OCBsYW5lX2NvdW50KTsKIGludCBpbnRlbF9kcF9yZXRyYWluX2xpbmsoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCkBAIC05MywxMCArOTIsMTMgQEAgdm9pZCBpbnRlbF9lZHBf ZHJyc19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIHZvaWQKIGlu dGVsX2RwX3Byb2dyYW1fbGlua190cmFpbmluZ19wYXR0ZXJuKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAsCisJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAogCQkJCSAgICAgICB1OCBkcF90cmFpbl9wYXQpOwogdm9pZAotaW50ZWxfZHBfc2V0X3Np Z25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Ci12b2lkIGludGVsX2RwX3Nl dF9pZGxlX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7CitpbnRlbF9kcF9z ZXRfc2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAorCQkJICAgY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwordm9pZCBpbnRlbF9kcF9zZXRf aWRsZV9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCisJCQkJICBjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7CiB2b2lkIGludGVsX2RwX2NvbXB1 dGVfcmF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgcG9ydF9jbG9jaywKIAkJCSAg IHU4ICpsaW5rX2J3LCB1OCAqcmF0ZV9zZWxlY3QpOwogYm9vbCBpbnRlbF9kcF9zb3VyY2Vfc3Vw cG9ydHNfaGJyMihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBfbGlua190cmFpbmluZy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMKaW5kZXggZjJj OGI1NmJlOWVhLi41MWU4ZDQ2ZDliN2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZHBfbGlua190cmFpbmluZy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZHBfbGlua190cmFpbmluZy5jCkBAIC00OSw4ICs0OSwxMCBAQCBz dGF0aWMgdTggZHBfdm9sdGFnZV9tYXgodTggcHJlZW1waCkKIAl9CiB9CiAKLXZvaWQgaW50ZWxf ZHBfZ2V0X2FkanVzdF90cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAotCQkJICAgICAg IGNvbnN0IHU4IGxpbmtfc3RhdHVzW0RQX0xJTktfU1RBVFVTX1NJWkVdKQordm9pZAoraW50ZWxf ZHBfZ2V0X2FkanVzdF90cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAorCQkJICBjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgY29uc3QgdTggbGlu a19zdGF0dXNbRFBfTElOS19TVEFUVVNfU0laRV0pCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUgPSBkcF90b19pOTE1KGludGVsX2RwKTsKIAl1OCB2ID0gMDsKQEAgLTU5LDcgKzYx LDcgQEAgdm9pZCBpbnRlbF9kcF9nZXRfYWRqdXN0X3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAsCiAJdTggdm9sdGFnZV9tYXg7CiAJdTggcHJlZW1waF9tYXg7CiAKLQlmb3IgKGxhbmUg PSAwOyBsYW5lIDwgaW50ZWxfZHAtPmxhbmVfY291bnQ7IGxhbmUrKykgeworCWZvciAobGFuZSA9 IDA7IGxhbmUgPCBjcnRjX3N0YXRlLT5sYW5lX2NvdW50OyBsYW5lKyspIHsKIAkJdiA9IG1heCh2 LCBkcm1fZHBfZ2V0X2FkanVzdF9yZXF1ZXN0X3ZvbHRhZ2UobGlua19zdGF0dXMsIGxhbmUpKTsK IAkJcCA9IG1heChwLCBkcm1fZHBfZ2V0X2FkanVzdF9yZXF1ZXN0X3ByZV9lbXBoYXNpcyhsaW5r X3N0YXR1cywgbGFuZSkpOwogCX0KQEAgLTc0LDcgKzc2LDcgQEAgdm9pZCBpbnRlbF9kcF9nZXRf YWRqdXN0X3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAKIAl2ID0gbWluKHYsIGRw X3ZvbHRhZ2VfbWF4KHApKTsKIAotCXZvbHRhZ2VfbWF4ID0gaW50ZWxfZHAtPnZvbHRhZ2VfbWF4 KGludGVsX2RwKTsKKwl2b2x0YWdlX21heCA9IGludGVsX2RwLT52b2x0YWdlX21heChpbnRlbF9k cCwgY3J0Y19zdGF0ZSk7CiAJZHJtX1dBUk5fT05fT05DRSgmaTkxNS0+ZHJtLAogCQkJIHZvbHRh Z2VfbWF4ICE9IERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMiAmJgogCQkJIHZvbHRhZ2Vf bWF4ICE9IERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMyk7CkBAIC04OCwxMiArOTAsMTQg QEAgdm9pZCBpbnRlbF9kcF9nZXRfYWRqdXN0X3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAsCiAKIHN0YXRpYyBib29sCiBpbnRlbF9kcF9zZXRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwLAorCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCiAJCQl1OCBkcF90cmFpbl9wYXQpCiB7CiAJdTggYnVmW3NpemVvZihpbnRlbF9kcC0+dHJh aW5fc2V0KSArIDFdOwogCWludCByZXQsIGxlbjsKIAotCWludGVsX2RwX3Byb2dyYW1fbGlua190 cmFpbmluZ19wYXR0ZXJuKGludGVsX2RwLCBkcF90cmFpbl9wYXQpOworCWludGVsX2RwX3Byb2dy YW1fbGlua190cmFpbmluZ19wYXR0ZXJuKGludGVsX2RwLCBjcnRjX3N0YXRlLAorCQkJCQkgICAg ICAgZHBfdHJhaW5fcGF0KTsKIAogCWJ1ZlswXSA9IGRwX3RyYWluX3BhdDsKIAlpZiAoKGRwX3Ry YWluX3BhdCAmIERQX1RSQUlOSU5HX1BBVFRFUk5fTUFTSykgPT0KQEAgLTEwMiw4ICsxMDYsOCBA QCBpbnRlbF9kcF9zZXRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCQls ZW4gPSAxOwogCX0gZWxzZSB7CiAJCS8qIERQX1RSQUlOSU5HX0xBTkV4X1NFVCBmb2xsb3cgRFBf VFJBSU5JTkdfUEFUVEVSTl9TRVQgKi8KLQkJbWVtY3B5KGJ1ZiArIDEsIGludGVsX2RwLT50cmFp bl9zZXQsIGludGVsX2RwLT5sYW5lX2NvdW50KTsKLQkJbGVuID0gaW50ZWxfZHAtPmxhbmVfY291 bnQgKyAxOworCQltZW1jcHkoYnVmICsgMSwgaW50ZWxfZHAtPnRyYWluX3NldCwgY3J0Y19zdGF0 ZS0+bGFuZV9jb3VudCk7CisJCWxlbiA9IGNydGNfc3RhdGUtPmxhbmVfY291bnQgKyAxOwogCX0K IAogCXJldCA9IGRybV9kcF9kcGNkX3dyaXRlKCZpbnRlbF9kcC0+YXV4LCBEUF9UUkFJTklOR19Q QVRURVJOX1NFVCwKQEAgLTExNCwzMSArMTE4LDM0IEBAIGludGVsX2RwX3NldF9saW5rX3RyYWlu KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAKIHN0YXRpYyBib29sCiBpbnRlbF9kcF9yZXNl dF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCi0JCQl1OCBkcF90cmFpbl9w YXQpCisJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJ ICB1OCBkcF90cmFpbl9wYXQpCiB7CiAJbWVtc2V0KGludGVsX2RwLT50cmFpbl9zZXQsIDAsIHNp emVvZihpbnRlbF9kcC0+dHJhaW5fc2V0KSk7Ci0JaW50ZWxfZHBfc2V0X3NpZ25hbF9sZXZlbHMo aW50ZWxfZHApOwotCXJldHVybiBpbnRlbF9kcF9zZXRfbGlua190cmFpbihpbnRlbF9kcCwgZHBf dHJhaW5fcGF0KTsKKwlpbnRlbF9kcF9zZXRfc2lnbmFsX2xldmVscyhpbnRlbF9kcCwgY3J0Y19z dGF0ZSk7CisJcmV0dXJuIGludGVsX2RwX3NldF9saW5rX3RyYWluKGludGVsX2RwLCBjcnRjX3N0 YXRlLCBkcF90cmFpbl9wYXQpOwogfQogCiBzdGF0aWMgYm9vbAotaW50ZWxfZHBfdXBkYXRlX2xp bmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKK2ludGVsX2RwX3VwZGF0ZV9saW5r X3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCisJCQkgICBjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKIAlpbnQgcmV0OwogCi0JaW50ZWxfZHBfc2V0 X3NpZ25hbF9sZXZlbHMoaW50ZWxfZHApOworCWludGVsX2RwX3NldF9zaWduYWxfbGV2ZWxzKGlu dGVsX2RwLCBjcnRjX3N0YXRlKTsKIAogCXJldCA9IGRybV9kcF9kcGNkX3dyaXRlKCZpbnRlbF9k cC0+YXV4LCBEUF9UUkFJTklOR19MQU5FMF9TRVQsCi0JCQkJaW50ZWxfZHAtPnRyYWluX3NldCwg aW50ZWxfZHAtPmxhbmVfY291bnQpOworCQkJCWludGVsX2RwLT50cmFpbl9zZXQsIGNydGNfc3Rh dGUtPmxhbmVfY291bnQpOwogCi0JcmV0dXJuIHJldCA9PSBpbnRlbF9kcC0+bGFuZV9jb3VudDsK KwlyZXR1cm4gcmV0ID09IGNydGNfc3RhdGUtPmxhbmVfY291bnQ7CiB9CiAKLXN0YXRpYyBib29s IGludGVsX2RwX2xpbmtfbWF4X3Zzd2luZ19yZWFjaGVkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCitzdGF0aWMgYm9vbCBpbnRlbF9kcF9saW5rX21heF92c3dpbmdfcmVhY2hlZChzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLAorCQkJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQogewogCWludCBsYW5lOwogCi0JZm9yIChsYW5lID0gMDsgbGFuZSA8 IGludGVsX2RwLT5sYW5lX2NvdW50OyBsYW5lKyspCisJZm9yIChsYW5lID0gMDsgbGFuZSA8IGNy dGNfc3RhdGUtPmxhbmVfY291bnQ7IGxhbmUrKykKIAkJaWYgKChpbnRlbF9kcC0+dHJhaW5fc2V0 W2xhbmVdICYKIAkJICAgICBEUF9UUkFJTl9NQVhfU1dJTkdfUkVBQ0hFRCkgPT0gMCkKIAkJCXJl dHVybiBmYWxzZTsKQEAgLTE0OCw3ICsxNTUsOCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9kcF9saW5r X21heF92c3dpbmdfcmVhY2hlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCiAvKiBFbmFi bGUgY29ycmVzcG9uZGluZyBwb3J0IGFuZCBzdGFydCB0cmFpbmluZyBwYXR0ZXJuIDEgKi8KIHN0 YXRpYyBib29sCi1pbnRlbF9kcF9saW5rX3RyYWluaW5nX2Nsb2NrX3JlY292ZXJ5KHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHApCitpbnRlbF9kcF9saW5rX3RyYWluaW5nX2Nsb2NrX3JlY292ZXJ5 KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCisJCQkJICAgICAgY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUgPSBkcF90b19pOTE1KGludGVsX2RwKTsKIAl1OCB2b2x0YWdlOwpAQCAtMTU4LDkgKzE2Niw5 IEBAIGludGVsX2RwX2xpbmtfdHJhaW5pbmdfY2xvY2tfcmVjb3Zlcnkoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkKIAl1OCBsaW5rX2J3LCByYXRlX3NlbGVjdDsKIAogCWlmIChpbnRlbF9kcC0+ cHJlcGFyZV9saW5rX3JldHJhaW4pCi0JCWludGVsX2RwLT5wcmVwYXJlX2xpbmtfcmV0cmFpbihp bnRlbF9kcCk7CisJCWludGVsX2RwLT5wcmVwYXJlX2xpbmtfcmV0cmFpbihpbnRlbF9kcCwgY3J0 Y19zdGF0ZSk7CiAKLQlpbnRlbF9kcF9jb21wdXRlX3JhdGUoaW50ZWxfZHAsIGludGVsX2RwLT5s aW5rX3JhdGUsCisJaW50ZWxfZHBfY29tcHV0ZV9yYXRlKGludGVsX2RwLCBjcnRjX3N0YXRlLT5w b3J0X2Nsb2NrLAogCQkJICAgICAgJmxpbmtfYncsICZyYXRlX3NlbGVjdCk7CiAKIAlpZiAobGlu a19idykKQEAgLTE3Miw3ICsxODAsNyBAQCBpbnRlbF9kcF9saW5rX3RyYWluaW5nX2Nsb2NrX3Jl Y292ZXJ5KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAKIAkvKiBXcml0ZSB0aGUgbGluayBj b25maWd1cmF0aW9uIGRhdGEgKi8KIAlsaW5rX2NvbmZpZ1swXSA9IGxpbmtfYnc7Ci0JbGlua19j b25maWdbMV0gPSBpbnRlbF9kcC0+bGFuZV9jb3VudDsKKwlsaW5rX2NvbmZpZ1sxXSA9IGNydGNf c3RhdGUtPmxhbmVfY291bnQ7CiAJaWYgKGRybV9kcF9lbmhhbmNlZF9mcmFtZV9jYXAoaW50ZWxf ZHAtPmRwY2QpKQogCQlsaW5rX2NvbmZpZ1sxXSB8PSBEUF9MQU5FX0NPVU5UX0VOSEFOQ0VEX0ZS QU1FX0VOOwogCWRybV9kcF9kcGNkX3dyaXRlKCZpbnRlbF9kcC0+YXV4LCBEUF9MSU5LX0JXX1NF VCwgbGlua19jb25maWcsIDIpOwpAQCAtMTg5LDcgKzE5Nyw3IEBAIGludGVsX2RwX2xpbmtfdHJh aW5pbmdfY2xvY2tfcmVjb3Zlcnkoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAlpbnRlbF9k cC0+RFAgfD0gRFBfUE9SVF9FTjsKIAogCS8qIGNsb2NrIHJlY292ZXJ5ICovCi0JaWYgKCFpbnRl bF9kcF9yZXNldF9saW5rX3RyYWluKGludGVsX2RwLAorCWlmICghaW50ZWxfZHBfcmVzZXRfbGlu a190cmFpbihpbnRlbF9kcCwgY3J0Y19zdGF0ZSwKIAkJCQkgICAgICAgRFBfVFJBSU5JTkdfUEFU VEVSTl8xIHwKIAkJCQkgICAgICAgRFBfTElOS19TQ1JBTUJMSU5HX0RJU0FCTEUpKSB7CiAJCWRy bV9lcnIoJmk5MTUtPmRybSwgImZhaWxlZCB0byBlbmFibGUgbGluayB0cmFpbmluZ1xuIik7CkBA IC0yMjAsNyArMjI4LDcgQEAgaW50ZWxfZHBfbGlua190cmFpbmluZ19jbG9ja19yZWNvdmVyeShz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAKLQkJaWYg KGRybV9kcF9jbG9ja19yZWNvdmVyeV9vayhsaW5rX3N0YXR1cywgaW50ZWxfZHAtPmxhbmVfY291 bnQpKSB7CisJCWlmIChkcm1fZHBfY2xvY2tfcmVjb3Zlcnlfb2sobGlua19zdGF0dXMsIGNydGNf c3RhdGUtPmxhbmVfY291bnQpKSB7CiAJCQlkcm1fZGJnX2ttcygmaTkxNS0+ZHJtLCAiY2xvY2sg cmVjb3ZlcnkgT0tcbiIpOwogCQkJcmV0dXJuIHRydWU7CiAJCX0KQEAgLTIzOSw4ICsyNDcsOCBA QCBpbnRlbF9kcF9saW5rX3RyYWluaW5nX2Nsb2NrX3JlY292ZXJ5KHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHApCiAJCXZvbHRhZ2UgPSBpbnRlbF9kcC0+dHJhaW5fc2V0WzBdICYgRFBfVFJBSU5f Vk9MVEFHRV9TV0lOR19NQVNLOwogCiAJCS8qIFVwZGF0ZSB0cmFpbmluZyBzZXQgYXMgcmVxdWVz dGVkIGJ5IHRhcmdldCAqLwotCQlpbnRlbF9kcF9nZXRfYWRqdXN0X3RyYWluKGludGVsX2RwLCBs aW5rX3N0YXR1cyk7Ci0JCWlmICghaW50ZWxfZHBfdXBkYXRlX2xpbmtfdHJhaW4oaW50ZWxfZHAp KSB7CisJCWludGVsX2RwX2dldF9hZGp1c3RfdHJhaW4oaW50ZWxfZHAsIGNydGNfc3RhdGUsIGxp bmtfc3RhdHVzKTsKKwkJaWYgKCFpbnRlbF9kcF91cGRhdGVfbGlua190cmFpbihpbnRlbF9kcCwg Y3J0Y19zdGF0ZSkpIHsKIAkJCWRybV9lcnIoJmk5MTUtPmRybSwKIAkJCQkiZmFpbGVkIHRvIHVw ZGF0ZSBsaW5rIHRyYWluaW5nXG4iKTsKIAkJCXJldHVybiBmYWxzZTsKQEAgLTI1Miw3ICsyNjAs NyBAQCBpbnRlbF9kcF9saW5rX3RyYWluaW5nX2Nsb2NrX3JlY292ZXJ5KHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApCiAJCWVsc2UKIAkJCXZvbHRhZ2VfdHJpZXMgPSAxOwogCi0JCWlmIChpbnRl bF9kcF9saW5rX21heF92c3dpbmdfcmVhY2hlZChpbnRlbF9kcCkpCisJCWlmIChpbnRlbF9kcF9s aW5rX21heF92c3dpbmdfcmVhY2hlZChpbnRlbF9kcCwgY3J0Y19zdGF0ZSkpCiAJCQltYXhfdnN3 aW5nX3JlYWNoZWQgPSB0cnVlOwogCiAJfQpAQCAtMjY2LDcgKzI3NCw4IEBAIGludGVsX2RwX2xp bmtfdHJhaW5pbmdfY2xvY2tfcmVjb3Zlcnkoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKICAq IG9yIGZvciAxLjQgZGV2aWNlcyB0aGF0IHN1cHBvcnQgaXQsIHRyYWluaW5nIFBhdHRlcm4gMyBm b3IgSEJSMgogICogb3IgMS4yIGRldmljZXMgdGhhdCBzdXBwb3J0IGl0LCBUcmFpbmluZyBQYXR0 ZXJuIDIgb3RoZXJ3aXNlLgogICovCi1zdGF0aWMgdTMyIGludGVsX2RwX3RyYWluaW5nX3BhdHRl cm4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKK3N0YXRpYyB1MzIgaW50ZWxfZHBfdHJhaW5p bmdfcGF0dGVybihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAorCQkJCSAgICAgY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7CiAJYm9vbCBzb3VyY2VfdHBzMywg c2lua190cHMzLCBzb3VyY2VfdHBzNCwgc2lua190cHM0OwogCkBAIC0yODAsNyArMjg5LDcgQEAg c3RhdGljIHUzMiBpbnRlbF9kcF90cmFpbmluZ19wYXR0ZXJuKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHApCiAJc2lua190cHM0ID0gZHJtX2RwX3RwczRfc3VwcG9ydGVkKGludGVsX2RwLT5kcGNk KTsKIAlpZiAoc291cmNlX3RwczQgJiYgc2lua190cHM0KSB7CiAJCXJldHVybiBEUF9UUkFJTklO R19QQVRURVJOXzQ7Ci0JfSBlbHNlIGlmIChpbnRlbF9kcC0+bGlua19yYXRlID09IDgxMDAwMCkg eworCX0gZWxzZSBpZiAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA9PSA4MTAwMDApIHsKIAkJaWYg KCFzb3VyY2VfdHBzNCkKIAkJCWRybV9kYmdfa21zKCZkcF90b19pOTE1KGludGVsX2RwKS0+ZHJt LAogCQkJCSAgICAiOC4xIEdicHMgbGluayByYXRlIHdpdGhvdXQgc291cmNlIEhCUjMvVFBTNCBz dXBwb3J0XG4iKTsKQEAgLTI5Nyw3ICszMDYsNyBAQCBzdGF0aWMgdTMyIGludGVsX2RwX3RyYWlu aW5nX3BhdHRlcm4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAlzaW5rX3RwczMgPSBkcm1f ZHBfdHBzM19zdXBwb3J0ZWQoaW50ZWxfZHAtPmRwY2QpOwogCWlmIChzb3VyY2VfdHBzMyAmJiBz aW5rX3RwczMpIHsKIAkJcmV0dXJuICBEUF9UUkFJTklOR19QQVRURVJOXzM7Ci0JfSBlbHNlIGlm IChpbnRlbF9kcC0+bGlua19yYXRlID49IDU0MDAwMCkgeworCX0gZWxzZSBpZiAoY3J0Y19zdGF0 ZS0+cG9ydF9jbG9jayA+PSA1NDAwMDApIHsKIAkJaWYgKCFzb3VyY2VfdHBzMykKIAkJCWRybV9k Ymdfa21zKCZkcF90b19pOTE1KGludGVsX2RwKS0+ZHJtLAogCQkJCSAgICAiPj01LjQvNi40OCBH YnBzIGxpbmsgcmF0ZSB3aXRob3V0IHNvdXJjZSBIQlIyL1RQUzMgc3VwcG9ydFxuIik7CkBAIC0z MTAsNyArMzE5LDggQEAgc3RhdGljIHUzMiBpbnRlbF9kcF90cmFpbmluZ19wYXR0ZXJuKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApCiB9CiAKIHN0YXRpYyBib29sCi1pbnRlbF9kcF9saW5rX3Ry YWluaW5nX2NoYW5uZWxfZXF1YWxpemF0aW9uKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCitp bnRlbF9kcF9saW5rX3RyYWluaW5nX2NoYW5uZWxfZXF1YWxpemF0aW9uKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsCisJCQkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGRwX3RvX2k5MTUo aW50ZWxfZHApOwogCWludCB0cmllczsKQEAgLTMxOCwxMyArMzI4LDEzIEBAIGludGVsX2RwX2xp bmtfdHJhaW5pbmdfY2hhbm5lbF9lcXVhbGl6YXRpb24oc3RydWN0IGludGVsX2RwICppbnRlbF9k cCkKIAl1OCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpFXTsKIAlib29sIGNoYW5uZWxf ZXEgPSBmYWxzZTsKIAotCXRyYWluaW5nX3BhdHRlcm4gPSBpbnRlbF9kcF90cmFpbmluZ19wYXR0 ZXJuKGludGVsX2RwKTsKKwl0cmFpbmluZ19wYXR0ZXJuID0gaW50ZWxfZHBfdHJhaW5pbmdfcGF0 dGVybihpbnRlbF9kcCwgY3J0Y19zdGF0ZSk7CiAJLyogU2NyYW1ibGluZyBpcyBkaXNhYmxlZCBm b3IgVFBTMi8zIGFuZCBlbmFibGVkIGZvciBUUFM0ICovCiAJaWYgKHRyYWluaW5nX3BhdHRlcm4g IT0gRFBfVFJBSU5JTkdfUEFUVEVSTl80KQogCQl0cmFpbmluZ19wYXR0ZXJuIHw9IERQX0xJTktf U0NSQU1CTElOR19ESVNBQkxFOwogCiAJLyogY2hhbm5lbCBlcXVhbGl6YXRpb24gKi8KLQlpZiAo IWludGVsX2RwX3NldF9saW5rX3RyYWluKGludGVsX2RwLAorCWlmICghaW50ZWxfZHBfc2V0X2xp bmtfdHJhaW4oaW50ZWxfZHAsIGNydGNfc3RhdGUsCiAJCQkJICAgICB0cmFpbmluZ19wYXR0ZXJu KSkgewogCQlkcm1fZXJyKCZpOTE1LT5kcm0sICJmYWlsZWQgdG8gc3RhcnQgY2hhbm5lbCBlcXVh bGl6YXRpb25cbiIpOwogCQlyZXR1cm4gZmFsc2U7CkBAIC0zNDEsNyArMzUxLDcgQEAgaW50ZWxf ZHBfbGlua190cmFpbmluZ19jaGFubmVsX2VxdWFsaXphdGlvbihzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKQogCiAJCS8qIE1ha2Ugc3VyZSBjbG9jayBpcyBzdGlsbCBvayAqLwogCQlpZiAoIWRy bV9kcF9jbG9ja19yZWNvdmVyeV9vayhsaW5rX3N0YXR1cywKLQkJCQkJICAgICAgaW50ZWxfZHAt PmxhbmVfY291bnQpKSB7CisJCQkJCSAgICAgIGNydGNfc3RhdGUtPmxhbmVfY291bnQpKSB7CiAJ CQlpbnRlbF9kcF9kdW1wX2xpbmtfc3RhdHVzKGxpbmtfc3RhdHVzKTsKIAkJCWRybV9kYmdfa21z KCZpOTE1LT5kcm0sCiAJCQkJICAgICJDbG9jayByZWNvdmVyeSBjaGVjayBmYWlsZWQsIGNhbm5v dCAiCkBAIC0zNTAsNyArMzYwLDcgQEAgaW50ZWxfZHBfbGlua190cmFpbmluZ19jaGFubmVsX2Vx dWFsaXphdGlvbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCQl9CiAKIAkJaWYgKGRybV9k cF9jaGFubmVsX2VxX29rKGxpbmtfc3RhdHVzLAotCQkJCQkgaW50ZWxfZHAtPmxhbmVfY291bnQp KSB7CisJCQkJCSBjcnRjX3N0YXRlLT5sYW5lX2NvdW50KSkgewogCQkJY2hhbm5lbF9lcSA9IHRy dWU7CiAJCQlkcm1fZGJnX2ttcygmaTkxNS0+ZHJtLCAiQ2hhbm5lbCBFUSBkb25lLiBEUCBUcmFp bmluZyAiCiAJCQkJICAgICJzdWNjZXNzZnVsXG4iKTsKQEAgLTM1OCw4ICszNjgsOCBAQCBpbnRl bF9kcF9saW5rX3RyYWluaW5nX2NoYW5uZWxfZXF1YWxpemF0aW9uKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHApCiAJCX0KIAogCQkvKiBVcGRhdGUgdHJhaW5pbmcgc2V0IGFzIHJlcXVlc3RlZCBi eSB0YXJnZXQgKi8KLQkJaW50ZWxfZHBfZ2V0X2FkanVzdF90cmFpbihpbnRlbF9kcCwgbGlua19z dGF0dXMpOwotCQlpZiAoIWludGVsX2RwX3VwZGF0ZV9saW5rX3RyYWluKGludGVsX2RwKSkgewor CQlpbnRlbF9kcF9nZXRfYWRqdXN0X3RyYWluKGludGVsX2RwLCBjcnRjX3N0YXRlLCBsaW5rX3N0 YXR1cyk7CisJCWlmICghaW50ZWxfZHBfdXBkYXRlX2xpbmtfdHJhaW4oaW50ZWxfZHAsIGNydGNf c3RhdGUpKSB7CiAJCQlkcm1fZXJyKCZpOTE1LT5kcm0sCiAJCQkJImZhaWxlZCB0byB1cGRhdGUg bGluayB0cmFpbmluZ1xuIik7CiAJCQlicmVhazsKQEAgLTM3MywzNSArMzgzLDM3IEBAIGludGVs X2RwX2xpbmtfdHJhaW5pbmdfY2hhbm5lbF9lcXVhbGl6YXRpb24oc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCkKIAkJCSAgICAiQ2hhbm5lbCBlcXVhbGl6YXRpb24gZmFpbGVkIDUgdGltZXNcbiIp OwogCX0KIAotCWludGVsX2RwX3NldF9pZGxlX2xpbmtfdHJhaW4oaW50ZWxfZHApOworCWludGVs X2RwX3NldF9pZGxlX2xpbmtfdHJhaW4oaW50ZWxfZHAsIGNydGNfc3RhdGUpOwogCiAJcmV0dXJu IGNoYW5uZWxfZXE7CiAKIH0KIAotdm9pZCBpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCkKK3ZvaWQgaW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsCisJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSkKIHsKIAlpbnRlbF9kcC0+bGlua190cmFpbmVkID0gdHJ1ZTsKIAot CWludGVsX2RwX3NldF9saW5rX3RyYWluKGludGVsX2RwLAorCWludGVsX2RwX3NldF9saW5rX3Ry YWluKGludGVsX2RwLCBjcnRjX3N0YXRlLAogCQkJCURQX1RSQUlOSU5HX1BBVFRFUk5fRElTQUJM RSk7CiB9CiAKIHZvaWQKLWludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkKK2ludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwKKwkJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp CiB7CiAJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yID0gaW50ZWxfZHAt PmF0dGFjaGVkX2Nvbm5lY3RvcjsKIAotCWlmICghaW50ZWxfZHBfbGlua190cmFpbmluZ19jbG9j a19yZWNvdmVyeShpbnRlbF9kcCkpCisJaWYgKCFpbnRlbF9kcF9saW5rX3RyYWluaW5nX2Nsb2Nr X3JlY292ZXJ5KGludGVsX2RwLCBjcnRjX3N0YXRlKSkKIAkJZ290byBmYWlsdXJlX2hhbmRsaW5n OwotCWlmICghaW50ZWxfZHBfbGlua190cmFpbmluZ19jaGFubmVsX2VxdWFsaXphdGlvbihpbnRl bF9kcCkpCisJaWYgKCFpbnRlbF9kcF9saW5rX3RyYWluaW5nX2NoYW5uZWxfZXF1YWxpemF0aW9u KGludGVsX2RwLCBjcnRjX3N0YXRlKSkKIAkJZ290byBmYWlsdXJlX2hhbmRsaW5nOwogCiAJZHJt X2RiZ19rbXMoJmRwX3RvX2k5MTUoaW50ZWxfZHApLT5kcm0sCiAJCSAgICAiW0NPTk5FQ1RPUjol ZDolc10gTGluayBUcmFpbmluZyBQYXNzZWQgYXQgTGluayBSYXRlID0gJWQsIExhbmUgY291bnQg PSAlZCIsCiAJCSAgICBpbnRlbF9jb25uZWN0b3ItPmJhc2UuYmFzZS5pZCwKIAkJICAgIGludGVs X2Nvbm5lY3Rvci0+YmFzZS5uYW1lLAotCQkgICAgaW50ZWxfZHAtPmxpbmtfcmF0ZSwgaW50ZWxf ZHAtPmxhbmVfY291bnQpOworCQkgICAgY3J0Y19zdGF0ZS0+cG9ydF9jbG9jaywgY3J0Y19zdGF0 ZS0+bGFuZV9jb3VudCk7CiAJcmV0dXJuOwogCiAgZmFpbHVyZV9oYW5kbGluZzoKQEAgLTQwOSwx NSArNDIxLDE1IEBAIGludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCkKIAkJICAgICJbQ09OTkVDVE9SOiVkOiVzXSBMaW5rIFRyYWluaW5nIGZhaWxlZCBh dCBsaW5rIHJhdGUgPSAlZCwgbGFuZSBjb3VudCA9ICVkIiwKIAkJICAgIGludGVsX2Nvbm5lY3Rv ci0+YmFzZS5iYXNlLmlkLAogCQkgICAgaW50ZWxfY29ubmVjdG9yLT5iYXNlLm5hbWUsCi0JCSAg ICBpbnRlbF9kcC0+bGlua19yYXRlLCBpbnRlbF9kcC0+bGFuZV9jb3VudCk7CisJCSAgICBjcnRj X3N0YXRlLT5wb3J0X2Nsb2NrLCBjcnRjX3N0YXRlLT5sYW5lX2NvdW50KTsKIAogCWlmIChpbnRl bF9kcC0+aG9ibF9hY3RpdmUpIHsKIAkJZHJtX2RiZ19rbXMoJmRwX3RvX2k5MTUoaW50ZWxfZHAp LT5kcm0sCiAJCQkgICAgIkxpbmsgVHJhaW5pbmcgZmFpbGVkIHdpdGggSE9CTCBhY3RpdmUsIG5v dCBlbmFibGluZyBpdCBmcm9tIG5vdyBvbiIpOwogCQlpbnRlbF9kcC0+aG9ibF9mYWlsZWQgPSB0 cnVlOwogCX0gZWxzZSBpZiAoaW50ZWxfZHBfZ2V0X2xpbmtfdHJhaW5fZmFsbGJhY2tfdmFsdWVz KGludGVsX2RwLAotCQkJCQkJCSAgIGludGVsX2RwLT5saW5rX3JhdGUsCi0JCQkJCQkJICAgaW50 ZWxfZHAtPmxhbmVfY291bnQpKSB7CisJCQkJCQkJICAgY3J0Y19zdGF0ZS0+cG9ydF9jbG9jaywK KwkJCQkJCQkgICBjcnRjX3N0YXRlLT5sYW5lX2NvdW50KSkgewogCQlyZXR1cm47CiAJfQogCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX2xpbmtfdHJh aW5pbmcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBfbGlua190cmFp bmluZy5oCmluZGV4IDAxZjFkYWJiYjA2MC4uNjQ4YTZkMWY5ZmEyIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuaApAQCAt OCwxMSArOCwxNSBAQAogCiAjaW5jbHVkZSA8ZHJtL2RybV9kcF9oZWxwZXIuaD4KIAorc3RydWN0 IGludGVsX2NydGNfc3RhdGU7CiBzdHJ1Y3QgaW50ZWxfZHA7CiAKIHZvaWQgaW50ZWxfZHBfZ2V0 X2FkanVzdF90cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAorCQkJICAgICAgIGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJICAgICAgIGNvbnN0IHU4 IGxpbmtfc3RhdHVzW0RQX0xJTktfU1RBVFVTX1NJWkVdKTsKLXZvaWQgaW50ZWxfZHBfc3RhcnRf bGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKLXZvaWQgaW50ZWxfZHBfc3Rv cF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwordm9pZCBpbnRlbF9kcF9z dGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCisJCQkgICAgICAgY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwordm9pZCBpbnRlbF9kcF9z dG9wX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKKwkJCSAgICAgIGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKIAogI2VuZGlmIC8qIF9fSU5U RUxfRFBfTElOS19UUkFJTklOR19IX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZHBpb19waHkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZHBpb19waHkuYwppbmRleCA3OTEwNTIyMjczYjIuLjUxNGM0YTdhZGZmYyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcGlvX3BoeS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBpb19waHkuYwpAQCAtNjQ0 LDE2ICs2NDQsMTYgQEAgYnh0X2RkaV9waHlfZ2V0X2xhbmVfbGF0X29wdGltX21hc2soc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiAJcmV0dXJuIG1hc2s7CiB9CiAKLQogdm9pZCBjaHZf c2V0X3BoeV9zaWduYWxfbGV2ZWwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkg ICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCSAgICAg IHUzMiBkZWVtcGhfcmVnX3ZhbHVlLCB1MzIgbWFyZ2luX3JlZ192YWx1ZSwKIAkJCSAgICAgIGJv b2wgdW5pcV90cmFuc19zY2FsZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICpkaWdfcG9ydCA9IGVuY190b19kaWdfcG9ydChlbmNvZGVyKTsKLQlzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKKwlz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5j cnRjKTsKIAllbnVtIGRwaW9fY2hhbm5lbCBjaCA9IHZsdl9kaWdfcG9ydF90b19jaGFubmVsKGRp Z19wb3J0KTsKLQllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7CisJZW51bSBwaXBl IHBpcGUgPSBjcnRjLT5waXBlOwogCXUzMiB2YWw7CiAJaW50IGk7CiAKQEAgLTY2Niw3ICs2NjYs NyBAQCB2b2lkIGNodl9zZXRfcGh5X3NpZ25hbF9sZXZlbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKIAl2YWwgfD0gRFBJT19QQ1NfVFgxREVFTVBfOVA1IHwgRFBJT19QQ1NfVFgyREVF TVBfOVA1OwogCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFcxMChj aCksIHZhbCk7CiAKLQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50ID4gMikgewor CWlmIChjcnRjX3N0YXRlLT5sYW5lX2NvdW50ID4gMikgewogCQl2YWwgPSB2bHZfZHBpb19yZWFk KGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcxMChjaCkpOwogCQl2YWwgJj0gfihEUElPX1BD U19TV0lOR19DQUxDX1RYMF9UWDIgfCBEUElPX1BDU19TV0lOR19DQUxDX1RYMV9UWDMpOwogCQl2 YWwgJj0gfihEUElPX1BDU19UWDFERUVNUF9NQVNLIHwgRFBJT19QQ1NfVFgyREVFTVBfTUFTSyk7 CkBAIC02NzksNyArNjc5LDcgQEAgdm9pZCBjaHZfc2V0X3BoeV9zaWduYWxfbGV2ZWwoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJdmFsIHw9IERQSU9fUENTX1RYMU1BUkdJTl8wMDAg fCBEUElPX1BDU19UWDJNQVJHSU5fMDAwOwogCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBl LCBWTFZfUENTMDFfRFc5KGNoKSwgdmFsKTsKIAotCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmxh bmVfY291bnQgPiAyKSB7CisJaWYgKGNydGNfc3RhdGUtPmxhbmVfY291bnQgPiAyKSB7CiAJCXZh bCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzkoY2gpKTsKIAkJ dmFsICY9IH4oRFBJT19QQ1NfVFgxTUFSR0lOX01BU0sgfCBEUElPX1BDU19UWDJNQVJHSU5fTUFT Syk7CiAJCXZhbCB8PSBEUElPX1BDU19UWDFNQVJHSU5fMDAwIHwgRFBJT19QQ1NfVFgyTUFSR0lO XzAwMDsKQEAgLTY4Nyw3ICs2ODcsNyBAQCB2b2lkIGNodl9zZXRfcGh5X3NpZ25hbF9sZXZlbChz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAl9CiAKIAkvKiBQcm9ncmFtIHN3aW5nIGRl ZW1waCAqLwotCWZvciAoaSA9IDA7IGkgPCBpbnRlbF9jcnRjLT5jb25maWctPmxhbmVfY291bnQ7 IGkrKykgeworCWZvciAoaSA9IDA7IGkgPCBjcnRjX3N0YXRlLT5sYW5lX2NvdW50OyBpKyspIHsK IAkJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgQ0hWX1RYX0RXNChjaCwgaSkp OwogCQl2YWwgJj0gfkRQSU9fU1dJTkdfREVFTVBIOVA1X01BU0s7CiAJCXZhbCB8PSBkZWVtcGhf cmVnX3ZhbHVlIDw8IERQSU9fU1dJTkdfREVFTVBIOVA1X1NISUZUOwpAQCAtNjk1LDcgKzY5NSw3 IEBAIHZvaWQgY2h2X3NldF9waHlfc2lnbmFsX2xldmVsKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAogCX0KIAogCS8qIFByb2dyYW0gc3dpbmcgbWFyZ2luICovCi0JZm9yIChpID0gMDsg aSA8IGludGVsX2NydGMtPmNvbmZpZy0+bGFuZV9jb3VudDsgaSsrKSB7CisJZm9yIChpID0gMDsg aSA8IGNydGNfc3RhdGUtPmxhbmVfY291bnQ7IGkrKykgewogCQl2YWwgPSB2bHZfZHBpb19yZWFk KGRldl9wcml2LCBwaXBlLCBDSFZfVFhfRFcyKGNoLCBpKSk7CiAKIAkJdmFsICY9IH5EUElPX1NX SU5HX01BUkdJTjAwMF9NQVNLOwpAQCAtNzE4LDcgKzcxOCw3IEBAIHZvaWQgY2h2X3NldF9waHlf c2lnbmFsX2xldmVsKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCSAqIEZvciBub3cs IGZvciB0aGlzIHVuaXF1ZSB0cmFuc2l0aW9uIHNjYWxlIHNlbGVjdGlvbiwgc2V0IGJpdAogCSAq IDI3IGZvciBjaDAgYW5kIGNoMS4KIAkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgaW50ZWxfY3J0Yy0+ Y29uZmlnLT5sYW5lX2NvdW50OyBpKyspIHsKKwlmb3IgKGkgPSAwOyBpIDwgY3J0Y19zdGF0ZS0+ bGFuZV9jb3VudDsgaSsrKSB7CiAJCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUs IENIVl9UWF9EVzMoY2gsIGkpKTsKIAkJaWYgKHVuaXFfdHJhbnNfc2NhbGUpCiAJCQl2YWwgfD0g RFBJT19UWF9VTklRX1RSQU5TX1NDQUxFX0VOOwpAQCAtNzMyLDcgKzczMiw3IEBAIHZvaWQgY2h2 X3NldF9waHlfc2lnbmFsX2xldmVsKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCXZh bCB8PSBEUElPX1BDU19TV0lOR19DQUxDX1RYMF9UWDIgfCBEUElPX1BDU19TV0lOR19DQUxDX1RY MV9UWDM7CiAJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzEwKGNo KSwgdmFsKTsKIAotCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmxhbmVfY291bnQgPiAyKSB7CisJ aWYgKGNydGNfc3RhdGUtPmxhbmVfY291bnQgPiAyKSB7CiAJCXZhbCA9IHZsdl9kcGlvX3JlYWQo ZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEwKGNoKSk7CiAJCXZhbCB8PSBEUElPX1BDU19T V0lOR19DQUxDX1RYMF9UWDIgfCBEUElPX1BDU19TV0lOR19DQUxDX1RYMV9UWDM7CiAJCXZsdl9k cGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcxMChjaCksIHZhbCk7CkBAIC05 OTIsMTQgKzk5MiwxNSBAQCB2b2lkIGNodl9waHlfcG9zdF9wbGxfZGlzYWJsZShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKIH0KIAogdm9pZCB2bHZfc2V0X3BoeV9zaWduYWxfbGV2ZWwo c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCSAgICAgIHUzMiBkZW1waF9yZWdfdmFsdWUs IHUzMiBwcmVlbXBoX3JlZ192YWx1ZSwKIAkJCSAgICAgIHUzMiB1bmlxdHJhbnNjYWxlX3JlZ192 YWx1ZSwgdTMyIHR4M19kZW1waCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKIAlzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGVuY190b19kaWdfcG9ydChlbmNvZGVyKTsKKwlz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5j cnRjKTsKIAllbnVtIGRwaW9fY2hhbm5lbCBwb3J0ID0gdmx2X2RpZ19wb3J0X3RvX2NoYW5uZWwo ZGlnX3BvcnQpOwotCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKKwllbnVtIHBp cGUgcGlwZSA9IGNydGMtPnBpcGU7CiAKIAl2bHZfZHBpb19nZXQoZGV2X3ByaXYpOwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwaW9fcGh5LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwaW9fcGh5LmgKaW5kZXggZjQxOGFh YjkwYjdlLi42NDczNDQwZTc0NTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZHBpb19waHkuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2RwaW9fcGh5LmgKQEAgLTMyLDYgKzMyLDcgQEAgdm9pZCBieHRfZGRpX3BoeV9zZXRf bGFuZV9vcHRpbV9tYXNrKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogdTggYnh0X2Rk aV9waHlfZ2V0X2xhbmVfbGF0X29wdGltX21hc2soc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIpOwogCiB2b2lkIGNodl9zZXRfcGh5X3NpZ25hbF9sZXZlbChzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKKwkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAogCQkJICAgICAgdTMyIGRlZW1waF9yZWdfdmFsdWUsIHUzMiBtYXJnaW5fcmVnX3Zh bHVlLAogCQkJICAgICAgYm9vbCB1bmlxX3RyYW5zX3NjYWxlKTsKIHZvaWQgY2h2X2RhdGFfbGFu ZV9zb2Z0X3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLApAQCAtNDYsNiArNDcs NyBAQCB2b2lkIGNodl9waHlfcG9zdF9wbGxfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0 Y19zdGF0ZSk7CiAKIHZvaWQgdmx2X3NldF9waHlfc2lnbmFsX2xldmVsKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAorCQkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCiAJCQkgICAgICB1MzIgZGVtcGhfcmVnX3ZhbHVlLCB1MzIgcHJlZW1waF9y ZWdfdmFsdWUsCiAJCQkgICAgICB1MzIgdW5pcXRyYW5zY2FsZV9yZWdfdmFsdWUsIHUzMiB0eDNf ZGVtcGgpOwogdm9pZCB2bHZfcGh5X3ByZV9wbGxfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkbWkuYwppbmRl eCAzZjIwMDhkODQ1YzIuLjQxNGE0NmE2YjVmMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9oZG1pLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9oZG1pLmMKQEAgLTI3NzUsOCArMjc3NSw5IEBAIHN0YXRpYyB2b2lkIHZsdl9o ZG1pX3ByZV9lbmFibGUoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJdmx2X3Bo eV9wcmVfZW5jb2Rlcl9lbmFibGUoZW5jb2RlciwgcGlwZV9jb25maWcpOwogCiAJLyogSERNSSAx LjBWLTJkQiAqLwotCXZsdl9zZXRfcGh5X3NpZ25hbF9sZXZlbChlbmNvZGVyLCAweDJiMjQ1ZjVm LCAweDAwMDAyMDAwLCAweDU1NzhiODNhLAotCQkJCSAweDJiMjQ3ODc4KTsKKwl2bHZfc2V0X3Bo eV9zaWduYWxfbGV2ZWwoZW5jb2RlciwgcGlwZV9jb25maWcsCisJCQkJIDB4MmIyNDVmNWYsIDB4 MDAwMDIwMDAsCisJCQkJIDB4NTU3OGI4M2EsIDB4MmIyNDc4NzgpOwogCiAJZGlnX3BvcnQtPnNl dF9pbmZvZnJhbWVzKGVuY29kZXIsCiAJCQkgICAgICBwaXBlX2NvbmZpZy0+aGFzX2luZm9mcmFt ZSwKQEAgLTI4NTMsNyArMjg1NCw3IEBAIHN0YXRpYyB2b2lkIGNodl9oZG1pX3ByZV9lbmFibGUo c3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAKIAkvKiBGSVhNRTogUHJvZ3JhbSB0 aGUgc3VwcG9ydCB4eHggVi1kQiAqLwogCS8qIFVzZSA4MDBtVi0wZEIgKi8KLQljaHZfc2V0X3Bo eV9zaWduYWxfbGV2ZWwoZW5jb2RlciwgMTI4LCAxMDIsIGZhbHNlKTsKKwljaHZfc2V0X3BoeV9z aWduYWxfbGV2ZWwoZW5jb2RlciwgcGlwZV9jb25maWcsIDEyOCwgMTAyLCBmYWxzZSk7CiAKIAlk aWdfcG9ydC0+c2V0X2luZm9mcmFtZXMoZW5jb2RlciwKIAkJCSAgICAgIHBpcGVfY29uZmlnLT5o YXNfaW5mb2ZyYW1lLAotLSAKMi4yNi4yCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK