From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.7 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D85BBC4338F for ; Mon, 26 Jul 2021 19:08:32 +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 A871460238 for ; Mon, 26 Jul 2021 19:08:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org A871460238 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 57E366E8D5; Mon, 26 Jul 2021 19:08:32 +0000 (UTC) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id D94996E8D5; Mon, 26 Jul 2021 19:08:30 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10057"; a="199486856" X-IronPort-AV: E=Sophos;i="5.84,270,1620716400"; d="scan'208";a="199486856" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Jul 2021 12:08:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,270,1620716400"; d="scan'208";a="566278086" Received: from vbelgaum-ubuntu.fm.intel.com ([10.1.27.27]) by orsmga004.jf.intel.com with ESMTP; 26 Jul 2021 12:08:28 -0700 From: Vinay Belgaumkar To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Date: Mon, 26 Jul 2021 12:07:46 -0700 Message-Id: <20210726190800.26762-2-vinay.belgaumkar@intel.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20210726190800.26762-1-vinay.belgaumkar@intel.com> References: <20210726190800.26762-1-vinay.belgaumkar@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 01/15] drm/i915/guc: SQUASHED PATCH - DO NOT REVIEW 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: Fernando Pacheco , Rahul Kumar Singh Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" RnJvbTogTWF0dGhldyBCcm9zdCA8bWF0dGhldy5icm9zdEBpbnRlbC5jb20+CgpGcm9tIHRoZSBz ZXJpZXMgaGVyZSAtIGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9zZXJpZXMvOTI5 ODQvCmFuZCBpbiByZXZpZXcgaGVyZSAtIGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9y Zy9zZXJpZXMvOTI5MTIvCgpJbXBsZW1lbnQgR3VDIHZpcnR1YWwgZW5naW5lcy4gUmF0aGVyIHNp bXBsZSBpbXBsZW1lbnRhdGlvbiwgYmFzaWNhbGx5Cmp1c3QgYWxsb2NhdGUgYW4gZW5naW5lLCBz ZXR1cCBjb250ZXh0IGVudGVyIC8gZXhpdCBmdW5jdGlvbiB0byB2aXJ0dWFsCmVuZ2luZSBzcGVj aWZpYyBmdW5jdGlvbnMsIHNldCBhbGwgb3RoZXIgdmFyaWFibGVzIC8gZnVuY3Rpb25zIHRvIGd1 Ywp2ZXJzaW9ucywgYW5kIHNldCB0aGUgZW5naW5lIG1hc2sgdG8gdGhhdCBvZiBhbGwgdGhlIHNp YmxpbmdzLgoKdjI6IFVwZGF0ZSB0byB3b3JrIHdpdGggcHJvdG8tY3R4CnYzOgogKERhbmllbGUp CiAgLSBEcm9wIGluY2x1ZGUsIGFkZCBjb21tZW50IHRvIGludGVsX3ZpcnR1YWxfZW5naW5lX2hh c19oZWFydGJlYXQKCkNjOiBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5pZWxlLmNlcmFvbG9z cHVyaW9AaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJy b3N0QGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmll bGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+Cgpkcm0vaTkxNS9ndWM6IE1ha2UgaGFuZ2NoZWNr IHdvcmsgd2l0aCBHdUMgdmlydHVhbCBlbmdpbmVzCgpUaGUgc2VyaWFsIG51bWJlciB0cmFja2lu ZyBvZiBlbmdpbmVzIGhhcHBlbnMgYXQgdGhlIGJhY2tlbmQgb2YKcmVxdWVzdCBzdWJtaXNzaW9u IGFuZCB3YXMgZXhwZWN0aW5nIHRvIG9ubHkgYmUgZ2l2ZW4gcGh5c2ljYWwKZW5naW5lcy4gSG93 ZXZlciwgaW4gR3VDIHN1Ym1pc3Npb24gbW9kZSwgdGhlIGRlY29tcG9zaXRpb24gb2YgdmlydHVh bAp0byBwaHlzaWNhbCBlbmdpbmVzIGRvZXMgbm90IGhhcHBlbiBpbiBpOTE1LiBJbnN0ZWFkLCBy ZXF1ZXN0cyBhcmUKc3VibWl0dGVkIHRvIHRoZWlyIHZpcnR1YWwgZW5naW5lIG1hc2sgYWxsIHRo ZSB3YXkgdGhyb3VnaCB0byB0aGUKaGFyZHdhcmUgKGkuZS4gdG8gR3VDKS4gVGhpcyB3b3VsZCBt ZWFuIHRoYXQgdGhlIGhlYXJ0IGJlYXQgY29kZQp0aGlua3MgdGhlIHBoeXNpY2FsIGVuZ2luZXMg YXJlIGlkbGUgZHVlIHRvIHRoZSBzZXJpYWwgbnVtYmVyIG5vdAppbmNyZW1lbnRpbmcuIFdoaWNo IGluIHR1cm5zIG1lYW5zIGhhbmdjaGVjayBkb2VzIG5vdCB3b3JrIGZvcgpHdUMgdmlydHVhbCBl bmdpbmVzLgoKVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSB0cmFja2luZyB0byBkZWNvbXBvc2Ugdmly dHVhbCBlbmdpbmVzIGludG8KdGhlaXIgcGh5c2ljYWwgY29uc3RpdHVlbnRzIGFuZCB0cmFja3Mg dGhlIHJlcXVlc3QgYWdhaW5zdCBlYWNoLiBUaGlzCmlzIG5vdCBlbnRpcmVseSBhY2N1cmF0ZSBh cyB0aGUgR3VDIHdpbGwgb25seSBiZSBpc3N1aW5nIHRoZSByZXF1ZXN0CnRvIG9uZSBwaHlzaWNh bCBlbmdpbmUuIEhvd2V2ZXIsIGl0IGlzIHRoZSBiZXN0IHRoYXQgaTkxNSBjYW4gZG8gZ2l2ZW4K dGhhdCBpdCBoYXMgbm8ga25vd2xlZGdlIG9mIHRoZSBHdUMncyBzY2hlZHVsaW5nIGRlY2lzaW9u cy4KCkRvd25zaWRlIG9mIHRoaXMgaXMgdGhhdCBhbGwgcGh5c2ljYWwgZW5naW5lcyBjb25zdGl0 dXRpbmcgYSBHdUMKdmlydHVhbCBlbmdpbmUgd2lsbCBiZSBwZXJpb2RpY2FsbHkgdW5wYXJrZWQg KGV2ZW4gZHVyaW5nIGp1c3QgYSBzaW5nbGUKY29udGV4dCBleGVjdXRpbmcpIGluIG9yZGVyIHRv IGJlIHBpbmdlZCB3aXRoIGEgaGVhcnRiZWF0IHJlcXVlc3QuCkhvd2V2ZXIgdGhlIHBvd2VyIGFu ZCBwZXJmb3JtYW5jZSBjb3N0IG9mIHRoaXMgaXMgbm90IGV4cGVjdGVkIHRvIGJlCm1lYXN1cmFi bGUgKGR1ZSBsb3cgZnJlcXVlbmN5IG9mIGhlYXJ0YmVhdCBwdWxzZXMpIGFuZCBpdCBpcyBjb25z aWRlcmVkCmFuIGVhc2llciBvcHRpb24gdGhhbiB0cnlpbmcgdG8gbWFrZSBjaGFuZ2VzIHRvIEd1 QyBmaXJtd2FyZS4KCnYyOgogKFR2cnRrbykKICAtIFVwZGF0ZSBjb21taXQgbWVzc2FnZQogIC0g SGF2ZSBkZWZhdWx0IGJlaGF2aW9yIGlmIG5vIHZmdW5jIHByZXNlbnQKClNpZ25lZC1vZmYtYnk6 IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6 IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogTWF0 dGhldyBCcm9zdCA8bWF0dGhldy5icm9zdEBpbnRlbC5jb20+Cgpkcm0vaTkxNTogSG9sZCByZWZl cmVuY2UgdG8gaW50ZWxfY29udGV4dCBvdmVyIGxpZmUgb2YgaTkxNV9yZXF1ZXN0CgpIb2xkIGEg cmVmZXJlbmNlIHRvIHRoZSBpbnRlbF9jb250ZXh0IG92ZXIgbGlmZSBvZiBhbiBpOTE1X3JlcXVl c3QuCldpdGhvdXQgdGhpcyBhbiBpOTE1X3JlcXVlc3QgY2FuIGV4aXN0IGFmdGVyIHRoZSBjb250 ZXh0IGhhcyBiZWVuCmRlc3Ryb3llZCAoZS5nLiByZXF1ZXN0IHJldGlyZWQsIGNvbnRleHQgY2xv c2VkLCBidXQgdXNlciBzcGFjZSBob2xkcyBhCnJlZmVyZW5jZSB0byB0aGUgcmVxdWVzdCBmcm9t IGFuIG91dCBmZW5jZSkuIEluIHRoZSBjYXNlIG9mIEd1QwpzdWJtaXNzaW9uICsgdmlydHVhbCBl bmdpbmUsIHRoZSBlbmdpbmUgdGhhdCB0aGUgcmVxdWVzdCByZWZlcmVuY2VzIGlzCmFsc28gZGVz dHJveWVkIHdoaWNoIGNhbiB0cmlnZ2VyIGJhZCBwb2ludGVyIGRyZWYgaW4gZmVuY2Ugb3BzIChl LmcuCmk5MTVfZmVuY2VfZ2V0X2RyaXZlcl9uYW1lKS4gV2UgY291bGQgbGlrZWx5IGNoYW5nZQpp OTE1X2ZlbmNlX2dldF9kcml2ZXJfbmFtZSB0byBhdm9pZCB0b3VjaGluZyB0aGUgZW5naW5lIGJ1 dCBsZXQncyBqdXN0CmJlIHNhZmUgYW5kIGhvbGQgdGhlIGludGVsX2NvbnRleHQgcmVmZXJlbmNl LgoKdjI6CiAoSm9obiBIYXJyaXNvbikKICAtIFVwZGF0ZSBjb21tZW50IGV4cGxhaW5pbmcgaG93 IEd1QyBtb2RlIGFuZCBleGVjbGlzdHMgbW9kZSBkZWFsIHdpdGgKICAgIHZpcnR1YWwgZW5naW5l cyBkaWZmZXJlbnRseQoKU2lnbmVkLW9mZi1ieTogTWF0dGhldyBCcm9zdCA8bWF0dGhldy5icm9z dEBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25A SW50ZWwuY29tPgoKZHJtL2k5MTUvZ3VjOiBEaXNhYmxlIGJvbmRpbmcgZXh0ZW5zaW9uIHdpdGgg R3VDIHN1Ym1pc3Npb24KClVwZGF0ZSB0aGUgYm9uZGluZyBleHRlbnNpb24gdG8gcmV0dXJuIC1F Tk9ERVYgd2hlbiB1c2luZyBHdUMgc3VibWlzc2lvbgphcyB0aGlzIGV4dGVuc2lvbiBmdW5kYW1l bnRhbGx5IHdpbGwgbm90IHdvcmsgd2l0aCB0aGUgR3VDIHN1Ym1pc3Npb24KaW50ZXJmYWNlLgoK U2lnbmVkLW9mZi1ieTogTWF0dGhldyBCcm9zdCA8bWF0dGhldy5icm9zdEBpbnRlbC5jb20+ClJl dmlld2VkLWJ5OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgoKZHJt L2k5MTUvZ3VjOiBEaXJlY3QgYWxsIGJyZWFkY3J1bWJzIGZvciBhIGNsYXNzIHRvIHNpbmdsZSBi cmVhZGNydW1icwoKV2l0aCBHdUMgdmlydHVhbCBlbmdpbmVzIHRoZSBwaHlzaWNhbCBlbmdpbmUg d2hpY2ggYSByZXF1ZXN0IGV4ZWN1dGVzCmFuZCBjb21wbGV0ZXMgb24gaXNuJ3Qga25vd24gdG8g dGhlIGk5MTUuIFRoZXJlZm9yZSB3ZSBjYW4ndCBhdHRhY2ggYQpyZXF1ZXN0IHRvIGEgcGh5c2lj YWwgZW5naW5lcyBicmVhZGNydW1icy4gVG8gd29yayBhcm91bmQgdGhpcyB3ZSBjcmVhdGUKYSBz aW5nbGUgYnJlYWRjcnVtYnMgcGVyIGVuZ2luZSBjbGFzcyB3aGVuIHVzaW5nIEd1QyBzdWJtaXNz aW9uIGFuZApkaXJlY3QgYWxsIHBoeXNpY2FsIGVuZ2luZSBpbnRlcnJ1cHRzIHRvIHRoaXMgYnJl YWRjcnVtYnMuCgp2MjoKIChKb2huIEgpCiAgLSBSZXdvcmsgaGVhZGVyIGZpbGUgc3RydWN0dXJl IHNvIGludGVsX2VuZ2luZV9tYXNrX3QgY2FuIGJlIGluCiAgICBpbnRlbF9lbmdpbmVfdHlwZXMu aAoKU2lnbmVkLW9mZi1ieTogTWF0dGhldyBCcm9zdCA8bWF0dGhldy5icm9zdEBpbnRlbC5jb20+ CkNDOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgpSZXZpZXdlZC1i eTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KCmRybS9pOTE1OiBB ZGQgaTkxNV9zY2hlZF9lbmdpbmUgZGVzdHJveSB2ZnVuYwoKVGhpcyBpcyByZXF1aXJlZCB0byBh bGxvdyBiYWNrZW5kIHNwZWNpZmljIGNsZWFudXAKCnYyOgogKEpvaG4gSCkKICAtIFJld29yayBj b21taXQgbWVzc2FnZQoKU2lnbmVkLW9mZi1ieTogTWF0dGhldyBCcm9zdCA8bWF0dGhldy5icm9z dEBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25A SW50ZWwuY29tPgoKZHJtL2k5MTU6IE1vdmUgYWN0aXZlIHJlcXVlc3QgdHJhY2tpbmcgdG8gYSB2 ZnVuYwoKTW92ZSBhY3RpdmUgcmVxdWVzdCB0cmFja2luZyB0byBhIGJhY2tlbmQgdmZ1bmMgcmF0 aGVyIHRoYW4gYXNzdW1pbmcgYWxsCmJhY2tlbmRzIHdhbnQgdG8gZG8gdGhpcyBpbiB0aGUgbWFu bmVyLiBJbiB0aGUgb2YgY2FzZSBleGVjbGlzdHMgLwpyaW5nIHN1Ym1pc3Npb24gdGhlIHRyYWNr aW5nIGlzIG9uIHRoZSBwaHlzaWNhbCBlbmdpbmUgd2hpbGUgd2l0aCBHdUMKc3VibWlzc2lvbiBp dCBpcyBvbiB0aGUgY29udGV4dC4KClNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgQnJvc3QgPG1hdHRo ZXcuYnJvc3RAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhh cnJpc29uQEludGVsLmNvbT4KCmRybS9pOTE1L2d1YzogUmVzZXQgaW1wbGVtZW50YXRpb24gZm9y IG5ldyBHdUMgaW50ZXJmYWNlCgpSZXNldCBpbXBsZW1lbnRhdGlvbiBmb3IgbmV3IEd1QyBpbnRl cmZhY2UuIFRoaXMgaXMgdGhlIGxlZ2FjeSByZXNldAppbXBsZW1lbnRhdGlvbiB3aGljaCBpcyBj YWxsZWQgd2hlbiB0aGUgaTkxNSBvd25zIHRoZSBlbmdpbmUgaGFuZyBjaGVjay4KRnV0dXJlIHBh dGNoZXMgd2lsbCBvZmZsb2FkIHRoZSBlbmdpbmUgaGFuZyBjaGVjayB0byBHdUMgYnV0IHdlIHdp bGwKY29udGludWUgdG8gbWFpbnRhaW4gdGhpcyBsZWdhY3kgcGF0aCBhcyBhIGZhbGxiYWNrIGFu ZCB0aGlzIGNvZGUgcGF0aAppcyBhbHNvIHJlcXVpcmVkIGlmIHRoZSBHdUMgZGllcy4KCldpdGgg dGhlIG5ldyBHdUMgaW50ZXJmYWNlIGl0IGlzIG5vdCBwb3NzaWJsZSB0byByZXNldCBpbmRpdmlk dWFsCmVuZ2luZXMgLSBpdCBpcyBvbmx5IHBvc3NpYmxlIHRvIHJlc2V0IHRoZSBHUFUgZW50aXJl bHkuIFRoaXMgcGF0Y2gKZm9yY2VzIGFuIGVudGlyZSBjaGlwIHJlc2V0IGlmIGFueSBlbmdpbmUg aGFuZ3MuCgp2MjoKIChNaWNoYWwpCiAgLSBDaGVjayBmb3IgLUVQSVBFIHJhdGhlciB0aGFuIC1F SU8gKENUIGRlYWRsb2NrL2NvcnJ1cHQgY2hlY2spCnYzOgogKEpvaG4gSCkKICAtIFNwbGl0IGlu dG8gYSBzZXJpZXMgb2Ygc21hbGxlciBwYXRjaGVzCnY0OgogKEpvaG4gSCkKICAtIEZpeCB0eXBv CiAgLSBBZGQgYnJhY2VzIGFyb3VuZCBpZiBzdGF0ZW1lbnRzIGluIHJlc2V0IGNvZGUKdjU6CiAo Q2hlY2twYXRjaCkKICAtIEZpeCB3YXJuaW5ncwoKQ2M6IEpvaG4gSGFycmlzb24gPGpvaG4uYy5o YXJyaXNvbkBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcu YnJvc3RAaW50ZWwuY29tPgoKZHJtL2k5MTU6IFJlc2V0IEdQVSBpbW1lZGlhdGVseSBpZiBzdWJt aXNzaW9uIGlzIGRpc2FibGVkCgpJZiBzdWJtaXNzaW9uIGlzIGRpc2FibGVkIGJ5IHRoZSBiYWNr ZW5kIGZvciBhbnkgcmVhc29uLCByZXNldCB0aGUgR1BVCmltbWVkaWF0ZWx5IGluIHRoZSBoZWFy dGJlYXQgY29kZSBhcyB0aGUgYmFja2VuZCBjYW4ndCBiZSByZWVuYWJsZWQKdW50aWwgdGhlIEdQ VSBpcyByZXNldC4KClNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RA aW50ZWwuY29tPgpSZXZpZXdlZC1ieTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQElu dGVsLmNvbT4KCmRybS9pOTE1L2d1YzogQWRkIGRpc2FibGUgaW50ZXJydXB0cyB0byBndWMgc2Fu aXRpemUKCkFkZCBkaXNhYmxlIEd1QyBpbnRlcnJ1cHRzIHRvIGludGVsX2d1Y19zYW5pdGl6ZSgp LiBQYXJ0IG9mIHRoaXMKcmVxdWlyZXMgbW92aW5nIHRoZSBndWNfKl9pbnRlcnJ1cHQgd3JhcHBl ciBmdW5jdGlvbiBpbnRvIGhlYWRlciBmaWxlCmludGVsX2d1Yy5oLgoKU2lnbmVkLW9mZi1ieTog TWF0dGhldyBCcm9zdCA8bWF0dGhldy5icm9zdEBpbnRlbC5jb20+CkNjOiBEYW5pZWxlIENlcmFv bG8gU3B1cmlvIDxkYW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwuY29tPgpSZXZpZXdlZC1ieTog Sm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KCmRybS9pOTE1L2d1Yzog U3VzcGVuZC9yZXN1bWUgaW1wbGVtZW50YXRpb24gZm9yIG5ldyBpbnRlcmZhY2UKClRoZSBuZXcg R3VDIGludGVyZmFjZSBpbnRyb2R1Y2VzIGFuIE1NSU8gSDJHIGNvbW1hbmQsCklOVEVMX0dVQ19B Q1RJT05fUkVTRVRfQ0xJRU5ULCB3aGljaCBpcyB1c2VkIHRvIGltcGxlbWVudCBzdXNwZW5kLiBU aGlzCk1NSU8gdGVhcnMgZG93biBhbnkgYWN0aXZlIGNvbnRleHRzIGdlbmVyYXRpbmcgYSBjb250 ZXh0IHJlc2V0IEcySCBDVEIKZm9yIGVhY2guIE9uY2UgdGhhdCBzdGVwIGNvbXBsZXRlcyB0aGUg R3VDIHRlYXJzIGRvd24gdGhlIENUQgpjaGFubmVscy4gSXQgaXMgc2FmZSB0byBzdXNwZW5kIG9u Y2UgdGhpcyBNTUlPIEgyRyBjb21tYW5kIGNvbXBsZXRlcwphbmQgYWxsIEcySCBDVEJzIGhhdmUg YmVlbiBwcm9jZXNzZWQuIEluIHByYWN0aWNlIHRoZSBpOTE1IHdpbGwgbGlrZWx5Cm5ldmVyIHJl Y2VpdmUgYSBHMkggYXMgc3VzcGVuZCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgdGhlIEdQ VSBpcwppZGxlLgoKUmVzdW1lIGlzIGltcGxlbWVudGVkIGluIHRoZSBzYW1lIG1hbm5lciBhcyBi ZWZvcmUgLSBzaW1wbHkgcmVsb2FkIHRoZQpHdUMgZmlybXdhcmUgYW5kIHJlaW5pdGlhbGl6ZSBl dmVyeXRoaW5nIChlLmcuIENUQiBjaGFubmVscywgY29udGV4dHMsCmV0Yy4uKS4KCnYyOgogKE1p Y2hlbCAvIEpvaG4gSCkKICAtIElOVEVMX0dVQ19BQ1RJT05fUkVTRVRfQ0xJRU5UIDB4NUIwMSAt PiAweDU1MDcKCkNjOiBKb2huIEhhcnJpc29uIDxqb2huLmMuaGFycmlzb25AaW50ZWwuY29tPgpT aWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0QGludGVsLmNvbT4KU2ln bmVkLW9mZi1ieTogTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndhamRlY3prb0BpbnRlbC5jb20+ ClJldmlld2VkLWJ5OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgoK ZHJtL2k5MTUvZ3VjOiBIYW5kbGUgY29udGV4dCByZXNldCBub3RpZmljYXRpb24KCkd1QyB3aWxs IGlzc3VlIGEgcmVzZXQgb24gZGV0ZWN0aW5nIGFuIGVuZ2luZSBoYW5nIGFuZCB3aWxsIG5vdGlm eQp0aGUgZHJpdmVyIHZpYSBhIEcySCBtZXNzYWdlLiBUaGUgZHJpdmVyIHdpbGwgc2VydmljZSB0 aGUgbm90aWZpY2F0aW9uCmJ5IHJlc2V0dGluZyB0aGUgZ3VpbHR5IGNvbnRleHQgdG8gYSBzaW1w bGUgc3RhdGUgb3IgYmFubmluZyBpdApjb21wbGV0ZWx5LgoKdjI6CiAoSm9obiBIYXJyaXNvbikK ICAtIE1vdmUgbXNnWzBdIGxvb2t1cCBhZnRlciBsZW5ndGggY2hlY2sKdjM6CiAoSm9obiBIYXJy aXNvbikKICAtIHMvZHJtX2RiZy9kcm1fZXJyCgpDYzogTWF0dGhldyBCcm9zdCA8bWF0dGhldy5i cm9zdEBpbnRlbC5jb20+CkNjOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwu Y29tPgpTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0QGludGVsLmNv bT4KUmV2aWV3ZWQtYnk6IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+ Cgpkcm0vaTkxNS9ndWM6IEhhbmRsZSBlbmdpbmUgcmVzZXQgZmFpbHVyZSBub3RpZmljYXRpb24K Ckd1QyB3aWxsIG5vdGlmeSB0aGUgZHJpdmVyLCB2aWEgRzJILCBpZiBpdCBmYWlscyB0bwpyZXNl dCBhbiBlbmdpbmUuIFdlIHJlY292ZXIgYnkgcmVzb3J0aW5nIHRvIGEgZnVsbCBHUFUKcmVzZXQu Cgp2MjoKIChKb2huIEhhcnJpc29uKToKICAtIHMvZHJtX2RiZy9kcm1fZXJyCgpTaWduZWQtb2Zm LWJ5OiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0QGludGVsLmNvbT4KU2lnbmVkLW9mZi1i eTogRmVybmFuZG8gUGFjaGVjbyA8ZmVybmFuZG8ucGFjaGVjb0BpbnRlbC5jb20+ClJldmlld2Vk LWJ5OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgoKZHJtL2k5MTUv Z3VjOiBFbmFibGUgdGhlIHRpbWVyIGV4cGlyZWQgaW50ZXJydXB0IGZvciBHdUMKClRoZSBHdUMg Y2FuIGltcGxlbWVudCBleGVjdXRpb24gcXVuYXR1bXMsIGRldGVjdCBodW5nIGNvbnRleHRzIGFu ZApvdGhlciBzdWNoIHRoaW5ncyBidXQgaXQgcmVxdWlyZXMgdGhlIHRpbWVyIGV4cGlyZWQgaW50 ZXJydXB0IHRvIGRvIHNvLgoKU2lnbmVkLW9mZi1ieTogTWF0dGhldyBCcm9zdCA8bWF0dGhldy5i cm9zdEBpbnRlbC5jb20+CkNDOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwu Y29tPgpSZXZpZXdlZC1ieTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNv bT4KCmRybS9pOTE1L2d1YzogUHJvdmlkZSBtbWlvIGxpc3QgdG8gYmUgc2F2ZWQvcmVzdG9yZWQg b24gZW5naW5lIHJlc2V0CgpUaGUgZHJpdmVyIG11c3QgcHJvdmlkZSBHdUMgd2l0aCBhIGxpc3Qg b2YgbW1pbyByZWdpc3RlcnMKdGhhdCBzaG91bGQgYmUgc2F2ZWQvcmVzdG9yZWQgZHVyaW5nIGEg R3VDLWJhc2VkIGVuZ2luZSByZXNldC4KVW5mb3J0dW5hdGVseSwgdGhlIGxpc3QgbXVzdCBiZSBk eW5hbWljYWxseSBhbGxvY2F0ZWQgYXMgaXRzIHNpemUgaXMKdmFyaWFibGUuIFRoYXQgbWVhbnMg dGhlIGRyaXZlciBtdXN0IGdlbmVyYXRlIHRoZSBsaXN0IHR3aWNlIC0gb25jZSB0bwp3b3JrIG91 dCB0aGUgc2l6ZSBhbmQgYSBzZWNvbmQgdGltZSB0byBhY3R1YWxseSBzYXZlIGl0LgoKdjI6CiAo QWxhbiAvIENJKQogIC0gR0VON19HVF9NT0RFIC0+IEdFTjZfR1RfTU9ERSB0byBmaXggV0Egc2Vs ZnRlc3QgZmFpbHVyZQoKU2lnbmVkLW9mZi1ieTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJp c29uQEludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogRmVybmFuZG8gUGFjaGVjbyA8ZmVybmFuZG8u cGFjaGVjb0BpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcu YnJvc3RAaW50ZWwuY29tPgpDYzogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJh b2xvc3B1cmlvQGludGVsLmNvbT4KQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBp bnRlbC5jb20+ClJldmlld2VkLWJ5OiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0QGludGVs LmNvbT4KCmRybS9pOTE1L2d1YzogRG9uJ3QgY29tcGxhaW4gYWJvdXQgcmVzZXQgcmFjZXMKCkl0 IGlzIGltcG9zc2libGUgdG8gc2VhbCBhbGwgcmFjZSBjb25kaXRpb25zIG9mIHJlc2V0cyBvY2N1 cnJpbmcKY29uY3VycmVudCB0byBvdGhlciBvcGVyYXRpb25zLiBBdCBsZWFzdCwgbm90IHdpdGhv dXQgaW50cm9kdWNpbmcKZXhjZXNpdmUgbXV0ZXggbG9ja2luZy4gSW5zdGVhZCwgZG9uJ3QgY29t cGxhaW4gaWYgaXQgb2NjdXJzLiBJbgpwYXJ0aWN1bGFyLCBkb24ndCBjb21wbGFpbiBpZiB0cnlp bmcgdG8gc2VuZCBhIEgyRyBkdXJpbmcgYSByZXNldC4KV2hhdGV2ZXIgdGhlIEgyRyB3YXMgYWJv dXQgc2hvdWxkIGdldCByZWRvbmUgb25jZSB0aGUgcmVzZXQgaXMgb3Zlci4KClNpZ25lZC1vZmYt Ynk6IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+ClNpZ25lZC1vZmYt Ynk6IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTog TWF0dGhldyBCcm9zdCA8bWF0dGhldy5icm9zdEBpbnRlbC5jb20+Cgpkcm0vaTkxNS9ndWM6IEVu YWJsZSBHdUMgZW5naW5lIHJlc2V0CgpDbGVhciB0aGUgJ2Rpc2FibGUgcmVzZXRzJyBmbGFnIHRv IGFsbG93IEd1QyB0byByZXNldCBodW5nIGNvbnRleHRzCihkZXRlY3RlZCB2aWEgcHJlLWVtcHRp b24gdGltZW91dCkuCgpTaWduZWQtb2ZmLWJ5OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlz b25ASW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0 QGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50 ZWwuY29tPgoKZHJtL2k5MTUvZ3VjOiBDYXB0dXJlIGVycm9yIHN0YXRlIG9uIGNvbnRleHQgcmVz ZXQKCldlIHJlY2VpdmUgbm90aWZpY2F0aW9uIG9mIGFuIGVuZ2luZSByZXNldCBmcm9tIEd1QyBh dCBpdHMKY29tcGxldGlvbi4gTWVhbmluZyBHdUMgaGFzIHBvdGVudGlhbGx5IGNsZWFyZWQgYW55 IEhXIHN0YXRlCndlIG1heSBoYXZlIGJlZW4gaW50ZXJlc3RlZCBpbiBjYXB0dXJpbmcuIEd1QyBy ZXN1bWVzIHNjaGVkdWxpbmcKb24gdGhlIGVuZ2luZSBwb3N0LXJlc2V0LCBhcyB0aGUgcmVzZXRz IGFyZSBtZWFudCB0byBiZSB0cmFuc3BhcmVudCwKZnVydGhlciBtdWRkbGluZyBvdXIgZXJyb3Ig c3RhdGUuCgpUaGVyZSBpcyBvbmdvaW5nIHdvcmsgdG8gZGVmaW5lIGFuIEFQSSBmb3IgYSBHdUMg ZGVidWcgc3RhdGUgZHVtcC4gVGhlCnN1Z2dlc3Rpb24gZm9yIG5vdyBpcyB0byBtYW51YWxseSBk aXNhYmxlIEZXIGluaXRpYXRlZCByZXNldHMgaW4gY2FzZXMKd2hlcmUgZGVidWcgc3RhdGUgaXMg bmVlZGVkLgoKU2lnbmVkLW9mZi1ieTogTWF0dGhldyBCcm9zdCA8bWF0dGhldy5icm9zdEBpbnRl bC5jb20+ClJldmlld2VkLWJ5OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwu Y29tPgoKZHJtL2k5MTUvZ3VjOiBGaXggZm9yIGVycm9yIGNhcHR1cmUgYWZ0ZXIgZnVsbCBHUFUg cmVzZXQgd2l0aCBHdUMKCkluIHRoZSBjYXNlIG9mIGEgZnVsbCBHUFUgcmVzZXQgKGUuZy4gYmVj YXVzZSBHdUMgaGFzIGRpZWQgb3IgYmVjYXVzZQpHdUMncyBoYW5nIGRldGVjdGlvbiBoYXMgYmVl biBkaXNhYmxlZCksIHRoZSBkcml2ZXIgY2FuJ3QgcmVseSBvbiBHdUMKcmVwb3J0aW5nIHRoZSBn dWlsdHkgY29udGV4dC4gSW5zdGVhZCwgdGhlIGRyaXZlciBuZWVkcyB0byBzY2FuIGFsbAphY3Rp dmUgY29udGV4dHMgYW5kIGZpbmQgb25lIHRoYXQgaXMgY3VycmVudGx5IGV4ZWN1dGluZywgYXMg cGVyIHRoZQpleGVjbGlzdCBtb2RlIGJlaGF2aW91ci4gSW4gR3VDIG1vZGUsIHRoaXMgc2NhbiBp cyBkaWZmZXJlbnQgdG8KZXhlY2xpc3QgbW9kZSBhcyB0aGUgYWN0aXZlIHJlcXVlc3QgbGlzdCBp cyBoYW5kbGVkIHZlcnkgZGlmZmVyZW50bHkuCgpTaW1pbGFybHksIHRoZSByZXF1ZXN0IHN0YXRl IGR1bXAgaW4gZGVidWdmcyBuZWVkcyB0byBiZSBoYW5kbGVkCmRpZmZlcmVudGx5IHdoZW4gaW4g R3VDIHN1Ym1pc3Npb24gbW9kZS4KCkFsc28gcmVmYWN0dXJlZCBzb21lIG9mIHRoZSByZXF1ZXN0 IHNjYW5uaW5nIGNvZGUgdG8gYXZvaWQgZHVwbGljYXRpb24KYWNyb3NzIHRoZSBtdWx0aXBsZSBj b2RlIHBhdGhzIHRoYXQgYXJlIG5vdyByZXBsaWNhdGluZyBpdC4KClNpZ25lZC1vZmYtYnk6IEpv aG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IE1h dHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogTWF0dGhl dyBCcm9zdCA8bWF0dGhldy5icm9zdEBpbnRlbC5jb20+Cgpkcm0vaTkxNS9ndWM6IEhvb2sgR3VD IHNjaGVkdWxpbmcgcG9saWNpZXMgdXAKClVzZSB0aGUgb2ZmaWNpYWwgZHJpdmVyIGRlZmF1bHQg c2NoZWR1bGluZyBwb2xpY2llcyBmb3IgY29uZmlndXJpbmcKdGhlIEd1QyBzY2hlZHVsZXIgcmF0 aGVyIHRoYW4gYSBidW5jaCBvZiBoYXJkY29kZWQgdmFsdWVzLgoKdjI6CiAoTWF0dGhldyBCcm9z dCkKICAtIE1vdmUgSTkxNV9FTkdJTkVfV0FOVF9GT1JDRURfUFJFRU1QVElPTiB0byBsYXRlciBw YXRjaAoKU2lnbmVkLW9mZi1ieTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVs LmNvbT4KU2lnbmVkLW9mZi1ieTogTWF0dGhldyBCcm9zdCA8bWF0dGhldy5icm9zdEBpbnRlbC5j b20+ClJldmlld2VkLWJ5OiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0QGludGVsLmNvbT4K Q2M6IEpvc2UgU291emEgPGpvc2Uuc291emFAaW50ZWwuY29tPgoKZHJtL2k5MTUvZ3VjOiBDb25u ZWN0IHJlc2V0IG1vZHBhcmFtIHVwZGF0ZXMgdG8gR3VDIHBvbGljeSBmbGFncwoKQ2hhbmdpbmcg dGhlIHJlc2V0IG1vZHVsZSBwYXJhbWV0ZXIgaGFzIG5vIGVmZmVjdCBvbiBhIHJ1bm5pbmcgR3VD LgpUaGUgY29ycmVzcG9uZGluZyBlbnRyeSBpbiB0aGUgQURTIG11c3QgYmUgdXBkYXRlZCBhbmQg dGhlbiB0aGUgR3VDCmluZm9ybWVkIHZpYSBhIEhvc3QyR3VDIG1lc3NhZ2UuCgpUaGUgbmV3IGRl YnVnZnMgaW50ZXJmYWNlIHRvIG1vZHVsZSBwYXJhbWV0ZXJzIGFsbG93cyB0aGlzIHRvIGhhcHBl bi4KSG93ZXZlciwgY29ubmVjdGluZyB0aGUgcGFyYW1ldGVyIGRhdGEgYWRkcmVzcyBiYWNrIHRv IGFueXRoaW5nIHVzZWZ1bAppcyBtZXNzeS4gT25lIG9wdGlvbiB3b3VsZCBiZSB0byBwYXNzIGEg bmV3IHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUKYWRkcmVzcyB0aHJvdWdoIGluc3RlYWQgb2YganVz dCB0aGUgcGFyYW1ldGVyIHBvaW50ZXIuIEhvd2V2ZXIsIHRoYXQKbWVhbnMgaGF2aW5nIGEgbmV3 IChhbmQgZGlmZmVyZW50KSBkYXRhIHN0cnVjdHVyZSBmb3IgZWFjaCBwYXJhbWV0ZXIKYW5kIGEg bmV3IChhbmQgZGlmZmVyZW50KSB3cml0ZSBmdW5jdGlvbiBmb3IgZWFjaCBwYXJhbWV0ZXIuIFRo aXMKbWV0aG9kIGtlZXBzIGV2ZXJ5dGhpbmcgZ2VuZXJpYyBieSBpbnN0ZWFkIHVzaW5nIGEgc3Ry aW5nIGxvb2t1cCBvbgp0aGUgZGlyZWN0b3J5IGVudHJ5IG5hbWUuCgpTaWduZWQtb2ZmLWJ5OiBK b2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBN YXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0QGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IE1hdHRo ZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPgoKZHJtL2k5MTUvZ3VjOiBJbmNsdWRl IHNjaGVkdWxpbmcgcG9saWNpZXMgaW4gdGhlIGRlYnVnZnMgc3RhdGUgZHVtcAoKQWRkZWQgdGhl IHNjaGVkdWxpbmcgcG9saWN5IHBhcmFtZXRlcnMgdG8gdGhlICdndWNfaW5mbycgZGVidWdmcyBz dGF0ZQpkdW1wLgoKU2lnbmVkLW9mZi1ieTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29u QEludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogTWF0dGhldyBCcm9zdCA8bWF0dGhldy5icm9zdEBp bnRlbC5jb20+ClJldmlld2VkLWJ5OiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0QGludGVs LmNvbT4KCmRybS9pOTE1L2d1YzogQWRkIGdvbGRlbiBjb250ZXh0IHRvIEd1QyBBRFMKClRoZSBt ZWRpYSB3YXRjaGRvZyBtZWNoYW5pc20gaW52b2x2ZXMgR3VDIGRvaW5nIGEgc2lsZW50IHJlc2V0 IGFuZApjb250aW51ZSBvZiB0aGUgaHVuZyBjb250ZXh0LiBUaGlzIHJlcXVpcmVzIHRoZSBpOTE1 IGRyaXZlciBwcm92aWRlIGEKZ29sZGVuIGNvbnRleHQgdG8gR3VDIGluIHRoZSBBRFMuCgp2MjoK IChNYXR0aGV3IEJyb3N0KToKICAtIEZpeCBtZW1vcnkgY29ycnVwdGlvbiBpbiBzaG1lbV9yZWFk CiAoSm9obiBIKQogIC0gVXNlIGxvY2FscyByYXRoZXIgdGhhbiBkZWZpbmVzIGZvciBMUl8qICsg U0tJUF9TSVpFCgpTaWduZWQtb2ZmLWJ5OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25A SW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0QGlu dGVsLmNvbT4KUmV2aWV3ZWQtYnk6IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwu Y29tPgoKZHJtL2k5MTUvZ3VjOiBJbXBsZW1lbnQgYmFubmVkIGNvbnRleHRzIGZvciBHdUMgc3Vi bWlzc2lvbgoKV2hlbiB1c2luZyBHdUMgc3VibWlzc2lvbiwgaWYgYSBjb250ZXh0IGdldHMgYmFu bmVkIGRpc2FibGUgc2NoZWR1bGluZwphbmQgbWFyayBhbGwgaW5mbGlnaHQgcmVxdWVzdHMgYXMg Y29tcGxldGUuCgpDYzogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4K U2lnbmVkLW9mZi1ieTogTWF0dGhldyBCcm9zdCA8bWF0dGhldy5icm9zdEBpbnRlbC5jb20+ClJl dmlld2VkLWJ5OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgoKZHJt L2k5MTUvZ3VjOiBTdXBwb3J0IHJlcXVlc3QgY2FuY2VsbGF0aW9uCgpUaGlzIGFkZHMgR3VDIGJh Y2tlbmQgc3VwcG9ydCBmb3IgaTkxNV9yZXF1ZXN0X2NhbmNlbCgpLCB3aGljaCBpbiB0dXJuCm1h a2VzIENPTkZJR19EUk1fSTkxNV9SRVFVRVNUX1RJTUVPVVQgd29yay4KClRoaXMgaW1wbGVtZW50 YXRpb24gbWFrZXMgdXNlIG9mIGZlbmNlIHdoaWxlIHRoZXJlIGFyZSBsaWtlbHkgc2ltcGxpZXIK b3B0aW9ucy4gQSBmZW5jZSB3YXMgY2hvc2VuIGJlY2F1c2Ugb2YgYW5vdGhlciBmZWF0dXJlIGNv bWluZyBzb29uCndoaWNoIHJlcXVpcmVzIGEgdXNlciB0byBibG9jayBvbiBhIGNvbnRleHQgdW50 aWwgc2NoZWR1bGluZyBpcwpkaXNhYmxlZC4gSW4gdGhhdCBjYXNlIHdlIHJldHVybiB0aGUgZmVu Y2UgdG8gdGhlIHVzZXIgYW5kIHRoZSB1c2VyIGNhbgp3YWl0IG9uIHRoYXQgZmVuY2UuCgp2MjoK IChEYW5pZWxlKQogIC0gQSBjb21tZW50IGFib3V0IGxvY2tpbmcgdGhlIGJsb2NrZWQgaW5jciAv IGRlY3IKICAtIEEgY29tbWVudHMgYWJvdXQgdGhlIHVzZSBvZiB0aGUgZmVuY2UKICAtIFVwZGF0 ZSBjb21taXQgbWVzc2FnZSBleHBsYWluaW5nIHdoeSBmZW5jZQogIC0gRGVsZXRlIHJlZHVuZGFu dCBjaGVjayBibG9ja2VkIGNvdW50IGluIHVuYmxvY2sgZnVuY3Rpb24KICAtIFJpbmcgYnVmZmVy IGltcGxlbWVudGF0aW9uCiAgLSBDb21tZW50IGFib3V0IGJsb2NrZWQgaW4gc3VibWlzc2lvbiBw YXRoCiAgLSBTaG9ydGVyIHJwbSBwYXRoCgpTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEJyb3N0IDxt YXR0aGV3LmJyb3N0QGludGVsLmNvbT4KQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxp bkBpbnRlbC5jb20+Cgpkcm0vaTkxNS9zZWxmdGVzdDogQmV0dGVyIGVycm9yIHJlcG9ydGluZyBm cm9tIGhhbmdjaGVjayBzZWxmdGVzdAoKVGhlcmUgYXJlIG1hbnkgd2F5cyBpbiB3aGljaCB0aGUg aGFuZ2NoZWNrIHNlbGZ0ZXN0IGNhbiBmYWlsLiBWZXJ5IGZldwpvZiB0aGVtIGFjdHVhbGx5IHBy aW50ZWQgYW4gZXJyb3IgbWVzc2FnZSB0byBzYXkgd2hhdCBoYXBwZW5lZC4gU28sCmZpbGwgaW4g dGhlIG1pc3NpbmcgbWVzc2FnZXMuCgpTaWduZWQtb2ZmLWJ5OiBKb2huIEhhcnJpc29uIDxKb2hu LkMuSGFycmlzb25ASW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEJyb3N0IDxtYXR0 aGV3LmJyb3N0QGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcu YnJvc3RAaW50ZWwuY29tPgpDYzogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJh b2xvc3B1cmlvQGludGVsLmNvbT4KCmRybS9pOTE1L3NlbGZ0ZXN0OiBGaXggd29ya2Fyb3VuZHMg c2VsZnRlc3QgZm9yIEd1QyBzdWJtaXNzaW9uCgpXaGVuIEd1QyBzdWJtaXNzaW9uIGlzIGVuYWJs ZWQsIHRoZSBHdUMgY29udHJvbHMgZW5naW5lIHJlc2V0cy4gUmF0aGVyCnRoYW4gZXhwbGljaXRs eSB0cmlnZ2VyaW5nIGEgcmVzZXQsIHRoZSBkcml2ZXIgbXVzdCBzdWJtaXQgYSBoYW5naW5nCmNv bnRleHQgdG8gR3VDIGFuZCB3YWl0IGZvciB0aGUgcmVzZXQgdG8gb2NjdXIuCgpTaWduZWQtb2Zm LWJ5OiBSYWh1bCBLdW1hciBTaW5naCA8cmFodWwua3VtYXIuc2luZ2hAaW50ZWwuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0QGludGVsLmNvbT4KQ2M6IERh bmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+CkNj OiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0QGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IE1h dHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPgoKZHJtL2k5MTUvc2VsZnRlc3Q6 IEZpeCBNT0NTIHNlbGZ0ZXN0IGZvciBHdUMgc3VibWlzc2lvbgoKV2hlbiBHdUMgc3VibWlzc2lv biBpcyBlbmFibGVkLCB0aGUgR3VDIGNvbnRyb2xzIGVuZ2luZSByZXNldHMuIFJhdGhlcgp0aGFu IGV4cGxpY2l0bHkgdHJpZ2dlcmluZyBhIHJlc2V0LCB0aGUgZHJpdmVyIG11c3Qgc3VibWl0IGEg aGFuZ2luZwpjb250ZXh0IHRvIEd1QyBhbmQgd2FpdCBmb3IgdGhlIHJlc2V0IHRvIG9jY3VyLgoK U2lnbmVkLW9mZi1ieTogUmFodWwgS3VtYXIgU2luZ2ggPHJhaHVsLmt1bWFyLnNpbmdoQGludGVs LmNvbT4KU2lnbmVkLW9mZi1ieTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVs LmNvbT4KU2lnbmVkLW9mZi1ieTogTWF0dGhldyBCcm9zdCA8bWF0dGhldy5icm9zdEBpbnRlbC5j b20+CkNjOiBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50 ZWwuY29tPgpDYzogTWF0dGhldyBCcm9zdCA8bWF0dGhldy5icm9zdEBpbnRlbC5jb20+ClJldmll d2VkLWJ5OiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0QGludGVsLmNvbT4KCmRybS9pOTE1 L3NlbGZ0ZXN0OiBJbmNyZWFzZSBzb21lIHRpbWVvdXRzIGluIGxpdmVfcmVxdWVzdHMKClJlcXVl c3RzIG1heSB0YWtlIHNsaWdodGx5IGxvbmdlciB3aXRoIEd1QyBzdWJtaXNzaW9uLCBsZXQncyBp bmNyZWFzZQp0aGUgdGltZW91dHMgaW4gbGl2ZV9yZXF1ZXN0cy4KClNpZ25lZC1vZmYtYnk6IE1h dHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPgoKZHJtL2k5MTUvc2VsZnRlc3Q6 IEZpeCBoYW5nY2hlY2sgc2VsZiB0ZXN0IGZvciBHdUMgc3VibWlzc2lvbgoKV2hlbiBHdUMgc3Vi bWlzc2lvbiBpcyBlbmFibGVkLCB0aGUgR3VDIGNvbnRyb2xzIGVuZ2luZSByZXNldHMuIFJhdGhl cgp0aGFuIGV4cGxpY2l0bHkgdHJpZ2dlcmluZyBhIHJlc2V0LCB0aGUgZHJpdmVyIG11c3Qgc3Vi bWl0IGEgaGFuZ2luZwpjb250ZXh0IHRvIEd1QyBhbmQgd2FpdCBmb3IgdGhlIHJlc2V0IHRvIG9j Y3VyLgoKQ29udmVyc2VseSwgb25lIG9mIHRoZSB0ZXN0cyBzcGVjaWZpY2FsbHkgc2VuZHMgaGFu Z2luZyBiYXRjaGVzIHRvIHRoZQplbmdpbmVzIGJ1dCB3YW50cyB0aGVtIHRvIHNpdCBhcm91bmQg dW50aWwgYSBtYW51YWwgcmVzZXQgb2YgdGhlIGZ1bGwKR1QgKGluY2x1ZGluZyBHdUMgaXRzZWxm KS4gVGhhdCBtZWFucyBkaXNhYmxpbmcgR3VDIGJhc2VkIGVuZ2luZQpyZXNldHMgdG8gcHJldmVu dCB0aG9zZSBmcm9tIGtpbGxpbmcgdGhlIGhhbmdpbmcgYmF0Y2ggdG9vIHNvb24uIFNvLAphZGQg c3VwcG9ydCB0byB0aGUgc2NoZWR1bGluZyBwb2xpY3kgaGVscGVyIGZvciBkaXNhYmxpbmcgcmVz ZXRzIGFzCndlbGwgYXMgbWFraW5nIHRoZW0gcXVpY2tlciEKCkluIEd1QyBzdWJtaXNzaW9uIG1v ZGUsIHRoZSAnaXMgZW5naW5lIGlkbGUnIHRlc3QgYmFzaWNhbGx5IHR1cm5zIGludG8KJ2lzIGVu Z2luZSBQTSB3YWtlbG9jayBoZWxkJy4gSW5kZXBlbmRlbnRseSwgdGhlcmUgaXMgYSBoZWFydGJl YXQKZGlzYWJsZSBoZWxwZXIgZnVuY3Rpb24gdGhhdCB0aGUgdGVzdHMgdXNlLiBGb3IgdW5leHBs YWluZWQgcmVhc29ucywKdGhpcyBhY3F1aXJlcyB0aGUgZW5naW5lIHdha2Vsb2NrIGJlZm9yZSBk aXNhYmxpbmcgdGhlIGhlYXJ0YmVhdCBhbmQKb25seSByZWxlYXNlcyBpdCB3aGVuIHJlLWVuYWJs aW5nIHRoZSBoZWFydGJlYXQuIEFzIG9uZSBvZiB0aGUgdGVzdHMKdHJpZXMgdG8gZG8gYSB3YWl0 IGZvciBpZGxlIGluIHRoZSBtaWRkbGUgb2YgYSBoZWFydGJlYXQgZGlzYWJsZWQKc2VjdGlvbiwg aXQgaXMgdGhlcmVmb3JlIGd1YXJhbnRlZWQgdG8gYWx3YXlzIGZhaWwuIEFkZGVkIGEgJ25vX3Bt Jwp2YXJpYW50IG9mIHRoZSBoZWFydGJlYXQgaGVscGVyIHRoYXQgYWxsb3dzIHRoZSBlbmdpbmUg dG8gYmUgYXNsZWVwCndoaWxlIGFsc28gaGF2aW5nIGhlYXJ0YmVhdHMgZGlzYWJsZWQuCgpTaWdu ZWQtb2ZmLWJ5OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0QGludGVsLmNvbT4KUmV2aWV3 ZWQtYnk6IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPgpDYzogRGFuaWVs ZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGludGVsLmNvbT4KQ2M6IE1h dHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPgoKZHJtL2k5MTUvc2VsZnRlc3Q6 IEJ1bXAgc2VsZnRlc3QgdGltZW91dHMgZm9yIGhhbmdjaGVjawoKU29tZSB0ZXN0aW5nIGVudmly b25tZW50cyBhbmQgc29tZSBoZWF2aWVyIHRlc3RzIGFyZSBzbG93ZXIgdGhhbgpwcmV2aW91cyBs aW1pdHMgYWxsb3dlZCBmb3IuIEZvciBleGFtcGxlLCBpdCBjYW4gdGFrZSBtdWx0aXBsZSBzZWNv bmRzCmZvciB0aGUgJ2NvbnRleHQgaGFzIGJlZW4gcmVzZXQnIG5vdGlmaWNhdGlvbiBoYW5kbGVy IHRvIHJlYWNoIHRoZQona2lsbCB0aGUgcmVxdWVzdHMnIGNvZGUgaW4gdGhlICdhY3RpdmUnIHZl cnNpb24gb2YgdGhlICdyZXNldAplbmdpbmVzJyB0ZXN0LiBEdXJpbmcgd2hpY2ggdGltZSB0aGUg c2VsZnRlc3QgZ2V0cyBib3JlZCwgZ2l2ZXMgdXAKd2FpdGluZyBhbmQgZmFpbHMgdGhlIHRlc3Qu CgpUaGVyZSBpcyBhbHNvIGFuIGFzeW5jIHRocmVhZCB0aGF0IHRoZSBzZWxmdGVzdCB1c2VzIHRv IHB1bXAgd29yawp0aHJvdWdoIHRoZSBoYXJkd2FyZSBpbiBwYXJhbGxlbCB0byB0aGUgY29udGV4 dCB0aGF0IGlzIG1hcmtlZCBmb3IKcmVzZXQuIFRoYXQgYWxzbyBjb3VsZCBnZXQgYm9yZWQgd2Fp dGluZyBmb3IgY29tcGxldGlvbnMgYW5kIGtpbGwgdGhlCnRlc3Qgb2ZmLgoKTGFzdGx5LCB0aGUg Zmx1c2ggYXQgdGhlIG9mIHZhcmlvdXMgdGVzdCBzZWN0aW9ucyBjYW4gYWxzbyBzZWUKdGltZW91 dHMgZHVlIHRvIHRoZSBsYXJnZSBhbW91bnQgb2Ygd29yayBiYWNrZWQgdXAuIFRoaXMgaXMgYWxz byB0cnVlCm9mIHRoZSBsaXZlX2h3c3BfcmVhZCB0ZXN0LgoKU2lnbmVkLW9mZi1ieTogSm9obiBI YXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogTWF0dGhl dyBCcm9zdCA8bWF0dGhldy5icm9zdEBpbnRlbC5jb20+CkNjOiBEYW5pZWxlIENlcmFvbG8gU3B1 cmlvIDxkYW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogTWF0dGhl dyBCcm9zdCA8bWF0dGhldy5icm9zdEBpbnRlbC5jb20+Cgpkcm0vaTkxNS9ndWM6IEltcGxlbWVu dCBHdUMgcHJpb3JpdHkgbWFuYWdlbWVudAoKSW1wbGVtZW50IGEgc2ltcGxlIHN0YXRpYyBtYXBw aW5nIGFsZ29yaXRobSBvZiB0aGUgaTkxNSBwcmlvcml0eSBsZXZlbHMKKGludCwgLTFrIHRvIDFr IGV4cG9zZWQgdG8gdXNlcikgdG8gdGhlIDQgR3VDIGxldmVscy4gTWFwcGluZyBpcyBhcwpmb2xs b3dzOgoKaTkxNSBsZXZlbCA8IDAgICAgICAgICAgLT4gR3VDIGxvdyBsZXZlbCAgICAgKDMpCmk5 MTUgbGV2ZWwgPT0gMCAgICAgICAgIC0+IEd1QyBub3JtYWwgbGV2ZWwgICgyKQppOTE1IGxldmVs IDwgSU5UX01BWCAgICAtPiBHdUMgaGlnaCBsZXZlbCAgICAoMSkKaTkxNSBsZXZlbCA9PSBJTlRf TUFYICAgLT4gR3VDIGhpZ2hlc3QgbGV2ZWwgKDApCgpXZSBiZWxpZXZlIHRoaXMgbWFwcGluZyBz aG91bGQgY292ZXIgdGhlIFVNRCB1c2UgY2FzZXMgKDMgZGlzdGluY3QgdXNlcgpsZXZlbHMgKyAx IGtlcm5lbCBsZXZlbCkuCgpJbiBhZGRpdGlvbiB0byBzdGF0aWMgbWFwcGluZywgYSBzaW1wbGUg Y291bnRlciBzeXN0ZW0gaXMgYXR0YWNoZWQgdG8KZWFjaCBjb250ZXh0IHRyYWNraW5nIHRoZSBu dW1iZXIgb2YgcmVxdWVzdHMgaW5mbGlnaHQgb24gdGhlIGNvbnRleHQgYXQKZWFjaCBsZXZlbC4g VGhpcyBpcyBuZWVkZWQgYXMgdGhlIEd1QyBsZXZlbHMgYXJlIHBlciBjb250ZXh0IHdoaWxlIGlu CnRoZSBpOTE1IGxldmVscyBhcmUgcGVyIHJlcXVlc3QuCgp2MjoKIChEYW5pZWxlKQogIC0gQWRk IEJVSUxEX0JVR19PTiB0byBlbmZvcmNlIG9yZGVyaW5nIG9mIHByaW9yaXR5IGxldmVscwogIC0g QWRkIG1pc3NpbmcgbG9ja2RlcCB0byBndWNfcHJpb19maW5pCiAgLSBDaGVjayBmb3IgcmV0dXJu IGJlZm9yZSBzZXR0aW5nIGNvbnRleHQgcmVnaXN0ZXJlZCBmbGFnCiAgLSBNYXAgRElTUExBWSBw cmlvcml0eSBvciBoaWdoZXIgdG8gaGlnaGVzdCBndWMgcHJpbwogIC0gVXBkYXRlIGNvbW1lbnQg Zm9yIGd1Y19wcmlvCgpTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0 QGludGVsLmNvbT4KQ2M6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3Nw dXJpb0BpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5p ZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwuY29tPgoKZHJtL2k5MTUvZ3VjOiBVbmJsb2NrIEd1QyBz dWJtaXNzaW9uIG9uIEdlbjExKwoKVW5ibG9jayBHdUMgc3VibWlzc2lvbiBvbiBHZW4xMSsgcGxh dGZvcm1zLgoKdjI6CiAoTWFydGluIFBlcmVzIC8gSm9obiBIKQogIC0gRGVsZXRlIGRlYnVnIG1l c3NhZ2Ugd2hlbiBHdUMgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCBvbiBjZXJ0YWluCiAgICBwbGF0 Zm9ybXMKClNpZ25lZC1vZmYtYnk6IE1pY2hhbCBXYWpkZWN6a28gPG1pY2hhbC53YWpkZWN6a29A aW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5pZWxl LmNlcmFvbG9zcHVyaW9AaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEJyb3N0IDxt YXR0aGV3LmJyb3N0QGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IE1hdHRoZXcgQnJvc3QgPG1hdHRo ZXcuYnJvc3RAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAg ICAgICAgICAgICAgICB8ICAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2Vt X2NvbnRleHQuYyAgIHwgICAxNSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfYnJl YWRjcnVtYnMuYyAgIHwgICA0NCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfYnJl YWRjcnVtYnMuaCAgIHwgICAxNiArLQogLi4uL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9icmVhZGNy dW1ic190eXBlcy5oIHwgICAgNyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250 ZXh0LmMgICAgICAgfCAgIDM2ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRl eHQuaCAgICAgICB8ICAgMjMgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4 dF90eXBlcy5oIHwgICAzMSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5l LmggICAgICAgIHwgICA1NyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5l X2NzLmMgICAgIHwgIDE4MyArLQogLi4uL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVh cnRiZWF0LmMgIHwgICA3MCArLQogLi4uL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVh cnRiZWF0LmggIHwgICAgNCArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVf dHlwZXMuaCAgfCAgIDEzICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVf dXNlci5jICAgfCAgICA0ICsKIC4uLi9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlz c2lvbi5jICB8ICAgODkgKy0KIC4uLi9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlz c2lvbi5oICB8ICAgIDQgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYyAgICAg ICAgICAgIHwgICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbS5jICAg ICAgICAgfCAgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jICAg ICAgICAgfCAgIDUwICstCiAuLi4vZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jpbmdfc3VibWlzc2lv bi5jICAgfCAgIDU4ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jwcy5jICAgICAg ICAgICB8ICAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMu YyAgIHwgICA0NiArLQogLi4uL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kc190eXBl cy5oIHwgICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jICAgICAg ICAgfCAgIDM0ICstCiAuLi4vZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2hlYXJ0YmVhdC5j ICAgfCAgIDIyICsKIC4uLi9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVfaGVhcnRiZWF0Lmgg ICB8ICAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZXhlY2xpc3RzLmMg IHwgICAxMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2NoZWNrLmMg IHwgIDMyMiArKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9tb2NzLmMgICAg ICAgfCAgIDUwICstCiAuLi4vZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMg ICAgfCAgMTMyICstCiAuLi4vZ3B1L2RybS9pOTE1L2d0L3VjL2FiaS9ndWNfYWN0aW9uc19hYmku aCAgfCAgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5jICAgICAg ICB8ICAgODIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5oICAgICAg ICB8ICAgMzggKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19hZHMuYyAg ICB8ICA0NjQgKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19hZHMu aCAgICB8ICAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMg ICAgIHwgICAxMSArLQogLi4uL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZGVidWdmcy5j ICAgIHwgICAgMiArCiAuLi4vZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9u LmMgfCAxNjAwICsrKysrKysrKysrKysrKy0tCiAuLi4vZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVs X2d1Y19zdWJtaXNzaW9uLmggfCAgIDEzICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF91Yy5jICAgICAgICAgfCAgMTAxICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF91Yy5oICAgICAgICAgfCAgICA2ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmc19wYXJhbXMuYyAgICB8ICAgMzIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVf ZXJyb3IuYyAgICAgICAgIHwgICAyNSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aCAgICAgICAgICAgICAgIHwgICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVl c3QuYyAgICAgICAgICAgfCAgMTYyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVl c3QuaCAgICAgICAgICAgfCAgIDIxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1 bGVyLmMgICAgICAgICB8ICAgMTYgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1 bGVyLmggICAgICAgICB8ICAgMTAgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1 bGVyX3R5cGVzLmggICB8ICAgMjIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5o ICAgICAgICAgICAgIHwgICAzNyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5 MTVfcmVxdWVzdC5jIHwgICAgNCArLQogLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X2Zs dXNoX3Rlc3QuYyAgIHwgICAgMiArLQogLi4uL2k5MTUvc2VsZnRlc3RzL2ludGVsX3NjaGVkdWxl cl9oZWxwZXJzLmMgIHwgICA4OCArCiAuLi4vaTkxNS9zZWxmdGVzdHMvaW50ZWxfc2NoZWR1bGVy X2hlbHBlcnMuaCAgfCAgIDMzICsKIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAgICAgICAg ICAgICAgICAgICB8ICAgIDkgKwogNTUgZmlsZXMgY2hhbmdlZCwgMzQ4OCBpbnNlcnRpb25zKCsp LCA2MzQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2ludGVsX3NjaGVkdWxlcl9oZWxwZXJzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfc2NoZWR1bGVyX2hlbHBlcnMu aAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggMTBiM2JiNjIwN2JhLi5hYjc2Nzk5NTc2MjMgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlCkBAIC0yODAsNiArMjgwLDcgQEAgaTkxNS0kKENPTkZJR19EUk1f STkxNV9DQVBUVVJFX0VSUk9SKSArPSBpOTE1X2dwdV9lcnJvci5vCiBpOTE1LSQoQ09ORklHX0RS TV9JOTE1X1NFTEZURVNUKSArPSBcCiAJZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jbGllbnRfYmx0 Lm8gXAogCWdlbS9zZWxmdGVzdHMvaWd0X2dlbV91dGlscy5vIFwKKwlzZWxmdGVzdHMvaW50ZWxf c2NoZWR1bGVyX2hlbHBlcnMubyBcCiAJc2VsZnRlc3RzL2k5MTVfcmFuZG9tLm8gXAogCXNlbGZ0 ZXN0cy9pOTE1X3NlbGZ0ZXN0Lm8gXAogCXNlbGZ0ZXN0cy9pZ3RfYXRvbWljLm8gXApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggODljYTQwMWJmOWFl Li4wNWMzZWUxOTE3MTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2Nv bnRleHQuYwpAQCAtNzQsNyArNzQsNiBAQAogI2luY2x1ZGUgImd0L2ludGVsX2NvbnRleHRfcGFy YW0uaCIKICNpbmNsdWRlICJndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmgiCiAjaW5jbHVkZSAi Z3QvaW50ZWxfZW5naW5lX3VzZXIuaCIKLSNpbmNsdWRlICJndC9pbnRlbF9leGVjbGlzdHNfc3Vi bWlzc2lvbi5oIiAvKiB2aXJ0dWFsX2VuZ2luZSAqLwogI2luY2x1ZGUgImd0L2ludGVsX2dwdV9j b21tYW5kcy5oIgogI2luY2x1ZGUgImd0L2ludGVsX3JpbmcuaCIKIApAQCAtMzYzLDkgKzM2Miw2 IEBAIHNldF9wcm90b19jdHhfZW5naW5lc19iYWxhbmNlKHN0cnVjdCBpOTE1X3VzZXJfZXh0ZW5z aW9uIF9fdXNlciAqYmFzZSwKIAlpZiAoIUhBU19FWEVDTElTVFMoaTkxNSkpCiAJCXJldHVybiAt RU5PREVWOwogCi0JaWYgKGludGVsX3VjX3VzZXNfZ3VjX3N1Ym1pc3Npb24oJmk5MTUtPmd0LnVj KSkKLQkJcmV0dXJuIC1FTk9ERVY7IC8qIG5vdCBpbXBsZW1lbnQgeWV0ICovCi0KIAlpZiAoZ2V0 X3VzZXIoaWR4LCAmZXh0LT5lbmdpbmVfaW5kZXgpKQogCQlyZXR1cm4gLUVGQVVMVDsKIApAQCAt NDk1LDYgKzQ5MSwxMSBAQCBzZXRfcHJvdG9fY3R4X2VuZ2luZXNfYm9uZChzdHJ1Y3QgaTkxNV91 c2VyX2V4dGVuc2lvbiBfX3VzZXIgKmJhc2UsIHZvaWQgKmRhdGEpCiAJCXJldHVybiAtRUlOVkFM OwogCX0KIAorCWlmIChpbnRlbF9lbmdpbmVfdXNlc19ndWMobWFzdGVyKSkgeworCQlEUk1fREVC VUcoImJvbmRpbmcgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQgd2l0aCBHdUMgc3VibWlzc2lvbiIp OworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKIAlpZiAoZ2V0X3VzZXIobnVtX2JvbmRzLCAmZXh0 LT5udW1fYm9uZHMpKQogCQlyZXR1cm4gLUVGQVVMVDsKIApAQCAtOTUwLDggKzk1MSw4IEBAIHN0 YXRpYyBzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lcyAqdXNlcl9lbmdpbmVzKHN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICpjdHgsCiAJCQlicmVhazsKIAogCQljYXNlIEk5MTVfR0VNX0VOR0lORV9UWVBF X0JBTEFOQ0VEOgotCQkJY2UgPSBpbnRlbF9leGVjbGlzdHNfY3JlYXRlX3ZpcnR1YWwocGVbbl0u c2libGluZ3MsCi0JCQkJCQkJICAgIHBlW25dLm51bV9zaWJsaW5ncyk7CisJCQljZSA9IGludGVs X2VuZ2luZV9jcmVhdGVfdmlydHVhbChwZVtuXS5zaWJsaW5ncywKKwkJCQkJCQkgcGVbbl0ubnVt X3NpYmxpbmdzKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgSTkxNV9HRU1fRU5HSU5FX1RZUEVfSU5W QUxJRDoKQEAgLTEwODMsNyArMTA4NCw3IEBAIHN0YXRpYyB2b2lkIGtpbGxfZW5naW5lcyhzdHJ1 Y3QgaTkxNV9nZW1fZW5naW5lcyAqZW5naW5lcywgYm9vbCBiYW4pCiAJZm9yX2VhY2hfZ2VtX2Vu Z2luZShjZSwgZW5naW5lcywgaXQpIHsKIAkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l OwogCi0JCWlmIChiYW4gJiYgaW50ZWxfY29udGV4dF9zZXRfYmFubmVkKGNlKSkKKwkJaWYgKGJh biAmJiBpbnRlbF9jb250ZXh0X2JhbihjZSwgTlVMTCkpCiAJCQljb250aW51ZTsKIAogCQkvKgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfYnJlYWRjcnVtYnMuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2JyZWFkY3J1bWJzLmMKaW5kZXggMzhjYzQy NzgzZGZiLi4yMDljZjI2NWJmNzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2JyZWFkY3J1bWJzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf YnJlYWRjcnVtYnMuYwpAQCAtMTUsMjggKzE1LDE0IEBACiAjaW5jbHVkZSAiaW50ZWxfZ3RfcG0u aCIKICNpbmNsdWRlICJpbnRlbF9ndF9yZXF1ZXN0cy5oIgogCi1zdGF0aWMgYm9vbCBpcnFfZW5h YmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3N0YXRpYyBib29sIGlycV9lbmFi bGUoc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiKQogewotCWlmICghZW5naW5lLT5pcnFfZW5h YmxlKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQkvKiBDYWxsZXIgZGlzYWJsZXMgaW50ZXJydXB0cyAq LwotCXNwaW5fbG9jaygmZW5naW5lLT5ndC0+aXJxX2xvY2spOwotCWVuZ2luZS0+aXJxX2VuYWJs ZShlbmdpbmUpOwotCXNwaW5fdW5sb2NrKCZlbmdpbmUtPmd0LT5pcnFfbG9jayk7Ci0KLQlyZXR1 cm4gdHJ1ZTsKKwlyZXR1cm4gaW50ZWxfZW5naW5lX2lycV9lbmFibGUoYi0+aXJxX2VuZ2luZSk7 CiB9CiAKLXN0YXRpYyB2b2lkIGlycV9kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKK3N0YXRpYyB2b2lkIGlycV9kaXNhYmxlKHN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAq YikKIHsKLQlpZiAoIWVuZ2luZS0+aXJxX2Rpc2FibGUpCi0JCXJldHVybjsKLQotCS8qIENhbGxl ciBkaXNhYmxlcyBpbnRlcnJ1cHRzICovCi0Jc3Bpbl9sb2NrKCZlbmdpbmUtPmd0LT5pcnFfbG9j ayk7Ci0JZW5naW5lLT5pcnFfZGlzYWJsZShlbmdpbmUpOwotCXNwaW5fdW5sb2NrKCZlbmdpbmUt Pmd0LT5pcnFfbG9jayk7CisJaW50ZWxfZW5naW5lX2lycV9kaXNhYmxlKGItPmlycV9lbmdpbmUp OwogfQogCiBzdGF0aWMgdm9pZCBfX2ludGVsX2JyZWFkY3J1bWJzX2FybV9pcnEoc3RydWN0IGlu dGVsX2JyZWFkY3J1bWJzICpiKQpAQCAtNTcsNyArNDMsNyBAQCBzdGF0aWMgdm9pZCBfX2ludGVs X2JyZWFkY3J1bWJzX2FybV9pcnEoc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiKQogCVdSSVRF X09OQ0UoYi0+aXJxX2FybWVkLCB0cnVlKTsKIAogCS8qIFJlcXVlc3RzIG1heSBoYXZlIGNvbXBs ZXRlZCBiZWZvcmUgd2UgY291bGQgZW5hYmxlIHRoZSBpbnRlcnJ1cHQuICovCi0JaWYgKCFiLT5p cnFfZW5hYmxlZCsrICYmIGlycV9lbmFibGUoYi0+aXJxX2VuZ2luZSkpCisJaWYgKCFiLT5pcnFf ZW5hYmxlZCsrICYmIGItPmlycV9lbmFibGUoYikpCiAJCWlycV93b3JrX3F1ZXVlKCZiLT5pcnFf d29yayk7CiB9CiAKQEAgLTc2LDcgKzYyLDcgQEAgc3RhdGljIHZvaWQgX19pbnRlbF9icmVhZGNy dW1ic19kaXNhcm1faXJxKHN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAqYikKIHsKIAlHRU1fQlVH X09OKCFiLT5pcnFfZW5hYmxlZCk7CiAJaWYgKCEtLWItPmlycV9lbmFibGVkKQotCQlpcnFfZGlz YWJsZShiLT5pcnFfZW5naW5lKTsKKwkJYi0+aXJxX2Rpc2FibGUoYik7CiAKIAlXUklURV9PTkNF KGItPmlycV9hcm1lZCwgZmFsc2UpOwogCWludGVsX2d0X3BtX3B1dF9hc3luYyhiLT5pcnFfZW5n aW5lLT5ndCk7CkBAIC0yNTksNiArMjQ1LDkgQEAgc3RhdGljIHZvaWQgc2lnbmFsX2lycV93b3Jr KHN0cnVjdCBpcnFfd29yayAqd29yaykKIAkJCWxsaXN0X2VudHJ5KHNpZ25hbCwgdHlwZW9mKCpy cSksIHNpZ25hbF9ub2RlKTsKIAkJc3RydWN0IGxpc3RfaGVhZCBjYl9saXN0OwogCisJCWlmIChy cS0+ZW5naW5lLT5zY2hlZF9lbmdpbmUtPnJldGlyZV9pbmZsaWdodF9yZXF1ZXN0X3ByaW8pCisJ CQlycS0+ZW5naW5lLT5zY2hlZF9lbmdpbmUtPnJldGlyZV9pbmZsaWdodF9yZXF1ZXN0X3ByaW8o cnEpOworCiAJCXNwaW5fbG9jaygmcnEtPmxvY2spOwogCQlsaXN0X3JlcGxhY2UoJnJxLT5mZW5j ZS5jYl9saXN0LCAmY2JfbGlzdCk7CiAJCV9fZG1hX2ZlbmNlX3NpZ25hbF9fdGltZXN0YW1wKCZy cS0+ZmVuY2UsIHRpbWVzdGFtcCk7CkBAIC0yODEsNyArMjcwLDcgQEAgaW50ZWxfYnJlYWRjcnVt YnNfY3JlYXRlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmlycV9lbmdpbmUpCiAJaWYgKCFiKQog CQlyZXR1cm4gTlVMTDsKIAotCWItPmlycV9lbmdpbmUgPSBpcnFfZW5naW5lOworCWtyZWZfaW5p dCgmYi0+cmVmKTsKIAogCXNwaW5fbG9ja19pbml0KCZiLT5zaWduYWxlcnNfbG9jayk7CiAJSU5J VF9MSVNUX0hFQUQoJmItPnNpZ25hbGVycyk7CkBAIC0yOTAsNiArMjc5LDEwIEBAIGludGVsX2Jy ZWFkY3J1bWJzX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICppcnFfZW5naW5lKQogCXNw aW5fbG9ja19pbml0KCZiLT5pcnFfbG9jayk7CiAJaW5pdF9pcnFfd29yaygmYi0+aXJxX3dvcmss IHNpZ25hbF9pcnFfd29yayk7CiAKKwliLT5pcnFfZW5naW5lID0gaXJxX2VuZ2luZTsKKwliLT5p cnFfZW5hYmxlID0gaXJxX2VuYWJsZTsKKwliLT5pcnFfZGlzYWJsZSA9IGlycV9kaXNhYmxlOwor CiAJcmV0dXJuIGI7CiB9CiAKQEAgLTMwMyw5ICsyOTYsOSBAQCB2b2lkIGludGVsX2JyZWFkY3J1 bWJzX3Jlc2V0KHN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAqYikKIAlzcGluX2xvY2tfaXJxc2F2 ZSgmYi0+aXJxX2xvY2ssIGZsYWdzKTsKIAogCWlmIChiLT5pcnFfZW5hYmxlZCkKLQkJaXJxX2Vu YWJsZShiLT5pcnFfZW5naW5lKTsKKwkJYi0+aXJxX2VuYWJsZShiKTsKIAllbHNlCi0JCWlycV9k aXNhYmxlKGItPmlycV9lbmdpbmUpOworCQliLT5pcnFfZGlzYWJsZShiKTsKIAogCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmItPmlycV9sb2NrLCBmbGFncyk7CiB9CkBAIC0zMjUsMTEgKzMxOCwx NCBAQCB2b2lkIF9faW50ZWxfYnJlYWRjcnVtYnNfcGFyayhzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVt YnMgKmIpCiAJfQogfQogCi12b2lkIGludGVsX2JyZWFkY3J1bWJzX2ZyZWUoc3RydWN0IGludGVs X2JyZWFkY3J1bWJzICpiKQordm9pZCBpbnRlbF9icmVhZGNydW1ic19mcmVlKHN0cnVjdCBrcmVm ICprcmVmKQogeworCXN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAqYiA9IGNvbnRhaW5lcl9vZihr cmVmLCB0eXBlb2YoKmIpLCByZWYpOworCiAJaXJxX3dvcmtfc3luYygmYi0+aXJxX3dvcmspOwog CUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJmItPnNpZ25hbGVycykpOwogCUdFTV9CVUdfT04oYi0+ aXJxX2FybWVkKTsKKwogCWtmcmVlKGIpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9icmVhZGNydW1icy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfYnJlYWRjcnVtYnMuaAppbmRleCAzY2U1Y2UyNzBiMDQuLmJlMGQ0ZjM3OWE4NSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfYnJlYWRjcnVtYnMuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9icmVhZGNydW1icy5oCkBAIC05LDcgKzks NyBAQAogI2luY2x1ZGUgPGxpbnV4L2F0b21pYy5oPgogI2luY2x1ZGUgPGxpbnV4L2lycV93b3Jr Lmg+CiAKLSNpbmNsdWRlICJpbnRlbF9lbmdpbmVfdHlwZXMuaCIKKyNpbmNsdWRlICJpbnRlbF9i cmVhZGNydW1ic190eXBlcy5oIgogCiBzdHJ1Y3QgZHJtX3ByaW50ZXI7CiBzdHJ1Y3QgaTkxNV9y ZXF1ZXN0OwpAQCAtMTcsNyArMTcsNyBAQCBzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnM7CiAKIHN0 cnVjdCBpbnRlbF9icmVhZGNydW1icyAqCiBpbnRlbF9icmVhZGNydW1ic19jcmVhdGUoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqaXJxX2VuZ2luZSk7Ci12b2lkIGludGVsX2JyZWFkY3J1bWJzX2Zy ZWUoc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiKTsKK3ZvaWQgaW50ZWxfYnJlYWRjcnVtYnNf ZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZik7CiAKIHZvaWQgaW50ZWxfYnJlYWRjcnVtYnNfcmVzZXQo c3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiKTsKIHZvaWQgX19pbnRlbF9icmVhZGNydW1ic19w YXJrKHN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAqYik7CkBAIC00OCw0ICs0OCwxNiBAQCB2b2lk IGk5MTVfcmVxdWVzdF9jYW5jZWxfYnJlYWRjcnVtYihzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1 ZXN0KTsKIHZvaWQgaW50ZWxfY29udGV4dF9yZW1vdmVfYnJlYWRjcnVtYnMoc3RydWN0IGludGVs X2NvbnRleHQgKmNlLAogCQkJCSAgICAgIHN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAqYik7CiAK K3N0YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICoKK2ludGVsX2JyZWFkY3J1 bWJzX2dldChzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnMgKmIpCit7CisJa3JlZl9nZXQoJmItPnJl Zik7CisJcmV0dXJuIGI7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9icmVhZGNydW1i c19wdXQoc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiKQoreworCWtyZWZfcHV0KCZiLT5yZWYs IGludGVsX2JyZWFkY3J1bWJzX2ZyZWUpOworfQorCiAjZW5kaWYgLyogX19JTlRFTF9CUkVBRENS VU1CU19fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9icmVh ZGNydW1ic190eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfYnJlYWRjcnVt YnNfdHlwZXMuaAppbmRleCAzYTA4NGNlOGZmNWUuLjcyZGZkMzc0OGM0YyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfYnJlYWRjcnVtYnNfdHlwZXMuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9icmVhZGNydW1ic190eXBlcy5oCkBAIC03LDEw ICs3LDEzIEBACiAjZGVmaW5lIF9fSU5URUxfQlJFQURDUlVNQlNfVFlQRVNfXwogCiAjaW5jbHVk ZSA8bGludXgvaXJxX3dvcmsuaD4KKyNpbmNsdWRlIDxsaW51eC9rcmVmLmg+CiAjaW5jbHVkZSA8 bGludXgvbGlzdC5oPgogI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CiAjaW5jbHVkZSA8bGlu dXgvdHlwZXMuaD4KIAorI2luY2x1ZGUgImludGVsX2VuZ2luZV90eXBlcy5oIgorCiAvKgogICog UmF0aGVyIHRoYW4gaGF2ZSBldmVyeSBjbGllbnQgd2FpdCB1cG9uIGFsbCB1c2VyIGludGVycnVw dHMsCiAgKiB3aXRoIHRoZSBoZXJkIHdha2luZyBhZnRlciBldmVyeSBpbnRlcnJ1cHQgYW5kIGVh Y2ggZG9pbmcgdGhlCkBAIC0yOSw2ICszMiw3IEBACiAgKiB0aGUgb3ZlcmhlYWQgb2Ygd2FraW5n IHRoYXQgY2xpZW50IGlzIG11Y2ggcHJlZmVycmVkLgogICovCiBzdHJ1Y3QgaW50ZWxfYnJlYWRj cnVtYnMgeworCXN0cnVjdCBrcmVmIHJlZjsKIAlhdG9taWNfdCBhY3RpdmU7CiAKIAlzcGlubG9j a190IHNpZ25hbGVyc19sb2NrOyAvKiBwcm90ZWN0cyB0aGUgbGlzdCBvZiBzaWduYWxlcnMgKi8K QEAgLTQyLDcgKzQ2LDEwIEBAIHN0cnVjdCBpbnRlbF9icmVhZGNydW1icyB7CiAJYm9vbCBpcnFf YXJtZWQ7CiAKIAkvKiBOb3QgYWxsIGJyZWFkY3J1bWJzIGFyZSBhdHRhY2hlZCB0byBwaHlzaWNh bCBIVyAqLworCWludGVsX2VuZ2luZV9tYXNrX3QJZW5naW5lX21hc2s7CiAJc3RydWN0IGludGVs X2VuZ2luZV9jcyAqaXJxX2VuZ2luZTsKKwlib29sCSgqaXJxX2VuYWJsZSkoc3RydWN0IGludGVs X2JyZWFkY3J1bWJzICpiKTsKKwl2b2lkCSgqaXJxX2Rpc2FibGUpKHN0cnVjdCBpbnRlbF9icmVh ZGNydW1icyAqYik7CiB9OwogCiAjZW5kaWYgLyogX19JTlRFTF9CUkVBRENSVU1CU19UWVBFU19f ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMKaW5kZXggYmFhMDVmZGRk NjkwLi40NzdjNDJkN2Q2OTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0 LmMKQEAgLTM2Niw2ICszNjYsMTIgQEAgc3RhdGljIGludCBfX2ludGVsX2NvbnRleHRfYWN0aXZl KHN0cnVjdCBpOTE1X2FjdGl2ZSAqYWN0aXZlKQogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50 IHN3X2ZlbmNlX2R1bW15X25vdGlmeShzdHJ1Y3QgaTkxNV9zd19mZW5jZSAqc2YsCisJCQkJIGVu dW0gaTkxNV9zd19mZW5jZV9ub3RpZnkgc3RhdGUpCit7CisJcmV0dXJuIE5PVElGWV9ET05FOwor fQorCiB2b2lkCiBpbnRlbF9jb250ZXh0X2luaXQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLCBz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CkBAIC0zOTMsOSArMzk5LDE5IEBAIGlu dGVsX2NvbnRleHRfaW5pdChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKIAlzcGluX2xvY2tfaW5pdCgmY2UtPmd1Y19zdGF0ZS5sb2NrKTsK IAlJTklUX0xJU1RfSEVBRCgmY2UtPmd1Y19zdGF0ZS5mZW5jZXMpOwogCisJc3Bpbl9sb2NrX2lu aXQoJmNlLT5ndWNfYWN0aXZlLmxvY2spOworCUlOSVRfTElTVF9IRUFEKCZjZS0+Z3VjX2FjdGl2 ZS5yZXF1ZXN0cyk7CisKIAljZS0+Z3VjX2lkID0gR1VDX0lOVkFMSURfTFJDX0lEOwogCUlOSVRf TElTVF9IRUFEKCZjZS0+Z3VjX2lkX2xpbmspOwogCisJLyoKKwkgKiBJbml0aWFsaXplIGZlbmNl IHRvIGJlIGNvbXBsZXRlIGFzIHRoaXMgaXMgZXhwZWN0ZWQgdG8gYmUgY29tcGxldGUKKwkgKiB1 bmxlc3MgdGhlcmUgaXMgYSBwZW5kaW5nIHNjaGVkdWxlIGRpc2FibGUgb3V0c3RhbmRpbmcuCisJ ICovCisJaTkxNV9zd19mZW5jZV9pbml0KCZjZS0+Z3VjX2Jsb2NrZWQsIHN3X2ZlbmNlX2R1bW15 X25vdGlmeSk7CisJaTkxNV9zd19mZW5jZV9jb21taXQoJmNlLT5ndWNfYmxvY2tlZCk7CisKIAlp OTE1X2FjdGl2ZV9pbml0KCZjZS0+YWN0aXZlLAogCQkJIF9faW50ZWxfY29udGV4dF9hY3RpdmUs IF9faW50ZWxfY29udGV4dF9yZXRpcmUsIDApOwogfQpAQCAtNTA2LDYgKzUyMiwyNiBAQCBzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICppbnRlbF9jb250ZXh0X2NyZWF0ZV9yZXF1ZXN0KHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSkKIAlyZXR1cm4gcnE7CiB9CiAKK3N0cnVjdCBpOTE1X3JlcXVlc3QgKmlu dGVsX2NvbnRleHRfZmluZF9hY3RpdmVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Up Cit7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsICphY3RpdmUgPSBOVUxMOworCXVuc2lnbmVk IGxvbmcgZmxhZ3M7CisKKwlHRU1fQlVHX09OKCFpbnRlbF9lbmdpbmVfdXNlc19ndWMoY2UtPmVu Z2luZSkpOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmNlLT5ndWNfYWN0aXZlLmxvY2ssIGZsYWdz KTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JldmVyc2UocnEsICZjZS0+Z3VjX2FjdGl2ZS5yZXF1 ZXN0cywKKwkJCQkgICAgc2NoZWQubGluaykgeworCQlpZiAoaTkxNV9yZXF1ZXN0X2NvbXBsZXRl ZChycSkpCisJCQlicmVhazsKKworCQlhY3RpdmUgPSBycTsKKwl9CisJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmY2UtPmd1Y19hY3RpdmUubG9jaywgZmxhZ3MpOworCisJcmV0dXJuIGFjdGl2ZTsK K30KKwogI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQogI2luY2x1ZGUg InNlbGZ0ZXN0X2NvbnRleHQuYyIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfY29udGV4dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf Y29udGV4dC5oCmluZGV4IDk3NGVmODUzMjBjMi4uODc2YmRiMDgzMDNjIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5oCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSAi aW50ZWxfZW5naW5lX3R5cGVzLmgiCiAjaW5jbHVkZSAiaW50ZWxfcmluZ190eXBlcy5oIgogI2lu Y2x1ZGUgImludGVsX3RpbWVsaW5lX3R5cGVzLmgiCisjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgog CiAjZGVmaW5lIENFX1RSQUNFKGNlLCBmbXQsIC4uLikgZG8gewkJCQkJXAogCWNvbnN0IHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZV9fID0gKGNlKTsJCQlcCkBAIC02OSw2ICs3MCwxMyBAQCBpbnRl bF9jb250ZXh0X2lzX3Bpbm5lZChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAJcmV0dXJuIGF0 b21pY19yZWFkKCZjZS0+cGluX2NvdW50KTsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIGludGVs X2NvbnRleHRfY2FuY2VsX3JlcXVlc3Qoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAorCQkJCQkJ c3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJR0VNX0JVR19PTighY2UtPm9wcy0+Y2FuY2Vs X3JlcXVlc3QpOworCXJldHVybiBjZS0+b3BzLT5jYW5jZWxfcmVxdWVzdChjZSwgcnEpOworfQor CiAvKioKICAqIGludGVsX2NvbnRleHRfdW5sb2NrX3Bpbm5lZCAtIFJlbGVhc2VzIHRoZSBlYXJs aWVyIGxvY2tpbmcgb2YgJ3Bpbm5lZCcgc3RhdHVzCiAgKiBAY2UgLSB0aGUgY29udGV4dApAQCAt MjAwLDYgKzIwOCw5IEBAIGludCBpbnRlbF9jb250ZXh0X3ByZXBhcmVfcmVtb3RlX3JlcXVlc3Qo c3RydWN0IGludGVsX2NvbnRleHQgKmNlLAogCiBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICppbnRlbF9j b250ZXh0X2NyZWF0ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSk7CiAKK3N0cnVj dCBpOTE1X3JlcXVlc3QgKgoraW50ZWxfY29udGV4dF9maW5kX2FjdGl2ZV9yZXF1ZXN0KHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSk7CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF9jb250ZXh0 X2lzX2JhcnJpZXIoY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQogewogCXJldHVybiB0 ZXN0X2JpdChDT05URVhUX0JBUlJJRVJfQklULCAmY2UtPmZsYWdzKTsKQEAgLTI0MCw2ICsyNTEs MTggQEAgc3RhdGljIGlubGluZSBib29sIGludGVsX2NvbnRleHRfc2V0X2Jhbm5lZChzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY2UpCiAJcmV0dXJuIHRlc3RfYW5kX3NldF9iaXQoQ09OVEVYVF9CQU5O RUQsICZjZS0+ZmxhZ3MpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxfY29udGV4dF9i YW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAorCQkJCSAgICAgc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEpCit7CisJYm9vbCByZXQgPSBpbnRlbF9jb250ZXh0X3NldF9iYW5uZWQoY2UpOworCisJ dHJhY2VfaW50ZWxfY29udGV4dF9iYW4oY2UpOworCWlmIChjZS0+b3BzLT5iYW4pCisJCWNlLT5v cHMtPmJhbihjZSwgcnEpOworCisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGlubGluZSBib29s CiBpbnRlbF9jb250ZXh0X2ZvcmNlX3NpbmdsZV9zdWJtaXNzaW9uKGNvbnN0IHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2NvbnRleHRfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRl eHRfdHlwZXMuaAppbmRleCA0YTU1MThkMjk1YzIuLmZlNTU1NTUxYzJkMiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dF90eXBlcy5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHRfdHlwZXMuaApAQCAtMTMsMTIgKzEzLDE0 IEBACiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KIAogI2luY2x1ZGUgImk5MTVfYWN0aXZlX3R5 cGVzLmgiCisjaW5jbHVkZSAiaTkxNV9zd19mZW5jZS5oIgogI2luY2x1ZGUgImk5MTVfdXRpbHMu aCIKICNpbmNsdWRlICJpbnRlbF9lbmdpbmVfdHlwZXMuaCIKICNpbmNsdWRlICJpbnRlbF9zc2V1 LmgiCiAKLSNkZWZpbmUgQ09OVEVYVF9SRURaT05FIFBPSVNPTl9JTlVTRQorI2luY2x1ZGUgInVj L2ludGVsX2d1Y19md2lmLmgiCiAKKyNkZWZpbmUgQ09OVEVYVF9SRURaT05FIFBPSVNPTl9JTlVT RQogREVDTEFSRV9FV01BKHJ1bnRpbWUsIDMsIDgpOwogCiBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dDsKQEAgLTM1LDExICszNywxNiBAQCBzdHJ1Y3QgaW50ZWxfY29udGV4dF9vcHMgewogCiAJaW50 ICgqYWxsb2MpKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSk7CiAKKwl2b2lkICgqYmFuKShzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2UsIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKTsKKwogCWludCAo KnByZV9waW4pKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgc3RydWN0IGk5MTVfZ2VtX3d3X2N0 eCAqd3csIHZvaWQgKip2YWRkcik7CiAJaW50ICgqcGluKShzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y2UsIHZvaWQgKnZhZGRyKTsKIAl2b2lkICgqdW5waW4pKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSk7CiAJdm9pZCAoKnBvc3RfdW5waW4pKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSk7CiAKKwl2 b2lkICgqY2FuY2VsX3JlcXVlc3QpKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKKwkJCSAgICAg ICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSk7CisKIAl2b2lkICgqZW50ZXIpKHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSk7CiAJdm9pZCAoKmV4aXQpKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSk7 CiAKQEAgLTQ3LDYgKzU0LDEyIEBAIHN0cnVjdCBpbnRlbF9jb250ZXh0X29wcyB7CiAKIAl2b2lk ICgqcmVzZXQpKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSk7CiAJdm9pZCAoKmRlc3Ryb3kpKHN0 cnVjdCBrcmVmICprcmVmKTsKKworCS8qIHZpcnR1YWwgZW5naW5lL2NvbnRleHQgaW50ZXJmYWNl ICovCisJc3RydWN0IGludGVsX2NvbnRleHQgKigqY3JlYXRlX3ZpcnR1YWwpKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKiplbmdpbmUsCisJCQkJCQl1bnNpZ25lZCBpbnQgY291bnQpOworCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKigqZ2V0X3NpYmxpbmcpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwKKwkJCQkJICAgICAgIHVuc2lnbmVkIGludCBzaWJsaW5nKTsKIH07CiAKIHN0cnVj dCBpbnRlbF9jb250ZXh0IHsKQEAgLTE1Niw2ICsxNjksMTMgQEAgc3RydWN0IGludGVsX2NvbnRl eHQgewogCQlzdHJ1Y3QgbGlzdF9oZWFkIGZlbmNlczsKIAl9IGd1Y19zdGF0ZTsKIAorCXN0cnVj dCB7CisJCS8qKiBsb2NrOiBwcm90ZWN0cyBldmVyeXRoaW5nIGluIGd1Y19hY3RpdmUgKi8KKwkJ c3BpbmxvY2tfdCBsb2NrOworCQkvKiogcmVxdWVzdHM6IGFjdGl2ZSByZXF1ZXN0cyBvbiB0aGlz IGNvbnRleHQgKi8KKwkJc3RydWN0IGxpc3RfaGVhZCByZXF1ZXN0czsKKwl9IGd1Y19hY3RpdmU7 CisKIAkvKiBHdUMgc2NoZWR1bGluZyBzdGF0ZSBmbGFncyB0aGF0IGRvIG5vdCByZXF1aXJlIGEg bG9jay4gKi8KIAlhdG9taWNfdCBndWNfc2NoZWRfc3RhdGVfbm9fbG9jazsKIApAQCAtMTY5LDYg KzE4OSwxNSBAQCBzdHJ1Y3QgaW50ZWxfY29udGV4dCB7CiAJICogR3VDIElEIGxpbmsgLSBpbiBs aXN0IHdoZW4gdW5waW5uZWQgYnV0IGd1Y19pZCBzdGlsbCB2YWxpZCBpbiBHdUMKIAkgKi8KIAlz dHJ1Y3QgbGlzdF9oZWFkIGd1Y19pZF9saW5rOworCisJLyogR3VDIGNvbnRleHQgYmxvY2tlZCBm ZW5jZSAqLworCXN0cnVjdCBpOTE1X3N3X2ZlbmNlIGd1Y19ibG9ja2VkOworCisJLyoKKwkgKiBH dUMgcHJpb3JpdHkgbWFuYWdlbWVudAorCSAqLworCXU4IGd1Y19wcmlvOworCXUzMiBndWNfcHJp b19jb3VudFtHVUNfQ0xJRU5UX1BSSU9SSVRZX05VTV07CiB9OwogCiAjZW5kaWYgLyogX19JTlRF TF9DT05URVhUX1RZUEVTX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2VuZ2luZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmgK aW5kZXggZjkxMWMxMjI0YWIyLi5jMmE1NjQwYWUwNTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2VuZ2luZS5oCkBAIC0yMTIsNiArMjEyLDkgQEAgdm9pZCBpbnRlbF9lbmdpbmVfZ2V0 X2luc3Rkb25lKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAogdm9pZCBp bnRlbF9lbmdpbmVfaW5pdF9leGVjbGlzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KTsKIAorYm9vbCBpbnRlbF9lbmdpbmVfaXJxX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpOwordm9pZCBpbnRlbF9lbmdpbmVfaXJxX2Rpc2FibGUoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKTsKKwogc3RhdGljIGlubGluZSB2b2lkIF9faW50ZWxfZW5naW5lX3Jl c2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCQkJYm9vbCBzdGFsbGVkKQog ewpAQCAtMjM3LDEyICsyNDAsMTUgQEAgX19wcmludGYoMywgNCkKIHZvaWQgaW50ZWxfZW5naW5l X2R1bXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQkgICAgICAgc3RydWN0IGRy bV9wcmludGVyICptLAogCQkgICAgICAgY29uc3QgY2hhciAqaGVhZGVyLCAuLi4pOwordm9pZCBp bnRlbF9lbmdpbmVfZHVtcF9hY3RpdmVfcmVxdWVzdHMoc3RydWN0IGxpc3RfaGVhZCAqcmVxdWVz dHMsCisJCQkJICAgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKmh1bmdfcnEsCisJCQkJICAgICAg IHN0cnVjdCBkcm1fcHJpbnRlciAqbSk7CiAKIGt0aW1lX3QgaW50ZWxfZW5naW5lX2dldF9idXN5 X3RpbWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQkJCSAgIGt0aW1lX3QgKm5v dyk7CiAKIHN0cnVjdCBpOTE1X3JlcXVlc3QgKgotaW50ZWxfZW5naW5lX2ZpbmRfYWN0aXZlX3Jl cXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKK2ludGVsX2VuZ2luZV9leGVj bGlzdF9maW5kX2h1bmdfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwog CiB1MzIgaW50ZWxfZW5naW5lX2NvbnRleHRfc2l6ZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCB1OCBj bGFzcyk7CiBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqCkBAIC0yNzMsMTMgKzI3OSw2MCBAQCBpbnRl bF9lbmdpbmVfaGFzX3ByZWVtcHRfcmVzZXQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQogCXJldHVybiBpbnRlbF9lbmdpbmVfaGFzX3ByZWVtcHRpb24oZW5naW5lKTsKIH0K IAorc3RydWN0IGludGVsX2NvbnRleHQgKgoraW50ZWxfZW5naW5lX2NyZWF0ZV92aXJ0dWFsKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKipzaWJsaW5ncywKKwkJCSAgICB1bnNpZ25lZCBpbnQgY291 bnQpOworCitzdGF0aWMgaW5saW5lIGJvb2wKK2ludGVsX3ZpcnR1YWxfZW5naW5lX2hhc19oZWFy dGJlYXQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCS8qCisJICog Rm9yIG5vbi1HdUMgc3VibWlzc2lvbiB3ZSBleHBlY3QgdGhlIGJhY2stZW5kIHRvIGxvb2sgYXQg dGhlCisJICogaGVhcnRiZWF0IHN0YXR1cyBvZiB0aGUgYWN0dWFsIHBoeXNpY2FsIGVuZ2luZSB0 aGF0IHRoZSB3b3JrCisJICogaGFzIGJlZW4gKG9yIGlzIGJlaW5nKSBzY2hlZHVsZWQgb24sIHNv IHdlIHNob3VsZCBvbmx5IHJlYWNoCisJICogaGVyZSB3aXRoIEd1QyBzdWJtaXNzaW9uIGVuYWJs ZWQuCisJICovCisJR0VNX0JVR19PTighaW50ZWxfZW5naW5lX3VzZXNfZ3VjKGVuZ2luZSkpOwor CisJcmV0dXJuIGludGVsX2d1Y192aXJ0dWFsX2VuZ2luZV9oYXNfaGVhcnRiZWF0KGVuZ2luZSk7 Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbAogaW50ZWxfZW5naW5lX2hhc19oZWFydGJlYXQoY29u c3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCWlmICghSVNfQUNUSVZFKENP TkZJR19EUk1fSTkxNV9IRUFSVEJFQVRfSU5URVJWQUwpKQogCQlyZXR1cm4gZmFsc2U7CiAKLQly ZXR1cm4gUkVBRF9PTkNFKGVuZ2luZS0+cHJvcHMuaGVhcnRiZWF0X2ludGVydmFsX21zKTsKKwlp ZiAoaW50ZWxfZW5naW5lX2lzX3ZpcnR1YWwoZW5naW5lKSkKKwkJcmV0dXJuIGludGVsX3ZpcnR1 YWxfZW5naW5lX2hhc19oZWFydGJlYXQoZW5naW5lKTsKKwllbHNlCisJCXJldHVybiBSRUFEX09O Q0UoZW5naW5lLT5wcm9wcy5oZWFydGJlYXRfaW50ZXJ2YWxfbXMpOworfQorCitzdGF0aWMgaW5s aW5lIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKgoraW50ZWxfZW5naW5lX2dldF9zaWJsaW5nKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdW5zaWduZWQgaW50IHNpYmxpbmcpCit7CisJ R0VNX0JVR19PTighaW50ZWxfZW5naW5lX2lzX3ZpcnR1YWwoZW5naW5lKSk7CisJcmV0dXJuIGVu Z2luZS0+Y29wcy0+Z2V0X3NpYmxpbmcoZW5naW5lLCBzaWJsaW5nKTsKK30KKworc3RhdGljIGlu bGluZSB2b2lkCitpbnRlbF9lbmdpbmVfc2V0X2h1bmdfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsCisJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJ ZW5naW5lLT5odW5nX2NlID0gY2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAoraW50ZWxfZW5n aW5lX2NsZWFyX2h1bmdfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7 CisJaW50ZWxfZW5naW5lX3NldF9odW5nX2NvbnRleHQoZW5naW5lLCBOVUxMKTsKK30KKworc3Rh dGljIGlubGluZSBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqCitpbnRlbF9lbmdpbmVfZ2V0X2h1bmdf Y29udGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJcmV0dXJuIGVuZ2lu ZS0+aHVuZ19jZTsKIH0KIAogI2VuZGlmIC8qIF9JTlRFTF9SSU5HQlVGRkVSX0hfICovCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCmluZGV4IDQzYzNmYjJhZWIxMy4u ZGVhMGU1MjJjNWM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9l bmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3Mu YwpAQCAtNzk4LDcgKzc5OCw3IEBAIHN0YXRpYyBpbnQgZW5naW5lX3NldHVwX2NvbW1vbihzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiBlcnJfY21kX3BhcnNlcjoKIAlpOTE1X3NjaGVk X2VuZ2luZV9wdXQoZW5naW5lLT5zY2hlZF9lbmdpbmUpOwogZXJyX3NjaGVkX2VuZ2luZToKLQlp bnRlbF9icmVhZGNydW1ic19mcmVlKGVuZ2luZS0+YnJlYWRjcnVtYnMpOworCWludGVsX2JyZWFk Y3J1bWJzX3B1dChlbmdpbmUtPmJyZWFkY3J1bWJzKTsKIGVycl9zdGF0dXM6CiAJY2xlYW51cF9z dGF0dXNfcGFnZShlbmdpbmUpOwogCXJldHVybiBlcnI7CkBAIC0xMDA3LDcgKzEwMDcsNyBAQCB2 b2lkIGludGVsX2VuZ2luZV9jbGVhbnVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCiAJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmZW5naW5lLT5zY2hlZF9lbmdpbmUtPnJl cXVlc3RzKSk7CiAKIAlpOTE1X3NjaGVkX2VuZ2luZV9wdXQoZW5naW5lLT5zY2hlZF9lbmdpbmUp OwotCWludGVsX2JyZWFkY3J1bWJzX2ZyZWUoZW5naW5lLT5icmVhZGNydW1icyk7CisJaW50ZWxf YnJlYWRjcnVtYnNfcHV0KGVuZ2luZS0+YnJlYWRjcnVtYnMpOwogCiAJaW50ZWxfZW5naW5lX2Zp bmlfcmV0aXJlKGVuZ2luZSk7CiAJaW50ZWxfZW5naW5lX2NsZWFudXBfY21kX3BhcnNlcihlbmdp bmUpOwpAQCAtMTMyNCw2ICsxMzI0LDMwIEBAIGJvb2wgaW50ZWxfZW5naW5lc19hcmVfaWRsZShz dHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCXJldHVybiB0cnVlOwogfQogCitib29sIGludGVsX2VuZ2lu ZV9pcnFfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlpZiAoIWVu Z2luZS0+aXJxX2VuYWJsZSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogQ2FsbGVyIGRpc2FibGVz IGludGVycnVwdHMgKi8KKwlzcGluX2xvY2soJmVuZ2luZS0+Z3QtPmlycV9sb2NrKTsKKwllbmdp bmUtPmlycV9lbmFibGUoZW5naW5lKTsKKwlzcGluX3VubG9jaygmZW5naW5lLT5ndC0+aXJxX2xv Y2spOworCisJcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgaW50ZWxfZW5naW5lX2lycV9kaXNhYmxl KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlpZiAoIWVuZ2luZS0+aXJxX2Rp c2FibGUpCisJCXJldHVybjsKKworCS8qIENhbGxlciBkaXNhYmxlcyBpbnRlcnJ1cHRzICovCisJ c3Bpbl9sb2NrKCZlbmdpbmUtPmd0LT5pcnFfbG9jayk7CisJZW5naW5lLT5pcnFfZGlzYWJsZShl bmdpbmUpOworCXNwaW5fdW5sb2NrKCZlbmdpbmUtPmd0LT5pcnFfbG9jayk7Cit9CisKIHZvaWQg aW50ZWxfZW5naW5lc19yZXNldF9kZWZhdWx0X3N1Ym1pc3Npb24oc3RydWN0IGludGVsX2d0ICpn dCkKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CkBAIC0xNjYwLDYgKzE2ODQs OTggQEAgc3RhdGljIHZvaWQgcHJpbnRfcHJvcGVydGllcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsCiAJCQkgICByZWFkX3VsKCZlbmdpbmUtPmRlZmF1bHRzLCBwLT5vZmZzZXQpKTsK IH0KIAorc3RhdGljIHZvaWQgZW5naW5lX2R1bXBfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSwgc3RydWN0IGRybV9wcmludGVyICptLCBjb25zdCBjaGFyICptc2cpCit7CisJc3RydWN0 IGludGVsX3RpbWVsaW5lICp0bCA9IGdldF90aW1lbGluZShycSk7CisKKwlpOTE1X3JlcXVlc3Rf c2hvdyhtLCBycSwgbXNnLCAwKTsKKworCWRybV9wcmludGYobSwgIlx0XHRyaW5nLT5zdGFydDog IDB4JTA4eFxuIiwKKwkJICAgaTkxNV9nZ3R0X29mZnNldChycS0+cmluZy0+dm1hKSk7CisJZHJt X3ByaW50ZihtLCAiXHRcdHJpbmctPmhlYWQ6ICAgMHglMDh4XG4iLAorCQkgICBycS0+cmluZy0+ aGVhZCk7CisJZHJtX3ByaW50ZihtLCAiXHRcdHJpbmctPnRhaWw6ICAgMHglMDh4XG4iLAorCQkg ICBycS0+cmluZy0+dGFpbCk7CisJZHJtX3ByaW50ZihtLCAiXHRcdHJpbmctPmVtaXQ6ICAgMHgl MDh4XG4iLAorCQkgICBycS0+cmluZy0+ZW1pdCk7CisJZHJtX3ByaW50ZihtLCAiXHRcdHJpbmct PnNwYWNlOiAgMHglMDh4XG4iLAorCQkgICBycS0+cmluZy0+c3BhY2UpOworCisJaWYgKHRsKSB7 CisJCWRybV9wcmludGYobSwgIlx0XHRyaW5nLT5od3NwOiAgIDB4JTA4eFxuIiwKKwkJCSAgIHRs LT5od3NwX29mZnNldCk7CisJCWludGVsX3RpbWVsaW5lX3B1dCh0bCk7CisJfQorCisJcHJpbnRf cmVxdWVzdF9yaW5nKG0sIHJxKTsKKworCWlmIChycS0+Y29udGV4dC0+bHJjX3JlZ19zdGF0ZSkg eworCQlkcm1fcHJpbnRmKG0sICJMb2dpY2FsIFJpbmcgQ29udGV4dDpcbiIpOworCQloZXhkdW1w KG0sIHJxLT5jb250ZXh0LT5scmNfcmVnX3N0YXRlLCBQQUdFX1NJWkUpOworCX0KK30KKwordm9p ZCBpbnRlbF9lbmdpbmVfZHVtcF9hY3RpdmVfcmVxdWVzdHMoc3RydWN0IGxpc3RfaGVhZCAqcmVx dWVzdHMsCisJCQkJICAgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKmh1bmdfcnEsCisJCQkJICAg ICAgIHN0cnVjdCBkcm1fcHJpbnRlciAqbSkKK3sKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsK Kwljb25zdCBjaGFyICptc2c7CisJZW51bSBpOTE1X3JlcXVlc3Rfc3RhdGUgc3RhdGU7CisKKwls aXN0X2Zvcl9lYWNoX2VudHJ5KHJxLCByZXF1ZXN0cywgc2NoZWQubGluaykgeworCQlpZiAocnEg PT0gaHVuZ19ycSkKKwkJCWNvbnRpbnVlOworCisJCXN0YXRlID0gaTkxNV90ZXN0X3JlcXVlc3Rf c3RhdGUocnEpOworCQlpZiAoc3RhdGUgPCBJOTE1X1JFUVVFU1RfUVVFVUVEKQorCQkJY29udGlu dWU7CisKKwkJaWYgKHN0YXRlID09IEk5MTVfUkVRVUVTVF9BQ1RJVkUpCisJCQltc2cgPSAiXHRc dGFjdGl2ZSBvbiBlbmdpbmUiOworCQllbHNlCisJCQltc2cgPSAiXHRcdGFjdGl2ZSBpbiBxdWV1 ZSI7CisKKwkJZW5naW5lX2R1bXBfcmVxdWVzdChycSwgbSwgbXNnKTsKKwl9Cit9CisKK3N0YXRp YyB2b2lkIGVuZ2luZV9kdW1wX2FjdGl2ZV9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsIHN0cnVjdCBkcm1fcHJpbnRlciAqbSkKK3sKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpodW5nX3JxID0gTlVMTDsKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7CisJYm9vbCBndWM7 CisKKwkvKgorCSAqIE5vIG5lZWQgZm9yIGFuIGVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIoKSBi ZWZvcmUgdGhlIHNlcW5vIHJlYWRzLgorCSAqIFRoZSBHUFUgaXMgc3RpbGwgcnVubmluZyBzbyBy ZXF1ZXN0cyBhcmUgc3RpbGwgZXhlY3V0aW5nIGFuZCBhbnkKKwkgKiBoYXJkd2FyZSByZWFkcyB3 aWxsIGJlIG91dCBvZiBkYXRlIGJ5IHRoZSB0aW1lIHRoZXkgYXJlIHJlcG9ydGVkLgorCSAqIEJ1 dCB0aGUgaW50ZW50aW9uIGhlcmUgaXMganVzdCB0byByZXBvcnQgYW4gaW5zdGFudGFuZW91cyBz bmFwc2hvdAorCSAqIHNvIHRoYXQncyBmaW5lLgorCSAqLworCWxvY2tkZXBfYXNzZXJ0X2hlbGQo JmVuZ2luZS0+c2NoZWRfZW5naW5lLT5sb2NrKTsKKworCWRybV9wcmludGYobSwgIlx0UmVxdWVz dHM6XG4iKTsKKworCWd1YyA9IGludGVsX3VjX3VzZXNfZ3VjX3N1Ym1pc3Npb24oJmVuZ2luZS0+ Z3QtPnVjKTsKKwlpZiAoZ3VjKSB7CisJCWNlID0gaW50ZWxfZW5naW5lX2dldF9odW5nX2NvbnRl eHQoZW5naW5lKTsKKwkJaWYgKGNlKQorCQkJaHVuZ19ycSA9IGludGVsX2NvbnRleHRfZmluZF9h Y3RpdmVfcmVxdWVzdChjZSk7CisJfSBlbHNlIHsKKwkJaHVuZ19ycSA9IGludGVsX2VuZ2luZV9l eGVjbGlzdF9maW5kX2h1bmdfcmVxdWVzdChlbmdpbmUpOworCX0KKworCWlmIChodW5nX3JxKQor CQllbmdpbmVfZHVtcF9yZXF1ZXN0KGh1bmdfcnEsIG0sICJcdFx0aHVuZyIpOworCisJaWYgKGd1 YykKKwkJaW50ZWxfZ3VjX2R1bXBfYWN0aXZlX3JlcXVlc3RzKGVuZ2luZSwgaHVuZ19ycSwgbSk7 CisJZWxzZQorCQlpbnRlbF9lbmdpbmVfZHVtcF9hY3RpdmVfcmVxdWVzdHMoJmVuZ2luZS0+c2No ZWRfZW5naW5lLT5yZXF1ZXN0cywKKwkJCQkJCSAgaHVuZ19ycSwgbSk7Cit9CisKIHZvaWQgaW50 ZWxfZW5naW5lX2R1bXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQkgICAgICAg c3RydWN0IGRybV9wcmludGVyICptLAogCQkgICAgICAgY29uc3QgY2hhciAqaGVhZGVyLCAuLi4p CkBAIC0xNzA0LDM5ICsxODIwLDkgQEAgdm9pZCBpbnRlbF9lbmdpbmVfZHVtcChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJCSAgIGk5MTVfcmVzZXRfY291bnQoZXJyb3IpKTsKIAlw cmludF9wcm9wZXJ0aWVzKGVuZ2luZSwgbSk7CiAKLQlkcm1fcHJpbnRmKG0sICJcdFJlcXVlc3Rz OlxuIik7Ci0KIAlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT5zY2hlZF9lbmdpbmUtPmxvY2ss IGZsYWdzKTsKLQlycSA9IGludGVsX2VuZ2luZV9maW5kX2FjdGl2ZV9yZXF1ZXN0KGVuZ2luZSk7 Ci0JaWYgKHJxKSB7Ci0JCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwgPSBnZXRfdGltZWxpbmUo cnEpOwotCi0JCWk5MTVfcmVxdWVzdF9zaG93KG0sIHJxLCAiXHRcdGFjdGl2ZSAiLCAwKTsKLQot CQlkcm1fcHJpbnRmKG0sICJcdFx0cmluZy0+c3RhcnQ6ICAweCUwOHhcbiIsCi0JCQkgICBpOTE1 X2dndHRfb2Zmc2V0KHJxLT5yaW5nLT52bWEpKTsKLQkJZHJtX3ByaW50ZihtLCAiXHRcdHJpbmct PmhlYWQ6ICAgMHglMDh4XG4iLAotCQkJICAgcnEtPnJpbmctPmhlYWQpOwotCQlkcm1fcHJpbnRm KG0sICJcdFx0cmluZy0+dGFpbDogICAweCUwOHhcbiIsCi0JCQkgICBycS0+cmluZy0+dGFpbCk7 Ci0JCWRybV9wcmludGYobSwgIlx0XHRyaW5nLT5lbWl0OiAgIDB4JTA4eFxuIiwKLQkJCSAgIHJx LT5yaW5nLT5lbWl0KTsKLQkJZHJtX3ByaW50ZihtLCAiXHRcdHJpbmctPnNwYWNlOiAgMHglMDh4 XG4iLAotCQkJICAgcnEtPnJpbmctPnNwYWNlKTsKLQotCQlpZiAodGwpIHsKLQkJCWRybV9wcmlu dGYobSwgIlx0XHRyaW5nLT5od3NwOiAgIDB4JTA4eFxuIiwKLQkJCQkgICB0bC0+aHdzcF9vZmZz ZXQpOwotCQkJaW50ZWxfdGltZWxpbmVfcHV0KHRsKTsKLQkJfQorCWVuZ2luZV9kdW1wX2FjdGl2 ZV9yZXF1ZXN0cyhlbmdpbmUsIG0pOwogCi0JCXByaW50X3JlcXVlc3RfcmluZyhtLCBycSk7Ci0K LQkJaWYgKHJxLT5jb250ZXh0LT5scmNfcmVnX3N0YXRlKSB7Ci0JCQlkcm1fcHJpbnRmKG0sICJM b2dpY2FsIFJpbmcgQ29udGV4dDpcbiIpOwotCQkJaGV4ZHVtcChtLCBycS0+Y29udGV4dC0+bHJj X3JlZ19zdGF0ZSwgUEFHRV9TSVpFKTsKLQkJfQotCX0KIAlkcm1fcHJpbnRmKG0sICJcdE9uIGhv bGQ/OiAlbHVcbiIsCiAJCSAgIGxpc3RfY291bnQoJmVuZ2luZS0+c2NoZWRfZW5naW5lLT5ob2xk KSk7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5zY2hlZF9lbmdpbmUtPmxvY2ss IGZsYWdzKTsKQEAgLTE3OTYsMTggKzE4ODIsMzIgQEAga3RpbWVfdCBpbnRlbF9lbmdpbmVfZ2V0 X2J1c3lfdGltZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGt0aW1lX3QgKm5vdykK IAlyZXR1cm4gdG90YWw7CiB9CiAKLXN0YXRpYyBib29sIG1hdGNoX3Jpbmcoc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEpCitzdHJ1Y3QgaW50ZWxfY29udGV4dCAqCitpbnRlbF9lbmdpbmVfY3JlYXRl X3ZpcnR1YWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqKnNpYmxpbmdzLAorCQkJICAgIHVuc2ln bmVkIGludCBjb3VudCkKIHsKLQl1MzIgcmluZyA9IEVOR0lORV9SRUFEKHJxLT5lbmdpbmUsIFJJ TkdfU1RBUlQpOworCWlmIChjb3VudCA9PSAwKQorCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsK IAotCXJldHVybiByaW5nID09IGk5MTVfZ2d0dF9vZmZzZXQocnEtPnJpbmctPnZtYSk7CisJaWYg KGNvdW50ID09IDEpCisJCXJldHVybiBpbnRlbF9jb250ZXh0X2NyZWF0ZShzaWJsaW5nc1swXSk7 CisKKwlHRU1fQlVHX09OKCFzaWJsaW5nc1swXS0+Y29wcy0+Y3JlYXRlX3ZpcnR1YWwpOworCXJl dHVybiBzaWJsaW5nc1swXS0+Y29wcy0+Y3JlYXRlX3ZpcnR1YWwoc2libGluZ3MsIGNvdW50KTsK IH0KIAogc3RydWN0IGk5MTVfcmVxdWVzdCAqCi1pbnRlbF9lbmdpbmVfZmluZF9hY3RpdmVfcmVx dWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCitpbnRlbF9lbmdpbmVfZXhlY2xp c3RfZmluZF9odW5nX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewog CXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QsICphY3RpdmUgPSBOVUxMOwogCisJLyoKKwkg KiBUaGlzIHNlYXJjaCBkb2VzIG5vdCB3b3JrIGluIEd1QyBzdWJtaXNzaW9uIG1vZGUuIEhvd2V2 ZXIsIHRoZSBHdUMKKwkgKiB3aWxsIHJlcG9ydCB0aGUgaGFuZ2luZyBjb250ZXh0IGRpcmVjdGx5 IHRvIHRoZSBkcml2ZXIgaXRzZWxmLiBTbworCSAqIHRoZSBkcml2ZXIgc2hvdWxkIG5ldmVyIGdl dCBoZXJlIHdoZW4gaW4gR3VDIG1vZGUuCisJICovCisJR0VNX0JVR19PTihpbnRlbF91Y191c2Vz X2d1Y19zdWJtaXNzaW9uKCZlbmdpbmUtPmd0LT51YykpOworCiAJLyoKIAkgKiBXZSBhcmUgY2Fs bGVkIGJ5IHRoZSBlcnJvciBjYXB0dXJlLCByZXNldCBhbmQgdG8gZHVtcCBlbmdpbmUKIAkgKiBz dGF0ZSBhdCByYW5kb20gcG9pbnRzIGluIHRpbWUuIEluIHBhcnRpY3VsYXIsIG5vdGUgdGhhdCBu ZWl0aGVyIGlzCkBAIC0xODM5LDE0ICsxOTM5LDcgQEAgaW50ZWxfZW5naW5lX2ZpbmRfYWN0aXZl X3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCiAJbGlzdF9mb3JfZWFj aF9lbnRyeShyZXF1ZXN0LCAmZW5naW5lLT5zY2hlZF9lbmdpbmUtPnJlcXVlc3RzLAogCQkJICAg IHNjaGVkLmxpbmspIHsKLQkJaWYgKF9faTkxNV9yZXF1ZXN0X2lzX2NvbXBsZXRlKHJlcXVlc3Qp KQotCQkJY29udGludWU7Ci0KLQkJaWYgKCFfX2k5MTVfcmVxdWVzdF9oYXNfc3RhcnRlZChyZXF1 ZXN0KSkKLQkJCWNvbnRpbnVlOwotCi0JCS8qIE1vcmUgdGhhbiBvbmUgcHJlZW1wdGlibGUgcmVx dWVzdCBtYXkgbWF0Y2ghICovCi0JCWlmICghbWF0Y2hfcmluZyhyZXF1ZXN0KSkKKwkJaWYgKGk5 MTVfdGVzdF9yZXF1ZXN0X3N0YXRlKHJlcXVlc3QpICE9IEk5MTVfUkVRVUVTVF9BQ1RJVkUpCiAJ CQljb250aW51ZTsKIAogCQlhY3RpdmUgPSByZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5jCmluZGV4IGI2YTMwNWU2YTk3NC4uNzQ3 NzVhZTk2MWIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdp bmVfaGVhcnRiZWF0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5l X2hlYXJ0YmVhdC5jCkBAIC03MCwxMiArNzAsMzggQEAgc3RhdGljIHZvaWQgc2hvd19oZWFydGJl YXQoY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCiB7CiAJc3RydWN0IGRybV9wcmludGVy IHAgPSBkcm1fZGVidWdfcHJpbnRlcigiaGVhcnRiZWF0Iik7CiAKLQlpbnRlbF9lbmdpbmVfZHVt cChlbmdpbmUsICZwLAotCQkJICAiJXMgaGVhcnRiZWF0IHtzZXFubzolbGx4OiVsbGQsIHByaW86 JWR9IG5vdCB0aWNraW5nXG4iLAotCQkJICBlbmdpbmUtPm5hbWUsCi0JCQkgIHJxLT5mZW5jZS5j b250ZXh0LAotCQkJICBycS0+ZmVuY2Uuc2Vxbm8sCi0JCQkgIHJxLT5zY2hlZC5hdHRyLnByaW9y aXR5KTsKKwlpZiAoIXJxKSB7CisJCWludGVsX2VuZ2luZV9kdW1wKGVuZ2luZSwgJnAsCisJCQkJ ICAiJXMgaGVhcnRiZWF0IG5vdCB0aWNraW5nXG4iLAorCQkJCSAgZW5naW5lLT5uYW1lKTsKKwl9 IGVsc2UgeworCQlpbnRlbF9lbmdpbmVfZHVtcChlbmdpbmUsICZwLAorCQkJCSAgIiVzIGhlYXJ0 YmVhdCB7c2Vxbm86JWxseDolbGxkLCBwcmlvOiVkfSBub3QgdGlja2luZ1xuIiwKKwkJCQkgIGVu Z2luZS0+bmFtZSwKKwkJCQkgIHJxLT5mZW5jZS5jb250ZXh0LAorCQkJCSAgcnEtPmZlbmNlLnNl cW5vLAorCQkJCSAgcnEtPnNjaGVkLmF0dHIucHJpb3JpdHkpOworCX0KK30KKworc3RhdGljIHZv aWQKK3Jlc2V0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxKQoreworCWlmIChJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJV R19HRU0pKQorCQlzaG93X2hlYXJ0YmVhdChycSwgZW5naW5lKTsKKworCWlmIChpbnRlbF9lbmdp bmVfdXNlc19ndWMoZW5naW5lKSkKKwkJLyoKKwkJICogR3VDIGl0c2VsZiBpcyB0b2FzdCBvciBH dUMncyBoYW5nIGRldGVjdGlvbgorCQkgKiBpcyBkaXNhYmxlZC4gRWl0aGVyIHdheSwgbmVlZCB0 byBmaW5kIHRoZQorCQkgKiBoYW5nIGN1bHByaXQgbWFudWFsbHkuCisJCSAqLworCQlpbnRlbF9n dWNfZmluZF9odW5nX2NvbnRleHQoZW5naW5lKTsKKworCWludGVsX2d0X2hhbmRsZV9lcnJvcihl bmdpbmUtPmd0LCBlbmdpbmUtPm1hc2ssCisJCQkgICAgICBJOTE1X0VSUk9SX0NBUFRVUkUsCisJ CQkgICAgICAic3RvcHBlZCBoZWFydGJlYXQgb24gJXMiLAorCQkJICAgICAgZW5naW5lLT5uYW1l KTsKIH0KIAogc3RhdGljIHZvaWQgaGVhcnRiZWF0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd3JrKQpA QCAtMTAyLDYgKzEyOCwxMSBAQCBzdGF0aWMgdm9pZCBoZWFydGJlYXQoc3RydWN0IHdvcmtfc3Ry dWN0ICp3cmspCiAJaWYgKGludGVsX2d0X2lzX3dlZGdlZChlbmdpbmUtPmd0KSkKIAkJZ290byBv dXQ7CiAKKwlpZiAoaTkxNV9zY2hlZF9lbmdpbmVfZGlzYWJsZWQoZW5naW5lLT5zY2hlZF9lbmdp bmUpKSB7CisJCXJlc2V0X2VuZ2luZShlbmdpbmUsIGVuZ2luZS0+aGVhcnRiZWF0LnN5c3RvbGUp OworCQlnb3RvIG91dDsKKwl9CisKIAlpZiAoZW5naW5lLT5oZWFydGJlYXQuc3lzdG9sZSkgewog CQlsb25nIGRlbGF5ID0gUkVBRF9PTkNFKGVuZ2luZS0+cHJvcHMuaGVhcnRiZWF0X2ludGVydmFs X21zKTsKIApAQCAtMTM5LDEzICsxNzAsNyBAQCBzdGF0aWMgdm9pZCBoZWFydGJlYXQoc3RydWN0 IHdvcmtfc3RydWN0ICp3cmspCiAJCQllbmdpbmUtPnNjaGVkX2VuZ2luZS0+c2NoZWR1bGUocnEs ICZhdHRyKTsKIAkJCWxvY2FsX2JoX2VuYWJsZSgpOwogCQl9IGVsc2UgewotCQkJaWYgKElTX0VO QUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dFTSkpCi0JCQkJc2hvd19oZWFydGJlYXQocnEs IGVuZ2luZSk7Ci0KLQkJCWludGVsX2d0X2hhbmRsZV9lcnJvcihlbmdpbmUtPmd0LCBlbmdpbmUt Pm1hc2ssCi0JCQkJCSAgICAgIEk5MTVfRVJST1JfQ0FQVFVSRSwKLQkJCQkJICAgICAgInN0b3Bw ZWQgaGVhcnRiZWF0IG9uICVzIiwKLQkJCQkJICAgICAgZW5naW5lLT5uYW1lKTsKKwkJCXJlc2V0 X2VuZ2luZShlbmdpbmUsIHJxKTsKIAkJfQogCiAJCXJxLT5lbWl0dGVkX2ppZmZpZXMgPSBqaWZm aWVzOwpAQCAtMTk0LDYgKzIxOSwyNSBAQCB2b2lkIGludGVsX2VuZ2luZV9wYXJrX2hlYXJ0YmVh dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCWk5MTVfcmVxdWVzdF9wdXQoZmV0 Y2hfYW5kX3plcm8oJmVuZ2luZS0+aGVhcnRiZWF0LnN5c3RvbGUpKTsKIH0KIAordm9pZCBpbnRl bF9ndF91bnBhcmtfaGVhcnRiZWF0cyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQoreworCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKworCWZv cl9lYWNoX2VuZ2luZShlbmdpbmUsIGd0LCBpZCkKKwkJaWYgKGludGVsX2VuZ2luZV9wbV9pc19h d2FrZShlbmdpbmUpKQorCQkJaW50ZWxfZW5naW5lX3VucGFya19oZWFydGJlYXQoZW5naW5lKTsK K30KKwordm9pZCBpbnRlbF9ndF9wYXJrX2hlYXJ0YmVhdHMoc3RydWN0IGludGVsX2d0ICpndCkK K3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJZW51bSBpbnRlbF9lbmdpbmVf aWQgaWQ7CisKKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBndCwgaWQpCisJCWludGVsX2VuZ2lu ZV9wYXJrX2hlYXJ0YmVhdChlbmdpbmUpOworfQorCiB2b2lkIGludGVsX2VuZ2luZV9pbml0X2hl YXJ0YmVhdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJSU5JVF9ERUxBWUVE X1dPUksoJmVuZ2luZS0+aGVhcnRiZWF0LndvcmssIGhlYXJ0YmVhdCk7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfaGVhcnRiZWF0LmgKaW5kZXggYTQ4OGVhM2U4 NGEzLi41ZGE2ZDgwOWE4N2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2VuZ2luZV9oZWFydGJlYXQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9lbmdpbmVfaGVhcnRiZWF0LmgKQEAgLTcsNiArNyw3IEBACiAjZGVmaW5lIElOVEVMX0VOR0lO RV9IRUFSVEJFQVRfSAogCiBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzOworc3RydWN0IGludGVsX2d0 OwogCiB2b2lkIGludGVsX2VuZ2luZV9pbml0X2hlYXJ0YmVhdChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpOwogCkBAIC0xNiw2ICsxNyw5IEBAIGludCBpbnRlbF9lbmdpbmVfc2V0X2hl YXJ0YmVhdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiB2b2lkIGludGVsX2VuZ2lu ZV9wYXJrX2hlYXJ0YmVhdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogdm9pZCBp bnRlbF9lbmdpbmVfdW5wYXJrX2hlYXJ0YmVhdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpOwogCit2b2lkIGludGVsX2d0X3BhcmtfaGVhcnRiZWF0cyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0 KTsKK3ZvaWQgaW50ZWxfZ3RfdW5wYXJrX2hlYXJ0YmVhdHMoc3RydWN0IGludGVsX2d0ICpndCk7 CisKIGludCBpbnRlbF9lbmdpbmVfcHVsc2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KTsKIGludCBpbnRlbF9lbmdpbmVfZmx1c2hfYmFycmllcnMoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf ZW5naW5lX3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlw ZXMuaAppbmRleCAzZjMwOGE5MjBiNTAuLmVkOTFiY2ZmMjBlYiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKQEAgLTIxLDcgKzIxLDYgQEAKICNpbmNs dWRlICJpOTE1X3BtdS5oIgogI2luY2x1ZGUgImk5MTVfcHJpb2xpc3RfdHlwZXMuaCIKICNpbmNs dWRlICJpOTE1X3NlbGZ0ZXN0LmgiCi0jaW5jbHVkZSAiaW50ZWxfYnJlYWRjcnVtYnNfdHlwZXMu aCIKICNpbmNsdWRlICJpbnRlbF9zc2V1LmgiCiAjaW5jbHVkZSAiaW50ZWxfdGltZWxpbmVfdHlw ZXMuaCIKICNpbmNsdWRlICJpbnRlbF91bmNvcmUuaCIKQEAgLTUyLDYgKzUxLDcgQEAgc3RydWN0 IGk5MTVfc2NoZWRfZW5naW5lOwogc3RydWN0IGludGVsX2d0Owogc3RydWN0IGludGVsX3Jpbmc7 CiBzdHJ1Y3QgaW50ZWxfdW5jb3JlOworc3RydWN0IGludGVsX2JyZWFkY3J1bWJzOwogCiB0eXBl ZGVmIHUzMiBpbnRlbF9lbmdpbmVfbWFza190OwogI2RlZmluZSBBTExfRU5HSU5FUyAoKGludGVs X2VuZ2luZV9tYXNrX3QpfjB1bCkKQEAgLTI5OCw2ICsyOTgsOCBAQCBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzIHsKIAkvKiBrZWVwIGEgcmVxdWVzdCBpbiByZXNlcnZlIGZvciBhIFtwbV0gYmFycmll ciB1bmRlciBvb20gKi8KIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0X3Bvb2w7CiAKKwlz dHJ1Y3QgaW50ZWxfY29udGV4dCAqaHVuZ19jZTsKKwogCXN0cnVjdCBsbGlzdF9oZWFkIGJhcnJp ZXJfdGFza3M7CiAKIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqa2VybmVsX2NvbnRleHQ7IC8qIHBp bm5lZCAqLwpAQCAtMzgyLDYgKzM4NCw4IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgewogCXZv aWQJCSgqcGFyaykoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIAl2b2lkCQkoKnVu cGFyaykoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIAorCXZvaWQJCSgqYnVtcF9z ZXJpYWwpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CisKIAl2b2lkCQkoKnNldF9k ZWZhdWx0X3N1Ym1pc3Npb24pKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiAKIAlj b25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dF9vcHMgKmNvcHM7CkBAIC00MTIsNiArNDE2LDEyIEBA IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgewogCiAJdm9pZAkJKCpyZWxlYXNlKShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpOwogCisJLyoKKwkgKiBBZGQgLyByZW1vdmUgcmVxdWVzdCBm cm9tIGVuZ2luZSBhY3RpdmUgdHJhY2tpbmcKKwkgKi8KKwl2b2lkCQkoKmFkZF9hY3RpdmVfcmVx dWVzdCkoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpOworCXZvaWQJCSgqcmVtb3ZlX2FjdGl2ZV9y ZXF1ZXN0KShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSk7CisKIAlzdHJ1Y3QgaW50ZWxfZW5naW5l X2V4ZWNsaXN0cyBleGVjbGlzdHM7CiAKIAkvKgpAQCAtNDMzLDYgKzQ0Myw3IEBAIHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgewogI2RlZmluZSBJOTE1X0VOR0lORV9JU19WSVJUVUFMICAgICAgIEJJ VCg1KQogI2RlZmluZSBJOTE1X0VOR0lORV9IQVNfUkVMQVRJVkVfTU1JTyBCSVQoNikKICNkZWZp bmUgSTkxNV9FTkdJTkVfUkVRVUlSRVNfQ01EX1BBUlNFUiBCSVQoNykKKyNkZWZpbmUgSTkxNV9F TkdJTkVfV0FOVF9GT1JDRURfUFJFRU1QVElPTiBCSVQoOCkKIAl1bnNpZ25lZCBpbnQgZmxhZ3M7 CiAKIAkvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5l X3VzZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV91c2VyLmMKaW5k ZXggODQxNDIxMjdlYmQ4Li44ZjhiZWEwOGU3MzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2VuZ2luZV91c2VyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZW5naW5lX3VzZXIuYwpAQCAtMTEsNiArMTEsNyBAQAogI2luY2x1ZGUgImludGVs X2VuZ2luZS5oIgogI2luY2x1ZGUgImludGVsX2VuZ2luZV91c2VyLmgiCiAjaW5jbHVkZSAiaW50 ZWxfZ3QuaCIKKyNpbmNsdWRlICJ1Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5oIgogCiBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICoKIGludGVsX2VuZ2luZV9sb29rdXBfdXNlcihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwgdTggY2xhc3MsIHU4IGluc3RhbmNlKQpAQCAtMTE1LDYgKzExNiw5 IEBAIHN0YXRpYyB2b2lkIHNldF9zY2hlZHVsZXJfY2FwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKIAkJCWRpc2FibGVkIHw9IChJOTE1X1NDSEVEVUxFUl9DQVBfRU5BQkxFRCB8CiAJ CQkJICAgICBJOTE1X1NDSEVEVUxFUl9DQVBfUFJJT1JJVFkpOwogCisJCWlmIChpbnRlbF91Y191 c2VzX2d1Y19zdWJtaXNzaW9uKCZpOTE1LT5ndC51YykpCisJCQllbmFibGVkIHw9IEk5MTVfU0NI RURVTEVSX0NBUF9TVEFUSUNfUFJJT1JJVFlfTUFQOworCiAJCWZvciAoaSA9IDA7IGkgPCBBUlJB WV9TSVpFKG1hcCk7IGkrKykgewogCQkJaWYgKGVuZ2luZS0+ZmxhZ3MgJiBCSVQobWFwW2ldLmVu Z2luZSkpCiAJCQkJZW5hYmxlZCB8PSBCSVQobWFwW2ldLnNjaGVkKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jCmluZGV4IGJl OTlhNzRlNmUwOS4uZGU1ZjljODZiOWE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmMKQEAgLTExNCw2ICsxMTQsNyBAQAog I2luY2x1ZGUgImdlbjhfZW5naW5lX2NzLmgiCiAjaW5jbHVkZSAiaW50ZWxfYnJlYWRjcnVtYnMu aCIKICNpbmNsdWRlICJpbnRlbF9jb250ZXh0LmgiCisjaW5jbHVkZSAiaW50ZWxfZW5naW5lX2hl YXJ0YmVhdC5oIgogI2luY2x1ZGUgImludGVsX2VuZ2luZV9wbS5oIgogI2luY2x1ZGUgImludGVs X2VuZ2luZV9zdGF0cy5oIgogI2luY2x1ZGUgImludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmgi CkBAIC0xOTksNiArMjAwLDkgQEAgc3RhdGljIHN0cnVjdCB2aXJ0dWFsX2VuZ2luZSAqdG9fdmly dHVhbF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCXJldHVybiBjb250 YWluZXJfb2YoZW5naW5lLCBzdHJ1Y3QgdmlydHVhbF9lbmdpbmUsIGJhc2UpOwogfQogCitzdGF0 aWMgc3RydWN0IGludGVsX2NvbnRleHQgKgorZXhlY2xpc3RzX2NyZWF0ZV92aXJ0dWFsKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKipzaWJsaW5ncywgdW5zaWduZWQgaW50IGNvdW50KTsKKwogc3Rh dGljIHN0cnVjdCBpOTE1X3JlcXVlc3QgKgogX19hY3RpdmVfcmVxdWVzdChjb25zdCBzdHJ1Y3Qg aW50ZWxfdGltZWxpbmUgKiBjb25zdCB0bCwKIAkJIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLApA QCAtMjU4NCwxMSArMjU4OCwyNiBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0c19jb250ZXh0X2FsbG9j KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIAlyZXR1cm4gbHJjX2FsbG9jKGNlLCBjZS0+ZW5n aW5lKTsKIH0KIAorc3RhdGljIHZvaWQgZXhlY2xpc3RzX2NvbnRleHRfY2FuY2VsX3JlcXVlc3Qo c3RydWN0IGludGVsX2NvbnRleHQgKmNlLAorCQkJCQkgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IE5VTEw7CisKKwlpOTE1 X3JlcXVlc3RfYWN0aXZlX2VuZ2luZShycSwgJmVuZ2luZSk7CisKKwlpZiAoZW5naW5lICYmIGlu dGVsX2VuZ2luZV9wdWxzZShlbmdpbmUpKQorCQlpbnRlbF9ndF9oYW5kbGVfZXJyb3IoZW5naW5l LT5ndCwgZW5naW5lLT5tYXNrLCAwLAorCQkJCSAgICAgICJyZXF1ZXN0IGNhbmNlbGxhdGlvbiBi eSAlcyIsCisJCQkJICAgICAgY3VycmVudC0+Y29tbSk7Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgaW50ZWxfY29udGV4dF9vcHMgZXhlY2xpc3RzX2NvbnRleHRfb3BzID0gewogCS5mbGFncyA9 IENPUFNfSEFTX0lORkxJR0hULAogCiAJLmFsbG9jID0gZXhlY2xpc3RzX2NvbnRleHRfYWxsb2Ms CiAKKwkuY2FuY2VsX3JlcXVlc3QgPSBleGVjbGlzdHNfY29udGV4dF9jYW5jZWxfcmVxdWVzdCwK KwogCS5wcmVfcGluID0gZXhlY2xpc3RzX2NvbnRleHRfcHJlX3BpbiwKIAkucGluID0gZXhlY2xp c3RzX2NvbnRleHRfcGluLAogCS51bnBpbiA9IGxyY191bnBpbiwKQEAgLTI1OTksNiArMjYxOCw4 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dF9vcHMgZXhlY2xpc3RzX2NvbnRl eHRfb3BzID0gewogCiAJLnJlc2V0ID0gbHJjX3Jlc2V0LAogCS5kZXN0cm95ID0gbHJjX2Rlc3Ry b3ksCisKKwkuY3JlYXRlX3ZpcnR1YWwgPSBleGVjbGlzdHNfY3JlYXRlX3ZpcnR1YWwsCiB9Owog CiBzdGF0aWMgaW50IGVtaXRfcGRwcyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKQEAgLTMxNTIs NiArMzE3Myw0MiBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfcGFyayhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCiAJY2FuY2VsX3RpbWVyKCZlbmdpbmUtPmV4ZWNsaXN0cy5wcmVlbXB0 KTsKIH0KIAorc3RhdGljIHZvaWQgYWRkX3RvX2VuZ2luZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSkKK3sKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZycS0+ZW5naW5lLT5zY2hlZF9lbmdpbmUtPmxv Y2spOworCWxpc3RfbW92ZV90YWlsKCZycS0+c2NoZWQubGluaywgJnJxLT5lbmdpbmUtPnNjaGVk X2VuZ2luZS0+cmVxdWVzdHMpOworfQorCitzdGF0aWMgdm9pZCByZW1vdmVfZnJvbV9lbmdpbmUo c3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLCAqbG9ja2VkOworCisJLyoKKwkgKiBWaXJ0dWFsIGVuZ2luZXMgY29tcGxpY2F0ZSBhY3F1 aXJpbmcgdGhlIGVuZ2luZSB0aW1lbGluZSBsb2NrLAorCSAqIGFzIHRoZWlyIHJxLT5lbmdpbmUg cG9pbnRlciBpcyBub3Qgc3RhYmxlIHVudGlsIHVuZGVyIHRoYXQKKwkgKiBlbmdpbmUgbG9jay4g VGhlIHNpbXBsZSBwbG95IHdlIHVzZSBpcyB0byB0YWtlIHRoZSBsb2NrIHRoZW4KKwkgKiBjaGVj ayB0aGF0IHRoZSBycSBzdGlsbCBiZWxvbmdzIHRvIHRoZSBuZXdseSBsb2NrZWQgZW5naW5lLgor CSAqLworCWxvY2tlZCA9IFJFQURfT05DRShycS0+ZW5naW5lKTsKKwlzcGluX2xvY2tfaXJxKCZs b2NrZWQtPnNjaGVkX2VuZ2luZS0+bG9jayk7CisJd2hpbGUgKHVubGlrZWx5KGxvY2tlZCAhPSAo ZW5naW5lID0gUkVBRF9PTkNFKHJxLT5lbmdpbmUpKSkpIHsKKwkJc3Bpbl91bmxvY2soJmxvY2tl ZC0+c2NoZWRfZW5naW5lLT5sb2NrKTsKKwkJc3Bpbl9sb2NrKCZlbmdpbmUtPnNjaGVkX2VuZ2lu ZS0+bG9jayk7CisJCWxvY2tlZCA9IGVuZ2luZTsKKwl9CisJbGlzdF9kZWxfaW5pdCgmcnEtPnNj aGVkLmxpbmspOworCisJY2xlYXJfYml0KEk5MTVfRkVOQ0VfRkxBR19QUVVFVUUsICZycS0+ZmVu Y2UuZmxhZ3MpOworCWNsZWFyX2JpdChJOTE1X0ZFTkNFX0ZMQUdfSE9MRCwgJnJxLT5mZW5jZS5m bGFncyk7CisKKwkvKiBQcmV2ZW50IGZ1cnRoZXIgX19hd2FpdF9leGVjdXRpb24oKSByZWdpc3Rl cmluZyBhIGNiLCB0aGVuIGZsdXNoICovCisJc2V0X2JpdChJOTE1X0ZFTkNFX0ZMQUdfQUNUSVZF LCAmcnEtPmZlbmNlLmZsYWdzKTsKKworCXNwaW5fdW5sb2NrX2lycSgmbG9ja2VkLT5zY2hlZF9l bmdpbmUtPmxvY2spOworCisJaTkxNV9yZXF1ZXN0X25vdGlmeV9leGVjdXRlX2NiX2ltbShycSk7 Cit9CisKIHN0YXRpYyBib29sIGNhbl9wcmVlbXB0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIHsKIAlpZiAoR1JBUEhJQ1NfVkVSKGVuZ2luZS0+aTkxNSkgPiA4KQpAQCAtMzI0Niw2 ICszMzAzLDggQEAgbG9naWNhbF9yaW5nX2RlZmF1bHRfdmZ1bmNzKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKIAogCWVuZ2luZS0+Y29wcyA9ICZleGVjbGlzdHNfY29udGV4dF9vcHM7 CiAJZW5naW5lLT5yZXF1ZXN0X2FsbG9jID0gZXhlY2xpc3RzX3JlcXVlc3RfYWxsb2M7CisJZW5n aW5lLT5hZGRfYWN0aXZlX3JlcXVlc3QgPSBhZGRfdG9fZW5naW5lOworCWVuZ2luZS0+cmVtb3Zl X2FjdGl2ZV9yZXF1ZXN0ID0gcmVtb3ZlX2Zyb21fZW5naW5lOwogCiAJZW5naW5lLT5yZXNldC5w cmVwYXJlID0gZXhlY2xpc3RzX3Jlc2V0X3ByZXBhcmU7CiAJZW5naW5lLT5yZXNldC5yZXdpbmQg PSBleGVjbGlzdHNfcmVzZXRfcmV3aW5kOwpAQCAtMzQ1Miw3ICszNTExLDcgQEAgc3RhdGljIHZv aWQgcmN1X3ZpcnR1YWxfY29udGV4dF9kZXN0cm95KHN0cnVjdCB3b3JrX3N0cnVjdCAqd3JrKQog CWludGVsX2NvbnRleHRfZmluaSgmdmUtPmNvbnRleHQpOwogCiAJaWYgKHZlLT5iYXNlLmJyZWFk Y3J1bWJzKQotCQlpbnRlbF9icmVhZGNydW1ic19mcmVlKHZlLT5iYXNlLmJyZWFkY3J1bWJzKTsK KwkJaW50ZWxfYnJlYWRjcnVtYnNfcHV0KHZlLT5iYXNlLmJyZWFkY3J1bWJzKTsKIAlpZiAodmUt PmJhc2Uuc2NoZWRfZW5naW5lKQogCQlpOTE1X3NjaGVkX2VuZ2luZV9wdXQodmUtPmJhc2Uuc2No ZWRfZW5naW5lKTsKIAlpbnRlbF9lbmdpbmVfZnJlZV9yZXF1ZXN0X3Bvb2woJnZlLT5iYXNlKTsK QEAgLTM1NDksMTEgKzM2MDgsMjQgQEAgc3RhdGljIHZvaWQgdmlydHVhbF9jb250ZXh0X2V4aXQo c3RydWN0IGludGVsX2NvbnRleHQgKmNlKQogCQlpbnRlbF9lbmdpbmVfcG1fcHV0KHZlLT5zaWJs aW5nc1tuXSk7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoKK3ZpcnR1YWxf Z2V0X3NpYmxpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1bnNpZ25lZCBpbnQg c2libGluZykKK3sKKwlzdHJ1Y3QgdmlydHVhbF9lbmdpbmUgKnZlID0gdG9fdmlydHVhbF9lbmdp bmUoZW5naW5lKTsKKworCWlmIChzaWJsaW5nID49IHZlLT5udW1fc2libGluZ3MpCisJCXJldHVy biBOVUxMOworCisJcmV0dXJuIHZlLT5zaWJsaW5nc1tzaWJsaW5nXTsKK30KKwogc3RhdGljIGNv bnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0X29wcyB2aXJ0dWFsX2NvbnRleHRfb3BzID0gewogCS5m bGFncyA9IENPUFNfSEFTX0lORkxJR0hULAogCiAJLmFsbG9jID0gdmlydHVhbF9jb250ZXh0X2Fs bG9jLAogCisJLmNhbmNlbF9yZXF1ZXN0ID0gZXhlY2xpc3RzX2NvbnRleHRfY2FuY2VsX3JlcXVl c3QsCisKIAkucHJlX3BpbiA9IHZpcnR1YWxfY29udGV4dF9wcmVfcGluLAogCS5waW4gPSB2aXJ0 dWFsX2NvbnRleHRfcGluLAogCS51bnBpbiA9IGxyY191bnBpbiwKQEAgLTM1NjMsNiArMzYzNSw4 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dF9vcHMgdmlydHVhbF9jb250ZXh0 X29wcyA9IHsKIAkuZXhpdCA9IHZpcnR1YWxfY29udGV4dF9leGl0LAogCiAJLmRlc3Ryb3kgPSB2 aXJ0dWFsX2NvbnRleHRfZGVzdHJveSwKKworCS5nZXRfc2libGluZyA9IHZpcnR1YWxfZ2V0X3Np YmxpbmcsCiB9OwogCiBzdGF0aWMgaW50ZWxfZW5naW5lX21hc2tfdCB2aXJ0dWFsX3N1Ym1pc3Np b25fbWFzayhzdHJ1Y3QgdmlydHVhbF9lbmdpbmUgKnZlKQpAQCAtMzcxMSwyMCArMzc4NSwxMyBA QCBzdGF0aWMgdm9pZCB2aXJ0dWFsX3N1Ym1pdF9yZXF1ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxKQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZlLT5iYXNlLnNjaGVkX2VuZ2luZS0+bG9j aywgZmxhZ3MpOwogfQogCi1zdHJ1Y3QgaW50ZWxfY29udGV4dCAqCi1pbnRlbF9leGVjbGlzdHNf Y3JlYXRlX3ZpcnR1YWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqKnNpYmxpbmdzLAotCQkJICAg ICAgIHVuc2lnbmVkIGludCBjb3VudCkKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqCitl eGVjbGlzdHNfY3JlYXRlX3ZpcnR1YWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqKnNpYmxpbmdz LCB1bnNpZ25lZCBpbnQgY291bnQpCiB7CiAJc3RydWN0IHZpcnR1YWxfZW5naW5lICp2ZTsKIAl1 bnNpZ25lZCBpbnQgbjsKIAlpbnQgZXJyOwogCi0JaWYgKGNvdW50ID09IDApCi0JCXJldHVybiBF UlJfUFRSKC1FSU5WQUwpOwotCi0JaWYgKGNvdW50ID09IDEpCi0JCXJldHVybiBpbnRlbF9jb250 ZXh0X2NyZWF0ZShzaWJsaW5nc1swXSk7Ci0KIAl2ZSA9IGt6YWxsb2Moc3RydWN0X3NpemUodmUs IHNpYmxpbmdzLCBjb3VudCksIEdGUF9LRVJORUwpOwogCWlmICghdmUpCiAJCXJldHVybiBFUlJf UFRSKC1FTk9NRU0pOwpAQCAtMzgzNiw2ICszOTAzLDggQEAgaW50ZWxfZXhlY2xpc3RzX2NyZWF0 ZV92aXJ0dWFsKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKipzaWJsaW5ncywKIAkJCSAidiVkeCVk IiwgdmUtPmJhc2UuY2xhc3MsIGNvdW50KTsKIAkJdmUtPmJhc2UuY29udGV4dF9zaXplID0gc2li bGluZy0+Y29udGV4dF9zaXplOwogCisJCXZlLT5iYXNlLmFkZF9hY3RpdmVfcmVxdWVzdCA9IHNp YmxpbmctPmFkZF9hY3RpdmVfcmVxdWVzdDsKKwkJdmUtPmJhc2UucmVtb3ZlX2FjdGl2ZV9yZXF1 ZXN0ID0gc2libGluZy0+cmVtb3ZlX2FjdGl2ZV9yZXF1ZXN0OwogCQl2ZS0+YmFzZS5lbWl0X2Ji X3N0YXJ0ID0gc2libGluZy0+ZW1pdF9iYl9zdGFydDsKIAkJdmUtPmJhc2UuZW1pdF9mbHVzaCA9 IHNpYmxpbmctPmVtaXRfZmx1c2g7CiAJCXZlLT5iYXNlLmVtaXRfaW5pdF9icmVhZGNydW1iID0g c2libGluZy0+ZW1pdF9pbml0X2JyZWFkY3J1bWI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24uaAppbmRleCBhZDRmM2UxYTBmZGUu LmExYWE5MmM5ODNhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf ZXhlY2xpc3RzX3N1Ym1pc3Npb24uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9leGVjbGlzdHNfc3VibWlzc2lvbi5oCkBAIC0zMiwxMCArMzIsNiBAQCB2b2lkIGludGVsX2V4 ZWNsaXN0c19zaG93X3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJ CQkJCQlpbnQgaW5kZW50KSwKIAkJCQkgICB1bnNpZ25lZCBpbnQgbWF4KTsKIAotc3RydWN0IGlu dGVsX2NvbnRleHQgKgotaW50ZWxfZXhlY2xpc3RzX2NyZWF0ZV92aXJ0dWFsKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKipzaWJsaW5ncywKLQkJCSAgICAgICB1bnNpZ25lZCBpbnQgY291bnQpOwot CiBib29sCiBpbnRlbF9lbmdpbmVfaW5fZXhlY2xpc3RzX3N1Ym1pc3Npb25fbW9kZShjb25zdCBz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf Z3QuYwppbmRleCA0NjQ0MTYwN2QxOGIuLmE2NGFhNDNmN2NkOSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9ndC5jCkBAIC02NTQsNiArNjU0LDggQEAgaW50IGludGVsX2d0X2luaXQoc3RydWN0 IGludGVsX2d0ICpndCkKIAlpZiAoZXJyKQogCQlnb3RvIGVycl9ndDsKIAorCWludGVsX3VjX2lu aXRfbGF0ZSgmZ3QtPnVjKTsKKwogCWVyciA9IGk5MTVfaW5qZWN0X3Byb2JlX2Vycm9yKGd0LT5p OTE1LCAtRUlPKTsKIAlpZiAoZXJyKQogCQlnb3RvIGVycl9ndDsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9ndF9wbS5jCmluZGV4IGQ4NjgyNTQzNzUxNi4uY2Q3Yjk2MDA1ZDI5IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9wbS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmMKQEAgLTE3MCw4ICsxNzAsNiBAQCBzdGF0aWMg dm9pZCBndF9zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBib29sIGZvcmNlKQogCWlmIChp bnRlbF9ndF9pc193ZWRnZWQoZ3QpKQogCQlpbnRlbF9ndF91bnNldF93ZWRnZWQoZ3QpOwogCi0J aW50ZWxfdWNfc2FuaXRpemUoJmd0LT51Yyk7Ci0KIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBn dCwgaWQpCiAJCWlmIChlbmdpbmUtPnJlc2V0LnByZXBhcmUpCiAJCQllbmdpbmUtPnJlc2V0LnBy ZXBhcmUoZW5naW5lKTsKQEAgLTE4Nyw2ICsxODUsOCBAQCBzdGF0aWMgdm9pZCBndF9zYW5pdGl6 ZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBib29sIGZvcmNlKQogCQkJX19pbnRlbF9lbmdpbmVfcmVz ZXQoZW5naW5lLCBmYWxzZSk7CiAJfQogCisJaW50ZWxfdWNfcmVzZXQoJmd0LT51YywgZmFsc2Up OworCiAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZ3QsIGlkKQogCQlpZiAoZW5naW5lLT5yZXNl dC5maW5pc2gpCiAJCQllbmdpbmUtPnJlc2V0LmZpbmlzaChlbmdpbmUpOwpAQCAtMjM5LDYgKzIz OSw4IEBAIGludCBpbnRlbF9ndF9yZXN1bWUoc3RydWN0IGludGVsX2d0ICpndCkKIAkJZ290byBl cnJfd2VkZ2VkOwogCX0KIAorCWludGVsX3VjX3Jlc2V0X2ZpbmlzaCgmZ3QtPnVjKTsKKwogCWlu dGVsX3Jwc19lbmFibGUoJmd0LT5ycHMpOwogCWludGVsX2xsY19lbmFibGUoJmd0LT5sbGMpOwog CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYwppbmRleCA5NTg2NjEzZWUzOTkuLjkx MjAwYzQzOTUxZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVz ZXQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jCkBAIC0yMiw3 ICsyMiw2IEBACiAjaW5jbHVkZSAiaW50ZWxfcmVzZXQuaCIKIAogI2luY2x1ZGUgInVjL2ludGVs X2d1Yy5oIgotI2luY2x1ZGUgInVjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmgiCiAKICNkZWZpbmUg UkVTRVRfTUFYX1JFVFJJRVMgMwogCkBAIC0zOSwyMSArMzgsNiBAQCBzdGF0aWMgdm9pZCBybXdf Y2xlYXJfZncoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLCBpOTE1X3JlZ190IHJlZywgdTMy IGNscikKIAlpbnRlbF91bmNvcmVfcm13X2Z3KHVuY29yZSwgcmVnLCBjbHIsIDApOwogfQogCi1z dGF0aWMgdm9pZCBza2lwX2NvbnRleHQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCi17Ci0Jc3Ry dWN0IGludGVsX2NvbnRleHQgKmh1bmdfY3R4ID0gcnEtPmNvbnRleHQ7Ci0KLQlsaXN0X2Zvcl9l YWNoX2VudHJ5X2Zyb21fcmN1KHJxLCAmaHVuZ19jdHgtPnRpbWVsaW5lLT5yZXF1ZXN0cywgbGlu aykgewotCQlpZiAoIWk5MTVfcmVxdWVzdF9pc19hY3RpdmUocnEpKQotCQkJcmV0dXJuOwotCi0J CWlmIChycS0+Y29udGV4dCA9PSBodW5nX2N0eCkgewotCQkJaTkxNV9yZXF1ZXN0X3NldF9lcnJv cl9vbmNlKHJxLCAtRUlPKTsKLQkJCV9faTkxNV9yZXF1ZXN0X3NraXAocnEpOwotCQl9Ci0JfQot fQotCiBzdGF0aWMgdm9pZCBjbGllbnRfbWFya19ndWlsdHkoc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eCwgYm9vbCBiYW5uZWQpCiB7CiAJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAq ZmlsZV9wcml2ID0gY3R4LT5maWxlX3ByaXY7CkBAIC04OCwxMCArNzIsOCBAQCBzdGF0aWMgYm9v bCBtYXJrX2d1aWx0eShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAlib29sIGJhbm5lZDsKIAlp bnQgaTsKIAotCWlmIChpbnRlbF9jb250ZXh0X2lzX2Nsb3NlZChycS0+Y29udGV4dCkpIHsKLQkJ aW50ZWxfY29udGV4dF9zZXRfYmFubmVkKHJxLT5jb250ZXh0KTsKKwlpZiAoaW50ZWxfY29udGV4 dF9pc19jbG9zZWQocnEtPmNvbnRleHQpKQogCQlyZXR1cm4gdHJ1ZTsKLQl9CiAKIAlyY3VfcmVh ZF9sb2NrKCk7CiAJY3R4ID0gcmN1X2RlcmVmZXJlbmNlKHJxLT5jb250ZXh0LT5nZW1fY29udGV4 dCk7CkBAIC0xMjMsMTEgKzEwNSw5IEBAIHN0YXRpYyBib29sIG1hcmtfZ3VpbHR5KHN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxKQogCWJhbm5lZCA9ICFpOTE1X2dlbV9jb250ZXh0X2lzX3JlY292ZXJh YmxlKGN0eCk7CiAJaWYgKHRpbWVfYmVmb3JlKGppZmZpZXMsIHByZXZfaGFuZyArIENPTlRFWFRf RkFTVF9IQU5HX0pJRkZJRVMpKQogCQliYW5uZWQgPSB0cnVlOwotCWlmIChiYW5uZWQpIHsKKwlp ZiAoYmFubmVkKQogCQlkcm1fZGJnKCZjdHgtPmk5MTUtPmRybSwgImNvbnRleHQgJXM6IGd1aWx0 eSAlZCwgYmFubmVkXG4iLAogCQkJY3R4LT5uYW1lLCBhdG9taWNfcmVhZCgmY3R4LT5ndWlsdHlf Y291bnQpKTsKLQkJaW50ZWxfY29udGV4dF9zZXRfYmFubmVkKHJxLT5jb250ZXh0KTsKLQl9CiAK IAljbGllbnRfbWFya19ndWlsdHkoY3R4LCBiYW5uZWQpOwogCkBAIC0xNDksNiArMTI5LDggQEAg c3RhdGljIHZvaWQgbWFya19pbm5vY2VudChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAogdm9p ZCBfX2k5MTVfcmVxdWVzdF9yZXNldChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgYm9vbCBndWls dHkpCiB7CisJYm9vbCBiYW5uZWQgPSBmYWxzZTsKKwogCVJRX1RSQUNFKHJxLCAiZ3VpbHR5PyAl c1xuIiwgeWVzbm8oZ3VpbHR5KSk7CiAJR0VNX0JVR19PTihfX2k5MTVfcmVxdWVzdF9pc19jb21w bGV0ZShycSkpOwogCkBAIC0xNTYsMTMgKzEzOCwxNSBAQCB2b2lkIF9faTkxNV9yZXF1ZXN0X3Jl c2V0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBib29sIGd1aWx0eSkKIAlpZiAoZ3VpbHR5KSB7 CiAJCWk5MTVfcmVxdWVzdF9zZXRfZXJyb3Jfb25jZShycSwgLUVJTyk7CiAJCV9faTkxNV9yZXF1 ZXN0X3NraXAocnEpOwotCQlpZiAobWFya19ndWlsdHkocnEpKQotCQkJc2tpcF9jb250ZXh0KHJx KTsKKwkJYmFubmVkID0gbWFya19ndWlsdHkocnEpOwogCX0gZWxzZSB7CiAJCWk5MTVfcmVxdWVz dF9zZXRfZXJyb3Jfb25jZShycSwgLUVBR0FJTik7CiAJCW1hcmtfaW5ub2NlbnQocnEpOwogCX0K IAlyY3VfcmVhZF91bmxvY2soKTsKKworCWlmIChiYW5uZWQpCisJCWludGVsX2NvbnRleHRfYmFu KHJxLT5jb250ZXh0LCBycSk7CiB9CiAKIHN0YXRpYyBib29sIGk5MTVfaW5fcmVzZXQoc3RydWN0 IHBjaV9kZXYgKnBkZXYpCkBAIC04MzIsNiArODE2LDggQEAgc3RhdGljIGludCBndF9yZXNldChz dHJ1Y3QgaW50ZWxfZ3QgKmd0LCBpbnRlbF9lbmdpbmVfbWFza190IHN0YWxsZWRfbWFzaykKIAkJ X19pbnRlbF9lbmdpbmVfcmVzZXQoZW5naW5lLCBzdGFsbGVkX21hc2sgJiBlbmdpbmUtPm1hc2sp OwogCWxvY2FsX2JoX2VuYWJsZSgpOwogCisJaW50ZWxfdWNfcmVzZXQoJmd0LT51YywgdHJ1ZSk7 CisKIAlpbnRlbF9nZ3R0X3Jlc3RvcmVfZmVuY2VzKGd0LT5nZ3R0KTsKIAogCXJldHVybiBlcnI7 CkBAIC04NTYsNiArODQyLDggQEAgc3RhdGljIHZvaWQgcmVzZXRfZmluaXNoKHN0cnVjdCBpbnRl bF9ndCAqZ3QsIGludGVsX2VuZ2luZV9tYXNrX3QgYXdha2UpCiAJCWlmIChhd2FrZSAmIGVuZ2lu ZS0+bWFzaykKIAkJCWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKIAl9CisKKwlpbnRlbF91 Y19yZXNldF9maW5pc2goJmd0LT51Yyk7CiB9CiAKIHN0YXRpYyB2b2lkIG5vcF9zdWJtaXRfcmVx dWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQpAQCAtOTA5LDYgKzg5Nyw3IEBAIHN0 YXRpYyB2b2lkIF9faW50ZWxfZ3Rfc2V0X3dlZGdlZChzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCWZv cl9lYWNoX2VuZ2luZShlbmdpbmUsIGd0LCBpZCkKIAkJaWYgKGVuZ2luZS0+cmVzZXQuY2FuY2Vs KQogCQkJZW5naW5lLT5yZXNldC5jYW5jZWwoZW5naW5lKTsKKwlpbnRlbF91Y19jYW5jZWxfcmVx dWVzdHMoJmd0LT51Yyk7CiAJbG9jYWxfYmhfZW5hYmxlKCk7CiAKIAlyZXNldF9maW5pc2goZ3Qs IGF3YWtlKTsKQEAgLTExOTcsNiArMTE4Niw5IEBAIGludCBfX2ludGVsX2VuZ2luZV9yZXNldF9i aChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGNvbnN0IGNoYXIgKm1zZykKIAlFTkdJ TkVfVFJBQ0UoZW5naW5lLCAiZmxhZ3M9JWx4XG4iLCBndC0+cmVzZXQuZmxhZ3MpOwogCUdFTV9C VUdfT04oIXRlc3RfYml0KEk5MTVfUkVTRVRfRU5HSU5FICsgZW5naW5lLT5pZCwgJmd0LT5yZXNl dC5mbGFncykpOwogCisJaWYgKGludGVsX2VuZ2luZV91c2VzX2d1YyhlbmdpbmUpKQorCQlyZXR1 cm4gLUVOT0RFVjsKKwogCWlmICghaW50ZWxfZW5naW5lX3BtX2dldF9pZl9hd2FrZShlbmdpbmUp KQogCQlyZXR1cm4gMDsKIApAQCAtMTIwNywxMyArMTE5OSwxMCBAQCBpbnQgX19pbnRlbF9lbmdp bmVfcmVzZXRfYmgoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBjb25zdCBjaGFyICpt c2cpCiAJCQkgICAiUmVzZXR0aW5nICVzIGZvciAlc1xuIiwgZW5naW5lLT5uYW1lLCBtc2cpOwog CWF0b21pY19pbmMoJmVuZ2luZS0+aTkxNS0+Z3B1X2Vycm9yLnJlc2V0X2VuZ2luZV9jb3VudFtl bmdpbmUtPnVhYmlfY2xhc3NdKTsKIAotCWlmIChpbnRlbF9lbmdpbmVfdXNlc19ndWMoZW5naW5l KSkKLQkJcmV0ID0gaW50ZWxfZ3VjX3Jlc2V0X2VuZ2luZSgmZW5naW5lLT5ndC0+dWMuZ3VjLCBl bmdpbmUpOwotCWVsc2UKLQkJcmV0ID0gaW50ZWxfZ3RfcmVzZXRfZW5naW5lKGVuZ2luZSk7CisJ cmV0ID0gaW50ZWxfZ3RfcmVzZXRfZW5naW5lKGVuZ2luZSk7CiAJaWYgKHJldCkgewogCQkvKiBJ ZiB3ZSBmYWlsIGhlcmUsIHdlIGV4cGVjdCB0byBmYWxsYmFjayB0byBhIGdsb2JhbCByZXNldCAq LwotCQlFTkdJTkVfVFJBQ0UoZW5naW5lLCAiRmFpbGVkIHRvIHJlc2V0LCBlcnI6ICVkXG4iLCBy ZXQpOworCQlFTkdJTkVfVFJBQ0UoZW5naW5lLCAiRmFpbGVkIHRvIHJlc2V0ICVzLCBlcnI6ICVk XG4iLCBlbmdpbmUtPm5hbWUsIHJldCk7CiAJCWdvdG8gb3V0OwogCX0KIApAQCAtMTM0Nyw3ICsx MzM2LDggQEAgdm9pZCBpbnRlbF9ndF9oYW5kbGVfZXJyb3Ioc3RydWN0IGludGVsX2d0ICpndCwK IAkgKiBUcnkgZW5naW5lIHJlc2V0IHdoZW4gYXZhaWxhYmxlLiBXZSBmYWxsIGJhY2sgdG8gZnVs bCByZXNldCBpZgogCSAqIHNpbmdsZSByZXNldCBmYWlscy4KIAkgKi8KLQlpZiAoaW50ZWxfaGFz X3Jlc2V0X2VuZ2luZShndCkgJiYgIWludGVsX2d0X2lzX3dlZGdlZChndCkpIHsKKwlpZiAoIWlu dGVsX3VjX3VzZXNfZ3VjX3N1Ym1pc3Npb24oJmd0LT51YykgJiYKKwkgICAgaW50ZWxfaGFzX3Jl c2V0X2VuZ2luZShndCkgJiYgIWludGVsX2d0X2lzX3dlZGdlZChndCkpIHsKIAkJbG9jYWxfYmhf ZGlzYWJsZSgpOwogCQlmb3JfZWFjaF9lbmdpbmVfbWFza2VkKGVuZ2luZSwgZ3QsIGVuZ2luZV9t YXNrLCB0bXApIHsKIAkJCUJVSUxEX0JVR19PTihJOTE1X1JFU0VUX01PREVTRVQgPj0gSTkxNV9S RVNFVF9FTkdJTkUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf cmluZ19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nX3N1 Ym1pc3Npb24uYwppbmRleCA1YzRkMjA0ZDA3Y2MuLjI5NThlMmZhZTM4MCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmMKQEAgLTE2LDYgKzE2 LDcgQEAKICNpbmNsdWRlICJpbnRlbF9yZXNldC5oIgogI2luY2x1ZGUgImludGVsX3JpbmcuaCIK ICNpbmNsdWRlICJzaG1lbV91dGlscy5oIgorI2luY2x1ZGUgImludGVsX2VuZ2luZV9oZWFydGJl YXQuaCIKIAogLyogUm91Z2ggZXN0aW1hdGUgb2YgdGhlIHR5cGljYWwgcmVxdWVzdCBzaXplLCBw ZXJmb3JtaW5nIGEgZmx1c2gsCiAgKiBzZXQtY29udGV4dCBhbmQgdGhlbiBlbWl0dGluZyB0aGUg YmF0Y2guCkBAIC01ODYsOSArNTg3LDQ0IEBAIHN0YXRpYyB2b2lkIHJpbmdfY29udGV4dF9yZXNl dChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAJY2xlYXJfYml0KENPTlRFWFRfVkFMSURfQklU LCAmY2UtPmZsYWdzKTsKIH0KIAorc3RhdGljIHZvaWQgcmluZ19jb250ZXh0X2JhbihzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY2UsCisJCQkgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQorewor CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKworCWlmICghcnEgfHwgIWk5MTVfcmVx dWVzdF9pc19hY3RpdmUocnEpKQorCQlyZXR1cm47CisKKwllbmdpbmUgPSBycS0+ZW5naW5lOwor CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmVuZ2luZS0+c2NoZWRfZW5naW5lLT5sb2NrKTsKKwlsaXN0 X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlKHJxLCAmZW5naW5lLT5zY2hlZF9lbmdpbmUtPnJlcXVl c3RzLAorCQkJCSAgICAgc2NoZWQubGluaykKKwkJaWYgKHJxLT5jb250ZXh0ID09IGNlKSB7CisJ CQlpOTE1X3JlcXVlc3Rfc2V0X2Vycm9yX29uY2UocnEsIC1FSU8pOworCQkJX19pOTE1X3JlcXVl c3Rfc2tpcChycSk7CisJCX0KK30KKworc3RhdGljIHZvaWQgcmluZ19jb250ZXh0X2NhbmNlbF9y ZXF1ZXN0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKKwkJCQkJc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gTlVMTDsKKworCWk5 MTVfcmVxdWVzdF9hY3RpdmVfZW5naW5lKHJxLCAmZW5naW5lKTsKKworCWlmIChlbmdpbmUgJiYg aW50ZWxfZW5naW5lX3B1bHNlKGVuZ2luZSkpCisJCWludGVsX2d0X2hhbmRsZV9lcnJvcihlbmdp bmUtPmd0LCBlbmdpbmUtPm1hc2ssIDAsCisJCQkJICAgICAgInJlcXVlc3QgY2FuY2VsbGF0aW9u IGJ5ICVzIiwKKwkJCQkgICAgICBjdXJyZW50LT5jb21tKTsKK30KKwogc3RhdGljIGNvbnN0IHN0 cnVjdCBpbnRlbF9jb250ZXh0X29wcyByaW5nX2NvbnRleHRfb3BzID0gewogCS5hbGxvYyA9IHJp bmdfY29udGV4dF9hbGxvYywKIAorCS5jYW5jZWxfcmVxdWVzdCA9IHJpbmdfY29udGV4dF9jYW5j ZWxfcmVxdWVzdCwKKworCS5iYW4gPSByaW5nX2NvbnRleHRfYmFuLAorCiAJLnByZV9waW4gPSBy aW5nX2NvbnRleHRfcHJlX3BpbiwKIAkucGluID0gcmluZ19jb250ZXh0X3BpbiwKIAkudW5waW4g PSByaW5nX2NvbnRleHRfdW5waW4sCkBAIC0xMDQ3LDYgKzEwODMsMjUgQEAgc3RhdGljIHZvaWQg c2V0dXBfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAl9CiB9CiAKK3N0YXRp YyB2b2lkIGFkZF90b19lbmdpbmUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJbG9ja2Rl cF9hc3NlcnRfaGVsZCgmcnEtPmVuZ2luZS0+c2NoZWRfZW5naW5lLT5sb2NrKTsKKwlsaXN0X21v dmVfdGFpbCgmcnEtPnNjaGVkLmxpbmssICZycS0+ZW5naW5lLT5zY2hlZF9lbmdpbmUtPnJlcXVl c3RzKTsKK30KKworc3RhdGljIHZvaWQgcmVtb3ZlX2Zyb21fZW5naW5lKHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxKQoreworCXNwaW5fbG9ja19pcnEoJnJxLT5lbmdpbmUtPnNjaGVkX2VuZ2luZS0+ bG9jayk7CisJbGlzdF9kZWxfaW5pdCgmcnEtPnNjaGVkLmxpbmspOworCisJLyogUHJldmVudCBm dXJ0aGVyIF9fYXdhaXRfZXhlY3V0aW9uKCkgcmVnaXN0ZXJpbmcgYSBjYiwgdGhlbiBmbHVzaCAq LworCXNldF9iaXQoSTkxNV9GRU5DRV9GTEFHX0FDVElWRSwgJnJxLT5mZW5jZS5mbGFncyk7CisK KwlzcGluX3VubG9ja19pcnEoJnJxLT5lbmdpbmUtPnNjaGVkX2VuZ2luZS0+bG9jayk7CisKKwlp OTE1X3JlcXVlc3Rfbm90aWZ5X2V4ZWN1dGVfY2JfaW1tKHJxKTsKK30KKwogc3RhdGljIHZvaWQg c2V0dXBfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKQEAgLTEwNjQsNiArMTExOSw5 IEBAIHN0YXRpYyB2b2lkIHNldHVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCiAJZW5naW5lLT5yZXNldC5jYW5jZWwgPSByZXNldF9jYW5jZWw7CiAJZW5naW5lLT5yZXNl dC5maW5pc2ggPSByZXNldF9maW5pc2g7CiAKKwllbmdpbmUtPmFkZF9hY3RpdmVfcmVxdWVzdCA9 IGFkZF90b19lbmdpbmU7CisJZW5naW5lLT5yZW1vdmVfYWN0aXZlX3JlcXVlc3QgPSByZW1vdmVf ZnJvbV9lbmdpbmU7CisKIAllbmdpbmUtPmNvcHMgPSAmcmluZ19jb250ZXh0X29wczsKIAllbmdp bmUtPnJlcXVlc3RfYWxsb2MgPSByaW5nX3JlcXVlc3RfYWxsb2M7CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jwcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfcnBzLmMKaW5kZXggMDZlOWE4ZWQ0ZTAzLi4wYzhlN2YyYjA2ZjAgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jwcy5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX3Jwcy5jCkBAIC0xODc3LDYgKzE4NzcsMTAgQEAgdm9pZCBpbnRl bF9ycHNfaW5pdChzdHJ1Y3QgaW50ZWxfcnBzICpycHMpCiAKIAlpZiAoR1JBUEhJQ1NfVkVSKGk5 MTUpID49IDggJiYgR1JBUEhJQ1NfVkVSKGk5MTUpIDwgMTEpCiAJCXJwcy0+cG1faW50cm1za19t YnogfD0gR0VOOF9QTUlOVFJfRElTQUJMRV9SRURJUkVDVF9UT19HVUM7CisKKwkvKiBHdUMgbmVl ZHMgQVJBVCBleHBpcmVkIGludGVycnVwdCB1bm1hc2tlZCAqLworCWlmIChpbnRlbF91Y191c2Vz X2d1Y19zdWJtaXNzaW9uKCZycHNfdG9fZ3QocnBzKS0+dWMpKQorCQlycHMtPnBtX2ludHJtc2tf bWJ6IHw9IEFSQVRfRVhQSVJFRF9JTlRSTVNLOwogfQogCiB2b2lkIGludGVsX3Jwc19zYW5pdGl6 ZShzdHJ1Y3QgaW50ZWxfcnBzICpycHMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF93b3JrYXJvdW5kcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf d29ya2Fyb3VuZHMuYwppbmRleCAzYWE1Y2UzY2RhOGIuLjkxNzNkZjU5ODIxYSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kcy5jCkBAIC0xNTAsMTMgKzE1MCwx NCBAQCBzdGF0aWMgdm9pZCBfd2FfYWRkKHN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCwgY29uc3Qg c3RydWN0IGk5MTVfd2EgKndhKQogfQogCiBzdGF0aWMgdm9pZCB3YV9hZGQoc3RydWN0IGk5MTVf d2FfbGlzdCAqd2FsLCBpOTE1X3JlZ190IHJlZywKLQkJICAgdTMyIGNsZWFyLCB1MzIgc2V0LCB1 MzIgcmVhZF9tYXNrKQorCQkgICB1MzIgY2xlYXIsIHUzMiBzZXQsIHUzMiByZWFkX21hc2ssIGJv b2wgbWFza2VkX3JlZykKIHsKIAlzdHJ1Y3QgaTkxNV93YSB3YSA9IHsKIAkJLnJlZyAgPSByZWcs CiAJCS5jbHIgID0gY2xlYXIsCiAJCS5zZXQgID0gc2V0LAogCQkucmVhZCA9IHJlYWRfbWFzaywK KwkJLm1hc2tlZF9yZWcgPSBtYXNrZWRfcmVnLAogCX07CiAKIAlfd2FfYWRkKHdhbCwgJndhKTsK QEAgLTE2NSw3ICsxNjYsNyBAQCBzdGF0aWMgdm9pZCB3YV9hZGQoc3RydWN0IGk5MTVfd2FfbGlz dCAqd2FsLCBpOTE1X3JlZ190IHJlZywKIHN0YXRpYyB2b2lkCiB3YV93cml0ZV9jbHJfc2V0KHN0 cnVjdCBpOTE1X3dhX2xpc3QgKndhbCwgaTkxNV9yZWdfdCByZWcsIHUzMiBjbGVhciwgdTMyIHNl dCkKIHsKLQl3YV9hZGQod2FsLCByZWcsIGNsZWFyLCBzZXQsIGNsZWFyKTsKKwl3YV9hZGQod2Fs LCByZWcsIGNsZWFyLCBzZXQsIGNsZWFyLCBmYWxzZSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0y MDAsMjAgKzIwMSwyMCBAQCB3YV93cml0ZV9jbHIoc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsLCBp OTE1X3JlZ190IHJlZywgdTMyIGNscikKIHN0YXRpYyB2b2lkCiB3YV9tYXNrZWRfZW4oc3RydWN0 IGk5MTVfd2FfbGlzdCAqd2FsLCBpOTE1X3JlZ190IHJlZywgdTMyIHZhbCkKIHsKLQl3YV9hZGQo d2FsLCByZWcsIDAsIF9NQVNLRURfQklUX0VOQUJMRSh2YWwpLCB2YWwpOworCXdhX2FkZCh3YWws IHJlZywgMCwgX01BU0tFRF9CSVRfRU5BQkxFKHZhbCksIHZhbCwgdHJ1ZSk7CiB9CiAKIHN0YXRp YyB2b2lkCiB3YV9tYXNrZWRfZGlzKHN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCwgaTkxNV9yZWdf dCByZWcsIHUzMiB2YWwpCiB7Ci0Jd2FfYWRkKHdhbCwgcmVnLCAwLCBfTUFTS0VEX0JJVF9ESVNB QkxFKHZhbCksIHZhbCk7CisJd2FfYWRkKHdhbCwgcmVnLCAwLCBfTUFTS0VEX0JJVF9ESVNBQkxF KHZhbCksIHZhbCwgdHJ1ZSk7CiB9CiAKIHN0YXRpYyB2b2lkCiB3YV9tYXNrZWRfZmllbGRfc2V0 KHN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCwgaTkxNV9yZWdfdCByZWcsCiAJCSAgICB1MzIgbWFz aywgdTMyIHZhbCkKIHsKLQl3YV9hZGQod2FsLCByZWcsIDAsIF9NQVNLRURfRklFTEQobWFzaywg dmFsKSwgbWFzayk7CisJd2FfYWRkKHdhbCwgcmVnLCAwLCBfTUFTS0VEX0ZJRUxEKG1hc2ssIHZh bCksIG1hc2ssIHRydWUpOwogfQogCiBzdGF0aWMgdm9pZCBnZW42X2N0eF93b3JrYXJvdW5kc19p bml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKQEAgLTUzMywxMCArNTM0LDEwIEBA IHN0YXRpYyB2b2lkIGljbF9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUsCiAJd2FfbWFza2VkX2VuKHdhbCwgSUNMX0hEQ19NT0RFLCBIRENfRk9SQ0Vf Tk9OX0NPSEVSRU5UKTsKIAogCS8qIFdhRW5hYmxlRmxvYXRCbGVuZE9wdGltaXphdGlvbjppY2wg Ki8KLQl3YV93cml0ZV9jbHJfc2V0KHdhbCwKLQkJCSBHRU4xMF9DQUNIRV9NT0RFX1NTLAotCQkJ IDAsIC8qIHdyaXRlLW9ubHksIHNvIHNraXAgdmFsaWRhdGlvbiAqLwotCQkJIF9NQVNLRURfQklU X0VOQUJMRShGTE9BVF9CTEVORF9PUFRJTUlaQVRJT05fRU5BQkxFKSk7CisJd2FfYWRkKHdhbCwg R0VOMTBfQ0FDSEVfTU9ERV9TUywgMCwKKwkgICAgICAgX01BU0tFRF9CSVRfRU5BQkxFKEZMT0FU X0JMRU5EX09QVElNSVpBVElPTl9FTkFCTEUpLAorCSAgICAgICAwIC8qIHdyaXRlLW9ubHksIHNv IHNraXAgdmFsaWRhdGlvbiAqLywKKwkgICAgICAgdHJ1ZSk7CiAKIAkvKiBXYURpc2FibGVHUEdQ VU1pZFRocmVhZFByZWVtcHRpb246aWNsICovCiAJd2FfbWFza2VkX2ZpZWxkX3NldCh3YWwsIEdF TjhfQ1NfQ0hJQ0tFTjEsCkBAIC01ODEsNyArNTgyLDcgQEAgc3RhdGljIHZvaWQgZ2VuMTJfY3R4 X2d0X3R1bmluZ19pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkgICAgICAg RkZfTU9ERTIsCiAJICAgICAgIEZGX01PREUyX1REU19USU1FUl9NQVNLLAogCSAgICAgICBGRl9N T0RFMl9URFNfVElNRVJfMTI4LAotCSAgICAgICAwKTsKKwkgICAgICAgMCwgZmFsc2UpOwogfQog CiBzdGF0aWMgdm9pZCBnZW4xMl9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsCkBAIC02MTksNyArNjIwLDcgQEAgc3RhdGljIHZvaWQgZ2VuMTJfY3R4 X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCSAgICAg ICBGRl9NT0RFMiwKIAkgICAgICAgRkZfTU9ERTJfR1NfVElNRVJfTUFTSywKIAkgICAgICAgRkZf TU9ERTJfR1NfVElNRVJfMjI0LAotCSAgICAgICAwKTsKKwkgICAgICAgMCwgZmFsc2UpOwogCiAJ LyoKIAkgKiBXYV8xNDAxMjEzMTIyNzpkZzEKQEAgLTc5NSw3ICs3OTYsNyBAQCBoc3dfZ3Rfd29y a2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0IGk5MTVf d2FfbGlzdCAqd2FsKQogCXdhX2FkZCh3YWwsCiAJICAgICAgIEhTV19ST1dfQ0hJQ0tFTjMsIDAs CiAJICAgICAgIF9NQVNLRURfQklUX0VOQUJMRShIU1dfUk9XX0NISUNLRU4zX0wzX0dMT0JBTF9B VE9NSUNTX0RJU0FCTEUpLAotCQkwIC8qIFhYWCBkb2VzIHRoaXMgcmVnIGV4aXN0PyAqLyk7CisJ ICAgICAgIDAgLyogWFhYIGRvZXMgdGhpcyByZWcgZXhpc3Q/ICovLCB0cnVlKTsKIAogCS8qIFdh VlNSZWZDb3VudEZ1bGxmb3JjZU1pc3NEaXNhYmxlOmhzdyAqLwogCXdhX3dyaXRlX2Nscih3YWws IEdFTjdfRkZfVEhSRUFEX01PREUsIEdFTjdfRkZfVlNfUkVGX0NOVF9GRk1FKTsKQEAgLTE4MjQs MTAgKzE4MjUsMTAgQEAgcmNzX2VuZ2luZV93YV9pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwgc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsKQogCQkgKiBkaXNhYmxlIGJpdCwgd2hp Y2ggd2UgZG9uJ3QgdG91Y2ggaGVyZSwgYnV0IGl0J3MgZ29vZAogCQkgKiB0byBrZWVwIGluIG1p bmQgKHNlZSAzRFNUQVRFX1BTIGFuZCAzRFNUQVRFX1dNKS4KIAkJICovCi0JCXdhX2FkZCh3YWws IEdFTjdfR1RfTU9ERSwgMCwKLQkJICAgICAgIF9NQVNLRURfRklFTEQoR0VONl9XSVpfSEFTSElO R19NQVNLLAotCQkJCSAgICAgR0VONl9XSVpfSEFTSElOR18xNng0KSwKLQkJICAgICAgIEdFTjZf V0laX0hBU0hJTkdfMTZ4NCk7CisJCXdhX21hc2tlZF9maWVsZF9zZXQod2FsLAorCQkJCSAgICBH RU43X0dUX01PREUsCisJCQkJICAgIEdFTjZfV0laX0hBU0hJTkdfTUFTSywKKwkJCQkgICAgR0VO Nl9XSVpfSEFTSElOR18xNng0KTsKIAl9CiAKIAlpZiAoSVNfR1JBUEhJQ1NfVkVSKGk5MTUsIDYs IDcpKQpAQCAtMTg3NywxMCArMTg3OCwxMCBAQCByY3NfZW5naW5lX3dhX2luaXQoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwpCiAJCSAqIGRp c2FibGUgYml0LCB3aGljaCB3ZSBkb24ndCB0b3VjaCBoZXJlLCBidXQgaXQncyBnb29kCiAJCSAq IHRvIGtlZXAgaW4gbWluZCAoc2VlIDNEU1RBVEVfUFMgYW5kIDNEU1RBVEVfV00pLgogCQkgKi8K LQkJd2FfYWRkKHdhbCwKLQkJICAgICAgIEdFTjZfR1RfTU9ERSwgMCwKLQkJICAgICAgIF9NQVNL RURfRklFTEQoR0VONl9XSVpfSEFTSElOR19NQVNLLCBHRU42X1dJWl9IQVNISU5HXzE2eDQpLAot CQkgICAgICAgR0VONl9XSVpfSEFTSElOR18xNng0KTsKKwkJd2FfbWFza2VkX2ZpZWxkX3NldCh3 YWwsCisJCQkJICAgIEdFTjZfR1RfTU9ERSwKKwkJCQkgICAgR0VONl9XSVpfSEFTSElOR19NQVNL LAorCQkJCSAgICBHRU42X1dJWl9IQVNISU5HXzE2eDQpOwogCiAJCS8qIFdhRGlzYWJsZV9SZW5k ZXJDYWNoZV9PcGVyYXRpb25hbEZsdXNoOnNuYiAqLwogCQl3YV9tYXNrZWRfZGlzKHdhbCwgQ0FD SEVfTU9ERV8wLCBSQ19PUF9GTFVTSF9FTkFCTEUpOwpAQCAtMTkwMSw3ICsxOTAyLDcgQEAgcmNz X2VuZ2luZV93YV9pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5 MTVfd2FfbGlzdCAqd2FsKQogCQl3YV9hZGQod2FsLCBNSV9NT0RFLAogCQkgICAgICAgMCwgX01B U0tFRF9CSVRfRU5BQkxFKFZTX1RJTUVSX0RJU1BBVENIKSwKIAkJICAgICAgIC8qIFhYWCBiaXQg ZG9lc24ndCBzdGljayBvbiBCcm9hZHdhdGVyICovCi0JCSAgICAgICBJU19JOTY1RyhpOTE1KSA/ IDAgOiBWU19USU1FUl9ESVNQQVRDSCk7CisJCSAgICAgICBJU19JOTY1RyhpOTE1KSA/IDAgOiBW U19USU1FUl9ESVNQQVRDSCwgdHJ1ZSk7CiAKIAlpZiAoR1JBUEhJQ1NfVkVSKGk5MTUpID09IDQp CiAJCS8qCkBAIC0xOTE2LDcgKzE5MTcsOCBAQCByY3NfZW5naW5lX3dhX2luaXQoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwpCiAJCSAqLwog CQl3YV9hZGQod2FsLCBFQ09TS1BELAogCQkgICAgICAgMCwgX01BU0tFRF9CSVRfRU5BQkxFKEVD T19DT05TVEFOVF9CVUZGRVJfU1JfRElTQUJMRSksCi0JCSAgICAgICAwIC8qIFhYWCBiaXQgZG9l c24ndCBzdGljayBvbiBCcm9hZHdhdGVyICovKTsKKwkJICAgICAgIDAgLyogWFhYIGJpdCBkb2Vz bid0IHN0aWNrIG9uIEJyb2Fkd2F0ZXIgKi8sCisJCSAgICAgICB0cnVlKTsKIH0KIAogc3RhdGlj IHZvaWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91 bmRzX3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kc190 eXBlcy5oCmluZGV4IGMyMTQxMTFlYTM2Ny4uMWU4NzM2ODE3OTVkIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kc190eXBlcy5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzX3R5cGVzLmgKQEAgLTE1LDYgKzE1 LDcgQEAgc3RydWN0IGk5MTVfd2EgewogCXUzMgkJY2xyOwogCXUzMgkJc2V0OwogCXUzMgkJcmVh ZDsKKwlib29sCQltYXNrZWRfcmVnOwogfTsKIAogc3RydWN0IGk5MTVfd2FfbGlzdCB7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvbW9ja19lbmdpbmUuYwppbmRleCA2ODk3MDM5OGU0ZWYuLjJjMWFmMDMw MzEwYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvbW9ja19lbmdpbmUuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jCkBAIC0yMzUsNiArMjM1 LDM0IEBAIHN0YXRpYyB2b2lkIG1vY2tfc3VibWl0X3JlcXVlc3Qoc3RydWN0IGk5MTVfcmVxdWVz dCAqcmVxdWVzdCkKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPmh3X2xvY2ssIGZs YWdzKTsKIH0KIAorc3RhdGljIHZvaWQgbW9ja19hZGRfdG9fZW5naW5lKHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxKQoreworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnJxLT5lbmdpbmUtPnNjaGVkX2Vu Z2luZS0+bG9jayk7CisJbGlzdF9tb3ZlX3RhaWwoJnJxLT5zY2hlZC5saW5rLCAmcnEtPmVuZ2lu ZS0+c2NoZWRfZW5naW5lLT5yZXF1ZXN0cyk7Cit9CisKK3N0YXRpYyB2b2lkIG1vY2tfcmVtb3Zl X2Zyb21fZW5naW5lKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQoreworCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwgKmxvY2tlZDsKKworCS8qCisJICogVmlydHVhbCBlbmdpbmVzIGNv bXBsaWNhdGUgYWNxdWlyaW5nIHRoZSBlbmdpbmUgdGltZWxpbmUgbG9jaywKKwkgKiBhcyB0aGVp ciBycS0+ZW5naW5lIHBvaW50ZXIgaXMgbm90IHN0YWJsZSB1bnRpbCB1bmRlciB0aGF0CisJICog ZW5naW5lIGxvY2suIFRoZSBzaW1wbGUgcGxveSB3ZSB1c2UgaXMgdG8gdGFrZSB0aGUgbG9jayB0 aGVuCisJICogY2hlY2sgdGhhdCB0aGUgcnEgc3RpbGwgYmVsb25ncyB0byB0aGUgbmV3bHkgbG9j a2VkIGVuZ2luZS4KKwkgKi8KKworCWxvY2tlZCA9IFJFQURfT05DRShycS0+ZW5naW5lKTsKKwlz cGluX2xvY2tfaXJxKCZsb2NrZWQtPnNjaGVkX2VuZ2luZS0+bG9jayk7CisJd2hpbGUgKHVubGlr ZWx5KGxvY2tlZCAhPSAoZW5naW5lID0gUkVBRF9PTkNFKHJxLT5lbmdpbmUpKSkpIHsKKwkJc3Bp bl91bmxvY2soJmxvY2tlZC0+c2NoZWRfZW5naW5lLT5sb2NrKTsKKwkJc3Bpbl9sb2NrKCZlbmdp bmUtPnNjaGVkX2VuZ2luZS0+bG9jayk7CisJCWxvY2tlZCA9IGVuZ2luZTsKKwl9CisJbGlzdF9k ZWxfaW5pdCgmcnEtPnNjaGVkLmxpbmspOworCXNwaW5fdW5sb2NrX2lycSgmbG9ja2VkLT5zY2hl ZF9lbmdpbmUtPmxvY2spOworfQorCiBzdGF0aWMgdm9pZCBtb2NrX3Jlc2V0X3ByZXBhcmUoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogfQpAQCAtMjg0LDcgKzMxMiw3IEBAIHN0 YXRpYyB2b2lkIG1vY2tfZW5naW5lX3JlbGVhc2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQogCUdFTV9CVUdfT04odGltZXJfcGVuZGluZygmbW9jay0+aHdfZGVsYXkpKTsKIAogCWk5 MTVfc2NoZWRfZW5naW5lX3B1dChlbmdpbmUtPnNjaGVkX2VuZ2luZSk7Ci0JaW50ZWxfYnJlYWRj cnVtYnNfZnJlZShlbmdpbmUtPmJyZWFkY3J1bWJzKTsKKwlpbnRlbF9icmVhZGNydW1ic19wdXQo ZW5naW5lLT5icmVhZGNydW1icyk7CiAKIAlpbnRlbF9jb250ZXh0X3VucGluKGVuZ2luZS0+a2Vy bmVsX2NvbnRleHQpOwogCWludGVsX2NvbnRleHRfcHV0KGVuZ2luZS0+a2VybmVsX2NvbnRleHQp OwpAQCAtMzIxLDYgKzM0OSw4IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKm1vY2tfZW5naW5l KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCWVuZ2luZS0+YmFzZS5lbWl0X2ZsdXNo ID0gbW9ja19lbWl0X2ZsdXNoOwogCWVuZ2luZS0+YmFzZS5lbWl0X2ZpbmlfYnJlYWRjcnVtYiA9 IG1vY2tfZW1pdF9icmVhZGNydW1iOwogCWVuZ2luZS0+YmFzZS5zdWJtaXRfcmVxdWVzdCA9IG1v Y2tfc3VibWl0X3JlcXVlc3Q7CisJZW5naW5lLT5iYXNlLmFkZF9hY3RpdmVfcmVxdWVzdCA9IG1v Y2tfYWRkX3RvX2VuZ2luZTsKKwllbmdpbmUtPmJhc2UucmVtb3ZlX2FjdGl2ZV9yZXF1ZXN0ID0g bW9ja19yZW1vdmVfZnJvbV9lbmdpbmU7CiAKIAllbmdpbmUtPmJhc2UucmVzZXQucHJlcGFyZSA9 IG1vY2tfcmVzZXRfcHJlcGFyZTsKIAllbmdpbmUtPmJhc2UucmVzZXQucmV3aW5kID0gbW9ja19y ZXNldF9yZXdpbmQ7CkBAIC0zNzAsNyArNDAwLDcgQEAgaW50IG1vY2tfZW5naW5lX2luaXQoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCXJldHVybiAwOwogCiBlcnJfYnJlYWRjcnVt YnM6Ci0JaW50ZWxfYnJlYWRjcnVtYnNfZnJlZShlbmdpbmUtPmJyZWFkY3J1bWJzKTsKKwlpbnRl bF9icmVhZGNydW1ic19wdXQoZW5naW5lLT5icmVhZGNydW1icyk7CiBlcnJfc2NoZWR1bGU6CiAJ aTkxNV9zY2hlZF9lbmdpbmVfcHV0KGVuZ2luZS0+c2NoZWRfZW5naW5lKTsKIAlyZXR1cm4gLUVO T01FTTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2lu ZV9oZWFydGJlYXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9o ZWFydGJlYXQuYwppbmRleCA0ODk2ZTRjY2FkNTAuLjMxN2VlYmYwODZjMyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2hlYXJ0YmVhdC5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9oZWFydGJlYXQuYwpAQCAt NDA1LDMgKzQwNSwyNSBAQCB2b2lkIHN0X2VuZ2luZV9oZWFydGJlYXRfZW5hYmxlKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAllbmdpbmUtPnByb3BzLmhlYXJ0YmVhdF9pbnRlcnZh bF9tcyA9CiAJCWVuZ2luZS0+ZGVmYXVsdHMuaGVhcnRiZWF0X2ludGVydmFsX21zOwogfQorCit2 b2lkIHN0X2VuZ2luZV9oZWFydGJlYXRfZGlzYWJsZV9ub19wbShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCit7CisJZW5naW5lLT5wcm9wcy5oZWFydGJlYXRfaW50ZXJ2YWxfbXMgPSAw OworCisJLyoKKwkgKiBQYXJrIHRoZSBoZWFydGJlYXQgYnV0IHdpdGhvdXQgaG9sZGluZyB0aGUg UE0gbG9jayBhcyB0aGF0CisJICogbWFrZXMgdGhlIGVuZ2luZXMgYXBwZWFyIG5vdC1pZGxlLiBO b3RlIHRoYXQgaWYvd2hlbiB1bnBhcmsKKwkgKiBpcyBjYWxsZWQgZHVlIHRvIHRoZSBQTSBsb2Nr IGJlaW5nIGFjcXVpcmVkIGxhdGVyIHRoZQorCSAqIGhlYXJ0YmVhdCBzdGlsbCB3b24ndCBiZSBl bmFibGVkIGJlY2F1c2Ugb2YgdGhlIGFib3ZlID0gMC4KKwkgKi8KKwlpZiAoaW50ZWxfZW5naW5l X3BtX2dldF9pZl9hd2FrZShlbmdpbmUpKSB7CisJCWludGVsX2VuZ2luZV9wYXJrX2hlYXJ0YmVh dChlbmdpbmUpOworCQlpbnRlbF9lbmdpbmVfcG1fcHV0KGVuZ2luZSk7CisJfQorfQorCit2b2lk IHN0X2VuZ2luZV9oZWFydGJlYXRfZW5hYmxlX25vX3BtKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKK3sKKwllbmdpbmUtPnByb3BzLmhlYXJ0YmVhdF9pbnRlcnZhbF9tcyA9CisJCWVu Z2luZS0+ZGVmYXVsdHMuaGVhcnRiZWF0X2ludGVydmFsX21zOworfQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2hlYXJ0YmVhdC5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2hlYXJ0YmVhdC5oCmluZGV4IGNkMjcx MTNkNTQwMC4uODFkYTJjZDhlNDA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9zZWxmdGVzdF9lbmdpbmVfaGVhcnRiZWF0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Qvc2VsZnRlc3RfZW5naW5lX2hlYXJ0YmVhdC5oCkBAIC05LDYgKzksOCBAQAogc3RydWN0IGlu dGVsX2VuZ2luZV9jczsKIAogdm9pZCBzdF9lbmdpbmVfaGVhcnRiZWF0X2Rpc2FibGUoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKK3ZvaWQgc3RfZW5naW5lX2hlYXJ0YmVhdF9kaXNh YmxlX25vX3BtKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiB2b2lkIHN0X2VuZ2lu ZV9oZWFydGJlYXRfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cit2b2lk IHN0X2VuZ2luZV9oZWFydGJlYXRfZW5hYmxlX25vX3BtKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSk7CiAKICNlbmRpZiAvKiBTRUxGVEVTVF9FTkdJTkVfSEVBUlRCRUFUX0ggKi8KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2V4ZWNsaXN0cy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZXhlY2xpc3RzLmMKaW5kZXggMjJhMTI0 YjEzNGI2Li5mMTJmZmU3OTc2MzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3NlbGZ0ZXN0X2V4ZWNsaXN0cy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0 ZXN0X2V4ZWNsaXN0cy5jCkBAIC0zNzMzLDcgKzM3MzMsNyBAQCBzdGF0aWMgaW50IG5vcF92aXJ0 dWFsX2VuZ2luZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAogCUdFTV9CVUdfT04oIW5jdHggfHwgbmN0 eCA+IEFSUkFZX1NJWkUodmUpKTsKIAogCWZvciAobiA9IDA7IG4gPCBuY3R4OyBuKyspIHsKLQkJ dmVbbl0gPSBpbnRlbF9leGVjbGlzdHNfY3JlYXRlX3ZpcnR1YWwoc2libGluZ3MsIG5zaWJsaW5n KTsKKwkJdmVbbl0gPSBpbnRlbF9lbmdpbmVfY3JlYXRlX3ZpcnR1YWwoc2libGluZ3MsIG5zaWJs aW5nKTsKIAkJaWYgKElTX0VSUih2ZVtuXSkpIHsKIAkJCWVyciA9IFBUUl9FUlIodmVbbl0pOwog CQkJbmN0eCA9IG47CkBAIC0zOTI5LDcgKzM5MjksNyBAQCBzdGF0aWMgaW50IG1hc2tfdmlydHVh bF9lbmdpbmUoc3RydWN0IGludGVsX2d0ICpndCwKIAkgKiByZXN0cmljdCBpdCB0byBvdXIgZGVz aXJlZCBlbmdpbmUgd2l0aGluIHRoZSB2aXJ0dWFsIGVuZ2luZS4KIAkgKi8KIAotCXZlID0gaW50 ZWxfZXhlY2xpc3RzX2NyZWF0ZV92aXJ0dWFsKHNpYmxpbmdzLCBuc2libGluZyk7CisJdmUgPSBp bnRlbF9lbmdpbmVfY3JlYXRlX3ZpcnR1YWwoc2libGluZ3MsIG5zaWJsaW5nKTsKIAlpZiAoSVNf RVJSKHZlKSkgewogCQllcnIgPSBQVFJfRVJSKHZlKTsKIAkJZ290byBvdXRfY2xvc2U7CkBAIC00 MDYwLDcgKzQwNjAsNyBAQCBzdGF0aWMgaW50IHNsaWNlaW5fdmlydHVhbF9lbmdpbmUoc3RydWN0 IGludGVsX2d0ICpndCwKIAkJaTkxNV9yZXF1ZXN0X2FkZChycSk7CiAJfQogCi0JY2UgPSBpbnRl bF9leGVjbGlzdHNfY3JlYXRlX3ZpcnR1YWwoc2libGluZ3MsIG5zaWJsaW5nKTsKKwljZSA9IGlu dGVsX2VuZ2luZV9jcmVhdGVfdmlydHVhbChzaWJsaW5ncywgbnNpYmxpbmcpOwogCWlmIChJU19F UlIoY2UpKSB7CiAJCWVyciA9IFBUUl9FUlIoY2UpOwogCQlnb3RvIG91dDsKQEAgLTQxMTIsNyAr NDExMiw3IEBAIHN0YXRpYyBpbnQgc2xpY2VvdXRfdmlydHVhbF9lbmdpbmUoc3RydWN0IGludGVs X2d0ICpndCwKIAogCS8qIFhYWCBXZSBkbyBub3QgaGFuZGxlIG92ZXJzdWJzY3JpcHRpb24gYW5k IGZhaXJuZXNzIHdpdGggbm9ybWFsIHJxICovCiAJZm9yIChuID0gMDsgbiA8IG5zaWJsaW5nOyBu KyspIHsKLQkJY2UgPSBpbnRlbF9leGVjbGlzdHNfY3JlYXRlX3ZpcnR1YWwoc2libGluZ3MsIG5z aWJsaW5nKTsKKwkJY2UgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX3ZpcnR1YWwoc2libGluZ3MsIG5z aWJsaW5nKTsKIAkJaWYgKElTX0VSUihjZSkpIHsKIAkJCWVyciA9IFBUUl9FUlIoY2UpOwogCQkJ Z290byBvdXQ7CkBAIC00MjE0LDcgKzQyMTQsNyBAQCBzdGF0aWMgaW50IHByZXNlcnZlZF92aXJ0 dWFsX2VuZ2luZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAogCWlmIChlcnIpCiAJCWdvdG8gb3V0X3Nj cmF0Y2g7CiAKLQl2ZSA9IGludGVsX2V4ZWNsaXN0c19jcmVhdGVfdmlydHVhbChzaWJsaW5ncywg bnNpYmxpbmcpOworCXZlID0gaW50ZWxfZW5naW5lX2NyZWF0ZV92aXJ0dWFsKHNpYmxpbmdzLCBu c2libGluZyk7CiAJaWYgKElTX0VSUih2ZSkpIHsKIAkJZXJyID0gUFRSX0VSUih2ZSk7CiAJCWdv dG8gb3V0X3NjcmF0Y2g7CkBAIC00MzU0LDcgKzQzNTQsNyBAQCBzdGF0aWMgaW50IHJlc2V0X3Zp cnR1YWxfZW5naW5lKHN0cnVjdCBpbnRlbF9ndCAqZ3QsCiAJaWYgKGlndF9zcGlubmVyX2luaXQo JnNwaW4sIGd0KSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQl2ZSA9IGludGVsX2V4ZWNsaXN0c19j cmVhdGVfdmlydHVhbChzaWJsaW5ncywgbnNpYmxpbmcpOworCXZlID0gaW50ZWxfZW5naW5lX2Ny ZWF0ZV92aXJ0dWFsKHNpYmxpbmdzLCBuc2libGluZyk7CiAJaWYgKElTX0VSUih2ZSkpIHsKIAkJ ZXJyID0gUFRSX0VSUih2ZSk7CiAJCWdvdG8gb3V0X3NwaW47CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5jCmluZGV4IDdhZWExMGFhMWZiNC4uMDhmMDExZjg5 M2IyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hl Y2suYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYwpA QCAtMTcsNiArMTcsOCBAQAogI2luY2x1ZGUgInNlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5oIgog I2luY2x1ZGUgInNlbGZ0ZXN0cy9pZ3RfcmVzZXQuaCIKICNpbmNsdWRlICJzZWxmdGVzdHMvaWd0 X2F0b21pYy5oIgorI2luY2x1ZGUgInNlbGZ0ZXN0cy9pZ3Rfc3Bpbm5lci5oIgorI2luY2x1ZGUg InNlbGZ0ZXN0cy9pbnRlbF9zY2hlZHVsZXJfaGVscGVycy5oIgogCiAjaW5jbHVkZSAic2VsZnRl c3RzL21vY2tfZHJtLmgiCiAKQEAgLTM3OCw2ICszODAsNyBAQCBzdGF0aWMgaW50IGlndF9yZXNl dF9ub3Aodm9pZCAqYXJnKQogCQkJY2UgPSBpbnRlbF9jb250ZXh0X2NyZWF0ZShlbmdpbmUpOwog CQkJaWYgKElTX0VSUihjZSkpIHsKIAkJCQllcnIgPSBQVFJfRVJSKGNlKTsKKwkJCQlwcl9lcnIo Ilslc10gQ3JlYXRlIGNvbnRleHQgZmFpbGVkOiAlZCFcbiIsIGVuZ2luZS0+bmFtZSwgZXJyKTsK IAkJCQlicmVhazsKIAkJCX0KIApAQCAtMzg3LDYgKzM5MCw4IEBAIHN0YXRpYyBpbnQgaWd0X3Jl c2V0X25vcCh2b2lkICphcmcpCiAJCQkJcnEgPSBpbnRlbF9jb250ZXh0X2NyZWF0ZV9yZXF1ZXN0 KGNlKTsKIAkJCQlpZiAoSVNfRVJSKHJxKSkgewogCQkJCQllcnIgPSBQVFJfRVJSKHJxKTsKKwkJ CQkJcHJfZXJyKCJbJXNdIENyZWF0ZSByZXF1ZXN0IGZhaWxlZDogJWQhXG4iLAorCQkJCQkgICAg ICAgZW5naW5lLT5uYW1lLCBlcnIpOwogCQkJCQlicmVhazsKIAkJCQl9CiAKQEAgLTQwMSwyNCAr NDA2LDMxIEBAIHN0YXRpYyBpbnQgaWd0X3Jlc2V0X25vcCh2b2lkICphcmcpCiAJCWlndF9nbG9i YWxfcmVzZXRfdW5sb2NrKGd0KTsKIAogCQlpZiAoaW50ZWxfZ3RfaXNfd2VkZ2VkKGd0KSkgewor CQkJcHJfZXJyKCJbJXNdIEdUIGlzIHdlZGdlZCFcbiIsIGVuZ2luZS0+bmFtZSk7CiAJCQllcnIg PSAtRUlPOwogCQkJYnJlYWs7CiAJCX0KIAogCQlpZiAoaTkxNV9yZXNldF9jb3VudChnbG9iYWwp ICE9IHJlc2V0X2NvdW50ICsgKytjb3VudCkgewotCQkJcHJfZXJyKCJGdWxsIEdQVSByZXNldCBu b3QgcmVjb3JkZWQhXG4iKTsKKwkJCXByX2VycigiWyVzXSBSZXNldCBub3QgcmVjb3JkZWQ6ICVk IHZzICVkICsgJWQhXG4iLAorCQkJICAgICAgIGVuZ2luZS0+bmFtZSwgaTkxNV9yZXNldF9jb3Vu dChnbG9iYWwpLCByZXNldF9jb3VudCwgY291bnQpOwogCQkJZXJyID0gLUVJTlZBTDsKIAkJCWJy ZWFrOwogCQl9CiAKIAkJZXJyID0gaWd0X2ZsdXNoX3Rlc3QoZ3QtPmk5MTUpOwotCQlpZiAoZXJy KQorCQlpZiAoZXJyKSB7CisJCQlwcl9lcnIoIlslc10gRmx1c2ggZmFpbGVkOiAlZCFcbiIsIGVu Z2luZS0+bmFtZSwgZXJyKTsKIAkJCWJyZWFrOworCQl9CiAJfSB3aGlsZSAodGltZV9iZWZvcmUo amlmZmllcywgZW5kX3RpbWUpKTsKIAlwcl9pbmZvKCIlczogJWQgcmVzZXRzXG4iLCBfX2Z1bmNf XywgY291bnQpOwogCi0JaWYgKGlndF9mbHVzaF90ZXN0KGd0LT5pOTE1KSkKKwlpZiAoaWd0X2Zs dXNoX3Rlc3QoZ3QtPmk5MTUpKSB7CisJCXByX2VycigiUG9zdCBmbHVzaCBmYWlsZWQ6ICVkIVxu IiwgZXJyKTsKIAkJZXJyID0gLUVJTzsKKwl9CisKIAlyZXR1cm4gZXJyOwogfQogCkBAIC00NDAs OSArNDUyLDE5IEBAIHN0YXRpYyBpbnQgaWd0X3Jlc2V0X25vcF9lbmdpbmUodm9pZCAqYXJnKQog CQlJR1RfVElNRU9VVChlbmRfdGltZSk7CiAJCWludCBlcnI7CiAKKwkJaWYgKGludGVsX2VuZ2lu ZV91c2VzX2d1YyhlbmdpbmUpKSB7CisJCQkvKiBFbmdpbmUgbGV2ZWwgcmVzZXRzIGFyZSB0cmln Z2VyZWQgYnkgR3VDIHdoZW4gYSBoYW5nCisJCQkgKiBpcyBkZXRlY3RlZC4gVGhleSBjYW4ndCBi ZSB0cmlnZ2VyZWQgYnkgdGhlIEtNRCBhbnkKKwkJCSAqIG1vcmUuIFRodXMgYSBub3AgYmF0Y2gg Y2Fubm90IGJlIHVzZWQgYXMgYSByZXNldCB0ZXN0CisJCQkgKi8KKwkJCWNvbnRpbnVlOworCQl9 CisKIAkJY2UgPSBpbnRlbF9jb250ZXh0X2NyZWF0ZShlbmdpbmUpOwotCQlpZiAoSVNfRVJSKGNl KSkKKwkJaWYgKElTX0VSUihjZSkpIHsKKwkJCXByX2VycigiWyVzXSBDcmVhdGUgY29udGV4dCBm YWlsZWQ6ICVkIVxuIiwgZW5naW5lLT5uYW1lLCBlcnIpOwogCQkJcmV0dXJuIFBUUl9FUlIoY2Up OworCQl9CiAKIAkJcmVzZXRfY291bnQgPSBpOTE1X3Jlc2V0X2NvdW50KGdsb2JhbCk7CiAJCXJl c2V0X2VuZ2luZV9jb3VudCA9IGk5MTVfcmVzZXRfZW5naW5lX2NvdW50KGdsb2JhbCwgZW5naW5l KTsKQEAgLTU0OSw5ICs1NzEsMTUgQEAgc3RhdGljIGludCBpZ3RfcmVzZXRfZmFpbF9lbmdpbmUo dm9pZCAqYXJnKQogCQlJR1RfVElNRU9VVChlbmRfdGltZSk7CiAJCWludCBlcnI7CiAKKwkJLyog Q2FuJ3QgbWFudWFsbHkgYnJlYWsgdGhlIHJlc2V0IGlmIGk5MTUgZG9lc24ndCBwZXJmb3JtIGl0 ICovCisJCWlmIChpbnRlbF9lbmdpbmVfdXNlc19ndWMoZW5naW5lKSkKKwkJCWNvbnRpbnVlOwor CiAJCWNlID0gaW50ZWxfY29udGV4dF9jcmVhdGUoZW5naW5lKTsKLQkJaWYgKElTX0VSUihjZSkp CisJCWlmIChJU19FUlIoY2UpKSB7CisJCQlwcl9lcnIoIlslc10gQ3JlYXRlIGNvbnRleHQgZmFp bGVkOiAlZCFcbiIsIGVuZ2luZS0+bmFtZSwgZXJyKTsKIAkJCXJldHVybiBQVFJfRVJSKGNlKTsK KwkJfQogCiAJCXN0X2VuZ2luZV9oZWFydGJlYXRfZGlzYWJsZShlbmdpbmUpOwogCQlzZXRfYml0 KEk5MTVfUkVTRVRfRU5HSU5FICsgaWQsICZndC0+cmVzZXQuZmxhZ3MpOwpAQCAtNjg2LDggKzcx NCwxMiBAQCBzdGF0aWMgaW50IF9faWd0X3Jlc2V0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0 LCBib29sIGFjdGl2ZSkKIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBndCwgaWQpIHsKIAkJdW5z aWduZWQgaW50IHJlc2V0X2NvdW50LCByZXNldF9lbmdpbmVfY291bnQ7CiAJCXVuc2lnbmVkIGxv bmcgY291bnQ7CisJCWJvb2wgdXNpbmdfZ3VjID0gaW50ZWxfZW5naW5lX3VzZXNfZ3VjKGVuZ2lu ZSk7CiAJCUlHVF9USU1FT1VUKGVuZF90aW1lKTsKIAorCQlpZiAodXNpbmdfZ3VjICYmICFhY3Rp dmUpCisJCQljb250aW51ZTsKKwogCQlpZiAoYWN0aXZlICYmICFpbnRlbF9lbmdpbmVfY2FuX3N0 b3JlX2R3b3JkKGVuZ2luZSkpCiAJCQljb250aW51ZTsKIApAQCAtNzA1LDEzICs3MzcsMjQgQEAg c3RhdGljIGludCBfX2lndF9yZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2d0ICpndCwgYm9vbCBh Y3RpdmUpCiAJCXNldF9iaXQoSTkxNV9SRVNFVF9FTkdJTkUgKyBpZCwgJmd0LT5yZXNldC5mbGFn cyk7CiAJCWNvdW50ID0gMDsKIAkJZG8gewotCQkJaWYgKGFjdGl2ZSkgewotCQkJCXN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxOworCQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEgPSBOVUxMOworCQkJ c3RydWN0IGludGVsX3NlbGZ0ZXN0X3NhdmVkX3BvbGljeSBzYXZlZDsKKwkJCWludCBlcnIyOwor CisJCQllcnIgPSBpbnRlbF9zZWxmdGVzdF9tb2RpZnlfcG9saWN5KGVuZ2luZSwgJnNhdmVkLAor CQkJCQkJCSAgIFNFTEZURVNUX1NDSEVEVUxFUl9NT0RJRllfRkFTVF9SRVNFVCk7CisJCQlpZiAo ZXJyKSB7CisJCQkJcHJfZXJyKCJbJXNdIE1vZGlmeSBwb2xpY3kgZmFpbGVkOiAlZCFcbiIsIGVu Z2luZS0+bmFtZSwgZXJyKTsKKwkJCQlicmVhazsKKwkJCX0KIAorCQkJaWYgKGFjdGl2ZSkgewog CQkJCXJxID0gaGFuZ19jcmVhdGVfcmVxdWVzdCgmaCwgZW5naW5lKTsKIAkJCQlpZiAoSVNfRVJS KHJxKSkgewogCQkJCQllcnIgPSBQVFJfRVJSKHJxKTsKLQkJCQkJYnJlYWs7CisJCQkJCXByX2Vy cigiWyVzXSBDcmVhdGUgaGFuZyByZXF1ZXN0IGZhaWxlZDogJWQhXG4iLAorCQkJCQkgICAgICAg ZW5naW5lLT5uYW1lLCBlcnIpOworCQkJCQlnb3RvIHJlc3RvcmU7CiAJCQkJfQogCiAJCQkJaTkx NV9yZXF1ZXN0X2dldChycSk7CkBAIC03MjcsMzQgKzc3MCw1OSBAQCBzdGF0aWMgaW50IF9faWd0 X3Jlc2V0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBib29sIGFjdGl2ZSkKIAogCQkJCQlp OTE1X3JlcXVlc3RfcHV0KHJxKTsKIAkJCQkJZXJyID0gLUVJTzsKLQkJCQkJYnJlYWs7CisJCQkJ CWdvdG8gcmVzdG9yZTsKIAkJCQl9CisJCQl9CiAKLQkJCQlpOTE1X3JlcXVlc3RfcHV0KHJxKTsK KwkJCWlmICghdXNpbmdfZ3VjKSB7CisJCQkJZXJyID0gaW50ZWxfZW5naW5lX3Jlc2V0KGVuZ2lu ZSwgTlVMTCk7CisJCQkJaWYgKGVycikgeworCQkJCQlwcl9lcnIoImludGVsX2VuZ2luZV9yZXNl dCglcykgZmFpbGVkLCBlcnI6JWRcbiIsCisJCQkJCSAgICAgICBlbmdpbmUtPm5hbWUsIGVycik7 CisJCQkJCWdvdG8gc2tpcDsKKwkJCQl9CiAJCQl9CiAKLQkJCWVyciA9IGludGVsX2VuZ2luZV9y ZXNldChlbmdpbmUsIE5VTEwpOwotCQkJaWYgKGVycikgewotCQkJCXByX2VycigiaW50ZWxfZW5n aW5lX3Jlc2V0KCVzKSBmYWlsZWQsIGVycjolZFxuIiwKLQkJCQkgICAgICAgZW5naW5lLT5uYW1l LCBlcnIpOwotCQkJCWJyZWFrOworCQkJaWYgKHJxKSB7CisJCQkJLyogRW5zdXJlIHRoZSByZXNl dCBoYXBwZW5zIGFuZCBraWxscyB0aGUgZW5naW5lICovCisJCQkJZXJyID0gaW50ZWxfc2VsZnRl c3Rfd2FpdF9mb3JfcnEocnEpOworCQkJCWlmIChlcnIpCisJCQkJCXByX2VycigiWyVzXSBXYWl0 IGZvciByZXF1ZXN0ICVsbGQ6JWxsZCBbMHglMDRYXSBmYWlsZWQ6ICVkIVxuIiwKKwkJCQkJICAg ICAgIGVuZ2luZS0+bmFtZSwgcnEtPmZlbmNlLmNvbnRleHQsCisJCQkJCSAgICAgICBycS0+ZmVu Y2Uuc2Vxbm8sIHJxLT5jb250ZXh0LT5ndWNfaWQsIGVycik7CiAJCQl9CiAKK3NraXA6CisJCQlp ZiAocnEpCisJCQkJaTkxNV9yZXF1ZXN0X3B1dChycSk7CisKIAkJCWlmIChpOTE1X3Jlc2V0X2Nv dW50KGdsb2JhbCkgIT0gcmVzZXRfY291bnQpIHsKIAkJCQlwcl9lcnIoIkZ1bGwgR1BVIHJlc2V0 IHJlY29yZGVkISAoZW5naW5lIHJlc2V0IGV4cGVjdGVkKVxuIik7CiAJCQkJZXJyID0gLUVJTlZB TDsKLQkJCQlicmVhazsKKwkJCQlnb3RvIHJlc3RvcmU7CiAJCQl9CiAKLQkJCWlmIChpOTE1X3Jl c2V0X2VuZ2luZV9jb3VudChnbG9iYWwsIGVuZ2luZSkgIT0KLQkJCSAgICArK3Jlc2V0X2VuZ2lu ZV9jb3VudCkgewotCQkJCXByX2VycigiJXMgZW5naW5lIHJlc2V0IG5vdCByZWNvcmRlZCFcbiIs Ci0JCQkJICAgICAgIGVuZ2luZS0+bmFtZSk7Ci0JCQkJZXJyID0gLUVJTlZBTDsKLQkJCQlicmVh azsKKwkJCS8qIEd1QyBiYXNlZCByZXNldHMgYXJlIG5vdCBsb2dnZWQgcGVyIGVuZ2luZSAqLwor CQkJaWYgKCF1c2luZ19ndWMpIHsKKwkJCQlpZiAoaTkxNV9yZXNldF9lbmdpbmVfY291bnQoZ2xv YmFsLCBlbmdpbmUpICE9CisJCQkJICAgICsrcmVzZXRfZW5naW5lX2NvdW50KSB7CisJCQkJCXBy X2VycigiJXMgZW5naW5lIHJlc2V0IG5vdCByZWNvcmRlZCFcbiIsCisJCQkJCSAgICAgICBlbmdp bmUtPm5hbWUpOworCQkJCQllcnIgPSAtRUlOVkFMOworCQkJCQlnb3RvIHJlc3RvcmU7CisJCQkJ fQogCQkJfQogCiAJCQljb3VudCsrOworCityZXN0b3JlOgorCQkJZXJyMiA9IGludGVsX3NlbGZ0 ZXN0X3Jlc3RvcmVfcG9saWN5KGVuZ2luZSwgJnNhdmVkKTsKKwkJCWlmIChlcnIyKQorCQkJCXBy X2VycigiWyVzXSBSZXN0b3JlIHBvbGljeSBmYWlsZWQ6ICVkIVxuIiwgZW5naW5lLT5uYW1lLCBl cnIpOworCQkJaWYgKGVyciA9PSAwKQorCQkJCWVyciA9IGVycjI7CisJCQlpZiAoZXJyKQorCQkJ CWJyZWFrOwogCQl9IHdoaWxlICh0aW1lX2JlZm9yZShqaWZmaWVzLCBlbmRfdGltZSkpOwogCQlj bGVhcl9iaXQoSTkxNV9SRVNFVF9FTkdJTkUgKyBpZCwgJmd0LT5yZXNldC5mbGFncyk7CiAJCXN0 X2VuZ2luZV9oZWFydGJlYXRfZW5hYmxlKGVuZ2luZSk7CkBAIC03NjUsMTIgKzgzMywxNiBAQCBz dGF0aWMgaW50IF9faWd0X3Jlc2V0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBib29sIGFj dGl2ZSkKIAkJCWJyZWFrOwogCiAJCWVyciA9IGlndF9mbHVzaF90ZXN0KGd0LT5pOTE1KTsKLQkJ aWYgKGVycikKKwkJaWYgKGVycikgeworCQkJcHJfZXJyKCJbJXNdIEZsdXNoIGZhaWxlZDogJWQh XG4iLCBlbmdpbmUtPm5hbWUsIGVycik7CiAJCQlicmVhazsKKwkJfQogCX0KIAotCWlmIChpbnRl bF9ndF9pc193ZWRnZWQoZ3QpKQorCWlmIChpbnRlbF9ndF9pc193ZWRnZWQoZ3QpKSB7CisJCXBy X2VycigiR1QgaXMgd2VkZ2VkIVxuIik7CiAJCWVyciA9IC1FSU87CisJfQogCiAJaWYgKGFjdGl2 ZSkKIAkJaGFuZ19maW5pKCZoKTsKQEAgLTgwNyw3ICs4NzksNyBAQCBzdGF0aWMgaW50IGFjdGl2 ZV9yZXF1ZXN0X3B1dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAlpZiAoIXJxKQogCQlyZXR1 cm4gMDsKIAotCWlmIChpOTE1X3JlcXVlc3Rfd2FpdChycSwgMCwgNSAqIEhaKSA8IDApIHsKKwlp ZiAoaTkxNV9yZXF1ZXN0X3dhaXQocnEsIDAsIDEwICogSFopIDwgMCkgewogCQlHRU1fVFJBQ0Uo IiVzIHRpbWVkIG91dCB3YWl0aW5nIGZvciBjb21wbGV0aW9uIG9mIGZlbmNlICVsbHg6JWxsZFxu IiwKIAkJCSAgcnEtPmVuZ2luZS0+bmFtZSwKIAkJCSAgcnEtPmZlbmNlLmNvbnRleHQsCkBAIC04 MzcsNiArOTA5LDcgQEAgc3RhdGljIGludCBhY3RpdmVfZW5naW5lKHZvaWQgKmRhdGEpCiAJCWNl W2NvdW50XSA9IGludGVsX2NvbnRleHRfY3JlYXRlKGVuZ2luZSk7CiAJCWlmIChJU19FUlIoY2Vb Y291bnRdKSkgewogCQkJZXJyID0gUFRSX0VSUihjZVtjb3VudF0pOworCQkJcHJfZXJyKCJbJXNd IENyZWF0ZSBjb250ZXh0ICMlbGQgZmFpbGVkOiAlZCFcbiIsIGVuZ2luZS0+bmFtZSwgY291bnQs IGVycik7CiAJCQl3aGlsZSAoLS1jb3VudCkKIAkJCQlpbnRlbF9jb250ZXh0X3B1dChjZVtjb3Vu dF0pOwogCQkJcmV0dXJuIGVycjsKQEAgLTg1Miw2ICs5MjUsNyBAQCBzdGF0aWMgaW50IGFjdGl2 ZV9lbmdpbmUodm9pZCAqZGF0YSkKIAkJbmV3ID0gaW50ZWxfY29udGV4dF9jcmVhdGVfcmVxdWVz dChjZVtpZHhdKTsKIAkJaWYgKElTX0VSUihuZXcpKSB7CiAJCQllcnIgPSBQVFJfRVJSKG5ldyk7 CisJCQlwcl9lcnIoIlslc10gQ3JlYXRlIHJlcXVlc3QgIyVkIGZhaWxlZDogJWQhXG4iLCBlbmdp bmUtPm5hbWUsIGlkeCwgZXJyKTsKIAkJCWJyZWFrOwogCQl9CiAKQEAgLTg2Nyw4ICs5NDEsMTAg QEAgc3RhdGljIGludCBhY3RpdmVfZW5naW5lKHZvaWQgKmRhdGEpCiAJCX0KIAogCQllcnIgPSBh Y3RpdmVfcmVxdWVzdF9wdXQob2xkKTsKLQkJaWYgKGVycikKKwkJaWYgKGVycikgeworCQkJcHJf ZXJyKCJbJXNdIFJlcXVlc3QgcHV0IGZhaWxlZDogJWQhXG4iLCBlbmdpbmUtPm5hbWUsIGVycik7 CiAJCQlicmVhazsKKwkJfQogCiAJCWNvbmRfcmVzY2hlZCgpOwogCX0KQEAgLTg3Niw2ICs5NTIs OSBAQCBzdGF0aWMgaW50IGFjdGl2ZV9lbmdpbmUodm9pZCAqZGF0YSkKIAlmb3IgKGNvdW50ID0g MDsgY291bnQgPCBBUlJBWV9TSVpFKHJxKTsgY291bnQrKykgewogCQlpbnQgZXJyX18gPSBhY3Rp dmVfcmVxdWVzdF9wdXQocnFbY291bnRdKTsKIAorCQlpZiAoZXJyKQorCQkJcHJfZXJyKCJbJXNd IFJlcXVlc3QgcHV0ICMlbGQgZmFpbGVkOiAlZCFcbiIsIGVuZ2luZS0+bmFtZSwgY291bnQsIGVy cik7CisKIAkJLyogS2VlcCB0aGUgZmlyc3QgZXJyb3IgKi8KIAkJaWYgKCFlcnIpCiAJCQllcnIg PSBlcnJfXzsKQEAgLTkxNiwxMCArOTk1LDEzIEBAIHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZW5n aW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAogCQlzdHJ1Y3QgYWN0aXZlX2VuZ2luZSB0aHJlYWRz W0k5MTVfTlVNX0VOR0lORVNdID0ge307CiAJCXVuc2lnbmVkIGxvbmcgZGV2aWNlID0gaTkxNV9y ZXNldF9jb3VudChnbG9iYWwpOwogCQl1bnNpZ25lZCBsb25nIGNvdW50ID0gMCwgcmVwb3J0ZWQ7 CisJCWJvb2wgdXNpbmdfZ3VjID0gaW50ZWxfZW5naW5lX3VzZXNfZ3VjKGVuZ2luZSk7CiAJCUlH VF9USU1FT1VUKGVuZF90aW1lKTsKIAotCQlpZiAoZmxhZ3MgJiBURVNUX0FDVElWRSAmJgotCQkg ICAgIWludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQoZW5naW5lKSkKKwkJaWYgKGZsYWdzICYg VEVTVF9BQ1RJVkUpIHsKKwkJCWlmICghaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChlbmdp bmUpKQorCQkJCWNvbnRpbnVlOworCQl9IGVsc2UgaWYgKHVzaW5nX2d1YykKIAkJCWNvbnRpbnVl OwogCiAJCWlmICghd2FpdF9mb3JfaWRsZShlbmdpbmUpKSB7CkBAIC05NDksNiArMTAzMSw3IEBA IHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZW5naW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAogCQkJ CQkgICJpZ3QvJXMiLCBvdGhlci0+bmFtZSk7CiAJCQlpZiAoSVNfRVJSKHRzaykpIHsKIAkJCQll cnIgPSBQVFJfRVJSKHRzayk7CisJCQkJcHJfZXJyKCJbJXNdIFRocmVhZCBzcGF3biBmYWlsZWQ6 ICVkIVxuIiwgZW5naW5lLT5uYW1lLCBlcnIpOwogCQkJCWdvdG8gdW53aW5kOwogCQkJfQogCkBA IC05NTgsMTYgKzEwNDEsMjcgQEAgc3RhdGljIGludCBfX2lndF9yZXNldF9lbmdpbmVzKHN0cnVj dCBpbnRlbF9ndCAqZ3QsCiAKIAkJeWllbGQoKTsgLyogc3RhcnQgYWxsIHRocmVhZHMgYmVmb3Jl IHdlIGJlZ2luICovCiAKLQkJc3RfZW5naW5lX2hlYXJ0YmVhdF9kaXNhYmxlKGVuZ2luZSk7CisJ CXN0X2VuZ2luZV9oZWFydGJlYXRfZGlzYWJsZV9ub19wbShlbmdpbmUpOwogCQlzZXRfYml0KEk5 MTVfUkVTRVRfRU5HSU5FICsgaWQsICZndC0+cmVzZXQuZmxhZ3MpOwogCQlkbyB7CiAJCQlzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSA9IE5VTEw7CisJCQlzdHJ1Y3QgaW50ZWxfc2VsZnRlc3Rfc2F2 ZWRfcG9saWN5IHNhdmVkOworCQkJaW50IGVycjI7CisKKwkJCWVyciA9IGludGVsX3NlbGZ0ZXN0 X21vZGlmeV9wb2xpY3koZW5naW5lLCAmc2F2ZWQsCisJCQkJCQkJICAgU0VMRlRFU1RfU0NIRURV TEVSX01PRElGWV9GQVNUX1JFU0VUKTsKKwkJCWlmIChlcnIpIHsKKwkJCQlwcl9lcnIoIlslc10g TW9kaWZ5IHBvbGljeSBmYWlsZWQ6ICVkIVxuIiwgZW5naW5lLT5uYW1lLCBlcnIpOworCQkJCWJy ZWFrOworCQkJfQogCiAJCQlpZiAoZmxhZ3MgJiBURVNUX0FDVElWRSkgewogCQkJCXJxID0gaGFu Z19jcmVhdGVfcmVxdWVzdCgmaCwgZW5naW5lKTsKIAkJCQlpZiAoSVNfRVJSKHJxKSkgewogCQkJ CQllcnIgPSBQVFJfRVJSKHJxKTsKLQkJCQkJYnJlYWs7CisJCQkJCXByX2VycigiWyVzXSBDcmVh dGUgaGFuZyByZXF1ZXN0IGZhaWxlZDogJWQhXG4iLAorCQkJCQkgICAgICAgZW5naW5lLT5uYW1l LCBlcnIpOworCQkJCQlnb3RvIHJlc3RvcmU7CiAJCQkJfQogCiAJCQkJaTkxNV9yZXF1ZXN0X2dl dChycSk7CkBAIC05ODMsMzIgKzEwNzcsNDQgQEAgc3RhdGljIGludCBfX2lndF9yZXNldF9lbmdp bmVzKHN0cnVjdCBpbnRlbF9ndCAqZ3QsCiAKIAkJCQkJaTkxNV9yZXF1ZXN0X3B1dChycSk7CiAJ CQkJCWVyciA9IC1FSU87Ci0JCQkJCWJyZWFrOworCQkJCQlnb3RvIHJlc3RvcmU7CiAJCQkJfQor CQkJfSBlbHNlIHsKKwkJCQlpbnRlbF9lbmdpbmVfcG1fZ2V0KGVuZ2luZSk7CiAJCQl9CiAKLQkJ CWVyciA9IGludGVsX2VuZ2luZV9yZXNldChlbmdpbmUsIE5VTEwpOwotCQkJaWYgKGVycikgewot CQkJCXByX2VycigiaTkxNV9yZXNldF9lbmdpbmUoJXM6JXMpOiBmYWlsZWQsIGVycj0lZFxuIiwK LQkJCQkgICAgICAgZW5naW5lLT5uYW1lLCB0ZXN0X25hbWUsIGVycik7Ci0JCQkJYnJlYWs7CisJ CQlpZiAoIXVzaW5nX2d1YykgeworCQkJCWVyciA9IGludGVsX2VuZ2luZV9yZXNldChlbmdpbmUs IE5VTEwpOworCQkJCWlmIChlcnIpIHsKKwkJCQkJcHJfZXJyKCJpOTE1X3Jlc2V0X2VuZ2luZSgl czolcyk6IGZhaWxlZCwgZXJyPSVkXG4iLAorCQkJCQkgICAgICAgZW5naW5lLT5uYW1lLCB0ZXN0 X25hbWUsIGVycik7CisJCQkJCWdvdG8gcmVzdG9yZTsKKwkJCQl9CisJCQl9CisKKwkJCWlmIChy cSkgeworCQkJCS8qIEVuc3VyZSB0aGUgcmVzZXQgaGFwcGVucyBhbmQga2lsbHMgdGhlIGVuZ2lu ZSAqLworCQkJCWVyciA9IGludGVsX3NlbGZ0ZXN0X3dhaXRfZm9yX3JxKHJxKTsKKwkJCQlpZiAo ZXJyKQorCQkJCQlwcl9lcnIoIlslc10gV2FpdCBmb3IgcmVxdWVzdCAlbGxkOiVsbGQgWzB4JTA0 WF0gZmFpbGVkOiAlZCFcbiIsCisJCQkJCSAgICAgICBlbmdpbmUtPm5hbWUsIHJxLT5mZW5jZS5j b250ZXh0LAorCQkJCQkgICAgICAgcnEtPmZlbmNlLnNlcW5vLCBycS0+Y29udGV4dC0+Z3VjX2lk LCBlcnIpOwogCQkJfQogCiAJCQljb3VudCsrOwogCiAJCQlpZiAocnEpIHsKIAkJCQlpZiAocnEt PmZlbmNlLmVycm9yICE9IC1FSU8pIHsKLQkJCQkJcHJfZXJyKCJpOTE1X3Jlc2V0X2VuZ2luZSgl czolcyk6IgotCQkJCQkgICAgICAgIiBmYWlsZWQgdG8gcmVzZXQgcmVxdWVzdCAlbGx4OiVsbGRc biIsCisJCQkJCXByX2VycigiaTkxNV9yZXNldF9lbmdpbmUoJXM6JXMpOiBmYWlsZWQgdG8gcmVz ZXQgcmVxdWVzdCAlbGxkOiVsbGQgWzB4JTA0WF1cbiIsCiAJCQkJCSAgICAgICBlbmdpbmUtPm5h bWUsIHRlc3RfbmFtZSwKIAkJCQkJICAgICAgIHJxLT5mZW5jZS5jb250ZXh0LAotCQkJCQkgICAg ICAgcnEtPmZlbmNlLnNlcW5vKTsKKwkJCQkJICAgICAgIHJxLT5mZW5jZS5zZXFubywgcnEtPmNv bnRleHQtPmd1Y19pZCk7CiAJCQkJCWk5MTVfcmVxdWVzdF9wdXQocnEpOwogCiAJCQkJCUdFTV9U UkFDRV9EVU1QKCk7CiAJCQkJCWludGVsX2d0X3NldF93ZWRnZWQoZ3QpOwogCQkJCQllcnIgPSAt RUlPOwotCQkJCQlicmVhazsKKwkJCQkJZ290byByZXN0b3JlOwogCQkJCX0KIAogCQkJCWlmIChp OTE1X3JlcXVlc3Rfd2FpdChycSwgMCwgSFogLyA1KSA8IDApIHsKQEAgLTEwMjcsMTIgKzExMzMs MTUgQEAgc3RhdGljIGludCBfX2lndF9yZXNldF9lbmdpbmVzKHN0cnVjdCBpbnRlbF9ndCAqZ3Qs CiAJCQkJCUdFTV9UUkFDRV9EVU1QKCk7CiAJCQkJCWludGVsX2d0X3NldF93ZWRnZWQoZ3QpOwog CQkJCQllcnIgPSAtRUlPOwotCQkJCQlicmVhazsKKwkJCQkJZ290byByZXN0b3JlOwogCQkJCX0K IAogCQkJCWk5MTVfcmVxdWVzdF9wdXQocnEpOwogCQkJfQogCisJCQlpZiAoIShmbGFncyAmIFRF U1RfQUNUSVZFKSkKKwkJCQlpbnRlbF9lbmdpbmVfcG1fcHV0KGVuZ2luZSk7CisKIAkJCWlmICgh KGZsYWdzICYgVEVTVF9TRUxGKSAmJiAhd2FpdF9mb3JfaWRsZShlbmdpbmUpKSB7CiAJCQkJc3Ry dWN0IGRybV9wcmludGVyIHAgPQogCQkJCQlkcm1faW5mb19wcmludGVyKGd0LT5pOTE1LT5kcm0u ZGV2KTsKQEAgLTEwNDQsMjIgKzExNTMsMzQgQEAgc3RhdGljIGludCBfX2lndF9yZXNldF9lbmdp bmVzKHN0cnVjdCBpbnRlbF9ndCAqZ3QsCiAJCQkJCQkgICIlc1xuIiwgZW5naW5lLT5uYW1lKTsK IAogCQkJCWVyciA9IC1FSU87Ci0JCQkJYnJlYWs7CisJCQkJZ290byByZXN0b3JlOwogCQkJfQor CityZXN0b3JlOgorCQkJZXJyMiA9IGludGVsX3NlbGZ0ZXN0X3Jlc3RvcmVfcG9saWN5KGVuZ2lu ZSwgJnNhdmVkKTsKKwkJCWlmIChlcnIyKQorCQkJCXByX2VycigiWyVzXSBSZXN0b3JlIHBvbGlj eSBmYWlsZWQ6ICVkIVxuIiwgZW5naW5lLT5uYW1lLCBlcnIyKTsKKwkJCWlmIChlcnIgPT0gMCkK KwkJCQllcnIgPSBlcnIyOworCQkJaWYgKGVycikKKwkJCQlicmVhazsKIAkJfSB3aGlsZSAodGlt ZV9iZWZvcmUoamlmZmllcywgZW5kX3RpbWUpKTsKIAkJY2xlYXJfYml0KEk5MTVfUkVTRVRfRU5H SU5FICsgaWQsICZndC0+cmVzZXQuZmxhZ3MpOwotCQlzdF9lbmdpbmVfaGVhcnRiZWF0X2VuYWJs ZShlbmdpbmUpOworCQlzdF9lbmdpbmVfaGVhcnRiZWF0X2VuYWJsZV9ub19wbShlbmdpbmUpOwog CiAJCXByX2luZm8oImk5MTVfcmVzZXRfZW5naW5lKCVzOiVzKTogJWx1IHJlc2V0c1xuIiwKIAkJ CWVuZ2luZS0+bmFtZSwgdGVzdF9uYW1lLCBjb3VudCk7CiAKLQkJcmVwb3J0ZWQgPSBpOTE1X3Jl c2V0X2VuZ2luZV9jb3VudChnbG9iYWwsIGVuZ2luZSk7Ci0JCXJlcG9ydGVkIC09IHRocmVhZHNb ZW5naW5lLT5pZF0ucmVzZXRzOwotCQlpZiAocmVwb3J0ZWQgIT0gY291bnQpIHsKLQkJCXByX2Vy cigiaTkxNV9yZXNldF9lbmdpbmUoJXM6JXMpOiByZXNldCAlbHUgdGltZXMsIGJ1dCByZXBvcnRl ZCAlbHVcbiIsCi0JCQkgICAgICAgZW5naW5lLT5uYW1lLCB0ZXN0X25hbWUsIGNvdW50LCByZXBv cnRlZCk7Ci0JCQlpZiAoIWVycikKLQkJCQllcnIgPSAtRUlOVkFMOworCQkvKiBHdUMgYmFzZWQg cmVzZXRzIGFyZSBub3QgbG9nZ2VkIHBlciBlbmdpbmUgKi8KKwkJaWYgKCF1c2luZ19ndWMpIHsK KwkJCXJlcG9ydGVkID0gaTkxNV9yZXNldF9lbmdpbmVfY291bnQoZ2xvYmFsLCBlbmdpbmUpOwor CQkJcmVwb3J0ZWQgLT0gdGhyZWFkc1tlbmdpbmUtPmlkXS5yZXNldHM7CisJCQlpZiAocmVwb3J0 ZWQgIT0gY291bnQpIHsKKwkJCQlwcl9lcnIoImk5MTVfcmVzZXRfZW5naW5lKCVzOiVzKTogcmVz ZXQgJWx1IHRpbWVzLCBidXQgcmVwb3J0ZWQgJWx1XG4iLAorCQkJCSAgICAgICBlbmdpbmUtPm5h bWUsIHRlc3RfbmFtZSwgY291bnQsIHJlcG9ydGVkKTsKKwkJCQlpZiAoIWVycikKKwkJCQkJZXJy ID0gLUVJTlZBTDsKKwkJCX0KIAkJfQogCiB1bndpbmQ6CkBAIC0xMDc4LDE1ICsxMTk5LDE4IEBA IHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZW5naW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAogCQkJ fQogCQkJcHV0X3Rhc2tfc3RydWN0KHRocmVhZHNbdG1wXS50YXNrKTsKIAotCQkJaWYgKG90aGVy LT51YWJpX2NsYXNzICE9IGVuZ2luZS0+dWFiaV9jbGFzcyAmJgotCQkJICAgIHRocmVhZHNbdG1w XS5yZXNldHMgIT0KLQkJCSAgICBpOTE1X3Jlc2V0X2VuZ2luZV9jb3VudChnbG9iYWwsIG90aGVy KSkgewotCQkJCXByX2VycigiSW5ub2NlbnQgZW5naW5lICVzIHdhcyByZXNldCAoY291bnQ9JWxk KVxuIiwKLQkJCQkgICAgICAgb3RoZXItPm5hbWUsCi0JCQkJICAgICAgIGk5MTVfcmVzZXRfZW5n aW5lX2NvdW50KGdsb2JhbCwgb3RoZXIpIC0KLQkJCQkgICAgICAgdGhyZWFkc1t0bXBdLnJlc2V0 cyk7Ci0JCQkJaWYgKCFlcnIpCi0JCQkJCWVyciA9IC1FSU5WQUw7CisJCQkvKiBHdUMgYmFzZWQg cmVzZXRzIGFyZSBub3QgbG9nZ2VkIHBlciBlbmdpbmUgKi8KKwkJCWlmICghdXNpbmdfZ3VjKSB7 CisJCQkJaWYgKG90aGVyLT51YWJpX2NsYXNzICE9IGVuZ2luZS0+dWFiaV9jbGFzcyAmJgorCQkJ CSAgICB0aHJlYWRzW3RtcF0ucmVzZXRzICE9CisJCQkJICAgIGk5MTVfcmVzZXRfZW5naW5lX2Nv dW50KGdsb2JhbCwgb3RoZXIpKSB7CisJCQkJCXByX2VycigiSW5ub2NlbnQgZW5naW5lICVzIHdh cyByZXNldCAoY291bnQ9JWxkKVxuIiwKKwkJCQkJICAgICAgIG90aGVyLT5uYW1lLAorCQkJCQkg ICAgICAgaTkxNV9yZXNldF9lbmdpbmVfY291bnQoZ2xvYmFsLCBvdGhlcikgLQorCQkJCQkgICAg ICAgdGhyZWFkc1t0bXBdLnJlc2V0cyk7CisJCQkJCWlmICghZXJyKQorCQkJCQkJZXJyID0gLUVJ TlZBTDsKKwkJCQl9CiAJCQl9CiAJCX0KIApAQCAtMTEwMSw4ICsxMjI1LDEwIEBAIHN0YXRpYyBp bnQgX19pZ3RfcmVzZXRfZW5naW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAogCQkJYnJlYWs7CiAK IAkJZXJyID0gaWd0X2ZsdXNoX3Rlc3QoZ3QtPmk5MTUpOwotCQlpZiAoZXJyKQorCQlpZiAoZXJy KSB7CisJCQlwcl9lcnIoIlslc10gRmx1c2ggZmFpbGVkOiAlZCFcbiIsIGVuZ2luZS0+bmFtZSwg ZXJyKTsKIAkJCWJyZWFrOworCQl9CiAJfQogCiAJaWYgKGludGVsX2d0X2lzX3dlZGdlZChndCkp CkBAIC0xMTgwLDEyICsxMzA2LDE1IEBAIHN0YXRpYyBpbnQgaWd0X3Jlc2V0X3dhaXQodm9pZCAq YXJnKQogCWlndF9nbG9iYWxfcmVzZXRfbG9jayhndCk7CiAKIAllcnIgPSBoYW5nX2luaXQoJmgs IGd0KTsKLQlpZiAoZXJyKQorCWlmIChlcnIpIHsKKwkJcHJfZXJyKCJbJXNdIEhhbmcgaW5pdCBm YWlsZWQ6ICVkIVxuIiwgZW5naW5lLT5uYW1lLCBlcnIpOwogCQlnb3RvIHVubG9jazsKKwl9CiAK IAlycSA9IGhhbmdfY3JlYXRlX3JlcXVlc3QoJmgsIGVuZ2luZSk7CiAJaWYgKElTX0VSUihycSkp IHsKIAkJZXJyID0gUFRSX0VSUihycSk7CisJCXByX2VycigiWyVzXSBDcmVhdGUgaGFuZyByZXF1 ZXN0IGZhaWxlZDogJWQhXG4iLCBlbmdpbmUtPm5hbWUsIGVycik7CiAJCWdvdG8gZmluaTsKIAl9 CiAKQEAgLTEzMTAsMTIgKzE0MzksMTUgQEAgc3RhdGljIGludCBfX2lndF9yZXNldF9ldmljdF92 bWEoc3RydWN0IGludGVsX2d0ICpndCwKIAkvKiBDaGVjayB0aGF0IHdlIGNhbiByZWNvdmVyIGFu IHVuYmluZCBzdHVjayBvbiBhIGhhbmdpbmcgcmVxdWVzdCAqLwogCiAJZXJyID0gaGFuZ19pbml0 KCZoLCBndCk7Ci0JaWYgKGVycikKKwlpZiAoZXJyKSB7CisJCXByX2VycigiWyVzXSBIYW5nIGlu aXQgZmFpbGVkOiAlZCFcbiIsIGVuZ2luZS0+bmFtZSwgZXJyKTsKIAkJcmV0dXJuIGVycjsKKwl9 CiAKIAlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2ludGVybmFsKGd0LT5pOTE1LCBTWl8x TSk7CiAJaWYgKElTX0VSUihvYmopKSB7CiAJCWVyciA9IFBUUl9FUlIob2JqKTsKKwkJcHJfZXJy KCJbJXNdIENyZWF0ZSBvYmplY3QgZmFpbGVkOiAlZCFcbiIsIGVuZ2luZS0+bmFtZSwgZXJyKTsK IAkJZ290byBmaW5pOwogCX0KIApAQCAtMTMzMCwxMiArMTQ2MiwxNCBAQCBzdGF0aWMgaW50IF9f aWd0X3Jlc2V0X2V2aWN0X3ZtYShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAogCWFyZy52bWEgPSBpOTE1 X3ZtYV9pbnN0YW5jZShvYmosIHZtLCBOVUxMKTsKIAlpZiAoSVNfRVJSKGFyZy52bWEpKSB7CiAJ CWVyciA9IFBUUl9FUlIoYXJnLnZtYSk7CisJCXByX2VycigiWyVzXSBWTUEgaW5zdGFuY2UgZmFp bGVkOiAlZCFcbiIsIGVuZ2luZS0+bmFtZSwgZXJyKTsKIAkJZ290byBvdXRfb2JqOwogCX0KIAog CXJxID0gaGFuZ19jcmVhdGVfcmVxdWVzdCgmaCwgZW5naW5lKTsKIAlpZiAoSVNfRVJSKHJxKSkg ewogCQllcnIgPSBQVFJfRVJSKHJxKTsKKwkJcHJfZXJyKCJbJXNdIENyZWF0ZSBoYW5nIHJlcXVl c3QgZmFpbGVkOiAlZCFcbiIsIGVuZ2luZS0+bmFtZSwgZXJyKTsKIAkJZ290byBvdXRfb2JqOwog CX0KIApAQCAtMTM0Nyw2ICsxNDgxLDcgQEAgc3RhdGljIGludCBfX2lndF9yZXNldF9ldmljdF92 bWEoc3RydWN0IGludGVsX2d0ICpndCwKIAllcnIgPSBpOTE1X3ZtYV9waW4oYXJnLnZtYSwgMCwg MCwgcGluX2ZsYWdzKTsKIAlpZiAoZXJyKSB7CiAJCWk5MTVfcmVxdWVzdF9hZGQocnEpOworCQlw cl9lcnIoIlslc10gVk1BIHBpbiBmYWlsZWQ6ICVkIVxuIiwgZW5naW5lLT5uYW1lLCBlcnIpOwog CQlnb3RvIG91dF9vYmo7CiAJfQogCkBAIC0xMzYzLDggKzE0OTgsMTQgQEAgc3RhdGljIGludCBf X2lndF9yZXNldF9ldmljdF92bWEoc3RydWN0IGludGVsX2d0ICpndCwKIAlpOTE1X3ZtYV9sb2Nr KGFyZy52bWEpOwogCWVyciA9IGk5MTVfcmVxdWVzdF9hd2FpdF9vYmplY3QocnEsIGFyZy52bWEt Pm9iaiwKIAkJCQkJZmxhZ3MgJiBFWEVDX09CSkVDVF9XUklURSk7Ci0JaWYgKGVyciA9PSAwKQor CWlmIChlcnIgPT0gMCkgewogCQllcnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShhcmcudm1h LCBycSwgZmxhZ3MpOworCQlpZiAoZXJyKQorCQkJcHJfZXJyKCJbJXNdIE1vdmUgdG8gYWN0aXZl IGZhaWxlZDogJWQhXG4iLCBlbmdpbmUtPm5hbWUsIGVycik7CisJfSBlbHNlIHsKKwkJcHJfZXJy KCJbJXNdIFJlcXVlc3QgYXdhaXQgZmFpbGVkOiAlZCFcbiIsIGVuZ2luZS0+bmFtZSwgZXJyKTsK Kwl9CisKIAlpOTE1X3ZtYV91bmxvY2soYXJnLnZtYSk7CiAKIAlpZiAoZmxhZ3MgJiBFWEVDX09C SkVDVF9ORUVEU19GRU5DRSkKQEAgLTEzOTIsNiArMTUzMyw3IEBAIHN0YXRpYyBpbnQgX19pZ3Rf cmVzZXRfZXZpY3Rfdm1hKHN0cnVjdCBpbnRlbF9ndCAqZ3QsCiAJdHNrID0ga3RocmVhZF9ydW4o Zm4sICZhcmcsICJpZ3QvZXZpY3Rfdm1hIik7CiAJaWYgKElTX0VSUih0c2spKSB7CiAJCWVyciA9 IFBUUl9FUlIodHNrKTsKKwkJcHJfZXJyKCJbJXNdIFRocmVhZCBzcGF3biBmYWlsZWQ6ICVkIVxu IiwgZW5naW5lLT5uYW1lLCBlcnIpOwogCQl0c2sgPSBOVUxMOwogCQlnb3RvIG91dF9yZXNldDsK IAl9CkBAIC0xNTA4LDE3ICsxNjUwLDI5IEBAIHN0YXRpYyBpbnQgaWd0X3Jlc2V0X3F1ZXVlKHZv aWQgKmFyZykKIAkJZ290byB1bmxvY2s7CiAKIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBndCwg aWQpIHsKKwkJc3RydWN0IGludGVsX3NlbGZ0ZXN0X3NhdmVkX3BvbGljeSBzYXZlZDsKIAkJc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcHJldjsKIAkJSUdUX1RJTUVPVVQoZW5kX3RpbWUpOwogCQl1bnNp Z25lZCBpbnQgY291bnQ7CisJCWJvb2wgdXNpbmdfZ3VjID0gaW50ZWxfZW5naW5lX3VzZXNfZ3Vj KGVuZ2luZSk7CiAKIAkJaWYgKCFpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKGVuZ2luZSkp CiAJCQljb250aW51ZTsKIAorCQlpZiAodXNpbmdfZ3VjKSB7CisJCQllcnIgPSBpbnRlbF9zZWxm dGVzdF9tb2RpZnlfcG9saWN5KGVuZ2luZSwgJnNhdmVkLAorCQkJCQkJCSAgIFNFTEZURVNUX1ND SEVEVUxFUl9NT0RJRllfTk9fSEFOR0NIRUNLKTsKKwkJCWlmIChlcnIpIHsKKwkJCQlwcl9lcnIo Ilslc10gTW9kaWZ5IHBvbGljeSBmYWlsZWQ6ICVkIVxuIiwgZW5naW5lLT5uYW1lLCBlcnIpOwor CQkJCWdvdG8gZmluaTsKKwkJCX0KKwkJfQorCiAJCXByZXYgPSBoYW5nX2NyZWF0ZV9yZXF1ZXN0 KCZoLCBlbmdpbmUpOwogCQlpZiAoSVNfRVJSKHByZXYpKSB7CiAJCQllcnIgPSBQVFJfRVJSKHBy ZXYpOwotCQkJZ290byBmaW5pOworCQkJcHJfZXJyKCJbJXNdIENyZWF0ZSAncHJldicgaGFuZyBy ZXF1ZXN0IGZhaWxlZDogJWQhXG4iLCBlbmdpbmUtPm5hbWUsIGVycik7CisJCQlnb3RvIHJlc3Rv cmU7CiAJCX0KIAogCQlpOTE1X3JlcXVlc3RfZ2V0KHByZXYpOwpAQCAtMTUzMiw3ICsxNjg2LDgg QEAgc3RhdGljIGludCBpZ3RfcmVzZXRfcXVldWUodm9pZCAqYXJnKQogCQkJcnEgPSBoYW5nX2Ny ZWF0ZV9yZXF1ZXN0KCZoLCBlbmdpbmUpOwogCQkJaWYgKElTX0VSUihycSkpIHsKIAkJCQllcnIg PSBQVFJfRVJSKHJxKTsKLQkJCQlnb3RvIGZpbmk7CisJCQkJcHJfZXJyKCJbJXNdIENyZWF0ZSBo YW5nIHJlcXVlc3QgZmFpbGVkOiAlZCFcbiIsIGVuZ2luZS0+bmFtZSwgZXJyKTsKKwkJCQlnb3Rv IHJlc3RvcmU7CiAJCQl9CiAKIAkJCWk5MTVfcmVxdWVzdF9nZXQocnEpOwpAQCAtMTU1Nyw3ICsx NzEyLDcgQEAgc3RhdGljIGludCBpZ3RfcmVzZXRfcXVldWUodm9pZCAqYXJnKQogCiAJCQkJR0VN X1RSQUNFX0RVTVAoKTsKIAkJCQlpbnRlbF9ndF9zZXRfd2VkZ2VkKGd0KTsKLQkJCQlnb3RvIGZp bmk7CisJCQkJZ290byByZXN0b3JlOwogCQkJfQogCiAJCQlpZiAoIXdhaXRfdW50aWxfcnVubmlu ZygmaCwgcHJldikpIHsKQEAgLTE1NzUsNyArMTczMCw3IEBAIHN0YXRpYyBpbnQgaWd0X3Jlc2V0 X3F1ZXVlKHZvaWQgKmFyZykKIAkJCQlpbnRlbF9ndF9zZXRfd2VkZ2VkKGd0KTsKIAogCQkJCWVy ciA9IC1FSU87Ci0JCQkJZ290byBmaW5pOworCQkJCWdvdG8gcmVzdG9yZTsKIAkJCX0KIAogCQkJ cmVzZXRfY291bnQgPSBmYWtlX2hhbmdjaGVjayhndCwgQklUKGlkKSk7CkBAIC0xNTg2LDcgKzE3 NDEsNyBAQCBzdGF0aWMgaW50IGlndF9yZXNldF9xdWV1ZSh2b2lkICphcmcpCiAJCQkJaTkxNV9y ZXF1ZXN0X3B1dChycSk7CiAJCQkJaTkxNV9yZXF1ZXN0X3B1dChwcmV2KTsKIAkJCQllcnIgPSAt RUlOVkFMOwotCQkJCWdvdG8gZmluaTsKKwkJCQlnb3RvIHJlc3RvcmU7CiAJCQl9CiAKIAkJCWlm IChycS0+ZmVuY2UuZXJyb3IpIHsKQEAgLTE1OTUsNyArMTc1MCw3IEBAIHN0YXRpYyBpbnQgaWd0 X3Jlc2V0X3F1ZXVlKHZvaWQgKmFyZykKIAkJCQlpOTE1X3JlcXVlc3RfcHV0KHJxKTsKIAkJCQlp OTE1X3JlcXVlc3RfcHV0KHByZXYpOwogCQkJCWVyciA9IC1FSU5WQUw7Ci0JCQkJZ290byBmaW5p OworCQkJCWdvdG8gcmVzdG9yZTsKIAkJCX0KIAogCQkJaWYgKGk5MTVfcmVzZXRfY291bnQoZ2xv YmFsKSA9PSByZXNldF9jb3VudCkgewpAQCAtMTYwMyw3ICsxNzU4LDcgQEAgc3RhdGljIGludCBp Z3RfcmVzZXRfcXVldWUodm9pZCAqYXJnKQogCQkJCWk5MTVfcmVxdWVzdF9wdXQocnEpOwogCQkJ CWk5MTVfcmVxdWVzdF9wdXQocHJldik7CiAJCQkJZXJyID0gLUVJTlZBTDsKLQkJCQlnb3RvIGZp bmk7CisJCQkJZ290byByZXN0b3JlOwogCQkJfQogCiAJCQlpOTE1X3JlcXVlc3RfcHV0KHByZXYp OwpAQCAtMTYxOCw5ICsxNzczLDI0IEBAIHN0YXRpYyBpbnQgaWd0X3Jlc2V0X3F1ZXVlKHZvaWQg KmFyZykKIAogCQlpOTE1X3JlcXVlc3RfcHV0KHByZXYpOwogCi0JCWVyciA9IGlndF9mbHVzaF90 ZXN0KGd0LT5pOTE1KTsKK3Jlc3RvcmU6CisJCWlmICh1c2luZ19ndWMpIHsKKwkJCWludCBlcnIy ID0gaW50ZWxfc2VsZnRlc3RfcmVzdG9yZV9wb2xpY3koZW5naW5lLCAmc2F2ZWQpOworCisJCQlp ZiAoZXJyMikKKwkJCQlwcl9lcnIoIiVzOiVkPiBbJXNdIFJlc3RvcmUgcG9saWN5IGZhaWxlZDog JWQhXG4iLAorCQkJCSAgICAgICBfX2Z1bmNfXywgX19MSU5FX18sIGVuZ2luZS0+bmFtZSwgZXJy Mik7CisJCQlpZiAoZXJyID09IDApCisJCQkJZXJyID0gZXJyMjsKKwkJfQogCQlpZiAoZXJyKQor CQkJZ290byBmaW5pOworCisJCWVyciA9IGlndF9mbHVzaF90ZXN0KGd0LT5pOTE1KTsKKwkJaWYg KGVycikgeworCQkJcHJfZXJyKCJbJXNdIEZsdXNoIGZhaWxlZDogJWQhXG4iLCBlbmdpbmUtPm5h bWUsIGVycik7CiAJCQlicmVhazsKKwkJfQogCX0KIAogZmluaToKQEAgLTE2NTMsMTIgKzE4MjMs MTUgQEAgc3RhdGljIGludCBpZ3RfaGFuZGxlX2Vycm9yKHZvaWQgKmFyZykKIAkJcmV0dXJuIDA7 CiAKIAllcnIgPSBoYW5nX2luaXQoJmgsIGd0KTsKLQlpZiAoZXJyKQorCWlmIChlcnIpIHsKKwkJ cHJfZXJyKCJbJXNdIEhhbmcgaW5pdCBmYWlsZWQ6ICVkIVxuIiwgZW5naW5lLT5uYW1lLCBlcnIp OwogCQlyZXR1cm4gZXJyOworCX0KIAogCXJxID0gaGFuZ19jcmVhdGVfcmVxdWVzdCgmaCwgZW5n aW5lKTsKIAlpZiAoSVNfRVJSKHJxKSkgewogCQllcnIgPSBQVFJfRVJSKHJxKTsKKwkJcHJfZXJy KCJbJXNdIENyZWF0ZSBoYW5nIHJlcXVlc3QgZmFpbGVkOiAlZCFcbiIsIGVuZ2luZS0+bmFtZSwg ZXJyKTsKIAkJZ290byBlcnJfZmluaTsKIAl9CiAKQEAgLTE3NDMsMTIgKzE5MTYsMTUgQEAgc3Rh dGljIGludCBpZ3RfYXRvbWljX3Jlc2V0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCiAJCXJldHVybiBlcnI7CiAKIAllcnIgPSBoYW5nX2luaXQoJmgsIGVuZ2luZS0+Z3Qp OwotCWlmIChlcnIpCisJaWYgKGVycikgeworCQlwcl9lcnIoIlslc10gSGFuZyBpbml0IGZhaWxl ZDogJWQhXG4iLCBlbmdpbmUtPm5hbWUsIGVycik7CiAJCXJldHVybiBlcnI7CisJfQogCiAJcnEg PSBoYW5nX2NyZWF0ZV9yZXF1ZXN0KCZoLCBlbmdpbmUpOwogCWlmIChJU19FUlIocnEpKSB7CiAJ CWVyciA9IFBUUl9FUlIocnEpOworCQlwcl9lcnIoIlslc10gQ3JlYXRlIGhhbmcgcmVxdWVzdCBm YWlsZWQ6ICVkIVxuIiwgZW5naW5lLT5uYW1lLCBlcnIpOwogCQlnb3RvIG91dDsKIAl9CiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYwppbmRleCA4NzYzYmJlY2EwZjcuLjEz ZDI1YmYyYTk0YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rf bW9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYwpAQCAt MTAsNiArMTAsNyBAQAogI2luY2x1ZGUgImdlbS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmgiCiAj aW5jbHVkZSAic2VsZnRlc3RzL2lndF9yZXNldC5oIgogI2luY2x1ZGUgInNlbGZ0ZXN0cy9pZ3Rf c3Bpbm5lci5oIgorI2luY2x1ZGUgInNlbGZ0ZXN0cy9pbnRlbF9zY2hlZHVsZXJfaGVscGVycy5o IgogCiBzdHJ1Y3QgbGl2ZV9tb2NzIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfbW9jc190YWJsZSB0YWJs ZTsKQEAgLTMxOCw3ICszMTksOCBAQCBzdGF0aWMgaW50IGxpdmVfbW9jc19jbGVhbih2b2lkICph cmcpCiB9CiAKIHN0YXRpYyBpbnQgYWN0aXZlX2VuZ2luZV9yZXNldChzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqY2UsCi0JCQkgICAgICAgY29uc3QgY2hhciAqcmVhc29uKQorCQkJICAgICAgIGNvbnN0 IGNoYXIgKnJlYXNvbiwKKwkJCSAgICAgICBib29sIHVzaW5nX2d1YykKIHsKIAlzdHJ1Y3QgaWd0 X3NwaW5uZXIgc3BpbjsKIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKQEAgLTMzNSw5ICszMzcs MTMgQEAgc3RhdGljIGludCBhY3RpdmVfZW5naW5lX3Jlc2V0KHN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjZSwKIAl9CiAKIAllcnIgPSByZXF1ZXN0X2FkZF9zcGluKHJxLCAmc3Bpbik7Ci0JaWYgKGVy ciA9PSAwKQorCWlmIChlcnIgPT0gMCAmJiAhdXNpbmdfZ3VjKQogCQllcnIgPSBpbnRlbF9lbmdp bmVfcmVzZXQoY2UtPmVuZ2luZSwgcmVhc29uKTsKIAorCS8qIEVuc3VyZSB0aGUgcmVzZXQgaGFw cGVucyBhbmQga2lsbHMgdGhlIGVuZ2luZSAqLworCWlmIChlcnIgPT0gMCkKKwkJZXJyID0gaW50 ZWxfc2VsZnRlc3Rfd2FpdF9mb3JfcnEocnEpOworCiAJaWd0X3NwaW5uZXJfZW5kKCZzcGluKTsK IAlpZ3Rfc3Bpbm5lcl9maW5pKCZzcGluKTsKIApAQCAtMzQ1LDIxICszNTEsMjMgQEAgc3RhdGlj IGludCBhY3RpdmVfZW5naW5lX3Jlc2V0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKIH0KIAog c3RhdGljIGludCBfX2xpdmVfbW9jc19yZXNldChzdHJ1Y3QgbGl2ZV9tb2NzICptb2NzLAotCQkJ ICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCisJCQkgICAgIHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSwgYm9vbCB1c2luZ19ndWMpCiB7CiAJc3RydWN0IGludGVsX2d0ICpndCA9IGNlLT5l bmdpbmUtPmd0OwogCWludCBlcnI7CiAKIAlpZiAoaW50ZWxfaGFzX3Jlc2V0X2VuZ2luZShndCkp IHsKLQkJZXJyID0gaW50ZWxfZW5naW5lX3Jlc2V0KGNlLT5lbmdpbmUsICJtb2NzIik7Ci0JCWlm IChlcnIpCi0JCQlyZXR1cm4gZXJyOwotCi0JCWVyciA9IGNoZWNrX21vY3NfZW5naW5lKG1vY3Ms IGNlKTsKLQkJaWYgKGVycikKLQkJCXJldHVybiBlcnI7CisJCWlmICghdXNpbmdfZ3VjKSB7CisJ CQllcnIgPSBpbnRlbF9lbmdpbmVfcmVzZXQoY2UtPmVuZ2luZSwgIm1vY3MiKTsKKwkJCWlmIChl cnIpCisJCQkJcmV0dXJuIGVycjsKKworCQkJZXJyID0gY2hlY2tfbW9jc19lbmdpbmUobW9jcywg Y2UpOworCQkJaWYgKGVycikKKwkJCQlyZXR1cm4gZXJyOworCQl9CiAKLQkJZXJyID0gYWN0aXZl X2VuZ2luZV9yZXNldChjZSwgIm1vY3MiKTsKKwkJZXJyID0gYWN0aXZlX2VuZ2luZV9yZXNldChj ZSwgIm1vY3MiLCB1c2luZ19ndWMpOwogCQlpZiAoZXJyKQogCQkJcmV0dXJuIGVycjsKIApAQCAt Mzk1LDE5ICs0MDMsMzMgQEAgc3RhdGljIGludCBsaXZlX21vY3NfcmVzZXQodm9pZCAqYXJnKQog CiAJaWd0X2dsb2JhbF9yZXNldF9sb2NrKGd0KTsKIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBn dCwgaWQpIHsKKwkJYm9vbCB1c2luZ19ndWMgPSBpbnRlbF9lbmdpbmVfdXNlc19ndWMoZW5naW5l KTsKKwkJc3RydWN0IGludGVsX3NlbGZ0ZXN0X3NhdmVkX3BvbGljeSBzYXZlZDsKIAkJc3RydWN0 IGludGVsX2NvbnRleHQgKmNlOworCQlpbnQgZXJyMjsKKworCQllcnIgPSBpbnRlbF9zZWxmdGVz dF9tb2RpZnlfcG9saWN5KGVuZ2luZSwgJnNhdmVkLAorCQkJCQkJICAgU0VMRlRFU1RfU0NIRURV TEVSX01PRElGWV9GQVNUX1JFU0VUKTsKKwkJaWYgKGVycikKKwkJCWJyZWFrOwogCiAJCWNlID0g bW9jc19jb250ZXh0X2NyZWF0ZShlbmdpbmUpOwogCQlpZiAoSVNfRVJSKGNlKSkgewogCQkJZXJy ID0gUFRSX0VSUihjZSk7Ci0JCQlicmVhazsKKwkJCWdvdG8gcmVzdG9yZTsKIAkJfQogCiAJCWlu dGVsX2VuZ2luZV9wbV9nZXQoZW5naW5lKTsKLQkJZXJyID0gX19saXZlX21vY3NfcmVzZXQoJm1v Y3MsIGNlKTsKLQkJaW50ZWxfZW5naW5lX3BtX3B1dChlbmdpbmUpOwogCisJCWVyciA9IF9fbGl2 ZV9tb2NzX3Jlc2V0KCZtb2NzLCBjZSwgdXNpbmdfZ3VjKTsKKworCQlpbnRlbF9lbmdpbmVfcG1f cHV0KGVuZ2luZSk7CiAJCWludGVsX2NvbnRleHRfcHV0KGNlKTsKKworcmVzdG9yZToKKwkJZXJy MiA9IGludGVsX3NlbGZ0ZXN0X3Jlc3RvcmVfcG9saWN5KGVuZ2luZSwgJnNhdmVkKTsKKwkJaWYg KGVyciA9PSAwKQorCQkJZXJyID0gZXJyMjsKIAkJaWYgKGVycikKIAkJCWJyZWFrOwogCX0KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93b3JrYXJvdW5kcy5jCmluZGV4IDdh MzhjZTQwZmViMi4uZTYyM2FjNDVmNGFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9zZWxmdGVzdF93b3JrYXJvdW5kcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3NlbGZ0ZXN0X3dvcmthcm91bmRzLmMKQEAgLTEyLDYgKzEyLDcgQEAKICNpbmNsdWRlICJzZWxm dGVzdHMvaWd0X2ZsdXNoX3Rlc3QuaCIKICNpbmNsdWRlICJzZWxmdGVzdHMvaWd0X3Jlc2V0Lmgi CiAjaW5jbHVkZSAic2VsZnRlc3RzL2lndF9zcGlubmVyLmgiCisjaW5jbHVkZSAic2VsZnRlc3Rz L2ludGVsX3NjaGVkdWxlcl9oZWxwZXJzLmgiCiAjaW5jbHVkZSAic2VsZnRlc3RzL21vY2tfZHJt LmgiCiAKICNpbmNsdWRlICJnZW0vc2VsZnRlc3RzL2lndF9nZW1fdXRpbHMuaCIKQEAgLTI2MSwy OCArMjYyLDM0IEBAIHN0YXRpYyBpbnQgZG9fZW5naW5lX3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKIAlyZXR1cm4gaW50ZWxfZW5naW5lX3Jlc2V0KGVuZ2luZSwgImxpdmVf d29ya2Fyb3VuZHMiKTsKIH0KIAorc3RhdGljIGludCBkb19ndWNfcmVzZXQoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQoreworCS8qIEN1cnJlbnRseSBhIG5vLW9wIGFzIHRoZSByZXNl dCBpcyBoYW5kbGVkIGJ5IEd1QyAqLworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50CiBzd2l0 Y2hfdG9fc2NyYXRjaF9jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKLQkJ CSAgc3RydWN0IGlndF9zcGlubmVyICpzcGluKQorCQkJICBzdHJ1Y3QgaWd0X3NwaW5uZXIgKnNw aW4sCisJCQkgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKipycSkKIHsKIAlzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqY2U7Ci0Jc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7CiAJaW50IGVyciA9IDA7CiAKIAlj ZSA9IGludGVsX2NvbnRleHRfY3JlYXRlKGVuZ2luZSk7CiAJaWYgKElTX0VSUihjZSkpCiAJCXJl dHVybiBQVFJfRVJSKGNlKTsKIAotCXJxID0gaWd0X3NwaW5uZXJfY3JlYXRlX3JlcXVlc3Qoc3Bp biwgY2UsIE1JX05PT1ApOworCSpycSA9IGlndF9zcGlubmVyX2NyZWF0ZV9yZXF1ZXN0KHNwaW4s IGNlLCBNSV9OT09QKTsKIAlpbnRlbF9jb250ZXh0X3B1dChjZSk7CiAKLQlpZiAoSVNfRVJSKHJx KSkgeworCWlmIChJU19FUlIoKnJxKSkgewogCQlzcGluID0gTlVMTDsKLQkJZXJyID0gUFRSX0VS UihycSk7CisJCWVyciA9IFBUUl9FUlIoKnJxKTsKIAkJZ290byBlcnI7CiAJfQogCi0JZXJyID0g cmVxdWVzdF9hZGRfc3BpbihycSwgc3Bpbik7CisJZXJyID0gcmVxdWVzdF9hZGRfc3BpbigqcnEs IHNwaW4pOwogZXJyOgogCWlmIChlcnIgJiYgc3BpbikKIAkJaWd0X3NwaW5uZXJfZW5kKHNwaW4p OwpAQCAtMjk2LDYgKzMwMyw3IEBAIHN0YXRpYyBpbnQgY2hlY2tfd2hpdGVsaXN0X2Fjcm9zc19y ZXNldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiB7CiAJc3RydWN0IGludGVsX2Nv bnRleHQgKmNlLCAqdG1wOwogCXN0cnVjdCBpZ3Rfc3Bpbm5lciBzcGluOworCXN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxOwogCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwogCWludCBlcnI7CiAKQEAg LTMxNiwxMyArMzI0LDI0IEBAIHN0YXRpYyBpbnQgY2hlY2tfd2hpdGVsaXN0X2Fjcm9zc19yZXNl dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJCWdvdG8gb3V0X3NwaW47CiAJfQog Ci0JZXJyID0gc3dpdGNoX3RvX3NjcmF0Y2hfY29udGV4dChlbmdpbmUsICZzcGluKTsKKwllcnIg PSBzd2l0Y2hfdG9fc2NyYXRjaF9jb250ZXh0KGVuZ2luZSwgJnNwaW4sICZycSk7CiAJaWYgKGVy cikKIAkJZ290byBvdXRfc3BpbjsKIAorCS8qIEVuc3VyZSB0aGUgc3Bpbm5lciBoYXNuJ3QgYWJv cnRlZCAqLworCWlmIChpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSkgeworCQlwcl9lcnIoIiVz IHNwaW5uZXIgZmFpbGVkIHRvIHN0YXJ0XG4iLCBuYW1lKTsKKwkJZXJyID0gLUVUSU1FRE9VVDsK KwkJZ290byBvdXRfc3BpbjsKKwl9CisKIAl3aXRoX2ludGVsX3J1bnRpbWVfcG0oZW5naW5lLT51 bmNvcmUtPnJwbSwgd2FrZXJlZikKIAkJZXJyID0gcmVzZXQoZW5naW5lKTsKIAorCS8qIEVuc3Vy ZSB0aGUgcmVzZXQgaGFwcGVucyBhbmQga2lsbHMgdGhlIGVuZ2luZSAqLworCWlmIChlcnIgPT0g MCkKKwkJZXJyID0gaW50ZWxfc2VsZnRlc3Rfd2FpdF9mb3JfcnEocnEpOworCiAJaWd0X3NwaW5u ZXJfZW5kKCZzcGluKTsKIAogCWlmIChlcnIpIHsKQEAgLTc4Nyw5ICs4MDYsMjggQEAgc3RhdGlj IGludCBsaXZlX3Jlc2V0X3doaXRlbGlzdCh2b2lkICphcmcpCiAJCQljb250aW51ZTsKIAogCQlp ZiAoaW50ZWxfaGFzX3Jlc2V0X2VuZ2luZShndCkpIHsKLQkJCWVyciA9IGNoZWNrX3doaXRlbGlz dF9hY3Jvc3NfcmVzZXQoZW5naW5lLAotCQkJCQkJCSAgIGRvX2VuZ2luZV9yZXNldCwKLQkJCQkJ CQkgICAiZW5naW5lIik7CisJCQlpZiAoaW50ZWxfZW5naW5lX3VzZXNfZ3VjKGVuZ2luZSkpIHsK KwkJCQlzdHJ1Y3QgaW50ZWxfc2VsZnRlc3Rfc2F2ZWRfcG9saWN5IHNhdmVkOworCQkJCWludCBl cnIyOworCisJCQkJZXJyID0gaW50ZWxfc2VsZnRlc3RfbW9kaWZ5X3BvbGljeShlbmdpbmUsICZz YXZlZCwKKwkJCQkJCQkJICAgU0VMRlRFU1RfU0NIRURVTEVSX01PRElGWV9GQVNUX1JFU0VUKTsK KwkJCQlpZiAoZXJyKQorCQkJCQlnb3RvIG91dDsKKworCQkJCWVyciA9IGNoZWNrX3doaXRlbGlz dF9hY3Jvc3NfcmVzZXQoZW5naW5lLAorCQkJCQkJCQkgICBkb19ndWNfcmVzZXQsCisJCQkJCQkJ CSAgICJndWMiKTsKKworCQkJCWVycjIgPSBpbnRlbF9zZWxmdGVzdF9yZXN0b3JlX3BvbGljeShl bmdpbmUsICZzYXZlZCk7CisJCQkJaWYgKGVyciA9PSAwKQorCQkJCQllcnIgPSBlcnIyOworCQkJ fSBlbHNlIHsKKwkJCQllcnIgPSBjaGVja193aGl0ZWxpc3RfYWNyb3NzX3Jlc2V0KGVuZ2luZSwK KwkJCQkJCQkJICAgZG9fZW5naW5lX3Jlc2V0LAorCQkJCQkJCQkgICAiZW5naW5lIik7CisJCQl9 CisKIAkJCWlmIChlcnIpCiAJCQkJZ290byBvdXQ7CiAJCX0KQEAgLTEyMzUsMzEgKzEyNzMsNDEg QEAgbGl2ZV9lbmdpbmVfcmVzZXRfd29ya2Fyb3VuZHModm9pZCAqYXJnKQogCXJlZmVyZW5jZV9s aXN0c19pbml0KGd0LCBsaXN0cyk7CiAKIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBndCwgaWQp IHsKKwkJc3RydWN0IGludGVsX3NlbGZ0ZXN0X3NhdmVkX3BvbGljeSBzYXZlZDsKKwkJYm9vbCB1 c2luZ19ndWMgPSBpbnRlbF9lbmdpbmVfdXNlc19ndWMoZW5naW5lKTsKIAkJYm9vbCBvazsKKwkJ aW50IHJldDI7CiAKIAkJcHJfaW5mbygiVmVyaWZ5aW5nIGFmdGVyICVzIHJlc2V0Li4uXG4iLCBl bmdpbmUtPm5hbWUpOworCQlyZXQgPSBpbnRlbF9zZWxmdGVzdF9tb2RpZnlfcG9saWN5KGVuZ2lu ZSwgJnNhdmVkLAorCQkJCQkJICAgU0VMRlRFU1RfU0NIRURVTEVSX01PRElGWV9GQVNUX1JFU0VU KTsKKwkJaWYgKHJldCkKKwkJCWJyZWFrOworCiAJCWNlID0gaW50ZWxfY29udGV4dF9jcmVhdGUo ZW5naW5lKTsKIAkJaWYgKElTX0VSUihjZSkpIHsKIAkJCXJldCA9IFBUUl9FUlIoY2UpOwotCQkJ YnJlYWs7CisJCQlnb3RvIHJlc3RvcmU7CiAJCX0KIAotCQlvayA9IHZlcmlmeV93YV9saXN0cyhn dCwgbGlzdHMsICJiZWZvcmUgcmVzZXQiKTsKLQkJaWYgKCFvaykgewotCQkJcmV0ID0gLUVTUkNI OwotCQkJZ290byBlcnI7Ci0JCX0KKwkJaWYgKCF1c2luZ19ndWMpIHsKKwkJCW9rID0gdmVyaWZ5 X3dhX2xpc3RzKGd0LCBsaXN0cywgImJlZm9yZSByZXNldCIpOworCQkJaWYgKCFvaykgeworCQkJ CXJldCA9IC1FU1JDSDsKKwkJCQlnb3RvIGVycjsKKwkJCX0KIAotCQlyZXQgPSBpbnRlbF9lbmdp bmVfcmVzZXQoZW5naW5lLCAibGl2ZV93b3JrYXJvdW5kczppZGxlIik7Ci0JCWlmIChyZXQpIHsK LQkJCXByX2VycigiJXM6IFJlc2V0IGZhaWxlZCB3aGlsZSBpZGxlXG4iLCBlbmdpbmUtPm5hbWUp OwotCQkJZ290byBlcnI7Ci0JCX0KKwkJCXJldCA9IGludGVsX2VuZ2luZV9yZXNldChlbmdpbmUs ICJsaXZlX3dvcmthcm91bmRzOmlkbGUiKTsKKwkJCWlmIChyZXQpIHsKKwkJCQlwcl9lcnIoIiVz OiBSZXNldCBmYWlsZWQgd2hpbGUgaWRsZVxuIiwgZW5naW5lLT5uYW1lKTsKKwkJCQlnb3RvIGVy cjsKKwkJCX0KIAotCQlvayA9IHZlcmlmeV93YV9saXN0cyhndCwgbGlzdHMsICJhZnRlciBpZGxl IHJlc2V0Iik7Ci0JCWlmICghb2spIHsKLQkJCXJldCA9IC1FU1JDSDsKLQkJCWdvdG8gZXJyOwor CQkJb2sgPSB2ZXJpZnlfd2FfbGlzdHMoZ3QsIGxpc3RzLCAiYWZ0ZXIgaWRsZSByZXNldCIpOwor CQkJaWYgKCFvaykgeworCQkJCXJldCA9IC1FU1JDSDsKKwkJCQlnb3RvIGVycjsKKwkJCX0KIAkJ fQogCiAJCXJldCA9IGlndF9zcGlubmVyX2luaXQoJnNwaW4sIGVuZ2luZS0+Z3QpOwpAQCAtMTI4 MCwyNSArMTMyOCw0MSBAQCBsaXZlX2VuZ2luZV9yZXNldF93b3JrYXJvdW5kcyh2b2lkICphcmcp CiAJCQlnb3RvIGVycjsKIAkJfQogCi0JCXJldCA9IGludGVsX2VuZ2luZV9yZXNldChlbmdpbmUs ICJsaXZlX3dvcmthcm91bmRzOmFjdGl2ZSIpOwotCQlpZiAocmV0KSB7Ci0JCQlwcl9lcnIoIiVz OiBSZXNldCBmYWlsZWQgb24gYW4gYWN0aXZlIHNwaW5uZXJcbiIsCi0JCQkgICAgICAgZW5naW5l LT5uYW1lKTsKLQkJCWlndF9zcGlubmVyX2ZpbmkoJnNwaW4pOwotCQkJZ290byBlcnI7CisJCS8q IEVuc3VyZSB0aGUgc3Bpbm5lciBoYXNuJ3QgYWJvcnRlZCAqLworCQlpZiAoaTkxNV9yZXF1ZXN0 X2NvbXBsZXRlZChycSkpIHsKKwkJCXJldCA9IC1FVElNRURPVVQ7CisJCQlnb3RvIHNraXA7CisJ CX0KKworCQlpZiAoIXVzaW5nX2d1YykgeworCQkJcmV0ID0gaW50ZWxfZW5naW5lX3Jlc2V0KGVu Z2luZSwgImxpdmVfd29ya2Fyb3VuZHM6YWN0aXZlIik7CisJCQlpZiAocmV0KSB7CisJCQkJcHJf ZXJyKCIlczogUmVzZXQgZmFpbGVkIG9uIGFuIGFjdGl2ZSBzcGlubmVyXG4iLAorCQkJCSAgICAg ICBlbmdpbmUtPm5hbWUpOworCQkJCWlndF9zcGlubmVyX2ZpbmkoJnNwaW4pOworCQkJCWdvdG8g ZXJyOworCQkJfQogCQl9CiAKKwkJLyogRW5zdXJlIHRoZSByZXNldCBoYXBwZW5zIGFuZCBraWxs cyB0aGUgZW5naW5lICovCisJCWlmIChyZXQgPT0gMCkKKwkJCXJldCA9IGludGVsX3NlbGZ0ZXN0 X3dhaXRfZm9yX3JxKHJxKTsKKworc2tpcDoKIAkJaWd0X3NwaW5uZXJfZW5kKCZzcGluKTsKIAkJ aWd0X3NwaW5uZXJfZmluaSgmc3Bpbik7CiAKIAkJb2sgPSB2ZXJpZnlfd2FfbGlzdHMoZ3QsIGxp c3RzLCAiYWZ0ZXIgYnVzeSByZXNldCIpOwotCQlpZiAoIW9rKSB7CisJCWlmICghb2spCiAJCQly ZXQgPSAtRVNSQ0g7Ci0JCQlnb3RvIGVycjsKLQkJfQogCiBlcnI6CiAJCWludGVsX2NvbnRleHRf cHV0KGNlKTsKKworcmVzdG9yZToKKwkJcmV0MiA9IGludGVsX3NlbGZ0ZXN0X3Jlc3RvcmVfcG9s aWN5KGVuZ2luZSwgJnNhdmVkKTsKKwkJaWYgKHJldCA9PSAwKQorCQkJcmV0ID0gcmV0MjsKIAkJ aWYgKHJldCkKIAkJCWJyZWFrOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2FiaS9ndWNfYWN0aW9uc19hYmkuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Vj L2FiaS9ndWNfYWN0aW9uc19hYmkuaAppbmRleCA1N2UxOGJhYmRmNGIuLmQ4MzJjOGYxMWMxMSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvYWJpL2d1Y19hY3Rpb25zX2Fi aS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2FiaS9ndWNfYWN0aW9uc19hYmku aApAQCAtMTQyLDYgKzE0Miw3IEBAIGVudW0gaW50ZWxfZ3VjX2FjdGlvbiB7CiAJSU5URUxfR1VD X0FDVElPTl9SRUdJU1RFUl9DT01NQU5EX1RSQU5TUE9SVF9CVUZGRVIgPSAweDQ1MDUsCiAJSU5U RUxfR1VDX0FDVElPTl9ERVJFR0lTVEVSX0NPTU1BTkRfVFJBTlNQT1JUX0JVRkZFUiA9IDB4NDUw NiwKIAlJTlRFTF9HVUNfQUNUSU9OX0RFUkVHSVNURVJfQ09OVEVYVF9ET05FID0gMHg0NjAwLAor CUlOVEVMX0dVQ19BQ1RJT05fUkVTRVRfQ0xJRU5UID0gMHg1NTA3LAogCUlOVEVMX0dVQ19BQ1RJ T05fTElNSVQKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX2d1Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmMKaW5kZXgg NjY2MWRjYjAyMjM5Li45NzkxMjhlMjgzNzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3VjL2ludGVsX2d1Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX2d1Yy5jCkBAIC0xODAsNiArMTgwLDExIEBAIHZvaWQgaW50ZWxfZ3VjX2luaXRfZWFybHko c3RydWN0IGludGVsX2d1YyAqZ3VjKQogCX0KIH0KIAordm9pZCBpbnRlbF9ndWNfaW5pdF9sYXRl KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwlpbnRlbF9ndWNfYWRzX2luaXRfbGF0ZShndWMp OworfQorCiBzdGF0aWMgdTMyIGd1Y19jdGxfZGVidWdfZmxhZ3Moc3RydWN0IGludGVsX2d1YyAq Z3VjKQogewogCXUzMiBsZXZlbCA9IGludGVsX2d1Y19sb2dfZ2V0X2xldmVsKCZndWMtPmxvZyk7 CkBAIC01MjQsNjUgKzUyOSwzNSBAQCBpbnQgaW50ZWxfZ3VjX2F1dGhfaHVjKHN0cnVjdCBpbnRl bF9ndWMgKmd1YywgdTMyIHJzYV9vZmZzZXQpCiAgKi8KIGludCBpbnRlbF9ndWNfc3VzcGVuZChz dHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiB7Ci0Jc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0g Z3VjX3RvX2d0KGd1YyktPnVuY29yZTsKIAlpbnQgcmV0OwotCXUzMiBzdGF0dXM7CiAJdTMyIGFj dGlvbltdID0gewotCQlJTlRFTF9HVUNfQUNUSU9OX0VOVEVSX1NfU1RBVEUsCi0JCUdVQ19QT1dF Ul9EMSwgLyogYW55IHZhbHVlIGdyZWF0ZXIgdGhhbiBHVUNfUE9XRVJfRDAgKi8KKwkJSU5URUxf R1VDX0FDVElPTl9SRVNFVF9DTElFTlQsCiAJfTsKIAotCS8qCi0JICogSWYgR3VDIGNvbW11bmlj YXRpb24gaXMgZW5hYmxlZCBidXQgc3VibWlzc2lvbiBpcyBub3Qgc3VwcG9ydGVkLAotCSAqIHdl IGRvIG5vdCBuZWVkIHRvIHN1c3BlbmQgdGhlIEd1Qy4KLQkgKi8KLQlpZiAoIWludGVsX2d1Y19z dWJtaXNzaW9uX2lzX3VzZWQoZ3VjKSB8fCAhaW50ZWxfZ3VjX2lzX3JlYWR5KGd1YykpCisJaWYg KCFpbnRlbF9ndWNfaXNfcmVhZHkoZ3VjKSkKIAkJcmV0dXJuIDA7CiAKLQkvKgotCSAqIFRoZSBF TlRFUl9TX1NUQVRFIGFjdGlvbiBxdWV1ZXMgdGhlIHNhdmUvcmVzdG9yZSBvcGVyYXRpb24gaW4g R3VDIEZXCi0JICogYW5kIHRoZW4gcmV0dXJucywgc28gd2FpdGluZyBvbiB0aGUgSDJHIGlzIG5v dCBlbm91Z2ggdG8gZ3VhcmFudGVlCi0JICogR3VDIGlzIGRvbmUuIFdoZW4gYWxsIHRoZSBwcm9j ZXNzaW5nIGlzIGRvbmUsIEd1QyB3cml0ZXMKLQkgKiBJTlRFTF9HVUNfU0xFRVBfU1RBVEVfU1VD Q0VTUyB0byBzY3JhdGNoIHJlZ2lzdGVyIDE0LCBzbyB3ZSBjYW4gcG9sbAotCSAqIG9uIHRoYXQu IE5vdGUgdGhhdCBHdUMgZG9lcyBub3QgZW5zdXJlIHRoYXQgdGhlIHZhbHVlIGluIHRoZSByZWdp c3RlcgotCSAqIGlzIGRpZmZlcmVudCBmcm9tIElOVEVMX0dVQ19TTEVFUF9TVEFURV9TVUNDRVNT IHdoaWxlIHRoZSBhY3Rpb24gaXMKLQkgKiBpbiBwcm9ncmVzcyBzbyB3ZSBuZWVkIHRvIHRha2Ug Y2FyZSBvZiB0aGF0IG91cnNlbHZlcyBhcyB3ZWxsLgotCSAqLwotCi0JaW50ZWxfdW5jb3JlX3dy aXRlKHVuY29yZSwgU09GVF9TQ1JBVENIKDE0KSwKLQkJCSAgIElOVEVMX0dVQ19TTEVFUF9TVEFU RV9JTlZBTElEX01BU0spOwotCi0JcmV0ID0gaW50ZWxfZ3VjX3NlbmQoZ3VjLCBhY3Rpb24sIEFS UkFZX1NJWkUoYWN0aW9uKSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCXJldCA9IF9f aW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIodW5jb3JlLCBTT0ZUX1NDUkFUQ0goMTQpLAotCQkJCQlJ TlRFTF9HVUNfU0xFRVBfU1RBVEVfSU5WQUxJRF9NQVNLLAotCQkJCQkwLCAwLCAxMCwgJnN0YXR1 cyk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCWlmIChzdGF0dXMgIT0gSU5URUxfR1VD X1NMRUVQX1NUQVRFX1NVQ0NFU1MpIHsKLQkJRFJNX0VSUk9SKCJHdUMgZmFpbGVkIHRvIGNoYW5n ZSBzbGVlcCBzdGF0ZS4gIgotCQkJICAiYWN0aW9uPTB4JXgsIGVycj0ldVxuIiwKLQkJCSAgYWN0 aW9uWzBdLCBzdGF0dXMpOwotCQlyZXR1cm4gLUVJTzsKKwlpZiAoaW50ZWxfZ3VjX3N1Ym1pc3Np b25faXNfdXNlZChndWMpKSB7CisJCS8qCisJCSAqIFRoaXMgSDJHIE1NSU8gY29tbWFuZCB0ZWFy cyBkb3duIHRoZSBHdUMgaW4gdHdvIHN0ZXBzLiBGaXJzdCBpdCB3aWxsCisJCSAqIGdlbmVyYXRl IGEgRzJIIENUQiBmb3IgZXZlcnkgYWN0aXZlIGNvbnRleHQgaW5kaWNhdGluZyBhIHJlc2V0LiBJ bgorCQkgKiBwcmFjdGljZSB0aGUgaTkxNSBzaG91bGRuJ3QgZXZlciBnZXQgYSBHMkggYXMgc3Vz cGVuZCBzaG91bGQgb25seSBiZQorCQkgKiBjYWxsZWQgd2hlbiB0aGUgR1BVIGlzIGlkbGUuIE5l eHQsIGl0IHRlYXJzIGRvd24gdGhlIENUQnMgYW5kIHRoaXMKKwkJICogSDJHIE1NSU8gY29tbWFu ZCBjb21wbGV0ZXMuCisJCSAqCisJCSAqIERvbid0IGFib3J0IG9uIGEgZmFpbHVyZSBjb2RlIGZy b20gdGhlIEd1Qy4gS2VlcCBnb2luZyBhbmQgZG8gdGhlCisJCSAqIGNsZWFuIHVwIGluIHNhbnRp emUoKSBhbmQgcmUtaW5pdGlhbGlzYXRpb24gb24gcmVzdW1lIGFuZCBob3BlZnVsbHkKKwkJICog dGhlIGVycm9yIGhlcmUgd29uJ3QgYmUgcHJvYmxlbWF0aWMuCisJCSAqLworCQlyZXQgPSBpbnRl bF9ndWNfc2VuZF9tbWlvKGd1YywgYWN0aW9uLCBBUlJBWV9TSVpFKGFjdGlvbiksIE5VTEwsIDAp OworCQlpZiAocmV0KQorCQkJRFJNX0VSUk9SKCJHdUMgc3VzcGVuZDogUkVTRVRfQ0xJRU5UIGFj dGlvbiBmYWlsZWQgd2l0aCBlcnJvciAlZCFcbiIsIHJldCk7CiAJfQogCi0JcmV0dXJuIDA7Ci19 CisJLyogU2lnbmFsIHRoYXQgdGhlIEd1QyBpc24ndCBydW5uaW5nLiAqLworCWludGVsX2d1Y19z YW5pdGl6ZShndWMpOwogCi0vKioKLSAqIGludGVsX2d1Y19yZXNldF9lbmdpbmUoKSAtIGFzayBH dUMgdG8gcmVzZXQgYW4gZW5naW5lCi0gKiBAZ3VjOglpbnRlbF9ndWMgc3RydWN0dXJlCi0gKiBA ZW5naW5lOgllbmdpbmUgdG8gYmUgcmVzZXQKLSAqLwotaW50IGludGVsX2d1Y19yZXNldF9lbmdp bmUoc3RydWN0IGludGVsX2d1YyAqZ3VjLAotCQkJICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQotewotCS8qIFhYWDogdG8gYmUgaW1wbGVtZW50ZWQgd2l0aCBzdWJtaXNzaW9uIGlu dGVyZmFjZSByZXdvcmsgKi8KLQotCXJldHVybiAtRU5PREVWOworCXJldHVybiAwOwogfQogCiAv KioKQEAgLTU5MSw3ICs1NjYsMTIgQEAgaW50IGludGVsX2d1Y19yZXNldF9lbmdpbmUoc3RydWN0 IGludGVsX2d1YyAqZ3VjLAogICovCiBpbnQgaW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgaW50ZWxf Z3VjICpndWMpCiB7Ci0JLyogWFhYOiB0byBiZSBpbXBsZW1lbnRlZCB3aXRoIHN1Ym1pc3Npb24g aW50ZXJmYWNlIHJld29yayAqLworCS8qCisJICogTkI6IFRoaXMgZnVuY3Rpb24gY2FuIHN0aWxs IGJlIGNhbGxlZCBldmVuIGlmIEd1QyBzdWJtaXNzaW9uIGlzCisJICogZGlzYWJsZWQsIGUuZy4g aWYgR3VDIGlzIGVuYWJsZWQgZm9yIEh1QyBhdXRoZW50aWNhdGlvbiBvbmx5LiBUaHVzLAorCSAq IGlmIGFueSBjb2RlIGlzIGxhdGVyIGFkZGVkIGhlcmUsIGl0IG11c3QgYmUgc3VwcG9ydCBkb2lu ZyBub3RoaW5nCisJICogaWYgc3VibWlzc2lvbiBpcyBkaXNhYmxlZCAoYXMgcGVyIGludGVsX2d1 Y19zdXNwZW5kKS4KKwkgKi8KIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91 Yy9pbnRlbF9ndWMuaAppbmRleCBkNDk4N2NkNzg5ZWEuLmE5NTQ3MDY5ZWU3ZSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmgKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmgKQEAgLTU1LDEwICs1NSwxMyBAQCBzdHJ1Y3Qg aW50ZWxfZ3VjIHsKIAlzdHJ1Y3QgaWRhIGd1Y19pZHM7CiAJc3RydWN0IGxpc3RfaGVhZCBndWNf aWRfbGlzdDsKIAorCWJvb2wgc3VibWlzc2lvbl9zdXBwb3J0ZWQ7CiAJYm9vbCBzdWJtaXNzaW9u X3NlbGVjdGVkOwogCiAJc3RydWN0IGk5MTVfdm1hICphZHNfdm1hOwogCXN0cnVjdCBfX2d1Y19h ZHNfYmxvYiAqYWRzX2Jsb2I7CisJdTMyIGFkc19yZWdzZXRfc2l6ZTsKKwl1MzIgYWRzX2dvbGRl bl9jdHh0X3NpemU7CiAKIAlzdHJ1Y3QgaTkxNV92bWEgKmxyY19kZXNjX3Bvb2w7CiAJdm9pZCAq bHJjX2Rlc2NfcG9vbF92YWRkcjsKQEAgLTE4Miw2ICsxODUsNyBAQCBzdGF0aWMgaW5saW5lIHUz MiBpbnRlbF9ndWNfZ2d0dF9vZmZzZXQoc3RydWN0IGludGVsX2d1YyAqZ3VjLAogfQogCiB2b2lk IGludGVsX2d1Y19pbml0X2Vhcmx5KHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7Cit2b2lkIGludGVs X2d1Y19pbml0X2xhdGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKTsKIHZvaWQgaW50ZWxfZ3VjX2lu aXRfc2VuZF9yZWdzKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7CiB2b2lkIGludGVsX2d1Y193cml0 ZV9wYXJhbXMoc3RydWN0IGludGVsX2d1YyAqZ3VjKTsKIGludCBpbnRlbF9ndWNfaW5pdChzdHJ1 Y3QgaW50ZWxfZ3VjICpndWMpOwpAQCAtMjI0LDkgKzIyOCwyNSBAQCBzdGF0aWMgaW5saW5lIGJv b2wgaW50ZWxfZ3VjX2lzX3JlYWR5KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAlyZXR1cm4gaW50 ZWxfZ3VjX2lzX2Z3X3J1bm5pbmcoZ3VjKSAmJiBpbnRlbF9ndWNfY3RfZW5hYmxlZCgmZ3VjLT5j dCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9ndWNfcmVzZXRfaW50ZXJydXB0cyhz dHJ1Y3QgaW50ZWxfZ3VjICpndWMpCit7CisJZ3VjLT5pbnRlcnJ1cHRzLnJlc2V0KGd1Yyk7Cit9 CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9ndWNfZW5hYmxlX2ludGVycnVwdHMoc3RydWN0 IGludGVsX2d1YyAqZ3VjKQoreworCWd1Yy0+aW50ZXJydXB0cy5lbmFibGUoZ3VjKTsKK30KKwor c3RhdGljIGlubGluZSB2b2lkIGludGVsX2d1Y19kaXNhYmxlX2ludGVycnVwdHMoc3RydWN0IGlu dGVsX2d1YyAqZ3VjKQoreworCWd1Yy0+aW50ZXJydXB0cy5kaXNhYmxlKGd1Yyk7Cit9CisKIHN0 YXRpYyBpbmxpbmUgaW50IGludGVsX2d1Y19zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMp CiB7CiAJaW50ZWxfdWNfZndfc2FuaXRpemUoJmd1Yy0+ZncpOworCWludGVsX2d1Y19kaXNhYmxl X2ludGVycnVwdHMoZ3VjKTsKIAlpbnRlbF9ndWNfY3Rfc2FuaXRpemUoJmd1Yy0+Y3QpOwogCWd1 Yy0+bW1pb19tc2cgPSAwOwogCkBAIC0yNDksMTMgKzI2OSwyNSBAQCBzdGF0aWMgaW5saW5lIHZv aWQgaW50ZWxfZ3VjX2Rpc2FibGVfbXNnKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyIG1hc2sp CiAKIGludCBpbnRlbF9ndWNfd2FpdF9mb3JfaWRsZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGxv bmcgdGltZW91dCk7CiAKLWludCBpbnRlbF9ndWNfcmVzZXRfZW5naW5lKHN0cnVjdCBpbnRlbF9n dWMgKmd1YywKLQkJCSAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Ci0KIGludCBp bnRlbF9ndWNfZGVyZWdpc3Rlcl9kb25lX3Byb2Nlc3NfbXNnKHN0cnVjdCBpbnRlbF9ndWMgKmd1 YywKIAkJCQkJICBjb25zdCB1MzIgKm1zZywgdTMyIGxlbik7CiBpbnQgaW50ZWxfZ3VjX3NjaGVk X2RvbmVfcHJvY2Vzc19tc2coc3RydWN0IGludGVsX2d1YyAqZ3VjLAogCQkJCSAgICAgY29uc3Qg dTMyICptc2csIHUzMiBsZW4pOworaW50IGludGVsX2d1Y19jb250ZXh0X3Jlc2V0X3Byb2Nlc3Nf bXNnKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKKwkJCQkJY29uc3QgdTMyICptc2csIHUzMiBsZW4p OworaW50IGludGVsX2d1Y19lbmdpbmVfZmFpbHVyZV9wcm9jZXNzX21zZyhzdHJ1Y3QgaW50ZWxf Z3VjICpndWMsCisJCQkJCSBjb25zdCB1MzIgKm1zZywgdTMyIGxlbik7CisKK3ZvaWQgaW50ZWxf Z3VjX2ZpbmRfaHVuZ19jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CisK K2ludCBpbnRlbF9ndWNfZ2xvYmFsX3BvbGljaWVzX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMpOworCit2b2lkIGludGVsX2d1Y19jb250ZXh0X2JhbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y2UsIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKTsKKwordm9pZCBpbnRlbF9ndWNfc3VibWlzc2lv bl9yZXNldF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7Cit2b2lkIGludGVsX2d1Y19z dWJtaXNzaW9uX3Jlc2V0KHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgYm9vbCBzdGFsbGVkKTsKK3Zv aWQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25fcmVzZXRfZmluaXNoKHN0cnVjdCBpbnRlbF9ndWMgKmd1 Yyk7Cit2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX2NhbmNlbF9yZXF1ZXN0cyhzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMpOwogCiB2b2lkIGludGVsX2d1Y19sb2FkX3N0YXR1cyhzdHJ1Y3QgaW50ZWxf Z3VjICpndWMsIHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19hZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Y19hZHMuYwppbmRleCBiODIxNDU2NTJkNTcuLjY5MjY5MTliY2FjNiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Fkcy5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19hZHMuYwpAQCAtMyw4ICsz LDExIEBACiAgKiBDb3B5cmlnaHQgwqkgMjAxNC0yMDE5IEludGVsIENvcnBvcmF0aW9uCiAgKi8K IAorI2luY2x1ZGUgPGxpbnV4L2JzZWFyY2guaD4KKwogI2luY2x1ZGUgImd0L2ludGVsX2d0Lmgi CiAjaW5jbHVkZSAiZ3QvaW50ZWxfbHJjLmgiCisjaW5jbHVkZSAiZ3Qvc2htZW1fdXRpbHMuaCIK ICNpbmNsdWRlICJpbnRlbF9ndWNfYWRzLmgiCiAjaW5jbHVkZSAiaW50ZWxfZ3VjX2Z3aWYuaCIK ICNpbmNsdWRlICJpbnRlbF91Yy5oIgpAQCAtMjMsNiArMjYsMTUgQEAKICAqICAgICAgfCBndWNf cG9saWNpZXMgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAqICAgICAgKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAqICAgICAgfCBndWNfZ3Rfc3lzdGVtX2lu Zm8gICAgICAgICAgICAgICAgICAgIHwKKyAqICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsgPD09IHN0YXRpYworICogICAgICB8IGd1Y19tbWlvX3JlZ1tjb3Vu dEFdIChlbmdpbmUgMC4wKSAgICAgfAorICogICAgICB8IGd1Y19tbWlvX3JlZ1tjb3VudEJdIChl bmdpbmUgMC4xKSAgICAgfAorICogICAgICB8IGd1Y19tbWlvX3JlZ1tjb3VudENdIChlbmdpbmUg MS4wKSAgICAgfAorICogICAgICB8ICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfAorICogICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA8 PT0gZHluYW1pYworICogICAgICB8IHBhZGRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfAorICogICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA8 PT0gNEsgYWxpZ25lZAorICogICAgICB8IGdvbGRlbiBjb250ZXh0cyAgICAgICAgICAgICAgICAg ICAgICAgfAogICogICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t KwogICogICAgICB8IHBhZGRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICog ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA8PT0gNEsgYWxp Z25lZApAQCAtMzUsMTYgKzQ3LDQ5IEBAIHN0cnVjdCBfX2d1Y19hZHNfYmxvYiB7CiAJc3RydWN0 IGd1Y19hZHMgYWRzOwogCXN0cnVjdCBndWNfcG9saWNpZXMgcG9saWNpZXM7CiAJc3RydWN0IGd1 Y19ndF9zeXN0ZW1faW5mbyBzeXN0ZW1faW5mbzsKKwkvKiBGcm9tIGhlcmUgb24sIGxvY2F0aW9u IGlzIGR5bmFtaWMhIFJlZmVyIHRvIGFib3ZlIGRpYWdyYW0uICovCisJc3RydWN0IGd1Y19tbWlv X3JlZyByZWdzZXRbMF07CiB9IF9fcGFja2VkOwogCitzdGF0aWMgdTMyIGd1Y19hZHNfcmVnc2V0 X3NpemUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCUdFTV9CVUdfT04oIWd1Yy0+YWRzX3Jl Z3NldF9zaXplKTsKKwlyZXR1cm4gZ3VjLT5hZHNfcmVnc2V0X3NpemU7Cit9CisKK3N0YXRpYyB1 MzIgZ3VjX2Fkc19nb2xkZW5fY3R4dF9zaXplKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwly ZXR1cm4gUEFHRV9BTElHTihndWMtPmFkc19nb2xkZW5fY3R4dF9zaXplKTsKK30KKwogc3RhdGlj IHUzMiBndWNfYWRzX3ByaXZhdGVfZGF0YV9zaXplKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIHsK IAlyZXR1cm4gUEFHRV9BTElHTihndWMtPmZ3LnByaXZhdGVfZGF0YV9zaXplKTsKIH0KIAorc3Rh dGljIHUzMiBndWNfYWRzX3JlZ3NldF9vZmZzZXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQorewor CXJldHVybiBvZmZzZXRvZihzdHJ1Y3QgX19ndWNfYWRzX2Jsb2IsIHJlZ3NldCk7Cit9CisKK3N0 YXRpYyB1MzIgZ3VjX2Fkc19nb2xkZW5fY3R4dF9vZmZzZXQoc3RydWN0IGludGVsX2d1YyAqZ3Vj KQoreworCXUzMiBvZmZzZXQ7CisKKwlvZmZzZXQgPSBndWNfYWRzX3JlZ3NldF9vZmZzZXQoZ3Vj KSArCisJCSBndWNfYWRzX3JlZ3NldF9zaXplKGd1Yyk7CisKKwlyZXR1cm4gUEFHRV9BTElHTihv ZmZzZXQpOworfQorCiBzdGF0aWMgdTMyIGd1Y19hZHNfcHJpdmF0ZV9kYXRhX29mZnNldChzdHJ1 Y3QgaW50ZWxfZ3VjICpndWMpCiB7Ci0JcmV0dXJuIFBBR0VfQUxJR04oc2l6ZW9mKHN0cnVjdCBf X2d1Y19hZHNfYmxvYikpOworCXUzMiBvZmZzZXQ7CisKKwlvZmZzZXQgPSBndWNfYWRzX2dvbGRl bl9jdHh0X29mZnNldChndWMpICsKKwkJIGd1Y19hZHNfZ29sZGVuX2N0eHRfc2l6ZShndWMpOwor CisJcmV0dXJuIFBBR0VfQUxJR04ob2Zmc2V0KTsKIH0KIAogc3RhdGljIHUzMiBndWNfYWRzX2Js b2Jfc2l6ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCkBAIC01MywxNSArOTgsNjggQEAgc3RhdGlj IHUzMiBndWNfYWRzX2Jsb2Jfc2l6ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAJICAgICAgIGd1 Y19hZHNfcHJpdmF0ZV9kYXRhX3NpemUoZ3VjKTsKIH0KIAotc3RhdGljIHZvaWQgZ3VjX3BvbGlj aWVzX2luaXQoc3RydWN0IGd1Y19wb2xpY2llcyAqcG9saWNpZXMpCitzdGF0aWMgdm9pZCBndWNf cG9saWNpZXNfaW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHN0cnVjdCBndWNfcG9saWNpZXMg KnBvbGljaWVzKQogeworCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBndWNfdG9fZ3QoZ3VjKTsKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGd0LT5pOTE1OworCiAJcG9saWNpZXMtPmRw Y19wcm9tb3RlX3RpbWUgPSBHTE9CQUxfUE9MSUNZX0RFRkFVTFRfRFBDX1BST01PVEVfVElNRV9V UzsKIAlwb2xpY2llcy0+bWF4X251bV93b3JrX2l0ZW1zID0gR0xPQkFMX1BPTElDWV9NQVhfTlVN X1dJOwotCS8qIERpc2FibGUgYXV0b21hdGljIHJlc2V0cyBhcyBub3QgeWV0IHN1cHBvcnRlZC4g Ki8KLQlwb2xpY2llcy0+Z2xvYmFsX2ZsYWdzID0gR0xPQkFMX1BPTElDWV9ESVNBQkxFX0VOR0lO RV9SRVNFVDsKKworCXBvbGljaWVzLT5nbG9iYWxfZmxhZ3MgPSAwOworCWlmIChpOTE1LT5wYXJh bXMucmVzZXQgPCAyKQorCQlwb2xpY2llcy0+Z2xvYmFsX2ZsYWdzIHw9IEdMT0JBTF9QT0xJQ1lf RElTQUJMRV9FTkdJTkVfUkVTRVQ7CisKIAlwb2xpY2llcy0+aXNfdmFsaWQgPSAxOwogfQogCit2 b2lkIGludGVsX2d1Y19hZHNfcHJpbnRfcG9saWN5X2luZm8oc3RydWN0IGludGVsX2d1YyAqZ3Vj LAorCQkJCSAgICAgc3RydWN0IGRybV9wcmludGVyICpkcCkKK3sKKwlzdHJ1Y3QgX19ndWNfYWRz X2Jsb2IgKmJsb2IgPSBndWMtPmFkc19ibG9iOworCisJaWYgKHVubGlrZWx5KCFibG9iKSkKKwkJ cmV0dXJuOworCisJZHJtX3ByaW50ZihkcCwgIkdsb2JhbCBzY2hlZHVsaW5nIHBvbGljaWVzOlxu Iik7CisJZHJtX3ByaW50ZihkcCwgIiAgRFBDIHByb21vdGUgdGltZSAgID0gJXVcbiIsIGJsb2It PnBvbGljaWVzLmRwY19wcm9tb3RlX3RpbWUpOworCWRybV9wcmludGYoZHAsICIgIE1heCBudW0g d29yayBpdGVtcyA9ICV1XG4iLCBibG9iLT5wb2xpY2llcy5tYXhfbnVtX3dvcmtfaXRlbXMpOwor CWRybV9wcmludGYoZHAsICIgIEZsYWdzICAgICAgICAgICAgICA9ICV1XG4iLCBibG9iLT5wb2xp Y2llcy5nbG9iYWxfZmxhZ3MpOworfQorCitzdGF0aWMgaW50IGd1Y19hY3Rpb25fcG9saWNpZXNf dXBkYXRlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyIHBvbGljeV9vZmZzZXQpCit7CisJdTMy IGFjdGlvbltdID0geworCQlJTlRFTF9HVUNfQUNUSU9OX0dMT0JBTF9TQ0hFRF9QT0xJQ1lfQ0hB TkdFLAorCQlwb2xpY3lfb2Zmc2V0CisJfTsKKworCXJldHVybiBpbnRlbF9ndWNfc2VuZF9idXN5 X2xvb3AoZ3VjLCBhY3Rpb24sIEFSUkFZX1NJWkUoYWN0aW9uKSwgMCwgdHJ1ZSk7Cit9CisKK2lu dCBpbnRlbF9ndWNfZ2xvYmFsX3BvbGljaWVzX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMp Cit7CisJc3RydWN0IF9fZ3VjX2Fkc19ibG9iICpibG9iID0gZ3VjLT5hZHNfYmxvYjsKKwlzdHJ1 Y3QgaW50ZWxfZ3QgKmd0ID0gZ3VjX3RvX2d0KGd1Yyk7CisJaW50ZWxfd2FrZXJlZl90IHdha2Vy ZWY7CisJaW50IHJldDsKKworCWlmICghYmxvYikKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOworCisJ R0VNX0JVR19PTighYmxvYi0+YWRzLnNjaGVkdWxlcl9wb2xpY2llcyk7CisKKwlndWNfcG9saWNp ZXNfaW5pdChndWMsICZibG9iLT5wb2xpY2llcyk7CisKKwlpZiAoIWludGVsX2d1Y19pc19yZWFk eShndWMpKQorCQlyZXR1cm4gMDsKKworCXdpdGhfaW50ZWxfcnVudGltZV9wbSgmZ3QtPmk5MTUt PnJ1bnRpbWVfcG0sIHdha2VyZWYpCisJCXJldCA9IGd1Y19hY3Rpb25fcG9saWNpZXNfdXBkYXRl KGd1YywgYmxvYi0+YWRzLnNjaGVkdWxlcl9wb2xpY2llcyk7CisKKwlyZXR1cm4gcmV0OworfQor CiBzdGF0aWMgdm9pZCBndWNfbWFwcGluZ190YWJsZV9pbml0KHN0cnVjdCBpbnRlbF9ndCAqZ3Qs CiAJCQkJICAgc3RydWN0IGd1Y19ndF9zeXN0ZW1faW5mbyAqc3lzdGVtX2luZm8pCiB7CkBAIC04 NCw1MyArMTgyLDMyNCBAQCBzdGF0aWMgdm9pZCBndWNfbWFwcGluZ190YWJsZV9pbml0KHN0cnVj dCBpbnRlbF9ndCAqZ3QsCiB9CiAKIC8qCi0gKiBUaGUgZmlyc3QgODAgZHdvcmRzIG9mIHRoZSBy ZWdpc3RlciBzdGF0ZSBjb250ZXh0LCBjb250YWluaW5nIHRoZQotICogZXhlY2xpc3RzIGFuZCBw cGd0dCByZWdpc3RlcnMuCisgKiBUaGUgc2F2ZS9yZXN0b3JlIHJlZ2lzdGVyIGxpc3QgbXVzdCBi ZSBwcmUtY2FsY3VsYXRlZCB0byBhIHRlbXBvcmFyeQorICogYnVmZmVyIG9mIGRyaXZlciBkZWZp bmVkIHNpemUgYmVmb3JlIGl0IGNhbiBiZSBnZW5lcmF0ZWQgaW4gcGxhY2UKKyAqIGluc2lkZSB0 aGUgQURTLgogICovCi0jZGVmaW5lIExSX0hXX0NPTlRFWFRfU0laRQkoODAgKiBzaXplb2YodTMy KSkKKyNkZWZpbmUgTUFYX01NSU9fUkVHUwkxMjgJLyogQXJiaXRyYXJ5IHNpemUsIGluY3JlYXNl IGFzIG5lZWRlZCAqLworc3RydWN0IHRlbXBfcmVnc2V0IHsKKwlzdHJ1Y3QgZ3VjX21taW9fcmVn ICpyZWdpc3RlcnM7CisJdTMyIHVzZWQ7CisJdTMyIHNpemU7Cit9OwogCi1zdGF0aWMgdm9pZCBf X2d1Y19hZHNfaW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCitzdGF0aWMgaW50IGd1Y19tbWlv X3JlZ19jbXAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKK3sKKwljb25zdCBzdHJ1Y3Qg Z3VjX21taW9fcmVnICpyYSA9IGE7CisJY29uc3Qgc3RydWN0IGd1Y19tbWlvX3JlZyAqcmIgPSBi OworCisJcmV0dXJuIChpbnQpcmEtPm9mZnNldCAtIChpbnQpcmItPm9mZnNldDsKK30KKworc3Rh dGljIHZvaWQgZ3VjX21taW9fcmVnX2FkZChzdHJ1Y3QgdGVtcF9yZWdzZXQgKnJlZ3NldCwKKwkJ CSAgICAgdTMyIG9mZnNldCwgdTMyIGZsYWdzKQoreworCXUzMiBjb3VudCA9IHJlZ3NldC0+dXNl ZDsKKwlzdHJ1Y3QgZ3VjX21taW9fcmVnIHJlZyA9IHsKKwkJLm9mZnNldCA9IG9mZnNldCwKKwkJ LmZsYWdzID0gZmxhZ3MsCisJfTsKKwlzdHJ1Y3QgZ3VjX21taW9fcmVnICpzbG90OworCisJR0VN X0JVR19PTihjb3VudCA+PSByZWdzZXQtPnNpemUpOworCisJLyoKKwkgKiBUaGUgbW1pbyBsaXN0 IGlzIGJ1aWx0IHVzaW5nIHNlcGFyYXRlIGxpc3RzIHdpdGhpbiB0aGUgZHJpdmVyLgorCSAqIEl0 J3MgcG9zc2libGUgdGhhdCBhdCBzb21lIHBvaW50IHdlIG1heSBhdHRlbXB0IHRvIGFkZCB0aGUg c2FtZQorCSAqIHJlZ2lzdGVyIG1vcmUgdGhhbiBvbmNlLiBEbyBub3QgY29uc2lkZXIgdGhpcyBh biBlcnJvcjsgc2lsZW50bHkKKwkgKiBtb3ZlIG9uIGlmIHRoZSByZWdpc3RlciBpcyBhbHJlYWR5 IGluIHRoZSBsaXN0LgorCSAqLworCWlmIChic2VhcmNoKCZyZWcsIHJlZ3NldC0+cmVnaXN0ZXJz LCBjb3VudCwKKwkJICAgIHNpemVvZihyZWcpLCBndWNfbW1pb19yZWdfY21wKSkKKwkJcmV0dXJu OworCisJc2xvdCA9ICZyZWdzZXQtPnJlZ2lzdGVyc1tjb3VudF07CisJcmVnc2V0LT51c2VkKys7 CisJKnNsb3QgPSByZWc7CisKKwl3aGlsZSAoc2xvdC0tID4gcmVnc2V0LT5yZWdpc3RlcnMpIHsK KwkJR0VNX0JVR19PTihzbG90WzBdLm9mZnNldCA9PSBzbG90WzFdLm9mZnNldCk7CisJCWlmIChz bG90WzFdLm9mZnNldCA+IHNsb3RbMF0ub2Zmc2V0KQorCQkJYnJlYWs7CisKKwkJc3dhcChzbG90 WzFdLCBzbG90WzBdKTsKKwl9Cit9CisKKyNkZWZpbmUgR1VDX01NSU9fUkVHX0FERChyZWdzZXQs IHJlZywgbWFza2VkKSBcCisJZ3VjX21taW9fcmVnX2FkZChyZWdzZXQsIFwKKwkJCSBpOTE1X21t aW9fcmVnX29mZnNldCgocmVnKSksIFwKKwkJCSAobWFza2VkKSA/IEdVQ19SRUdTRVRfTUFTS0VE IDogMCkKKworc3RhdGljIHZvaWQgZ3VjX21taW9fcmVnc2V0X2luaXQoc3RydWN0IHRlbXBfcmVn c2V0ICpyZWdzZXQsCisJCQkJIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlj b25zdCB1MzIgYmFzZSA9IGVuZ2luZS0+bW1pb19iYXNlOworCXN0cnVjdCBpOTE1X3dhX2xpc3Qg KndhbCA9ICZlbmdpbmUtPndhX2xpc3Q7CisJc3RydWN0IGk5MTVfd2EgKndhOworCXVuc2lnbmVk IGludCBpOworCisJcmVnc2V0LT51c2VkID0gMDsKKworCUdVQ19NTUlPX1JFR19BREQocmVnc2V0 LCBSSU5HX01PREVfR0VONyhiYXNlKSwgdHJ1ZSk7CisJR1VDX01NSU9fUkVHX0FERChyZWdzZXQs IFJJTkdfSFdTX1BHQShiYXNlKSwgZmFsc2UpOworCUdVQ19NTUlPX1JFR19BREQocmVnc2V0LCBS SU5HX0lNUihiYXNlKSwgZmFsc2UpOworCisJZm9yIChpID0gMCwgd2EgPSB3YWwtPmxpc3Q7IGkg PCB3YWwtPmNvdW50OyBpKyssIHdhKyspCisJCUdVQ19NTUlPX1JFR19BREQocmVnc2V0LCB3YS0+ cmVnLCB3YS0+bWFza2VkX3JlZyk7CisKKwkvKiBCZSBleHRyYSBwYXJhbm9pZCBhbmQgaW5jbHVk ZSBhbGwgd2hpdGVsaXN0IHJlZ2lzdGVycy4gKi8KKwlmb3IgKGkgPSAwOyBpIDwgUklOR19NQVhf Tk9OUFJJVl9TTE9UUzsgaSsrKQorCQlHVUNfTU1JT19SRUdfQUREKHJlZ3NldCwKKwkJCQkgUklO R19GT1JDRV9UT19OT05QUklWKGJhc2UsIGkpLAorCQkJCSBmYWxzZSk7CisKKwkvKiBhZGQgaW4g bG9jYWwgTU9DUyByZWdpc3RlcnMgKi8KKwlmb3IgKGkgPSAwOyBpIDwgR0VOOV9MTkNGQ01PQ1Nf UkVHX0NPVU5UOyBpKyspCisJCUdVQ19NTUlPX1JFR19BREQocmVnc2V0LCBHRU45X0xOQ0ZDTU9D UyhpKSwgZmFsc2UpOworfQorCitzdGF0aWMgaW50IGd1Y19tbWlvX3JlZ19zdGF0ZV9xdWVyeShz dHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiB7CiAJc3RydWN0IGludGVsX2d0ICpndCA9IGd1Y190b19n dChndWMpOwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZ3QtPmk5MTU7CisJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwor CXN0cnVjdCB0ZW1wX3JlZ3NldCB0ZW1wX3NldDsKKwl1MzIgdG90YWw7CisKKwkvKgorCSAqIE5l ZWQgdG8gYWN0dWFsbHkgYnVpbGQgdGhlIGxpc3QgaW4gb3JkZXIgdG8gZmlsdGVyIG91dAorCSAq IGR1cGxpY2F0ZXMgYW5kIG90aGVyIHN1Y2ggZGF0YSBkZXBlbmRlbnQgY29uc3RydWN0aW9ucy4K KwkgKi8KKwl0ZW1wX3NldC5zaXplID0gTUFYX01NSU9fUkVHUzsKKwl0ZW1wX3NldC5yZWdpc3Rl cnMgPSBrbWFsbG9jX2FycmF5KHRlbXBfc2V0LnNpemUsCisJCQkJCSAgIHNpemVvZigqdGVtcF9z ZXQucmVnaXN0ZXJzKSwKKwkJCQkJICAgR0ZQX0tFUk5FTCk7CisJaWYgKCF0ZW1wX3NldC5yZWdp c3RlcnMpCisJCXJldHVybiAtRU5PTUVNOworCisJdG90YWwgPSAwOworCWZvcl9lYWNoX2VuZ2lu ZShlbmdpbmUsIGd0LCBpZCkgeworCQlndWNfbW1pb19yZWdzZXRfaW5pdCgmdGVtcF9zZXQsIGVu Z2luZSk7CisJCXRvdGFsICs9IHRlbXBfc2V0LnVzZWQ7CisJfQorCisJa2ZyZWUodGVtcF9zZXQu cmVnaXN0ZXJzKTsKKworCXJldHVybiB0b3RhbCAqIHNpemVvZihzdHJ1Y3QgZ3VjX21taW9fcmVn KTsKK30KKworc3RhdGljIHZvaWQgZ3VjX21taW9fcmVnX3N0YXRlX2luaXQoc3RydWN0IGludGVs X2d1YyAqZ3VjLAorCQkJCSAgICBzdHJ1Y3QgX19ndWNfYWRzX2Jsb2IgKmJsb2IpCit7CisJc3Ry dWN0IGludGVsX2d0ICpndCA9IGd1Y190b19ndChndWMpOworCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKwlzdHJ1Y3QgdGVtcF9yZWdz ZXQgdGVtcF9zZXQ7CisJc3RydWN0IGd1Y19tbWlvX3JlZ19zZXQgKmFkc19yZWdfc2V0OworCXUz MiBhZGRyX2dndHQsIG9mZnNldDsKKwl1OCBndWNfY2xhc3M7CisKKwlvZmZzZXQgPSBndWNfYWRz X3JlZ3NldF9vZmZzZXQoZ3VjKTsKKwlhZGRyX2dndHQgPSBpbnRlbF9ndWNfZ2d0dF9vZmZzZXQo Z3VjLCBndWMtPmFkc192bWEpICsgb2Zmc2V0OworCXRlbXBfc2V0LnJlZ2lzdGVycyA9IChzdHJ1 Y3QgZ3VjX21taW9fcmVnICopKCgodTggKilibG9iKSArIG9mZnNldCk7CisJdGVtcF9zZXQuc2l6 ZSA9IGd1Yy0+YWRzX3JlZ3NldF9zaXplIC8gc2l6ZW9mKHRlbXBfc2V0LnJlZ2lzdGVyc1swXSk7 CisKKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBndCwgaWQpIHsKKwkJLyogQ2xhc3MgaW5kZXgg aXMgY2hlY2tlZCBpbiBjbGFzcyBjb252ZXJ0ZXIgKi8KKwkJR0VNX0JVR19PTihlbmdpbmUtPmlu c3RhbmNlID49IEdVQ19NQVhfSU5TVEFOQ0VTX1BFUl9DTEFTUyk7CisKKwkJZ3VjX2NsYXNzID0g ZW5naW5lX2NsYXNzX3RvX2d1Y19jbGFzcyhlbmdpbmUtPmNsYXNzKTsKKwkJYWRzX3JlZ19zZXQg PSAmYmxvYi0+YWRzLnJlZ19zdGF0ZV9saXN0W2d1Y19jbGFzc11bZW5naW5lLT5pbnN0YW5jZV07 CisKKwkJZ3VjX21taW9fcmVnc2V0X2luaXQoJnRlbXBfc2V0LCBlbmdpbmUpOworCQlpZiAoIXRl bXBfc2V0LnVzZWQpIHsKKwkJCWFkc19yZWdfc2V0LT5hZGRyZXNzID0gMDsKKwkJCWFkc19yZWdf c2V0LT5jb3VudCA9IDA7CisJCQljb250aW51ZTsKKwkJfQorCisJCWFkc19yZWdfc2V0LT5hZGRy ZXNzID0gYWRkcl9nZ3R0OworCQlhZHNfcmVnX3NldC0+Y291bnQgPSB0ZW1wX3NldC51c2VkOwor CisJCXRlbXBfc2V0LnNpemUgLT0gdGVtcF9zZXQudXNlZDsKKwkJdGVtcF9zZXQucmVnaXN0ZXJz ICs9IHRlbXBfc2V0LnVzZWQ7CisJCWFkZHJfZ2d0dCArPSB0ZW1wX3NldC51c2VkICogc2l6ZW9m KHN0cnVjdCBndWNfbW1pb19yZWcpOworCX0KKworCUdFTV9CVUdfT04odGVtcF9zZXQuc2l6ZSk7 Cit9CisKK3N0YXRpYyB2b2lkIGZpbGxfZW5naW5lX2VuYWJsZV9tYXNrcyhzdHJ1Y3QgaW50ZWxf Z3QgKmd0LAorCQkJCSAgICAgc3RydWN0IGd1Y19ndF9zeXN0ZW1faW5mbyAqaW5mbykKK3sKKwlp bmZvLT5lbmdpbmVfZW5hYmxlZF9tYXNrc1tHVUNfUkVOREVSX0NMQVNTXSA9IDE7CisJaW5mby0+ ZW5naW5lX2VuYWJsZWRfbWFza3NbR1VDX0JMSVRURVJfQ0xBU1NdID0gMTsKKwlpbmZvLT5lbmdp bmVfZW5hYmxlZF9tYXNrc1tHVUNfVklERU9fQ0xBU1NdID0gVkRCT1hfTUFTSyhndCk7CisJaW5m by0+ZW5naW5lX2VuYWJsZWRfbWFza3NbR1VDX1ZJREVPRU5IQU5DRV9DTEFTU10gPSBWRUJPWF9N QVNLKGd0KTsKK30KKworc3RhdGljIGludCBndWNfcHJlcF9nb2xkZW5fY29udGV4dChzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMsCisJCQkJICAgc3RydWN0IF9fZ3VjX2Fkc19ibG9iICpibG9iKQorewor CXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBndWNfdG9fZ3QoZ3VjKTsKKwl1MzIgYWRkcl9nZ3R0LCBv ZmZzZXQ7CisJdTMyIHRvdGFsX3NpemUgPSAwLCBhbGxvY19zaXplLCByZWFsX3NpemU7CisJdTgg ZW5naW5lX2NsYXNzLCBndWNfY2xhc3M7CisJc3RydWN0IGd1Y19ndF9zeXN0ZW1faW5mbyAqaW5m bywgbG9jYWxfaW5mbzsKKworCS8qCisJICogUmVzZXJ2ZSB0aGUgbWVtb3J5IGZvciB0aGUgZ29s ZGVuIGNvbnRleHRzIGFuZCBwb2ludCBHdUMgYXQgaXQgYnV0CisJICogbGVhdmUgaXQgZW1wdHkg Zm9yIG5vdy4gVGhlIGNvbnRleHQgZGF0YSB3aWxsIGJlIGZpbGxlZCBpbiBsYXRlcgorCSAqIG9u Y2UgdGhlcmUgaXMgc29tZXRoaW5nIGF2YWlsYWJsZSB0byBwdXQgdGhlcmUuCisJICoKKwkgKiBO b3RlIHRoYXQgdGhlIEhXU1AgYW5kIHJpbmcgY29udGV4dCBhcmUgbm90IGluY2x1ZGVkLgorCSAq CisJICogTm90ZSBhbHNvIHRoYXQgdGhlIHN0b3JhZ2UgbXVzdCBiZSBwaW5uZWQgaW4gdGhlIEdH VFQsIHNvIHRoYXQgdGhlCisJICogYWRkcmVzcyB3b24ndCBjaGFuZ2UgYWZ0ZXIgR3VDIGhhcyBi ZWVuIHRvbGQgd2hlcmUgdG8gZmluZCBpdC4gVGhlCisJICogR3VDIHdpbGwgYWxzbyB2YWxpZGF0 ZSB0aGF0IHRoZSBMUkMgYmFzZSArIHNpemUgZmFsbCB3aXRoaW4gdGhlCisJICogYWxsb3dlZCBH R1RUIHJhbmdlLgorCSAqLworCWlmIChibG9iKSB7CisJCW9mZnNldCA9IGd1Y19hZHNfZ29sZGVu X2N0eHRfb2Zmc2V0KGd1Yyk7CisJCWFkZHJfZ2d0dCA9IGludGVsX2d1Y19nZ3R0X29mZnNldChn dWMsIGd1Yy0+YWRzX3ZtYSkgKyBvZmZzZXQ7CisJCWluZm8gPSAmYmxvYi0+c3lzdGVtX2luZm87 CisJfSBlbHNlIHsKKwkJbWVtc2V0KCZsb2NhbF9pbmZvLCAwLCBzaXplb2YobG9jYWxfaW5mbykp OworCQlpbmZvID0gJmxvY2FsX2luZm87CisJCWZpbGxfZW5naW5lX2VuYWJsZV9tYXNrcyhndCwg aW5mbyk7CisJfQorCisJZm9yIChlbmdpbmVfY2xhc3MgPSAwOyBlbmdpbmVfY2xhc3MgPD0gTUFY X0VOR0lORV9DTEFTUzsgKytlbmdpbmVfY2xhc3MpIHsKKwkJaWYgKGVuZ2luZV9jbGFzcyA9PSBP VEhFUl9DTEFTUykKKwkJCWNvbnRpbnVlOworCisJCWd1Y19jbGFzcyA9IGVuZ2luZV9jbGFzc190 b19ndWNfY2xhc3MoZW5naW5lX2NsYXNzKTsKKworCQlpZiAoIWluZm8tPmVuZ2luZV9lbmFibGVk X21hc2tzW2d1Y19jbGFzc10pCisJCQljb250aW51ZTsKKworCQlyZWFsX3NpemUgPSBpbnRlbF9l bmdpbmVfY29udGV4dF9zaXplKGd0LCBlbmdpbmVfY2xhc3MpOworCQlhbGxvY19zaXplID0gUEFH RV9BTElHTihyZWFsX3NpemUpOworCQl0b3RhbF9zaXplICs9IGFsbG9jX3NpemU7CisKKwkJaWYg KCFibG9iKQorCQkJY29udGludWU7CisKKwkJYmxvYi0+YWRzLmVuZ19zdGF0ZV9zaXplW2d1Y19j bGFzc10gPSByZWFsX3NpemU7CisJCWJsb2ItPmFkcy5nb2xkZW5fY29udGV4dF9scmNhW2d1Y19j bGFzc10gPSBhZGRyX2dndHQ7CisJCWFkZHJfZ2d0dCArPSBhbGxvY19zaXplOworCX0KKworCWlm ICghYmxvYikKKwkJcmV0dXJuIHRvdGFsX3NpemU7CisKKwlHRU1fQlVHX09OKGd1Yy0+YWRzX2dv bGRlbl9jdHh0X3NpemUgIT0gdG90YWxfc2l6ZSk7CisJcmV0dXJuIHRvdGFsX3NpemU7Cit9CisK K3N0YXRpYyBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpmaW5kX2VuZ2luZV9zdGF0ZShzdHJ1Y3Qg aW50ZWxfZ3QgKmd0LCB1OCBlbmdpbmVfY2xhc3MpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lOworCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOworCisJZm9yX2VhY2hfZW5naW5l KGVuZ2luZSwgZ3QsIGlkKSB7CisJCWlmIChlbmdpbmUtPmNsYXNzICE9IGVuZ2luZV9jbGFzcykK KwkJCWNvbnRpbnVlOworCisJCWlmICghZW5naW5lLT5kZWZhdWx0X3N0YXRlKQorCQkJY29udGlu dWU7CisKKwkJcmV0dXJuIGVuZ2luZTsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGlj IHZvaWQgZ3VjX2luaXRfZ29sZGVuX2NvbnRleHQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQorewog CXN0cnVjdCBfX2d1Y19hZHNfYmxvYiAqYmxvYiA9IGd1Yy0+YWRzX2Jsb2I7Ci0JY29uc3QgdTMy IHNraXBwZWRfc2l6ZSA9IExSQ19QUEhXU1BfU1ogKiBQQUdFX1NJWkUgKyBMUl9IV19DT05URVhU X1NJWkU7Ci0JdTMyIGJhc2U7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCXN0 cnVjdCBpbnRlbF9ndCAqZ3QgPSBndWNfdG9fZ3QoZ3VjKTsKKwl1MzIgYWRkcl9nZ3R0LCBvZmZz ZXQ7CisJdTMyIHRvdGFsX3NpemUgPSAwLCBhbGxvY19zaXplLCByZWFsX3NpemU7CiAJdTggZW5n aW5lX2NsYXNzLCBndWNfY2xhc3M7CisJdTggKnB0cjsKIAotCS8qIEd1QyBzY2hlZHVsaW5nIHBv bGljaWVzICovCi0JZ3VjX3BvbGljaWVzX2luaXQoJmJsb2ItPnBvbGljaWVzKTsKKwkvKiBTa2lw IGV4ZWNsaXN0IGFuZCBQUEdUVCByZWdpc3RlcnMgKyBIV1NQICovCisJY29uc3QgdTMyIGxyX2h3 X2NvbnRleHRfc2l6ZSA9IDgwICogc2l6ZW9mKHUzMik7CisJY29uc3QgdTMyIHNraXBfc2l6ZSA9 IExSQ19QUEhXU1BfU1ogKiBQQUdFX1NJWkUgKworCQlscl9od19jb250ZXh0X3NpemU7CisKKwlp ZiAoIWludGVsX3VjX3VzZXNfZ3VjX3N1Ym1pc3Npb24oJmd0LT51YykpCisJCXJldHVybjsKKwor CUdFTV9CVUdfT04oIWJsb2IpOwogCiAJLyoKLQkgKiBHdUMgZXhwZWN0cyBhIHBlci1lbmdpbmUt Y2xhc3MgY29udGV4dCBpbWFnZSBhbmQgc2l6ZQotCSAqIChtaW51cyBod3NwIGFuZCByaW5nIGNv bnRleHQpLiBUaGUgY29udGV4dCBpbWFnZSB3aWxsIGJlCi0JICogdXNlZCB0byByZWluaXRpYWxp emUgZW5naW5lcyBhZnRlciBhIHJlc2V0LiBJdCBtdXN0IGV4aXN0Ci0JICogYW5kIGJlIHBpbm5l ZCBpbiB0aGUgR0dUVCwgc28gdGhhdCB0aGUgYWRkcmVzcyB3b24ndCBjaGFuZ2UgYWZ0ZXIKLQkg KiB3ZSBoYXZlIHRvbGQgR3VDIHdoZXJlIHRvIGZpbmQgaXQuIFRoZSBjb250ZXh0IHNpemUgd2ls bCBiZSB1c2VkCi0JICogdG8gdmFsaWRhdGUgdGhhdCB0aGUgTFJDIGJhc2UgKyBzaXplIGZhbGwg d2l0aGluIGFsbG93ZWQgR0dUVC4KKwkgKiBHbyBiYWNrIGFuZCBmaWxsIGluIHRoZSBnb2xkZW4g Y29udGV4dCBkYXRhIG5vdyB0aGF0IGl0IGlzCisJICogYXZhaWxhYmxlLgogCSAqLworCW9mZnNl dCA9IGd1Y19hZHNfZ29sZGVuX2N0eHRfb2Zmc2V0KGd1Yyk7CisJYWRkcl9nZ3R0ID0gaW50ZWxf Z3VjX2dndHRfb2Zmc2V0KGd1YywgZ3VjLT5hZHNfdm1hKSArIG9mZnNldDsKKwlwdHIgPSAoKHU4 ICopYmxvYikgKyBvZmZzZXQ7CisKIAlmb3IgKGVuZ2luZV9jbGFzcyA9IDA7IGVuZ2luZV9jbGFz cyA8PSBNQVhfRU5HSU5FX0NMQVNTOyArK2VuZ2luZV9jbGFzcykgewogCQlpZiAoZW5naW5lX2Ns YXNzID09IE9USEVSX0NMQVNTKQogCQkJY29udGludWU7CiAKIAkJZ3VjX2NsYXNzID0gZW5naW5l X2NsYXNzX3RvX2d1Y19jbGFzcyhlbmdpbmVfY2xhc3MpOwogCi0JCS8qCi0JCSAqIFRPRE86IFNl dCBjb250ZXh0IHBvaW50ZXIgdG8gZGVmYXVsdCBzdGF0ZSB0byBhbGxvdwotCQkgKiBHdUMgdG8g cmUtaW5pdCBndWlsdHkgY29udGV4dHMgYWZ0ZXIgaW50ZXJuYWwgcmVzZXQuCi0JCSAqLwotCQli bG9iLT5hZHMuZ29sZGVuX2NvbnRleHRfbHJjYVtndWNfY2xhc3NdID0gMDsKLQkJYmxvYi0+YWRz LmVuZ19zdGF0ZV9zaXplW2d1Y19jbGFzc10gPQotCQkJaW50ZWxfZW5naW5lX2NvbnRleHRfc2l6 ZShndWNfdG9fZ3QoZ3VjKSwKLQkJCQkJCSAgZW5naW5lX2NsYXNzKSAtCi0JCQlza2lwcGVkX3Np emU7CisJCWlmICghYmxvYi0+c3lzdGVtX2luZm8uZW5naW5lX2VuYWJsZWRfbWFza3NbZ3VjX2Ns YXNzXSkKKwkJCWNvbnRpbnVlOworCisJCXJlYWxfc2l6ZSA9IGludGVsX2VuZ2luZV9jb250ZXh0 X3NpemUoZ3QsIGVuZ2luZV9jbGFzcyk7CisJCWFsbG9jX3NpemUgPSBQQUdFX0FMSUdOKHJlYWxf c2l6ZSk7CisJCXRvdGFsX3NpemUgKz0gYWxsb2Nfc2l6ZTsKKworCQllbmdpbmUgPSBmaW5kX2Vu Z2luZV9zdGF0ZShndCwgZW5naW5lX2NsYXNzKTsKKwkJaWYgKCFlbmdpbmUpIHsKKwkJCWRybV9l cnIoJmd0LT5pOTE1LT5kcm0sICJObyBlbmdpbmUgc3RhdGUgcmVjb3JkZWQgZm9yIGNsYXNzICVk IVxuIiwKKwkJCQllbmdpbmVfY2xhc3MpOworCQkJYmxvYi0+YWRzLmVuZ19zdGF0ZV9zaXplW2d1 Y19jbGFzc10gPSAwOworCQkJYmxvYi0+YWRzLmdvbGRlbl9jb250ZXh0X2xyY2FbZ3VjX2NsYXNz XSA9IDA7CisJCQljb250aW51ZTsKKwkJfQorCisJCUdFTV9CVUdfT04oYmxvYi0+YWRzLmVuZ19z dGF0ZV9zaXplW2d1Y19jbGFzc10gIT0gcmVhbF9zaXplKTsKKwkJR0VNX0JVR19PTihibG9iLT5h ZHMuZ29sZGVuX2NvbnRleHRfbHJjYVtndWNfY2xhc3NdICE9IGFkZHJfZ2d0dCk7CisJCWFkZHJf Z2d0dCArPSBhbGxvY19zaXplOworCisJCXNobWVtX3JlYWQoZW5naW5lLT5kZWZhdWx0X3N0YXRl LCBza2lwX3NpemUsIHB0ciArIHNraXBfc2l6ZSwKKwkJCSAgIHJlYWxfc2l6ZSAtIHNraXBfc2l6 ZSk7CisJCXB0ciArPSBhbGxvY19zaXplOwogCX0KIAorCUdFTV9CVUdfT04oZ3VjLT5hZHNfZ29s ZGVuX2N0eHRfc2l6ZSAhPSB0b3RhbF9zaXplKTsKK30KKworc3RhdGljIHZvaWQgX19ndWNfYWRz X2luaXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBn dWNfdG9fZ3QoZ3VjKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGd0LT5pOTE1 OworCXN0cnVjdCBfX2d1Y19hZHNfYmxvYiAqYmxvYiA9IGd1Yy0+YWRzX2Jsb2I7CisJdTMyIGJh c2U7CisKKwkvKiBHdUMgc2NoZWR1bGluZyBwb2xpY2llcyAqLworCWd1Y19wb2xpY2llc19pbml0 KGd1YywgJmJsb2ItPnBvbGljaWVzKTsKKwogCS8qIFN5c3RlbSBpbmZvICovCi0JYmxvYi0+c3lz dGVtX2luZm8uZW5naW5lX2VuYWJsZWRfbWFza3NbR1VDX1JFTkRFUl9DTEFTU10gPSAxOwotCWJs b2ItPnN5c3RlbV9pbmZvLmVuZ2luZV9lbmFibGVkX21hc2tzW0dVQ19CTElUVEVSX0NMQVNTXSA9 IDE7Ci0JYmxvYi0+c3lzdGVtX2luZm8uZW5naW5lX2VuYWJsZWRfbWFza3NbR1VDX1ZJREVPX0NM QVNTXSA9IFZEQk9YX01BU0soZ3QpOwotCWJsb2ItPnN5c3RlbV9pbmZvLmVuZ2luZV9lbmFibGVk X21hc2tzW0dVQ19WSURFT0VOSEFOQ0VfQ0xBU1NdID0gVkVCT1hfTUFTSyhndCk7CisJZmlsbF9l bmdpbmVfZW5hYmxlX21hc2tzKGd0LCAmYmxvYi0+c3lzdGVtX2luZm8pOwogCiAJYmxvYi0+c3lz dGVtX2luZm8uZ2VuZXJpY19ndF9zeXNpbmZvW0dVQ19HRU5FUklDX0dUX1NZU0lORk9fU0xJQ0Vf RU5BQkxFRF0gPQogCQlod2VpZ2h0OChndC0+aW5mby5zc2V1LnNsaWNlX21hc2spOwpAQCAtMTQ1 LDYgKzUxNCw5IEBAIHN0YXRpYyB2b2lkIF9fZ3VjX2Fkc19pbml0KHN0cnVjdCBpbnRlbF9ndWMg Kmd1YykKIAkJCSBHRU4xMl9ET09SQkVMTFNfUEVSX1NRSURJKSArIDE7CiAJfQogCisJLyogR29s ZGVuIGNvbnRleHRzIGZvciByZS1pbml0aWFsaXNpbmcgYWZ0ZXIgYSB3YXRjaGRvZyByZXNldCAq LworCWd1Y19wcmVwX2dvbGRlbl9jb250ZXh0KGd1YywgYmxvYik7CisKIAlndWNfbWFwcGluZ190 YWJsZV9pbml0KGd1Y190b19ndChndWMpLCAmYmxvYi0+c3lzdGVtX2luZm8pOwogCiAJYmFzZSA9 IGludGVsX2d1Y19nZ3R0X29mZnNldChndWMsIGd1Yy0+YWRzX3ZtYSk7CkBAIC0xNTMsNiArNTI1 LDkgQEAgc3RhdGljIHZvaWQgX19ndWNfYWRzX2luaXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQog CWJsb2ItPmFkcy5zY2hlZHVsZXJfcG9saWNpZXMgPSBiYXNlICsgcHRyX29mZnNldChibG9iLCBw b2xpY2llcyk7CiAJYmxvYi0+YWRzLmd0X3N5c3RlbV9pbmZvID0gYmFzZSArIHB0cl9vZmZzZXQo YmxvYiwgc3lzdGVtX2luZm8pOwogCisJLyogTU1JTyBzYXZlL3Jlc3RvcmUgbGlzdCAqLworCWd1 Y19tbWlvX3JlZ19zdGF0ZV9pbml0KGd1YywgYmxvYik7CisKIAkvKiBQcml2YXRlIERhdGEgKi8K IAlibG9iLT5hZHMucHJpdmF0ZV9kYXRhID0gYmFzZSArIGd1Y19hZHNfcHJpdmF0ZV9kYXRhX29m ZnNldChndWMpOwogCkBAIC0xNzMsNiArNTQ4LDE5IEBAIGludCBpbnRlbF9ndWNfYWRzX2NyZWF0 ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAKIAlHRU1fQlVHX09OKGd1Yy0+YWRzX3ZtYSk7CiAK KwkvKiBOZWVkIHRvIGNhbGN1bGF0ZSB0aGUgcmVnIHN0YXRlIHNpemUgZHluYW1pY2FsbHk6ICov CisJcmV0ID0gZ3VjX21taW9fcmVnX3N0YXRlX3F1ZXJ5KGd1Yyk7CisJaWYgKHJldCA8IDApCisJ CXJldHVybiByZXQ7CisJZ3VjLT5hZHNfcmVnc2V0X3NpemUgPSByZXQ7CisKKwkvKiBMaWtld2lz ZSB0aGUgZ29sZGVuIGNvbnRleHRzOiAqLworCXJldCA9IGd1Y19wcmVwX2dvbGRlbl9jb250ZXh0 KGd1YywgTlVMTCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisJZ3VjLT5hZHNfZ29s ZGVuX2N0eHRfc2l6ZSA9IHJldDsKKworCS8qIE5vdyB0aGUgdG90YWwgc2l6ZSBjYW4gYmUgZGV0 ZXJtaW5lZDogKi8KIAlzaXplID0gZ3VjX2Fkc19ibG9iX3NpemUoZ3VjKTsKIAogCXJldCA9IGlu dGVsX2d1Y19hbGxvY2F0ZV9hbmRfbWFwX3ZtYShndWMsIHNpemUsICZndWMtPmFkc192bWEsCkBA IC0xODUsNiArNTczLDE4IEBAIGludCBpbnRlbF9ndWNfYWRzX2NyZWF0ZShzdHJ1Y3QgaW50ZWxf Z3VjICpndWMpCiAJcmV0dXJuIDA7CiB9CiAKK3ZvaWQgaW50ZWxfZ3VjX2Fkc19pbml0X2xhdGUo c3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCS8qCisJICogVGhlIGdvbGRlbiBjb250ZXh0IHNl dHVwIHJlcXVpcmVzIHRoZSBzYXZlZCBlbmdpbmUgc3RhdGUgZnJvbQorCSAqIF9fZW5naW5lc19y ZWNvcmRfZGVmYXVsdHMoKS4gSG93ZXZlciwgdGhhdCByZXF1aXJlcyBlbmdpbmVzIHRvIGJlCisJ ICogb3BlcmF0aW9uYWwgd2hpY2ggbWVhbnMgdGhlIEFEUyBtdXN0IGFscmVhZHkgaGF2ZSBiZWVu IGNvbmZpZ3VyZWQuCisJICogRm9ydHVuYXRlbHksIHRoZSBnb2xkZW4gY29udGV4dCBzdGF0ZSBp cyBub3QgbmVlZGVkIHVudGlsIGEgaGFuZworCSAqIG9jY3Vycywgc28gaXQgY2FuIGJlIGZpbGxl ZCBpbiBkdXJpbmcgdGhpcyBsYXRlIGluaXQgcGhhc2UuCisJICovCisJZ3VjX2luaXRfZ29sZGVu X2NvbnRleHQoZ3VjKTsKK30KKwogdm9pZCBpbnRlbF9ndWNfYWRzX2Rlc3Ryb3koc3RydWN0IGlu dGVsX2d1YyAqZ3VjKQogewogCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZndWMtPmFkc192 bWEsIEk5MTVfVk1BX1JFTEVBU0VfTUFQKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3VjL2ludGVsX2d1Y19hZHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX2d1Y19hZHMuaAppbmRleCBiMDBkM2FlMTExM2EuLjNkODUwNTFkNTdlNCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Fkcy5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19hZHMuaApAQCAtNyw5ICs3LDEzIEBACiAj ZGVmaW5lIF9JTlRFTF9HVUNfQURTX0hfCiAKIHN0cnVjdCBpbnRlbF9ndWM7CitzdHJ1Y3QgZHJt X3ByaW50ZXI7CiAKIGludCBpbnRlbF9ndWNfYWRzX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMpOwogdm9pZCBpbnRlbF9ndWNfYWRzX2Rlc3Ryb3koc3RydWN0IGludGVsX2d1YyAqZ3VjKTsK K3ZvaWQgaW50ZWxfZ3VjX2Fkc19pbml0X2xhdGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKTsKIHZv aWQgaW50ZWxfZ3VjX2Fkc19yZXNldChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwordm9pZCBpbnRl bF9ndWNfYWRzX3ByaW50X3BvbGljeV9pbmZvKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKKwkJCQkg ICAgIHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9pbnRlbF9ndWNfY3QuYwppbmRleCA4YmI2YjFiYmNlYTEuLjIyYjQ3MzNiNTVlMiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMKQEAgLTc2MCw3ICs3 NjAsMTAgQEAgaW50IGludGVsX2d1Y19jdF9zZW5kKHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0LCBj b25zdCB1MzIgKmFjdGlvbiwgdTMyIGxlbiwKIAlpbnQgcmV0OwogCiAJaWYgKHVubGlrZWx5KCFj dC0+ZW5hYmxlZCkpIHsKLQkJV0FSTigxLCAiVW5leHBlY3RlZCBzZW5kOiBhY3Rpb249JSN4XG4i LCAqYWN0aW9uKTsKKwkJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gY3RfdG9fZ3VjKGN0KTsKKwkJ c3RydWN0IGludGVsX3VjICp1YyA9IGNvbnRhaW5lcl9vZihndWMsIHN0cnVjdCBpbnRlbF91Yywg Z3VjKTsKKworCQlXQVJOKCF1Yy0+cmVzZXRfaW5fcHJvZ3Jlc3MsICJVbmV4cGVjdGVkIHNlbmQ6 IGFjdGlvbj0lI3hcbiIsICphY3Rpb24pOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKQEAgLTk4 NCw2ICs5ODcsMTIgQEAgc3RhdGljIGludCBjdF9wcm9jZXNzX3JlcXVlc3Qoc3RydWN0IGludGVs X2d1Y19jdCAqY3QsIHN0cnVjdCBjdF9pbmNvbWluZ19tc2cgKnIKIAljYXNlIElOVEVMX0dVQ19B Q1RJT05fU0NIRURfQ09OVEVYVF9NT0RFX0RPTkU6CiAJCXJldCA9IGludGVsX2d1Y19zY2hlZF9k b25lX3Byb2Nlc3NfbXNnKGd1YywgcGF5bG9hZCwgbGVuKTsKIAkJYnJlYWs7CisJY2FzZSBJTlRF TF9HVUNfQUNUSU9OX0NPTlRFWFRfUkVTRVRfTk9USUZJQ0FUSU9OOgorCQlyZXQgPSBpbnRlbF9n dWNfY29udGV4dF9yZXNldF9wcm9jZXNzX21zZyhndWMsIHBheWxvYWQsIGxlbik7CisJCWJyZWFr OworCWNhc2UgSU5URUxfR1VDX0FDVElPTl9FTkdJTkVfRkFJTFVSRV9OT1RJRklDQVRJT046CisJ CXJldCA9IGludGVsX2d1Y19lbmdpbmVfZmFpbHVyZV9wcm9jZXNzX21zZyhndWMsIHBheWxvYWQs IGxlbik7CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXJldCA9IC1FT1BOT1RTVVBQOwogCQlicmVh azsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19kZWJ1 Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZGVidWdmcy5jCmlu ZGV4IDdhNDU0YzkxYTczNi4uNzJkZGZmZjQyZjdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3VjL2ludGVsX2d1Y19kZWJ1Z2ZzLmMKQEAgLTEwLDYgKzEwLDcgQEAKICNpbmNsdWRl ICJpbnRlbF9ndWNfZGVidWdmcy5oIgogI2luY2x1ZGUgImludGVsX2d1Y19sb2dfZGVidWdmcy5o IgogI2luY2x1ZGUgImd0L3VjL2ludGVsX2d1Y19jdC5oIgorI2luY2x1ZGUgImd0L3VjL2ludGVs X2d1Y19hZHMuaCIKICNpbmNsdWRlICJndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5oIgogCiBz dGF0aWMgaW50IGd1Y19pbmZvX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQpA QCAtMjksNiArMzAsNyBAQCBzdGF0aWMgaW50IGd1Y19pbmZvX3Nob3coc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICpkYXRhKQogCiAJaW50ZWxfZ3VjX2N0X3ByaW50X2luZm8oJmd1Yy0+Y3QsICZw KTsKIAlpbnRlbF9ndWNfc3VibWlzc2lvbl9wcmludF9pbmZvKGd1YywgJnApOworCWludGVsX2d1 Y19hZHNfcHJpbnRfcG9saWN5X2luZm8oZ3VjLCAmcCk7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCmluZGV4 IDI2YWFkYWQxMGIxMi4uYjYzMzg3NDJhNTk0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKQEAgLTEwLDYgKzEwLDcgQEAKICNpbmNs dWRlICJndC9pbnRlbF9icmVhZGNydW1icy5oIgogI2luY2x1ZGUgImd0L2ludGVsX2NvbnRleHQu aCIKICNpbmNsdWRlICJndC9pbnRlbF9lbmdpbmVfcG0uaCIKKyNpbmNsdWRlICJndC9pbnRlbF9l bmdpbmVfaGVhcnRiZWF0LmgiCiAjaW5jbHVkZSAiZ3QvaW50ZWxfZ3QuaCIKICNpbmNsdWRlICJn dC9pbnRlbF9ndF9pcnEuaCIKICNpbmNsdWRlICJndC9pbnRlbF9ndF9wbS5oIgpAQCAtNjAsNiAr NjEsMTUgQEAKICAqCiAgKi8KIAorLyogR3VDIFZpcnR1YWwgRW5naW5lICovCitzdHJ1Y3QgZ3Vj X3ZpcnR1YWxfZW5naW5lIHsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIGJhc2U7CisJc3RydWN0 IGludGVsX2NvbnRleHQgY29udGV4dDsKK307CisKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqCitndWNfY3JlYXRlX3ZpcnR1YWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqKnNpYmxpbmdz LCB1bnNpZ25lZCBpbnQgY291bnQpOworCiAjZGVmaW5lIEdVQ19SRVFVRVNUX1NJWkUgNjQgLyog Ynl0ZXMgKi8KIAogLyoKQEAgLTcxLDYgKzgxLDEyIEBACiAgKi8KICNkZWZpbmUgU0NIRURfU1RB VEVfTk9fTE9DS19FTkFCTEVECQkJQklUKDApCiAjZGVmaW5lIFNDSEVEX1NUQVRFX05PX0xPQ0tf UEVORElOR19FTkFCTEUJCUJJVCgxKQorI2RlZmluZSBTQ0hFRF9TVEFURV9OT19MT0NLX1JFR0lT VEVSRUQJCQlCSVQoMikKKyNkZWZpbmUgU0NIRURfU1RBVEVfTk9fTE9DS19CTE9DS0VEX1NISUZU CQkzCisjZGVmaW5lIFNDSEVEX1NUQVRFX05PX0xPQ0tfQkxPQ0tFRCBcCisJQklUKFNDSEVEX1NU QVRFX05PX0xPQ0tfQkxPQ0tFRF9TSElGVCkKKyNkZWZpbmUgU0NIRURfU1RBVEVfTk9fTE9DS19C TE9DS0VEX01BU0sgXAorCSgweGZmZmYgPDwgU0NIRURfU1RBVEVfTk9fTE9DS19CTE9DS0VEX1NI SUZUKQogc3RhdGljIGlubGluZSBib29sIGNvbnRleHRfZW5hYmxlZChzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqY2UpCiB7CiAJcmV0dXJuIChhdG9taWNfcmVhZCgmY2UtPmd1Y19zY2hlZF9zdGF0ZV9u b19sb2NrKSAmCkBAIC0xMDYsNiArMTIyLDQ4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjbHJfY29u dGV4dF9wZW5kaW5nX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAJCSAgICZjZS0+ Z3VjX3NjaGVkX3N0YXRlX25vX2xvY2spOwogfQogCitzdGF0aWMgaW5saW5lIHUzMiBjb250ZXh0 X2Jsb2NrZWQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworCXJldHVybiAoYXRvbWljX3Jl YWQoJmNlLT5ndWNfc2NoZWRfc3RhdGVfbm9fbG9jaykgJgorCQlTQ0hFRF9TVEFURV9OT19MT0NL X0JMT0NLRURfTUFTSykgPj4KKwkJU0NIRURfU1RBVEVfTk9fTE9DS19CTE9DS0VEX1NISUZUOwor fQorCitzdGF0aWMgaW5saW5lIHZvaWQgaW5jcl9jb250ZXh0X2Jsb2NrZWQoc3RydWN0IGludGVs X2NvbnRleHQgKmNlKQoreworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmNlLT5lbmdpbmUtPnNjaGVk X2VuZ2luZS0+bG9jayk7CisJYXRvbWljX2FkZChTQ0hFRF9TVEFURV9OT19MT0NLX0JMT0NLRUQs CisJCSAgICZjZS0+Z3VjX3NjaGVkX3N0YXRlX25vX2xvY2spOworCUdFTV9CVUdfT04oIWNvbnRl eHRfYmxvY2tlZChjZSkpOwkvKiBPdmVyZmxvdyBjaGVjayAqLworfQorCitzdGF0aWMgaW5saW5l IHZvaWQgZGVjcl9jb250ZXh0X2Jsb2NrZWQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQorewor CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmNlLT5lbmdpbmUtPnNjaGVkX2VuZ2luZS0+bG9jayk7CisJ R0VNX0JVR19PTighY29udGV4dF9ibG9ja2VkKGNlKSk7CisKKwlhdG9taWNfc3ViKFNDSEVEX1NU QVRFX05PX0xPQ0tfQkxPQ0tFRCwKKwkJICAgJmNlLT5ndWNfc2NoZWRfc3RhdGVfbm9fbG9jayk7 Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBjb250ZXh0X3JlZ2lzdGVyZWQoc3RydWN0IGludGVs X2NvbnRleHQgKmNlKQoreworCXJldHVybiAoYXRvbWljX3JlYWQoJmNlLT5ndWNfc2NoZWRfc3Rh dGVfbm9fbG9jaykgJgorCQlTQ0hFRF9TVEFURV9OT19MT0NLX1JFR0lTVEVSRUQpOworfQorCitz dGF0aWMgaW5saW5lIHZvaWQgc2V0X2NvbnRleHRfcmVnaXN0ZXJlZChzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqY2UpCit7CisJYXRvbWljX29yKFNDSEVEX1NUQVRFX05PX0xPQ0tfUkVHSVNURVJFRCwK KwkJICAmY2UtPmd1Y19zY2hlZF9zdGF0ZV9ub19sb2NrKTsKK30KKworc3RhdGljIGlubGluZSB2 b2lkIGNscl9jb250ZXh0X3JlZ2lzdGVyZWQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQorewor CWF0b21pY19hbmQoKHUzMil+U0NIRURfU1RBVEVfTk9fTE9DS19SRUdJU1RFUkVELAorCQkgICAm Y2UtPmd1Y19zY2hlZF9zdGF0ZV9ub19sb2NrKTsKK30KKwogLyoKICAqIEJlbG93IGlzIGEgc2V0 IG9mIGZ1bmN0aW9ucyB3aGljaCBjb250cm9sIHRoZSBHdUMgc2NoZWR1bGluZyBzdGF0ZSB3aGlj aAogICogcmVxdWlyZSBhIGxvY2ssIGFzaWRlIGZyb20gdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSB0 aGUgZnVuY3Rpb25zIGFyZSBjYWxsZWQKQEAgLTExNSw2ICsxNzMsNyBAQCBzdGF0aWMgaW5saW5l IHZvaWQgY2xyX2NvbnRleHRfcGVuZGluZ19lbmFibGUoc3RydWN0IGludGVsX2NvbnRleHQgKmNl KQogI2RlZmluZSBTQ0hFRF9TVEFURV9XQUlUX0ZPUl9ERVJFR0lTVEVSX1RPX1JFR0lTVEVSCUJJ VCgwKQogI2RlZmluZSBTQ0hFRF9TVEFURV9ERVNUUk9ZRUQJCQkJQklUKDEpCiAjZGVmaW5lIFND SEVEX1NUQVRFX1BFTkRJTkdfRElTQUJMRQkJCUJJVCgyKQorI2RlZmluZSBTQ0hFRF9TVEFURV9C QU5ORUQJCQkJQklUKDMpCiBzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9zY2hlZF9zdGF0ZShzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2UpCiB7CiAJLyogT25seSBzaG91bGQgYmUgY2FsbGVkIGZyb20g Z3VjX2xyY19kZXNjX3BpbigpICovCkBAIC0xMzIsNyArMTkxLDcgQEAgY29udGV4dF93YWl0X2Zv cl9kZXJlZ2lzdGVyX3RvX3JlZ2lzdGVyKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIHN0YXRp YyBpbmxpbmUgdm9pZAogc2V0X2NvbnRleHRfd2FpdF9mb3JfZGVyZWdpc3Rlcl90b19yZWdpc3Rl cihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiB7Ci0JLyogT25seSBzaG91bGQgYmUgY2FsbGVk IGZyb20gZ3VjX2xyY19kZXNjX3BpbigpICovCisJLyogT25seSBzaG91bGQgYmUgY2FsbGVkIGZy b20gZ3VjX2xyY19kZXNjX3BpbigpIHdpdGhvdXQgbG9jayAqLwogCWNlLT5ndWNfc3RhdGUuc2No ZWRfc3RhdGUgfD0KIAkJU0NIRURfU1RBVEVfV0FJVF9GT1JfREVSRUdJU1RFUl9UT19SRUdJU1RF UjsKIH0KQEAgLTE3NSw2ICsyMzQsMjMgQEAgc3RhdGljIGlubGluZSB2b2lkIGNscl9jb250ZXh0 X3BlbmRpbmdfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAJY2UtPmd1Y19zdGF0 ZS5zY2hlZF9zdGF0ZSAmPSB+U0NIRURfU1RBVEVfUEVORElOR19ESVNBQkxFOwogfQogCitzdGF0 aWMgaW5saW5lIGJvb2wgY29udGV4dF9iYW5uZWQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQor eworCXJldHVybiBjZS0+Z3VjX3N0YXRlLnNjaGVkX3N0YXRlICYgU0NIRURfU1RBVEVfQkFOTkVE OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2NvbnRleHRfYmFubmVkKHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSkKK3sKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZjZS0+Z3VjX3N0YXRlLmxv Y2spOworCWNlLT5ndWNfc3RhdGUuc2NoZWRfc3RhdGUgfD0gU0NIRURfU1RBVEVfQkFOTkVEOwor fQorCitzdGF0aWMgaW5saW5lIHZvaWQgY2xyX2NvbnRleHRfYmFubmVkKHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSkKK3sKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZjZS0+Z3VjX3N0YXRlLmxvY2sp OworCWNlLT5ndWNfc3RhdGUuc2NoZWRfc3RhdGUgJj0gflNDSEVEX1NUQVRFX0JBTk5FRDsKK30K Kwogc3RhdGljIGlubGluZSBib29sIGNvbnRleHRfZ3VjX2lkX2ludmFsaWQoc3RydWN0IGludGVs X2NvbnRleHQgKmNlKQogewogCXJldHVybiBjZS0+Z3VjX2lkID09IEdVQ19JTlZBTElEX0xSQ19J RDsKQEAgLTIzMCwxNSArMzA2LDMxIEBAIHN0YXRpYyBpbnQgZ3VjX2xyY19kZXNjX3Bvb2xfY3Jl YXRlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAogc3RhdGljIHZvaWQgZ3VjX2xyY19kZXNjX3Bv b2xfZGVzdHJveShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiB7CisJZ3VjLT5scmNfZGVzY19wb29s X3ZhZGRyID0gTlVMTDsKIAlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmZ3VjLT5scmNfZGVz Y19wb29sLCBJOTE1X1ZNQV9SRUxFQVNFX01BUCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBn dWNfc3VibWlzc2lvbl9pbml0aWFsaXplZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCit7CisJcmV0 dXJuICEhZ3VjLT5scmNfZGVzY19wb29sX3ZhZGRyOworfQorCiBzdGF0aWMgaW5saW5lIHZvaWQg cmVzZXRfbHJjX2Rlc2Moc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgaWQpCiB7Ci0Jc3RydWN0 IGd1Y19scmNfZGVzYyAqZGVzYyA9IF9fZ2V0X2xyY19kZXNjKGd1YywgaWQpOworCWlmIChsaWtl bHkoZ3VjX3N1Ym1pc3Npb25faW5pdGlhbGl6ZWQoZ3VjKSkpIHsKKwkJc3RydWN0IGd1Y19scmNf ZGVzYyAqZGVzYyA9IF9fZ2V0X2xyY19kZXNjKGd1YywgaWQpOworCQl1bnNpZ25lZCBsb25nIGZs YWdzOworCisJCW1lbXNldChkZXNjLCAwLCBzaXplb2YoKmRlc2MpKTsKIAotCW1lbXNldChkZXNj LCAwLCBzaXplb2YoKmRlc2MpKTsKLQl4YV9lcmFzZV9pcnEoJmd1Yy0+Y29udGV4dF9sb29rdXAs IGlkKTsKKwkJLyoKKwkJICogeGFycmF5IEFQSSBkb2Vzbid0IGhhdmUgeGFfZXJhc2VfaXJxc2F2 ZSB3cmFwcGVyLCBzbyBjYWxsaW5nCisJCSAqIHRoZSBsb3dlciBsZXZlbCBmdW5jdGlvbnMgZGly ZWN0bHkuCisJCSAqLworCQl4YV9sb2NrX2lycXNhdmUoJmd1Yy0+Y29udGV4dF9sb29rdXAsIGZs YWdzKTsKKwkJX194YV9lcmFzZSgmZ3VjLT5jb250ZXh0X2xvb2t1cCwgaWQpOworCQl4YV91bmxv Y2tfaXJxcmVzdG9yZSgmZ3VjLT5jb250ZXh0X2xvb2t1cCwgZmxhZ3MpOworCX0KIH0KIAogc3Rh dGljIGlubGluZSBib29sIGxyY19kZXNjX3JlZ2lzdGVyZWQoc3RydWN0IGludGVsX2d1YyAqZ3Vj LCB1MzIgaWQpCkBAIC0yNDksNyArMzQxLDE1IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBscmNfZGVz Y19yZWdpc3RlcmVkKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyIGlkKQogc3RhdGljIGlubGlu ZSB2b2lkIHNldF9scmNfZGVzY19yZWdpc3RlcmVkKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMy IGlkLAogCQkJCQkgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiB7Ci0JeGFfc3RvcmVfaXJx KCZndWMtPmNvbnRleHRfbG9va3VwLCBpZCwgY2UsIEdGUF9BVE9NSUMpOworCXVuc2lnbmVkIGxv bmcgZmxhZ3M7CisKKwkvKgorCSAqIHhhcnJheSBBUEkgZG9lc24ndCBoYXZlIHhhX3NhdmVfaXJx c2F2ZSB3cmFwcGVyLCBzbyBjYWxsaW5nIHRoZQorCSAqIGxvd2VyIGxldmVsIGZ1bmN0aW9ucyBk aXJlY3RseS4KKwkgKi8KKwl4YV9sb2NrX2lycXNhdmUoJmd1Yy0+Y29udGV4dF9sb29rdXAsIGZs YWdzKTsKKwlfX3hhX3N0b3JlKCZndWMtPmNvbnRleHRfbG9va3VwLCBpZCwgY2UsIEdGUF9BVE9N SUMpOworCXhhX3VubG9ja19pcnFyZXN0b3JlKCZndWMtPmNvbnRleHRfbG9va3VwLCBmbGFncyk7 CiB9CiAKIHN0YXRpYyBpbnQgZ3VjX3N1Ym1pc3Npb25fc2VuZF9idXN5X2xvb3Aoc3RydWN0IGlu dGVsX2d1YyAqZ3VjLApAQCAtMjY4LDEwICszNjgsMTAgQEAgc3RhdGljIGludCBndWNfc3VibWlz c2lvbl9zZW5kX2J1c3lfbG9vcChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCiAJcmV0dXJuIGVycjsK IH0KIAotc3RhdGljIGludCBndWNfd2FpdF9mb3JfcGVuZGluZ19tc2coc3RydWN0IGludGVsX2d1 YyAqZ3VjLAotCQkJCSAgICBhdG9taWNfdCAqd2FpdF92YXIsCi0JCQkJICAgIGJvb2wgaW50ZXJy dXB0aWJsZSwKLQkJCQkgICAgbG9uZyB0aW1lb3V0KQoraW50IGludGVsX2d1Y193YWl0X2Zvcl9w ZW5kaW5nX21zZyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCisJCQkJICAgYXRvbWljX3QgKndhaXRf dmFyLAorCQkJCSAgIGJvb2wgaW50ZXJydXB0aWJsZSwKKwkJCQkgICBsb25nIHRpbWVvdXQpCiB7 CiAJY29uc3QgaW50IHN0YXRlID0gaW50ZXJydXB0aWJsZSA/CiAJCVRBU0tfSU5URVJSVVBUSUJM RSA6IFRBU0tfVU5JTlRFUlJVUFRJQkxFOwpAQCAtMzE0LDIyICs0MTQsNTQgQEAgaW50IGludGVs X2d1Y193YWl0X2Zvcl9pZGxlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgbG9uZyB0aW1lb3V0KQog CWlmICghaW50ZWxfdWNfdXNlc19ndWNfc3VibWlzc2lvbigmZ3VjX3RvX2d0KGd1YyktPnVjKSkK IAkJcmV0dXJuIDA7CiAKLQlyZXR1cm4gZ3VjX3dhaXRfZm9yX3BlbmRpbmdfbXNnKGd1YywgJmd1 Yy0+b3V0c3RhbmRpbmdfc3VibWlzc2lvbl9nMmgsCi0JCQkJCXRydWUsIHRpbWVvdXQpOworCXJl dHVybiBpbnRlbF9ndWNfd2FpdF9mb3JfcGVuZGluZ19tc2coZ3VjLAorCQkJCQkgICAgICAmZ3Vj LT5vdXRzdGFuZGluZ19zdWJtaXNzaW9uX2cyaCwKKwkJCQkJICAgICAgdHJ1ZSwgdGltZW91dCk7 CiB9CiAKK3N0YXRpYyBpbnQgZ3VjX2xyY19kZXNjX3BpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y2UsIGJvb2wgbG9vcCk7CisKIHN0YXRpYyBpbnQgZ3VjX2FkZF9yZXF1ZXN0KHN0cnVjdCBpbnRl bF9ndWMgKmd1Yywgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiB7Ci0JaW50IGVycjsKKwlpbnQg ZXJyID0gMDsKIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBycS0+Y29udGV4dDsKIAl1MzIg YWN0aW9uWzNdOwogCWludCBsZW4gPSAwOwogCXUzMiBnMmhfbGVuX2R3ID0gMDsKLQlib29sIGVu YWJsZWQgPSBjb250ZXh0X2VuYWJsZWQoY2UpOworCWJvb2wgZW5hYmxlZDsKKworCS8qCisJICog Q29ybmVyIGNhc2Ugd2hlcmUgcmVxdWVzdHMgd2VyZSBzaXR0aW5nIGluIHRoZSBwcmlvcml0eSBs aXN0IG9yIGEKKwkgKiByZXF1ZXN0IHJlc3VibWl0dGVkIGFmdGVyIHRoZSBjb250ZXh0IHdhcyBi YW5uZWQuCisJICovCisJaWYgKHVubGlrZWx5KGludGVsX2NvbnRleHRfaXNfYmFubmVkKGNlKSkp IHsKKwkJaTkxNV9yZXF1ZXN0X3B1dChpOTE1X3JlcXVlc3RfbWFya19laW8ocnEpKTsKKwkJaW50 ZWxfZW5naW5lX3NpZ25hbF9icmVhZGNydW1icyhjZS0+ZW5naW5lKTsKKwkJZ290byBvdXQ7CisJ fQogCiAJR0VNX0JVR19PTighYXRvbWljX3JlYWQoJmNlLT5ndWNfaWRfcmVmKSk7CiAJR0VNX0JV R19PTihjb250ZXh0X2d1Y19pZF9pbnZhbGlkKGNlKSk7CiAKKwkvKgorCSAqIENvcm5lciBjYXNl IHdoZXJlIHRoZSBHdUMgZmlybXdhcmUgd2FzIGJsb3duIGF3YXkgYW5kIHJlbG9hZGVkIHdoaWxl CisJICogdGhpcyBjb250ZXh0IHdhcyBwaW5uZWQuCisJICovCisJaWYgKHVubGlrZWx5KCFscmNf ZGVzY19yZWdpc3RlcmVkKGd1YywgY2UtPmd1Y19pZCkpKSB7CisJCWVyciA9IGd1Y19scmNfZGVz Y19waW4oY2UsIGZhbHNlKTsKKwkJaWYgKHVubGlrZWx5KGVycikpCisJCQlnb3RvIG91dDsKKwl9 CisKKwkvKgorCSAqIFRoZSByZXF1ZXN0IC8gY29udGV4dCB3aWxsIGJlIHJ1biBvbiB0aGUgaGFy ZHdhcmUgd2hlbiBzY2hlZHVsaW5nCisJICogZ2V0cyBlbmFibGVkIGluIHRoZSB1bmJsb2NrLgor CSAqLworCWlmICh1bmxpa2VseShjb250ZXh0X2Jsb2NrZWQoY2UpKSkKKwkJZ290byBvdXQ7CisK KwllbmFibGVkID0gY29udGV4dF9lbmFibGVkKGNlKTsKKwogCWlmICghZW5hYmxlZCkgewogCQlh Y3Rpb25bbGVuKytdID0gSU5URUxfR1VDX0FDVElPTl9TQ0hFRF9DT05URVhUX01PREVfU0VUOwog CQlhY3Rpb25bbGVuKytdID0gY2UtPmd1Y19pZDsKQEAgLTM1MSw3ICs0ODMsMTAgQEAgc3RhdGlj IGludCBndWNfYWRkX3JlcXVlc3Qoc3RydWN0IGludGVsX2d1YyAqZ3VjLCBzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycSkKIAkJY2xyX2NvbnRleHRfcGVuZGluZ19lbmFibGUoY2UpOwogCQlpbnRlbF9j b250ZXh0X3B1dChjZSk7CiAJfQorCWlmIChsaWtlbHkoIWVycikpCisJCXRyYWNlX2k5MTVfcmVx dWVzdF9ndWNfc3VibWl0KHJxKTsKIAorb3V0OgogCXJldHVybiBlcnI7CiB9CiAKQEAgLTQwNiwy NCArNTQxLDIzIEBAIHN0YXRpYyBpbnQgZ3VjX2RlcXVldWVfb25lX2NvbnRleHQoc3RydWN0IGlu dGVsX2d1YyAqZ3VjKQogCWlmIChzdWJtaXQpIHsKIAkJZ3VjX3NldF9scmNfdGFpbChsYXN0KTsK IHJlc3VibWl0OgotCQkvKgotCQkgKiBXZSBvbmx5IGNoZWNrIGZvciAtRUJVU1kgaGVyZSBldmVu IHRob3VnaCBpdCBpcyBwb3NzaWJsZSBmb3IKLQkJICogLUVERUFETEsgdG8gYmUgcmV0dXJuZWQu IElmIC1FREVBRExLIGlzIHJldHVybmVkLCB0aGUgR3VDIGhhcwotCQkgKiBkaWVkIGFuZCBhIGZ1 bGwgR1QgcmVzZXQgbmVlZHMgdG8gYmUgZG9uZS4gVGhlIGhhbmdjaGVjayB3aWxsCi0JCSAqIGV2 ZW50dWFsbHkgZGV0ZWN0IHRoYXQgdGhlIEd1QyBoYXMgZGllZCBhbmQgdHJpZ2dlciB0aGlzCi0J CSAqIHJlc2V0IHNvIG5vIG5lZWQgdG8gaGFuZGxlIC1FREVBRExLIGhlcmUuCi0JCSAqLwogCQly ZXQgPSBndWNfYWRkX3JlcXVlc3QoZ3VjLCBsYXN0KTsKLQkJaWYgKHJldCA9PSAtRUJVU1kpIHsK KwkJaWYgKHVubGlrZWx5KHJldCA9PSAtRVBJUEUpKQorCQkJZ290byBkZWFkbGs7CisJCWVsc2Ug aWYgKHJldCA9PSAtRUJVU1kpIHsKIAkJCXRhc2tsZXRfc2NoZWR1bGUoJnNjaGVkX2VuZ2luZS0+ dGFza2xldCk7CiAJCQlndWMtPnN0YWxsZWRfcmVxdWVzdCA9IGxhc3Q7CiAJCQlyZXR1cm4gZmFs c2U7CiAJCX0KLQkJdHJhY2VfaTkxNV9yZXF1ZXN0X2d1Y19zdWJtaXQobGFzdCk7CiAJfQogCiAJ Z3VjLT5zdGFsbGVkX3JlcXVlc3QgPSBOVUxMOwogCXJldHVybiBzdWJtaXQ7CisKK2RlYWRsazoK KwlzY2hlZF9lbmdpbmUtPnRhc2tsZXQuY2FsbGJhY2sgPSBOVUxMOworCXRhc2tsZXRfZGlzYWJs ZV9ub3N5bmMoJnNjaGVkX2VuZ2luZS0+dGFza2xldCk7CisJcmV0dXJuIGZhbHNlOwogfQogCiBz dGF0aWMgdm9pZCBndWNfc3VibWlzc2lvbl90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAq dCkKQEAgLTQ1MCwyNyArNTg0LDE4MiBAQCBzdGF0aWMgdm9pZCBjc19pcnFfaGFuZGxlcihzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUxNiBpaXIpCiAJCWludGVsX2VuZ2luZV9zaWdu YWxfYnJlYWRjcnVtYnMoZW5naW5lKTsKIH0KIAotc3RhdGljIHZvaWQgZ3VjX3Jlc2V0X3ByZXBh cmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQorc3RhdGljIHZvaWQgX19ndWNfY29u dGV4dF9kZXN0cm95KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSk7CitzdGF0aWMgdm9pZCByZWxl YXNlX2d1Y19pZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSk7CitzdGF0aWMgdm9pZCBndWNfc2lnbmFsX2NvbnRleHRfZmVuY2Uoc3RydWN0IGludGVsX2Nv bnRleHQgKmNlKTsKK3N0YXRpYyB2b2lkIGd1Y19jYW5jZWxfY29udGV4dF9yZXF1ZXN0cyhzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2UpOworc3RhdGljIHZvaWQgZ3VjX2Jsb2NrZWRfZmVuY2VfY29t cGxldGUoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKTsKKworc3RhdGljIHZvaWQgc2NydWJfZ3Vj X2Rlc2NfZm9yX291dHN0YW5kaW5nX2cyaChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCit7CisJc3Ry dWN0IGludGVsX2NvbnRleHQgKmNlOworCXVuc2lnbmVkIGxvbmcgaW5kZXgsIGZsYWdzOworCWJv b2wgcGVuZGluZ19kaXNhYmxlLCBwZW5kaW5nX2VuYWJsZSwgZGVyZWdpc3RlciwgZGVzdHJveWVk LCBiYW5uZWQ7CisKKwl4YV9mb3JfZWFjaCgmZ3VjLT5jb250ZXh0X2xvb2t1cCwgaW5kZXgsIGNl KSB7CisJCS8qIEZsdXNoIGNvbnRleHQgKi8KKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmNlLT5ndWNf c3RhdGUubG9jaywgZmxhZ3MpOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjZS0+Z3VjX3N0 YXRlLmxvY2ssIGZsYWdzKTsKKworCQkvKgorCQkgKiBPbmNlIHdlIGFyZSBhdCB0aGlzIHBvaW50 IHN1Ym1pc3Npb25fZGlzYWJsZWQoKSBpcyBndWFyYW50ZWVkCisJCSAqIHRvIGJlIHZpc2libGUg dG8gYWxsIGNhbGxlcnMgd2hvIHNldCB0aGUgYmVsb3cgZmxhZ3MgKHNlZSBhYm92ZQorCQkgKiBm bHVzaCBhbmQgZmx1c2hlcyBpbiByZXNldF9wcmVwYXJlKS4gSWYgc3VibWlzc2lvbl9kaXNhYmxl ZCgpCisJCSAqIGlzIHNldCwgdGhlIGNhbGxlciBzaG91bGRuJ3Qgc2V0IHRoZXNlIGZsYWdzLgor CQkgKi8KKworCQlkZXN0cm95ZWQgPSBjb250ZXh0X2Rlc3Ryb3llZChjZSk7CisJCXBlbmRpbmdf ZW5hYmxlID0gY29udGV4dF9wZW5kaW5nX2VuYWJsZShjZSk7CisJCXBlbmRpbmdfZGlzYWJsZSA9 IGNvbnRleHRfcGVuZGluZ19kaXNhYmxlKGNlKTsKKwkJZGVyZWdpc3RlciA9IGNvbnRleHRfd2Fp dF9mb3JfZGVyZWdpc3Rlcl90b19yZWdpc3RlcihjZSk7CisJCWJhbm5lZCA9IGNvbnRleHRfYmFu bmVkKGNlKTsKKwkJaW5pdF9zY2hlZF9zdGF0ZShjZSk7CisKKwkJaWYgKHBlbmRpbmdfZW5hYmxl IHx8IGRlc3Ryb3llZCB8fCBkZXJlZ2lzdGVyKSB7CisJCQlhdG9taWNfZGVjKCZndWMtPm91dHN0 YW5kaW5nX3N1Ym1pc3Npb25fZzJoKTsKKwkJCWlmIChkZXJlZ2lzdGVyKQorCQkJCWd1Y19zaWdu YWxfY29udGV4dF9mZW5jZShjZSk7CisJCQlpZiAoZGVzdHJveWVkKSB7CisJCQkJcmVsZWFzZV9n dWNfaWQoZ3VjLCBjZSk7CisJCQkJX19ndWNfY29udGV4dF9kZXN0cm95KGNlKTsKKwkJCX0KKwkJ CWlmIChwZW5kaW5nX2VuYWJsZSB8fCBkZXJlZ2lzdGVyKQorCQkJCWludGVsX2NvbnRleHRfcHV0 KGNlKTsKKwkJfQorCisJCS8qIE5vdCBtdXR1YWx5IGV4Y2x1c2l2ZSB3aXRoIGFib3ZlIGlmIHN0 YXRlbWVudC4gKi8KKwkJaWYgKHBlbmRpbmdfZGlzYWJsZSkgeworCQkJZ3VjX3NpZ25hbF9jb250 ZXh0X2ZlbmNlKGNlKTsKKwkJCWlmIChiYW5uZWQpIHsKKwkJCQlndWNfY2FuY2VsX2NvbnRleHRf cmVxdWVzdHMoY2UpOworCQkJCWludGVsX2VuZ2luZV9zaWduYWxfYnJlYWRjcnVtYnMoY2UtPmVu Z2luZSk7CisJCQl9CisJCQlpbnRlbF9jb250ZXh0X3NjaGVkX2Rpc2FibGVfdW5waW4oY2UpOwor CQkJYXRvbWljX2RlYygmZ3VjLT5vdXRzdGFuZGluZ19zdWJtaXNzaW9uX2cyaCk7CisJCQlzcGlu X2xvY2tfaXJxc2F2ZSgmY2UtPmd1Y19zdGF0ZS5sb2NrLCBmbGFncyk7CisJCQlndWNfYmxvY2tl ZF9mZW5jZV9jb21wbGV0ZShjZSk7CisJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjZS0+Z3Vj X3N0YXRlLmxvY2ssIGZsYWdzKTsKKworCQkJaW50ZWxfY29udGV4dF9wdXQoY2UpOworCQl9CisJ fQorfQorCitzdGF0aWMgaW5saW5lIGJvb2wKK3N1Ym1pc3Npb25fZGlzYWJsZWQoc3RydWN0IGlu dGVsX2d1YyAqZ3VjKQoreworCXN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqIGNvbnN0IHNjaGVk X2VuZ2luZSA9IGd1Yy0+c2NoZWRfZW5naW5lOworCisJcmV0dXJuIHVubGlrZWx5KCFzY2hlZF9l bmdpbmUgfHwKKwkJCSFfX3Rhc2tsZXRfaXNfZW5hYmxlZCgmc2NoZWRfZW5naW5lLT50YXNrbGV0 KSk7Cit9CisKK3N0YXRpYyB2b2lkIGRpc2FibGVfc3VibWlzc2lvbihzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMpCit7CisJc3RydWN0IGk5MTVfc2NoZWRfZW5naW5lICogY29uc3Qgc2NoZWRfZW5naW5l ID0gZ3VjLT5zY2hlZF9lbmdpbmU7CisKKwlpZiAoX190YXNrbGV0X2lzX2VuYWJsZWQoJnNjaGVk X2VuZ2luZS0+dGFza2xldCkpIHsKKwkJR0VNX0JVR19PTighZ3VjLT5jdC5lbmFibGVkKTsKKwkJ X190YXNrbGV0X2Rpc2FibGVfc3luY19vbmNlKCZzY2hlZF9lbmdpbmUtPnRhc2tsZXQpOworCQlz Y2hlZF9lbmdpbmUtPnRhc2tsZXQuY2FsbGJhY2sgPSBOVUxMOworCX0KK30KKworc3RhdGljIHZv aWQgZW5hYmxlX3N1Ym1pc3Npb24oc3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCXN0cnVjdCBp OTE1X3NjaGVkX2VuZ2luZSAqIGNvbnN0IHNjaGVkX2VuZ2luZSA9IGd1Yy0+c2NoZWRfZW5naW5l OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZ3VjLT5zY2hl ZF9lbmdpbmUtPmxvY2ssIGZsYWdzKTsKKwlzY2hlZF9lbmdpbmUtPnRhc2tsZXQuY2FsbGJhY2sg PSBndWNfc3VibWlzc2lvbl90YXNrbGV0OworCXdtYigpOwkvKiBNYWtlIHN1cmUgY2FsbGJhY2sg dmlzaWJsZSAqLworCWlmICghX190YXNrbGV0X2lzX2VuYWJsZWQoJnNjaGVkX2VuZ2luZS0+dGFz a2xldCkgJiYKKwkgICAgX190YXNrbGV0X2VuYWJsZSgmc2NoZWRfZW5naW5lLT50YXNrbGV0KSkg eworCQlHRU1fQlVHX09OKCFndWMtPmN0LmVuYWJsZWQpOworCisJCS8qIEFuZCBraWNrIGluIGNh c2Ugd2UgbWlzc2VkIGEgbmV3IHJlcXVlc3Qgc3VibWlzc2lvbi4gKi8KKwkJdGFza2xldF9oaV9z Y2hlZHVsZSgmc2NoZWRfZW5naW5lLT50YXNrbGV0KTsKKwl9CisJc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmZ3VjLT5zY2hlZF9lbmdpbmUtPmxvY2ssIGZsYWdzKTsKK30KKworc3RhdGljIHZvaWQg Z3VjX2ZsdXNoX3N1Ym1pc3Npb25zKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwlzdHJ1Y3Qg aTkxNV9zY2hlZF9lbmdpbmUgKiBjb25zdCBzY2hlZF9lbmdpbmUgPSBndWMtPnNjaGVkX2VuZ2lu ZTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnNjaGVkX2Vu Z2luZS0+bG9jaywgZmxhZ3MpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNjaGVkX2VuZ2lu ZS0+bG9jaywgZmxhZ3MpOworfQorCit2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX3Jlc2V0X3By ZXBhcmUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogewotCUVOR0lORV9UUkFDRShlbmdpbmUsICJc biIpOworCWludCBpOworCisJaWYgKHVubGlrZWx5KCFndWNfc3VibWlzc2lvbl9pbml0aWFsaXpl ZChndWMpKSkgeworCQkvKiBSZXNldCBjYWxsZWQgZHVyaW5nIGRyaXZlciBsb2FkPyBHdUMgbm90 IHlldCBpbml0aWFsaXNlZCEgKi8KKwkJcmV0dXJuOworCX0KKworCWludGVsX2d0X3BhcmtfaGVh cnRiZWF0cyhndWNfdG9fZ3QoZ3VjKSk7CisJZGlzYWJsZV9zdWJtaXNzaW9uKGd1Yyk7CisJZ3Vj LT5pbnRlcnJ1cHRzLmRpc2FibGUoZ3VjKTsKKworCS8qIEZsdXNoIElSUSBoYW5kbGVyICovCisJ c3Bpbl9sb2NrX2lycSgmZ3VjX3RvX2d0KGd1YyktPmlycV9sb2NrKTsKKwlzcGluX3VubG9ja19p cnEoJmd1Y190b19ndChndWMpLT5pcnFfbG9jayk7CisKKwlndWNfZmx1c2hfc3VibWlzc2lvbnMo Z3VjKTsKIAogCS8qCi0JICogUHJldmVudCByZXF1ZXN0IHN1Ym1pc3Npb24gdG8gdGhlIGhhcmR3 YXJlIHVudGlsIHdlIGhhdmUKLQkgKiBjb21wbGV0ZWQgdGhlIHJlc2V0IGluIGk5MTVfZ2VtX3Jl c2V0X2ZpbmlzaCgpLiBJZiBhIHJlcXVlc3QKLQkgKiBpcyBjb21wbGV0ZWQgYnkgb25lIGVuZ2lu ZSwgaXQgbWF5IHRoZW4gcXVldWUgYSByZXF1ZXN0Ci0JICogdG8gYSBzZWNvbmQgdmlhIGl0cyBl eGVjbGlzdHMtPnRhc2tsZXQgKmp1c3QqIGFzIHdlIGFyZQotCSAqIGNhbGxpbmcgZW5naW5lLT5p bml0X2h3KCkgYW5kIGFsc28gd3JpdGluZyB0aGUgRUxTUC4KLQkgKiBUdXJuaW5nIG9mZiB0aGUg ZXhlY2xpc3RzLT50YXNrbGV0IHVudGlsIHRoZSByZXNldCBpcyBvdmVyCi0JICogcHJldmVudHMg dGhlIHJhY2UuCisJICogSGFuZGxlIGFueSBvdXRzdGFuZGluZyBHMkhzIGJlZm9yZSByZXNldC4g Q2FsbCBJUlEgaGFuZGxlciBkaXJlY3RseQorCSAqIGVhY2ggcGFzcyBhcyBpbnRlcnJ1cHQgaGF2 ZSBiZWVuIGRpc2FibGVkLiBXZSBhbHdheXMgc2NydWIgZm9yCisJICogb3V0c3RhbmRpbmcgRzJI IGFzIGl0IGlzIHBvc3NpYmxlIGZvciBvdXRzdGFuZGluZ19zdWJtaXNzaW9uX2cyaCB0bworCSAq IGJlIGluY3JlbWVudGVkIGFmdGVyIHRoZSBjb250ZXh0IHN0YXRlIHVwZGF0ZS4KIAkgKi8KLQlf X3Rhc2tsZXRfZGlzYWJsZV9zeW5jX29uY2UoJmVuZ2luZS0+c2NoZWRfZW5naW5lLT50YXNrbGV0 KTsKKwlmb3IgKGkgPSAwOyBpIDwgNCAmJiBhdG9taWNfcmVhZCgmZ3VjLT5vdXRzdGFuZGluZ19z dWJtaXNzaW9uX2cyaCk7ICsraSkgeworCQlpbnRlbF9ndWNfdG9faG9zdF9ldmVudF9oYW5kbGVy KGd1Yyk7CisjZGVmaW5lIHdhaXRfZm9yX3Jlc2V0KGd1Yywgd2FpdF92YXIpIFwKKwkJaW50ZWxf Z3VjX3dhaXRfZm9yX3BlbmRpbmdfbXNnKGd1Yywgd2FpdF92YXIsIGZhbHNlLCAoSFogLyAyMCkp CisJCWRvIHsKKwkJCXdhaXRfZm9yX3Jlc2V0KGd1YywgJmd1Yy0+b3V0c3RhbmRpbmdfc3VibWlz c2lvbl9nMmgpOworCQl9IHdoaWxlICghbGlzdF9lbXB0eSgmZ3VjLT5jdC5yZXF1ZXN0cy5pbmNv bWluZykpOworCX0KKwlzY3J1Yl9ndWNfZGVzY19mb3Jfb3V0c3RhbmRpbmdfZzJoKGd1Yyk7Cit9 CisKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoKK2d1Y192aXJ0dWFsX2dldF9zaWJs aW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnZlLCB1bnNpZ25lZCBpbnQgc2libGluZykKK3sK KwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJaW50ZWxfZW5naW5lX21hc2tfdCB0 bXAsIG1hc2sgPSB2ZS0+bWFzazsKKwl1bnNpZ25lZCBpbnQgbnVtX3NpYmxpbmdzID0gMDsKKwor CWZvcl9lYWNoX2VuZ2luZV9tYXNrZWQoZW5naW5lLCB2ZS0+Z3QsIG1hc2ssIHRtcCkKKwkJaWYg KG51bV9zaWJsaW5ncysrID09IHNpYmxpbmcpCisJCQlyZXR1cm4gZW5naW5lOworCisJcmV0dXJu IE5VTEw7Cit9CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqCitfX2Nv bnRleHRfdG9fcGh5c2ljYWxfZW5naW5lKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKK3sKKwlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBjZS0+ZW5naW5lOworCisJaWYgKGludGVs X2VuZ2luZV9pc192aXJ0dWFsKGVuZ2luZSkpCisJCWVuZ2luZSA9IGd1Y192aXJ0dWFsX2dldF9z aWJsaW5nKGVuZ2luZSwgMCk7CisKKwlyZXR1cm4gZW5naW5lOwogfQogCi1zdGF0aWMgdm9pZCBn dWNfcmVzZXRfc3RhdGUoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAotCQkJICAgIHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKLQkJCSAgICB1MzIgaGVhZCwKLQkJCSAgICBib29sIHNj cnViKQorc3RhdGljIHZvaWQgZ3VjX3Jlc2V0X3N0YXRlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSwgdTMyIGhlYWQsIGJvb2wgc2NydWIpCiB7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lID0gX19jb250ZXh0X3RvX3BoeXNpY2FsX2VuZ2luZShjZSk7CisKKwlpZiAoaW50ZWxfY29u dGV4dF9pc19iYW5uZWQoY2UpKQorCQlyZXR1cm47CisKIAlHRU1fQlVHX09OKCFpbnRlbF9jb250 ZXh0X2lzX3Bpbm5lZChjZSkpOwogCiAJLyoKQEAgLTQ4OCw0MiArNzc3LDEzMyBAQCBzdGF0aWMg dm9pZCBndWNfcmVzZXRfc3RhdGUoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAogCWxyY191cGRh dGVfcmVncyhjZSwgZW5naW5lLCBoZWFkKTsKIH0KIAotc3RhdGljIHZvaWQgZ3VjX3Jlc2V0X3Jl d2luZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGJvb2wgc3RhbGxlZCkKK3N0YXRp YyB2b2lkIGd1Y19yZXNldF9ub3Aoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewot CXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2lu ZS0+ZXhlY2xpc3RzOwotCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOworfQorCitzdGF0aWMgdm9p ZCBndWNfcmV3aW5kX25vcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGJvb2wgc3Rh bGxlZCkKK3sKK30KKworc3RhdGljIHZvaWQKK19fdW53aW5kX2luY29tcGxldGVfcmVxdWVzdHMo c3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCAq cm47CisJc3RydWN0IGxpc3RfaGVhZCAqcGw7CisJaW50IHByaW8gPSBJOTE1X1BSSU9SSVRZX0lO VkFMSUQ7CisJc3RydWN0IGk5MTVfc2NoZWRfZW5naW5lICogY29uc3Qgc2NoZWRfZW5naW5lID0K KwkJY2UtPmVuZ2luZS0+c2NoZWRfZW5naW5lOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKLQlz cGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT5zY2hlZF9lbmdpbmUtPmxvY2ssIGZsYWdzKTsKKwlz cGluX2xvY2tfaXJxc2F2ZSgmc2NoZWRfZW5naW5lLT5sb2NrLCBmbGFncyk7CisJc3Bpbl9sb2Nr KCZjZS0+Z3VjX2FjdGl2ZS5sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocnEsIHJu LAorCQkJCSAmY2UtPmd1Y19hY3RpdmUucmVxdWVzdHMsCisJCQkJIHNjaGVkLmxpbmspIHsKKwkJ aWYgKGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEpKQorCQkJY29udGludWU7CisKKwkJbGlzdF9k ZWxfaW5pdCgmcnEtPnNjaGVkLmxpbmspOworCQlzcGluX3VubG9jaygmY2UtPmd1Y19hY3RpdmUu bG9jayk7CisKKwkJX19pOTE1X3JlcXVlc3RfdW5zdWJtaXQocnEpOworCisJCS8qIFB1c2ggdGhl IHJlcXVlc3QgYmFjayBpbnRvIHRoZSBxdWV1ZSBmb3IgbGF0ZXIgcmVzdWJtaXNzaW9uLiAqLwor CQlHRU1fQlVHX09OKHJxX3ByaW8ocnEpID09IEk5MTVfUFJJT1JJVFlfSU5WQUxJRCk7CisJCWlm IChycV9wcmlvKHJxKSAhPSBwcmlvKSB7CisJCQlwcmlvID0gcnFfcHJpbyhycSk7CisJCQlwbCA9 IGk5MTVfc2NoZWRfbG9va3VwX3ByaW9saXN0KHNjaGVkX2VuZ2luZSwgcHJpbyk7CisJCX0KKwkJ R0VNX0JVR19PTihpOTE1X3NjaGVkX2VuZ2luZV9pc19lbXB0eShzY2hlZF9lbmdpbmUpKTsKKwor CQlsaXN0X2FkZF90YWlsKCZycS0+c2NoZWQubGluaywgcGwpOworCQlzZXRfYml0KEk5MTVfRkVO Q0VfRkxBR19QUVVFVUUsICZycS0+ZmVuY2UuZmxhZ3MpOworCisJCXNwaW5fbG9jaygmY2UtPmd1 Y19hY3RpdmUubG9jayk7CisJfQorCXNwaW5fdW5sb2NrKCZjZS0+Z3VjX2FjdGl2ZS5sb2NrKTsK KwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzY2hlZF9lbmdpbmUtPmxvY2ssIGZsYWdzKTsKK30K Kworc3RhdGljIHZvaWQgX19ndWNfcmVzZXRfY29udGV4dChzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y2UsIGJvb2wgc3RhbGxlZCkKK3sKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKKwl1MzIgaGVh ZDsKKworCWludGVsX2NvbnRleHRfZ2V0KGNlKTsKKworCS8qCisJICogR3VDIHdpbGwgaW1wbGlj aXRseSBtYXJrIHRoZSBjb250ZXh0IGFzIG5vbi1zY2hlZHVsYWJsZQorCSAqIHdoZW4gaXQgc2Vu ZHMgdGhlIHJlc2V0IG5vdGlmaWNhdGlvbi4gTWFrZSBzdXJlIG91ciBzdGF0ZQorCSAqIHJlZmxl Y3RzIHRoaXMgY2hhbmdlLiBUaGUgY29udGV4dCB3aWxsIGJlIG1hcmtlZCBlbmFibGVkCisJICog b24gcmVzdWJtaXNzaW9uLgorCSAqLworCWNscl9jb250ZXh0X2VuYWJsZWQoY2UpOwogCi0JLyog UHVzaCBiYWNrIGFueSBpbmNvbXBsZXRlIHJlcXVlc3RzIGZvciByZXBsYXkgYWZ0ZXIgdGhlIHJl c2V0LiAqLwotCXJxID0gZXhlY2xpc3RzX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKGV4ZWNs aXN0cyk7Ci0JaWYgKCFycSkKLQkJZ290byBvdXRfdW5sb2NrOworCXJxID0gaW50ZWxfY29udGV4 dF9maW5kX2FjdGl2ZV9yZXF1ZXN0KGNlKTsKKwlpZiAoIXJxKSB7CisJCWhlYWQgPSBjZS0+cmlu Zy0+dGFpbDsKKwkJc3RhbGxlZCA9IGZhbHNlOworCQlnb3RvIG91dF9yZXBsYXk7CisJfQogCiAJ aWYgKCFpOTE1X3JlcXVlc3Rfc3RhcnRlZChycSkpCiAJCXN0YWxsZWQgPSBmYWxzZTsKIAorCUdF TV9CVUdfT04oaTkxNV9hY3RpdmVfaXNfaWRsZSgmY2UtPmFjdGl2ZSkpOworCWhlYWQgPSBpbnRl bF9yaW5nX3dyYXAoY2UtPnJpbmcsIHJxLT5oZWFkKTsKIAlfX2k5MTVfcmVxdWVzdF9yZXNldChy cSwgc3RhbGxlZCk7Ci0JZ3VjX3Jlc2V0X3N0YXRlKHJxLT5jb250ZXh0LCBlbmdpbmUsIHJxLT5o ZWFkLCBzdGFsbGVkKTsKIAotb3V0X3VubG9jazoKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZl bmdpbmUtPnNjaGVkX2VuZ2luZS0+bG9jaywgZmxhZ3MpOworb3V0X3JlcGxheToKKwlndWNfcmVz ZXRfc3RhdGUoY2UsIGhlYWQsIHN0YWxsZWQpOworCV9fdW53aW5kX2luY29tcGxldGVfcmVxdWVz dHMoY2UpOworCWludGVsX2NvbnRleHRfcHV0KGNlKTsKK30KKwordm9pZCBpbnRlbF9ndWNfc3Vi bWlzc2lvbl9yZXNldChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGJvb2wgc3RhbGxlZCkKK3sKKwlz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7CisJdW5zaWduZWQgbG9uZyBpbmRleDsKKworCWlmICh1 bmxpa2VseSghZ3VjX3N1Ym1pc3Npb25faW5pdGlhbGl6ZWQoZ3VjKSkpIHsKKwkJLyogUmVzZXQg Y2FsbGVkIGR1cmluZyBkcml2ZXIgbG9hZD8gR3VDIG5vdCB5ZXQgaW5pdGlhbGlzZWQhICovCisJ CXJldHVybjsKKwl9CisKKwl4YV9mb3JfZWFjaCgmZ3VjLT5jb250ZXh0X2xvb2t1cCwgaW5kZXgs IGNlKQorCQlpZiAoaW50ZWxfY29udGV4dF9pc19waW5uZWQoY2UpKQorCQkJX19ndWNfcmVzZXRf Y29udGV4dChjZSwgc3RhbGxlZCk7CisKKwkvKiBHdUMgaXMgYmxvd24gYXdheSwgZHJvcCBhbGwg cmVmZXJlbmNlcyB0byBjb250ZXh0cyAqLworCXhhX2Rlc3Ryb3koJmd1Yy0+Y29udGV4dF9sb29r dXApOworfQorCitzdGF0aWMgdm9pZCBndWNfY2FuY2VsX2NvbnRleHRfcmVxdWVzdHMoc3RydWN0 IGludGVsX2NvbnRleHQgKmNlKQoreworCXN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqc2NoZWRf ZW5naW5lID0gY2VfdG9fZ3VjKGNlKS0+c2NoZWRfZW5naW5lOworCXN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwkvKiBNYXJrIGFsbCBleGVjdXRpbmcg cmVxdWVzdHMgYXMgc2tpcHBlZC4gKi8KKwlzcGluX2xvY2tfaXJxc2F2ZSgmc2NoZWRfZW5naW5l LT5sb2NrLCBmbGFncyk7CisJc3Bpbl9sb2NrKCZjZS0+Z3VjX2FjdGl2ZS5sb2NrKTsKKwlsaXN0 X2Zvcl9lYWNoX2VudHJ5KHJxLCAmY2UtPmd1Y19hY3RpdmUucmVxdWVzdHMsIHNjaGVkLmxpbmsp CisJCWk5MTVfcmVxdWVzdF9wdXQoaTkxNV9yZXF1ZXN0X21hcmtfZWlvKHJxKSk7CisJc3Bpbl91 bmxvY2soJmNlLT5ndWNfYWN0aXZlLmxvY2spOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNj aGVkX2VuZ2luZS0+bG9jaywgZmxhZ3MpOwogfQogCi1zdGF0aWMgdm9pZCBndWNfcmVzZXRfY2Fu Y2VsKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3N0YXRpYyB2b2lkCitndWNfY2Fu Y2VsX3NjaGVkX2VuZ2luZV9yZXF1ZXN0cyhzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKnNjaGVk X2VuZ2luZSkKIHsKLQlzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKiBjb25zdCBzY2hlZF9lbmdp bmUgPSBlbmdpbmUtPnNjaGVkX2VuZ2luZTsKIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgKnJu OwogCXN0cnVjdCByYl9ub2RlICpyYjsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJLyogQ2Fu IGJlIGNhbGxlZCBkdXJpbmcgYm9vdCBpZiBHdUMgZmFpbHMgdG8gbG9hZCAqLwotCWlmICghZW5n aW5lLT5ndCkKKwlpZiAoIXNjaGVkX2VuZ2luZSkKIAkJcmV0dXJuOwogCi0JRU5HSU5FX1RSQUNF KGVuZ2luZSwgIlxuIik7Ci0KIAkvKgogCSAqIEJlZm9yZSB3ZSBjYWxsIGVuZ2luZS0+Y2FuY2Vs X3JlcXVlc3RzKCksIHdlIHNob3VsZCBoYXZlIGV4Y2x1c2l2ZQogCSAqIGFjY2VzcyB0byB0aGUg c3VibWlzc2lvbiBzdGF0ZS4gVGhpcyBpcyBhcnJhbmdlZCBmb3IgdXMgYnkgdGhlCkBAIC01NDAs MjEgKzkyMCwxNiBAQCBzdGF0aWMgdm9pZCBndWNfcmVzZXRfY2FuY2VsKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKIAkgKi8KIAlzcGluX2xvY2tfaXJxc2F2ZSgmc2NoZWRfZW5naW5l LT5sb2NrLCBmbGFncyk7CiAKLQkvKiBNYXJrIGFsbCBleGVjdXRpbmcgcmVxdWVzdHMgYXMgc2tp cHBlZC4gKi8KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJxLCAmc2NoZWRfZW5naW5lLT5yZXF1ZXN0 cywgc2NoZWQubGluaykgewotCQlpOTE1X3JlcXVlc3Rfc2V0X2Vycm9yX29uY2UocnEsIC1FSU8p OwotCQlpOTE1X3JlcXVlc3RfbWFya19jb21wbGV0ZShycSk7Ci0JfQotCiAJLyogRmx1c2ggdGhl IHF1ZXVlZCByZXF1ZXN0cyB0byB0aGUgdGltZWxpbmUgbGlzdCAoZm9yIHJldGlyaW5nKS4gKi8K IAl3aGlsZSAoKHJiID0gcmJfZmlyc3RfY2FjaGVkKCZzY2hlZF9lbmdpbmUtPnF1ZXVlKSkpIHsK IAkJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnAgPSB0b19wcmlvbGlzdChyYik7CiAKIAkJcHJpb2xp c3RfZm9yX2VhY2hfcmVxdWVzdF9jb25zdW1lKHJxLCBybiwgcCkgewogCQkJbGlzdF9kZWxfaW5p dCgmcnEtPnNjaGVkLmxpbmspOworCiAJCQlfX2k5MTVfcmVxdWVzdF9zdWJtaXQocnEpOwotCQkJ ZG1hX2ZlbmNlX3NldF9lcnJvcigmcnEtPmZlbmNlLCAtRUlPKTsKLQkJCWk5MTVfcmVxdWVzdF9t YXJrX2NvbXBsZXRlKHJxKTsKKworCQkJaTkxNV9yZXF1ZXN0X3B1dChpOTE1X3JlcXVlc3RfbWFy a19laW8ocnEpKTsKIAkJfQogCiAJCXJiX2VyYXNlX2NhY2hlZCgmcC0+bm9kZSwgJnNjaGVkX2Vu Z2luZS0+cXVldWUpOwpAQCAtNTY5LDE0ICs5NDQsNDEgQEAgc3RhdGljIHZvaWQgZ3VjX3Jlc2V0 X2NhbmNlbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmc2NoZWRfZW5naW5lLT5sb2NrLCBmbGFncyk7CiB9CiAKLXN0YXRpYyB2b2lkIGd1 Y19yZXNldF9maW5pc2goc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQordm9pZCBpbnRl bF9ndWNfc3VibWlzc2lvbl9jYW5jZWxfcmVxdWVzdHMoc3RydWN0IGludGVsX2d1YyAqZ3VjKQog ewotCWlmIChfX3Rhc2tsZXRfZW5hYmxlKCZlbmdpbmUtPnNjaGVkX2VuZ2luZS0+dGFza2xldCkp Ci0JCS8qIEFuZCBraWNrIGluIGNhc2Ugd2UgbWlzc2VkIGEgbmV3IHJlcXVlc3Qgc3VibWlzc2lv bi4gKi8KLQkJdGFza2xldF9oaV9zY2hlZHVsZSgmZW5naW5lLT5zY2hlZF9lbmdpbmUtPnRhc2ts ZXQpOworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKKwl1bnNpZ25lZCBsb25nIGluZGV4Owor CisJeGFfZm9yX2VhY2goJmd1Yy0+Y29udGV4dF9sb29rdXAsIGluZGV4LCBjZSkKKwkJaWYgKGlu dGVsX2NvbnRleHRfaXNfcGlubmVkKGNlKSkKKwkJCWd1Y19jYW5jZWxfY29udGV4dF9yZXF1ZXN0 cyhjZSk7CisKKwlndWNfY2FuY2VsX3NjaGVkX2VuZ2luZV9yZXF1ZXN0cyhndWMtPnNjaGVkX2Vu Z2luZSk7CisKKwkvKiBHdUMgaXMgYmxvd24gYXdheSwgZHJvcCBhbGwgcmVmZXJlbmNlcyB0byBj b250ZXh0cyAqLworCXhhX2Rlc3Ryb3koJmd1Yy0+Y29udGV4dF9sb29rdXApOworfQorCit2b2lk IGludGVsX2d1Y19zdWJtaXNzaW9uX3Jlc2V0X2ZpbmlzaChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMp Cit7CisJLyogUmVzZXQgY2FsbGVkIGR1cmluZyBkcml2ZXIgbG9hZCBvciBkdXJpbmcgd2VkZ2U/ ICovCisJaWYgKHVubGlrZWx5KCFndWNfc3VibWlzc2lvbl9pbml0aWFsaXplZChndWMpIHx8CisJ CSAgICAgdGVzdF9iaXQoSTkxNV9XRURHRUQsICZndWNfdG9fZ3QoZ3VjKS0+cmVzZXQuZmxhZ3Mp KSkgeworCQlyZXR1cm47CisJfQogCi0JRU5HSU5FX1RSQUNFKGVuZ2luZSwgImRlcHRoLT4lZFxu IiwKLQkJICAgICBhdG9taWNfcmVhZCgmZW5naW5lLT5zY2hlZF9lbmdpbmUtPnRhc2tsZXQuY291 bnQpKTsKKwkvKgorCSAqIFRlY2huaWNhbGx5IHBvc3NpYmxlIGZvciBlaXRoZXIgb2YgdGhlc2Ug dmFsdWVzIHRvIGJlIG5vbi16ZXJvIGhlcmUsCisJICogYnV0IHZlcnkgdW5saWtlbHkgKyBoYXJt bGVzcy4gUmVnYXJkbGVzcyBsZXQncyBhZGQgYSB3YXJuIHNvIHdlIGNhbgorCSAqIHNlZSBpbiBD SSBpZiB0aGlzIGhhcHBlbnMgZnJlcXVlbnRseSAvIGEgcHJlY3Vyc29yIHRvIHRha2luZyBkb3du IHRoZQorCSAqIG1hY2hpbmUuCisJICovCisJR0VNX1dBUk5fT04oYXRvbWljX3JlYWQoJmd1Yy0+ b3V0c3RhbmRpbmdfc3VibWlzc2lvbl9nMmgpKTsKKwlhdG9taWNfc2V0KCZndWMtPm91dHN0YW5k aW5nX3N1Ym1pc3Npb25fZzJoLCAwKTsKKworCWludGVsX2d1Y19nbG9iYWxfcG9saWNpZXNfdXBk YXRlKGd1Yyk7CisJZW5hYmxlX3N1Ym1pc3Npb24oZ3VjKTsKKwlpbnRlbF9ndF91bnBhcmtfaGVh cnRiZWF0cyhndWNfdG9fZ3QoZ3VjKSk7CiB9CiAKIC8qCkBAIC02NDAsOCArMTA0Miw5IEBAIHN0 YXRpYyBpbnQgZ3VjX2J5cGFzc190YXNrbGV0X3N1Ym1pdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMs CiAJcmV0ID0gZ3VjX2FkZF9yZXF1ZXN0KGd1YywgcnEpOwogCWlmIChyZXQgPT0gLUVCVVNZKQog CQlndWMtPnN0YWxsZWRfcmVxdWVzdCA9IHJxOwotCWVsc2UKLQkJdHJhY2VfaTkxNV9yZXF1ZXN0 X2d1Y19zdWJtaXQocnEpOworCisJaWYgKHVubGlrZWx5KHJldCA9PSAtRVBJUEUpKQorCQlkaXNh YmxlX3N1Ym1pc3Npb24oZ3VjKTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC02NTUsNyArMTA1OCw4 IEBAIHN0YXRpYyB2b2lkIGd1Y19zdWJtaXRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSkKIAkvKiBXaWxsIGJlIGNhbGxlZCBmcm9tIGlycS1jb250ZXh0IHdoZW4gdXNpbmcgZm9yZWln biBmZW5jZXMuICovCiAJc3Bpbl9sb2NrX2lycXNhdmUoJnNjaGVkX2VuZ2luZS0+bG9jaywgZmxh Z3MpOwogCi0JaWYgKGd1Yy0+c3RhbGxlZF9yZXF1ZXN0IHx8ICFpOTE1X3NjaGVkX2VuZ2luZV9p c19lbXB0eShzY2hlZF9lbmdpbmUpKQorCWlmIChzdWJtaXNzaW9uX2Rpc2FibGVkKGd1YykgfHwg Z3VjLT5zdGFsbGVkX3JlcXVlc3QgfHwKKwkgICAgIWk5MTVfc2NoZWRfZW5naW5lX2lzX2VtcHR5 KHNjaGVkX2VuZ2luZSkpCiAJCXF1ZXVlX3JlcXVlc3Qoc2NoZWRfZW5naW5lLCBycSwgcnFfcHJp byhycSkpOwogCWVsc2UgaWYgKGd1Y19ieXBhc3NfdGFza2xldF9zdWJtaXQoZ3VjLCBycSkgPT0g LUVCVVNZKQogCQl0YXNrbGV0X2hpX3NjaGVkdWxlKCZzY2hlZF9lbmdpbmUtPnRhc2tsZXQpOwpA QCAtNzA3LDYgKzExMTEsNyBAQCBzdGF0aWMgaW50IHN0ZWFsX2d1Y19pZChzdHJ1Y3QgaW50ZWxf Z3VjICpndWMpCiAKIAkJbGlzdF9kZWxfaW5pdCgmY2UtPmd1Y19pZF9saW5rKTsKIAkJZ3VjX2lk ID0gY2UtPmd1Y19pZDsKKwkJY2xyX2NvbnRleHRfcmVnaXN0ZXJlZChjZSk7CiAJCXNldF9jb250 ZXh0X2d1Y19pZF9pbnZhbGlkKGNlKTsKIAkJcmV0dXJuIGd1Y19pZDsKIAl9IGVsc2UgewpAQCAt Nzk4LDcgKzEyMDMsOCBAQCBzdGF0aWMgdm9pZCB1bnBpbl9ndWNfaWQoc3RydWN0IGludGVsX2d1 YyAqZ3VjLCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAKIHN0YXRpYyBpbnQgX19ndWNfYWN0 aW9uX3JlZ2lzdGVyX2NvbnRleHQoc3RydWN0IGludGVsX2d1YyAqZ3VjLAogCQkJCQkgdTMyIGd1 Y19pZCwKLQkJCQkJIHUzMiBvZmZzZXQpCisJCQkJCSB1MzIgb2Zmc2V0LAorCQkJCQkgYm9vbCBs b29wKQogewogCXUzMiBhY3Rpb25bXSA9IHsKIAkJSU5URUxfR1VDX0FDVElPTl9SRUdJU1RFUl9D T05URVhULApAQCAtODA3LDIyICsxMjEzLDI4IEBAIHN0YXRpYyBpbnQgX19ndWNfYWN0aW9uX3Jl Z2lzdGVyX2NvbnRleHQoc3RydWN0IGludGVsX2d1YyAqZ3VjLAogCX07CiAKIAlyZXR1cm4gZ3Vj X3N1Ym1pc3Npb25fc2VuZF9idXN5X2xvb3AoZ3VjLCBhY3Rpb24sIEFSUkFZX1NJWkUoYWN0aW9u KSwKLQkJCQkJICAgICAwLCB0cnVlKTsKKwkJCQkJICAgICAwLCBsb29wKTsKIH0KIAotc3RhdGlj IGludCByZWdpc3Rlcl9jb250ZXh0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKK3N0YXRpYyBp bnQgcmVnaXN0ZXJfY29udGV4dChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIGJvb2wgbG9vcCkK IHsKIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSBjZV90b19ndWMoY2UpOwogCXUzMiBvZmZzZXQg PSBpbnRlbF9ndWNfZ2d0dF9vZmZzZXQoZ3VjLCBndWMtPmxyY19kZXNjX3Bvb2wpICsKIAkJY2Ut Pmd1Y19pZCAqIHNpemVvZihzdHJ1Y3QgZ3VjX2xyY19kZXNjKTsKKwlpbnQgcmV0OwogCiAJdHJh Y2VfaW50ZWxfY29udGV4dF9yZWdpc3RlcihjZSk7CiAKLQlyZXR1cm4gX19ndWNfYWN0aW9uX3Jl Z2lzdGVyX2NvbnRleHQoZ3VjLCBjZS0+Z3VjX2lkLCBvZmZzZXQpOworCXJldCA9IF9fZ3VjX2Fj dGlvbl9yZWdpc3Rlcl9jb250ZXh0KGd1YywgY2UtPmd1Y19pZCwgb2Zmc2V0LCBsb29wKTsKKwlp ZiAobGlrZWx5KCFyZXQpKQorCQlzZXRfY29udGV4dF9yZWdpc3RlcmVkKGNlKTsKKworCXJldHVy biByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgX19ndWNfYWN0aW9uX2RlcmVnaXN0ZXJfY29udGV4dChz dHJ1Y3QgaW50ZWxfZ3VjICpndWMsCi0JCQkJCSAgIHUzMiBndWNfaWQpCisJCQkJCSAgIHUzMiBn dWNfaWQsCisJCQkJCSAgIGJvb2wgbG9vcCkKIHsKIAl1MzIgYWN0aW9uW10gPSB7CiAJCUlOVEVM X0dVQ19BQ1RJT05fREVSRUdJU1RFUl9DT05URVhULApAQCAtODMxLDE2ICsxMjQzLDE2IEBAIHN0 YXRpYyBpbnQgX19ndWNfYWN0aW9uX2RlcmVnaXN0ZXJfY29udGV4dChzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMsCiAKIAlyZXR1cm4gZ3VjX3N1Ym1pc3Npb25fc2VuZF9idXN5X2xvb3AoZ3VjLCBhY3Rp b24sIEFSUkFZX1NJWkUoYWN0aW9uKSwKIAkJCQkJICAgICBHMkhfTEVOX0RXX0RFUkVHSVNURVJf Q09OVEVYVCwKLQkJCQkJICAgICB0cnVlKTsKKwkJCQkJICAgICBsb29wKTsKIH0KIAotc3RhdGlj IGludCBkZXJlZ2lzdGVyX2NvbnRleHQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLCB1MzIgZ3Vj X2lkKQorc3RhdGljIGludCBkZXJlZ2lzdGVyX2NvbnRleHQoc3RydWN0IGludGVsX2NvbnRleHQg KmNlLCB1MzIgZ3VjX2lkLCBib29sIGxvb3ApCiB7CiAJc3RydWN0IGludGVsX2d1YyAqZ3VjID0g Y2VfdG9fZ3VjKGNlKTsKIAogCXRyYWNlX2ludGVsX2NvbnRleHRfZGVyZWdpc3RlcihjZSk7CiAK LQlyZXR1cm4gX19ndWNfYWN0aW9uX2RlcmVnaXN0ZXJfY29udGV4dChndWMsIGd1Y19pZCk7CisJ cmV0dXJuIF9fZ3VjX2FjdGlvbl9kZXJlZ2lzdGVyX2NvbnRleHQoZ3VjLCBndWNfaWQsIGxvb3Ap OwogfQogCiBzdGF0aWMgaW50ZWxfZW5naW5lX21hc2tfdCBhZGp1c3RfZW5naW5lX21hc2sodTgg Y2xhc3MsIGludGVsX2VuZ2luZV9tYXNrX3QgbWFzaykKQEAgLTg2NSwxNyArMTI3NywyNSBAQCBz dGF0aWMgdm9pZCBndWNfY29udGV4dF9wb2xpY3lfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsCiB7CiAJZGVzYy0+cG9saWN5X2ZsYWdzID0gMDsKIAotCWRlc2MtPmV4ZWN1dGlv bl9xdWFudHVtID0gQ09OVEVYVF9QT0xJQ1lfREVGQVVMVF9FWEVDVVRJT05fUVVBTlRVTV9VUzsK LQlkZXNjLT5wcmVlbXB0aW9uX3RpbWVvdXQgPSBDT05URVhUX1BPTElDWV9ERUZBVUxUX1BSRUVN UFRJT05fVElNRV9VUzsKKwlpZiAoZW5naW5lLT5mbGFncyAmIEk5MTVfRU5HSU5FX1dBTlRfRk9S Q0VEX1BSRUVNUFRJT04pCisJCWRlc2MtPnBvbGljeV9mbGFncyB8PSBDT05URVhUX1BPTElDWV9G TEFHX1BSRUVNUFRfVE9fSURMRTsKKworCS8qIE5COiBGb3IgYm90aCBvZiB0aGVzZSwgemVybyBt ZWFucyBkaXNhYmxlZC4gKi8KKwlkZXNjLT5leGVjdXRpb25fcXVhbnR1bSA9IGVuZ2luZS0+cHJv cHMudGltZXNsaWNlX2R1cmF0aW9uX21zICogMTAwMDsKKwlkZXNjLT5wcmVlbXB0aW9uX3RpbWVv dXQgPSBlbmdpbmUtPnByb3BzLnByZWVtcHRfdGltZW91dF9tcyAqIDEwMDA7CiB9CiAKLXN0YXRp YyBpbnQgZ3VjX2xyY19kZXNjX3BpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCitzdGF0aWMg aW5saW5lIHU4IG1hcF9pOTE1X3ByaW9fdG9fZ3VjX3ByaW8oaW50IHByaW8pOworCitzdGF0aWMg aW50IGd1Y19scmNfZGVzY19waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlLCBib29sIGxvb3Ap CiB7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gY2UtPmVuZ2luZTsKIAlzdHJ1 Y3QgaW50ZWxfcnVudGltZV9wbSAqcnVudGltZV9wbSA9IGVuZ2luZS0+dW5jb3JlLT5ycG07CiAJ c3RydWN0IGludGVsX2d1YyAqZ3VjID0gJmVuZ2luZS0+Z3QtPnVjLmd1YzsKIAl1MzIgZGVzY19p ZHggPSBjZS0+Z3VjX2lkOwogCXN0cnVjdCBndWNfbHJjX2Rlc2MgKmRlc2M7CisJY29uc3Qgc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKKwlpbnQgcHJpbyA9IEk5MTVfQ09OVEVYVF9ERUZB VUxUX1BSSU9SSVRZOwogCWJvb2wgY29udGV4dF9yZWdpc3RlcmVkOwogCWludGVsX3dha2VyZWZf dCB3YWtlcmVmOwogCWludCByZXQgPSAwOwpAQCAtODkxLDYgKzEzMTEsMTIgQEAgc3RhdGljIGlu dCBndWNfbHJjX2Rlc2NfcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIAogCWNvbnRleHRf cmVnaXN0ZXJlZCA9IGxyY19kZXNjX3JlZ2lzdGVyZWQoZ3VjLCBkZXNjX2lkeCk7CiAKKwlyY3Vf cmVhZF9sb2NrKCk7CisJY3R4ID0gcmN1X2RlcmVmZXJlbmNlKGNlLT5nZW1fY29udGV4dCk7CisJ aWYgKGN0eCkKKwkJcHJpbyA9IGN0eC0+c2NoZWQucHJpb3JpdHk7CisJcmN1X3JlYWRfdW5sb2Nr KCk7CisKIAlyZXNldF9scmNfZGVzYyhndWMsIGRlc2NfaWR4KTsKIAlzZXRfbHJjX2Rlc2NfcmVn aXN0ZXJlZChndWMsIGRlc2NfaWR4LCBjZSk7CiAKQEAgLTg5OSw3ICsxMzI1LDggQEAgc3RhdGlj IGludCBndWNfbHJjX2Rlc2NfcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIAlkZXNjLT5l bmdpbmVfc3VibWl0X21hc2sgPSBhZGp1c3RfZW5naW5lX21hc2soZW5naW5lLT5jbGFzcywKIAkJ CQkJCSAgICAgIGVuZ2luZS0+bWFzayk7CiAJZGVzYy0+aHdfY29udGV4dF9kZXNjID0gY2UtPmxy Yy5scmNhOwotCWRlc2MtPnByaW9yaXR5ID0gR1VDX0NMSUVOVF9QUklPUklUWV9LTURfTk9STUFM OworCWNlLT5ndWNfcHJpbyA9IG1hcF9pOTE1X3ByaW9fdG9fZ3VjX3ByaW8ocHJpbyk7CisJZGVz Yy0+cHJpb3JpdHkgPSBjZS0+Z3VjX3ByaW87CiAJZGVzYy0+Y29udGV4dF9mbGFncyA9IENPTlRF WFRfUkVHSVNUUkFUSU9OX0ZMQUdfS01EOwogCWd1Y19jb250ZXh0X3BvbGljeV9pbml0KGVuZ2lu ZSwgZGVzYyk7CiAJaW5pdF9zY2hlZF9zdGF0ZShjZSk7CkBAIC05MTQsMzEgKzEzNDEsNjIgQEAg c3RhdGljIGludCBndWNfbHJjX2Rlc2NfcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIAkg Ki8KIAlpZiAoY29udGV4dF9yZWdpc3RlcmVkKSB7CiAJCXRyYWNlX2ludGVsX2NvbnRleHRfc3Rl YWxfZ3VjX2lkKGNlKTsKLQkJc2V0X2NvbnRleHRfd2FpdF9mb3JfZGVyZWdpc3Rlcl90b19yZWdp c3RlcihjZSk7Ci0JCWludGVsX2NvbnRleHRfZ2V0KGNlKTsKKwkJaWYgKCFsb29wKSB7CisJCQlz ZXRfY29udGV4dF93YWl0X2Zvcl9kZXJlZ2lzdGVyX3RvX3JlZ2lzdGVyKGNlKTsKKwkJCWludGVs X2NvbnRleHRfZ2V0KGNlKTsKKwkJfSBlbHNlIHsKKwkJCWJvb2wgZGlzYWJsZWQ7CisJCQl1bnNp Z25lZCBsb25nIGZsYWdzOworCisJCQkvKiBTZWFsIHJhY2Ugd2l0aCBSZXNldCAqLworCQkJc3Bp bl9sb2NrX2lycXNhdmUoJmNlLT5ndWNfc3RhdGUubG9jaywgZmxhZ3MpOworCQkJZGlzYWJsZWQg PSBzdWJtaXNzaW9uX2Rpc2FibGVkKGd1Yyk7CisJCQlpZiAobGlrZWx5KCFkaXNhYmxlZCkpIHsK KwkJCQlzZXRfY29udGV4dF93YWl0X2Zvcl9kZXJlZ2lzdGVyX3RvX3JlZ2lzdGVyKGNlKTsKKwkJ CQlpbnRlbF9jb250ZXh0X2dldChjZSk7CisJCQl9CisJCQlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZjZS0+Z3VjX3N0YXRlLmxvY2ssIGZsYWdzKTsKKwkJCWlmICh1bmxpa2VseShkaXNhYmxlZCkp IHsKKwkJCQlyZXNldF9scmNfZGVzYyhndWMsIGRlc2NfaWR4KTsKKwkJCQlyZXR1cm4gMDsJLyog V2lsbCBnZXQgcmVnaXN0ZXJlZCBsYXRlciAqLworCQkJfQorCQl9CiAKIAkJLyoKIAkJICogSWYg c3RlYWxpbmcgdGhlIGd1Y19pZCwgdGhpcyBjZSBoYXMgdGhlIHNhbWUgZ3VjX2lkIGFzIHRoZQog CQkgKiBjb250ZXh0IHdob3NlIGd1Y19pZCB3YXMgc3RvbGVuLgogCQkgKi8KIAkJd2l0aF9pbnRl bF9ydW50aW1lX3BtKHJ1bnRpbWVfcG0sIHdha2VyZWYpCi0JCQlyZXQgPSBkZXJlZ2lzdGVyX2Nv bnRleHQoY2UsIGNlLT5ndWNfaWQpOworCQkJcmV0ID0gZGVyZWdpc3Rlcl9jb250ZXh0KGNlLCBj ZS0+Z3VjX2lkLCBsb29wKTsKKwkJaWYgKHVubGlrZWx5KHJldCA9PSAtRUJVU1kpKSB7CisJCQlj bHJfY29udGV4dF93YWl0X2Zvcl9kZXJlZ2lzdGVyX3RvX3JlZ2lzdGVyKGNlKTsKKwkJCWludGVs X2NvbnRleHRfcHV0KGNlKTsKKwkJfSBlbHNlIGlmICh1bmxpa2VseShyZXQgPT0gLUVOT0RFVikp IHsKKwkJCXJldCA9IDA7CS8qIFdpbGwgZ2V0IHJlZ2lzdGVyZWQgbGF0ZXIgKi8KKwkJfQogCX0g ZWxzZSB7CiAJCXdpdGhfaW50ZWxfcnVudGltZV9wbShydW50aW1lX3BtLCB3YWtlcmVmKQotCQkJ cmV0ID0gcmVnaXN0ZXJfY29udGV4dChjZSk7CisJCQlyZXQgPSByZWdpc3Rlcl9jb250ZXh0KGNl LCBsb29wKTsKKwkJaWYgKHVubGlrZWx5KHJldCA9PSAtRUJVU1kpKQorCQkJcmVzZXRfbHJjX2Rl c2MoZ3VjLCBkZXNjX2lkeCk7CisJCWVsc2UgaWYgKHVubGlrZWx5KHJldCA9PSAtRU5PREVWKSkK KwkJCXJldCA9IDA7CS8qIFdpbGwgZ2V0IHJlZ2lzdGVyZWQgbGF0ZXIgKi8KIAl9CiAKIAlyZXR1 cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IGd1Y19jb250ZXh0X3ByZV9waW4oc3RydWN0IGludGVs X2NvbnRleHQgKmNlLAotCQkJICAgICAgIHN0cnVjdCBpOTE1X2dlbV93d19jdHggKnd3LAotCQkJ ICAgICAgIHZvaWQgKip2YWRkcikKK3N0YXRpYyBpbnQgX19ndWNfY29udGV4dF9wcmVfcGluKHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKKwkJCQkgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLAorCQkJCSBzdHJ1Y3QgaTkxNV9nZW1fd3dfY3R4ICp3dywKKwkJCQkgdm9pZCAqKnZhZGRy KQogewotCXJldHVybiBscmNfcHJlX3BpbihjZSwgY2UtPmVuZ2luZSwgd3csIHZhZGRyKTsKKwly ZXR1cm4gbHJjX3ByZV9waW4oY2UsIGVuZ2luZSwgd3csIHZhZGRyKTsKIH0KIAotc3RhdGljIGlu dCBndWNfY29udGV4dF9waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlLCB2b2lkICp2YWRkcikK K3N0YXRpYyBpbnQgX19ndWNfY29udGV4dF9waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAor CQkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkgICAgIHZvaWQgKnZh ZGRyKQogewogCWlmIChpOTE1X2dndHRfb2Zmc2V0KGNlLT5zdGF0ZSkgIT0KIAkgICAgKGNlLT5s cmMubHJjYSAmIENUWF9HVFRfQUREUkVTU19NQVNLKSkKQEAgLTk0OSw3ICsxNDA3LDE5IEBAIHN0 YXRpYyBpbnQgZ3VjX2NvbnRleHRfcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgdm9pZCAq dmFkZHIpCiAJICogZXhwbGFpbmF0aW9uIG9mIHdoeS4KIAkgKi8KIAotCXJldHVybiBscmNfcGlu KGNlLCBjZS0+ZW5naW5lLCB2YWRkcik7CisJcmV0dXJuIGxyY19waW4oY2UsIGVuZ2luZSwgdmFk ZHIpOworfQorCitzdGF0aWMgaW50IGd1Y19jb250ZXh0X3ByZV9waW4oc3RydWN0IGludGVsX2Nv bnRleHQgKmNlLAorCQkJICAgICAgIHN0cnVjdCBpOTE1X2dlbV93d19jdHggKnd3LAorCQkJICAg ICAgIHZvaWQgKip2YWRkcikKK3sKKwlyZXR1cm4gX19ndWNfY29udGV4dF9wcmVfcGluKGNlLCBj ZS0+ZW5naW5lLCB3dywgdmFkZHIpOworfQorCitzdGF0aWMgaW50IGd1Y19jb250ZXh0X3Bpbihz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIHZvaWQgKnZhZGRyKQoreworCXJldHVybiBfX2d1Y19j b250ZXh0X3BpbihjZSwgY2UtPmVuZ2luZSwgdmFkZHIpOwogfQogCiBzdGF0aWMgdm9pZCBndWNf Y29udGV4dF91bnBpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCkBAIC05NjUsNiArMTQzNSwy MSBAQCBzdGF0aWMgdm9pZCBndWNfY29udGV4dF9wb3N0X3VucGluKHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSkKIAlscmNfcG9zdF91bnBpbihjZSk7CiB9CiAKK3N0YXRpYyB2b2lkIF9fZ3VjX2Nv bnRleHRfc2NoZWRfZW5hYmxlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKKwkJCQkgICAgICAgc3Ry dWN0IGludGVsX2NvbnRleHQgKmNlKQoreworCXUzMiBhY3Rpb25bXSA9IHsKKwkJSU5URUxfR1VD X0FDVElPTl9TQ0hFRF9DT05URVhUX01PREVfU0VULAorCQljZS0+Z3VjX2lkLAorCQlHVUNfQ09O VEVYVF9FTkFCTEUKKwl9OworCisJdHJhY2VfaW50ZWxfY29udGV4dF9zY2hlZF9lbmFibGUoY2Up OworCisJZ3VjX3N1Ym1pc3Npb25fc2VuZF9idXN5X2xvb3AoZ3VjLCBhY3Rpb24sIEFSUkFZX1NJ WkUoYWN0aW9uKSwKKwkJCQkgICAgICBHMkhfTEVOX0RXX1NDSEVEX0NPTlRFWFRfTU9ERV9TRVQs IHRydWUpOworfQorCiBzdGF0aWMgdm9pZCBfX2d1Y19jb250ZXh0X3NjaGVkX2Rpc2FibGUoc3Ry dWN0IGludGVsX2d1YyAqZ3VjLAogCQkJCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiAJCQkJ CXUxNiBndWNfaWQpCkBAIC05NzgsMzEgKzE0NjMsMjA4IEBAIHN0YXRpYyB2b2lkIF9fZ3VjX2Nv bnRleHRfc2NoZWRfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCiAJR0VNX0JVR19PTihn dWNfaWQgPT0gR1VDX0lOVkFMSURfTFJDX0lEKTsKIAogCXRyYWNlX2ludGVsX2NvbnRleHRfc2No ZWRfZGlzYWJsZShjZSk7Ci0JaW50ZWxfY29udGV4dF9nZXQoY2UpOwogCiAJZ3VjX3N1Ym1pc3Np b25fc2VuZF9idXN5X2xvb3AoZ3VjLCBhY3Rpb24sIEFSUkFZX1NJWkUoYWN0aW9uKSwKIAkJCQkg ICAgICBHMkhfTEVOX0RXX1NDSEVEX0NPTlRFWFRfTU9ERV9TRVQsIHRydWUpOwogfQogCi1zdGF0 aWMgdTE2IHByZXBfY29udGV4dF9wZW5kaW5nX2Rpc2FibGUoc3RydWN0IGludGVsX2NvbnRleHQg KmNlKQorc3RhdGljIHZvaWQgZ3VjX2Jsb2NrZWRfZmVuY2VfY29tcGxldGUoc3RydWN0IGludGVs X2NvbnRleHQgKmNlKQogewogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmNlLT5ndWNfc3RhdGUubG9j ayk7CiAKLQlzZXRfY29udGV4dF9wZW5kaW5nX2Rpc2FibGUoY2UpOwotCWNscl9jb250ZXh0X2Vu YWJsZWQoY2UpOwotCi0JcmV0dXJuIGNlLT5ndWNfaWQ7CisJaWYgKCFpOTE1X3N3X2ZlbmNlX2Rv bmUoJmNlLT5ndWNfYmxvY2tlZCkpCisJCWk5MTVfc3dfZmVuY2VfY29tcGxldGUoJmNlLT5ndWNf YmxvY2tlZCk7CiB9CiAKLXN0YXRpYyB2b2lkIGd1Y19jb250ZXh0X3NjaGVkX2Rpc2FibGUoc3Ry dWN0IGludGVsX2NvbnRleHQgKmNlKQorc3RhdGljIHZvaWQgZ3VjX2Jsb2NrZWRfZmVuY2VfcmVp bml0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMg PSBjZV90b19ndWMoY2UpOwotCXN0cnVjdCBpbnRlbF9ydW50aW1lX3BtICpydW50aW1lX3BtID0g JmNlLT5lbmdpbmUtPmd0LT5pOTE1LT5ydW50aW1lX3BtOworCWxvY2tkZXBfYXNzZXJ0X2hlbGQo JmNlLT5ndWNfc3RhdGUubG9jayk7CisJR0VNX0JVR19PTighaTkxNV9zd19mZW5jZV9kb25lKCZj ZS0+Z3VjX2Jsb2NrZWQpKTsKKworCS8qCisJICogVGhpcyBmZW5jZSBpcyBhbHdheXMgY29tcGxl dGUgdW5sZXNzIGEgcGVuZGluZyBzY2hlZHVsZSBkaXNhYmxlIGlzCisJICogb3V0c3RhbmRpbmcu IFdlIGFybSB0aGUgZmVuY2UgaGVyZSBhbmQgY29tcGxldGUgaXQgd2hlbiB3ZSByZWNlaXZlCisJ ICogdGhlIHBlbmRpbmcgc2NoZWR1bGUgZGlzYWJsZSBjb21wbGV0ZSBtZXNzYWdlLgorCSAqLwor CWk5MTVfc3dfZmVuY2VfZmluaSgmY2UtPmd1Y19ibG9ja2VkKTsKKwlpOTE1X3N3X2ZlbmNlX3Jl aW5pdCgmY2UtPmd1Y19ibG9ja2VkKTsKKwlpOTE1X3N3X2ZlbmNlX2F3YWl0KCZjZS0+Z3VjX2Js b2NrZWQpOworCWk5MTVfc3dfZmVuY2VfY29tbWl0KCZjZS0+Z3VjX2Jsb2NrZWQpOworfQorCitz dGF0aWMgdTE2IHByZXBfY29udGV4dF9wZW5kaW5nX2Rpc2FibGUoc3RydWN0IGludGVsX2NvbnRl eHQgKmNlKQoreworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmNlLT5ndWNfc3RhdGUubG9jayk7CisK KwlzZXRfY29udGV4dF9wZW5kaW5nX2Rpc2FibGUoY2UpOworCWNscl9jb250ZXh0X2VuYWJsZWQo Y2UpOworCWd1Y19ibG9ja2VkX2ZlbmNlX3JlaW5pdChjZSk7CisJaW50ZWxfY29udGV4dF9nZXQo Y2UpOworCisJcmV0dXJuIGNlLT5ndWNfaWQ7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaTkxNV9zd19m ZW5jZSAqZ3VjX2NvbnRleHRfYmxvY2soc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworCXN0 cnVjdCBpbnRlbF9ndWMgKmd1YyA9IGNlX3RvX2d1YyhjZSk7CisJc3RydWN0IGk5MTVfc2NoZWRf ZW5naW5lICpzY2hlZF9lbmdpbmUgPSBjZS0+ZW5naW5lLT5zY2hlZF9lbmdpbmU7CiAJdW5zaWdu ZWQgbG9uZyBmbGFnczsKKwlzdHJ1Y3QgaW50ZWxfcnVudGltZV9wbSAqcnVudGltZV9wbSA9IGNl LT5lbmdpbmUtPnVuY29yZS0+cnBtOworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwogCXUxNiBn dWNfaWQ7CisJYm9vbCBlbmFibGVkOworCisJLyogU3luYyB3aXRoIHN1Ym1pc3Npb24gcGF0aCBh bmQgdW5ibG9jayAqLworCXNwaW5fbG9ja19pcnFzYXZlKCZzY2hlZF9lbmdpbmUtPmxvY2ssIGZs YWdzKTsKKwlpbmNyX2NvbnRleHRfYmxvY2tlZChjZSk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmc2NoZWRfZW5naW5lLT5sb2NrLCBmbGFncyk7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmY2Ut Pmd1Y19zdGF0ZS5sb2NrLCBmbGFncyk7CisJZW5hYmxlZCA9IGNvbnRleHRfZW5hYmxlZChjZSk7 CisJaWYgKHVubGlrZWx5KCFlbmFibGVkIHx8IHN1Ym1pc3Npb25fZGlzYWJsZWQoZ3VjKSkpIHsK KwkJaWYgKGVuYWJsZWQpCisJCQljbHJfY29udGV4dF9lbmFibGVkKGNlKTsKKwkJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmY2UtPmd1Y19zdGF0ZS5sb2NrLCBmbGFncyk7CisJCXJldHVybiAmY2Ut Pmd1Y19ibG9ja2VkOworCX0KKworCS8qCisJICogV2UgYWRkICsyIGhlcmUgYXMgdGhlIHNjaGVk dWxlIGRpc2FibGUgY29tcGxldGUgQ1RCIGhhbmRsZXIgY2FsbHMKKwkgKiBpbnRlbF9jb250ZXh0 X3NjaGVkX2Rpc2FibGVfdW5waW4gKC0yIHRvIHBpbl9jb3VudCkuCisJICovCisJYXRvbWljX2Fk ZCgyLCAmY2UtPnBpbl9jb3VudCk7CisKKwlndWNfaWQgPSBwcmVwX2NvbnRleHRfcGVuZGluZ19k aXNhYmxlKGNlKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjZS0+Z3VjX3N0YXRlLmxvY2ss IGZsYWdzKTsKKworCXdpdGhfaW50ZWxfcnVudGltZV9wbShydW50aW1lX3BtLCB3YWtlcmVmKQor CQlfX2d1Y19jb250ZXh0X3NjaGVkX2Rpc2FibGUoZ3VjLCBjZSwgZ3VjX2lkKTsKKworCXJldHVy biAmY2UtPmd1Y19ibG9ja2VkOworfQorCitzdGF0aWMgdm9pZCBndWNfY29udGV4dF91bmJsb2Nr KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSBj ZV90b19ndWMoY2UpOworCXN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqc2NoZWRfZW5naW5lID0g Y2UtPmVuZ2luZS0+c2NoZWRfZW5naW5lOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0 IGludGVsX3J1bnRpbWVfcG0gKnJ1bnRpbWVfcG0gPSBjZS0+ZW5naW5lLT51bmNvcmUtPnJwbTsK KwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKworCUdFTV9CVUdfT04oY29udGV4dF9lbmFibGVk KGNlKSk7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmY2UtPmd1Y19zdGF0ZS5sb2NrLCBmbGFncyk7 CisJaWYgKHVubGlrZWx5KHN1Ym1pc3Npb25fZGlzYWJsZWQoZ3VjKSB8fAorCQkgICAgICFpbnRl bF9jb250ZXh0X2lzX3Bpbm5lZChjZSkgfHwKKwkJICAgICBjb250ZXh0X3BlbmRpbmdfZGlzYWJs ZShjZSkgfHwKKwkJICAgICBjb250ZXh0X2Jsb2NrZWQoY2UpID4gMSkpIHsKKwkJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmY2UtPmd1Y19zdGF0ZS5sb2NrLCBmbGFncyk7CisJCWdvdG8gb3V0Owor CX0KKworCXNldF9jb250ZXh0X3BlbmRpbmdfZW5hYmxlKGNlKTsKKwlzZXRfY29udGV4dF9lbmFi bGVkKGNlKTsKKwlpbnRlbF9jb250ZXh0X2dldChjZSk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmY2UtPmd1Y19zdGF0ZS5sb2NrLCBmbGFncyk7CisKKwl3aXRoX2ludGVsX3J1bnRpbWVfcG0o cnVudGltZV9wbSwgd2FrZXJlZikKKwkJX19ndWNfY29udGV4dF9zY2hlZF9lbmFibGUoZ3VjLCBj ZSk7CisKK291dDoKKwlzcGluX2xvY2tfaXJxc2F2ZSgmc2NoZWRfZW5naW5lLT5sb2NrLCBmbGFn cyk7CisJZGVjcl9jb250ZXh0X2Jsb2NrZWQoY2UpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JnNjaGVkX2VuZ2luZS0+bG9jaywgZmxhZ3MpOworfQorCitzdGF0aWMgdm9pZCBndWNfY29udGV4 dF9jYW5jZWxfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCQkJICAgICAgIHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQoreworCWlmIChpOTE1X3N3X2ZlbmNlX3NpZ25hbGVkKCZy cS0+c3VibWl0KSkgeworCQlzdHJ1Y3QgaTkxNV9zd19mZW5jZSAqZmVuY2UgPSBndWNfY29udGV4 dF9ibG9jayhjZSk7CisKKwkJaTkxNV9zd19mZW5jZV93YWl0KGZlbmNlKTsKKwkJaWYgKCFpOTE1 X3JlcXVlc3RfY29tcGxldGVkKHJxKSkgeworCQkJX19pOTE1X3JlcXVlc3Rfc2tpcChycSk7CisJ CQlndWNfcmVzZXRfc3RhdGUoY2UsIGludGVsX3Jpbmdfd3JhcChjZS0+cmluZywgcnEtPmhlYWQp LAorCQkJCQl0cnVlKTsKKwkJfQorCQlndWNfY29udGV4dF91bmJsb2NrKGNlKTsKKwl9Cit9CisK K3N0YXRpYyB2b2lkIF9fZ3VjX2NvbnRleHRfc2V0X3ByZWVtcHRpb25fdGltZW91dChzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMsCisJCQkJCQkgdTE2IGd1Y19pZCwKKwkJCQkJCSB1MzIgcHJlZW1wdGlv bl90aW1lb3V0KQoreworCXUzMiBhY3Rpb25bXSA9IHsKKwkJSU5URUxfR1VDX0FDVElPTl9TRVRf Q09OVEVYVF9QUkVFTVBUSU9OX1RJTUVPVVQsCisJCWd1Y19pZCwKKwkJcHJlZW1wdGlvbl90aW1l b3V0CisJfTsKKworCWludGVsX2d1Y19zZW5kX2J1c3lfbG9vcChndWMsIGFjdGlvbiwgQVJSQVlf U0laRShhY3Rpb24pLCAwLCB0cnVlKTsKK30KKworc3RhdGljIHZvaWQgZ3VjX2NvbnRleHRfYmFu KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJ c3RydWN0IGludGVsX2d1YyAqZ3VjID0gY2VfdG9fZ3VjKGNlKTsKKwlzdHJ1Y3QgaW50ZWxfcnVu dGltZV9wbSAqcnVudGltZV9wbSA9CisJCSZjZS0+ZW5naW5lLT5ndC0+aTkxNS0+cnVudGltZV9w bTsKIAlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJ Z3VjX2ZsdXNoX3N1Ym1pc3Npb25zKGd1Yyk7CiAKLQlpZiAoY29udGV4dF9ndWNfaWRfaW52YWxp ZChjZSkgfHwKKwlzcGluX2xvY2tfaXJxc2F2ZSgmY2UtPmd1Y19zdGF0ZS5sb2NrLCBmbGFncyk7 CisJc2V0X2NvbnRleHRfYmFubmVkKGNlKTsKKworCWlmIChzdWJtaXNzaW9uX2Rpc2FibGVkKGd1 YykgfHwKKwkgICAgKCFjb250ZXh0X2VuYWJsZWQoY2UpICYmICFjb250ZXh0X3BlbmRpbmdfZGlz YWJsZShjZSkpKSB7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNlLT5ndWNfc3RhdGUubG9j aywgZmxhZ3MpOworCisJCWd1Y19jYW5jZWxfY29udGV4dF9yZXF1ZXN0cyhjZSk7CisJCWludGVs X2VuZ2luZV9zaWduYWxfYnJlYWRjcnVtYnMoY2UtPmVuZ2luZSk7CisJfSBlbHNlIGlmICghY29u dGV4dF9wZW5kaW5nX2Rpc2FibGUoY2UpKSB7CisJCXUxNiBndWNfaWQ7CisKKwkJLyoKKwkJICog V2UgYWRkICsyIGhlcmUgYXMgdGhlIHNjaGVkdWxlIGRpc2FibGUgY29tcGxldGUgQ1RCIGhhbmRs ZXIKKwkJICogY2FsbHMgaW50ZWxfY29udGV4dF9zY2hlZF9kaXNhYmxlX3VucGluICgtMiB0byBw aW5fY291bnQpLgorCQkgKi8KKwkJYXRvbWljX2FkZCgyLCAmY2UtPnBpbl9jb3VudCk7CisKKwkJ Z3VjX2lkID0gcHJlcF9jb250ZXh0X3BlbmRpbmdfZGlzYWJsZShjZSk7CisJCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmNlLT5ndWNfc3RhdGUubG9jaywgZmxhZ3MpOworCisJCS8qCisJCSAqIElu IGFkZGl0aW9uIHRvIGRpc2FibGluZyBzY2hlZHVsaW5nLCBzZXQgdGhlIHByZWVtcHRpb24KKwkJ ICogdGltZW91dCB0byB0aGUgbWluaW11bSB2YWx1ZSAoMSB1cykgc28gdGhlIGJhbm5lZCBjb250 ZXh0CisJCSAqIGdldHMga2lja2VkIG9mZiB0aGUgSFcgQVNBUC4KKwkJICovCisJCXdpdGhfaW50 ZWxfcnVudGltZV9wbShydW50aW1lX3BtLCB3YWtlcmVmKSB7CisJCQlfX2d1Y19jb250ZXh0X3Nl dF9wcmVlbXB0aW9uX3RpbWVvdXQoZ3VjLCBndWNfaWQsIDEpOworCQkJX19ndWNfY29udGV4dF9z Y2hlZF9kaXNhYmxlKGd1YywgY2UsIGd1Y19pZCk7CisJCX0KKwl9IGVsc2UgeworCQlpZiAoIWNv bnRleHRfZ3VjX2lkX2ludmFsaWQoY2UpKQorCQkJd2l0aF9pbnRlbF9ydW50aW1lX3BtKHJ1bnRp bWVfcG0sIHdha2VyZWYpCisJCQkJX19ndWNfY29udGV4dF9zZXRfcHJlZW1wdGlvbl90aW1lb3V0 KGd1YywKKwkJCQkJCQkJICAgICBjZS0+Z3VjX2lkLAorCQkJCQkJCQkgICAgIDEpOworCQlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZjZS0+Z3VjX3N0YXRlLmxvY2ssIGZsYWdzKTsKKwl9Cit9CisK K3N0YXRpYyB2b2lkIGd1Y19jb250ZXh0X3NjaGVkX2Rpc2FibGUoc3RydWN0IGludGVsX2NvbnRl eHQgKmNlKQoreworCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9IGNlX3RvX2d1YyhjZSk7CisJdW5z aWduZWQgbG9uZyBmbGFnczsKKwlzdHJ1Y3QgaW50ZWxfcnVudGltZV9wbSAqcnVudGltZV9wbSA9 ICZjZS0+ZW5naW5lLT5ndC0+aTkxNS0+cnVudGltZV9wbTsKKwlpbnRlbF93YWtlcmVmX3Qgd2Fr ZXJlZjsKKwl1MTYgZ3VjX2lkOworCWJvb2wgZW5hYmxlZDsKKworCWlmIChzdWJtaXNzaW9uX2Rp c2FibGVkKGd1YykgfHwgY29udGV4dF9ndWNfaWRfaW52YWxpZChjZSkgfHwKIAkgICAgIWxyY19k ZXNjX3JlZ2lzdGVyZWQoZ3VjLCBjZS0+Z3VjX2lkKSkgewogCQljbHJfY29udGV4dF9lbmFibGVk KGNlKTsKIAkJZ290byB1bnBpbjsKQEAgLTEwMTQsMTQgKzE2NzYsMjIgQEAgc3RhdGljIHZvaWQg Z3VjX2NvbnRleHRfc2NoZWRfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAJc3Bp bl9sb2NrX2lycXNhdmUoJmNlLT5ndWNfc3RhdGUubG9jaywgZmxhZ3MpOwogCiAJLyoKLQkgKiBX ZSBoYXZlIHRvIGNoZWNrIGlmIHRoZSBjb250ZXh0IGhhcyBiZWVuIHBpbm5lZCBhZ2FpbiBhcyBh bm90aGVyIHBpbgotCSAqIG9wZXJhdGlvbiBpcyBhbGxvd2VkIHRvIHBhc3MgdGhpcyBmdW5jdGlv bi4gQ2hlY2tpbmcgdGhlIHBpbiBjb3VudCwKLQkgKiB3aXRoaW4gY2UtPmd1Y19zdGF0ZS5sb2Nr LCBzeW5jaHJvbml6ZXMgdGhpcyBmdW5jdGlvbiB3aXRoCisJICogV2UgaGF2ZSB0byBjaGVjayBp ZiB0aGUgY29udGV4dCBoYXMgYmVlbiBkaXNhYmxlZCBieSBhbm90aGVyIHRocmVhZC4KKwkgKiBX ZSBhbHNvIGhhdmUgdG8gY2hlY2sgaWYgdGhlIGNvbnRleHQgaGFzIGJlZW4gcGlubmVkIGFnYWlu IGFzIGFub3RoZXIKKwkgKiBwaW4gb3BlcmF0aW9uIGlzIGFsbG93ZWQgdG8gcGFzcyB0aGlzIGZ1 bmN0aW9uLiBDaGVja2luZyB0aGUgcGluCisJICogY291bnQsIHdpdGhpbiBjZS0+Z3VjX3N0YXRl LmxvY2ssIHN5bmNocm9uaXplcyB0aGlzIGZ1bmN0aW9uIHdpdGgKIAkgKiBndWNfcmVxdWVzdF9h bGxvYyBlbnN1cmluZyBhIHJlcXVlc3QgZG9lc24ndCBzbGlwIHRocm91Z2ggdGhlCiAJICogJ2Nv bnRleHRfcGVuZGluZ19kaXNhYmxlJyBmZW5jZS4gQ2hlY2tpbmcgd2l0aGluIHRoZSBzcGluIGxv Y2sgKGNhbid0CiAJICogc2xlZXApIGVuc3VyZXMgYW5vdGhlciBwcm9jZXNzIGRvZXNuJ3QgcGlu IHRoaXMgY29udGV4dCBhbmQgZ2VuZXJhdGUKIAkgKiBhIHJlcXVlc3QgYmVmb3JlIHdlIHNldCB0 aGUgJ2NvbnRleHRfcGVuZGluZ19kaXNhYmxlJyBmbGFnIGhlcmUuCiAJICovCisJZW5hYmxlZCA9 IGNvbnRleHRfZW5hYmxlZChjZSk7CisJaWYgKHVubGlrZWx5KCFlbmFibGVkIHx8IHN1Ym1pc3Np b25fZGlzYWJsZWQoZ3VjKSkpIHsKKwkJaWYgKGVuYWJsZWQpCisJCQljbHJfY29udGV4dF9lbmFi bGVkKGNlKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2UtPmd1Y19zdGF0ZS5sb2NrLCBm bGFncyk7CisJCWdvdG8gdW5waW47CisJfQogCWlmICh1bmxpa2VseShhdG9taWNfYWRkX3VubGVz cygmY2UtPnBpbl9jb3VudCwgLTIsIDIpKSkgewogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZj ZS0+Z3VjX3N0YXRlLmxvY2ssIGZsYWdzKTsKIAkJcmV0dXJuOwpAQCAtMTA0MSwxNyArMTcxMSwz NiBAQCBzdGF0aWMgdm9pZCBndWNfY29udGV4dF9zY2hlZF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSkKIHN0YXRpYyBpbmxpbmUgdm9pZCBndWNfbHJjX2Rlc2NfdW5waW4oc3RydWN0 IGludGVsX2NvbnRleHQgKmNlKQogewogCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9IGNlX3RvX2d1 YyhjZSk7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCUdFTV9CVUdfT04oIWxyY19kZXNjX3Jl Z2lzdGVyZWQoZ3VjLCBjZS0+Z3VjX2lkKSk7CiAJR0VNX0JVR19PTihjZSAhPSBfX2dldF9jb250 ZXh0KGd1YywgY2UtPmd1Y19pZCkpOwogCUdFTV9CVUdfT04oY29udGV4dF9lbmFibGVkKGNlKSk7 CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgmY2UtPmd1Y19zdGF0ZS5sb2NrLCBmbGFncyk7Ci0Jc2V0 X2NvbnRleHRfZGVzdHJveWVkKGNlKTsKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjZS0+Z3Vj X3N0YXRlLmxvY2ssIGZsYWdzKTsKKwljbHJfY29udGV4dF9yZWdpc3RlcmVkKGNlKTsKKwlkZXJl Z2lzdGVyX2NvbnRleHQoY2UsIGNlLT5ndWNfaWQsIHRydWUpOworfQorCitzdGF0aWMgdm9pZCBf X2d1Y19jb250ZXh0X2Rlc3Ryb3koc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworCUdFTV9C VUdfT04oY2UtPmd1Y19wcmlvX2NvdW50W0dVQ19DTElFTlRfUFJJT1JJVFlfS01EX0hJR0hdIHx8 CisJCSAgIGNlLT5ndWNfcHJpb19jb3VudFtHVUNfQ0xJRU5UX1BSSU9SSVRZX0hJR0hdIHx8CisJ CSAgIGNlLT5ndWNfcHJpb19jb3VudFtHVUNfQ0xJRU5UX1BSSU9SSVRZX0tNRF9OT1JNQUxdIHx8 CisJCSAgIGNlLT5ndWNfcHJpb19jb3VudFtHVUNfQ0xJRU5UX1BSSU9SSVRZX05PUk1BTF0pOwor CisJbHJjX2ZpbmkoY2UpOworCWludGVsX2NvbnRleHRfZmluaShjZSk7CisKKwlpZiAoaW50ZWxf ZW5naW5lX2lzX3ZpcnR1YWwoY2UtPmVuZ2luZSkpIHsKKwkJc3RydWN0IGd1Y192aXJ0dWFsX2Vu Z2luZSAqdmUgPQorCQkJY29udGFpbmVyX29mKGNlLCB0eXBlb2YoKnZlKSwgY29udGV4dCk7CisK KwkJaWYgKHZlLT5iYXNlLmJyZWFkY3J1bWJzKQorCQkJaW50ZWxfYnJlYWRjcnVtYnNfcHV0KHZl LT5iYXNlLmJyZWFkY3J1bWJzKTsKIAotCWRlcmVnaXN0ZXJfY29udGV4dChjZSwgY2UtPmd1Y19p ZCk7CisJCWtmcmVlKHZlKTsKKwl9IGVsc2UgeworCQlpbnRlbF9jb250ZXh0X2ZyZWUoY2UpOwor CX0KIH0KIAogc3RhdGljIHZvaWQgZ3VjX2NvbnRleHRfZGVzdHJveShzdHJ1Y3Qga3JlZiAqa3Jl ZikKQEAgLTEwNjEsMTggKzE3NTAsMjAgQEAgc3RhdGljIHZvaWQgZ3VjX2NvbnRleHRfZGVzdHJv eShzdHJ1Y3Qga3JlZiAqa3JlZikKIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSBjZV90b19ndWMo Y2UpOwogCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJ Ym9vbCBkaXNhYmxlZDsKIAogCS8qCiAJICogSWYgdGhlIGd1Y19pZCBpcyBpbnZhbGlkIHRoaXMg Y29udGV4dCBoYXMgYmVlbiBzdG9sZW4gYW5kIHdlIGNhbiBmcmVlCiAJICogaXQgaW1tZWRpYXRl bHkuIEFsc28gY2FuIGJlIGZyZWVkIGltbWVkaWF0ZWx5IGlmIHRoZSBjb250ZXh0IGlzIG5vdAot CSAqIHJlZ2lzdGVyZWQgd2l0aCB0aGUgR3VDLgorCSAqIHJlZ2lzdGVyZWQgd2l0aCB0aGUgR3VD IG9yIHRoZSBHdUMgaXMgaW4gdGhlIG1pZGRsZSBvZiBhIHJlc2V0LgogCSAqLwogCWlmIChjb250 ZXh0X2d1Y19pZF9pbnZhbGlkKGNlKSkgewotCQlscmNfZGVzdHJveShrcmVmKTsKKwkJX19ndWNf Y29udGV4dF9kZXN0cm95KGNlKTsKIAkJcmV0dXJuOwotCX0gZWxzZSBpZiAoIWxyY19kZXNjX3Jl Z2lzdGVyZWQoZ3VjLCBjZS0+Z3VjX2lkKSkgeworCX0gZWxzZSBpZiAoc3VibWlzc2lvbl9kaXNh YmxlZChndWMpIHx8CisJCSAgICFscmNfZGVzY19yZWdpc3RlcmVkKGd1YywgY2UtPmd1Y19pZCkp IHsKIAkJcmVsZWFzZV9ndWNfaWQoZ3VjLCBjZSk7Ci0JCWxyY19kZXN0cm95KGtyZWYpOworCQlf X2d1Y19jb250ZXh0X2Rlc3Ryb3koY2UpOwogCQlyZXR1cm47CiAJfQogCkBAIC0xMDg3LDcgKzE3 NzgsNyBAQCBzdGF0aWMgdm9pZCBndWNfY29udGV4dF9kZXN0cm95KHN0cnVjdCBrcmVmICprcmVm KQogCXNwaW5fbG9ja19pcnFzYXZlKCZndWMtPmNvbnRleHRzX2xvY2ssIGZsYWdzKTsKIAlpZiAo Y29udGV4dF9ndWNfaWRfaW52YWxpZChjZSkpIHsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm Z3VjLT5jb250ZXh0c19sb2NrLCBmbGFncyk7Ci0JCWxyY19kZXN0cm95KGtyZWYpOworCQlfX2d1 Y19jb250ZXh0X2Rlc3Ryb3koY2UpOwogCQlyZXR1cm47CiAJfQogCkBAIC0xMDk1LDYgKzE3ODYs MTggQEAgc3RhdGljIHZvaWQgZ3VjX2NvbnRleHRfZGVzdHJveShzdHJ1Y3Qga3JlZiAqa3JlZikK IAkJbGlzdF9kZWxfaW5pdCgmY2UtPmd1Y19pZF9saW5rKTsKIAlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZndWMtPmNvbnRleHRzX2xvY2ssIGZsYWdzKTsKIAorCS8qIFNlYWwgcmFjZSB3aXRoIFJl c2V0ICovCisJc3Bpbl9sb2NrX2lycXNhdmUoJmNlLT5ndWNfc3RhdGUubG9jaywgZmxhZ3MpOwor CWRpc2FibGVkID0gc3VibWlzc2lvbl9kaXNhYmxlZChndWMpOworCWlmIChsaWtlbHkoIWRpc2Fi bGVkKSkKKwkJc2V0X2NvbnRleHRfZGVzdHJveWVkKGNlKTsKKwlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZjZS0+Z3VjX3N0YXRlLmxvY2ssIGZsYWdzKTsKKwlpZiAodW5saWtlbHkoZGlzYWJsZWQp KSB7CisJCXJlbGVhc2VfZ3VjX2lkKGd1YywgY2UpOworCQlfX2d1Y19jb250ZXh0X2Rlc3Ryb3ko Y2UpOworCQlyZXR1cm47CisJfQorCiAJLyoKIAkgKiBXZSBkZWZlciBHdUMgY29udGV4dCBkZXJl Z2lzdHJhdGlvbiB1bnRpbCB0aGUgY29udGV4dCBpcyBkZXN0cm95ZWQKIAkgKiBpbiBvcmRlciB0 byBzYXZlIG9uIENUQnMuIFdpdGggdGhpcyBvcHRpbWl6YXRpb24gaWRlYWxseSB3ZSBvbmx5IG5l ZWQKQEAgLTExMTcsNiArMTgyMCwxNDQgQEAgc3RhdGljIGludCBndWNfY29udGV4dF9hbGxvYyhz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAJcmV0dXJuIGxyY19hbGxvYyhjZSwgY2UtPmVuZ2lu ZSk7CiB9CiAKK3N0YXRpYyB2b2lkIGd1Y19jb250ZXh0X3NldF9wcmlvKHN0cnVjdCBpbnRlbF9n dWMgKmd1YywKKwkJCQkgc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAorCQkJCSB1OCBwcmlvKQor eworCXUzMiBhY3Rpb25bXSA9IHsKKwkJSU5URUxfR1VDX0FDVElPTl9TRVRfQ09OVEVYVF9QUklP UklUWSwKKwkJY2UtPmd1Y19pZCwKKwkJcHJpbywKKwl9OworCisJR0VNX0JVR19PTihwcmlvIDwg R1VDX0NMSUVOVF9QUklPUklUWV9LTURfSElHSCB8fAorCQkgICBwcmlvID4gR1VDX0NMSUVOVF9Q UklPUklUWV9OT1JNQUwpOworCisJaWYgKGNlLT5ndWNfcHJpbyA9PSBwcmlvIHx8IHN1Ym1pc3Np b25fZGlzYWJsZWQoZ3VjKSB8fAorCSAgICAhY29udGV4dF9yZWdpc3RlcmVkKGNlKSkKKwkJcmV0 dXJuOworCisJZ3VjX3N1Ym1pc3Npb25fc2VuZF9idXN5X2xvb3AoZ3VjLCBhY3Rpb24sIEFSUkFZ X1NJWkUoYWN0aW9uKSwgMCwgdHJ1ZSk7CisKKwljZS0+Z3VjX3ByaW8gPSBwcmlvOworCXRyYWNl X2ludGVsX2NvbnRleHRfc2V0X3ByaW8oY2UpOworfQorCitzdGF0aWMgaW5saW5lIHU4IG1hcF9p OTE1X3ByaW9fdG9fZ3VjX3ByaW8oaW50IHByaW8pCit7CisJaWYgKHByaW8gPT0gSTkxNV9QUklP UklUWV9OT1JNQUwpCisJCXJldHVybiBHVUNfQ0xJRU5UX1BSSU9SSVRZX0tNRF9OT1JNQUw7CisJ ZWxzZSBpZiAocHJpbyA8IEk5MTVfUFJJT1JJVFlfTk9STUFMKQorCQlyZXR1cm4gR1VDX0NMSUVO VF9QUklPUklUWV9OT1JNQUw7CisJZWxzZSBpZiAocHJpbyA8IEk5MTVfUFJJT1JJVFlfRElTUExB WSkKKwkJcmV0dXJuIEdVQ19DTElFTlRfUFJJT1JJVFlfSElHSDsKKwllbHNlCisJCXJldHVybiBH VUNfQ0xJRU5UX1BSSU9SSVRZX0tNRF9ISUdIOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYWRk X2NvbnRleHRfaW5mbGlnaHRfcHJpbyhzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCQkJCSAg ICAgdTggZ3VjX3ByaW8pCit7CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmY2UtPmd1Y19hY3RpdmUu bG9jayk7CisJR0VNX0JVR19PTihndWNfcHJpbyA+PSBBUlJBWV9TSVpFKGNlLT5ndWNfcHJpb19j b3VudCkpOworCisJKytjZS0+Z3VjX3ByaW9fY291bnRbZ3VjX3ByaW9dOworCisJLyogT3ZlcmZs b3cgcHJvdGVjdGlvbiAqLworCUdFTV9XQVJOX09OKCFjZS0+Z3VjX3ByaW9fY291bnRbZ3VjX3By aW9dKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHN1Yl9jb250ZXh0X2luZmxpZ2h0X3ByaW8o c3RydWN0IGludGVsX2NvbnRleHQgKmNlLAorCQkJCQkgICAgIHU4IGd1Y19wcmlvKQoreworCWxv Y2tkZXBfYXNzZXJ0X2hlbGQoJmNlLT5ndWNfYWN0aXZlLmxvY2spOworCUdFTV9CVUdfT04oZ3Vj X3ByaW8gPj0gQVJSQVlfU0laRShjZS0+Z3VjX3ByaW9fY291bnQpKTsKKworCS8qIFVuZGVyZmxv dyBwcm90ZWN0aW9uICovCisJR0VNX1dBUk5fT04oIWNlLT5ndWNfcHJpb19jb3VudFtndWNfcHJp b10pOworCisJLS1jZS0+Z3VjX3ByaW9fY291bnRbZ3VjX3ByaW9dOworfQorCitzdGF0aWMgaW5s aW5lIHZvaWQgdXBkYXRlX2NvbnRleHRfcHJpbyhzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7 CisJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gJmNlLT5lbmdpbmUtPmd0LT51Yy5ndWM7CisJaW50 IGk7CisKKwlCVUlMRF9CVUdfT04oR1VDX0NMSUVOVF9QUklPUklUWV9LTURfSElHSCAhPSAwKTsK KwlCVUlMRF9CVUdfT04oR1VDX0NMSUVOVF9QUklPUklUWV9LTURfSElHSCA+IEdVQ19DTElFTlRf UFJJT1JJVFlfTk9STUFMKTsKKworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmNlLT5ndWNfYWN0aXZl LmxvY2spOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY2UtPmd1Y19wcmlvX2NvdW50 KTsgKytpKSB7CisJCWlmIChjZS0+Z3VjX3ByaW9fY291bnRbaV0pIHsKKwkJCWd1Y19jb250ZXh0 X3NldF9wcmlvKGd1YywgY2UsIGkpOworCQkJYnJlYWs7CisJCX0KKwl9Cit9CisKK3N0YXRpYyBp bmxpbmUgYm9vbCBuZXdfZ3VjX3ByaW9faGlnaGVyKHU4IG9sZF9ndWNfcHJpbywgdTggbmV3X2d1 Y19wcmlvKQoreworCS8qIExvd2VyIHZhbHVlIGlzIGhpZ2hlciBwcmlvcml0eSAqLworCXJldHVy biBuZXdfZ3VjX3ByaW8gPCBvbGRfZ3VjX3ByaW87Cit9CisKK3N0YXRpYyB2b2lkIGFkZF90b19j b250ZXh0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQoreworCXN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjZSA9IHJxLT5jb250ZXh0OworCXU4IG5ld19ndWNfcHJpbyA9IG1hcF9pOTE1X3ByaW9fdG9f Z3VjX3ByaW8ocnFfcHJpbyhycSkpOworCisJR0VNX0JVR19PTihycS0+Z3VjX3ByaW8gPT0gR1VD X1BSSU9fRklOSSk7CisKKwlzcGluX2xvY2soJmNlLT5ndWNfYWN0aXZlLmxvY2spOworCWxpc3Rf bW92ZV90YWlsKCZycS0+c2NoZWQubGluaywgJmNlLT5ndWNfYWN0aXZlLnJlcXVlc3RzKTsKKwor CWlmIChycS0+Z3VjX3ByaW8gPT0gR1VDX1BSSU9fSU5JVCkgeworCQlycS0+Z3VjX3ByaW8gPSBu ZXdfZ3VjX3ByaW87CisJCWFkZF9jb250ZXh0X2luZmxpZ2h0X3ByaW8oY2UsIHJxLT5ndWNfcHJp byk7CisJfSBlbHNlIGlmIChuZXdfZ3VjX3ByaW9faGlnaGVyKHJxLT5ndWNfcHJpbywgbmV3X2d1 Y19wcmlvKSkgeworCQlzdWJfY29udGV4dF9pbmZsaWdodF9wcmlvKGNlLCBycS0+Z3VjX3ByaW8p OworCQlycS0+Z3VjX3ByaW8gPSBuZXdfZ3VjX3ByaW87CisJCWFkZF9jb250ZXh0X2luZmxpZ2h0 X3ByaW8oY2UsIHJxLT5ndWNfcHJpbyk7CisJfQorCXVwZGF0ZV9jb250ZXh0X3ByaW8oY2UpOwor CisJc3Bpbl91bmxvY2soJmNlLT5ndWNfYWN0aXZlLmxvY2spOworfQorCitzdGF0aWMgdm9pZCBn dWNfcHJpb19maW5pKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY2UpCit7CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmY2UtPmd1Y19hY3RpdmUubG9jayk7CisK KwlpZiAocnEtPmd1Y19wcmlvICE9IEdVQ19QUklPX0lOSVQgJiYKKwkgICAgcnEtPmd1Y19wcmlv ICE9IEdVQ19QUklPX0ZJTkkpIHsKKwkJc3ViX2NvbnRleHRfaW5mbGlnaHRfcHJpbyhjZSwgcnEt Pmd1Y19wcmlvKTsKKwkJdXBkYXRlX2NvbnRleHRfcHJpbyhjZSk7CisJfQorCXJxLT5ndWNfcHJp byA9IEdVQ19QUklPX0ZJTkk7Cit9CisKK3N0YXRpYyB2b2lkIHJlbW92ZV9mcm9tX2NvbnRleHQo c3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0g cnEtPmNvbnRleHQ7CisKKwlzcGluX2xvY2tfaXJxKCZjZS0+Z3VjX2FjdGl2ZS5sb2NrKTsKKwor CWxpc3RfZGVsX2luaXQoJnJxLT5zY2hlZC5saW5rKTsKKwljbGVhcl9iaXQoSTkxNV9GRU5DRV9G TEFHX1BRVUVVRSwgJnJxLT5mZW5jZS5mbGFncyk7CisKKwkvKiBQcmV2ZW50IGZ1cnRoZXIgX19h d2FpdF9leGVjdXRpb24oKSByZWdpc3RlcmluZyBhIGNiLCB0aGVuIGZsdXNoICovCisJc2V0X2Jp dChJOTE1X0ZFTkNFX0ZMQUdfQUNUSVZFLCAmcnEtPmZlbmNlLmZsYWdzKTsKKworCWd1Y19wcmlv X2ZpbmkocnEsIGNlKTsKKworCXNwaW5fdW5sb2NrX2lycSgmY2UtPmd1Y19hY3RpdmUubG9jayk7 CisKKwlhdG9taWNfZGVjKCZjZS0+Z3VjX2lkX3JlZik7CisJaTkxNV9yZXF1ZXN0X25vdGlmeV9l eGVjdXRlX2NiX2ltbShycSk7Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4 dF9vcHMgZ3VjX2NvbnRleHRfb3BzID0gewogCS5hbGxvYyA9IGd1Y19jb250ZXh0X2FsbG9jLAog CkBAIC0xMTI1LDYgKzE5NjYsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0 X29wcyBndWNfY29udGV4dF9vcHMgPSB7CiAJLnVucGluID0gZ3VjX2NvbnRleHRfdW5waW4sCiAJ LnBvc3RfdW5waW4gPSBndWNfY29udGV4dF9wb3N0X3VucGluLAogCisJLmJhbiA9IGd1Y19jb250 ZXh0X2JhbiwKKworCS5jYW5jZWxfcmVxdWVzdCA9IGd1Y19jb250ZXh0X2NhbmNlbF9yZXF1ZXN0 LAorCiAJLmVudGVyID0gaW50ZWxfY29udGV4dF9lbnRlcl9lbmdpbmUsCiAJLmV4aXQgPSBpbnRl bF9jb250ZXh0X2V4aXRfZW5naW5lLAogCkBAIC0xMTMyLDYgKzE5NzcsOCBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGludGVsX2NvbnRleHRfb3BzIGd1Y19jb250ZXh0X29wcyA9IHsKIAogCS5yZXNl dCA9IGxyY19yZXNldCwKIAkuZGVzdHJveSA9IGd1Y19jb250ZXh0X2Rlc3Ryb3ksCisKKwkuY3Jl YXRlX3ZpcnR1YWwgPSBndWNfY3JlYXRlX3ZpcnR1YWwsCiB9OwogCiBzdGF0aWMgdm9pZCBfX2d1 Y19zaWduYWxfY29udGV4dF9mZW5jZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCkBAIC0xMTUz LDggKzIwMDAsNiBAQCBzdGF0aWMgdm9pZCBndWNfc2lnbmFsX2NvbnRleHRfZmVuY2Uoc3RydWN0 IGludGVsX2NvbnRleHQgKmNlKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKLQlHRU1fQlVH X09OKCFjb250ZXh0X3dhaXRfZm9yX2RlcmVnaXN0ZXJfdG9fcmVnaXN0ZXIoY2UpKTsKLQogCXNw aW5fbG9ja19pcnFzYXZlKCZjZS0+Z3VjX3N0YXRlLmxvY2ssIGZsYWdzKTsKIAljbHJfY29udGV4 dF93YWl0X2Zvcl9kZXJlZ2lzdGVyX3RvX3JlZ2lzdGVyKGNlKTsKIAlfX2d1Y19zaWduYWxfY29u dGV4dF9mZW5jZShjZSk7CkBAIC0xMTYzLDggKzIwMDgsOSBAQCBzdGF0aWMgdm9pZCBndWNfc2ln bmFsX2NvbnRleHRfZmVuY2Uoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQogCiBzdGF0aWMgYm9v bCBjb250ZXh0X25lZWRzX3JlZ2lzdGVyKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgYm9vbCBu ZXdfZ3VjX2lkKQogewotCXJldHVybiBuZXdfZ3VjX2lkIHx8IHRlc3RfYml0KENPTlRFWFRfTFJD QV9ESVJUWSwgJmNlLT5mbGFncykgfHwKLQkJIWxyY19kZXNjX3JlZ2lzdGVyZWQoY2VfdG9fZ3Vj KGNlKSwgY2UtPmd1Y19pZCk7CisJcmV0dXJuIChuZXdfZ3VjX2lkIHx8IHRlc3RfYml0KENPTlRF WFRfTFJDQV9ESVJUWSwgJmNlLT5mbGFncykgfHwKKwkJIWxyY19kZXNjX3JlZ2lzdGVyZWQoY2Vf dG9fZ3VjKGNlKSwgY2UtPmd1Y19pZCkpICYmCisJCSFzdWJtaXNzaW9uX2Rpc2FibGVkKGNlX3Rv X2d1YyhjZSkpOwogfQogCiBzdGF0aWMgaW50IGd1Y19yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxKQpAQCAtMTIyMiw4ICsyMDY4LDEyIEBAIHN0YXRpYyBpbnQgZ3VjX3JlcXVl c3RfYWxsb2Moc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiAJaWYgKHVubGlrZWx5KHJldCA8IDAp KQogCQlyZXR1cm4gcmV0OwogCWlmIChjb250ZXh0X25lZWRzX3JlZ2lzdGVyKGNlLCAhIXJldCkp IHsKLQkJcmV0ID0gZ3VjX2xyY19kZXNjX3BpbihjZSk7CisJCXJldCA9IGd1Y19scmNfZGVzY19w aW4oY2UsIHRydWUpOwogCQlpZiAodW5saWtlbHkocmV0KSkgewkvKiB1bndpbmQgKi8KKwkJCWlm IChyZXQgPT0gLUVQSVBFKSB7CisJCQkJZGlzYWJsZV9zdWJtaXNzaW9uKGd1Yyk7CisJCQkJZ290 byBvdXQ7CS8qIEdQVSB3aWxsIGJlIHJlc2V0ICovCisJCQl9CiAJCQlhdG9taWNfZGVjKCZjZS0+ Z3VjX2lkX3JlZik7CiAJCQl1bnBpbl9ndWNfaWQoZ3VjLCBjZSk7CiAJCQlyZXR1cm4gcmV0OwpA QCAtMTI2MCw2ICsyMTEwLDE2MiBAQCBzdGF0aWMgaW50IGd1Y19yZXF1ZXN0X2FsbG9jKHN0cnVj dCBpOTE1X3JlcXVlc3QgKnJxKQogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGd1Y192aXJ0 dWFsX2NvbnRleHRfcHJlX3BpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCQkJICAgICAg IHN0cnVjdCBpOTE1X2dlbV93d19jdHggKnd3LAorCQkJCSAgICAgICB2b2lkICoqdmFkZHIpCit7 CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gZ3VjX3ZpcnR1YWxfZ2V0X3NpYmxp bmcoY2UtPmVuZ2luZSwgMCk7CisKKwlyZXR1cm4gX19ndWNfY29udGV4dF9wcmVfcGluKGNlLCBl bmdpbmUsIHd3LCB2YWRkcik7Cit9CisKK3N0YXRpYyBpbnQgZ3VjX3ZpcnR1YWxfY29udGV4dF9w aW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlLCB2b2lkICp2YWRkcikKK3sKKwlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUgPSBndWNfdmlydHVhbF9nZXRfc2libGluZyhjZS0+ZW5naW5l LCAwKTsKKworCXJldHVybiBfX2d1Y19jb250ZXh0X3BpbihjZSwgZW5naW5lLCB2YWRkcik7Cit9 CisKK3N0YXRpYyB2b2lkIGd1Y192aXJ0dWFsX2NvbnRleHRfZW50ZXIoc3RydWN0IGludGVsX2Nv bnRleHQgKmNlKQoreworCWludGVsX2VuZ2luZV9tYXNrX3QgdG1wLCBtYXNrID0gY2UtPmVuZ2lu ZS0+bWFzazsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisKKwlmb3JfZWFjaF9l bmdpbmVfbWFza2VkKGVuZ2luZSwgY2UtPmVuZ2luZS0+Z3QsIG1hc2ssIHRtcCkKKwkJaW50ZWxf ZW5naW5lX3BtX2dldChlbmdpbmUpOworCisJaW50ZWxfdGltZWxpbmVfZW50ZXIoY2UtPnRpbWVs aW5lKTsKK30KKworc3RhdGljIHZvaWQgZ3VjX3ZpcnR1YWxfY29udGV4dF9leGl0KHN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZSkKK3sKKwlpbnRlbF9lbmdpbmVfbWFza190IHRtcCwgbWFzayA9IGNl LT5lbmdpbmUtPm1hc2s7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCisJZm9y X2VhY2hfZW5naW5lX21hc2tlZChlbmdpbmUsIGNlLT5lbmdpbmUtPmd0LCBtYXNrLCB0bXApCisJ CWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKKworCWludGVsX3RpbWVsaW5lX2V4aXQoY2Ut PnRpbWVsaW5lKTsKK30KKworc3RhdGljIGludCBndWNfdmlydHVhbF9jb250ZXh0X2FsbG9jKHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUgPSBndWNfdmlydHVhbF9nZXRfc2libGluZyhjZS0+ZW5naW5lLCAwKTsKKworCXJldHVybiBs cmNfYWxsb2MoY2UsIGVuZ2luZSk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfY29u dGV4dF9vcHMgdmlydHVhbF9ndWNfY29udGV4dF9vcHMgPSB7CisJLmFsbG9jID0gZ3VjX3ZpcnR1 YWxfY29udGV4dF9hbGxvYywKKworCS5wcmVfcGluID0gZ3VjX3ZpcnR1YWxfY29udGV4dF9wcmVf cGluLAorCS5waW4gPSBndWNfdmlydHVhbF9jb250ZXh0X3BpbiwKKwkudW5waW4gPSBndWNfY29u dGV4dF91bnBpbiwKKwkucG9zdF91bnBpbiA9IGd1Y19jb250ZXh0X3Bvc3RfdW5waW4sCisKKwku YmFuID0gZ3VjX2NvbnRleHRfYmFuLAorCisJLmNhbmNlbF9yZXF1ZXN0ID0gZ3VjX2NvbnRleHRf Y2FuY2VsX3JlcXVlc3QsCisKKwkuZW50ZXIgPSBndWNfdmlydHVhbF9jb250ZXh0X2VudGVyLAor CS5leGl0ID0gZ3VjX3ZpcnR1YWxfY29udGV4dF9leGl0LAorCisJLnNjaGVkX2Rpc2FibGUgPSBn dWNfY29udGV4dF9zY2hlZF9kaXNhYmxlLAorCisJLmRlc3Ryb3kgPSBndWNfY29udGV4dF9kZXN0 cm95LAorCisJLmdldF9zaWJsaW5nID0gZ3VjX3ZpcnR1YWxfZ2V0X3NpYmxpbmcsCit9OworCitz dGF0aWMgYm9vbAorZ3VjX2lycV9lbmFibGVfYnJlYWRjcnVtYnMoc3RydWN0IGludGVsX2JyZWFk Y3J1bWJzICpiKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNpYmxpbmc7CisJaW50ZWxf ZW5naW5lX21hc2tfdCB0bXAsIG1hc2sgPSBiLT5lbmdpbmVfbWFzazsKKwlib29sIHJlc3VsdCA9 IGZhbHNlOworCisJZm9yX2VhY2hfZW5naW5lX21hc2tlZChzaWJsaW5nLCBiLT5pcnFfZW5naW5l LT5ndCwgbWFzaywgdG1wKQorCQlyZXN1bHQgfD0gaW50ZWxfZW5naW5lX2lycV9lbmFibGUoc2li bGluZyk7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZAorZ3VjX2lycV9kaXNh YmxlX2JyZWFkY3J1bWJzKHN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAqYikKK3sKKwlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpzaWJsaW5nOworCWludGVsX2VuZ2luZV9tYXNrX3QgdG1wLCBtYXNr ID0gYi0+ZW5naW5lX21hc2s7CisKKwlmb3JfZWFjaF9lbmdpbmVfbWFza2VkKHNpYmxpbmcsIGIt PmlycV9lbmdpbmUtPmd0LCBtYXNrLCB0bXApCisJCWludGVsX2VuZ2luZV9pcnFfZGlzYWJsZShz aWJsaW5nKTsKK30KKworc3RhdGljIHZvaWQgZ3VjX2luaXRfYnJlYWRjcnVtYnMoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCWludCBpOworCisJLyoKKwkgKiBJbiBHdUMgc3Vi bWlzc2lvbiBtb2RlIHdlIGRvIG5vdCBrbm93IHdoaWNoIHBoeXNpY2FsIGVuZ2luZSBhIHJlcXVl c3QKKwkgKiB3aWxsIGJlIHNjaGVkdWxlZCBvbiwgdGhpcyBjcmVhdGVzIGEgcHJvYmxlbSBiZWNh dXNlIHRoZSBicmVhZGNydW1iCisJICogaW50ZXJydXB0IGlzIHBlciBwaHlzaWNhbCBlbmdpbmUu IFRvIHdvcmsgYXJvdW5kIHRoaXMgd2UgYXR0YWNoCisJICogcmVxdWVzdHMgYW5kIGRpcmVjdCBh bGwgYnJlYWRjcnVtYiBpbnRlcnJ1cHRzIHRvIHRoZSBmaXJzdCBpbnN0YW5jZQorCSAqIG9mIGFu IGVuZ2luZSBwZXIgY2xhc3MuIEluIGFkZGl0aW9uIGFsbCBicmVhZGNydW1iIGludGVycnVwdHMg YXJlCisJICogZW5hYmxlZCAvIGRpc2FibGVkIGFjcm9zcyBhbiBlbmdpbmUgY2xhc3MgaW4gdW5p c29uLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBNQVhfRU5HSU5FX0lOU1RBTkNFOyArK2kpIHsK KwkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2libGluZyA9CisJCQllbmdpbmUtPmd0LT5lbmdp bmVfY2xhc3NbZW5naW5lLT5jbGFzc11baV07CisKKwkJaWYgKHNpYmxpbmcpIHsKKwkJCWlmIChl bmdpbmUtPmJyZWFkY3J1bWJzICE9IHNpYmxpbmctPmJyZWFkY3J1bWJzKSB7CisJCQkJaW50ZWxf YnJlYWRjcnVtYnNfcHV0KGVuZ2luZS0+YnJlYWRjcnVtYnMpOworCQkJCWVuZ2luZS0+YnJlYWRj cnVtYnMgPQorCQkJCQlpbnRlbF9icmVhZGNydW1ic19nZXQoc2libGluZy0+YnJlYWRjcnVtYnMp OworCQkJfQorCQkJYnJlYWs7CisJCX0KKwl9CisKKwlpZiAoZW5naW5lLT5icmVhZGNydW1icykg eworCQllbmdpbmUtPmJyZWFkY3J1bWJzLT5lbmdpbmVfbWFzayB8PSBlbmdpbmUtPm1hc2s7CisJ CWVuZ2luZS0+YnJlYWRjcnVtYnMtPmlycV9lbmFibGUgPSBndWNfaXJxX2VuYWJsZV9icmVhZGNy dW1iczsKKwkJZW5naW5lLT5icmVhZGNydW1icy0+aXJxX2Rpc2FibGUgPSBndWNfaXJxX2Rpc2Fi bGVfYnJlYWRjcnVtYnM7CisJfQorfQorCitzdGF0aWMgdm9pZCBndWNfYnVtcF9pbmZsaWdodF9y ZXF1ZXN0X3ByaW8oc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCisJCQkJCSAgIGludCBwcmlvKQor eworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IHJxLT5jb250ZXh0OworCXU4IG5ld19ndWNf cHJpbyA9IG1hcF9pOTE1X3ByaW9fdG9fZ3VjX3ByaW8ocHJpbyk7CisKKwkvKiBTaG9ydCBjaXJj dWl0IGZ1bmN0aW9uICovCisJaWYgKHByaW8gPCBJOTE1X1BSSU9SSVRZX05PUk1BTCB8fAorCSAg ICBycS0+Z3VjX3ByaW8gPT0gR1VDX1BSSU9fRklOSSB8fAorCSAgICAocnEtPmd1Y19wcmlvICE9 IEdVQ19QUklPX0lOSVQgJiYKKwkgICAgICFuZXdfZ3VjX3ByaW9faGlnaGVyKHJxLT5ndWNfcHJp bywgbmV3X2d1Y19wcmlvKSkpCisJCXJldHVybjsKKworCXNwaW5fbG9jaygmY2UtPmd1Y19hY3Rp dmUubG9jayk7CisJaWYgKHJxLT5ndWNfcHJpbyAhPSBHVUNfUFJJT19GSU5JKSB7CisJCWlmIChy cS0+Z3VjX3ByaW8gIT0gR1VDX1BSSU9fSU5JVCkKKwkJCXN1Yl9jb250ZXh0X2luZmxpZ2h0X3By aW8oY2UsIHJxLT5ndWNfcHJpbyk7CisJCXJxLT5ndWNfcHJpbyA9IG5ld19ndWNfcHJpbzsKKwkJ YWRkX2NvbnRleHRfaW5mbGlnaHRfcHJpbyhjZSwgcnEtPmd1Y19wcmlvKTsKKwkJdXBkYXRlX2Nv bnRleHRfcHJpbyhjZSk7CisJfQorCXNwaW5fdW5sb2NrKCZjZS0+Z3VjX2FjdGl2ZS5sb2NrKTsK K30KKworc3RhdGljIHZvaWQgZ3VjX3JldGlyZV9pbmZsaWdodF9yZXF1ZXN0X3ByaW8oc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gcnEtPmNv bnRleHQ7CisKKwlzcGluX2xvY2soJmNlLT5ndWNfYWN0aXZlLmxvY2spOworCWd1Y19wcmlvX2Zp bmkocnEsIGNlKTsKKwlzcGluX3VubG9jaygmY2UtPmd1Y19hY3RpdmUubG9jayk7Cit9CisKIHN0 YXRpYyB2b2lkIHNhbml0aXplX2h3c3Aoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog ewogCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGw7CkBAIC0xMzI2LDYgKzIzMzIsMTEgQEAgc3Rh dGljIGludCBndWNfcmVzdW1lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlyZXR1 cm4gMDsKIH0KIAorc3RhdGljIGJvb2wgZ3VjX3NjaGVkX2VuZ2luZV9kaXNhYmxlZChzdHJ1Y3Qg aTkxNV9zY2hlZF9lbmdpbmUgKnNjaGVkX2VuZ2luZSkKK3sKKwlyZXR1cm4gIXNjaGVkX2VuZ2lu ZS0+dGFza2xldC5jYWxsYmFjazsKK30KKwogc3RhdGljIHZvaWQgZ3VjX3NldF9kZWZhdWx0X3N1 Ym1pc3Npb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCWVuZ2luZS0+c3Vi bWl0X3JlcXVlc3QgPSBndWNfc3VibWl0X3JlcXVlc3Q7CkBAIC0xMzM2LDcgKzIzNDcsNyBAQCBz dGF0aWMgaW5saW5lIHZvaWQgZ3VjX2tlcm5lbF9jb250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMsCiB7CiAJaWYgKGNvbnRleHRfZ3VjX2lkX2ludmFsaWQoY2UpKQogCQlwaW5fZ3VjX2lk KGd1YywgY2UpOwotCWd1Y19scmNfZGVzY19waW4oY2UpOworCWd1Y19scmNfZGVzY19waW4oY2Us IHRydWUpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgZ3VjX2luaXRfbHJjX21hcHBpbmcoc3Ry dWN0IGludGVsX2d1YyAqZ3VjKQpAQCAtMTM3NCw2ICsyMzg1LDE1IEBAIHN0YXRpYyB2b2lkIGd1 Y19yZWxlYXNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlscmNfZmluaV93YV9j dHgoZW5naW5lKTsKIH0KIAorc3RhdGljIHZvaWQgdmlydHVhbF9ndWNfYnVtcF9zZXJpYWwoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmU7CisJaW50ZWxfZW5naW5lX21hc2tfdCB0bXAsIG1hc2sgPSBlbmdpbmUtPm1hc2s7CisKKwlm b3JfZWFjaF9lbmdpbmVfbWFza2VkKGUsIGVuZ2luZS0+Z3QsIG1hc2ssIHRtcCkKKwkJZS0+c2Vy aWFsKys7Cit9CisKIHN0YXRpYyB2b2lkIGd1Y19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiB7CiAJLyogRGVmYXVsdCB2ZnVuY3Mgd2hpY2ggY2FuIGJlIG92 ZXJyaWRkZW4gYnkgZWFjaCBlbmdpbmUuICovCkBAIC0xMzgyLDEzICsyNDAyLDE1IEBAIHN0YXRp YyB2b2lkIGd1Y19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp CiAKIAllbmdpbmUtPmNvcHMgPSAmZ3VjX2NvbnRleHRfb3BzOwogCWVuZ2luZS0+cmVxdWVzdF9h bGxvYyA9IGd1Y19yZXF1ZXN0X2FsbG9jOworCWVuZ2luZS0+YWRkX2FjdGl2ZV9yZXF1ZXN0ID0g YWRkX3RvX2NvbnRleHQ7CisJZW5naW5lLT5yZW1vdmVfYWN0aXZlX3JlcXVlc3QgPSByZW1vdmVf ZnJvbV9jb250ZXh0OwogCiAJZW5naW5lLT5zY2hlZF9lbmdpbmUtPnNjaGVkdWxlID0gaTkxNV9z Y2hlZHVsZTsKIAotCWVuZ2luZS0+cmVzZXQucHJlcGFyZSA9IGd1Y19yZXNldF9wcmVwYXJlOwot CWVuZ2luZS0+cmVzZXQucmV3aW5kID0gZ3VjX3Jlc2V0X3Jld2luZDsKLQllbmdpbmUtPnJlc2V0 LmNhbmNlbCA9IGd1Y19yZXNldF9jYW5jZWw7Ci0JZW5naW5lLT5yZXNldC5maW5pc2ggPSBndWNf cmVzZXRfZmluaXNoOworCWVuZ2luZS0+cmVzZXQucHJlcGFyZSA9IGd1Y19yZXNldF9ub3A7CisJ ZW5naW5lLT5yZXNldC5yZXdpbmQgPSBndWNfcmV3aW5kX25vcDsKKwllbmdpbmUtPnJlc2V0LmNh bmNlbCA9IGd1Y19yZXNldF9ub3A7CisJZW5naW5lLT5yZXNldC5maW5pc2ggPSBndWNfcmVzZXRf bm9wOwogCiAJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuOF9lbWl0X2ZsdXNoX3hjczsKIAllbmdp bmUtPmVtaXRfaW5pdF9icmVhZGNydW1iID0gZ2VuOF9lbWl0X2luaXRfYnJlYWRjcnVtYjsKQEAg LTE0MDAsMTMgKzI0MjIsMTMgQEAgc3RhdGljIHZvaWQgZ3VjX2RlZmF1bHRfdmZ1bmNzKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAllbmdpbmUtPnNldF9kZWZhdWx0X3N1Ym1pc3Np b24gPSBndWNfc2V0X2RlZmF1bHRfc3VibWlzc2lvbjsKIAogCWVuZ2luZS0+ZmxhZ3MgfD0gSTkx NV9FTkdJTkVfSEFTX1BSRUVNUFRJT047CisJZW5naW5lLT5mbGFncyB8PSBJOTE1X0VOR0lORV9I QVNfVElNRVNMSUNFUzsKIAogCS8qCiAJICogVE9ETzogR3VDIHN1cHBvcnRzIHRpbWVzbGljaW5n IGFuZCBzZW1hcGhvcmVzIGFzIHdlbGwsIGJ1dCB0aGV5J3JlCiAJICogaGFuZGxlZCBieSB0aGUg ZmlybXdhcmUgc28gc29tZSBtaW5vciB0d2Vha3MgYXJlIHJlcXVpcmVkIGJlZm9yZQogCSAqIGVu YWJsaW5nLgogCSAqCi0JICogZW5naW5lLT5mbGFncyB8PSBJOTE1X0VOR0lORV9IQVNfVElNRVNM SUNFUzsKIAkgKiBlbmdpbmUtPmZsYWdzIHw9IEk5MTVfRU5HSU5FX0hBU19TRU1BUEhPUkVTOwog CSAqLwogCkBAIC0xNDM3LDYgKzI0NTksMTcgQEAgc3RhdGljIGlubGluZSB2b2lkIGd1Y19kZWZh dWx0X2lycXMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCWludGVsX2VuZ2luZV9z ZXRfaXJxX2hhbmRsZXIoZW5naW5lLCBjc19pcnFfaGFuZGxlcik7CiB9CiAKK3N0YXRpYyB2b2lk IGd1Y19zY2hlZF9lbmdpbmVfZGVzdHJveShzdHJ1Y3Qga3JlZiAqa3JlZikKK3sKKwlzdHJ1Y3Qg aTkxNV9zY2hlZF9lbmdpbmUgKnNjaGVkX2VuZ2luZSA9CisJCWNvbnRhaW5lcl9vZihrcmVmLCB0 eXBlb2YoKnNjaGVkX2VuZ2luZSksIHJlZik7CisJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gc2No ZWRfZW5naW5lLT5wcml2YXRlX2RhdGE7CisKKwlndWMtPnNjaGVkX2VuZ2luZSA9IE5VTEw7CisJ dGFza2xldF9raWxsKCZzY2hlZF9lbmdpbmUtPnRhc2tsZXQpOyAvKiBmbHVzaCB0aGUgY2FsbGJh Y2sgKi8KKwlrZnJlZShzY2hlZF9lbmdpbmUpOworfQorCiBpbnQgaW50ZWxfZ3VjX3N1Ym1pc3Np b25fc2V0dXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1OwpAQCAtMTQ1NCw3ICsyNDg3LDEzIEBA IGludCBpbnRlbF9ndWNfc3VibWlzc2lvbl9zZXR1cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCiAJCQlyZXR1cm4gLUVOT01FTTsKIAogCQlndWMtPnNjaGVkX2VuZ2luZS0+c2NoZWR1 bGUgPSBpOTE1X3NjaGVkdWxlOworCQlndWMtPnNjaGVkX2VuZ2luZS0+ZGlzYWJsZWQgPSBndWNf c2NoZWRfZW5naW5lX2Rpc2FibGVkOwogCQlndWMtPnNjaGVkX2VuZ2luZS0+cHJpdmF0ZV9kYXRh ID0gZ3VjOworCQlndWMtPnNjaGVkX2VuZ2luZS0+ZGVzdHJveSA9IGd1Y19zY2hlZF9lbmdpbmVf ZGVzdHJveTsKKwkJZ3VjLT5zY2hlZF9lbmdpbmUtPmJ1bXBfaW5mbGlnaHRfcmVxdWVzdF9wcmlv ID0KKwkJCWd1Y19idW1wX2luZmxpZ2h0X3JlcXVlc3RfcHJpbzsKKwkJZ3VjLT5zY2hlZF9lbmdp bmUtPnJldGlyZV9pbmZsaWdodF9yZXF1ZXN0X3ByaW8gPQorCQkJZ3VjX3JldGlyZV9pbmZsaWdo dF9yZXF1ZXN0X3ByaW87CiAJCXRhc2tsZXRfc2V0dXAoJmd1Yy0+c2NoZWRfZW5naW5lLT50YXNr bGV0LAogCQkJICAgICAgZ3VjX3N1Ym1pc3Npb25fdGFza2xldCk7CiAJfQpAQCAtMTQ2Myw2ICsy NTAyLDcgQEAgaW50IGludGVsX2d1Y19zdWJtaXNzaW9uX3NldHVwKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKIAogCWd1Y19kZWZhdWx0X3ZmdW5jcyhlbmdpbmUpOwogCWd1Y19kZWZh dWx0X2lycXMoZW5naW5lKTsKKwlndWNfaW5pdF9icmVhZGNydW1icyhlbmdpbmUpOwogCiAJaWYg KGVuZ2luZS0+Y2xhc3MgPT0gUkVOREVSX0NMQVNTKQogCQlyY3Nfc3VibWlzc2lvbl9vdmVycmlk ZShlbmdpbmUpOwpAQCAtMTQ5MCw2ICsyNTMwLDEzIEBAIHZvaWQgaW50ZWxfZ3VjX3N1Ym1pc3Np b25fZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAJLyogTm90ZTogQnkgdGhlIHRpbWUg d2UncmUgaGVyZSwgR3VDIG1heSBoYXZlIGFscmVhZHkgYmVlbiByZXNldCAqLwogfQogCitzdGF0 aWMgYm9vbCBfX2d1Y19zdWJtaXNzaW9uX3N1cHBvcnRlZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMp Cit7CisJLyogR3VDIHN1Ym1pc3Npb24gaXMgdW5hdmFpbGFibGUgZm9yIHByZS1HZW4xMSAqLwor CXJldHVybiBpbnRlbF9ndWNfaXNfc3VwcG9ydGVkKGd1YykgJiYKKwkgICAgICAgR1JBUEhJQ1Nf VkVSKGd1Y190b19ndChndWMpLT5pOTE1KSA+PSAxMTsKK30KKwogc3RhdGljIGJvb2wgX19ndWNf c3VibWlzc2lvbl9zZWxlY3RlZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiB7CiAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBndWNfdG9fZ3QoZ3VjKS0+aTkxNTsKQEAgLTE1MDIsNiAr MjU0OSw3IEBAIHN0YXRpYyBib29sIF9fZ3VjX3N1Ym1pc3Npb25fc2VsZWN0ZWQoc3RydWN0IGlu dGVsX2d1YyAqZ3VjKQogCiB2b2lkIGludGVsX2d1Y19zdWJtaXNzaW9uX2luaXRfZWFybHkoc3Ry dWN0IGludGVsX2d1YyAqZ3VjKQogeworCWd1Yy0+c3VibWlzc2lvbl9zdXBwb3J0ZWQgPSBfX2d1 Y19zdWJtaXNzaW9uX3N1cHBvcnRlZChndWMpOwogCWd1Yy0+c3VibWlzc2lvbl9zZWxlY3RlZCA9 IF9fZ3VjX3N1Ym1pc3Npb25fc2VsZWN0ZWQoZ3VjKTsKIH0KIApAQCAtMTU2MCwxMyArMjYwOCwx MyBAQCBpbnQgaW50ZWxfZ3VjX2RlcmVnaXN0ZXJfZG9uZV9wcm9jZXNzX21zZyhzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMsCiAJCSAqIHJlZ2lzdGVyIHRoaXMgY29udGV4dC4KIAkJICovCiAJCXdpdGhf aW50ZWxfcnVudGltZV9wbShydW50aW1lX3BtLCB3YWtlcmVmKQotCQkJcmVnaXN0ZXJfY29udGV4 dChjZSk7CisJCQlyZWdpc3Rlcl9jb250ZXh0KGNlLCB0cnVlKTsKIAkJZ3VjX3NpZ25hbF9jb250 ZXh0X2ZlbmNlKGNlKTsKIAkJaW50ZWxfY29udGV4dF9wdXQoY2UpOwogCX0gZWxzZSBpZiAoY29u dGV4dF9kZXN0cm95ZWQoY2UpKSB7CiAJCS8qIENvbnRleHQgaGFzIGJlZW4gZGVzdHJveWVkICov CiAJCXJlbGVhc2VfZ3VjX2lkKGd1YywgY2UpOwotCQlscmNfZGVzdHJveSgmY2UtPnJlZik7CisJ CV9fZ3VjX2NvbnRleHRfZGVzdHJveShjZSk7CiAJfQogCiAJZGVjcl9vdXRzdGFuZGluZ19zdWJt aXNzaW9uX2cyaChndWMpOwpAQCAtMTYwNiw2ICsyNjU0LDggQEAgaW50IGludGVsX2d1Y19zY2hl ZF9kb25lX3Byb2Nlc3NfbXNnKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKIAlpZiAoY29udGV4dF9w ZW5kaW5nX2VuYWJsZShjZSkpIHsKIAkJY2xyX2NvbnRleHRfcGVuZGluZ19lbmFibGUoY2UpOwog CX0gZWxzZSBpZiAoY29udGV4dF9wZW5kaW5nX2Rpc2FibGUoY2UpKSB7CisJCWJvb2wgYmFubmVk OworCiAJCS8qCiAJCSAqIFVucGluIG11c3QgYmUgZG9uZSBiZWZvcmUgX19ndWNfc2lnbmFsX2Nv bnRleHRfZmVuY2UsCiAJCSAqIG90aGVyd2lzZSBhIHJhY2UgZXhpc3RzIGJldHdlZW4gdGhlIHJl cXVlc3RzIGdldHRpbmcKQEAgLTE2MTYsOSArMjY2NiwxNyBAQCBpbnQgaW50ZWxfZ3VjX3NjaGVk X2RvbmVfcHJvY2Vzc19tc2coc3RydWN0IGludGVsX2d1YyAqZ3VjLAogCQlpbnRlbF9jb250ZXh0 X3NjaGVkX2Rpc2FibGVfdW5waW4oY2UpOwogCiAJCXNwaW5fbG9ja19pcnFzYXZlKCZjZS0+Z3Vj X3N0YXRlLmxvY2ssIGZsYWdzKTsKKwkJYmFubmVkID0gY29udGV4dF9iYW5uZWQoY2UpOworCQlj bHJfY29udGV4dF9iYW5uZWQoY2UpOwogCQljbHJfY29udGV4dF9wZW5kaW5nX2Rpc2FibGUoY2Up OwogCQlfX2d1Y19zaWduYWxfY29udGV4dF9mZW5jZShjZSk7CisJCWd1Y19ibG9ja2VkX2ZlbmNl X2NvbXBsZXRlKGNlKTsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2UtPmd1Y19zdGF0ZS5s b2NrLCBmbGFncyk7CisKKwkJaWYgKGJhbm5lZCkgeworCQkJZ3VjX2NhbmNlbF9jb250ZXh0X3Jl cXVlc3RzKGNlKTsKKwkJCWludGVsX2VuZ2luZV9zaWduYWxfYnJlYWRjcnVtYnMoY2UtPmVuZ2lu ZSk7CisJCX0KIAl9CiAKIAlkZWNyX291dHN0YW5kaW5nX3N1Ym1pc3Npb25fZzJoKGd1Yyk7CkBA IC0xNjI3LDYgKzI2ODUsMTcwIEBAIGludCBpbnRlbF9ndWNfc2NoZWRfZG9uZV9wcm9jZXNzX21z ZyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkIGNh cHR1cmVfZXJyb3Jfc3RhdGUoc3RydWN0IGludGVsX2d1YyAqZ3VjLAorCQkJCXN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gZ3VjX3RvX2d0KGd1Yyk7 CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBndC0+aTkxNTsKKwlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUgPSBfX2NvbnRleHRfdG9fcGh5c2ljYWxfZW5naW5lKGNlKTsK KwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKworCWludGVsX2VuZ2luZV9zZXRfaHVuZ19jb250 ZXh0KGVuZ2luZSwgY2UpOworCXdpdGhfaW50ZWxfcnVudGltZV9wbSgmaTkxNS0+cnVudGltZV9w bSwgd2FrZXJlZikKKwkJaTkxNV9jYXB0dXJlX2Vycm9yX3N0YXRlKGd0LCBlbmdpbmUtPm1hc2sp OworCWF0b21pY19pbmMoJmk5MTUtPmdwdV9lcnJvci5yZXNldF9lbmdpbmVfY291bnRbZW5naW5l LT51YWJpX2NsYXNzXSk7Cit9CisKK3N0YXRpYyB2b2lkIGd1Y19jb250ZXh0X3JlcGxheShzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJc3RydWN0IGk5MTVfc2NoZWRfZW5naW5lICpzY2hl ZF9lbmdpbmUgPSBjZS0+ZW5naW5lLT5zY2hlZF9lbmdpbmU7CisKKwlfX2d1Y19yZXNldF9jb250 ZXh0KGNlLCB0cnVlKTsKKwl0YXNrbGV0X2hpX3NjaGVkdWxlKCZzY2hlZF9lbmdpbmUtPnRhc2ts ZXQpOworfQorCitzdGF0aWMgdm9pZCBndWNfaGFuZGxlX2NvbnRleHRfcmVzZXQoc3RydWN0IGlu dGVsX2d1YyAqZ3VjLAorCQkJCSAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworCXRy YWNlX2ludGVsX2NvbnRleHRfcmVzZXQoY2UpOworCisJaWYgKGxpa2VseSghaW50ZWxfY29udGV4 dF9pc19iYW5uZWQoY2UpKSkgeworCQljYXB0dXJlX2Vycm9yX3N0YXRlKGd1YywgY2UpOworCQln dWNfY29udGV4dF9yZXBsYXkoY2UpOworCX0KK30KKworaW50IGludGVsX2d1Y19jb250ZXh0X3Jl c2V0X3Byb2Nlc3NfbXNnKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKKwkJCQkJY29uc3QgdTMyICpt c2csIHUzMiBsZW4pCit7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOworCWludCBkZXNjX2lk eDsKKworCWlmICh1bmxpa2VseShsZW4gIT0gMSkpIHsKKwkJZHJtX2VycigmZ3VjX3RvX2d0KGd1 YyktPmk5MTUtPmRybSwgIkludmFsaWQgbGVuZ3RoICV1IiwgbGVuKTsKKwkJcmV0dXJuIC1FUFJP VE87CisJfQorCisJZGVzY19pZHggPSBtc2dbMF07CisJY2UgPSBnMmhfY29udGV4dF9sb29rdXAo Z3VjLCBkZXNjX2lkeCk7CisJaWYgKHVubGlrZWx5KCFjZSkpCisJCXJldHVybiAtRVBST1RPOwor CisJZ3VjX2hhbmRsZV9jb250ZXh0X3Jlc2V0KGd1YywgY2UpOworCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoKK2d1Y19sb29rdXBfZW5naW5lKHN0cnVj dCBpbnRlbF9ndWMgKmd1YywgdTggZ3VjX2NsYXNzLCB1OCBpbnN0YW5jZSkKK3sKKwlzdHJ1Y3Qg aW50ZWxfZ3QgKmd0ID0gZ3VjX3RvX2d0KGd1Yyk7CisJdTggZW5naW5lX2NsYXNzID0gZ3VjX2Ns YXNzX3RvX2VuZ2luZV9jbGFzcyhndWNfY2xhc3MpOworCisJLyogQ2xhc3MgaW5kZXggaXMgY2hl Y2tlZCBpbiBjbGFzcyBjb252ZXJ0ZXIgKi8KKwlHRU1fQlVHX09OKGluc3RhbmNlID4gTUFYX0VO R0lORV9JTlNUQU5DRSk7CisKKwlyZXR1cm4gZ3QtPmVuZ2luZV9jbGFzc1tlbmdpbmVfY2xhc3Nd W2luc3RhbmNlXTsKK30KKworaW50IGludGVsX2d1Y19lbmdpbmVfZmFpbHVyZV9wcm9jZXNzX21z ZyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCisJCQkJCSBjb25zdCB1MzIgKm1zZywgdTMyIGxlbikK K3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJdTggZ3VjX2NsYXNzLCBpbnN0 YW5jZTsKKwl1MzIgcmVhc29uOworCisJaWYgKHVubGlrZWx5KGxlbiAhPSAzKSkgeworCQlkcm1f ZXJyKCZndWNfdG9fZ3QoZ3VjKS0+aTkxNS0+ZHJtLCAiSW52YWxpZCBsZW5ndGggJXUiLCBsZW4p OworCQlyZXR1cm4gLUVQUk9UTzsKKwl9CisKKwlndWNfY2xhc3MgPSBtc2dbMF07CisJaW5zdGFu Y2UgPSBtc2dbMV07CisJcmVhc29uID0gbXNnWzJdOworCisJZW5naW5lID0gZ3VjX2xvb2t1cF9l bmdpbmUoZ3VjLCBndWNfY2xhc3MsIGluc3RhbmNlKTsKKwlpZiAodW5saWtlbHkoIWVuZ2luZSkp IHsKKwkJZHJtX2VycigmZ3VjX3RvX2d0KGd1YyktPmk5MTUtPmRybSwKKwkJCSJJbnZhbGlkIGVu Z2luZSAlZDolZCIsIGd1Y19jbGFzcywgaW5zdGFuY2UpOworCQlyZXR1cm4gLUVQUk9UTzsKKwl9 CisKKwlpbnRlbF9ndF9oYW5kbGVfZXJyb3IoZ3VjX3RvX2d0KGd1YyksIGVuZ2luZS0+bWFzaywK KwkJCSAgICAgIEk5MTVfRVJST1JfQ0FQVFVSRSwKKwkJCSAgICAgICJHdUMgZmFpbGVkIHRvIHJl c2V0ICVzIChyZWFzb249MHglMDh4KVxuIiwKKwkJCSAgICAgIGVuZ2luZS0+bmFtZSwgcmVhc29u KTsKKworCXJldHVybiAwOworfQorCit2b2lkIGludGVsX2d1Y19maW5kX2h1bmdfY29udGV4dChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJc3RydWN0IGludGVsX2d1YyAqZ3Vj ID0gJmVuZ2luZS0+Z3QtPnVjLmd1YzsKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7CisJc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnE7CisJdW5zaWduZWQgbG9uZyBpbmRleDsKKworCS8qIFJlc2V0 IGNhbGxlZCBkdXJpbmcgZHJpdmVyIGxvYWQ/IEd1QyBub3QgeWV0IGluaXRpYWxpc2VkISAqLwor CWlmICh1bmxpa2VseSghZ3VjX3N1Ym1pc3Npb25faW5pdGlhbGl6ZWQoZ3VjKSkpCisJCXJldHVy bjsKKworCXhhX2Zvcl9lYWNoKCZndWMtPmNvbnRleHRfbG9va3VwLCBpbmRleCwgY2UpIHsKKwkJ aWYgKCFpbnRlbF9jb250ZXh0X2lzX3Bpbm5lZChjZSkpCisJCQljb250aW51ZTsKKworCQlpZiAo aW50ZWxfZW5naW5lX2lzX3ZpcnR1YWwoY2UtPmVuZ2luZSkpIHsKKwkJCWlmICghKGNlLT5lbmdp bmUtPm1hc2sgJiBlbmdpbmUtPm1hc2spKQorCQkJCWNvbnRpbnVlOworCQl9IGVsc2UgeworCQkJ aWYgKGNlLT5lbmdpbmUgIT0gZW5naW5lKQorCQkJCWNvbnRpbnVlOworCQl9CisKKwkJbGlzdF9m b3JfZWFjaF9lbnRyeShycSwgJmNlLT5ndWNfYWN0aXZlLnJlcXVlc3RzLCBzY2hlZC5saW5rKSB7 CisJCQlpZiAoaTkxNV90ZXN0X3JlcXVlc3Rfc3RhdGUocnEpICE9IEk5MTVfUkVRVUVTVF9BQ1RJ VkUpCisJCQkJY29udGludWU7CisKKwkJCWludGVsX2VuZ2luZV9zZXRfaHVuZ19jb250ZXh0KGVu Z2luZSwgY2UpOworCisJCQkvKiBDYW4gb25seSBjb3BlIHdpdGggb25lIGhhbmcgYXQgYSB0aW1l Li4uICovCisJCQlyZXR1cm47CisJCX0KKwl9Cit9CisKK3ZvaWQgaW50ZWxfZ3VjX2R1bXBfYWN0 aXZlX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCQkgICAgc3Ry dWN0IGk5MTVfcmVxdWVzdCAqaHVuZ19ycSwKKwkJCQkgICAgc3RydWN0IGRybV9wcmludGVyICpt KQoreworCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZlbmdpbmUtPmd0LT51Yy5ndWM7CisJc3Ry dWN0IGludGVsX2NvbnRleHQgKmNlOworCXVuc2lnbmVkIGxvbmcgaW5kZXg7CisJdW5zaWduZWQg bG9uZyBmbGFnczsKKworCS8qIFJlc2V0IGNhbGxlZCBkdXJpbmcgZHJpdmVyIGxvYWQ/IEd1QyBu b3QgeWV0IGluaXRpYWxpc2VkISAqLworCWlmICh1bmxpa2VseSghZ3VjX3N1Ym1pc3Npb25faW5p dGlhbGl6ZWQoZ3VjKSkpCisJCXJldHVybjsKKworCXhhX2Zvcl9lYWNoKCZndWMtPmNvbnRleHRf bG9va3VwLCBpbmRleCwgY2UpIHsKKwkJaWYgKCFpbnRlbF9jb250ZXh0X2lzX3Bpbm5lZChjZSkp CisJCQljb250aW51ZTsKKworCQlpZiAoaW50ZWxfZW5naW5lX2lzX3ZpcnR1YWwoY2UtPmVuZ2lu ZSkpIHsKKwkJCWlmICghKGNlLT5lbmdpbmUtPm1hc2sgJiBlbmdpbmUtPm1hc2spKQorCQkJCWNv bnRpbnVlOworCQl9IGVsc2UgeworCQkJaWYgKGNlLT5lbmdpbmUgIT0gZW5naW5lKQorCQkJCWNv bnRpbnVlOworCQl9CisKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmNlLT5ndWNfYWN0aXZlLmxvY2ss IGZsYWdzKTsKKwkJaW50ZWxfZW5naW5lX2R1bXBfYWN0aXZlX3JlcXVlc3RzKCZjZS0+Z3VjX2Fj dGl2ZS5yZXF1ZXN0cywKKwkJCQkJCSAgaHVuZ19ycSwgbSk7CisJCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmNlLT5ndWNfYWN0aXZlLmxvY2ssIGZsYWdzKTsKKwl9Cit9CisKIHZvaWQgaW50ZWxf Z3VjX3N1Ym1pc3Npb25fcHJpbnRfaW5mbyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCiAJCQkJICAg ICBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApCiB7CkBAIC0xNjU3LDYgKzI4NzksMjIgQEAgdm9pZCBp bnRlbF9ndWNfc3VibWlzc2lvbl9wcmludF9pbmZvKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKIAlk cm1fcHJpbnRmKHAsICJcbiIpOwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQgZ3VjX2xvZ19jb250 ZXh0X3ByaW9yaXR5KHN0cnVjdCBkcm1fcHJpbnRlciAqcCwKKwkJCQkJICAgIHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSkKK3sKKwlpbnQgaTsKKworCWRybV9wcmludGYocCwgIlx0XHRQcmlvcml0 eTogJWRcbiIsCisJCSAgIGNlLT5ndWNfcHJpbyk7CisJZHJtX3ByaW50ZihwLCAiXHRcdE51bWJl ciBSZXF1ZXN0cyAobG93ZXIgaW5kZXggPT0gaGlnaGVyIHByaW9yaXR5KVxuIik7CisJZm9yIChp ID0gR1VDX0NMSUVOVF9QUklPUklUWV9LTURfSElHSDsKKwkgICAgIGkgPCBHVUNfQ0xJRU5UX1BS SU9SSVRZX05VTTsgKytpKSB7CisJCWRybV9wcmludGYocCwgIlx0XHROdW1iZXIgcmVxdWVzdHMg aW4gcHJpb3JpdHkgYmFuZFslZF06ICVkXG4iLAorCQkJICAgaSwgY2UtPmd1Y19wcmlvX2NvdW50 W2ldKTsKKwl9CisJZHJtX3ByaW50ZihwLCAiXG4iKTsKK30KKwogdm9pZCBpbnRlbF9ndWNfc3Vi bWlzc2lvbl9wcmludF9jb250ZXh0X2luZm8oc3RydWN0IGludGVsX2d1YyAqZ3VjLAogCQkJCQkg ICAgIHN0cnVjdCBkcm1fcHJpbnRlciAqcCkKIHsKQEAgLTE2NzksNSArMjkxNywxMTMgQEAgdm9p ZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9wcmludF9jb250ZXh0X2luZm8oc3RydWN0IGludGVsX2d1 YyAqZ3VjLAogCQlkcm1fcHJpbnRmKHAsICJcdFx0U2NoZWR1bGUgU3RhdGU6IDB4JXgsIDB4JXhc blxuIiwKIAkJCSAgIGNlLT5ndWNfc3RhdGUuc2NoZWRfc3RhdGUsCiAJCQkgICBhdG9taWNfcmVh ZCgmY2UtPmd1Y19zY2hlZF9zdGF0ZV9ub19sb2NrKSk7CisKKwkJZ3VjX2xvZ19jb250ZXh0X3By aW9yaXR5KHAsIGNlKTsKIAl9CiB9CisKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqCitn dWNfY3JlYXRlX3ZpcnR1YWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqKnNpYmxpbmdzLCB1bnNp Z25lZCBpbnQgY291bnQpCit7CisJc3RydWN0IGd1Y192aXJ0dWFsX2VuZ2luZSAqdmU7CisJc3Ry dWN0IGludGVsX2d1YyAqZ3VjOworCXVuc2lnbmVkIGludCBuOworCWludCBlcnI7CisKKwl2ZSA9 IGt6YWxsb2Moc2l6ZW9mKCp2ZSksIEdGUF9LRVJORUwpOworCWlmICghdmUpCisJCXJldHVybiBF UlJfUFRSKC1FTk9NRU0pOworCisJZ3VjID0gJnNpYmxpbmdzWzBdLT5ndC0+dWMuZ3VjOworCisJ dmUtPmJhc2UuaTkxNSA9IHNpYmxpbmdzWzBdLT5pOTE1OworCXZlLT5iYXNlLmd0ID0gc2libGlu Z3NbMF0tPmd0OworCXZlLT5iYXNlLnVuY29yZSA9IHNpYmxpbmdzWzBdLT51bmNvcmU7CisJdmUt PmJhc2UuaWQgPSAtMTsKKworCXZlLT5iYXNlLnVhYmlfY2xhc3MgPSBJOTE1X0VOR0lORV9DTEFT U19JTlZBTElEOworCXZlLT5iYXNlLmluc3RhbmNlID0gSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJ RF9WSVJUVUFMOworCXZlLT5iYXNlLnVhYmlfaW5zdGFuY2UgPSBJOTE1X0VOR0lORV9DTEFTU19J TlZBTElEX1ZJUlRVQUw7CisJdmUtPmJhc2Uuc2F0dXJhdGVkID0gQUxMX0VOR0lORVM7CisKKwlz bnByaW50Zih2ZS0+YmFzZS5uYW1lLCBzaXplb2YodmUtPmJhc2UubmFtZSksICJ2aXJ0dWFsIik7 CisKKwl2ZS0+YmFzZS5zY2hlZF9lbmdpbmUgPSBpOTE1X3NjaGVkX2VuZ2luZV9nZXQoZ3VjLT5z Y2hlZF9lbmdpbmUpOworCisJdmUtPmJhc2UuY29wcyA9ICZ2aXJ0dWFsX2d1Y19jb250ZXh0X29w czsKKwl2ZS0+YmFzZS5yZXF1ZXN0X2FsbG9jID0gZ3VjX3JlcXVlc3RfYWxsb2M7CisJdmUtPmJh c2UuYnVtcF9zZXJpYWwgPSB2aXJ0dWFsX2d1Y19idW1wX3NlcmlhbDsKKworCXZlLT5iYXNlLnN1 Ym1pdF9yZXF1ZXN0ID0gZ3VjX3N1Ym1pdF9yZXF1ZXN0OworCisJdmUtPmJhc2UuZmxhZ3MgPSBJ OTE1X0VOR0lORV9JU19WSVJUVUFMOworCisJaW50ZWxfY29udGV4dF9pbml0KCZ2ZS0+Y29udGV4 dCwgJnZlLT5iYXNlKTsKKworCWZvciAobiA9IDA7IG4gPCBjb3VudDsgbisrKSB7CisJCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKnNpYmxpbmcgPSBzaWJsaW5nc1tuXTsKKworCQlHRU1fQlVHX09O KCFpc19wb3dlcl9vZl8yKHNpYmxpbmctPm1hc2spKTsKKwkJaWYgKHNpYmxpbmctPm1hc2sgJiB2 ZS0+YmFzZS5tYXNrKSB7CisJCQlEUk1fREVCVUcoImR1cGxpY2F0ZSAlcyBlbnRyeSBpbiBsb2Fk IGJhbGFuY2VyXG4iLAorCQkJCSAgc2libGluZy0+bmFtZSk7CisJCQllcnIgPSAtRUlOVkFMOwor CQkJZ290byBlcnJfcHV0OworCQl9CisKKwkJdmUtPmJhc2UubWFzayB8PSBzaWJsaW5nLT5tYXNr OworCisJCWlmIChuICE9IDAgJiYgdmUtPmJhc2UuY2xhc3MgIT0gc2libGluZy0+Y2xhc3MpIHsK KwkJCURSTV9ERUJVRygiaW52YWxpZCBtaXhpbmcgb2YgZW5naW5lIGNsYXNzLCBzaWJsaW5nICVk LCBhbHJlYWR5ICVkXG4iLAorCQkJCSAgc2libGluZy0+Y2xhc3MsIHZlLT5iYXNlLmNsYXNzKTsK KwkJCWVyciA9IC1FSU5WQUw7CisJCQlnb3RvIGVycl9wdXQ7CisJCX0gZWxzZSBpZiAobiA9PSAw KSB7CisJCQl2ZS0+YmFzZS5jbGFzcyA9IHNpYmxpbmctPmNsYXNzOworCQkJdmUtPmJhc2UudWFi aV9jbGFzcyA9IHNpYmxpbmctPnVhYmlfY2xhc3M7CisJCQlzbnByaW50Zih2ZS0+YmFzZS5uYW1l LCBzaXplb2YodmUtPmJhc2UubmFtZSksCisJCQkJICJ2JWR4JWQiLCB2ZS0+YmFzZS5jbGFzcywg Y291bnQpOworCQkJdmUtPmJhc2UuY29udGV4dF9zaXplID0gc2libGluZy0+Y29udGV4dF9zaXpl OworCisJCQl2ZS0+YmFzZS5hZGRfYWN0aXZlX3JlcXVlc3QgPQorCQkJCXNpYmxpbmctPmFkZF9h Y3RpdmVfcmVxdWVzdDsKKwkJCXZlLT5iYXNlLnJlbW92ZV9hY3RpdmVfcmVxdWVzdCA9CisJCQkJ c2libGluZy0+cmVtb3ZlX2FjdGl2ZV9yZXF1ZXN0OworCQkJdmUtPmJhc2UuZW1pdF9iYl9zdGFy dCA9IHNpYmxpbmctPmVtaXRfYmJfc3RhcnQ7CisJCQl2ZS0+YmFzZS5lbWl0X2ZsdXNoID0gc2li bGluZy0+ZW1pdF9mbHVzaDsKKwkJCXZlLT5iYXNlLmVtaXRfaW5pdF9icmVhZGNydW1iID0KKwkJ CQlzaWJsaW5nLT5lbWl0X2luaXRfYnJlYWRjcnVtYjsKKwkJCXZlLT5iYXNlLmVtaXRfZmluaV9i cmVhZGNydW1iID0KKwkJCQlzaWJsaW5nLT5lbWl0X2ZpbmlfYnJlYWRjcnVtYjsKKwkJCXZlLT5i YXNlLmVtaXRfZmluaV9icmVhZGNydW1iX2R3ID0KKwkJCQlzaWJsaW5nLT5lbWl0X2ZpbmlfYnJl YWRjcnVtYl9kdzsKKwkJCXZlLT5iYXNlLmJyZWFkY3J1bWJzID0KKwkJCQlpbnRlbF9icmVhZGNy dW1ic19nZXQoc2libGluZy0+YnJlYWRjcnVtYnMpOworCisJCQl2ZS0+YmFzZS5mbGFncyB8PSBz aWJsaW5nLT5mbGFnczsKKworCQkJdmUtPmJhc2UucHJvcHMudGltZXNsaWNlX2R1cmF0aW9uX21z ID0KKwkJCQlzaWJsaW5nLT5wcm9wcy50aW1lc2xpY2VfZHVyYXRpb25fbXM7CisJCQl2ZS0+YmFz ZS5wcm9wcy5wcmVlbXB0X3RpbWVvdXRfbXMgPQorCQkJCXNpYmxpbmctPnByb3BzLnByZWVtcHRf dGltZW91dF9tczsKKwkJfQorCX0KKworCXJldHVybiAmdmUtPmNvbnRleHQ7CisKK2Vycl9wdXQ6 CisJaW50ZWxfY29udGV4dF9wdXQoJnZlLT5jb250ZXh0KTsKKwlyZXR1cm4gRVJSX1BUUihlcnIp OworfQorCitib29sIGludGVsX2d1Y192aXJ0dWFsX2VuZ2luZV9oYXNfaGVhcnRiZWF0KGNvbnN0 IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnZlKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZTsKKwlpbnRlbF9lbmdpbmVfbWFza190IHRtcCwgbWFzayA9IHZlLT5tYXNrOworCisJ Zm9yX2VhY2hfZW5naW5lX21hc2tlZChlbmdpbmUsIHZlLT5ndCwgbWFzaywgdG1wKQorCQlpZiAo UkVBRF9PTkNFKGVuZ2luZS0+cHJvcHMuaGVhcnRiZWF0X2ludGVydmFsX21zKSkKKwkJCXJldHVy biB0cnVlOworCisJcmV0dXJuIGZhbHNlOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmgKaW5kZXggMmI5NDcwYzkwNTU4Li5jN2VmNDRm YTBjMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19z dWJtaXNzaW9uLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1 Ym1pc3Npb24uaApAQCAtMjUsMTEgKzI1LDIwIEBAIHZvaWQgaW50ZWxfZ3VjX3N1Ym1pc3Npb25f cHJpbnRfaW5mbyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCiAJCQkJICAgICBzdHJ1Y3QgZHJtX3By aW50ZXIgKnApOwogdm9pZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9wcmludF9jb250ZXh0X2luZm8o c3RydWN0IGludGVsX2d1YyAqZ3VjLAogCQkJCQkgICAgIHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7 Cit2b2lkIGludGVsX2d1Y19kdW1wX2FjdGl2ZV9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUsCisJCQkJICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKmh1bmdfcnEsCisJCQkJ ICAgIHN0cnVjdCBkcm1fcHJpbnRlciAqbSk7CisKK2Jvb2wgaW50ZWxfZ3VjX3ZpcnR1YWxfZW5n aW5lX2hhc19oZWFydGJlYXQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqdmUpOworCitp bnQgaW50ZWxfZ3VjX3dhaXRfZm9yX3BlbmRpbmdfbXNnKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywK KwkJCQkgICBhdG9taWNfdCAqd2FpdF92YXIsCisJCQkJICAgYm9vbCBpbnRlcnJ1cHRpYmxlLAor CQkJCSAgIGxvbmcgdGltZW91dCk7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF9ndWNfc3Vi bWlzc2lvbl9pc19zdXBwb3J0ZWQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogewotCS8qIFhYWDog R3VDIHN1Ym1pc3Npb24gaXMgdW5hdmFpbGFibGUgZm9yIG5vdyAqLwotCXJldHVybiBmYWxzZTsK KwlyZXR1cm4gZ3VjLT5zdWJtaXNzaW9uX3N1cHBvcnRlZDsKIH0KIAogc3RhdGljIGlubGluZSBi b29sIGludGVsX2d1Y19zdWJtaXNzaW9uX2lzX3dhbnRlZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMp CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYwppbmRleCA2ZDhiOTIzMzIxNGUuLmRh NTdkMThkOWY2YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf dWMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jCkBAIC0zNCw4 ICszNCwxNCBAQCBzdGF0aWMgdm9pZCB1Y19leHBhbmRfZGVmYXVsdF9vcHRpb25zKHN0cnVjdCBp bnRlbF91YyAqdWMpCiAJCXJldHVybjsKIAl9CiAKLQkvKiBEZWZhdWx0OiBlbmFibGUgSHVDIGF1 dGhlbnRpY2F0aW9uIG9ubHkgKi8KLQlpOTE1LT5wYXJhbXMuZW5hYmxlX2d1YyA9IEVOQUJMRV9H VUNfTE9BRF9IVUM7CisJLyogSW50ZXJtZWRpYXRlIHBsYXRmb3JtcyBhcmUgSHVDIGF1dGhlbnRp Y2F0aW9uIG9ubHkgKi8KKwlpZiAoSVNfREcxKGk5MTUpIHx8IElTX0FMREVSTEFLRV9TKGk5MTUp KSB7CisJCWk5MTUtPnBhcmFtcy5lbmFibGVfZ3VjID0gRU5BQkxFX0dVQ19MT0FEX0hVQzsKKwkJ cmV0dXJuOworCX0KKworCS8qIERlZmF1bHQ6IGVuYWJsZSBIdUMgYXV0aGVudGljYXRpb24gYW5k IEd1QyBzdWJtaXNzaW9uICovCisJaTkxNS0+cGFyYW1zLmVuYWJsZV9ndWMgPSBFTkFCTEVfR1VD X0xPQURfSFVDIHwgRU5BQkxFX0dVQ19TVUJNSVNTSU9OOwogfQogCiAvKiBSZXNldCBHdUMgcHJv dmlkaW5nIHVzIHdpdGggZnJlc2ggc3RhdGUgZm9yIGJvdGggR3VDIGFuZCBIdUMuCkBAIC0xMjAs NiArMTI2LDExIEBAIHZvaWQgaW50ZWxfdWNfaW5pdF9lYXJseShzdHJ1Y3QgaW50ZWxfdWMgKnVj KQogCQl1Yy0+b3BzID0gJnVjX29wc19vZmY7CiB9CiAKK3ZvaWQgaW50ZWxfdWNfaW5pdF9sYXRl KHN0cnVjdCBpbnRlbF91YyAqdWMpCit7CisJaW50ZWxfZ3VjX2luaXRfbGF0ZSgmdWMtPmd1Yyk7 Cit9CisKIHZvaWQgaW50ZWxfdWNfZHJpdmVyX2xhdGVfcmVsZWFzZShzdHJ1Y3QgaW50ZWxfdWMg KnVjKQogewogfQpAQCAtMjA3LDIxICsyMTgsNiBAQCBzdGF0aWMgdm9pZCBndWNfaGFuZGxlX21t aW9fbXNnKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAlzcGluX3VubG9ja19pcnEoJmd1Yy0+aXJx X2xvY2spOwogfQogCi1zdGF0aWMgdm9pZCBndWNfcmVzZXRfaW50ZXJydXB0cyhzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMpCi17Ci0JZ3VjLT5pbnRlcnJ1cHRzLnJlc2V0KGd1Yyk7Ci19Ci0KLXN0YXRp YyB2b2lkIGd1Y19lbmFibGVfaW50ZXJydXB0cyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCi17Ci0J Z3VjLT5pbnRlcnJ1cHRzLmVuYWJsZShndWMpOwotfQotCi1zdGF0aWMgdm9pZCBndWNfZGlzYWJs ZV9pbnRlcnJ1cHRzKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKLXsKLQlndWMtPmludGVycnVwdHMu ZGlzYWJsZShndWMpOwotfQotCiBzdGF0aWMgaW50IGd1Y19lbmFibGVfY29tbXVuaWNhdGlvbihz dHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiB7CiAJc3RydWN0IGludGVsX2d0ICpndCA9IGd1Y190b19n dChndWMpOwpAQCAtMjQyLDcgKzIzOCw3IEBAIHN0YXRpYyBpbnQgZ3VjX2VuYWJsZV9jb21tdW5p Y2F0aW9uKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAlndWNfZ2V0X21taW9fbXNnKGd1Yyk7CiAJ Z3VjX2hhbmRsZV9tbWlvX21zZyhndWMpOwogCi0JZ3VjX2VuYWJsZV9pbnRlcnJ1cHRzKGd1Yyk7 CisJaW50ZWxfZ3VjX2VuYWJsZV9pbnRlcnJ1cHRzKGd1Yyk7CiAKIAkvKiBjaGVjayBmb3IgQ1Qg bWVzc2FnZXMgcmVjZWl2ZWQgYmVmb3JlIHdlIGVuYWJsZWQgaW50ZXJydXB0cyAqLwogCXNwaW5f bG9ja19pcnEoJmd0LT5pcnFfbG9jayk7CkBAIC0yNjUsNyArMjYxLDcgQEAgc3RhdGljIHZvaWQg Z3VjX2Rpc2FibGVfY29tbXVuaWNhdGlvbihzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAJICovCiAJ Z3VjX2NsZWFyX21taW9fbXNnKGd1Yyk7CiAKLQlndWNfZGlzYWJsZV9pbnRlcnJ1cHRzKGd1Yyk7 CisJaW50ZWxfZ3VjX2Rpc2FibGVfaW50ZXJydXB0cyhndWMpOwogCiAJaW50ZWxfZ3VjX2N0X2Rp c2FibGUoJmd1Yy0+Y3QpOwogCkBAIC0zMjMsOSArMzE5LDYgQEAgc3RhdGljIGludCBfX3VjX2lu aXQoc3RydWN0IGludGVsX3VjICp1YykKIAlpZiAoaTkxNV9pbmplY3RfcHJvYmVfZmFpbHVyZSh1 Y190b19ndCh1YyktPmk5MTUpKQogCQlyZXR1cm4gLUVOT01FTTsKIAotCS8qIFhYWDogR3VDIHN1 Ym1pc3Npb24gaXMgdW5hdmFpbGFibGUgZm9yIG5vdyAqLwotCUdFTV9CVUdfT04oaW50ZWxfdWNf dXNlc19ndWNfc3VibWlzc2lvbih1YykpOwotCiAJcmV0ID0gaW50ZWxfZ3VjX2luaXQoZ3VjKTsK IAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwpAQCAtNDYzLDcgKzQ1Niw3IEBAIHN0YXRpYyBpbnQg X191Y19pbml0X2h3KHN0cnVjdCBpbnRlbF91YyAqdWMpCiAJaWYgKHJldCkKIAkJZ290byBlcnJf b3V0OwogCi0JZ3VjX3Jlc2V0X2ludGVycnVwdHMoZ3VjKTsKKwlpbnRlbF9ndWNfcmVzZXRfaW50 ZXJydXB0cyhndWMpOwogCiAJLyogV2FFbmFibGV1S2VybmVsSGVhZGVyVmFsaWRGaXg6c2tsICov CiAJLyogV2FFbmFibGVHdUNCb290SGFzaENoZWNrTm90U2V0OnNrbCxieHQsa2JsICovCkBAIC01 NjUsMjMgKzU1OCw2NyBAQCB2b2lkIGludGVsX3VjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGludGVs X3VjICp1YykKIHsKIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmdWMtPmd1YzsKIAotCWlmICgh aW50ZWxfZ3VjX2lzX3JlYWR5KGd1YykpCisJdWMtPnJlc2V0X2luX3Byb2dyZXNzID0gdHJ1ZTsK KworCS8qIE5vdGhpbmcgdG8gZG8gaWYgR3VDIGlzbid0IHN1cHBvcnRlZCAqLworCWlmICghaW50 ZWxfdWNfc3VwcG9ydHNfZ3VjKHVjKSkKIAkJcmV0dXJuOwogCisJLyogRmlybXdhcmUgZXhwZWN0 ZWQgdG8gYmUgcnVubmluZyB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkICovCisJaWYgKCFp bnRlbF9ndWNfaXNfcmVhZHkoZ3VjKSkKKwkJZ290byBzYW5pdGl6ZTsKKworCWlmIChpbnRlbF91 Y191c2VzX2d1Y19zdWJtaXNzaW9uKHVjKSkKKwkJaW50ZWxfZ3VjX3N1Ym1pc3Npb25fcmVzZXRf cHJlcGFyZShndWMpOworCitzYW5pdGl6ZToKIAlfX3VjX3Nhbml0aXplKHVjKTsKIH0KIAordm9p ZCBpbnRlbF91Y19yZXNldChzdHJ1Y3QgaW50ZWxfdWMgKnVjLCBib29sIHN0YWxsZWQpCit7CisJ c3RydWN0IGludGVsX2d1YyAqZ3VjID0gJnVjLT5ndWM7CisKKwkvKiBGaXJtd2FyZSBjYW4gbm90 IGJlIHJ1bm5pbmcgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCAgKi8KKwlpZiAoaW50ZWxf dWNfdXNlc19ndWNfc3VibWlzc2lvbih1YykpCisJCWludGVsX2d1Y19zdWJtaXNzaW9uX3Jlc2V0 KGd1Yywgc3RhbGxlZCk7Cit9CisKK3ZvaWQgaW50ZWxfdWNfcmVzZXRfZmluaXNoKHN0cnVjdCBp bnRlbF91YyAqdWMpCit7CisJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gJnVjLT5ndWM7CisKKwl1 Yy0+cmVzZXRfaW5fcHJvZ3Jlc3MgPSBmYWxzZTsKKworCS8qIEZpcm13YXJlIGV4cGVjdGVkIHRv IGJlIHJ1bm5pbmcgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCAqLworCWlmIChpbnRlbF9n dWNfaXNfZndfcnVubmluZyhndWMpICYmIGludGVsX3VjX3VzZXNfZ3VjX3N1Ym1pc3Npb24odWMp KQorCQlpbnRlbF9ndWNfc3VibWlzc2lvbl9yZXNldF9maW5pc2goZ3VjKTsKK30KKwordm9pZCBp bnRlbF91Y19jYW5jZWxfcmVxdWVzdHMoc3RydWN0IGludGVsX3VjICp1YykKK3sKKwlzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMgPSAmdWMtPmd1YzsKKworCS8qIEZpcm13YXJlIGNhbiBub3QgYmUgcnVu bmluZyB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkICAqLworCWlmIChpbnRlbF91Y191c2Vz X2d1Y19zdWJtaXNzaW9uKHVjKSkKKwkJaW50ZWxfZ3VjX3N1Ym1pc3Npb25fY2FuY2VsX3JlcXVl c3RzKGd1Yyk7Cit9CisKIHZvaWQgaW50ZWxfdWNfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBpbnRl bF91YyAqdWMpCiB7CiAJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gJnVjLT5ndWM7Ci0JaW50IGVy cjsKIAogCWlmICghaW50ZWxfZ3VjX2lzX3JlYWR5KGd1YykpCiAJCXJldHVybjsKIAotCWVyciA9 IGludGVsX2d1Y19zdXNwZW5kKGd1Yyk7Ci0JaWYgKGVycikKLQkJRFJNX0RFQlVHX0RSSVZFUigi RmFpbGVkIHRvIHN1c3BlbmQgR3VDLCBlcnI9JWQiLCBlcnIpOworCS8qCisJICogV2FpdCBmb3Ig YW55IG91dHN0YW5kaW5nIENUQiBiZWZvcmUgdGVhcmluZyBkb3duIGNvbW11bmljYXRpb24gL3cg dGhlCisJICogR3VDLgorCSAqLworI2RlZmluZSBPVVRTVEFORElOR19DVEJfVElNRU9VVF9QRVJJ T0QJKEhaIC8gNSkKKwlpbnRlbF9ndWNfd2FpdF9mb3JfcGVuZGluZ19tc2coZ3VjLCAmZ3VjLT5v dXRzdGFuZGluZ19zdWJtaXNzaW9uX2cyaCwKKwkJCQkgICAgICAgZmFsc2UsIE9VVFNUQU5ESU5H X0NUQl9USU1FT1VUX1BFUklPRCk7CisJR0VNX1dBUk5fT04oYXRvbWljX3JlYWQoJmd1Yy0+b3V0 c3RhbmRpbmdfc3VibWlzc2lvbl9nMmgpKTsKIAogCWd1Y19kaXNhYmxlX2NvbW11bmljYXRpb24o Z3VjKTsKIH0KQEAgLTU5MCwxMiArNjI3LDE2IEBAIHZvaWQgaW50ZWxfdWNfc3VzcGVuZChzdHJ1 Y3QgaW50ZWxfdWMgKnVjKQogewogCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZ1Yy0+Z3VjOwog CWludGVsX3dha2VyZWZfdCB3YWtlcmVmOworCWludCBlcnI7CiAKIAlpZiAoIWludGVsX2d1Y19p c19yZWFkeShndWMpKQogCQlyZXR1cm47CiAKLQl3aXRoX2ludGVsX3J1bnRpbWVfcG0odWNfdG9f Z3QodWMpLT51bmNvcmUtPnJwbSwgd2FrZXJlZikKLQkJaW50ZWxfdWNfcnVudGltZV9zdXNwZW5k KHVjKTsKKwl3aXRoX2ludGVsX3J1bnRpbWVfcG0oJnVjX3RvX2d0KHVjKS0+aTkxNS0+cnVudGlt ZV9wbSwgd2FrZXJlZikgeworCQllcnIgPSBpbnRlbF9ndWNfc3VzcGVuZChndWMpOworCQlpZiAo ZXJyKQorCQkJRFJNX0RFQlVHX0RSSVZFUigiRmFpbGVkIHRvIHN1c3BlbmQgR3VDLCBlcnI9JWQi LCBlcnIpOworCX0KIH0KIAogc3RhdGljIGludCBfX3VjX3Jlc3VtZShzdHJ1Y3QgaW50ZWxfdWMg KnVjLCBib29sIGVuYWJsZV9jb21tdW5pY2F0aW9uKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX3VjLmgKaW5kZXggYzRjZWY4ODVlOTg0Li5lMmRhMmI2ZTc2ZTEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvdWMvaW50ZWxfdWMuaApAQCAtMzAsMTMgKzMwLDE5IEBAIHN0cnVjdCBpbnRlbF91 YyB7CiAKIAkvKiBTbmFwc2hvdCBvZiBHdUMgbG9nIGZyb20gbGFzdCBmYWlsZWQgbG9hZCAqLwog CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpsb2FkX2Vycl9sb2c7CisKKwlib29sIHJlc2V0 X2luX3Byb2dyZXNzOwogfTsKIAogdm9pZCBpbnRlbF91Y19pbml0X2Vhcmx5KHN0cnVjdCBpbnRl bF91YyAqdWMpOwordm9pZCBpbnRlbF91Y19pbml0X2xhdGUoc3RydWN0IGludGVsX3VjICp1Yyk7 CiB2b2lkIGludGVsX3VjX2RyaXZlcl9sYXRlX3JlbGVhc2Uoc3RydWN0IGludGVsX3VjICp1Yyk7 CiB2b2lkIGludGVsX3VjX2RyaXZlcl9yZW1vdmUoc3RydWN0IGludGVsX3VjICp1Yyk7CiB2b2lk IGludGVsX3VjX2luaXRfbW1pbyhzdHJ1Y3QgaW50ZWxfdWMgKnVjKTsKIHZvaWQgaW50ZWxfdWNf cmVzZXRfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfdWMgKnVjKTsKK3ZvaWQgaW50ZWxfdWNfcmVzZXQo c3RydWN0IGludGVsX3VjICp1YywgYm9vbCBzdGFsbGVkKTsKK3ZvaWQgaW50ZWxfdWNfcmVzZXRf ZmluaXNoKHN0cnVjdCBpbnRlbF91YyAqdWMpOwordm9pZCBpbnRlbF91Y19jYW5jZWxfcmVxdWVz dHMoc3RydWN0IGludGVsX3VjICp1Yyk7CiB2b2lkIGludGVsX3VjX3N1c3BlbmQoc3RydWN0IGlu dGVsX3VjICp1Yyk7CiB2b2lkIGludGVsX3VjX3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgaW50ZWxf dWMgKnVjKTsKIGludCBpbnRlbF91Y19yZXN1bWUoc3RydWN0IGludGVsX3VjICp1Yyk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnNfcGFyYW1zLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnNfcGFyYW1zLmMKaW5kZXggNGUyYjA3NzY5MmNi Li4yMDQyNDI3NWQ0MWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmc19wYXJhbXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnNfcGFy YW1zLmMKQEAgLTYsOSArNiwyMSBAQAogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogCiAjaW5j bHVkZSAiaTkxNV9kZWJ1Z2ZzX3BhcmFtcy5oIgorI2luY2x1ZGUgImd0L2ludGVsX2d0LmgiCisj aW5jbHVkZSAiZ3QvdWMvaW50ZWxfZ3VjLmgiCiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKICNpbmNs dWRlICJpOTE1X3BhcmFtcy5oIgogCisjZGVmaW5lIE1BVENIX0RFQlVHRlNfTk9ERV9OQU1FKF9m aWxlLCBfbmFtZSkgXAorCShzdHJjbXAoKF9maWxlKS0+Zl9wYXRoLmRlbnRyeS0+ZF9uYW1lLm5h bWUsIChfbmFtZSkpID09IDApCisKKyNkZWZpbmUgR0VUX0k5MTUoaTkxNSwgbmFtZSwgcHRyKQlc CisJZG8gewlcCisJCXN0cnVjdCBpOTE1X3BhcmFtcyAqcGFyYW1zOwlcCisJCXBhcmFtcyA9IGNv bnRhaW5lcl9vZigoKHZvaWQgKikocHRyKSksIHR5cGVvZigqcGFyYW1zKSwgbmFtZSk7CVwKKwkJ KGk5MTUpID0gY29udGFpbmVyX29mKHBhcmFtcywgdHlwZW9mKCooaTkxNSkpLCBwYXJhbXMpOwlc CisJfSB3aGlsZSAoMCkKKwogLyogaW50IHBhcmFtICovCiBzdGF0aWMgaW50IGk5MTVfcGFyYW1f aW50X3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogewpAQCAtMjQsNiArMzYs MTYgQEAgc3RhdGljIGludCBpOTE1X3BhcmFtX2ludF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUs IHN0cnVjdCBmaWxlICpmaWxlKQogCXJldHVybiBzaW5nbGVfb3BlbihmaWxlLCBpOTE1X3BhcmFt X2ludF9zaG93LCBpbm9kZS0+aV9wcml2YXRlKTsKIH0KIAorc3RhdGljIGludCBub3RpZnlfZ3Vj KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQoreworCWludCByZXQgPSAwOworCisJaWYg KGludGVsX3VjX3VzZXNfZ3VjX3N1Ym1pc3Npb24oJmk5MTUtPmd0LnVjKSkKKwkJcmV0ID0gaW50 ZWxfZ3VjX2dsb2JhbF9wb2xpY2llc191cGRhdGUoJmk5MTUtPmd0LnVjLmd1Yyk7CisKKwlyZXR1 cm4gcmV0OworfQorCiBzdGF0aWMgc3NpemVfdCBpOTE1X3BhcmFtX2ludF93cml0ZShzdHJ1Y3Qg ZmlsZSAqZmlsZSwKIAkJCQkgICAgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsIHNpemVfdCBsZW4s CiAJCQkJICAgIGxvZmZfdCAqb2ZmcCkKQEAgLTgxLDggKzEwMywxMCBAQCBzdGF0aWMgc3NpemVf dCBpOTE1X3BhcmFtX3VpbnRfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCiAJCQkJICAgICBjb25z dCBjaGFyIF9fdXNlciAqdWJ1Ziwgc2l6ZV90IGxlbiwKIAkJCQkgICAgIGxvZmZfdCAqb2ZmcCkK IHsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKIAlzdHJ1Y3Qgc2VxX2ZpbGUgKm0g PSBmaWxlLT5wcml2YXRlX2RhdGE7CiAJdW5zaWduZWQgaW50ICp2YWx1ZSA9IG0tPnByaXZhdGU7 CisJdW5zaWduZWQgaW50IG9sZCA9ICp2YWx1ZTsKIAlpbnQgcmV0OwogCiAJcmV0ID0ga3N0cnRv dWludF9mcm9tX3VzZXIodWJ1ZiwgbGVuLCAwLCB2YWx1ZSk7CkBAIC05NSw2ICsxMTksMTQgQEAg c3RhdGljIHNzaXplX3QgaTkxNV9wYXJhbV91aW50X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLAog CQkJKnZhbHVlID0gYjsKIAl9CiAKKwlpZiAoIXJldCAmJiBNQVRDSF9ERUJVR0ZTX05PREVfTkFN RShmaWxlLCAicmVzZXQiKSkgeworCQlHRVRfSTkxNShpOTE1LCByZXNldCwgdmFsdWUpOworCisJ CXJldCA9IG5vdGlmeV9ndWMoaTkxNSk7CisJCWlmIChyZXQpCisJCQkqdmFsdWUgPSBvbGQ7CisJ fQorCiAJcmV0dXJuIHJldCA/OiBsZW47CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9l cnJvci5jCmluZGV4IGEyYzU4YjU0YTU5Mi4uMGYwOGJjZmJlOTY0IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3B1X2Vycm9yLmMKQEAgLTE0MjksMjAgKzE0MjksMzcgQEAgY2FwdHVyZV9lbmdp bmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogewogCXN0cnVjdCBpbnRlbF9lbmdp bmVfY2FwdHVyZV92bWEgKmNhcHR1cmUgPSBOVUxMOwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY29y ZWR1bXAgKmVlOwotCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOworCXN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZTsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSA9IE5VTEw7CiAJdW5zaWduZWQgbG9u ZyBmbGFnczsKIAogCWVlID0gaW50ZWxfZW5naW5lX2NvcmVkdW1wX2FsbG9jKGVuZ2luZSwgR0ZQ X0tFUk5FTCk7CiAJaWYgKCFlZSkKIAkJcmV0dXJuIE5VTEw7CiAKLQlzcGluX2xvY2tfaXJxc2F2 ZSgmZW5naW5lLT5zY2hlZF9lbmdpbmUtPmxvY2ssIGZsYWdzKTsKLQlycSA9IGludGVsX2VuZ2lu ZV9maW5kX2FjdGl2ZV9yZXF1ZXN0KGVuZ2luZSk7CisJY2UgPSBpbnRlbF9lbmdpbmVfZ2V0X2h1 bmdfY29udGV4dChlbmdpbmUpOworCWlmIChjZSkgeworCQlpbnRlbF9lbmdpbmVfY2xlYXJfaHVu Z19jb250ZXh0KGVuZ2luZSk7CisJCXJxID0gaW50ZWxfY29udGV4dF9maW5kX2FjdGl2ZV9yZXF1 ZXN0KGNlKTsKKwkJaWYgKCFycSB8fCAhaTkxNV9yZXF1ZXN0X3N0YXJ0ZWQocnEpKQorCQkJZ290 byBub19yZXF1ZXN0X2NhcHR1cmU7CisJfSBlbHNlIHsKKwkJLyoKKwkJICogR2V0dGluZyBoZXJl IHdpdGggR3VDIGVuYWJsZWQgbWVhbnMgaXQgaXMgYSBmb3JjZWQgZXJyb3IgY2FwdHVyZQorCQkg KiB3aXRoIG5vIGFjdHVhbCBoYW5nLiBTbywgbm8gbmVlZCB0byBhdHRlbXB0IHRoZSBleGVjbGlz dCBzZWFyY2guCisJCSAqLworCQlpZiAoIWludGVsX3VjX3VzZXNfZ3VjX3N1Ym1pc3Npb24oJmVu Z2luZS0+Z3QtPnVjKSkgeworCQkJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+c2NoZWRfZW5n aW5lLT5sb2NrLCBmbGFncyk7CisJCQlycSA9IGludGVsX2VuZ2luZV9leGVjbGlzdF9maW5kX2h1 bmdfcmVxdWVzdChlbmdpbmUpOworCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5z Y2hlZF9lbmdpbmUtPmxvY2ssCisJCQkJCSAgICAgICBmbGFncyk7CisJCX0KKwl9CiAJaWYgKHJx KQogCQljYXB0dXJlID0gaW50ZWxfZW5naW5lX2NvcmVkdW1wX2FkZF9yZXF1ZXN0KGVlLCBycSwK IAkJCQkJCQkgICAgQVRPTUlDX01BWUZBSUwpOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVu Z2luZS0+c2NoZWRfZW5naW5lLT5sb2NrLCBmbGFncyk7CiAJaWYgKCFjYXB0dXJlKSB7Citub19y ZXF1ZXN0X2NhcHR1cmU6CiAJCWtmcmVlKGVlKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmgKaW5kZXggMzE0MTk0YjQxOWYwLi41NjAzMzc3ZTA2Y2EgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaApAQCAtMTIzMTYsNiArMTIzMTYsNyBAQCBlbnVtIHNrbF9wb3dlcl9n YXRlIHsKIAogLyogTU9DUyAoTWVtb3J5IE9iamVjdCBDb250cm9sIFN0YXRlKSByZWdpc3RlcnMg Ki8KICNkZWZpbmUgR0VOOV9MTkNGQ01PQ1MoaSkJX01NSU8oMHhiMDIwICsgKGkpICogNCkJLyog TDMgQ2FjaGUgQ29udHJvbCAqLworI2RlZmluZSBHRU45X0xOQ0ZDTU9DU19SRUdfQ09VTlQJMzIK IAogI2RlZmluZSBfX0dFTjlfUkNTMF9NT0NTMAkweGM4MDAKICNkZWZpbmUgR0VOOV9HRlhfTU9D UyhpKQlfTU1JTyhfX0dFTjlfUkNTMF9NT0NTMCArIChpKSAqIDQpCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVxdWVzdC5jCmluZGV4IDY1OTRjYjJmOGViZC4uMWYxZDRhNmEwZWZmIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlcXVlc3QuYwpAQCAtMTE0LDYgKzExNCw5IEBAIHN0YXRpYyB2b2lkIGk5 MTVfZmVuY2VfcmVsZWFzZShzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKIHsKIAlzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSA9IHRvX3JlcXVlc3QoZmVuY2UpOwogCisJR0VNX0JVR19PTihycS0+Z3Vj X3ByaW8gIT0gR1VDX1BSSU9fSU5JVCAmJgorCQkgICBycS0+Z3VjX3ByaW8gIT0gR1VDX1BSSU9f RklOSSk7CisKIAkvKgogCSAqIFRoZSByZXF1ZXN0IGlzIHB1dCBvbnRvIGEgUkNVIGZyZWVsaXN0 IChpLmUuIHRoZSBhZGRyZXNzCiAJICogaXMgaW1tZWRpYXRlbHkgcmV1c2VkKSwgbWFyayB0aGUg ZmVuY2VzIGFzIGJlaW5nIGZyZWVkIG5vdy4KQEAgLTEyNSwzOSArMTI4LDE3IEBAIHN0YXRpYyB2 b2lkIGk5MTVfZmVuY2VfcmVsZWFzZShzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKIAlpOTE1X3N3 X2ZlbmNlX2ZpbmkoJnJxLT5zZW1hcGhvcmUpOwogCiAJLyoKLQkgKiBLZWVwIG9uZSByZXF1ZXN0 IG9uIGVhY2ggZW5naW5lIGZvciByZXNlcnZlZCB1c2UgdW5kZXIgbWVtcHJlc3N1cmUKLQkgKgot CSAqIFdlIGRvIG5vdCBob2xkIGEgcmVmZXJlbmNlIHRvIHRoZSBlbmdpbmUgaGVyZSBhbmQgc28g aGF2ZSB0byBiZQotCSAqIHZlcnkgY2FyZWZ1bCBpbiB3aGF0IHJxLT5lbmdpbmUgd2UgcG9rZS4g VGhlIHZpcnR1YWwgZW5naW5lIGlzCi0JICogcmVmZXJlbmNlZCB2aWEgdGhlIHJxLT5jb250ZXh0 IGFuZCB3ZSByZWxlYXNlZCB0aGF0IHJlZiBkdXJpbmcKLQkgKiBpOTE1X3JlcXVlc3RfcmV0aXJl KCksIGVyZ28gd2UgbXVzdCBub3QgZGVyZWZlcmVuY2UgYSB2aXJ0dWFsCi0JICogZW5naW5lIGhl cmUuIE5vdCB0aGF0IHdlIHdvdWxkIHdhbnQgdG8sIGFzIHRoZSBvbmx5IGNvbnN1bWVyIG9mCi0J ICogdGhlIHJlc2VydmVkIGVuZ2luZS0+cmVxdWVzdF9wb29sIGlzIHRoZSBwb3dlciBtYW5hZ2Vt ZW50IHBhcmtpbmcsCi0JICogd2hpY2ggbXVzdC1ub3QtZmFpbCwgYW5kIHRoYXQgaXMgb25seSBy dW4gb24gdGhlIHBoeXNpY2FsIGVuZ2luZXMuCi0JICoKLQkgKiBTaW5jZSB0aGUgcmVxdWVzdCBt dXN0IGhhdmUgYmVlbiBleGVjdXRlZCB0byBiZSBoYXZlIGNvbXBsZXRlZCwKLQkgKiB3ZSBrbm93 IHRoYXQgaXQgd2lsbCBoYXZlIGJlZW4gcHJvY2Vzc2VkIGJ5IHRoZSBIVyBhbmQgd2lsbAotCSAq IG5vdCBiZSB1bnN1Ym1pdHRlZCBhZ2Fpbiwgc28gcnEtPmVuZ2luZSBhbmQgcnEtPmV4ZWN1dGlv bl9tYXNrCi0JICogYXQgdGhpcyBwb2ludCBpcyBzdGFibGUuIHJxLT5leGVjdXRpb25fbWFzayB3 aWxsIGJlIGEgc2luZ2xlCi0JICogYml0IGlmIHRoZSBsYXN0IGFuZCBfb25seV8gZW5naW5lIGl0 IGNvdWxkIGV4ZWN1dGlvbiBvbiB3YXMgYQotCSAqIHBoeXNpY2FsIGVuZ2luZSwgaWYgaXQncyBt dWx0aXBsZSBiaXRzIHRoZW4gaXQgc3RhcnRlZCBvbiBhbmQKLQkgKiBjb3VsZCBzdGlsbCBiZSBv biBhIHZpcnR1YWwgZW5naW5lLiBUaHVzIGlmIHRoZSBtYXNrIGlzIG5vdCBhCi0JICogcG93ZXIt b2YtdHdvIHdlIGFzc3VtZSB0aGF0IHJxLT5lbmdpbmUgbWF5IHN0aWxsIGJlIGEgdmlydHVhbAot CSAqIGVuZ2luZSBhbmQgc28gYSBkYW5nbGluZyBpbnZhbGlkIHBvaW50ZXIgdGhhdCB3ZSBjYW5u b3QgZGVyZWZlcmVuY2UKLQkgKgotCSAqIEZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgZmxvdyBv ZiBhIGJvbmRlZCByZXF1ZXN0IHRocm91Z2ggYSB2aXJ0dWFsCi0JICogZW5naW5lLiBUaGUgcmVx dWVzdCBpcyBjcmVhdGVkIHdpdGggYSB3aWRlIGVuZ2luZSBtYXNrIChhbGwgZW5naW5lcwotCSAq IHRoYXQgd2UgbWlnaHQgZXhlY3V0ZSBvbikuIE9uIHByb2Nlc3NpbmcgdGhlIGJvbmQsIHRoZSBy ZXF1ZXN0IG1hc2sKLQkgKiBpcyByZWR1Y2VkIHRvIG9uZSBvciBtb3JlIGVuZ2luZXMuIElmIHRo ZSByZXF1ZXN0IGlzIHN1YnNlcXVlbnRseQotCSAqIGJvdW5kIHRvIGEgc2luZ2xlIGVuZ2luZSwg aXQgd2lsbCB0aGVuIGJlIGNvbnN0cmFpbmVkIHRvIG9ubHkKLQkgKiBleGVjdXRlIG9uIHRoYXQg ZW5naW5lIGFuZCBuZXZlciByZXR1cm5lZCB0byB0aGUgdmlydHVhbCBlbmdpbmUKLQkgKiBhZnRl ciB0aW1lc2xpY2luZyBhd2F5LCBzZWUgX191bndpbmRfaW5jb21wbGV0ZV9yZXF1ZXN0cygpLiBU aHVzIHdlCi0JICoga25vdyB0aGF0IGlmIHRoZSBycS0+ZXhlY3V0aW9uX21hc2sgaXMgYSBzaW5n bGUgYml0LCBycS0+ZW5naW5lCi0JICogY2FuIGJlIGEgcGh5c2ljYWwgZW5naW5lIHdpdGggdGhl IGV4YWN0IGNvcnJlc3BvbmRpbmcgbWFzay4KKwkgKiBLZWVwIG9uZSByZXF1ZXN0IG9uIGVhY2gg ZW5naW5lIGZvciByZXNlcnZlZCB1c2UgdW5kZXIgbWVtcHJlc3N1cmUsCisJICogZG8gbm90IHVz ZSB3aXRoIHZpcnR1YWwgZW5naW5lcyBhcyB0aGlzIHJlYWxseSBpcyBvbmx5IG5lZWRlZCBmb3IK KwkgKiBrZXJuZWwgY29udGV4dHMuCiAJICovCi0JaWYgKGlzX3Bvd2VyX29mXzIocnEtPmV4ZWN1 dGlvbl9tYXNrKSAmJgotCSAgICAhY21weGNoZygmcnEtPmVuZ2luZS0+cmVxdWVzdF9wb29sLCBO VUxMLCBycSkpCisJaWYgKCFpbnRlbF9lbmdpbmVfaXNfdmlydHVhbChycS0+ZW5naW5lKSAmJgor CSAgICAhY21weGNoZygmcnEtPmVuZ2luZS0+cmVxdWVzdF9wb29sLCBOVUxMLCBycSkpIHsKKwkJ aW50ZWxfY29udGV4dF9wdXQocnEtPmNvbnRleHQpOwogCQlyZXR1cm47CisJfQorCisJaW50ZWxf Y29udGV4dF9wdXQocnEtPmNvbnRleHQpOwogCiAJa21lbV9jYWNoZV9mcmVlKGdsb2JhbC5zbGFi X3JlcXVlc3RzLCBycSk7CiB9CkBAIC0yMDQsNyArMTg1LDcgQEAgc3RhdGljIGJvb2wgaXJxX3dv cmtfaW1tKHN0cnVjdCBpcnFfd29yayAqd3JrKQogCXJldHVybiBmYWxzZTsKIH0KIAotc3RhdGlj IHZvaWQgX19ub3RpZnlfZXhlY3V0ZV9jYl9pbW0oc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit2 b2lkIGk5MTVfcmVxdWVzdF9ub3RpZnlfZXhlY3V0ZV9jYl9pbW0oc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEpCiB7CiAJX19ub3RpZnlfZXhlY3V0ZV9jYihycSwgaXJxX3dvcmtfaW1tKTsKIH0KQEAg LTI3OCwzNyArMjU5LDYgQEAgaTkxNV9yZXF1ZXN0X2FjdGl2ZV9lbmdpbmUoc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEsCiAJcmV0dXJuIHJldDsKIH0KIAotCi1zdGF0aWMgdm9pZCByZW1vdmVfZnJv bV9lbmdpbmUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCi17Ci0Jc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLCAqbG9ja2VkOwotCi0JLyoKLQkgKiBWaXJ0dWFsIGVuZ2luZXMgY29tcGxp Y2F0ZSBhY3F1aXJpbmcgdGhlIGVuZ2luZSB0aW1lbGluZSBsb2NrLAotCSAqIGFzIHRoZWlyIHJx LT5lbmdpbmUgcG9pbnRlciBpcyBub3Qgc3RhYmxlIHVudGlsIHVuZGVyIHRoYXQKLQkgKiBlbmdp bmUgbG9jay4gVGhlIHNpbXBsZSBwbG95IHdlIHVzZSBpcyB0byB0YWtlIHRoZSBsb2NrIHRoZW4K LQkgKiBjaGVjayB0aGF0IHRoZSBycSBzdGlsbCBiZWxvbmdzIHRvIHRoZSBuZXdseSBsb2NrZWQg ZW5naW5lLgotCSAqLwotCWxvY2tlZCA9IFJFQURfT05DRShycS0+ZW5naW5lKTsKLQlzcGluX2xv Y2tfaXJxKCZsb2NrZWQtPnNjaGVkX2VuZ2luZS0+bG9jayk7Ci0Jd2hpbGUgKHVubGlrZWx5KGxv Y2tlZCAhPSAoZW5naW5lID0gUkVBRF9PTkNFKHJxLT5lbmdpbmUpKSkpIHsKLQkJc3Bpbl91bmxv Y2soJmxvY2tlZC0+c2NoZWRfZW5naW5lLT5sb2NrKTsKLQkJc3Bpbl9sb2NrKCZlbmdpbmUtPnNj aGVkX2VuZ2luZS0+bG9jayk7Ci0JCWxvY2tlZCA9IGVuZ2luZTsKLQl9Ci0JbGlzdF9kZWxfaW5p dCgmcnEtPnNjaGVkLmxpbmspOwotCi0JY2xlYXJfYml0KEk5MTVfRkVOQ0VfRkxBR19QUVVFVUUs ICZycS0+ZmVuY2UuZmxhZ3MpOwotCWNsZWFyX2JpdChJOTE1X0ZFTkNFX0ZMQUdfSE9MRCwgJnJx LT5mZW5jZS5mbGFncyk7Ci0KLQkvKiBQcmV2ZW50IGZ1cnRoZXIgX19hd2FpdF9leGVjdXRpb24o KSByZWdpc3RlcmluZyBhIGNiLCB0aGVuIGZsdXNoICovCi0Jc2V0X2JpdChJOTE1X0ZFTkNFX0ZM QUdfQUNUSVZFLCAmcnEtPmZlbmNlLmZsYWdzKTsKLQotCXNwaW5fdW5sb2NrX2lycSgmbG9ja2Vk LT5zY2hlZF9lbmdpbmUtPmxvY2spOwotCi0JX19ub3RpZnlfZXhlY3V0ZV9jYl9pbW0ocnEpOwot fQotCiBzdGF0aWMgdm9pZCBfX3JxX2luaXRfd2F0Y2hkb2coc3RydWN0IGk5MTVfcmVxdWVzdCAq cnEpCiB7CiAJcnEtPndhdGNoZG9nLnRpbWVyLmZ1bmN0aW9uID0gTlVMTDsKQEAgLTQwNSw5ICsz NTUsNyBAQCBib29sIGk5MTVfcmVxdWVzdF9yZXRpcmUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEp CiAJICogYWZ0ZXIgcmVtb3ZpbmcgdGhlIGJyZWFkY3J1bWIgYW5kIHNpZ25hbGluZyBpdCwgc28g dGhhdCB3ZSBkbyBub3QKIAkgKiBpbmFkdmVydGVudGx5IGF0dGFjaCB0aGUgYnJlYWRjcnVtYiB0 byBhIGNvbXBsZXRlZCByZXF1ZXN0LgogCSAqLwotCWlmICghbGlzdF9lbXB0eSgmcnEtPnNjaGVk LmxpbmspKQotCQlyZW1vdmVfZnJvbV9lbmdpbmUocnEpOwotCWF0b21pY19kZWMoJnJxLT5jb250 ZXh0LT5ndWNfaWRfcmVmKTsKKwlycS0+ZW5naW5lLT5yZW1vdmVfYWN0aXZlX3JlcXVlc3QocnEp OwogCUdFTV9CVUdfT04oIWxsaXN0X2VtcHR5KCZycS0+ZXhlY3V0ZV9jYikpOwogCiAJX19saXN0 X2RlbF9lbnRyeSgmcnEtPmxpbmspOyAvKiBwb2lzb24gbmVpdGhlciBwcmV2L25leHQgKFJDVSB3 YWxrcykgKi8KQEAgLTUzOCw3ICs0ODYsNyBAQCBfX2F3YWl0X2V4ZWN1dGlvbihzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSwKIAlpZiAobGxpc3RfYWRkKCZjYi0+d29yay5ub2RlLmxsaXN0LCAmc2ln bmFsLT5leGVjdXRlX2NiKSkgewogCQlpZiAoaTkxNV9yZXF1ZXN0X2lzX2FjdGl2ZShzaWduYWwp IHx8CiAJCSAgICBfX3JlcXVlc3RfaW5fZmxpZ2h0KHNpZ25hbCkpCi0JCQlfX25vdGlmeV9leGVj dXRlX2NiX2ltbShzaWduYWwpOworCQkJaTkxNV9yZXF1ZXN0X25vdGlmeV9leGVjdXRlX2NiX2lt bShzaWduYWwpOwogCX0KIAogCXJldHVybiAwOwpAQCAtNjY5LDExICs2MTcsMTUgQEAgYm9vbCBf X2k5MTVfcmVxdWVzdF9zdWJtaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKIAkJCQkg ICAgIHJlcXVlc3QtPnJpbmctPnZhZGRyICsgcmVxdWVzdC0+cG9zdGZpeCk7CiAKIAl0cmFjZV9p OTE1X3JlcXVlc3RfZXhlY3V0ZShyZXF1ZXN0KTsKLQllbmdpbmUtPnNlcmlhbCsrOworCWlmIChl bmdpbmUtPmJ1bXBfc2VyaWFsKQorCQllbmdpbmUtPmJ1bXBfc2VyaWFsKGVuZ2luZSk7CisJZWxz ZQorCQllbmdpbmUtPnNlcmlhbCsrOworCiAJcmVzdWx0ID0gdHJ1ZTsKIAogCUdFTV9CVUdfT04o dGVzdF9iaXQoSTkxNV9GRU5DRV9GTEFHX0FDVElWRSwgJnJlcXVlc3QtPmZlbmNlLmZsYWdzKSk7 Ci0JbGlzdF9tb3ZlX3RhaWwoJnJlcXVlc3QtPnNjaGVkLmxpbmssICZlbmdpbmUtPnNjaGVkX2Vu Z2luZS0+cmVxdWVzdHMpOworCWVuZ2luZS0+YWRkX2FjdGl2ZV9yZXF1ZXN0KHJlcXVlc3QpOwog YWN0aXZlOgogCWNsZWFyX2JpdChJOTE1X0ZFTkNFX0ZMQUdfUFFVRVVFLCAmcmVxdWVzdC0+ZmVu Y2UuZmxhZ3MpOwogCXNldF9iaXQoSTkxNV9GRU5DRV9GTEFHX0FDVElWRSwgJnJlcXVlc3QtPmZl bmNlLmZsYWdzKTsKQEAgLTc2MSwxOCArNzEzLDYgQEAgdm9pZCBpOTE1X3JlcXVlc3RfdW5zdWJt aXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKIAlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZlbmdpbmUtPnNjaGVkX2VuZ2luZS0+bG9jaywgZmxhZ3MpOwogfQogCi1zdGF0aWMgdm9pZCBf X2NhbmNlbF9yZXF1ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQotewotCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSA9IE5VTEw7Ci0KLQlpOTE1X3JlcXVlc3RfYWN0aXZlX2VuZ2lu ZShycSwgJmVuZ2luZSk7Ci0KLQlpZiAoZW5naW5lICYmIGludGVsX2VuZ2luZV9wdWxzZShlbmdp bmUpKQotCQlpbnRlbF9ndF9oYW5kbGVfZXJyb3IoZW5naW5lLT5ndCwgZW5naW5lLT5tYXNrLCAw LAotCQkJCSAgICAgICJyZXF1ZXN0IGNhbmNlbGxhdGlvbiBieSAlcyIsCi0JCQkJICAgICAgY3Vy cmVudC0+Y29tbSk7Ci19Ci0KIHZvaWQgaTkxNV9yZXF1ZXN0X2NhbmNlbChzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycSwgaW50IGVycm9yKQogewogCWlmICghaTkxNV9yZXF1ZXN0X3NldF9lcnJvcl9v bmNlKHJxLCBlcnJvcikpCkBAIC03ODAsNyArNzIwLDcgQEAgdm9pZCBpOTE1X3JlcXVlc3RfY2Fu Y2VsKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBpbnQgZXJyb3IpCiAKIAlzZXRfYml0KEk5MTVf RkVOQ0VfRkxBR19TRU5USU5FTCwgJnJxLT5mZW5jZS5mbGFncyk7CiAKLQlfX2NhbmNlbF9yZXF1 ZXN0KHJxKTsKKwlpbnRlbF9jb250ZXh0X2NhbmNlbF9yZXF1ZXN0KHJxLT5jb250ZXh0LCBycSk7 CiB9CiAKIHN0YXRpYyBpbnQgX19pOTE1X3N3X2ZlbmNlX2NhbGwKQEAgLTk1Miw3ICs4OTIsMTkg QEAgX19pOTE1X3JlcXVlc3RfY3JlYXRlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgZ2ZwX3Qg Z2ZwKQogCQl9CiAJfQogCi0JcnEtPmNvbnRleHQgPSBjZTsKKwkvKgorCSAqIEhvbGQgYSByZWZl cmVuY2UgdG8gdGhlIGludGVsX2NvbnRleHQgb3ZlciBsaWZlIG9mIGFuIGk5MTVfcmVxdWVzdC4K KwkgKiBXaXRob3V0IHRoaXMgYW4gaTkxNV9yZXF1ZXN0IGNhbiBleGlzdCBhZnRlciB0aGUgY29u dGV4dCBoYXMgYmVlbgorCSAqIGRlc3Ryb3llZCAoZS5nLiByZXF1ZXN0IHJldGlyZWQsIGNvbnRl eHQgY2xvc2VkLCBidXQgdXNlciBzcGFjZSBob2xkcworCSAqIGEgcmVmZXJlbmNlIHRvIHRoZSBy ZXF1ZXN0IGZyb20gYW4gb3V0IGZlbmNlKS4gSW4gdGhlIGNhc2Ugb2YgR3VDCisJICogc3VibWlz c2lvbiArIHZpcnR1YWwgZW5naW5lLCB0aGUgZW5naW5lIHRoYXQgdGhlIHJlcXVlc3QgcmVmZXJl bmNlcworCSAqIGlzIGFsc28gZGVzdHJveWVkIHdoaWNoIGNhbiB0cmlnZ2VyIGJhZCBwb2ludGVy IGRyZWYgaW4gZmVuY2Ugb3BzCisJICogKGUuZy4gaTkxNV9mZW5jZV9nZXRfZHJpdmVyX25hbWUp LiBXZSBjb3VsZCBsaWtlbHkgY2hhbmdlIHRoZXNlCisJICogZnVuY3Rpb25zIHRvIGF2b2lkIHRv dWNoaW5nIHRoZSBlbmdpbmUgYnV0IGxldCdzIGp1c3QgYmUgc2FmZSBhbmQKKwkgKiBob2xkIHRo ZSBpbnRlbF9jb250ZXh0IHJlZmVyZW5jZS4gSW4gZXhlY2xpc3QgbW9kZSB0aGUgcmVxdWVzdCBh bHdheXMKKwkgKiBldmVudHVhbGx5IHBvaW50cyB0byBhIHBoeXNpY2FsIGVuZ2luZSBzbyB0aGlz IGlzbid0IGFuIGlzc3VlLgorCSAqLworCXJxLT5jb250ZXh0ID0gaW50ZWxfY29udGV4dF9nZXQo Y2UpOwogCXJxLT5lbmdpbmUgPSBjZS0+ZW5naW5lOwogCXJxLT5yaW5nID0gY2UtPnJpbmc7CiAJ cnEtPmV4ZWN1dGlvbl9tYXNrID0gY2UtPmVuZ2luZS0+bWFzazsKQEAgLTk3NSw2ICs5MjcsOCBA QCBfX2k5MTVfcmVxdWVzdF9jcmVhdGUoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLCBnZnBfdCBn ZnApCiAKIAlycS0+cmN1c3RhdGUgPSBnZXRfc3RhdGVfc3luY2hyb25pemVfcmN1KCk7IC8qIGFj dHMgYXMgc21wX21iKCkgKi8KIAorCXJxLT5ndWNfcHJpbyA9IEdVQ19QUklPX0lOSVQ7CisKIAkv KiBXZSBidW1wIHRoZSByZWYgZm9yIHRoZSBmZW5jZSBjaGFpbiAqLwogCWk5MTVfc3dfZmVuY2Vf cmVpbml0KCZpOTE1X3JlcXVlc3RfZ2V0KHJxKS0+c3VibWl0KTsKIAlpOTE1X3N3X2ZlbmNlX3Jl aW5pdCgmaTkxNV9yZXF1ZXN0X2dldChycSktPnNlbWFwaG9yZSk7CkBAIC0xMDI5LDYgKzk4Myw3 IEBAIF9faTkxNV9yZXF1ZXN0X2NyZWF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIGdmcF90 IGdmcCkKIAlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZycS0+c2NoZWQud2FpdGVyc19saXN0KSk7 CiAKIGVycl9mcmVlOgorCWludGVsX2NvbnRleHRfcHV0KGNlKTsKIAlrbWVtX2NhY2hlX2ZyZWUo Z2xvYmFsLnNsYWJfcmVxdWVzdHMsIHJxKTsKIGVycl91bnJlc2VydmU6CiAJaW50ZWxfY29udGV4 dF91bnBpbihjZSk7CkBAIC0yMDc5LDYgKzIwMzQsNDcgQEAgdm9pZCBpOTE1X3JlcXVlc3Rfc2hv dyhzdHJ1Y3QgZHJtX3ByaW50ZXIgKm0sCiAJCSAgIG5hbWUpOwogfQogCitzdGF0aWMgYm9vbCBl bmdpbmVfbWF0Y2hfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxKQoreworCXUzMiByaW5nID0gRU5HSU5FX1JFQUQoZW5naW5lLCBSSU5H X1NUQVJUKTsKKworCXJldHVybiByaW5nID09IGk5MTVfZ2d0dF9vZmZzZXQocnEtPnJpbmctPnZt YSk7Cit9CisKK3N0YXRpYyBib29sIG1hdGNoX3Jpbmcoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEp Cit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCWJvb2wgZm91bmQ7CisJaW50 IGk7CisKKwlpZiAoIWludGVsX2VuZ2luZV9pc192aXJ0dWFsKHJxLT5lbmdpbmUpKQorCQlyZXR1 cm4gZW5naW5lX21hdGNoX3JpbmcocnEtPmVuZ2luZSwgcnEpOworCisJZm91bmQgPSBmYWxzZTsK KwlpID0gMDsKKwl3aGlsZSAoKGVuZ2luZSA9IGludGVsX2VuZ2luZV9nZXRfc2libGluZyhycS0+ ZW5naW5lLCBpKyspKSkgeworCQlmb3VuZCA9IGVuZ2luZV9tYXRjaF9yaW5nKGVuZ2luZSwgcnEp OworCQlpZiAoZm91bmQpCisJCQlicmVhazsKKwl9CisKKwlyZXR1cm4gZm91bmQ7Cit9CisKK2Vu dW0gaTkxNV9yZXF1ZXN0X3N0YXRlIGk5MTVfdGVzdF9yZXF1ZXN0X3N0YXRlKHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxKQoreworCWlmIChpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSkKKwkJcmV0 dXJuIEk5MTVfUkVRVUVTVF9DT01QTEVURTsKKworCWlmICghaTkxNV9yZXF1ZXN0X3N0YXJ0ZWQo cnEpKQorCQlyZXR1cm4gSTkxNV9SRVFVRVNUX1BFTkRJTkc7CisKKwlpZiAobWF0Y2hfcmluZyhy cSkpCisJCXJldHVybiBJOTE1X1JFUVVFU1RfQUNUSVZFOworCisJcmV0dXJuIEk5MTVfUkVRVUVT VF9RVUVVRUQ7Cit9CisKICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkK ICNpbmNsdWRlICJzZWxmdGVzdHMvbW9ja19yZXF1ZXN0LmMiCiAjaW5jbHVkZSAic2VsZnRlc3Rz L2k5MTVfcmVxdWVzdC5jIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZXF1ZXN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAppbmRleCA3MTdl NWIyOTIwNDYuLmU2YTBlMGViYzlhYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZXF1ZXN0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgK QEAgLTI5Myw2ICsyOTMsMTUgQEAgc3RydWN0IGk5MTVfcmVxdWVzdCB7CiAJICovCiAJc3RydWN0 IGxpc3RfaGVhZCBndWNfZmVuY2VfbGluazsKIAorCS8qKgorCSAqIFByaW9yaXR5IGxldmVsIHdo aWxlIHRoZSByZXF1ZXN0IGlzIGluZmxpZ2h0LiBEaWZmZXJzIGZyb20gaTkxNQorCSAqIHNjaGVk dWxlciBwcmlvcml0eS4gU2VlIGNvbW1lbnQgYWJvdmUKKwkgKiBJOTE1X1NDSEVEVUxFUl9DQVBf U1RBVElDX1BSSU9SSVRZX01BUCBmb3IgZGV0YWlscy4KKwkgKi8KKyNkZWZpbmUJR1VDX1BSSU9f SU5JVAkweGZmCisjZGVmaW5lCUdVQ19QUklPX0ZJTkkJMHhmZQorCXU4IGd1Y19wcmlvOworCiAJ STkxNV9TRUxGVEVTVF9ERUNMQVJFKHN0cnVjdCB7CiAJCXN0cnVjdCBsaXN0X2hlYWQgbGluazsK IAkJdW5zaWduZWQgbG9uZyBkZWxheTsKQEAgLTY0Nyw0ICs2NTYsMTYgQEAgYm9vbAogaTkxNV9y ZXF1ZXN0X2FjdGl2ZV9lbmdpbmUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCiAJCQkgICBzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICoqYWN0aXZlKTsKIAordm9pZCBpOTE1X3JlcXVlc3Rfbm90aWZ5 X2V4ZWN1dGVfY2JfaW1tKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKTsKKworZW51bSBpOTE1X3Jl cXVlc3Rfc3RhdGUgeworCUk5MTVfUkVRVUVTVF9VTktOT1dOID0gMCwKKwlJOTE1X1JFUVVFU1Rf Q09NUExFVEUsCisJSTkxNV9SRVFVRVNUX1BFTkRJTkcsCisJSTkxNV9SRVFVRVNUX1FVRVVFRCwK KwlJOTE1X1JFUVVFU1RfQUNUSVZFLAorfTsKKworZW51bSBpOTE1X3JlcXVlc3Rfc3RhdGUgaTkx NV90ZXN0X3JlcXVlc3Rfc3RhdGUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpOworCiAjZW5kaWYg LyogSTkxNV9SRVFVRVNUX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfc2NoZWR1bGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jCmlu ZGV4IDU2MWM2NDllNTlmNy4uMTc4NDNjMjA0MzU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf c2NoZWR1bGVyLmMKQEAgLTI0MSw2ICsyNDEsOSBAQCBzdGF0aWMgdm9pZCBfX2k5MTVfc2NoZWR1 bGUoc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSwKIAkvKiBGaWZvIGFuZCBkZXB0aC1maXJz dCByZXBsYWNlbWVudCBlbnN1cmUgb3VyIGRlcHMgZXhlY3V0ZSBiZWZvcmUgdXMgKi8KIAlzY2hl ZF9lbmdpbmUgPSBsb2NrX3NjaGVkX2VuZ2luZShub2RlLCBzY2hlZF9lbmdpbmUsICZjYWNoZSk7 CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlX3JldmVyc2UoZGVwLCBwLCAmZGZzLCBkZnNfbGlu aykgeworCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpmcm9tID0gY29udGFpbmVyX29mKGRlcC0+c2ln bmFsZXIsCisJCQkJCQkJIHN0cnVjdCBpOTE1X3JlcXVlc3QsCisJCQkJCQkJIHNjaGVkKTsKIAkJ SU5JVF9MSVNUX0hFQUQoJmRlcC0+ZGZzX2xpbmspOwogCiAJCW5vZGUgPSBkZXAtPnNpZ25hbGVy OwpAQCAtMjU0LDYgKzI1NywxMCBAQCBzdGF0aWMgdm9pZCBfX2k5MTVfc2NoZWR1bGUoc3RydWN0 IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSwKIAkJR0VNX0JVR19PTihub2RlX3RvX3JlcXVlc3Qobm9k ZSktPmVuZ2luZS0+c2NoZWRfZW5naW5lICE9CiAJCQkgICBzY2hlZF9lbmdpbmUpOwogCisJCS8q IE11c3QgYmUgY2FsbGVkIGJlZm9yZSBjaGFuZ2luZyB0aGUgbm9kZXMgcHJpb3JpdHkgKi8KKwkJ aWYgKHNjaGVkX2VuZ2luZS0+YnVtcF9pbmZsaWdodF9yZXF1ZXN0X3ByaW8pCisJCQlzY2hlZF9l bmdpbmUtPmJ1bXBfaW5mbGlnaHRfcmVxdWVzdF9wcmlvKGZyb20sIHByaW8pOworCiAJCVdSSVRF X09OQ0Uobm9kZS0+YXR0ci5wcmlvcml0eSwgcHJpbyk7CiAKIAkJLyoKQEAgLTQzMSw3ICs0Mzgs NyBAQCB2b2lkIGk5MTVfcmVxdWVzdF9zaG93X3dpdGhfc2NoZWR1bGUoc3RydWN0IGRybV9wcmlu dGVyICptLAogCXJjdV9yZWFkX3VubG9jaygpOwogfQogCi12b2lkIGk5MTVfc2NoZWRfZW5naW5l X2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCitzdGF0aWMgdm9pZCBkZWZhdWx0X2Rlc3Ryb3koc3Ry dWN0IGtyZWYgKmtyZWYpCiB7CiAJc3RydWN0IGk5MTVfc2NoZWRfZW5naW5lICpzY2hlZF9lbmdp bmUgPQogCQljb250YWluZXJfb2Yoa3JlZiwgdHlwZW9mKCpzY2hlZF9lbmdpbmUpLCByZWYpOwpA QCAtNDQwLDYgKzQ0NywxMSBAQCB2b2lkIGk5MTVfc2NoZWRfZW5naW5lX2ZyZWUoc3RydWN0IGty ZWYgKmtyZWYpCiAJa2ZyZWUoc2NoZWRfZW5naW5lKTsKIH0KIAorc3RhdGljIGJvb2wgZGVmYXVs dF9kaXNhYmxlZChzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKnNjaGVkX2VuZ2luZSkKK3sKKwly ZXR1cm4gZmFsc2U7Cit9CisKIHN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqCiBpOTE1X3NjaGVk X2VuZ2luZV9jcmVhdGUodW5zaWduZWQgaW50IHN1YmNsYXNzKQogewpAQCAtNDUzLDYgKzQ2NSw4 IEBAIGk5MTVfc2NoZWRfZW5naW5lX2NyZWF0ZSh1bnNpZ25lZCBpbnQgc3ViY2xhc3MpCiAKIAlz Y2hlZF9lbmdpbmUtPnF1ZXVlID0gUkJfUk9PVF9DQUNIRUQ7CiAJc2NoZWRfZW5naW5lLT5xdWV1 ZV9wcmlvcml0eV9oaW50ID0gSU5UX01JTjsKKwlzY2hlZF9lbmdpbmUtPmRlc3Ryb3kgPSBkZWZh dWx0X2Rlc3Ryb3k7CisJc2NoZWRfZW5naW5lLT5kaXNhYmxlZCA9IGRlZmF1bHRfZGlzYWJsZWQ7 CiAKIAlJTklUX0xJU1RfSEVBRCgmc2NoZWRfZW5naW5lLT5yZXF1ZXN0cyk7CiAJSU5JVF9MSVNU X0hFQUQoJnNjaGVkX2VuZ2luZS0+aG9sZCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3NjaGVkdWxlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVs ZXIuaAppbmRleCA2NTBhYjhlMGRiOWYuLmY0ZDk4MTFhZGU1YiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3NjaGVkdWxlci5oCkBAIC01MSw4ICs1MSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBp OTE1X3ByaW9saXN0X2ZyZWUoc3RydWN0IGk5MTVfcHJpb2xpc3QgKnApCiBzdHJ1Y3QgaTkxNV9z Y2hlZF9lbmdpbmUgKgogaTkxNV9zY2hlZF9lbmdpbmVfY3JlYXRlKHVuc2lnbmVkIGludCBzdWJj bGFzcyk7CiAKLXZvaWQgaTkxNV9zY2hlZF9lbmdpbmVfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZik7 Ci0KIHN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfc2NoZWRfZW5naW5lICoKIGk5MTVfc2NoZWRf ZW5naW5lX2dldChzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKnNjaGVkX2VuZ2luZSkKIHsKQEAg LTYzLDcgKzYxLDcgQEAgaTkxNV9zY2hlZF9lbmdpbmVfZ2V0KHN0cnVjdCBpOTE1X3NjaGVkX2Vu Z2luZSAqc2NoZWRfZW5naW5lKQogc3RhdGljIGlubGluZSB2b2lkCiBpOTE1X3NjaGVkX2VuZ2lu ZV9wdXQoc3RydWN0IGk5MTVfc2NoZWRfZW5naW5lICpzY2hlZF9lbmdpbmUpCiB7Ci0Ja3JlZl9w dXQoJnNjaGVkX2VuZ2luZS0+cmVmLCBpOTE1X3NjaGVkX2VuZ2luZV9mcmVlKTsKKwlrcmVmX3B1 dCgmc2NoZWRfZW5naW5lLT5yZWYsIHNjaGVkX2VuZ2luZS0+ZGVzdHJveSk7CiB9CiAKIHN0YXRp YyBpbmxpbmUgYm9vbApAQCAtOTgsNCArOTYsMTAgQEAgdm9pZCBpOTE1X3JlcXVlc3Rfc2hvd193 aXRoX3NjaGVkdWxlKHN0cnVjdCBkcm1fcHJpbnRlciAqbSwKIAkJCQkgICAgIGNvbnN0IGNoYXIg KnByZWZpeCwKIAkJCQkgICAgIGludCBpbmRlbnQpOwogCitzdGF0aWMgaW5saW5lIGJvb2wKK2k5 MTVfc2NoZWRfZW5naW5lX2Rpc2FibGVkKHN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqc2NoZWRf ZW5naW5lKQoreworCXJldHVybiBzY2hlZF9lbmdpbmUtPmRpc2FibGVkKHNjaGVkX2VuZ2luZSk7 Cit9CisKICNlbmRpZiAvKiBfSTkxNV9TQ0hFRFVMRVJfSF8gKi8KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyX3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3NjaGVkdWxlcl90eXBlcy5oCmluZGV4IDU5MzVjMzE1MmJkYy4uYjBhMWI1OGM3 ODkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlcl90eXBl cy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyX3R5cGVzLmgKQEAg LTE2MywxMiArMTYzLDM0IEBAIHN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSB7CiAJICovCiAJdm9p ZCAqcHJpdmF0ZV9kYXRhOwogCisJLyoqCisJICogQGRlc3Ryb3k6IGRlc3Ryb3kgc2NoZWR1bGUg ZW5naW5lIC8gY2xlYW51cCBpbiBiYWNrZW5kCisJICovCisJdm9pZAkoKmRlc3Ryb3kpKHN0cnVj dCBrcmVmICprcmVmKTsKKworCS8qKgorCSAqIEBkaXNhYmxlZDogY2hlY2sgaWYgYmFja2VuZCBo YXMgZGlzYWJsZWQgc3VibWlzc2lvbgorCSAqLworCWJvb2wJKCpkaXNhYmxlZCkoc3RydWN0IGk5 MTVfc2NoZWRfZW5naW5lICpzY2hlZF9lbmdpbmUpOworCiAJLyoqCiAJICogQGtpY2tfYmFja2Vu ZDoga2ljayBiYWNrZW5kIGFmdGVyIGEgcmVxdWVzdCdzIHByaW9yaXR5IGhhcyBjaGFuZ2VkCiAJ ICovCiAJdm9pZAkoKmtpY2tfYmFja2VuZCkoY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEs CiAJCQkJaW50IHByaW8pOwogCisJLyoqCisJICogQGJ1bXBfaW5mbGlnaHRfcmVxdWVzdF9wcmlv OiB1cGRhdGUgcHJpb3JpdHkgb2YgYW4gaW5mbGlnaHQgcmVxdWVzdAorCSAqLworCXZvaWQJKCpi dW1wX2luZmxpZ2h0X3JlcXVlc3RfcHJpbykoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCisJCQkJ CSAgICAgIGludCBwcmlvKTsKKworCS8qKgorCSAqIEByZXRpcmVfaW5mbGlnaHRfcmVxdWVzdF9w cmlvOiBpbmRpY2F0ZSByZXF1ZXN0IGlzIHJldGlyZWQgdG8KKwkgKiBwcmlvcml0eSB0cmFja2lu ZworCSAqLworCXZvaWQJKCpyZXRpcmVfaW5mbGlnaHRfcmVxdWVzdF9wcmlvKShzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSk7CisKIAkvKioKIAkgKiBAc2NoZWR1bGU6IGFkanVzdCBwcmlvcml0eSBv ZiByZXF1ZXN0CiAJICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHJh Y2UuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHJhY2UuaAppbmRleCA2OGI3MDYyNmMz ZTIuLjgwNmFkNjg4Mjc0YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90 cmFjZS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHJhY2UuaApAQCAtOTA0LDYg KzkwNCw3IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoaW50ZWxfY29udGV4dCwKIAkJCSAgICAgX19m aWVsZChpbnQsIHBpbl9jb3VudCkKIAkJCSAgICAgX19maWVsZCh1MzIsIHNjaGVkX3N0YXRlKQog CQkJICAgICBfX2ZpZWxkKHUzMiwgZ3VjX3NjaGVkX3N0YXRlX25vX2xvY2spCisJCQkgICAgIF9f ZmllbGQodTgsIGd1Y19wcmlvKQogCQkJICAgICApLAogCiAJCSAgICBUUF9mYXN0X2Fzc2lnbigK QEAgLTkxMiwxMiArOTEzLDI5IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoaW50ZWxfY29udGV4dCwK IAkJCSAgIF9fZW50cnktPnNjaGVkX3N0YXRlID0gY2UtPmd1Y19zdGF0ZS5zY2hlZF9zdGF0ZTsK IAkJCSAgIF9fZW50cnktPmd1Y19zY2hlZF9zdGF0ZV9ub19sb2NrID0KIAkJCSAgIGF0b21pY19y ZWFkKCZjZS0+Z3VjX3NjaGVkX3N0YXRlX25vX2xvY2spOworCQkJICAgX19lbnRyeS0+Z3VjX3By aW8gPSBjZS0+Z3VjX3ByaW87CiAJCQkgICApLAogCi0JCSAgICBUUF9wcmludGsoImd1Y19pZD0l ZCwgcGluX2NvdW50PSVkIHNjaGVkX3N0YXRlPTB4JXgsMHgleCIsCisJCSAgICBUUF9wcmludGso Imd1Y19pZD0lZCwgcGluX2NvdW50PSVkIHNjaGVkX3N0YXRlPTB4JXgsMHgleCwgZ3VjX3ByaW89 JXUiLAogCQkJICAgICAgX19lbnRyeS0+Z3VjX2lkLCBfX2VudHJ5LT5waW5fY291bnQsCiAJCQkg ICAgICBfX2VudHJ5LT5zY2hlZF9zdGF0ZSwKLQkJCSAgICAgIF9fZW50cnktPmd1Y19zY2hlZF9z dGF0ZV9ub19sb2NrKQorCQkJICAgICAgX19lbnRyeS0+Z3VjX3NjaGVkX3N0YXRlX25vX2xvY2ss CisJCQkgICAgICBfX2VudHJ5LT5ndWNfcHJpbykKKyk7CisKK0RFRklORV9FVkVOVChpbnRlbF9j b250ZXh0LCBpbnRlbF9jb250ZXh0X3NldF9wcmlvLAorCSAgICAgVFBfUFJPVE8oc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlKSwKKwkgICAgIFRQX0FSR1MoY2UpCispOworCitERUZJTkVfRVZFTlQo aW50ZWxfY29udGV4dCwgaW50ZWxfY29udGV4dF9yZXNldCwKKwkgICAgIFRQX1BST1RPKHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSksCisJICAgICBUUF9BUkdTKGNlKQorKTsKKworREVGSU5FX0VW RU5UKGludGVsX2NvbnRleHQsIGludGVsX2NvbnRleHRfYmFuLAorCSAgICAgVFBfUFJPVE8oc3Ry dWN0IGludGVsX2NvbnRleHQgKmNlKSwKKwkgICAgIFRQX0FSR1MoY2UpCiApOwogCiBERUZJTkVf RVZFTlQoaW50ZWxfY29udGV4dCwgaW50ZWxfY29udGV4dF9yZWdpc3RlciwKQEAgLTEwMDcsNiAr MTAyNSwyMSBAQCB0cmFjZV9pOTE1X3JlcXVlc3Rfb3V0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx KQogewogfQogCitzdGF0aWMgaW5saW5lIHZvaWQKK3RyYWNlX2ludGVsX2NvbnRleHRfc2V0X3By aW8oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworfQorCitzdGF0aWMgaW5saW5lIHZvaWQK K3RyYWNlX2ludGVsX2NvbnRleHRfcmVzZXQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQorewor fQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3RyYWNlX2ludGVsX2NvbnRleHRfYmFuKHN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZSkKK3sKK30KKwogc3RhdGljIGlubGluZSB2b2lkCiB0cmFjZV9pbnRl bF9jb250ZXh0X3JlZ2lzdGVyKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIHsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYwppbmRleCBiZDVjOTZhNzdi YTMuLmQ2NzcxMGQxMDYxNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2k5MTVfcmVxdWVzdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p OTE1X3JlcXVlc3QuYwpAQCAtMTMxMyw3ICsxMzEzLDcgQEAgc3RhdGljIGludCBfX2xpdmVfcGFy YWxsZWxfZW5naW5lMSh2b2lkICphcmcpCiAJCWk5MTVfcmVxdWVzdF9hZGQocnEpOwogCiAJCWVy ciA9IDA7Ci0JCWlmIChpOTE1X3JlcXVlc3Rfd2FpdChycSwgMCwgSFogLyA1KSA8IDApCisJCWlm IChpOTE1X3JlcXVlc3Rfd2FpdChycSwgMCwgSFopIDwgMCkKIAkJCWVyciA9IC1FVElNRTsKIAkJ aTkxNV9yZXF1ZXN0X3B1dChycSk7CiAJCWlmIChlcnIpCkBAIC0xNDE5LDcgKzE0MTksNyBAQCBz dGF0aWMgaW50IF9fbGl2ZV9wYXJhbGxlbF9zcGluKHZvaWQgKmFyZykKIAl9CiAJaWd0X3NwaW5u ZXJfZW5kKCZzcGluKTsKIAotCWlmIChlcnIgPT0gMCAmJiBpOTE1X3JlcXVlc3Rfd2FpdChycSwg MCwgSFogLyA1KSA8IDApCisJaWYgKGVyciA9PSAwICYmIGk5MTVfcmVxdWVzdF93YWl0KHJxLCAw LCBIWikgPCAwKQogCQllcnIgPSAtRUlPOwogCWk5MTVfcmVxdWVzdF9wdXQocnEpOwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X2ZsdXNoX3Rlc3QuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5jCmluZGV4IDdi MDkzOWUzZjAwNy4uYTZjNzFmY2E2MWFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaWd0X2ZsdXNoX3Rlc3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvaWd0X2ZsdXNoX3Rlc3QuYwpAQCAtMTksNyArMTksNyBAQCBpbnQgaWd0X2ZsdXNo X3Rlc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAKIAljb25kX3Jlc2NoZWQoKTsK IAotCWlmIChpbnRlbF9ndF93YWl0X2Zvcl9pZGxlKGd0LCBIWiAvIDUpID09IC1FVElNRSkgewor CWlmIChpbnRlbF9ndF93YWl0X2Zvcl9pZGxlKGd0LCBIWikgPT0gLUVUSU1FKSB7CiAJCXByX2Vy cigiJXBTIHRpbWVkIG91dCwgY2FuY2VsbGluZyBhbGwgZnVydGhlciB0ZXN0aW5nLlxuIiwKIAkJ ICAgICAgIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9zY2hlZHVsZXJfaGVscGVycy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3NjaGVkdWxlcl9oZWxwZXJzLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40YjMyODM0NmI0OGEKLS0tIC9k ZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfc2NoZWR1 bGVyX2hlbHBlcnMuYwpAQCAtMCwwICsxLDg4IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogTUlUCisvKgorICogQ29weXJpZ2h0IMKpIDIwMjEgSW50ZWwgQ29ycG9yYXRpb24KKyAqLwor CisvLyNpbmNsdWRlICJndC9pbnRlbF9lbmdpbmVfdXNlci5oIgorI2luY2x1ZGUgImd0L2ludGVs X2d0LmgiCisjaW5jbHVkZSAiaTkxNV9kcnYuaCIKKyNpbmNsdWRlICJpOTE1X3NlbGZ0ZXN0Lmgi CisKKyNpbmNsdWRlICJzZWxmdGVzdHMvaW50ZWxfc2NoZWR1bGVyX2hlbHBlcnMuaCIKKworI2Rl ZmluZSBSRURVQ0VEX1RJTUVTTElDRQk1CisjZGVmaW5lIFJFRFVDRURfUFJFRU1QVAkJMTAKKyNk ZWZpbmUgV0FJVF9GT1JfUkVTRVRfVElNRQkxMDAwMAorCitpbnQgaW50ZWxfc2VsZnRlc3RfbW9k aWZ5X3BvbGljeShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkJIHN0cnVjdCBp bnRlbF9zZWxmdGVzdF9zYXZlZF9wb2xpY3kgKnNhdmVkLAorCQkJCSB1MzIgbW9kaWZ5X3R5cGUp CisKK3sKKwlpbnQgZXJyOworCisJc2F2ZWQtPnJlc2V0ID0gZW5naW5lLT5pOTE1LT5wYXJhbXMu cmVzZXQ7CisJc2F2ZWQtPmZsYWdzID0gZW5naW5lLT5mbGFnczsKKwlzYXZlZC0+dGltZXNsaWNl ID0gZW5naW5lLT5wcm9wcy50aW1lc2xpY2VfZHVyYXRpb25fbXM7CisJc2F2ZWQtPnByZWVtcHRf dGltZW91dCA9IGVuZ2luZS0+cHJvcHMucHJlZW1wdF90aW1lb3V0X21zOworCisJc3dpdGNoICht b2RpZnlfdHlwZSkgeworCWNhc2UgU0VMRlRFU1RfU0NIRURVTEVSX01PRElGWV9GQVNUX1JFU0VU OgorCQkvKgorCQkgKiBFbmFibGUgZm9yY2UgcHJlLWVtcHRpb24gb24gdGltZSBzbGljZSBleHBp cmF0aW9uCisJCSAqIHRvZ2V0aGVyIHdpdGggZW5naW5lIHJlc2V0IG9uIHByZS1lbXB0aW9uIHRp bWVvdXQuCisJCSAqIFRoaXMgaXMgcmVxdWlyZWQgdG8gbWFrZSB0aGUgR3VDIG5vdGljZSBhbmQg cmVzZXQKKwkJICogdGhlIHNpbmdsZSBoYW5naW5nIGNvbnRleHQuCisJCSAqIEFsc28sIHJlZHVj ZSB0aGUgcHJlZW1wdGlvbiB0aW1lb3V0IHRvIHNvbWV0aGluZworCQkgKiBzbWFsbCB0byBzcGVl ZCB0aGUgdGVzdCB1cC4KKwkJICovCisJCWVuZ2luZS0+aTkxNS0+cGFyYW1zLnJlc2V0ID0gMjsK KwkJZW5naW5lLT5mbGFncyB8PSBJOTE1X0VOR0lORV9XQU5UX0ZPUkNFRF9QUkVFTVBUSU9OOwor CQllbmdpbmUtPnByb3BzLnRpbWVzbGljZV9kdXJhdGlvbl9tcyA9IFJFRFVDRURfVElNRVNMSUNF OworCQllbmdpbmUtPnByb3BzLnByZWVtcHRfdGltZW91dF9tcyA9IFJFRFVDRURfUFJFRU1QVDsK KwkJYnJlYWs7CisKKwljYXNlIFNFTEZURVNUX1NDSEVEVUxFUl9NT0RJRllfTk9fSEFOR0NIRUNL OgorCQllbmdpbmUtPnByb3BzLnByZWVtcHRfdGltZW91dF9tcyA9IDA7CisJCWJyZWFrOworCisJ ZGVmYXVsdDoKKwkJcHJfZXJyKCJJbnZhbGlkIHNjaGVkdWxlciBwb2xpY3kgbW9kaWZpY2F0aW9u IHR5cGU6ICVkIVxuIiwgbW9kaWZ5X3R5cGUpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlp ZiAoIWludGVsX2VuZ2luZV91c2VzX2d1YyhlbmdpbmUpKQorCQlyZXR1cm4gMDsKKworCWVyciA9 IGludGVsX2d1Y19nbG9iYWxfcG9saWNpZXNfdXBkYXRlKCZlbmdpbmUtPmd0LT51Yy5ndWMpOwor CWlmIChlcnIpCisJCWludGVsX3NlbGZ0ZXN0X3Jlc3RvcmVfcG9saWN5KGVuZ2luZSwgc2F2ZWQp OworCisJcmV0dXJuIGVycjsKK30KKworaW50IGludGVsX3NlbGZ0ZXN0X3Jlc3RvcmVfcG9saWN5 KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCQkgIHN0cnVjdCBpbnRlbF9zZWxm dGVzdF9zYXZlZF9wb2xpY3kgKnNhdmVkKQoreworCS8qIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHBv bGljaWVzICovCisJZW5naW5lLT5pOTE1LT5wYXJhbXMucmVzZXQgPSBzYXZlZC0+cmVzZXQ7CisJ ZW5naW5lLT5mbGFncyA9IHNhdmVkLT5mbGFnczsKKwllbmdpbmUtPnByb3BzLnRpbWVzbGljZV9k dXJhdGlvbl9tcyA9IHNhdmVkLT50aW1lc2xpY2U7CisJZW5naW5lLT5wcm9wcy5wcmVlbXB0X3Rp bWVvdXRfbXMgPSBzYXZlZC0+cHJlZW1wdF90aW1lb3V0OworCisJaWYgKCFpbnRlbF9lbmdpbmVf dXNlc19ndWMoZW5naW5lKSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gaW50ZWxfZ3VjX2dsb2Jh bF9wb2xpY2llc191cGRhdGUoJmVuZ2luZS0+Z3QtPnVjLmd1Yyk7Cit9CisKK2ludCBpbnRlbF9z ZWxmdGVzdF93YWl0X2Zvcl9ycShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3sKKwlsb25nIHJl dDsKKworCXJldCA9IGk5MTVfcmVxdWVzdF93YWl0KHJxLCAwLCBXQUlUX0ZPUl9SRVNFVF9USU1F KTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJldHVybiAwOworfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3NjaGVkdWxlcl9oZWxw ZXJzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfc2NoZWR1bGVyX2hl bHBlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjM1YzA5ODYw MWFjMAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p bnRlbF9zY2hlZHVsZXJfaGVscGVycy5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBNSVQgKi8KKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAyMSBJbnRlbCBDb3Jw b3JhdGlvbgorICovCisKKyNpZm5kZWYgX0lOVEVMX1NFTEZURVNUX1NDSEVEVUxFUl9IRUxQRVJT X0hfCisjZGVmaW5lIF9JTlRFTF9TRUxGVEVTVF9TQ0hFRFVMRVJfSEVMUEVSU19IXworCisjaW5j bHVkZSA8bGludXgvdHlwZXMuaD4KKworc3RydWN0IGk5MTVfcmVxdWVzdDsKK3N0cnVjdCBpbnRl bF9lbmdpbmVfY3M7CisKK3N0cnVjdCBpbnRlbF9zZWxmdGVzdF9zYXZlZF9wb2xpY3kgeworCXUz MiBmbGFnczsKKwl1MzIgcmVzZXQ7CisJdTY0IHRpbWVzbGljZTsKKwl1NjQgcHJlZW1wdF90aW1l b3V0OworfTsKKworZW51bSBzZWxmdGVzdF9zY2hlZHVsZXJfbW9kaWZ5IHsKKwlTRUxGVEVTVF9T Q0hFRFVMRVJfTU9ESUZZX05PX0hBTkdDSEVDSyA9IDAsCisJU0VMRlRFU1RfU0NIRURVTEVSX01P RElGWV9GQVNUX1JFU0VULAorfTsKKworaW50IGludGVsX3NlbGZ0ZXN0X21vZGlmeV9wb2xpY3ko c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkJCSBzdHJ1Y3QgaW50ZWxfc2VsZnRl c3Rfc2F2ZWRfcG9saWN5ICpzYXZlZCwKKwkJCQkgZW51bSBzZWxmdGVzdF9zY2hlZHVsZXJfbW9k aWZ5IG1vZGlmeV90eXBlKTsKK2ludCBpbnRlbF9zZWxmdGVzdF9yZXN0b3JlX3BvbGljeShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkJICBzdHJ1Y3QgaW50ZWxfc2VsZnRlc3Rf c2F2ZWRfcG9saWN5ICpzYXZlZCk7CitpbnQgaW50ZWxfc2VsZnRlc3Rfd2FpdF9mb3JfcnEoc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFw aS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAppbmRleCA5NzUw ODc1NTNlYTAuLjdmMTNkMjQxNDE3ZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2RybS9pOTE1 X2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaApAQCAtNTcyLDYgKzU3Miwx NSBAQCB0eXBlZGVmIHN0cnVjdCBkcm1faTkxNV9pcnFfd2FpdCB7CiAjZGVmaW5lICAgSTkxNV9T Q0hFRFVMRVJfQ0FQX1BSRUVNUFRJT04JKDF1bCA8PCAyKQogI2RlZmluZSAgIEk5MTVfU0NIRURV TEVSX0NBUF9TRU1BUEhPUkVTCSgxdWwgPDwgMykKICNkZWZpbmUgICBJOTE1X1NDSEVEVUxFUl9D QVBfRU5HSU5FX0JVU1lfU1RBVFMJKDF1bCA8PCA0KQorLyoKKyAqIEluZGljYXRlcyB0aGUgMmsg dXNlciBwcmlvcml0eSBsZXZlbHMgYXJlIHN0YXRpY2FsbHkgbWFwcGVkIGludG8gMyBidWNrZXRz IGFzCisgKiBmb2xsb3dzOgorICoKKyAqIC0xayB0byAtMQlMb3cgcHJpb3JpdHkKKyAqIDAJCU5v cm1hbCBwcmlvcml0eQorICogMSB0byAxawlIaWdoZXN0IHByaW9yaXR5CisgKi8KKyNkZWZpbmUg ICBJOTE1X1NDSEVEVUxFUl9DQVBfU1RBVElDX1BSSU9SSVRZX01BUAkoMXVsIDw8IDUpCiAKICNk ZWZpbmUgSTkxNV9QQVJBTV9IVUNfU1RBVFVTCQkgNDIKIAotLSAKMi4yNS4wCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK