From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8E0D3C43460 for ; Thu, 6 May 2021 19:00:46 +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 558BD61001 for ; Thu, 6 May 2021 19:00:46 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 558BD61001 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 7A5326EDAA; Thu, 6 May 2021 18:57:55 +0000 (UTC) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id E4F296EDA1; Thu, 6 May 2021 18:57:14 +0000 (UTC) IronPort-SDR: XMyCyPpGYSChem0NYCx55uGeNVm0NfhrDY41a7RkJEPNIfDaYSLXWD2+QF9lV8GU6PKXFBJeai TxrI2QDHqnaQ== X-IronPort-AV: E=McAfee;i="6200,9189,9976"; a="196531036" X-IronPort-AV: E=Sophos;i="5.82,278,1613462400"; d="scan'208";a="196531036" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2021 11:57:14 -0700 IronPort-SDR: duhu1sLxNn4zNylFlQm3VHvn5PGFkdytZx2yuUkRxc+/0yFr78mRKxeDg+2fE2YqFYb4REx9Tl gzld4T4Yursw== X-IronPort-AV: E=Sophos;i="5.82,278,1613462400"; d="scan'208";a="469583638" Received: from dhiatt-server.jf.intel.com ([10.54.81.3]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2021 11:57:13 -0700 From: Matthew Brost To: , Date: Thu, 6 May 2021 12:14:39 -0700 Message-Id: <20210506191451.77768-86-matthew.brost@intel.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20210506191451.77768-1-matthew.brost@intel.com> References: <20210506191451.77768-1-matthew.brost@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [RFC PATCH 85/97] drm/i915/guc: Introduce guc_submit_engine object X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: jason.ekstrand@intel.com, daniel.vetter@intel.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" TW92ZSBmaWVsZHMgcmVsYXRlZCB0byBjb250cm9sbGluZyB0aGUgR3VDIHN1Ym1pc3Npb24gc3Rh dGUgbWFjaGluZSB0byBhCnVuaXF1ZSBvYmplY3QgKGd1Y19zdWJtaXRfZW5naW5lKSByYXRoZXIg dGhhbiB0aGUgZ2xvYmFsIEd1QyBzdGF0ZQooaW50ZWxfZ3VjKS4gVGhpcyBlbmNhcHN1bGF0aW9u IGFsbG93cyBtdWx0aXBsZSBpbnN0YW5jZXMgb2Ygc3VibWlzc2lvbgpvYmplY3RzIHRvIG9wZXJh dGUgaW4gcGFyYWxsZWwgYW5kIGEgc2luZ2xlIGluc3RhbmNlIGNhbiBibG9jayBpZiBuZWVkZWQK d2hpbGUgYW5vdGhlciBjYW4gbWFrZSBmb3J3YXJkIHByb2dyZXNzLiBUaGlzIGlzIGFuYWxvZ291 cyB0byBob3cgdGhlCmV4ZWNsaXN0IG1vZGUgd29ya3MgYXNzaWduaW5nIGEgc2NoZWR1bGUgb2Jq ZWN0IHBlciBwaHlzaWNhbCBlbmdpbmUgYnV0CnJhdGhlciBpbiBHdUMgbW9kZSB3ZSBhc3NpZ24g YSBzY2hlZHVsZSBvYmplY3QgYmFzZWQgb24gdGhlIGJsb2NraW5nCmRlcGVuZGVuY2llcy4KClRo ZSBndWNfc3VibWl0X2VuZ2luZSBvYmplY3QgYWxzbyBlbmNhcHN1bGF0ZXMgdGhlIGk5MTVfc2No ZWRfZW5naW5lCm9iamVjdCBhcyB3ZWxsLgoKTG90cyBvZiBmaW5kLXJlcGxhY2UuCgpDdXJyZW50 bHkgb25seSAxIGd1Y19zdWJtaXRfZW5naW5lIGluc3RhbnRpYXRlZCwgZnV0dXJlIHBhdGNoZXMg d2lsbAppbnN0YW50aWF0ZSBtb3JlLgoKU2lnbmVkLW9mZi1ieTogTWF0dGhldyBCcm9zdCA8bWF0 dGhldy5icm9zdEBpbnRlbC5jb20+CkNjOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25A SW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5oICAg ICAgICB8ICAzMyArLQogLi4uL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lv bi5jIHwgNTQ0ICsrKysrKysrKysrLS0tLS0tLQogLi4uL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1 Ym1pc3Npb25fdHlwZXMuaCAgIHwgIDUzICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Nj aGVkdWxlci5jICAgICAgICAgfCAgMjUgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2No ZWR1bGVyLmggICAgICAgICB8ICAgNSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hl ZHVsZXJfdHlwZXMuaCAgIHwgICAzICsKIDYgZmlsZXMgY2hhbmdlZCwgNDExIGluc2VydGlvbnMo KyksIDI1MiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbl90eXBlcy5oCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9pbnRlbF9ndWMuaAppbmRleCAyNmEwMjI1ZjQ1ZTkuLjkwNGYzYTk0MTgzMiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmgKQEAgLTIwLDYgKzIwLDExIEBACiAK IHN0cnVjdCBfX2d1Y19hZHNfYmxvYjsKIAorZW51bSB7CisJR1VDX1NVQk1JVF9FTkdJTkVfU0lO R0xFX0xSQywKKwlHVUNfU1VCTUlUX0VOR0lORV9NQVgKK307CisKIC8qCiAgKiBUb3AgbGV2ZWwg c3RydWN0dXJlIG9mIEd1Qy4gSXQgaGFuZGxlcyBmaXJtd2FyZSBsb2FkaW5nIGFuZCBtYW5hZ2Vz IGNsaWVudAogICogcG9vbC4gaW50ZWxfZ3VjIG93bnMgYSBpbnRlbF9ndWNfY2xpZW50IHRvIHJl cGxhY2UgdGhlIGxlZ2FjeSBFeGVjTGlzdApAQCAtMzAsMzEgKzM1LDYgQEAgc3RydWN0IGludGVs X2d1YyB7CiAJc3RydWN0IGludGVsX2d1Y19sb2cgbG9nOwogCXN0cnVjdCBpbnRlbF9ndWNfY3Qg Y3Q7CiAKLQkvKiBHbG9iYWwgZW5naW5lIHVzZWQgdG8gc3VibWl0IHJlcXVlc3RzIHRvIEd1QyAq LwotCXN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqc2NoZWRfZW5naW5lOwotCi0JLyogR2xvYmFs IHN0YXRlIHJlbGF0ZWQgdG8gc3VibWlzc2lvbiB0YXNrbGV0ICovCi0Jc3RydWN0IGk5MTVfcmVx dWVzdCAqc3RhbGxlZF9ycTsKLQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqc3RhbGxlZF9jb250ZXh0 OwotCXN0cnVjdCB3b3JrX3N0cnVjdCByZXRpcmVfd29ya2VyOwotCXVuc2lnbmVkIGxvbmcgZmxh Z3M7Ci0JaW50IHRvdGFsX251bV9ycV93aXRoX25vX2d1Y19pZDsKLQotCS8qCi0JICogU3VibWlz c29uIHN0YWxsIHJlYXNvbi4gU2VlIGludGVsX2d1Y19zdWJtaXNzaW9uLmMgZm9yIGRldGFpbGVk Ci0JICogZGVzY3JpcHRpb24uCi0JICovCi0JZW51bSB7Ci0JCVNUQUxMX05PTkUsCi0JCVNUQUxM X0dVQ19JRF9XT1JLUVVFVUUsCi0JCVNUQUxMX0dVQ19JRF9UQVNLTEVULAotCQlTVEFMTF9TQ0hF RF9ESVNBQkxFLAotCQlTVEFMTF9SRUdJU1RFUl9DT05URVhULAotCQlTVEFMTF9ERVJFR0lTVEVS X0NPTlRFWFQsCi0JCVNUQUxMX01PVkVfTFJDX1RBSUwsCi0JCVNUQUxMX0FERF9SRVFVRVNULAot CX0gc3VibWlzc2lvbl9zdGFsbF9yZWFzb247Ci0KIAkvKiBpbnRlbF9ndWNfcmVjdiBpbnRlcnJ1 cHQgcmVsYXRlZCBzdGF0ZSAqLwogCXNwaW5sb2NrX3QgaXJxX2xvY2s7CiAJdW5zaWduZWQgaW50 IG1zZ19lbmFibGVkX21hc2s7CkBAIC02OCw2ICs0OCw4IEBAIHN0cnVjdCBpbnRlbF9ndWMgewog CQl2b2lkICgqZGlzYWJsZSkoc3RydWN0IGludGVsX2d1YyAqZ3VjKTsKIAl9IGludGVycnVwdHM7 CiAKKwlzdHJ1Y3QgZ3VjX3N1Ym1pdF9lbmdpbmUgKmdzZVtHVUNfU1VCTUlUX0VOR0lORV9NQVhd OworCiAJLyoKIAkgKiBjb250ZXh0c19sb2NrIHByb3RlY3RzIHRoZSBwb29sIG9mIGZyZWUgZ3Vj IGlkcyBhbmQgYSBsaW5rZWQgbGlzdCBvZgogCSAqIGd1YyBpZHMgYXZhaWxhYmxlIHRvIGJlIHN0 b2xkZW4KQEAgLTc2LDcgKzU4LDYgQEAgc3RydWN0IGludGVsX2d1YyB7CiAJc3RydWN0IGlkYSBn dWNfaWRzOwogCXUzMiBudW1fZ3VjX2lkczsKIAl1MzIgbWF4X2d1Y19pZHM7Ci0JYXRvbWljX3Qg bnVtX2d1Y19pZHNfbm90X3JlYWR5OwogCXN0cnVjdCBsaXN0X2hlYWQgZ3VjX2lkX2xpc3Rfbm9f cmVmOwogCXN0cnVjdCBsaXN0X2hlYWQgZ3VjX2lkX2xpc3RfdW5waW5uZWQ7CiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCmluZGV4IGFh NWU2MDhkZWVkNS4uOWRjMGZmYzA3Y2Q3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRl ICJndC9pbnRlbF9yaW5nLmgiCiAKICNpbmNsdWRlICJpbnRlbF9ndWNfc3VibWlzc2lvbi5oIgor I2luY2x1ZGUgImludGVsX2d1Y19zdWJtaXNzaW9uX3R5cGVzLmgiCiAKICNpbmNsdWRlICJpOTE1 X2Rydi5oIgogI2luY2x1ZGUgImk5MTVfdHJhY2UuaCIKQEAgLTU3LDcgKzU4LDcgQEAKICAqIFdR X1RZUEVfSU5PUkRFUiBpcyBuZWVkZWQgdG8gc3VwcG9ydCBsZWdhY3kgc3VibWlzc2lvbiB2aWEg R3VDLCB3aGljaAogICogcmVwcmVzZW50cyBpbi1vcmRlciBxdWV1ZS4gVGhlIGtlcm5lbCBkcml2 ZXIgcGFja3MgcmluZyB0YWlsIHBvaW50ZXIgYW5kIGFuCiAgKiBFTFNQIGNvbnRleHQgZGVzY3Jp cHRvciBkd29yZCBpbnRvIFdvcmsgSXRlbS4KLSAqIFNlZSBndWNfYWRkX3JlcXVlc3QoKQorICog U2VlIGdzZV9hZGRfcmVxdWVzdCgpCiAgKgogICogR3VDIGZsb3cgY29udHJvbCBzdGF0ZSBtYWNo aW5lOgogICogVGhlIHRhc2tsZXQsIHdvcmtxdWV1ZSAocmV0aXJlX3dvcmtlciksIGFuZCB0aGUg RzJIIGhhbmRsZXJzIHRvZ2V0aGVyIG1vcmUgb3IKQEAgLTgwLDU3ICs4MSw1NyBAQAogICoJCQkJ Y29udGV4dCkKICAqLwogCi0vKiBHdUMgVmlydHVhbCBFbmdpbmUgKi8KLXN0cnVjdCBndWNfdmly dHVhbF9lbmdpbmUgewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgYmFzZTsKLQlzdHJ1Y3QgaW50 ZWxfY29udGV4dCBjb250ZXh0OwotfTsKLQogc3RhdGljIHN0cnVjdCBpbnRlbF9jb250ZXh0ICoK IGd1Y19jcmVhdGVfdmlydHVhbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoqc2libGluZ3MsIHVu c2lnbmVkIGludCBjb3VudCk7CiAKICNkZWZpbmUgR1VDX1JFUVVFU1RfU0laRSA2NCAvKiBieXRl cyAqLwogCitzdGF0aWMgaW5saW5lIHN0cnVjdCBndWNfc3VibWl0X2VuZ2luZSAqY2VfdG9fZ3Nl KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKK3sKKwlyZXR1cm4gY29udGFpbmVyX29mKGNlLT5l bmdpbmUtPnNjaGVkX2VuZ2luZSwgc3RydWN0IGd1Y19zdWJtaXRfZW5naW5lLAorCQkJICAgIHNj aGVkX2VuZ2luZSk7Cit9CisKIC8qCiAgKiBHbG9iYWwgR3VDIGZsYWdzIGhlbHBlciBmdW5jdGlv bnMKICAqLwogZW51bSB7Ci0JR1VDX1NUQVRFX1RBU0tMRVRfQkxPQ0tFRCwKLQlHVUNfU1RBVEVf R1VDX0lEU19FWEhBVVNURUQsCisJR1NFX1NUQVRFX1RBU0tMRVRfQkxPQ0tFRCwKKwlHU0VfU1RB VEVfR1VDX0lEU19FWEhBVVNURUQsCiB9OwogCi1zdGF0aWMgYm9vbCB0YXNrbGV0X2Jsb2NrZWQo c3RydWN0IGludGVsX2d1YyAqZ3VjKQorc3RhdGljIGJvb2wgdGFza2xldF9ibG9ja2VkKHN0cnVj dCBndWNfc3VibWl0X2VuZ2luZSAqZ3NlKQogewotCXJldHVybiB0ZXN0X2JpdChHVUNfU1RBVEVf VEFTS0xFVF9CTE9DS0VELCAmZ3VjLT5mbGFncyk7CisJcmV0dXJuIHRlc3RfYml0KEdTRV9TVEFU RV9UQVNLTEVUX0JMT0NLRUQsICZnc2UtPmZsYWdzKTsKIH0KIAotc3RhdGljIHZvaWQgc2V0X3Rh c2tsZXRfYmxvY2tlZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCitzdGF0aWMgdm9pZCBzZXRfdGFz a2xldF9ibG9ja2VkKHN0cnVjdCBndWNfc3VibWl0X2VuZ2luZSAqZ3NlKQogewotCWxvY2tkZXBf YXNzZXJ0X2hlbGQoJmd1Yy0+c2NoZWRfZW5naW5lLT5sb2NrKTsKLQlzZXRfYml0KEdVQ19TVEFU RV9UQVNLTEVUX0JMT0NLRUQsICZndWMtPmZsYWdzKTsKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZn c2UtPnNjaGVkX2VuZ2luZS5sb2NrKTsKKwlzZXRfYml0KEdTRV9TVEFURV9UQVNLTEVUX0JMT0NL RUQsICZnc2UtPmZsYWdzKTsKIH0KIAotc3RhdGljIHZvaWQgX19jbHJfdGFza2xldF9ibG9ja2Vk KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3N0YXRpYyB2b2lkIF9fY2xyX3Rhc2tsZXRfYmxvY2tl ZChzdHJ1Y3QgZ3VjX3N1Ym1pdF9lbmdpbmUgKmdzZSkKIHsKLQlsb2NrZGVwX2Fzc2VydF9oZWxk KCZndWMtPnNjaGVkX2VuZ2luZS0+bG9jayk7Ci0JY2xlYXJfYml0KEdVQ19TVEFURV9UQVNLTEVU X0JMT0NLRUQsICZndWMtPmZsYWdzKTsKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZnc2UtPnNjaGVk X2VuZ2luZS5sb2NrKTsKKwljbGVhcl9iaXQoR1NFX1NUQVRFX1RBU0tMRVRfQkxPQ0tFRCwgJmdz ZS0+ZmxhZ3MpOwogfQogCi1zdGF0aWMgdm9pZCBjbHJfdGFza2xldF9ibG9ja2VkKHN0cnVjdCBp bnRlbF9ndWMgKmd1YykKK3N0YXRpYyB2b2lkIGNscl90YXNrbGV0X2Jsb2NrZWQoc3RydWN0IGd1 Y19zdWJtaXRfZW5naW5lICpnc2UpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAotCXNwaW5f bG9ja19pcnFzYXZlKCZndWMtPnNjaGVkX2VuZ2luZS0+bG9jaywgZmxhZ3MpOwotCV9fY2xyX3Rh c2tsZXRfYmxvY2tlZChndWMpOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmd1Yy0+c2NoZWRf ZW5naW5lLT5sb2NrLCBmbGFncyk7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmdzZS0+c2NoZWRfZW5n aW5lLmxvY2ssIGZsYWdzKTsKKwlfX2Nscl90YXNrbGV0X2Jsb2NrZWQoZ3NlKTsKKwlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZnc2UtPnNjaGVkX2VuZ2luZS5sb2NrLCBmbGFncyk7CiB9CiAKLXN0 YXRpYyBib29sIGd1Y19pZHNfZXhoYXVzdGVkKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3N0YXRp YyBib29sIGd1Y19pZHNfZXhoYXVzdGVkKHN0cnVjdCBndWNfc3VibWl0X2VuZ2luZSAqZ3NlKQog ewotCXJldHVybiB0ZXN0X2JpdChHVUNfU1RBVEVfR1VDX0lEU19FWEhBVVNURUQsICZndWMtPmZs YWdzKTsKKwlyZXR1cm4gdGVzdF9iaXQoR1NFX1NUQVRFX0dVQ19JRFNfRVhIQVVTVEVELCAmZ3Nl LT5mbGFncyk7CiB9CiAKLXN0YXRpYyBib29sIHRlc3RfYW5kX3VwZGF0ZV9ndWNfaWRzX2V4aGF1 c3RlZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCitzdGF0aWMgYm9vbCB0ZXN0X2FuZF91cGRhdGVf Z3VjX2lkc19leGhhdXN0ZWQoc3RydWN0IGd1Y19zdWJtaXRfZW5naW5lICpnc2UpCiB7CiAJdW5z aWduZWQgbG9uZyBmbGFnczsKIAlib29sIHJldCA9IGZhbHNlOwpAQCAtMTM5LDMzICsxNDAsMzMg QEAgc3RhdGljIGJvb2wgdGVzdF9hbmRfdXBkYXRlX2d1Y19pZHNfZXhoYXVzdGVkKHN0cnVjdCBp bnRlbF9ndWMgKmd1YykKIAkgKiBTdHJpY3Qgb3JkZXJpbmcgb24gY2hlY2tpbmcgaWYgZ3VjX2lk cyBhcmUgZXhoYXVzdGVkIGlzbid0IHJlcXVpcmVkLAogCSAqIHNvIGxldCdzIGF2b2lkIGdyYWJi aW5nIHRoZSBzdWJtaXNzaW9uIGxvY2sgaWYgcG9zc2libGUuCiAJICovCi0JaWYgKGd1Y19pZHNf ZXhoYXVzdGVkKGd1YykpIHsKLQkJc3Bpbl9sb2NrX2lycXNhdmUoJmd1Yy0+c2NoZWRfZW5naW5l LT5sb2NrLCBmbGFncyk7Ci0JCXJldCA9IGd1Y19pZHNfZXhoYXVzdGVkKGd1Yyk7CisJaWYgKGd1 Y19pZHNfZXhoYXVzdGVkKGdzZSkpIHsKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmdzZS0+c2NoZWRf ZW5naW5lLmxvY2ssIGZsYWdzKTsKKwkJcmV0ID0gZ3VjX2lkc19leGhhdXN0ZWQoZ3NlKTsKIAkJ aWYgKHJldCkKLQkJCSsrZ3VjLT50b3RhbF9udW1fcnFfd2l0aF9ub19ndWNfaWQ7Ci0JCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmd1Yy0+c2NoZWRfZW5naW5lLT5sb2NrLCBmbGFncyk7CisJCQkr K2dzZS0+dG90YWxfbnVtX3JxX3dpdGhfbm9fZ3VjX2lkOworCQlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZnc2UtPnNjaGVkX2VuZ2luZS5sb2NrLCBmbGFncyk7CiAJfQogCiAJcmV0dXJuIHJldDsK IH0KIAotc3RhdGljIHZvaWQgc2V0X2FuZF91cGRhdGVfZ3VjX2lkc19leGhhdXN0ZWQoc3RydWN0 IGludGVsX2d1YyAqZ3VjKQorc3RhdGljIHZvaWQgc2V0X2FuZF91cGRhdGVfZ3VjX2lkc19leGhh dXN0ZWQoc3RydWN0IGd1Y19zdWJtaXRfZW5naW5lICpnc2UpCiB7CiAJdW5zaWduZWQgbG9uZyBm bGFnczsKIAotCXNwaW5fbG9ja19pcnFzYXZlKCZndWMtPnNjaGVkX2VuZ2luZS0+bG9jaywgZmxh Z3MpOwotCSsrZ3VjLT50b3RhbF9udW1fcnFfd2l0aF9ub19ndWNfaWQ7Ci0Jc2V0X2JpdChHVUNf U1RBVEVfR1VDX0lEU19FWEhBVVNURUQsICZndWMtPmZsYWdzKTsKLQlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZndWMtPnNjaGVkX2VuZ2luZS0+bG9jaywgZmxhZ3MpOworCXNwaW5fbG9ja19pcnFz YXZlKCZnc2UtPnNjaGVkX2VuZ2luZS5sb2NrLCBmbGFncyk7CisJKytnc2UtPnRvdGFsX251bV9y cV93aXRoX25vX2d1Y19pZDsKKwlzZXRfYml0KEdTRV9TVEFURV9HVUNfSURTX0VYSEFVU1RFRCwg JmdzZS0+ZmxhZ3MpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmdzZS0+c2NoZWRfZW5naW5l LmxvY2ssIGZsYWdzKTsKIH0KIAotc3RhdGljIHZvaWQgY2xyX2d1Y19pZHNfZXhoYXVzdGVkKHN0 cnVjdCBpbnRlbF9ndWMgKmd1YykKK3N0YXRpYyB2b2lkIGNscl9ndWNfaWRzX2V4aGF1c3RlZChz dHJ1Y3QgZ3VjX3N1Ym1pdF9lbmdpbmUgKmdzZSkKIHsKLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZn dWMtPnNjaGVkX2VuZ2luZS0+bG9jayk7Ci0JR0VNX0JVR19PTihndWMtPnRvdGFsX251bV9ycV93 aXRoX25vX2d1Y19pZCk7CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZ3NlLT5zY2hlZF9lbmdpbmUu bG9jayk7CisJR0VNX0JVR19PTihnc2UtPnRvdGFsX251bV9ycV93aXRoX25vX2d1Y19pZCk7CiAK LQljbGVhcl9iaXQoR1VDX1NUQVRFX0dVQ19JRFNfRVhIQVVTVEVELCAmZ3VjLT5mbGFncyk7CisJ Y2xlYXJfYml0KEdTRV9TVEFURV9HVUNfSURTX0VYSEFVU1RFRCwgJmdzZS0+ZmxhZ3MpOwogfQog CiAvKgpAQCAtMzcyLDYgKzM3MywyMCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpbnRlbF9ndWMg KmNlX3RvX2d1YyhzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAJcmV0dXJuICZjZS0+ZW5naW5l LT5ndC0+dWMuZ3VjOwogfQogCitzdGF0aWMgaW5saW5lIHN0cnVjdCBpOTE1X3NjaGVkX2VuZ2lu ZSAqCitjZV90b19zY2hlZF9lbmdpbmUoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworCXJl dHVybiBjZS0+ZW5naW5lLT5zY2hlZF9lbmdpbmU7Cit9CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0 IGk5MTVfc2NoZWRfZW5naW5lICoKK2d1Y190b19zY2hlZF9lbmdpbmUoc3RydWN0IGludGVsX2d1 YyAqZ3VjLCBpbnQgaW5kZXgpCit7CisJR0VNX0JVR19PTihpbmRleCA8IDAgfHwgaW5kZXggPj0g R1VDX1NVQk1JVF9FTkdJTkVfTUFYKTsKKworCXJldHVybiAmZ3VjLT5nc2VbaW5kZXhdLT5zY2hl ZF9lbmdpbmU7Cit9CisKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfcHJpb2xpc3QgKnRvX3By aW9saXN0KHN0cnVjdCByYl9ub2RlICpyYikKIHsKIAlyZXR1cm4gcmJfZW50cnkocmIsIHN0cnVj dCBpOTE1X3ByaW9saXN0LCBub2RlKTsKQEAgLTU5MSwxOSArNjA2LDIwIEBAIHN0YXRpYyBpbnQg X19ndWNfYWRkX3JlcXVlc3Qoc3RydWN0IGludGVsX2d1YyAqZ3VjLCBzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSkKIAlyZXR1cm4gZXJyOwogfQogCi1zdGF0aWMgaW50IGd1Y19hZGRfcmVxdWVzdChz dHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQorc3RhdGljIGlu dCBnc2VfYWRkX3JlcXVlc3Qoc3RydWN0IGd1Y19zdWJtaXRfZW5naW5lICpnc2UsCisJCQkgICBz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIHsKIAlpbnQgcmV0OwogCi0JbG9ja2RlcF9hc3NlcnRf aGVsZCgmZ3VjLT5zY2hlZF9lbmdpbmUtPmxvY2spOworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmdz ZS0+c2NoZWRfZW5naW5lLmxvY2spOwogCi0JcmV0ID0gX19ndWNfYWRkX3JlcXVlc3QoZ3VjLCBy cSk7CisJcmV0ID0gX19ndWNfYWRkX3JlcXVlc3QoZ3NlLT5ndWMsIHJxKTsKIAlpZiAocmV0ID09 IC1FQlVTWSkgewotCQlndWMtPnN0YWxsZWRfcnEgPSBycTsKLQkJZ3VjLT5zdWJtaXNzaW9uX3N0 YWxsX3JlYXNvbiA9IFNUQUxMX0FERF9SRVFVRVNUOworCQlnc2UtPnN0YWxsZWRfcnEgPSBycTsK KwkJZ3NlLT5zdWJtaXNzaW9uX3N0YWxsX3JlYXNvbiA9IFNUQUxMX0FERF9SRVFVRVNUOwogCX0g ZWxzZSB7Ci0JCWd1Yy0+c3RhbGxlZF9ycSA9IE5VTEw7Ci0JCWd1Yy0+c3VibWlzc2lvbl9zdGFs bF9yZWFzb24gPSBTVEFMTF9OT05FOworCQlnc2UtPnN0YWxsZWRfcnEgPSBOVUxMOworCQlnc2Ut PnN1Ym1pc3Npb25fc3RhbGxfcmVhc29uID0gU1RBTExfTk9ORTsKIAl9CiAKIAlyZXR1cm4gcmV0 OwpAQCAtNjExLDE0ICs2MjcsMTQgQEAgc3RhdGljIGludCBndWNfYWRkX3JlcXVlc3Qoc3RydWN0 IGludGVsX2d1YyAqZ3VjLCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAogc3RhdGljIGludCBn dWNfbHJjX2Rlc2NfcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgYm9vbCBsb29wKTsKIAot c3RhdGljIGludCB0YXNrbGV0X3JlZ2lzdGVyX2NvbnRleHQoc3RydWN0IGludGVsX2d1YyAqZ3Vj LAorc3RhdGljIGludCB0YXNrbGV0X3JlZ2lzdGVyX2NvbnRleHQoc3RydWN0IGd1Y19zdWJtaXRf ZW5naW5lICpnc2UsCiAJCQkJICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQogewogCXN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSA9IHJxLT5jb250ZXh0OwogCWludCByZXQgPSAwOwogCiAJLyog Q2hlY2sgc3RhdGUgKi8KLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZndWMtPnNjaGVkX2VuZ2luZS0+ bG9jayk7CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZ3NlLT5zY2hlZF9lbmdpbmUubG9jayk7CiAJ R0VNX0JVR19PTihjZS0+Z3VjX251bV9ycV9zdWJtaXRfbm9faWQpOwogCUdFTV9CVUdfT04ocmVx dWVzdF9oYXNfbm9fZ3VjX2lkKHJxKSk7CiAJR0VNX0JVR19PTihjb250ZXh0X2d1Y19pZF9pbnZh bGlkKGNlKSk7CkBAIC02MzEsNyArNjQ3LDcgQEAgc3RhdGljIGludCB0YXNrbGV0X3JlZ2lzdGVy X2NvbnRleHQoc3RydWN0IGludGVsX2d1YyAqZ3VjLAogCSAqIHJlZ2lzdGVyIHRoaXMgY29udGV4 dCBvciBhIGNvcm5lciBjYXNlIHdoZXJlIHRoZSBHdUMgZmlyd21hcmUgd2FzCiAJICogYmxvd24g YXdheSBhbmQgcmVsb2FkZWQgd2hpbGUgdGhpcyBjb250ZXh0IHdhcyBwaW5uZWQKIAkgKi8KLQlp ZiAodW5saWtlbHkoKCFscmNfZGVzY19yZWdpc3RlcmVkKGd1YywgY2UtPmd1Y19pZCkgfHwKKwlp ZiAodW5saWtlbHkoKCFscmNfZGVzY19yZWdpc3RlcmVkKGdzZS0+Z3VjLCBjZS0+Z3VjX2lkKSB8 fAogCQkgICAgICBjb250ZXh0X25lZWRzX3JlZ2lzdGVyKGNlKSkgJiYKIAkJICAgICAhaW50ZWxf Y29udGV4dF9pc19iYW5uZWQoY2UpKSkgewogCQlyZXQgPSBndWNfbHJjX2Rlc2NfcGluKGNlLCBm YWxzZSk7CkBAIC02NDAsMTEgKzY1NiwxMSBAQCBzdGF0aWMgaW50IHRhc2tsZXRfcmVnaXN0ZXJf Y29udGV4dChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCiAJCQljbHJfY29udGV4dF9uZWVkc19yZWdp c3RlcihjZSk7CiAKIAkJaWYgKHVubGlrZWx5KHJldCA9PSAtRUJVU1kpKSB7Ci0JCQlndWMtPnN0 YWxsZWRfcnEgPSBycTsKLQkJCWd1Yy0+c3VibWlzc2lvbl9zdGFsbF9yZWFzb24gPSBTVEFMTF9S RUdJU1RFUl9DT05URVhUOworCQkJZ3NlLT5zdGFsbGVkX3JxID0gcnE7CisJCQlnc2UtPnN1Ym1p c3Npb25fc3RhbGxfcmVhc29uID0gU1RBTExfUkVHSVNURVJfQ09OVEVYVDsKIAkJfSBlbHNlIGlm ICh1bmxpa2VseShyZXQgPT0gLUVJTlBST0dSRVNTKSkgewotCQkJZ3VjLT5zdGFsbGVkX3JxID0g cnE7Ci0JCQlndWMtPnN1Ym1pc3Npb25fc3RhbGxfcmVhc29uID0gU1RBTExfREVSRUdJU1RFUl9D T05URVhUOworCQkJZ3NlLT5zdGFsbGVkX3JxID0gcnE7CisJCQlnc2UtPnN1Ym1pc3Npb25fc3Rh bGxfcmVhc29uID0gU1RBTExfREVSRUdJU1RFUl9DT05URVhUOwogCQl9CiAJfQogCkBAIC02NjMs MjggKzY3OSwyOSBAQCBzdGF0aWMgaW5saW5lIGludCBycV9wcmlvKGNvbnN0IHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxKQogCXJldHVybiBycS0+c2NoZWQuYXR0ci5wcmlvcml0eTsKIH0KIAotc3Rh dGljIHZvaWQga2lja19yZXRpcmVfd3Eoc3RydWN0IGludGVsX2d1YyAqZ3VjKQorc3RhdGljIHZv aWQga2lja19yZXRpcmVfd3Eoc3RydWN0IGd1Y19zdWJtaXRfZW5naW5lICpnc2UpCiB7Ci0JcXVl dWVfd29yayhzeXN0ZW1fdW5ib3VuZF93cSwgJmd1Yy0+cmV0aXJlX3dvcmtlcik7CisJcXVldWVf d29yayhzeXN0ZW1fdW5ib3VuZF93cSwgJmdzZS0+cmV0aXJlX3dvcmtlcik7CiB9CiAKLXN0YXRp YyBpbnQgdGFza2xldF9waW5fZ3VjX2lkKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yywgc3RydWN0IGk5 MTVfcmVxdWVzdCAqcnEpOworc3RhdGljIGludCB0YXNrbGV0X3Bpbl9ndWNfaWQoc3RydWN0IGd1 Y19zdWJtaXRfZW5naW5lICpnc2UsCisJCQkgICAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSk7 CiAKLXN0YXRpYyBpbnQgZ3VjX2RlcXVldWVfb25lX2NvbnRleHQoc3RydWN0IGludGVsX2d1YyAq Z3VjKQorc3RhdGljIGludCBnc2VfZGVxdWV1ZV9vbmVfY29udGV4dChzdHJ1Y3QgZ3VjX3N1Ym1p dF9lbmdpbmUgKmdzZSkKIHsKLQlzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKiBjb25zdCBzY2hl ZF9lbmdpbmUgPSBndWMtPnNjaGVkX2VuZ2luZTsKLQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpsYXN0 ID0gZ3VjLT5zdGFsbGVkX3JxOworCXN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqIGNvbnN0IHNj aGVkX2VuZ2luZSA9ICZnc2UtPnNjaGVkX2VuZ2luZTsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICps YXN0ID0gZ3NlLT5zdGFsbGVkX3JxOwogCWJvb2wgc3VibWl0ID0gISFsYXN0OwogCXN0cnVjdCBy Yl9ub2RlICpyYjsKIAlpbnQgcmV0OwogCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmc2NoZWRfZW5n aW5lLT5sb2NrKTsKLQlHRU1fQlVHX09OKGd1Yy0+c3RhbGxlZF9jb250ZXh0KTsKLQlHRU1fQlVH X09OKCFzdWJtaXQgJiYgZ3VjLT5zdWJtaXNzaW9uX3N0YWxsX3JlYXNvbik7CisJR0VNX0JVR19P Tihnc2UtPnN0YWxsZWRfY29udGV4dCk7CisJR0VNX0JVR19PTighc3VibWl0ICYmIGdzZS0+c3Vi bWlzc2lvbl9zdGFsbF9yZWFzb24pOwogCiAJaWYgKHN1Ym1pdCkgewogCQkvKiBGbG93IGNvbnRy b2wgY29uZGl0aW9ucyAqLwotCQlzd2l0Y2ggKGd1Yy0+c3VibWlzc2lvbl9zdGFsbF9yZWFzb24p IHsKKwkJc3dpdGNoIChnc2UtPnN1Ym1pc3Npb25fc3RhbGxfcmVhc29uKSB7CiAJCWNhc2UgU1RB TExfR1VDX0lEX1RBU0tMRVQ6CiAJCQlnb3RvIGRvbmU7CiAJCWNhc2UgU1RBTExfUkVHSVNURVJf Q09OVEVYVDoKQEAgLTY5Nyw4ICs3MTQsOCBAQCBzdGF0aWMgaW50IGd1Y19kZXF1ZXVlX29uZV9j b250ZXh0KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAkJCUdFTV9CVUdfT04oIkludmFsaWQgc3Rh bGwgc3RhdGUiKTsKIAkJfQogCX0gZWxzZSB7Ci0JCUdFTV9CVUdfT04oIWd1Yy0+dG90YWxfbnVt X3JxX3dpdGhfbm9fZ3VjX2lkICYmCi0JCQkgICBndWNfaWRzX2V4aGF1c3RlZChndWMpKTsKKwkJ R0VNX0JVR19PTighZ3NlLT50b3RhbF9udW1fcnFfd2l0aF9ub19ndWNfaWQgJiYKKwkJCSAgIGd1 Y19pZHNfZXhoYXVzdGVkKGdzZSkpOwogCiAJCXdoaWxlICgocmIgPSByYl9maXJzdF9jYWNoZWQo JnNjaGVkX2VuZ2luZS0+cXVldWUpKSkgewogCQkJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnAgPSB0 b19wcmlvbGlzdChyYik7CkBAIC03MjcsMTMgKzc0NCwxMyBAQCBzdGF0aWMgaW50IGd1Y19kZXF1 ZXVlX29uZV9jb250ZXh0KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAkJc3RydWN0IGludGVsX2Nv bnRleHQgKmNlID0gbGFzdC0+Y29udGV4dDsKIAogCQlpZiAoY2UtPmd1Y19udW1fcnFfc3VibWl0 X25vX2lkKSB7Ci0JCQlyZXQgPSB0YXNrbGV0X3Bpbl9ndWNfaWQoZ3VjLCBsYXN0KTsKKwkJCXJl dCA9IHRhc2tsZXRfcGluX2d1Y19pZChnc2UsIGxhc3QpOwogCQkJaWYgKHJldCkKIAkJCQlnb3Rv IGJsa190YXNrbGV0X2tpY2s7CiAJCX0KIAogcmVnaXN0ZXJfY29udGV4dDoKLQkJcmV0ID0gdGFz a2xldF9yZWdpc3Rlcl9jb250ZXh0KGd1YywgbGFzdCk7CisJCXJldCA9IHRhc2tsZXRfcmVnaXN0 ZXJfY29udGV4dChnc2UsIGxhc3QpOwogCQlpZiAodW5saWtlbHkocmV0ID09IC1FSU5QUk9HUkVT UykpCiAJCQlnb3RvIGJsa190YXNrbGV0OwogCQllbHNlIGlmICh1bmxpa2VseShyZXQgPT0gLUVE RUFETEspKQpAQCAtNzQ5LDcgKzc2Niw3IEBAIHN0YXRpYyBpbnQgZ3VjX2RlcXVldWVfb25lX2Nv bnRleHQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCQlndWNfc2V0X2xyY190YWlsKGxhc3QpOwog CiBhZGRfcmVxdWVzdDoKLQkJcmV0ID0gZ3VjX2FkZF9yZXF1ZXN0KGd1YywgbGFzdCk7CisJCXJl dCA9IGdzZV9hZGRfcmVxdWVzdChnc2UsIGxhc3QpOwogCQlpZiAodW5saWtlbHkocmV0ID09IC1F REVBRExLKSkKIAkJCWdvdG8gZGVhZGxrOwogCQllbHNlIGlmIChyZXQgPT0gLUVCVVNZKQpAQCAt NzY0LDggKzc4MSw4IEBAIHN0YXRpYyBpbnQgZ3VjX2RlcXVldWVfb25lX2NvbnRleHQoc3RydWN0 IGludGVsX2d1YyAqZ3VjKQogCSAqIE5vIHJlcXVlc3RzIHdpdGhvdXQgYSBndWNfaWQsIGVuYWJs ZSBndWNfaWQgYWxsb2NhdGlvbiBhdCByZXF1ZXN0CiAJICogY3JlYXRpb24gdGltZSAoZ3VjX3Jl cXVlc3RfYWxsb2MpLgogCSAqLwotCWlmICghZ3VjLT50b3RhbF9udW1fcnFfd2l0aF9ub19ndWNf aWQpCi0JCWNscl9ndWNfaWRzX2V4aGF1c3RlZChndWMpOworCWlmICghZ3NlLT50b3RhbF9udW1f cnFfd2l0aF9ub19ndWNfaWQpCisJCWNscl9ndWNfaWRzX2V4aGF1c3RlZChnc2UpOwogCiAJcmV0 dXJuIHN1Ym1pdDsKIApAQCAtNzgwLDI1ICs3OTcsMjYgQEAgc3RhdGljIGludCBndWNfZGVxdWV1 ZV9vbmVfY29udGV4dChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAJcmV0dXJuIGZhbHNlOwogCiBi bGtfdGFza2xldF9raWNrOgotCWtpY2tfcmV0aXJlX3dxKGd1Yyk7CisJa2lja19yZXRpcmVfd3Eo Z3NlKTsKIGJsa190YXNrbGV0OgotCXNldF90YXNrbGV0X2Jsb2NrZWQoZ3VjKTsKKwlzZXRfdGFz a2xldF9ibG9ja2VkKGdzZSk7CiAJcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZCBndWNf c3VibWlzc2lvbl90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkKK3N0YXRpYyB2b2lk IGdzZV9zdWJtaXNzaW9uX3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQogewogCXN0 cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqc2NoZWRfZW5naW5lID0KIAkJZnJvbV90YXNrbGV0KHNj aGVkX2VuZ2luZSwgdCwgdGFza2xldCk7Ci0Jc3RydWN0IGludGVsX2d1YyAqZ3VjID0gJnNjaGVk X2VuZ2luZS0+ZW5naW5lLT5ndC0+dWMuZ3VjOworCXN0cnVjdCBndWNfc3VibWl0X2VuZ2luZSAq Z3NlID0KKwkJY29udGFpbmVyX29mKHNjaGVkX2VuZ2luZSwgdHlwZW9mKCpnc2UpLCBzY2hlZF9l bmdpbmUpOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJYm9vbCBsb29wOwogCiAJc3Bpbl9sb2Nr X2lycXNhdmUoJnNjaGVkX2VuZ2luZS0+bG9jaywgZmxhZ3MpOwogCi0JaWYgKGxpa2VseSghdGFz a2xldF9ibG9ja2VkKGd1YykpKQorCWlmIChsaWtlbHkoIXRhc2tsZXRfYmxvY2tlZChnc2UpKSkK IAkJZG8gewotCQkJbG9vcCA9IGd1Y19kZXF1ZXVlX29uZV9jb250ZXh0KGd1Yyk7CisJCQlsb29w ID0gZ3NlX2RlcXVldWVfb25lX2NvbnRleHQoZ3NlKTsKIAkJfSB3aGlsZSAobG9vcCk7CiAKIAlp OTE1X3NjaGVkX2VuZ2luZV9yZXNldF9vbl9lbXB0eShzY2hlZF9lbmdpbmUpOwpAQCAtODcxLDY1 ICs4ODksOTIgQEAgc3RhdGljIHZvaWQgc2NydWJfZ3VjX2Rlc2NfZm9yX291dHN0YW5kaW5nX2cy aChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiBzdGF0aWMgaW5saW5lIGJvb2wKIHN1Ym1pc3Npb25f ZGlzYWJsZWQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogewotCXN0cnVjdCBpOTE1X3NjaGVkX2Vu Z2luZSAqIGNvbnN0IHNjaGVkX2VuZ2luZSA9IGd1Yy0+c2NoZWRfZW5naW5lOworCWludCBpOwor CisJZm9yIChpID0gMDsgaSA8IEdVQ19TVUJNSVRfRU5HSU5FX01BWDsgKytpKSB7CisJCXN0cnVj dCBpOTE1X3NjaGVkX2VuZ2luZSAqc2NoZWRfZW5naW5lID0KKwkJCWd1Y190b19zY2hlZF9lbmdp bmUoZ3VjLCBpKTsKKworCQlpZiAodW5saWtlbHkoIV9fdGFza2xldF9pc19lbmFibGVkKCZzY2hl ZF9lbmdpbmUtPnRhc2tsZXQpKSkKKwkJCXJldHVybiB0cnVlOworCX0KIAotCXJldHVybiB1bmxp a2VseSghX190YXNrbGV0X2lzX2VuYWJsZWQoJnNjaGVkX2VuZ2luZS0+dGFza2xldCkpOworCXJl dHVybiBmYWxzZTsKIH0KIAotc3RhdGljIHZvaWQga2lja190YXNrbGV0KHN0cnVjdCBpbnRlbF9n dWMgKmd1YykKK3N0YXRpYyB2b2lkIGtpY2tfdGFza2xldChzdHJ1Y3QgZ3VjX3N1Ym1pdF9lbmdp bmUgKmdzZSkKIHsKLQlzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKiBjb25zdCBzY2hlZF9lbmdp bmUgPSBndWMtPnNjaGVkX2VuZ2luZTsKKwlzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKnNjaGVk X2VuZ2luZSA9ICZnc2UtPnNjaGVkX2VuZ2luZTsKIAotCWlmIChsaWtlbHkoIXRhc2tsZXRfYmxv Y2tlZChndWMpKSkKKwlpZiAobGlrZWx5KCF0YXNrbGV0X2Jsb2NrZWQoZ3NlKSkpCiAJCWk5MTVf c2NoZWRfZW5naW5lX2hpX2tpY2soc2NoZWRfZW5naW5lKTsKIH0KIAogc3RhdGljIHZvaWQgZGlz YWJsZV9zdWJtaXNzaW9uKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIHsKLQlzdHJ1Y3QgaTkxNV9z Y2hlZF9lbmdpbmUgKiBjb25zdCBzY2hlZF9lbmdpbmUgPSBndWMtPnNjaGVkX2VuZ2luZTsKKwlp bnQgaTsKIAotCWlmIChfX3Rhc2tsZXRfaXNfZW5hYmxlZCgmc2NoZWRfZW5naW5lLT50YXNrbGV0 KSkgewotCQlHRU1fQlVHX09OKCFndWMtPmN0LmVuYWJsZWQpOwotCQlfX3Rhc2tsZXRfZGlzYWJs ZV9zeW5jX29uY2UoJnNjaGVkX2VuZ2luZS0+dGFza2xldCk7Ci0JCXNjaGVkX2VuZ2luZS0+dGFz a2xldC5jYWxsYmFjayA9IE5VTEw7CisJZm9yIChpID0gMDsgaSA8IEdVQ19TVUJNSVRfRU5HSU5F X01BWDsgKytpKSB7CisJCXN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqc2NoZWRfZW5naW5lID0K KwkJCWd1Y190b19zY2hlZF9lbmdpbmUoZ3VjLCBpKTsKKworCQlpZiAoX190YXNrbGV0X2lzX2Vu YWJsZWQoJnNjaGVkX2VuZ2luZS0+dGFza2xldCkpIHsKKwkJCUdFTV9CVUdfT04oIWd1Yy0+Y3Qu ZW5hYmxlZCk7CisJCQlfX3Rhc2tsZXRfZGlzYWJsZV9zeW5jX29uY2UoJnNjaGVkX2VuZ2luZS0+ dGFza2xldCk7CisJCQlzY2hlZF9lbmdpbmUtPnRhc2tsZXQuY2FsbGJhY2sgPSBOVUxMOworCQl9 CiAJfQogfQogCiBzdGF0aWMgdm9pZCBlbmFibGVfc3VibWlzc2lvbihzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMpCiB7Ci0Jc3RydWN0IGk5MTVfc2NoZWRfZW5naW5lICogY29uc3Qgc2NoZWRfZW5naW5l ID0gZ3VjLT5zY2hlZF9lbmdpbmU7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlpbnQgaTsKIAot CXNwaW5fbG9ja19pcnFzYXZlKCZndWMtPnNjaGVkX2VuZ2luZS0+bG9jaywgZmxhZ3MpOwotCXNj aGVkX2VuZ2luZS0+dGFza2xldC5jYWxsYmFjayA9IGd1Y19zdWJtaXNzaW9uX3Rhc2tsZXQ7Ci0J d21iKCk7Ci0JaWYgKCFfX3Rhc2tsZXRfaXNfZW5hYmxlZCgmc2NoZWRfZW5naW5lLT50YXNrbGV0 KSAmJgotCSAgICBfX3Rhc2tsZXRfZW5hYmxlKCZzY2hlZF9lbmdpbmUtPnRhc2tsZXQpKSB7Ci0J CUdFTV9CVUdfT04oIWd1Yy0+Y3QuZW5hYmxlZCk7Ci0KLQkJLyogUmVzZXQgdGFza2xldCBzdGF0 ZSAqLwotCQlndWMtPnN0YWxsZWRfcnEgPSBOVUxMOwotCQlpZiAoZ3VjLT5zdGFsbGVkX2NvbnRl eHQpCi0JCQlpbnRlbF9jb250ZXh0X3B1dChndWMtPnN0YWxsZWRfY29udGV4dCk7Ci0JCWd1Yy0+ c3RhbGxlZF9jb250ZXh0ID0gTlVMTDsKLQkJZ3VjLT5zdWJtaXNzaW9uX3N0YWxsX3JlYXNvbiA9 IFNUQUxMX05PTkU7Ci0JCWd1Yy0+ZmxhZ3MgPSAwOwotCi0JCS8qIEFuZCBraWNrIGluIGNhc2Ug d2UgbWlzc2VkIGEgbmV3IHJlcXVlc3Qgc3VibWlzc2lvbi4gKi8KLQkJa2lja190YXNrbGV0KGd1 Yyk7CisJZm9yIChpID0gMDsgaSA8IEdVQ19TVUJNSVRfRU5HSU5FX01BWDsgKytpKSB7CisJCXN0 cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqc2NoZWRfZW5naW5lID0KKwkJCWd1Y190b19zY2hlZF9l bmdpbmUoZ3VjLCBpKTsKKwkJc3RydWN0IGd1Y19zdWJtaXRfZW5naW5lICpnc2UgPSBndWMtPmdz ZVtpXTsKKworCQlzcGluX2xvY2tfaXJxc2F2ZSgmc2NoZWRfZW5naW5lLT5sb2NrLCBmbGFncyk7 CisJCXNjaGVkX2VuZ2luZS0+dGFza2xldC5jYWxsYmFjayA9IGdzZV9zdWJtaXNzaW9uX3Rhc2ts ZXQ7CisJCXdtYigpOworCQlpZiAoIV9fdGFza2xldF9pc19lbmFibGVkKCZzY2hlZF9lbmdpbmUt PnRhc2tsZXQpICYmCisJCSAgICBfX3Rhc2tsZXRfZW5hYmxlKCZzY2hlZF9lbmdpbmUtPnRhc2ts ZXQpKSB7CisJCQlHRU1fQlVHX09OKCFndWMtPmN0LmVuYWJsZWQpOworCisJCQkvKiBSZXNldCBH dUMgc3VibWl0IGVuZ2luZSBzdGF0ZSAqLworCQkJZ3NlLT5zdGFsbGVkX3JxID0gTlVMTDsKKwkJ CWlmIChnc2UtPnN0YWxsZWRfY29udGV4dCkKKwkJCQlpbnRlbF9jb250ZXh0X3B1dChnc2UtPnN0 YWxsZWRfY29udGV4dCk7CisJCQlnc2UtPnN0YWxsZWRfY29udGV4dCA9IE5VTEw7CisJCQlnc2Ut PnN1Ym1pc3Npb25fc3RhbGxfcmVhc29uID0gU1RBTExfTk9ORTsKKwkJCWdzZS0+ZmxhZ3MgPSAw OworCisJCQkvKiBBbmQga2ljayBpbiBjYXNlIHdlIG1pc3NlZCBhIG5ldyByZXF1ZXN0IHN1Ym1p c3Npb24uICovCisJCQlraWNrX3Rhc2tsZXQoZ3NlKTsKKwkJfQorCQlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZzY2hlZF9lbmdpbmUtPmxvY2ssIGZsYWdzKTsKIAl9Ci0Jc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmZ3VjLT5zY2hlZF9lbmdpbmUtPmxvY2ssIGZsYWdzKTsKIH0KIAotc3RhdGljIHZv aWQgZ3VjX2ZsdXNoX3N1Ym1pc3Npb25zKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3N0YXRpYyB2 b2lkIGdzZV9mbHVzaF9zdWJtaXNzaW9ucyhzdHJ1Y3QgZ3VjX3N1Ym1pdF9lbmdpbmUgKmdzZSkK IHsKLQlzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKiBjb25zdCBzY2hlZF9lbmdpbmUgPSBndWMt PnNjaGVkX2VuZ2luZTsKKwlzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKiBjb25zdCBzY2hlZF9l bmdpbmUgPSAmZ3NlLT5zY2hlZF9lbmdpbmU7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCXNw aW5fbG9ja19pcnFzYXZlKCZzY2hlZF9lbmdpbmUtPmxvY2ssIGZsYWdzKTsKIAlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZzY2hlZF9lbmdpbmUtPmxvY2ssIGZsYWdzKTsKIH0KIAorc3RhdGljIHZv aWQgZ3VjX2ZsdXNoX3N1Ym1pc3Npb25zKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwlpbnQg aTsKKworCWZvciAoaSA9IDA7IGkgPCBHVUNfU1VCTUlUX0VOR0lORV9NQVg7ICsraSkKKwkJZ3Nl X2ZsdXNoX3N1Ym1pc3Npb25zKGd1Yy0+Z3NlW2ldKTsKK30KKwogdm9pZCBpbnRlbF9ndWNfc3Vi bWlzc2lvbl9yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIHsKIAlpbnQgaTsK QEAgLTExMTEsMTMgKzExNTYsMTIgQEAgdm9pZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9yZXNldChz dHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGJvb2wgc3RhbGxlZCkKIAkJaWYgKGludGVsX2NvbnRleHRf aXNfcGlubmVkKGNlKSkKIAkJCV9fZ3VjX3Jlc2V0X2NvbnRleHQoY2UsIHN0YWxsZWQpOwogCi0J LyogR3VDIGlzIGJsb3duIGF3YXksIGRyb3AgYWxsIHJlZmVyZW5jZXMgdG8gY29udGV4dHMgKi8K IAl4YV9kZXN0cm95KCZndWMtPmNvbnRleHRfbG9va3VwKTsKIH0KIAogc3RhdGljIHZvaWQgZ3Vj X2NhbmNlbF9jb250ZXh0X3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIHsKLQlz dHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKnNjaGVkX2VuZ2luZSA9IGNlX3RvX2d1YyhjZSktPnNj aGVkX2VuZ2luZTsKKwlzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKnNjaGVkX2VuZ2luZSA9IGNl X3RvX3NjaGVkX2VuZ2luZShjZSk7CiAJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7CiAJdW5zaWdu ZWQgbG9uZyBmbGFnczsKIApAQCAtMTEzMiw4ICsxMTc2LDkgQEAgc3RhdGljIHZvaWQgZ3VjX2Nh bmNlbF9jb250ZXh0X3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIH0KIAogc3Rh dGljIHZvaWQKLWd1Y19jYW5jZWxfc2NoZWRfZW5naW5lX3JlcXVlc3RzKHN0cnVjdCBpOTE1X3Nj aGVkX2VuZ2luZSAqc2NoZWRfZW5naW5lKQorZ3NlX2NhbmNlbF9yZXF1ZXN0cyhzdHJ1Y3QgZ3Vj X3N1Ym1pdF9lbmdpbmUgKmdzZSkKIHsKKwlzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKnNjaGVk X2VuZ2luZSA9ICZnc2UtPnNjaGVkX2VuZ2luZTsKIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwg KnJuOwogCXN0cnVjdCByYl9ub2RlICpyYjsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwpAQCAtMTE5 MCwxMiArMTIzNSwxNCBAQCB2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX2NhbmNlbF9yZXF1ZXN0 cyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiB7CiAJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwog CXVuc2lnbmVkIGxvbmcgaW5kZXg7CisJaW50IGk7CiAKIAl4YV9mb3JfZWFjaCgmZ3VjLT5jb250 ZXh0X2xvb2t1cCwgaW5kZXgsIGNlKQogCQlpZiAoaW50ZWxfY29udGV4dF9pc19waW5uZWQoY2Up KQogCQkJZ3VjX2NhbmNlbF9jb250ZXh0X3JlcXVlc3RzKGNlKTsKIAotCWd1Y19jYW5jZWxfc2No ZWRfZW5naW5lX3JlcXVlc3RzKGd1Yy0+c2NoZWRfZW5naW5lKTsKKwlmb3IgKGkgPSAwOyBpIDwg R1VDX1NVQk1JVF9FTkdJTkVfTUFYOyArK2kpCisJCWdzZV9jYW5jZWxfcmVxdWVzdHMoZ3VjLT5n c2VbaV0pOwogCiAJLyogR3VDIGlzIGJsb3duIGF3YXksIGRyb3AgYWxsIHJlZmVyZW5jZXMgdG8g Y29udGV4dHMgKi8KIAl4YV9kZXN0cm95KCZndWMtPmNvbnRleHRfbG9va3VwKTsKQEAgLTEyMjIs MTMgKzEyNjksMTMgQEAgdm9pZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9yZXNldF9maW5pc2goc3Ry dWN0IGludGVsX2d1YyAqZ3VjKQogCWludGVsX2d0X3VucGFya19oZWFydGJlYXRzKGd1Y190b19n dChndWMpKTsKIH0KIAotc3RhdGljIHZvaWQgcmV0aXJlX3dvcmtlcl9zY2hlZF9kaXNhYmxlKHN0 cnVjdCBpbnRlbF9ndWMgKmd1YywKK3N0YXRpYyB2b2lkIHJldGlyZV93b3JrZXJfc2NoZWRfZGlz YWJsZShzdHJ1Y3QgZ3VjX3N1Ym1pdF9lbmdpbmUgKmdzZSwKIAkJCQkJc3RydWN0IGludGVsX2Nv bnRleHQgKmNlKTsKIAogc3RhdGljIHZvaWQgcmV0aXJlX3dvcmtlcl9mdW5jKHN0cnVjdCB3b3Jr X3N0cnVjdCAqdykKIHsKLQlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPQotCQljb250YWluZXJfb2Yo dywgc3RydWN0IGludGVsX2d1YywgcmV0aXJlX3dvcmtlcik7CisJc3RydWN0IGd1Y19zdWJtaXRf ZW5naW5lICpnc2UgPQorCQljb250YWluZXJfb2Yodywgc3RydWN0IGd1Y19zdWJtaXRfZW5naW5l LCByZXRpcmVfd29ya2VyKTsKIAogCS8qCiAJICogSXQgaXMgcG9zc2libGUgdGhhdCBhbm90aGVy IHRocmVhZCBpc3N1ZXMgdGhlIHNjaGVkdWxlIGRpc2FibGUgKyB0aGF0CkBAIC0xMjM2LDE3ICsx MjgzLDE3IEBAIHN0YXRpYyB2b2lkIHJldGlyZV93b3JrZXJfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKncpCiAJICogd2hlcmUgbm90aGluZyBuZWVkcyB0byBiZSBkb25lIGhlcmUuIExldCdzIGJl IHBhcmFub2lkIGFuZCBraWNrIHRoZQogCSAqIHRhc2tsZXQgaW4gdGhhdCBjYXNlLgogCSAqLwot CWlmIChndWMtPnN1Ym1pc3Npb25fc3RhbGxfcmVhc29uICE9IFNUQUxMX1NDSEVEX0RJU0FCTEUg JiYKLQkgICAgZ3VjLT5zdWJtaXNzaW9uX3N0YWxsX3JlYXNvbiAhPSBTVEFMTF9HVUNfSURfV09S S1FVRVVFKSB7Ci0JCWtpY2tfdGFza2xldChndWMpOworCWlmIChnc2UtPnN1Ym1pc3Npb25fc3Rh bGxfcmVhc29uICE9IFNUQUxMX1NDSEVEX0RJU0FCTEUgJiYKKwkgICAgZ3NlLT5zdWJtaXNzaW9u X3N0YWxsX3JlYXNvbiAhPSBTVEFMTF9HVUNfSURfV09SS1FVRVVFKSB7CisJCWtpY2tfdGFza2xl dChnc2UpOwogCQlyZXR1cm47CiAJfQogCi0JaWYgKGd1Yy0+c3VibWlzc2lvbl9zdGFsbF9yZWFz b24gPT0gU1RBTExfU0NIRURfRElTQUJMRSkgewotCQlHRU1fQlVHX09OKCFndWMtPnN0YWxsZWRf Y29udGV4dCk7Ci0JCUdFTV9CVUdfT04oY29udGV4dF9ndWNfaWRfaW52YWxpZChndWMtPnN0YWxs ZWRfY29udGV4dCkpOworCWlmIChnc2UtPnN1Ym1pc3Npb25fc3RhbGxfcmVhc29uID09IFNUQUxM X1NDSEVEX0RJU0FCTEUpIHsKKwkJR0VNX0JVR19PTighZ3NlLT5zdGFsbGVkX2NvbnRleHQpOwor CQlHRU1fQlVHX09OKGNvbnRleHRfZ3VjX2lkX2ludmFsaWQoZ3NlLT5zdGFsbGVkX2NvbnRleHQp KTsKIAotCQlyZXRpcmVfd29ya2VyX3NjaGVkX2Rpc2FibGUoZ3VjLCBndWMtPnN0YWxsZWRfY29u dGV4dCk7CisJCXJldGlyZV93b3JrZXJfc2NoZWRfZGlzYWJsZShnc2UsIGdzZS0+c3RhbGxlZF9j b250ZXh0KTsKIAl9CiAKIAkvKgpAQCAtMTI1NCwxNiArMTMwMSwxNiBAQCBzdGF0aWMgdm9pZCBy ZXRpcmVfd29ya2VyX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3KQogCSAqIGFsYmVpdCBhZnRl ciBwb3NzaWJseSBpc3N1aW5nIGEgc2NoZWR1bGUgZGlzYWJsZSBhcyB0aGF0IGlzIGFzeW5jCiAJ ICogb3BlcmF0aW9uLgogCSAqLwotCWludGVsX2d0X3JldGlyZV9yZXF1ZXN0cyhndWNfdG9fZ3Qo Z3VjKSk7CisJaW50ZWxfZ3RfcmV0aXJlX3JlcXVlc3RzKGd1Y190b19ndChnc2UtPmd1YykpOwog Ci0JaWYgKGd1Yy0+c3VibWlzc2lvbl9zdGFsbF9yZWFzb24gPT0gU1RBTExfR1VDX0lEX1dPUktR VUVVRSkgewotCQlHRU1fQlVHX09OKGd1Yy0+c3RhbGxlZF9jb250ZXh0KTsKKwlpZiAoZ3NlLT5z dWJtaXNzaW9uX3N0YWxsX3JlYXNvbiA9PSBTVEFMTF9HVUNfSURfV09SS1FVRVVFKSB7CisJCUdF TV9CVUdfT04oZ3NlLT5zdGFsbGVkX2NvbnRleHQpOwogCiAJCS8qIEhvcGVmdWxseSBndWNfaWRz IGFyZSBub3cgYXZhaWxhYmxlLCBraWNrIHRhc2tsZXQgKi8KLQkJZ3VjLT5zdWJtaXNzaW9uX3N0 YWxsX3JlYXNvbiA9IFNUQUxMX0dVQ19JRF9UQVNLTEVUOwotCQljbHJfdGFza2xldF9ibG9ja2Vk KGd1Yyk7CisJCWdzZS0+c3VibWlzc2lvbl9zdGFsbF9yZWFzb24gPSBTVEFMTF9HVUNfSURfVEFT S0xFVDsKKwkJY2xyX3Rhc2tsZXRfYmxvY2tlZChnc2UpOwogCi0JCWtpY2tfdGFza2xldChndWMp OworCQlraWNrX3Rhc2tsZXQoZ3NlKTsKIAl9CiB9CiAKQEAgLTEyOTQsMTggKzEzNDEsMjQgQEAg aW50IGludGVsX2d1Y19zdWJtaXNzaW9uX2luaXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCUlO SVRfTElTVF9IRUFEKCZndWMtPmd1Y19pZF9saXN0X3VucGlubmVkKTsKIAlpZGFfaW5pdCgmZ3Vj LT5ndWNfaWRzKTsKIAotCUlOSVRfV09SSygmZ3VjLT5yZXRpcmVfd29ya2VyLCByZXRpcmVfd29y a2VyX2Z1bmMpOwotCiAJcmV0dXJuIDA7CiB9CiAKIHZvaWQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25f ZmluaShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiB7CisJaW50IGk7CisKIAlpZiAoIWd1Yy0+bHJj X2Rlc2NfcG9vbCkKIAkJcmV0dXJuOwogCiAJZ3VjX2xyY19kZXNjX3Bvb2xfZGVzdHJveShndWMp OwotCWk5MTVfc2NoZWRfZW5naW5lX3B1dChndWMtPnNjaGVkX2VuZ2luZSk7CisKKwlmb3IgKGkg PSAwOyBpIDwgR1VDX1NVQk1JVF9FTkdJTkVfTUFYOyArK2kpIHsKKwkJc3RydWN0IGk5MTVfc2No ZWRfZW5naW5lICpzY2hlZF9lbmdpbmUgPQorCQkJZ3VjX3RvX3NjaGVkX2VuZ2luZShndWMsIGkp OworCisJCWk5MTVfc2NoZWRfZW5naW5lX3B1dChzY2hlZF9lbmdpbmUpOworCX0KIH0KIAogc3Rh dGljIGlubGluZSB2b2lkIHF1ZXVlX3JlcXVlc3Qoc3RydWN0IGk5MTVfc2NoZWRfZW5naW5lICpz Y2hlZF9lbmdpbmUsCkBAIC0xMzIwLDIyICsxMzczLDIyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBx dWV1ZV9yZXF1ZXN0KHN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqc2NoZWRfZW5naW5lLAogCXNl dF9iaXQoSTkxNV9GRU5DRV9GTEFHX1BRVUVVRSwgJnJxLT5mZW5jZS5mbGFncyk7CiAKIAlpZiAo ZW1wdHkpCi0JCWtpY2tfdGFza2xldCgmcnEtPmVuZ2luZS0+Z3QtPnVjLmd1Yyk7CisJCWtpY2tf dGFza2xldChjZV90b19nc2UocnEtPmNvbnRleHQpKTsKIH0KIAogLyogTWFjcm8gdG8gdHdlYWsg aGV1cmlzdGljLCB1c2luZyBhIHNpbXBsZSBvdmVyIDUwJSBub3QgcmVhZHkgZm9yIG5vdyAqLwog I2RlZmluZSBUT09fTUFOWV9HVUNfSURTX05PVF9SRUFEWShhdmFpbCwgY29uc3VtZWQpIFwKIAko Y29uc3VtZWQgPiBhdmFpbCAvIDIpCi1zdGF0aWMgYm9vbCB0b29fbWFueV9ndWNfaWRzX25vdF9y ZWFkeShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCitzdGF0aWMgYm9vbCB0b29fbWFueV9ndWNfaWRz X25vdF9yZWFkeShzdHJ1Y3QgZ3VjX3N1Ym1pdF9lbmdpbmUgKmdzZSwKIAkJCQkgICAgICAgc3Ry dWN0IGludGVsX2NvbnRleHQgKmNlKQogewogCXUzMiBhdmFpbGFibGVfZ3VjX2lkcywgZ3VjX2lk c19jb25zdW1lZDsKIAotCWF2YWlsYWJsZV9ndWNfaWRzID0gZ3VjLT5udW1fZ3VjX2lkczsKLQln dWNfaWRzX2NvbnN1bWVkID0gYXRvbWljX3JlYWQoJmd1Yy0+bnVtX2d1Y19pZHNfbm90X3JlYWR5 KTsKKwlhdmFpbGFibGVfZ3VjX2lkcyA9IGdzZS0+Z3VjLT5udW1fZ3VjX2lkczsKKwlndWNfaWRz X2NvbnN1bWVkID0gYXRvbWljX3JlYWQoJmdzZS0+bnVtX2d1Y19pZHNfbm90X3JlYWR5KTsKIAog CWlmIChUT09fTUFOWV9HVUNfSURTX05PVF9SRUFEWShhdmFpbGFibGVfZ3VjX2lkcywgZ3VjX2lk c19jb25zdW1lZCkpIHsKLQkJc2V0X2FuZF91cGRhdGVfZ3VjX2lkc19leGhhdXN0ZWQoZ3VjKTsK KwkJc2V0X2FuZF91cGRhdGVfZ3VjX2lkc19leGhhdXN0ZWQoZ3NlKTsKIAkJcmV0dXJuIHRydWU7 CiAJfQogCkBAIC0xMzQ0LDM0ICsxMzk3LDM1IEBAIHN0YXRpYyBib29sIHRvb19tYW55X2d1Y19p ZHNfbm90X3JlYWR5KHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKIAogc3RhdGljIHZvaWQgaW5jcl9u dW1fcnFfbm90X3JlYWR5KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIHsKLQlzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMgPSBjZV90b19ndWMoY2UpOworCXN0cnVjdCBndWNfc3VibWl0X2VuZ2luZSAq Z3NlID0gY2VfdG9fZ3NlKGNlKTsKIAogCWlmICghYXRvbWljX2ZldGNoX2FkZCgxLCAmY2UtPmd1 Y19udW1fcnFfbm90X3JlYWR5KSkKLQkJYXRvbWljX2luYygmZ3VjLT5udW1fZ3VjX2lkc19ub3Rf cmVhZHkpOworCQlhdG9taWNfaW5jKCZnc2UtPm51bV9ndWNfaWRzX25vdF9yZWFkeSk7CiB9CiAK IHZvaWQgaW50ZWxfZ3VjX2RlY3JfbnVtX3JxX25vdF9yZWFkeShzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY2UpCiB7Ci0Jc3RydWN0IGludGVsX2d1YyAqZ3VjID0gY2VfdG9fZ3VjKGNlKTsKKwlzdHJ1 Y3QgZ3VjX3N1Ym1pdF9lbmdpbmUgKmdzZSA9IGNlX3RvX2dzZShjZSk7CiAKLQlpZiAoYXRvbWlj X2ZldGNoX2FkZCgtMSwgJmNlLT5ndWNfbnVtX3JxX25vdF9yZWFkeSkgPT0gMSkKLQkJYXRvbWlj X2RlYygmZ3VjLT5udW1fZ3VjX2lkc19ub3RfcmVhZHkpOworCWlmIChhdG9taWNfZmV0Y2hfYWRk KC0xLCAmY2UtPmd1Y19udW1fcnFfbm90X3JlYWR5KSA9PSAxKSB7CisJCUdFTV9CVUdfT04oIWF0 b21pY19yZWFkKCZnc2UtPm51bV9ndWNfaWRzX25vdF9yZWFkeSkpOworCQlhdG9taWNfZGVjKCZn c2UtPm51bV9ndWNfaWRzX25vdF9yZWFkeSk7CisJfQogfQogCi1zdGF0aWMgYm9vbCBuZWVkX3Rh c2tsZXQoc3RydWN0IGludGVsX2d1YyAqZ3VjLCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCitz dGF0aWMgYm9vbCBuZWVkX3Rhc2tsZXQoc3RydWN0IGd1Y19zdWJtaXRfZW5naW5lICpnc2UsIHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIHsKLQlzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKiBj b25zdCBzY2hlZF9lbmdpbmUgPQotCQljZS0+ZW5naW5lLT5zY2hlZF9lbmdpbmU7CisJc3RydWN0 IGk5MTVfc2NoZWRfZW5naW5lICogY29uc3Qgc2NoZWRfZW5naW5lID0gJmdzZS0+c2NoZWRfZW5n aW5lOwogCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmc2NoZWRfZW5naW5lLT5sb2NrKTsKIAotCXJl dHVybiBndWNfaWRzX2V4aGF1c3RlZChndWMpIHx8IHN1Ym1pc3Npb25fZGlzYWJsZWQoZ3VjKSB8 fAotCQlndWMtPnN0YWxsZWRfcnEgfHwgZ3VjLT5zdGFsbGVkX2NvbnRleHQgfHwKLQkJIWxyY19k ZXNjX3JlZ2lzdGVyZWQoZ3VjLCBjZS0+Z3VjX2lkKSB8fAorCXJldHVybiBndWNfaWRzX2V4aGF1 c3RlZChnc2UpIHx8IHN1Ym1pc3Npb25fZGlzYWJsZWQoZ3NlLT5ndWMpIHx8CisJCWdzZS0+c3Rh bGxlZF9ycSB8fCBnc2UtPnN0YWxsZWRfY29udGV4dCB8fAorCQkhbHJjX2Rlc2NfcmVnaXN0ZXJl ZChnc2UtPmd1YywgY2UtPmd1Y19pZCkgfHwKIAkJIWk5MTVfc2NoZWRfZW5naW5lX2lzX2VtcHR5 KHNjaGVkX2VuZ2luZSk7CiB9CiAKLXN0YXRpYyBpbnQgZ3VjX2J5cGFzc190YXNrbGV0X3N1Ym1p dChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCitzdGF0aWMgaW50IGdzZV9ieXBhc3NfdGFza2xldF9z dWJtaXQoc3RydWN0IGd1Y19zdWJtaXRfZW5naW5lICpnc2UsCiAJCQkJICAgICBzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSkKIHsKIAlpbnQgcmV0OwpAQCAtMTM4MSwyNyArMTQzNSwyNyBAQCBzdGF0 aWMgaW50IGd1Y19ieXBhc3NfdGFza2xldF9zdWJtaXQoc3RydWN0IGludGVsX2d1YyAqZ3VjLAog CXRyYWNlX2k5MTVfcmVxdWVzdF9pbihycSwgMCk7CiAKIAlndWNfc2V0X2xyY190YWlsKHJxKTsK LQlyZXQgPSBndWNfYWRkX3JlcXVlc3QoZ3VjLCBycSk7CisJcmV0ID0gZ3NlX2FkZF9yZXF1ZXN0 KGdzZSwgcnEpOwogCiAJaWYgKHVubGlrZWx5KHJldCA9PSAtRURFQURMSykpCi0JCWRpc2FibGVf c3VibWlzc2lvbihndWMpOworCQlkaXNhYmxlX3N1Ym1pc3Npb24oZ3NlLT5ndWMpOwogCiAJcmV0 dXJuIHJldDsKIH0KIAogc3RhdGljIHZvaWQgZ3VjX3N1Ym1pdF9yZXF1ZXN0KHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxKQogeworCXN0cnVjdCBndWNfc3VibWl0X2VuZ2luZSAqZ3NlID0gY2VfdG9f Z3NlKHJxLT5jb250ZXh0KTsKIAlzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKnNjaGVkX2VuZ2lu ZSA9IHJxLT5lbmdpbmUtPnNjaGVkX2VuZ2luZTsKLQlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAm cnEtPmVuZ2luZS0+Z3QtPnVjLmd1YzsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJLyogV2ls bCBiZSBjYWxsZWQgZnJvbSBpcnEtY29udGV4dCB3aGVuIHVzaW5nIGZvcmVpZ24gZmVuY2VzLiAq LwogCXNwaW5fbG9ja19pcnFzYXZlKCZzY2hlZF9lbmdpbmUtPmxvY2ssIGZsYWdzKTsKIAotCWlm IChuZWVkX3Rhc2tsZXQoZ3VjLCBycS0+Y29udGV4dCkpCisJaWYgKG5lZWRfdGFza2xldChnc2Us IHJxLT5jb250ZXh0KSkKIAkJcXVldWVfcmVxdWVzdChzY2hlZF9lbmdpbmUsIHJxLCBycV9wcmlv KHJxKSk7Ci0JZWxzZSBpZiAoZ3VjX2J5cGFzc190YXNrbGV0X3N1Ym1pdChndWMsIHJxKSA9PSAt RUJVU1kpCi0JCWtpY2tfdGFza2xldChndWMpOworCWVsc2UgaWYgKGdzZV9ieXBhc3NfdGFza2xl dF9zdWJtaXQoZ3NlLCBycSkgPT0gLUVCVVNZKQorCQlraWNrX3Rhc2tsZXQoZ3NlKTsKIAogCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJnNjaGVkX2VuZ2luZS0+bG9jaywgZmxhZ3MpOwogCkBAIC0x NDc4LDggKzE1MzIsOSBAQCBzdGF0aWMgaW50IHN0ZWFsX2d1Y19pZChzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMsIGJvb2wgdW5waW5uZWQpCiAJCSAqIGNvbnRleHQuCiAJCSAqLwogCQlpZiAoIXVucGlu bmVkKSB7Ci0JCQlHRU1fQlVHX09OKGd1Yy0+c3RhbGxlZF9jb250ZXh0KTsKLQkJCWd1Yy0+c3Rh bGxlZF9jb250ZXh0ID0gaW50ZWxfY29udGV4dF9nZXQoY2UpOworCQkJR0VNX0JVR19PTihjZV90 b19nc2UoY2UpLT5zdGFsbGVkX2NvbnRleHQpOworCisJCQljZV90b19nc2UoY2UpLT5zdGFsbGVk X2NvbnRleHQgPSBpbnRlbF9jb250ZXh0X2dldChjZSk7CiAJCQlzZXRfY29udGV4dF9ndWNfaWRf c3RvbGVuKGNlKTsKIAkJfSBlbHNlIHsKIAkJCXNldF9jb250ZXh0X2d1Y19pZF9pbnZhbGlkKGNl KTsKQEAgLTE1MzksNyArMTU5NCw3IEBAIHN0YXRpYyBpbnQgcGluX2d1Y19pZChzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMsIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKIHRyeV9hZ2FpbjoKIAlzcGlu X2xvY2tfaXJxc2F2ZSgmZ3VjLT5jb250ZXh0c19sb2NrLCBmbGFncyk7CiAKLQlpZiAoIXRhc2ts ZXQgJiYgZ3VjX2lkc19leGhhdXN0ZWQoZ3VjKSkgeworCWlmICghdGFza2xldCAmJiBndWNfaWRz X2V4aGF1c3RlZChjZV90b19nc2UoY2UpKSkgewogCQlyZXQgPSAtRUFHQUlOOwogCQlnb3RvIG91 dF91bmxvY2s7CiAJfQpAQCAtMTg2MCw3ICsxOTE1LDcgQEAgc3RhdGljIHZvaWQgZ3VjX2NvbnRl eHRfYmFuKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEp CiAJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gY2VfdG9fZ3VjKGNlKTsKIAl1bnNpZ25lZCBsb25n IGZsYWdzOwogCi0JZ3VjX2ZsdXNoX3N1Ym1pc3Npb25zKGd1Yyk7CisJZ3NlX2ZsdXNoX3N1Ym1p c3Npb25zKGNlX3RvX2dzZShjZSkpOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmNlLT5ndWNfc3Rh dGUubG9jaywgZmxhZ3MpOwogCXNldF9jb250ZXh0X2Jhbm5lZChjZSk7CkBAIC0xOTM2LDcgKzE5 OTEsNyBAQCBzdGF0aWMgdm9pZCBndWNfY29udGV4dF9zY2hlZF9kaXNhYmxlKHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSkKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjZS0+Z3VjX3N0YXRlLmxv Y2ssIGZsYWdzKTsKIAogCXdpdGhfaW50ZWxfcnVudGltZV9wbShydW50aW1lX3BtLCB3YWtlcmVm KQotCQlfX2d1Y19jb250ZXh0X3NjaGVkX2Rpc2FibGUoZ3VjLCBjZSwgZ3VjX2lkKTsKKwkJX19n dWNfY29udGV4dF9zY2hlZF9kaXNhYmxlKGNlX3RvX2d1YyhjZSksIGNlLCBndWNfaWQpOwogCiAJ cmV0dXJuOwogdW5waW46CkBAIC0yMDc3LDcgKzIxMzIsNyBAQCBzdGF0aWMgdm9pZCByZW1vdmVf ZnJvbV9jb250ZXh0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQogCWlmIChsaWtlbHkoIXJlcXVl c3RfaGFzX25vX2d1Y19pZChycSkpKQogCQlhdG9taWNfZGVjKCZjZS0+Z3VjX2lkX3JlZik7CiAJ ZWxzZQotCQktLWNlX3RvX2d1YyhycS0+Y29udGV4dCktPnRvdGFsX251bV9ycV93aXRoX25vX2d1 Y19pZDsKKwkJLS1jZV90b19nc2UocnEtPmNvbnRleHQpLT50b3RhbF9udW1fcnFfd2l0aF9ub19n dWNfaWQ7CiAJdW5waW5fZ3VjX2lkKGNlX3RvX2d1YyhjZSksIGNlLCBmYWxzZSk7CiAKIAlpOTE1 X3JlcXVlc3Rfbm90aWZ5X2V4ZWN1dGVfY2JfaW1tKHJxKTsKQEAgLTIxMzYsMTUgKzIxOTEsMTUg QEAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZV9ndWNfaWRfc2NoZWRfZGlzYWJsZShzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY2UpCiAJY2xyX2NvbnRleHRfZ3VjX2lkX3N0b2xlbihjZSk7CiB9CiAKLXN0 YXRpYyB2b2lkIHJldGlyZV93b3JrZXJfc2NoZWRfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMsCitzdGF0aWMgdm9pZCByZXRpcmVfd29ya2VyX3NjaGVkX2Rpc2FibGUoc3RydWN0IGd1Y19z dWJtaXRfZW5naW5lICpnc2UsCiAJCQkJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIHsKIAl1 bnNpZ25lZCBsb25nIGZsYWdzOwogCWJvb2wgZGlzYWJsZWQ7CiAKLQlndWMtPnN0YWxsZWRfY29u dGV4dCA9IE5VTEw7CisJZ3NlLT5zdGFsbGVkX2NvbnRleHQgPSBOVUxMOwogCXNwaW5fbG9ja19p cnFzYXZlKCZjZS0+Z3VjX3N0YXRlLmxvY2ssIGZsYWdzKTsKLQlkaXNhYmxlZCA9IHN1Ym1pc3Np b25fZGlzYWJsZWQoZ3VjKTsKKwlkaXNhYmxlZCA9IHN1Ym1pc3Npb25fZGlzYWJsZWQoZ3NlLT5n dWMpOwogCWlmICghZGlzYWJsZWQgJiYgIWNvbnRleHRfcGVuZGluZ19kaXNhYmxlKGNlKSAmJiBj b250ZXh0X2VuYWJsZWQoY2UpKSB7CiAJCS8qCiAJCSAqIFN0aWxsIGVuYWJsZWQsIGlzc3VlIHNj aGVkdWxlIGRpc2FibGUgKyBjb25maWd1cmUgc3RhdGUgc28KQEAgLTIxNjgsNyArMjIyMyw3IEBA IHN0YXRpYyB2b2lkIHJldGlyZV93b3JrZXJfc2NoZWRfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMsCiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNlLT5ndWNfc3RhdGUubG9jaywgZmxh Z3MpOwogCiAJCXdpdGhfaW50ZWxfcnVudGltZV9wbShydW50aW1lX3BtLCB3YWtlcmVmKQotCQkJ X19ndWNfY29udGV4dF9zY2hlZF9kaXNhYmxlKGd1YywgY2UsIGd1Y19pZCk7CisJCQlfX2d1Y19j b250ZXh0X3NjaGVkX2Rpc2FibGUoZ3NlLT5ndWMsIGNlLCBndWNfaWQpOwogCiAJCWludmFsaWRh dGVfZ3VjX2lkX3NjaGVkX2Rpc2FibGUoY2UpOwogCX0gZWxzZSBpZiAoIWRpc2FibGVkICYmIGNv bnRleHRfcGVuZGluZ19kaXNhYmxlKGNlKSkgewpAQCAtMjE4OCwxMCArMjI0MywxMCBAQCBzdGF0 aWMgdm9pZCByZXRpcmVfd29ya2VyX3NjaGVkX2Rpc2FibGUoc3RydWN0IGludGVsX2d1YyAqZ3Vj LAogCiAJCWludmFsaWRhdGVfZ3VjX2lkX3NjaGVkX2Rpc2FibGUoY2UpOwogCi0JCWd1Yy0+c3Vi bWlzc2lvbl9zdGFsbF9yZWFzb24gPSBTVEFMTF9SRUdJU1RFUl9DT05URVhUOwotCQljbHJfdGFz a2xldF9ibG9ja2VkKGd1Yyk7CisJCWdzZS0+c3VibWlzc2lvbl9zdGFsbF9yZWFzb24gPSBTVEFM TF9SRUdJU1RFUl9DT05URVhUOworCQljbHJfdGFza2xldF9ibG9ja2VkKGdzZSk7CiAKLQkJa2lj a190YXNrbGV0KGNlX3RvX2d1YyhjZSkpOworCQlraWNrX3Rhc2tsZXQoZ3NlKTsKIAl9CiAKIAlp bnRlbF9jb250ZXh0X3B1dChjZSk7CkBAIC0yMjA0LDI1ICsyMjU5LDI2IEBAIHN0YXRpYyBib29s IGNvbnRleHRfbmVlZHNfbHJjX2Rlc2NfcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgYm9v bCBuZXdfZ3VjX2lkCiAJCSFzdWJtaXNzaW9uX2Rpc2FibGVkKGNlX3RvX2d1YyhjZSkpOwogfQog Ci1zdGF0aWMgaW50IHRhc2tsZXRfcGluX2d1Y19pZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQorc3RhdGljIGludCB0YXNrbGV0X3Bpbl9ndWNfaWQoc3Ry dWN0IGd1Y19zdWJtaXRfZW5naW5lICpnc2UsCisJCQkgICAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSkKIHsKIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBycS0+Y29udGV4dDsKIAlpbnQg cmV0ID0gMDsKIAotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmd1Yy0+c2NoZWRfZW5naW5lLT5sb2Nr KTsKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZnc2UtPnNjaGVkX2VuZ2luZS5sb2NrKTsKIAlHRU1f QlVHX09OKCFjZS0+Z3VjX251bV9ycV9zdWJtaXRfbm9faWQpOwogCiAJaWYgKGF0b21pY19hZGRf dW5sZXNzKCZjZS0+Z3VjX2lkX3JlZiwgY2UtPmd1Y19udW1fcnFfc3VibWl0X25vX2lkLCAwKSkK IAkJZ290byBvdXQ7CiAKLQlyZXQgPSBwaW5fZ3VjX2lkKGd1YywgY2UsIHRydWUpOworCXJldCA9 IHBpbl9ndWNfaWQoZ3NlLT5ndWMsIGNlLCB0cnVlKTsKIAlpZiAodW5saWtlbHkocmV0IDwgMCkp IHsKIAkJLyoKIAkJICogTm8gZ3VjX2lkcyBhdmFpbGFibGUsIGRpc2FibGUgdGhlIHRhc2tsZXQg YW5kIGtpY2sgdGhlIHJldGlyZQogCQkgKiB3b3JrcXVldWUgaG9wZWZ1bGx5IGZyZWVpbmcgdXAg c29tZSBndWNfaWRzLgogCQkgKi8KLQkJZ3VjLT5zdGFsbGVkX3JxID0gcnE7Ci0JCWd1Yy0+c3Vi bWlzc2lvbl9zdGFsbF9yZWFzb24gPSBTVEFMTF9HVUNfSURfV09SS1FVRVVFOworCQlnc2UtPnN0 YWxsZWRfcnEgPSBycTsKKwkJZ3NlLT5zdWJtaXNzaW9uX3N0YWxsX3JlYXNvbiA9IFNUQUxMX0dV Q19JRF9XT1JLUVVFVUU7CiAJCXJldHVybiByZXQ7CiAJfQogCkBAIC0yMjM0LDE0ICsyMjkwLDE0 IEBAIHN0YXRpYyBpbnQgdGFza2xldF9waW5fZ3VjX2lkKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yywg c3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiAJCXNldF9jb250ZXh0X25lZWRzX3JlZ2lzdGVyKGNl KTsKIAogCWlmIChyZXQgPT0gTkVXX0dVQ19JRF9FTkFCTEVEKSB7Ci0JCWd1Yy0+c3RhbGxlZF9y cSA9IHJxOwotCQlndWMtPnN1Ym1pc3Npb25fc3RhbGxfcmVhc29uID0gU1RBTExfU0NIRURfRElT QUJMRTsKKwkJZ3NlLT5zdGFsbGVkX3JxID0gcnE7CisJCWdzZS0+c3VibWlzc2lvbl9zdGFsbF9y ZWFzb24gPSBTVEFMTF9TQ0hFRF9ESVNBQkxFOwogCX0KIAogCWNsZWFyX2JpdChDT05URVhUX0xS Q0FfRElSVFksICZjZS0+ZmxhZ3MpOwogb3V0OgotCWd1Yy0+dG90YWxfbnVtX3JxX3dpdGhfbm9f Z3VjX2lkIC09IGNlLT5ndWNfbnVtX3JxX3N1Ym1pdF9ub19pZDsKLQlHRU1fQlVHX09OKGd1Yy0+ dG90YWxfbnVtX3JxX3dpdGhfbm9fZ3VjX2lkIDwgMCk7CisJZ3NlLT50b3RhbF9udW1fcnFfd2l0 aF9ub19ndWNfaWQgLT0gY2UtPmd1Y19udW1fcnFfc3VibWl0X25vX2lkOworCUdFTV9CVUdfT04o Z3NlLT50b3RhbF9udW1fcnFfd2l0aF9ub19ndWNfaWQgPCAwKTsKIAogCWxpc3RfZm9yX2VhY2hf ZW50cnlfcmV2ZXJzZShycSwgJmNlLT5ndWNfYWN0aXZlLnJlcXVlc3RzLCBzY2hlZC5saW5rKQog CQlpZiAocmVxdWVzdF9oYXNfbm9fZ3VjX2lkKHJxKSkgewpAQCAtMjI1OSw3ICsyMzE1LDcgQEAg c3RhdGljIGludCB0YXNrbGV0X3Bpbl9ndWNfaWQoc3RydWN0IGludGVsX2d1YyAqZ3VjLCBzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAkgKiBmcm9tIGEgY29udGV4dCB0aGF0IGhhcyBzY2hlZHVs aW5nIGVuYWJsZWQuIFdlIGhhdmUgdG8gZGlzYWJsZQogCSAqIHNjaGVkdWxpbmcgYmVmb3JlIGRl cmVnaXN0ZXJpbmcgdGhlIGNvbnRleHQgYW5kIGl0IGlzbid0IHNhZmUgdG8gZG8KIAkgKiBpbiB0 aGUgdGFza2xldCBiZWNhdXNlIG9mIGxvY2sgaW52ZXJzaW9uIChjZS0+Z3VjX3N0YXRlLmxvY2sg bXVzdCBiZQotCSAqIGFjcXVpcmVkIGJlZm9yZSBndWMtPnNjaGVkX2VuZ2luZS0+bG9jaykuIFRv IHdvcmsgYXJvdW5kIHRoaXMKKwkgKiBhY3F1aXJlZCBiZWZvcmUgZ3NlLT5zY2hlZF9lbmdpbmUu bG9jaykuIFRvIHdvcmsgYXJvdW5kIHRoaXMKIAkgKiB3ZSBkbyB0aGUgc2NoZWR1bGUgZGlzYWJs ZSBpbiByZXRpcmUgd29ya3F1ZXVlIGFuZCBibG9jayB0aGUgdGFza2xldAogCSAqIHVudGlsIHRo ZSBzY2hlZHVsZSBkb25lIEcySCByZXR1cm5zLiBSZXR1cm5pbmcgbm9uLXplcm8gaGVyZSBraWNr cwogCSAqIHRoZSB3b3JrcXVldWUuCkBAIC0yMjcxLDYgKzIzMjcsNyBAQCBzdGF0aWMgaW50IGd1 Y19yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQogewogCXN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSA9IHJxLT5jb250ZXh0OwogCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9IGNl X3RvX2d1YyhjZSk7CisJc3RydWN0IGd1Y19zdWJtaXRfZW5naW5lICpnc2UgPSBjZV90b19nc2Uo Y2UpOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJaW50IHJldDsKIApAQCAtMjI4Miw4ICsyMzM5 LDggQEAgc3RhdGljIGludCBndWNfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSkKIAkgKiByZWFkeSB0byBzdWJtaXQpLiBEb24ndCBhbGxvY2F0ZSBvbmUgaGVyZSwgZGVmZXIg dG8gc3VibWlzc2lvbiBpbiB0aGUKIAkgKiB0YXNrbGV0LgogCSAqLwotCWlmICh0ZXN0X2FuZF91 cGRhdGVfZ3VjX2lkc19leGhhdXN0ZWQoZ3VjKSB8fAotCSAgICB0b29fbWFueV9ndWNfaWRzX25v dF9yZWFkeShndWMsIGNlKSkgeworCWlmICh0ZXN0X2FuZF91cGRhdGVfZ3VjX2lkc19leGhhdXN0 ZWQoZ3NlKSB8fAorCSAgICB0b29fbWFueV9ndWNfaWRzX25vdF9yZWFkeShnc2UsIGNlKSkgewog CQlzZXRfYml0KEk5MTVfRkVOQ0VfRkxBR19HVUNfSURfTk9UX1BJTk5FRCwgJnJxLT5mZW5jZS5m bGFncyk7CiAJCWdvdG8gb3V0OwogCX0KQEAgLTIzMzgsNyArMjM5NSw3IEBAIHN0YXRpYyBpbnQg Z3VjX3JlcXVlc3RfYWxsb2Moc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiAJCSAqIHN1Ym1pc3Np b25zIHdlIHJldHVybiB0byBhbGxvY2F0aW5nIGd1Y19pZHMgaW4gdGhpcyBmdW5jdGlvbi4KIAkJ ICovCiAJCXNldF9iaXQoSTkxNV9GRU5DRV9GTEFHX0dVQ19JRF9OT1RfUElOTkVELCAmcnEtPmZl bmNlLmZsYWdzKTsKLQkJc2V0X2FuZF91cGRhdGVfZ3VjX2lkc19leGhhdXN0ZWQoZ3VjKTsKKwkJ c2V0X2FuZF91cGRhdGVfZ3VjX2lkc19leGhhdXN0ZWQoZ3NlKTsKIAkJaW5jcl9udW1fcnFfbm90 X3JlYWR5KGNlKTsKIAogCQlyZXR1cm4gMDsKQEAgLTI3MjksMTAgKzI3ODYsMzcgQEAgc3RhdGlj IGlubGluZSB2b2lkIGd1Y19kZWZhdWx0X2lycXMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQogCWludGVsX2VuZ2luZV9zZXRfaXJxX2hhbmRsZXIoZW5naW5lLCBjc19pcnFfaGFuZGxl cik7CiB9CiAKK3N0YXRpYyB2b2lkIGd1Y19zY2hlZF9lbmdpbmVfZGVzdHJveShzdHJ1Y3Qga3Jl ZiAqa3JlZikKK3sKKwlzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKnNjaGVkX2VuZ2luZSA9CisJ CWNvbnRhaW5lcl9vZihrcmVmLCB0eXBlb2YoKnNjaGVkX2VuZ2luZSksIHJlZik7CisJc3RydWN0 IGd1Y19zdWJtaXRfZW5naW5lICpnc2UgPQorCQljb250YWluZXJfb2Yoc2NoZWRfZW5naW5lLCB0 eXBlb2YoKmdzZSksIHNjaGVkX2VuZ2luZSk7CisKKwlpOTE1X3NjaGVkX2VuZ2luZV9raWxsKHNj aGVkX2VuZ2luZSk7IC8qIGZsdXNoIHRoZSBjYWxsYmFjayAqLworCWtmcmVlKGdzZSk7Cit9CisK K3N0YXRpYyB2b2lkIGd1Y19zdWJtaXRfZW5naW5lX2luaXQoc3RydWN0IGludGVsX2d1YyAqZ3Vj LAorCQkJCSAgIHN0cnVjdCBndWNfc3VibWl0X2VuZ2luZSAqZ3NlLAorCQkJCSAgIGludCBpZCkK K3sKKwlpOTE1X3NjaGVkX2VuZ2luZV9pbml0KCZnc2UtPnNjaGVkX2VuZ2luZSwgRU5HSU5FX1ZJ UlRVQUwpOworCUlOSVRfV09SSygmZ3NlLT5yZXRpcmVfd29ya2VyLCByZXRpcmVfd29ya2VyX2Z1 bmMpOworCXRhc2tsZXRfc2V0dXAoJmdzZS0+c2NoZWRfZW5naW5lLnRhc2tsZXQsIGdzZV9zdWJt aXNzaW9uX3Rhc2tsZXQpOworCWdzZS0+c2NoZWRfZW5naW5lLnNjaGVkdWxlID0gaTkxNV9zY2hl ZHVsZTsKKwlnc2UtPnNjaGVkX2VuZ2luZS5kaXNhYmxlZCA9IGd1Y19zY2hlZF9lbmdpbmVfZGlz YWJsZWQ7CisJZ3NlLT5zY2hlZF9lbmdpbmUuZGVzdHJveSA9IGd1Y19zY2hlZF9lbmdpbmVfZGVz dHJveTsKKwlnc2UtPmd1YyA9IGd1YzsKKwlnc2UtPmlkID0gaWQ7Cit9CisKIGludCBpbnRlbF9n dWNfc3VibWlzc2lvbl9zZXR1cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7CiAJc3RydWN0IGlu dGVsX2d1YyAqZ3VjID0gJmVuZ2luZS0+Z3QtPnVjLmd1YzsKKwlzdHJ1Y3QgaTkxNV9zY2hlZF9l bmdpbmUgKnNjaGVkX2VuZ2luZTsKKwlpbnQgcmV0LCBpOwogCiAJLyoKIAkgKiBUaGUgc2V0dXAg cmVsaWVzIG9uIHNldmVyYWwgYXNzdW1wdGlvbnMgKGUuZy4gaXJxcyBhbHdheXMgZW5hYmxlZCkK QEAgLTI3NDAsMTkgKzI4MjQsMjAgQEAgaW50IGludGVsX2d1Y19zdWJtaXNzaW9uX3NldHVwKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkgKi8KIAlHRU1fQlVHX09OKElOVEVMX0dF TihpOTE1KSA8IDExKTsKIAotCWlmICghZ3VjLT5zY2hlZF9lbmdpbmUpIHsKLQkJZ3VjLT5zY2hl ZF9lbmdpbmUgPSBpOTE1X3NjaGVkX2VuZ2luZV9jcmVhdGUoRU5HSU5FX1ZJUlRVQUwpOwotCQlp ZiAoIWd1Yy0+c2NoZWRfZW5naW5lKQotCQkJcmV0dXJuIC1FTk9NRU07Ci0KLQkJZ3VjLT5zY2hl ZF9lbmdpbmUtPnNjaGVkdWxlID0gaTkxNV9zY2hlZHVsZTsKLQkJZ3VjLT5zY2hlZF9lbmdpbmUt PmRpc2FibGVkID0gZ3VjX3NjaGVkX2VuZ2luZV9kaXNhYmxlZDsKLQkJZ3VjLT5zY2hlZF9lbmdp bmUtPmVuZ2luZSA9IGVuZ2luZTsKLQkJdGFza2xldF9zZXR1cCgmZ3VjLT5zY2hlZF9lbmdpbmUt PnRhc2tsZXQsCi0JCQkgICAgICBndWNfc3VibWlzc2lvbl90YXNrbGV0KTsKKwlpZiAoIWd1Yy0+ Z3NlWzBdKSB7CisJCWZvciAoaSA9IDA7IGkgPCBHVUNfU1VCTUlUX0VOR0lORV9NQVg7ICsraSkg eworCQkJZ3VjLT5nc2VbaV0gPSBremFsbG9jKHNpemVvZigqZ3VjLT5nc2VbaV0pLCBHRlBfS0VS TkVMKTsKKwkJCWlmICghZ3VjLT5nc2VbaV0pIHsKKwkJCQlyZXQgPSAtRU5PTUVNOworCQkJCWdv dG8gcHV0X3NjaGVkX2VuZ2luZTsKKwkJCX0KKwkJCWd1Y19zdWJtaXRfZW5naW5lX2luaXQoZ3Vj LCBndWMtPmdzZVtpXSwgaSk7CisJCX0KIAl9CisKKwlzY2hlZF9lbmdpbmUgPSBndWNfdG9fc2No ZWRfZW5naW5lKGd1YywgR1VDX1NVQk1JVF9FTkdJTkVfU0lOR0xFX0xSQyk7CiAJaTkxNV9zY2hl ZF9lbmdpbmVfcHV0KGVuZ2luZS0+c2NoZWRfZW5naW5lKTsKLQllbmdpbmUtPnNjaGVkX2VuZ2lu ZSA9IGk5MTVfc2NoZWRfZW5naW5lX2dldChndWMtPnNjaGVkX2VuZ2luZSk7CisJZW5naW5lLT5z Y2hlZF9lbmdpbmUgPSBpOTE1X3NjaGVkX2VuZ2luZV9nZXQoc2NoZWRfZW5naW5lKTsKIAogCWd1 Y19kZWZhdWx0X3ZmdW5jcyhlbmdpbmUpOwogCWd1Y19kZWZhdWx0X2lycXMoZW5naW5lKTsKQEAg LTI3NjgsNiArMjg1MywxNiBAQCBpbnQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25fc2V0dXAoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCWVuZ2luZS0+cmVsZWFzZSA9IGd1Y19yZWxlYXNl OwogCiAJcmV0dXJuIDA7CisKK3B1dF9zY2hlZF9lbmdpbmU6CisJZm9yIChpID0gMDsgaSA8IEdV Q19TVUJNSVRfRU5HSU5FX01BWDsgKytpKSB7CisJCXN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAq c2NoZWRfZW5naW5lID0KKwkJCWd1Y190b19zY2hlZF9lbmdpbmUoZ3VjLCBpKTsKKworCQlpZiAo c2NoZWRfZW5naW5lKQorCQkJaTkxNV9zY2hlZF9lbmdpbmVfcHV0KHNjaGVkX2VuZ2luZSk7CisJ fQorCXJldHVybiByZXQ7CiB9CiAKIHZvaWQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25fZW5hYmxlKHN0 cnVjdCBpbnRlbF9ndWMgKmd1YykKQEAgLTI4NjMsMTQgKzI5NTgsMTYgQEAgaW50IGludGVsX2d1 Y19kZXJlZ2lzdGVyX2RvbmVfcHJvY2Vzc19tc2coc3RydWN0IGludGVsX2d1YyAqZ3VjLAogCQkJ cmVnaXN0ZXJfY29udGV4dChjZSwgdHJ1ZSk7CiAJCWd1Y19zaWduYWxfY29udGV4dF9mZW5jZShj ZSk7CiAJCWlmIChjb250ZXh0X2Jsb2NrX3Rhc2tsZXQoY2UpKSB7Ci0JCQlHRU1fQlVHX09OKGd1 Yy0+c3VibWlzc2lvbl9zdGFsbF9yZWFzb24gIT0KKwkJCXN0cnVjdCBndWNfc3VibWl0X2VuZ2lu ZSAqZ3NlID0gY2VfdG9fZ3NlKGNlKTsKKworCQkJR0VNX0JVR19PTihnc2UtPnN1Ym1pc3Npb25f c3RhbGxfcmVhc29uICE9CiAJCQkJICAgU1RBTExfREVSRUdJU1RFUl9DT05URVhUKTsKIAogCQkJ Y2xyX2NvbnRleHRfYmxvY2tfdGFza2xldChjZSk7Ci0JCQlndWMtPnN1Ym1pc3Npb25fc3RhbGxf cmVhc29uID0gU1RBTExfTU9WRV9MUkNfVEFJTDsKLQkJCWNscl90YXNrbGV0X2Jsb2NrZWQoZ3Vj KTsKKwkJCWdzZS0+c3VibWlzc2lvbl9zdGFsbF9yZWFzb24gPSBTVEFMTF9NT1ZFX0xSQ19UQUlM OworCQkJY2xyX3Rhc2tsZXRfYmxvY2tlZChnc2UpOwogCi0JCQlraWNrX3Rhc2tsZXQoY2VfdG9f Z3VjKGNlKSk7CisJCQlraWNrX3Rhc2tsZXQoZ3NlKTsKIAkJfQogCQlpbnRlbF9jb250ZXh0X3B1 dChjZSk7CiAJfSBlbHNlIGlmIChjb250ZXh0X2Rlc3Ryb3llZChjZSkpIHsKQEAgLTI5MzUsMTEg KzMwMzIsMTMgQEAgaW50IGludGVsX2d1Y19zY2hlZF9kb25lX3Byb2Nlc3NfbXNnKHN0cnVjdCBp bnRlbF9ndWMgKmd1YywKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2UtPmd1Y19zdGF0ZS5s b2NrLCBmbGFncyk7CiAKIAkJaWYgKGNvbnRleHRfYmxvY2tfdGFza2xldChjZSkpIHsKKwkJCXN0 cnVjdCBndWNfc3VibWl0X2VuZ2luZSAqZ3NlID0gY2VfdG9fZ3NlKGNlKTsKKwogCQkJY2xyX2Nv bnRleHRfYmxvY2tfdGFza2xldChjZSk7Ci0JCQlndWMtPnN1Ym1pc3Npb25fc3RhbGxfcmVhc29u ID0gU1RBTExfUkVHSVNURVJfQ09OVEVYVDsKLQkJCWNscl90YXNrbGV0X2Jsb2NrZWQoZ3VjKTsK KwkJCWdzZS0+c3VibWlzc2lvbl9zdGFsbF9yZWFzb24gPSBTVEFMTF9SRUdJU1RFUl9DT05URVhU OworCQkJY2xyX3Rhc2tsZXRfYmxvY2tlZChnc2UpOwogCi0JCQlraWNrX3Rhc2tsZXQoY2VfdG9f Z3VjKGNlKSk7CisJCQlraWNrX3Rhc2tsZXQoZ3NlKTsKIAkJfQogCiAJCWlmIChiYW5uZWQpIHsK QEAgLTI5NzEsNyArMzA3MCw3IEBAIHN0YXRpYyB2b2lkIGNhcHR1cmVfZXJyb3Jfc3RhdGUoc3Ry dWN0IGludGVsX2d1YyAqZ3VjLAogc3RhdGljIHZvaWQgZ3VjX2NvbnRleHRfcmVwbGF5KHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSkKIHsKIAlfX2d1Y19yZXNldF9jb250ZXh0KGNlLCB0cnVlKTsK LQlraWNrX3Rhc2tsZXQoY2VfdG9fZ3VjKGNlKSk7CisJa2lja190YXNrbGV0KGNlX3RvX2dzZShj ZSkpOwogfQogCiBzdGF0aWMgdm9pZCBndWNfaGFuZGxlX2NvbnRleHRfcmVzZXQoc3RydWN0IGlu dGVsX2d1YyAqZ3VjLApAQCAtMzExNSwzMiArMzIxNCwyOSBAQCB2b2lkIGludGVsX2d1Y19kdW1w X2FjdGl2ZV9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJfQogfQog Ci12b2lkIGludGVsX2d1Y19sb2dfc3VibWlzc2lvbl9pbmZvKHN0cnVjdCBpbnRlbF9ndWMgKmd1 YywKLQkJCQkgICBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApCitzdGF0aWMgdm9pZCBnc2VfbG9nX3N1 Ym1pc3Npb25faW5mbyhzdHJ1Y3QgZ3VjX3N1Ym1pdF9lbmdpbmUgKmdzZSwKKwkJCQkgICAgc3Ry dWN0IGRybV9wcmludGVyICpwLCBpbnQgaWQpCiB7Ci0Jc3RydWN0IGk5MTVfc2NoZWRfZW5naW5l ICpzY2hlZF9lbmdpbmUgPSBndWMtPnNjaGVkX2VuZ2luZTsKKwlzdHJ1Y3QgaTkxNV9zY2hlZF9l bmdpbmUgKnNjaGVkX2VuZ2luZSA9ICZnc2UtPnNjaGVkX2VuZ2luZTsKIAlzdHJ1Y3QgcmJfbm9k ZSAqcmI7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAotCWRybV9wcmludGYocCwgIkd1QyBOdW1i ZXIgT3V0c3RhbmRpbmcgU3VibWlzc2lvbiBHMkg6ICV1XG4iLAotCQkgICBhdG9taWNfcmVhZCgm Z3VjLT5vdXRzdGFuZGluZ19zdWJtaXNzaW9uX2cyaCkpOwotCWRybV9wcmludGYocCwgIkd1QyBO dW1iZXIgR3VDIElEczogJXVcbiIsIGd1Yy0+bnVtX2d1Y19pZHMpOwotCWRybV9wcmludGYocCwg Ikd1QyBNYXggR3VDIElEczogJXVcbiIsIGd1Yy0+bWF4X2d1Y19pZHMpOwotCWRybV9wcmludGYo cCwgIkd1QyB0YXNrbGV0IGNvdW50OiAldVxuIiwKKwlkcm1fcHJpbnRmKHAsICJHU0VbJWRdIHRh c2tsZXQgY291bnQ6ICV1XG4iLCBpZCwKIAkJICAgYXRvbWljX3JlYWQoJnNjaGVkX2VuZ2luZS0+ dGFza2xldC5jb3VudCkpOwotCWRybV9wcmludGYocCwgIkd1QyBzdWJtaXQgZmxhZ3M6IDB4JTA0 bHhcbiIsIGd1Yy0+ZmxhZ3MpOwotCWRybV9wcmludGYocCwgIkd1QyB0b3RhbCBudW1iZXIgcmVx dWVzdCB3aXRob3V0IGd1Y19pZDogJWRcbiIsCi0JCSAgIGd1Yy0+dG90YWxfbnVtX3JxX3dpdGhf bm9fZ3VjX2lkKTsKLQlkcm1fcHJpbnRmKHAsICJHdUMgTnVtYmVyIEd1QyBJRHMgbm90IHJlYWR5 OiAlZFxuIiwKLQkJICAgYXRvbWljX3JlYWQoJmd1Yy0+bnVtX2d1Y19pZHNfbm90X3JlYWR5KSk7 Ci0JZHJtX3ByaW50ZihwLCAiR3VDIHN0YWxsIHJlYXNvbjogJWRcbiIsIGd1Yy0+c3VibWlzc2lv bl9zdGFsbF9yZWFzb24pOwotCWRybV9wcmludGYocCwgIkd1QyBzdGFsbGVkIHJlcXVlc3Q6ICVz XG4iLAotCQkgICB5ZXNubyhndWMtPnN0YWxsZWRfcnEpKTsKLQlkcm1fcHJpbnRmKHAsICJHdUMg c3RhbGxlZCBjb250ZXh0OiAlc1xuXG4iLAotCQkgICB5ZXNubyhndWMtPnN0YWxsZWRfY29udGV4 dCkpOworCWRybV9wcmludGYocCwgIkdTRVslZF0gc3VibWl0IGZsYWdzOiAweCUwNGx4XG4iLCBp ZCwgZ3NlLT5mbGFncyk7CisJZHJtX3ByaW50ZihwLCAiR1NFWyVkXSB0b3RhbCBudW1iZXIgcmVx dWVzdCB3aXRob3V0IGd1Y19pZDogJWRcbiIsCisJCSAgIGlkLCBnc2UtPnRvdGFsX251bV9ycV93 aXRoX25vX2d1Y19pZCk7CisJZHJtX3ByaW50ZihwLCAiR1NFWyVkXSBOdW1iZXIgR3VDIElEcyBu b3QgcmVhZHk6ICVkXG4iLAorCQkgICBpZCwgYXRvbWljX3JlYWQoJmdzZS0+bnVtX2d1Y19pZHNf bm90X3JlYWR5KSk7CisJZHJtX3ByaW50ZihwLCAiR1NFWyVkXSBzdGFsbCByZWFzb246ICVkXG4i LAorCQkgICBpZCwgZ3NlLT5zdWJtaXNzaW9uX3N0YWxsX3JlYXNvbik7CisJZHJtX3ByaW50Zihw LCAiR1NFWyVkXSBzdGFsbGVkIHJlcXVlc3Q6ICVzXG4iLAorCQkgICBpZCwgeWVzbm8oZ3NlLT5z dGFsbGVkX3JxKSk7CisJZHJtX3ByaW50ZihwLCAiR1NFWyVkXSBzdGFsbGVkIGNvbnRleHQ6ICVz XG5cbiIsCisJCSAgIGlkLCB5ZXNubyhnc2UtPnN0YWxsZWRfY29udGV4dCkpOwogCiAJc3Bpbl9s b2NrX2lycXNhdmUoJnNjaGVkX2VuZ2luZS0+bG9jaywgZmxhZ3MpOwotCWRybV9wcmludGYocCwg IlJlcXVlc3RzIGluIEd1QyBzdWJtaXQgdGFza2xldDpcbiIpOworCWRybV9wcmludGYocCwgIlJl cXVlc3RzIGluIEdTRVslZF0gc3VibWl0IHRhc2tsZXQ6XG4iLCBpZCk7CiAJZm9yIChyYiA9IHJi X2ZpcnN0X2NhY2hlZCgmc2NoZWRfZW5naW5lLT5xdWV1ZSk7IHJiOyByYiA9IHJiX25leHQocmIp KSB7CiAJCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwbCA9IHRvX3ByaW9saXN0KHJiKTsKIAkJc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnE7CkBAIC0zMTU0LDYgKzMyNTAsMjAgQEAgdm9pZCBpbnRlbF9n dWNfbG9nX3N1Ym1pc3Npb25faW5mbyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCiAJZHJtX3ByaW50 ZihwLCAiXG4iKTsKIH0KIAordm9pZCBpbnRlbF9ndWNfbG9nX3N1Ym1pc3Npb25faW5mbyhzdHJ1 Y3QgaW50ZWxfZ3VjICpndWMsCisJCQkJICAgc3RydWN0IGRybV9wcmludGVyICpwKQoreworCWlu dCBpOworCisJZHJtX3ByaW50ZihwLCAiR3VDIE51bWJlciBPdXRzdGFuZGluZyBTdWJtaXNzaW9u IEcySDogJXVcbiIsCisJCSAgIGF0b21pY19yZWFkKCZndWMtPm91dHN0YW5kaW5nX3N1Ym1pc3Np b25fZzJoKSk7CisJZHJtX3ByaW50ZihwLCAiR3VDIE51bWJlciBHdUMgSURzOiAlZFxuIiwgZ3Vj LT5udW1fZ3VjX2lkcyk7CisJZHJtX3ByaW50ZihwLCAiR3VDIE1heCBOdW1iZXIgR3VDIElEczog JWRcblxuIiwgZ3VjLT5tYXhfZ3VjX2lkcyk7CisKKwlmb3IgKGkgPSAwOyBpIDwgR1VDX1NVQk1J VF9FTkdJTkVfTUFYOyArK2kpCisJCWdzZV9sb2dfc3VibWlzc2lvbl9pbmZvKGd1Yy0+Z3NlW2ld LCBwLCBpKTsKK30KKwogdm9pZCBpbnRlbF9ndWNfbG9nX2NvbnRleHRfaW5mbyhzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMsCiAJCQkJc3RydWN0IGRybV9wcmludGVyICpwKQogewpAQCAtMzE4NSw2ICsz Mjk1LDcgQEAgZ3VjX2NyZWF0ZV92aXJ0dWFsKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKipzaWJs aW5ncywgdW5zaWduZWQgaW50IGNvdW50KQogewogCXN0cnVjdCBndWNfdmlydHVhbF9lbmdpbmUg KnZlOwogCXN0cnVjdCBpbnRlbF9ndWMgKmd1YzsKKwlzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUg KnNjaGVkX2VuZ2luZTsKIAl1bnNpZ25lZCBpbnQgbjsKIAlpbnQgZXJyOwogCkBAIC0zMTkzLDYg KzMzMDQsNyBAQCBndWNfY3JlYXRlX3ZpcnR1YWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqKnNp YmxpbmdzLCB1bnNpZ25lZCBpbnQgY291bnQpCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwog CiAJZ3VjID0gJnNpYmxpbmdzWzBdLT5ndC0+dWMuZ3VjOworCXNjaGVkX2VuZ2luZSA9IGd1Y190 b19zY2hlZF9lbmdpbmUoZ3VjLCBHVUNfU1VCTUlUX0VOR0lORV9TSU5HTEVfTFJDKTsKIAogCXZl LT5iYXNlLmk5MTUgPSBzaWJsaW5nc1swXS0+aTkxNTsKIAl2ZS0+YmFzZS5ndCA9IHNpYmxpbmdz WzBdLT5ndDsKQEAgLTMyMDYsNyArMzMxOCw3IEBAIGd1Y19jcmVhdGVfdmlydHVhbChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICoqc2libGluZ3MsIHVuc2lnbmVkIGludCBjb3VudCkKIAogCXNucHJp bnRmKHZlLT5iYXNlLm5hbWUsIHNpemVvZih2ZS0+YmFzZS5uYW1lKSwgInZpcnR1YWwiKTsKIAot CXZlLT5iYXNlLnNjaGVkX2VuZ2luZSA9IGk5MTVfc2NoZWRfZW5naW5lX2dldChndWMtPnNjaGVk X2VuZ2luZSk7CisJdmUtPmJhc2Uuc2NoZWRfZW5naW5lID0gaTkxNV9zY2hlZF9lbmdpbmVfZ2V0 KHNjaGVkX2VuZ2luZSk7CiAKIAl2ZS0+YmFzZS5jb3BzID0gJnZpcnR1YWxfZ3VjX2NvbnRleHRf b3BzOwogCXZlLT5iYXNlLnJlcXVlc3RfYWxsb2MgPSBndWNfcmVxdWVzdF9hbGxvYzsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uX3R5 cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbl90 eXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTQ1YzJmMDBm MDljCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf Z3VjX3N1Ym1pc3Npb25fdHlwZXMuaApAQCAtMCwwICsxLDUzIEBACisvKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogTUlUICovCisvKgorICogQ29weXJpZ2h0IMKpIDIwMTQtMjAxOSBJbnRlbCBD b3Jwb3JhdGlvbgorICovCisKKyNpZm5kZWYgX0lOVEVMX0dVQ19TVUJNSVNTSU9OX1RZUEVTX0hf CisjZGVmaW5lIF9JTlRFTF9HVUNfU1VCTUlTU0lPTl9UWVBFU19IXworCisjaW5jbHVkZSAiZ3Qv aW50ZWxfZW5naW5lX3R5cGVzLmgiCisjaW5jbHVkZSAiZ3QvaW50ZWxfY29udGV4dF90eXBlcy5o IgorI2luY2x1ZGUgImk5MTVfc2NoZWR1bGVyX3R5cGVzLmgiCisKK3N0cnVjdCBpbnRlbF9ndWM7 CitzdHJ1Y3QgaTkxNV9yZXF1ZXN0OworCisvKiBHdUMgVmlydHVhbCBFbmdpbmUgKi8KK3N0cnVj dCBndWNfdmlydHVhbF9lbmdpbmUgeworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgYmFzZTsKKwlz dHJ1Y3QgaW50ZWxfY29udGV4dCBjb250ZXh0OworfTsKKworLyoKKyAqIE9iamVjdCB3aGljaCBl bmNhcHN1bGF0ZXMgdGhlIGdsb2JhbGx5IG9wZXJhdGVkIG9uIGk5MTVfc2NoZWRfZW5naW5lICsK KyAqIHRoZSBHdUMgc3VibWlzc2lvbiBzdGF0ZSBtYWNoaW5lIGRlc2NyaWJlZCBpbiBpbnRlbF9n dWNfc3VibWlzc2lvbi5jLgorICovCitzdHJ1Y3QgZ3VjX3N1Ym1pdF9lbmdpbmUgeworCXN0cnVj dCBpOTE1X3NjaGVkX2VuZ2luZSBzY2hlZF9lbmdpbmU7CisJc3RydWN0IHdvcmtfc3RydWN0IHJl dGlyZV93b3JrZXI7CisJc3RydWN0IGludGVsX2d1YyAqZ3VjOworCXN0cnVjdCBpOTE1X3JlcXVl c3QgKnN0YWxsZWRfcnE7CisJc3RydWN0IGludGVsX2NvbnRleHQgKnN0YWxsZWRfY29udGV4dDsK Kwl1bnNpZ25lZCBsb25nIGZsYWdzOworCWludCB0b3RhbF9udW1fcnFfd2l0aF9ub19ndWNfaWQ7 CisJYXRvbWljX3QgbnVtX2d1Y19pZHNfbm90X3JlYWR5OworCWludCBpZDsKKworCS8qCisJICog U3VibWlzc29uIHN0YWxsIHJlYXNvbi4gU2VlIGludGVsX2d1Y19zdWJtaXNzaW9uLmMgZm9yIGRl dGFpbGVkCisJICogZGVzY3JpcHRpb24uCisJICovCisJZW51bSB7CisJCVNUQUxMX05PTkUsCisJ CVNUQUxMX0dVQ19JRF9XT1JLUVVFVUUsCisJCVNUQUxMX0dVQ19JRF9UQVNLTEVULAorCQlTVEFM TF9TQ0hFRF9ESVNBQkxFLAorCQlTVEFMTF9SRUdJU1RFUl9DT05URVhULAorCQlTVEFMTF9ERVJF R0lTVEVSX0NPTlRFWFQsCisJCVNUQUxMX01PVkVfTFJDX1RBSUwsCisJCVNUQUxMX0FERF9SRVFV RVNULAorCX0gc3VibWlzc2lvbl9zdGFsbF9yZWFzb247Cit9OworCisjZW5kaWYKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jCmluZGV4IDcyYTliZWUzMDI2Zi4uNTE2NDRkZTBlOWNh IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMKQEAgLTQzMSw3ICs0MzEsNyBA QCB2b2lkIGk5MTVfcmVxdWVzdF9zaG93X3dpdGhfc2NoZWR1bGUoc3RydWN0IGRybV9wcmludGVy ICptLAogCXJjdV9yZWFkX3VubG9jaygpOwogfQogCi12b2lkIGk5MTVfc2NoZWRfZW5naW5lX2Zy ZWUoc3RydWN0IGtyZWYgKmtyZWYpCitzdGF0aWMgdm9pZCBkZWZhdWx0X2Rlc3Ryb3koc3RydWN0 IGtyZWYgKmtyZWYpCiB7CiAJc3RydWN0IGk5MTVfc2NoZWRfZW5naW5lICpzY2hlZF9lbmdpbmUg PQogCQljb250YWluZXJfb2Yoa3JlZiwgdHlwZW9mKCpzY2hlZF9lbmdpbmUpLCByZWYpOwpAQCAt NDQ1LDIwICs0NDUsMTUgQEAgc3RhdGljIGJvb2wgZGVmYXVsdF9kaXNhYmxlZChzdHJ1Y3QgaTkx NV9zY2hlZF9lbmdpbmUgKnNjaGVkX2VuZ2luZSkKIAlyZXR1cm4gZmFsc2U7CiB9CiAKLXN0cnVj dCBpOTE1X3NjaGVkX2VuZ2luZSAqCi1pOTE1X3NjaGVkX2VuZ2luZV9jcmVhdGUodW5zaWduZWQg aW50IHN1YmNsYXNzKQordm9pZCBpOTE1X3NjaGVkX2VuZ2luZV9pbml0KHN0cnVjdCBpOTE1X3Nj aGVkX2VuZ2luZSAqc2NoZWRfZW5naW5lLAorCQkJICAgIHVuc2lnbmVkIGludCBzdWJjbGFzcykK IHsKLQlzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKnNjaGVkX2VuZ2luZTsKLQotCXNjaGVkX2Vu Z2luZSA9IGt6YWxsb2Moc2l6ZW9mKCpzY2hlZF9lbmdpbmUpLCBHRlBfS0VSTkVMKTsKLQlpZiAo IXNjaGVkX2VuZ2luZSkKLQkJcmV0dXJuIE5VTEw7Ci0KIAlrcmVmX2luaXQoJnNjaGVkX2VuZ2lu ZS0+cmVmKTsKIAogCXNjaGVkX2VuZ2luZS0+cXVldWUgPSBSQl9ST09UX0NBQ0hFRDsKIAlzY2hl ZF9lbmdpbmUtPnF1ZXVlX3ByaW9yaXR5X2hpbnQgPSBJTlRfTUlOOwogCXNjaGVkX2VuZ2luZS0+ ZGlzYWJsZWQgPSBkZWZhdWx0X2Rpc2FibGVkOworCXNjaGVkX2VuZ2luZS0+ZGVzdHJveSA9IGRl ZmF1bHRfZGVzdHJveTsKIAogCUlOSVRfTElTVF9IRUFEKCZzY2hlZF9lbmdpbmUtPnJlcXVlc3Rz KTsKIAlJTklUX0xJU1RfSEVBRCgmc2NoZWRfZW5naW5lLT5ob2xkKTsKQEAgLTQ3Nyw3ICs0NzIs MTkgQEAgaTkxNV9zY2hlZF9lbmdpbmVfY3JlYXRlKHVuc2lnbmVkIGludCBzdWJjbGFzcykKIAls b2NrX21hcF9yZWxlYXNlKCZzY2hlZF9lbmdpbmUtPmxvY2suZGVwX21hcCk7CiAJbG9jYWxfaXJx X2VuYWJsZSgpOwogI2VuZGlmCit9CisKK3N0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqCitpOTE1 X3NjaGVkX2VuZ2luZV9jcmVhdGUodW5zaWduZWQgaW50IHN1YmNsYXNzKQoreworCXN0cnVjdCBp OTE1X3NjaGVkX2VuZ2luZSAqc2NoZWRfZW5naW5lOworCisJc2NoZWRfZW5naW5lID0ga3phbGxv YyhzaXplb2YoKnNjaGVkX2VuZ2luZSksIEdGUF9LRVJORUwpOworCWlmICghc2NoZWRfZW5naW5l KQorCQlyZXR1cm4gTlVMTDsKIAorCWk5MTVfc2NoZWRfZW5naW5lX2luaXQoc2NoZWRfZW5naW5l LCBzdWJjbGFzcyk7CisgCiAJcmV0dXJuIHNjaGVkX2VuZ2luZTsKIH0KIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfc2NoZWR1bGVyLmgKaW5kZXggZWM4ZGZhODdjYmI2Li45MjYyN2Y3MjE4MmEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuaApAQCAtNTMsNiArNTMsOSBAQCB2b2lk IGk5MTVfcmVxdWVzdF9zaG93X3dpdGhfc2NoZWR1bGUoc3RydWN0IGRybV9wcmludGVyICptLAog CQkJCSAgICAgY29uc3QgY2hhciAqcHJlZml4LAogCQkJCSAgICAgaW50IGluZGVudCk7CiAKK3Zv aWQgaTkxNV9zY2hlZF9lbmdpbmVfaW5pdChzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKnNjaGVk X2VuZ2luZSwKKwkJCSAgICB1bnNpZ25lZCBpbnQgc3ViY2xhc3MpOworCiBzdHJ1Y3QgaTkxNV9z Y2hlZF9lbmdpbmUgKgogaTkxNV9zY2hlZF9lbmdpbmVfY3JlYXRlKHVuc2lnbmVkIGludCBzdWJj bGFzcyk7CiAKQEAgLTY4LDcgKzcxLDcgQEAgaTkxNV9zY2hlZF9lbmdpbmVfZ2V0KHN0cnVjdCBp OTE1X3NjaGVkX2VuZ2luZSAqc2NoZWRfZW5naW5lKQogc3RhdGljIGlubGluZSB2b2lkCiBpOTE1 X3NjaGVkX2VuZ2luZV9wdXQoc3RydWN0IGk5MTVfc2NoZWRfZW5naW5lICpzY2hlZF9lbmdpbmUp CiB7Ci0Ja3JlZl9wdXQoJnNjaGVkX2VuZ2luZS0+cmVmLCBpOTE1X3NjaGVkX2VuZ2luZV9mcmVl KTsKKwlrcmVmX3B1dCgmc2NoZWRfZW5naW5lLT5yZWYsIHNjaGVkX2VuZ2luZS0+ZGVzdHJveSk7 CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9zY2hlZHVsZXJfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2No ZWR1bGVyX3R5cGVzLmgKaW5kZXggYTcxODM3OTJkMTEwLi5hMGI3NTVhMjcxNDAgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyX3R5cGVzLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXJfdHlwZXMuaApAQCAtMTQxLDYgKzE0MSw5 IEBAIHN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSB7CiAJLyogQmFjayBwb2ludGVyIHRvIGVuZ2lu ZSAqLwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKIAorCS8qIERlc3Ryb3kgc2No ZWR1bGUgZW5naW5lICovCisJdm9pZAkoKmRlc3Ryb3kpKHN0cnVjdCBrcmVmICprcmVmKTsKKwog CS8qIFNjaGVkdWxlIGVuZ2luZSBpcyBkaXNhYmxlZCBieSBiYWNrZW5kICovCiAJYm9vbAkoKmRp c2FibGVkKShzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKnNjaGVkX2VuZ2luZSk7CiAKLS0gCjIu MjguMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==