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=-17.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,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 78BBFC433DB for ; Fri, 12 Mar 2021 00:51:58 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 DB17564F82 for ; Fri, 12 Mar 2021 00:51:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DB17564F82 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Cc:To:From:Subject:References:Mime-Version: Message-Id:In-Reply-To:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=DV0mdbAehXv4j4p5zlNDhVCHiFcUGZIzYRL2o8zMeIk=; b=N5ADyDdjZtfaxt Pu0B3ItGDb8NUmWZVF0ZmtFK6sPPk9SOFVHb+bM6EmOXDO8x+V/9ylZD/W6KLhNzKs4fCKg/tUKsn 08iRWF018AGDP+v2DFr6S4twZfC2DmKLXGHldca6otxu4hYrCPkabaBBVLWNFOC7yJb085KoJ7tbw ZF3pFOGyIHfEAOkuz+uYiiIZuxnIkJX96IuIqRJR5HLcdOSB/F0sXsGTquV4Db/H57KPjfsXpvOvm 8YwIgeHeKC7OirvGvcpvhCG3T186fqkMU6Q6rPBjBeO9ScVQqDllREgo8TYEbI6kr5WQL1AX3WxGw FqlMr9vInyrBCBt40kDg==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lKVzy-00AKqh-Tk; Fri, 12 Mar 2021 00:49:51 +0000 Received: from mail-qk1-x749.google.com ([2607:f8b0:4864:20::749]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lKVzb-00AKku-EH for linux-arm-kernel@lists.infradead.org; Fri, 12 Mar 2021 00:49:30 +0000 Received: by mail-qk1-x749.google.com with SMTP id a137so13338996qkb.20 for ; Thu, 11 Mar 2021 16:49:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc:content-transfer-encoding; bh=kYWK0LnFOZQUSIgVrFyNXnXq3MuC82/VVIJ2++AQu2s=; b=oMXK92xYzFFfoJOoKcwJb28jCIk7pb8pDEzOHr256GwfhlElhlOgE4o82w/iz4ZT7d +V4cu2LqO0CEJK2kLSkD0Es+Ggg8N+9YIml4D+pvlOhEjBZQRc3xre0UHNTamO4be4b7 pbfmN2pwlagJ3zLfqw2sddG8ViZFumtR750SHj19i++7MUmkbuqkw4p9hTJpmh47RLOv YT+YAfVXE6pR/fa7hX1vOBKlCpGVYb2BX8E8G80cQVeqxUCrCCWXfaTT8ClWQI/rxPJR 4sJED1wWb/nEpWdlZsKcK8AUiCrJtxME50dsV4qgl/hFHC/tOWHyNld+EzcsLxKvF2Ia Fnbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc:content-transfer-encoding; bh=kYWK0LnFOZQUSIgVrFyNXnXq3MuC82/VVIJ2++AQu2s=; b=HsFrOgHPjQivxLzIpRGlt8icO5LULQMkyBKwF+m+FCeOo+Fschm7Q4YEuPJj8z7I2C 3n5EA2wAU/zaNTT5AnTIbpw1gr62kDAd2nVTcHc+y/KrvA/If5aLj0UcYbVH4e+x3LFz IpBPnUKEL5zufZjkhvfL6XUwJVJ5trR/mKGkHlI3l5tf6fQihXx+ZrYukdTe4avGqd68 jPUIey/aqZIsEd+eEJNkIoMTbL3qlnNUYa9pZdTql6JhM+Oy9lkPAgjbNu9VP/4b2ULz pVadNKNaNjWV2K5hbFA4D8rEHHSVighIISUBlMQcZaGueQycuThVgW8nWqFUoI9dfLZ9 rRgA== X-Gm-Message-State: AOAM531+DwjzRol2uflepSco9bZGwod2moLv3jsuk1WmuJY0/15iEl1K YWAa3tA0fcwQMxEJNvPhHqKzuax103SRdC/BpUo= X-Google-Smtp-Source: ABdhPJwEGVsKx2ovPS4g444wFkX3TkmdaWS9gvqhU/f0Ua52OAgVry8uJvld3sA8rgr4BKG4wtH0DIiz3MjA/nCRz/k= X-Received: from samitolvanen1.mtv.corp.google.com ([2620:15c:201:2:c86b:8269:af92:55a]) (user=samitolvanen job=sendgmr) by 2002:ad4:51c1:: with SMTP id p1mr10485236qvq.39.1615510162641; Thu, 11 Mar 2021 16:49:22 -0800 (PST) Date: Thu, 11 Mar 2021 16:49:03 -0800 In-Reply-To: <20210312004919.669614-1-samitolvanen@google.com> Message-Id: <20210312004919.669614-2-samitolvanen@google.com> Mime-Version: 1.0 References: <20210312004919.669614-1-samitolvanen@google.com> X-Mailer: git-send-email 2.31.0.rc2.261.g7f71774620-goog Subject: [PATCH 01/17] add support for Clang CFI From: Sami Tolvanen To: Kees Cook Cc: Nathan Chancellor , Nick Desaulniers , Masahiro Yamada , Will Deacon , Jessica Yu , Arnd Bergmann , Tejun Heo , bpf@vger.kernel.org, linux-hardening@vger.kernel.org, linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kbuild@vger.kernel.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Sami Tolvanen X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210312_004927_813156_4ECA7D65 X-CRM114-Status: GOOD ( 33.71 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org VGhpcyBjaGFuZ2UgYWRkcyBzdXBwb3J0IGZvciBDbGFuZ+KAmXMgZm9yd2FyZC1lZGdlIENvbnRy b2wgRmxvdwpJbnRlZ3JpdHkgKENGSSkgY2hlY2tpbmcuIFdpdGggQ09ORklHX0NGSV9DTEFORywg dGhlIGNvbXBpbGVyCmluamVjdHMgYSBydW50aW1lIGNoZWNrIGJlZm9yZSBlYWNoIGluZGlyZWN0 IGZ1bmN0aW9uIGNhbGwgdG8gZW5zdXJlCnRoZSB0YXJnZXQgaXMgYSB2YWxpZCBmdW5jdGlvbiB3 aXRoIHRoZSBjb3JyZWN0IHN0YXRpYyB0eXBlLiBUaGlzCnJlc3RyaWN0cyBwb3NzaWJsZSBjYWxs IHRhcmdldHMgYW5kIG1ha2VzIGl0IG1vcmUgZGlmZmljdWx0IGZvcgphbiBhdHRhY2tlciB0byBl eHBsb2l0IGJ1Z3MgdGhhdCBhbGxvdyB0aGUgbW9kaWZpY2F0aW9uIG9mIHN0b3JlZApmdW5jdGlv biBwb2ludGVycy4gRm9yIG1vcmUgZGV0YWlscywgc2VlOgoKICBodHRwczovL2NsYW5nLmxsdm0u b3JnL2RvY3MvQ29udHJvbEZsb3dJbnRlZ3JpdHkuaHRtbAoKQ2xhbmcgcmVxdWlyZXMgQ09ORklH X0xUT19DTEFORyB0byBiZSBlbmFibGVkIHdpdGggQ0ZJIHRvIGdhaW4KdmlzaWJpbGl0eSB0byBw b3NzaWJsZSBjYWxsIHRhcmdldHMuIEtlcm5lbCBtb2R1bGVzIGFyZSBzdXBwb3J0ZWQKd2l0aCBD bGFuZ+KAmXMgY3Jvc3MtRFNPIENGSSBtb2RlLCB3aGljaCBhbGxvd3MgY2hlY2tpbmcgYmV0d2Vl bgppbmRlcGVuZGVudGx5IGNvbXBpbGVkIGNvbXBvbmVudHMuCgpXaXRoIENGSSBlbmFibGVkLCB0 aGUgY29tcGlsZXIgaW5qZWN0cyBhIF9fY2ZpX2NoZWNrKCkgZnVuY3Rpb24gaW50bwp0aGUga2Vy bmVsIGFuZCBlYWNoIG1vZHVsZSBmb3IgdmFsaWRhdGluZyBsb2NhbCBjYWxsIHRhcmdldHMuIEZv cgpjcm9zcy1tb2R1bGUgY2FsbHMgdGhhdCBjYW5ub3QgYmUgdmFsaWRhdGVkIGxvY2FsbHksIHRo ZSBjb21waWxlcgpjYWxscyB0aGUgZ2xvYmFsIF9fY2ZpX3Nsb3dwYXRoX2RpYWcoKSBmdW5jdGlv biwgd2hpY2ggZGV0ZXJtaW5lcwp0aGUgdGFyZ2V0IG1vZHVsZSBhbmQgY2FsbHMgdGhlIGNvcnJl Y3QgX19jZmlfY2hlY2soKSBmdW5jdGlvbi4gVGhpcwpwYXRjaCBpbmNsdWRlcyBhIHNsb3dwYXRo IGltcGxlbWVudGF0aW9uIHRoYXQgdXNlcyBfX21vZHVsZV9hZGRyZXNzKCkKdG8gcmVzb2x2ZSBj YWxsIHRhcmdldHMsIGFuZCB3aXRoIENPTkZJR19DRklfQ0xBTkdfU0hBRE9XIGVuYWJsZWQsIGEK c2hhZG93IG1hcCB0aGF0IHNwZWVkcyB1cCBtb2R1bGUgbG9vay11cHMgYnkgfjN4LgoKQ2xhbmcg aW1wbGVtZW50cyBpbmRpcmVjdCBjYWxsIGNoZWNraW5nIHVzaW5nIGp1bXAgdGFibGVzIGFuZApv ZmZlcnMgdHdvIG1ldGhvZHMgb2YgZ2VuZXJhdGluZyB0aGVtLiBXaXRoIGNhbm9uaWNhbCBqdW1w IHRhYmxlcywKdGhlIGNvbXBpbGVyIHJlbmFtZXMgZWFjaCBhZGRyZXNzLXRha2VuIGZ1bmN0aW9u IHRvIDxmdW5jdGlvbj4uY2ZpCmFuZCBwb2ludHMgdGhlIG9yaWdpbmFsIHN5bWJvbCB0byBhIGp1 bXAgdGFibGUgZW50cnksIHdoaWNoIHBhc3NlcwpfX2NmaV9jaGVjaygpIHZhbGlkYXRpb24uIFRo aXMgaXNu4oCZdCBjb21wYXRpYmxlIHdpdGggc3RhbmQtYWxvbmUKYXNzZW1ibHkgY29kZSwgd2hp Y2ggdGhlIGNvbXBpbGVyIGRvZXNu4oCZdCBpbnN0cnVtZW50LCBhbmQgd291bGQKcmVzdWx0IGlu IGluZGlyZWN0IGNhbGxzIHRvIGFzc2VtYmx5IGNvZGUgdG8gZmFpbC4gVGhlcmVmb3JlLCB3ZQpk ZWZhdWx0IHRvIHVzaW5nIG5vbi1jYW5vbmljYWwganVtcCB0YWJsZXMgaW5zdGVhZCwgd2hlcmUg dGhlIGNvbXBpbGVyCmdlbmVyYXRlcyBhIGxvY2FsIGp1bXAgdGFibGUgZW50cnkgPGZ1bmN0aW9u Pi5jZmlfanQgZm9yIGVhY2gKYWRkcmVzcy10YWtlbiBmdW5jdGlvbiwgYW5kIHJlcGxhY2VzIGFs bCByZWZlcmVuY2VzIHRvIHRoZSBmdW5jdGlvbgp3aXRoIHRoZSBhZGRyZXNzIG9mIHRoZSBqdW1w IHRhYmxlIGVudHJ5LgoKTm90ZSB0aGF0IGJlY2F1c2Ugbm9uLWNhbm9uaWNhbCBqdW1wIHRhYmxl IGFkZHJlc3NlcyBhcmUgbG9jYWwKdG8gZWFjaCBjb21wb25lbnQsIHRoZXkgYnJlYWsgY3Jvc3Mt bW9kdWxlIGZ1bmN0aW9uIGFkZHJlc3MKZXF1YWxpdHkuIFNwZWNpZmljYWxseSwgdGhlIGFkZHJl c3Mgb2YgYSBnbG9iYWwgZnVuY3Rpb24gd2lsbCBiZQpkaWZmZXJlbnQgaW4gZWFjaCBtb2R1bGUs IGFzIGl0J3MgcmVwbGFjZWQgd2l0aCB0aGUgYWRkcmVzcyBvZiBhIGxvY2FsCmp1bXAgdGFibGUg ZW50cnkuIElmIHRoaXMgYWRkcmVzcyBpcyBwYXNzZWQgdG8gYSBkaWZmZXJlbnQgbW9kdWxlLApp dCB3b27igJl0IG1hdGNoIHRoZSBhZGRyZXNzIG9mIHRoZSBzYW1lIGZ1bmN0aW9uIHRha2VuIHRo ZXJlLiBUaGlzCm1heSBicmVhayBjb2RlIHRoYXQgcmVsaWVzIG9uIGNvbXBhcmluZyBhZGRyZXNz ZXMgcGFzc2VkIGZyb20gb3RoZXIKY29tcG9uZW50cy4KCkNGSSBjaGVja2luZyBjYW4gYmUgZGlz YWJsZWQgaW4gYSBmdW5jdGlvbiB3aXRoIHRoZSBfX25vY2ZpIGF0dHJpYnV0ZS4KQWRkaXRpb25h bGx5LCBDRkkgY2FuIGJlIGRpc2FibGVkIGZvciBhbiBlbnRpcmUgY29tcGlsYXRpb24gdW5pdCBi eQpmaWx0ZXJpbmcgb3V0IENDX0ZMQUdTX0NGSS4KCkJ5IGRlZmF1bHQsIENGSSBmYWlsdXJlcyBy ZXN1bHQgaW4gYSBrZXJuZWwgcGFuaWMgdG8gc3RvcCBhIHBvdGVudGlhbApleHBsb2l0LiBDT05G SUdfQ0ZJX1BFUk1JU1NJVkUgZW5hYmxlcyBhIHBlcm1pc3NpdmUgbW9kZSwgd2hlcmUgdGhlCmtl cm5lbCBwcmludHMgb3V0IGEgcmF0ZS1saW1pdGVkIHdhcm5pbmcgaW5zdGVhZCwgYW5kIGFsbG93 cyBleGVjdXRpb24KdG8gY29udGludWUuIFRoaXMgb3B0aW9uIGlzIGhlbHBmdWwgZm9yIGxvY2F0 aW5nIHR5cGUgbWlzbWF0Y2hlcywgYnV0CnNob3VsZCBvbmx5IGJlIGVuYWJsZWQgZHVyaW5nIGRl dmVsb3BtZW50LgoKU2lnbmVkLW9mZi1ieTogU2FtaSBUb2x2YW5lbiA8c2FtaXRvbHZhbmVuQGdv b2dsZS5jb20+Ci0tLQogTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE3ICsr CiBhcmNoL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgfCAgNDUgKysrKwogaW5jbHVkZS9h c20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oIHwgIDIwICstCiBpbmNsdWRlL2xpbnV4L2NmaS5oICAg ICAgICAgICAgICAgfCAgNDEgKysrKwogaW5jbHVkZS9saW51eC9jb21waWxlci1jbGFuZy5oICAg IHwgICAyICsKIGluY2x1ZGUvbGludXgvY29tcGlsZXJfdHlwZXMuaCAgICB8ICAgNCArCiBpbmNs dWRlL2xpbnV4L2luaXQuaCAgICAgICAgICAgICAgfCAgIDIgKy0KIGluY2x1ZGUvbGludXgvbW9k dWxlLmggICAgICAgICAgICB8ICAxMyArLQogaW5pdC9LY29uZmlnICAgICAgICAgICAgICAgICAg ICAgIHwgICAyICstCiBrZXJuZWwvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgfCAgIDQgKwog a2VybmVsL2NmaS5jICAgICAgICAgICAgICAgICAgICAgIHwgMzI5ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwoga2VybmVsL21vZHVsZS5jICAgICAgICAgICAgICAgICAgIHwgIDQzICsr KysKIHNjcmlwdHMvTWFrZWZpbGUubW9kZmluYWwgICAgICAgICB8ICAgMiArLQogMTMgZmlsZXMg Y2hhbmdlZCwgNTE4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgaW5jbHVkZS9saW51eC9jZmkuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGtlcm5lbC9jZmku YwoKZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggMzFkY2RiM2Q2MWZhLi40 MWM0YmFkNTBkMzEgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC05MTgs NiArOTE4LDIzIEBAIEtCVUlMRF9BRkxBR1MJKz0gLWZuby1sdG8KIGV4cG9ydCBDQ19GTEFHU19M VE8KIGVuZGlmCiAKK2lmZGVmIENPTkZJR19DRklfQ0xBTkcKK0NDX0ZMQUdTX0NGSQk6PSAtZnNh bml0aXplPWNmaSBcCisJCSAgIC1mc2FuaXRpemUtY2ZpLWNyb3NzLWRzbyBcCisJCSAgIC1mbm8t c2FuaXRpemUtY2ZpLWNhbm9uaWNhbC1qdW1wLXRhYmxlcyBcCisJCSAgIC1mbm8tc2FuaXRpemUt dHJhcD1jZmkgXAorCQkgICAtZm5vLXNhbml0aXplLWJsYWNrbGlzdAorCitpZmRlZiBDT05GSUdf Q0ZJX1BFUk1JU1NJVkUKK0NDX0ZMQUdTX0NGSQkrPSAtZnNhbml0aXplLXJlY292ZXI9Y2ZpCitl bmRpZgorCisjIElmIExUTyBmbGFncyBhcmUgZmlsdGVyZWQgb3V0LCB3ZSBtdXN0IGFsc28gZmls dGVyIG91dCBDRkkuCitDQ19GTEFHU19MVE8JKz0gJChDQ19GTEFHU19DRkkpCitLQlVJTERfQ0ZM QUdTCSs9ICQoQ0NfRkxBR1NfQ0ZJKQorZXhwb3J0IENDX0ZMQUdTX0NGSQorZW5kaWYKKwogaWZk ZWYgQ09ORklHX0RFQlVHX0ZPUkNFX0ZVTkNUSU9OX0FMSUdOXzMyQgogS0JVSUxEX0NGTEFHUyAr PSAtZmFsaWduLWZ1bmN0aW9ucz0zMgogZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvS2NvbmZpZyBi L2FyY2gvS2NvbmZpZwppbmRleCAyYmIzMDY3M2Q4ZTYuLjU3ZWM2NjM4MjhkYyAxMDA2NDQKLS0t IGEvYXJjaC9LY29uZmlnCisrKyBiL2FyY2gvS2NvbmZpZwpAQCAtNjkzLDYgKzY5Myw1MSBAQCBj b25maWcgTFRPX0NMQU5HX1RISU4KIAkgIElmIHVuc3VyZSwgc2F5IFkuCiBlbmRjaG9pY2UKIAor Y29uZmlnIEFSQ0hfU1VQUE9SVFNfQ0ZJX0NMQU5HCisJYm9vbAorCWhlbHAKKwkgIEFuIGFyY2hp dGVjdHVyZSBzaG91bGQgc2VsZWN0IHRoaXMgb3B0aW9uIGlmIGl0IGNhbiBzdXBwb3J0IENsYW5n J3MKKwkgIENvbnRyb2wtRmxvdyBJbnRlZ3JpdHkgKENGSSkgY2hlY2tpbmcuCisKK2NvbmZpZyBD RklfQ0xBTkcKKwlib29sICJVc2UgQ2xhbmcncyBDb250cm9sIEZsb3cgSW50ZWdyaXR5IChDRkkp IgorCWRlcGVuZHMgb24gTFRPX0NMQU5HICYmIEFSQ0hfU1VQUE9SVFNfQ0ZJX0NMQU5HCisJIyBD bGFuZyA+PSAxMjoKKwkjIC0gaHR0cHM6Ly9idWdzLmxsdm0ub3JnL3Nob3dfYnVnLmNnaT9pZD00 NjI1OAorCSMgLSBodHRwczovL2J1Z3MubGx2bS5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NDc5CisJ ZGVwZW5kcyBvbiBDTEFOR19WRVJTSU9OID49IDEyMDAwMAorCXNlbGVjdCBLQUxMU1lNUworCWhl bHAKKwkgIFRoaXMgb3B0aW9uIGVuYWJsZXMgQ2xhbmfigJlzIGZvcndhcmQtZWRnZSBDb250cm9s IEZsb3cgSW50ZWdyaXR5CisJICAoQ0ZJKSBjaGVja2luZywgd2hlcmUgdGhlIGNvbXBpbGVyIGlu amVjdHMgYSBydW50aW1lIGNoZWNrIHRvIGVhY2gKKwkgIGluZGlyZWN0IGZ1bmN0aW9uIGNhbGwg dG8gZW5zdXJlIHRoZSB0YXJnZXQgaXMgYSB2YWxpZCBmdW5jdGlvbiB3aXRoCisJICB0aGUgY29y cmVjdCBzdGF0aWMgdHlwZS4gVGhpcyByZXN0cmljdHMgcG9zc2libGUgY2FsbCB0YXJnZXRzIGFu ZAorCSAgbWFrZXMgaXQgbW9yZSBkaWZmaWN1bHQgZm9yIGFuIGF0dGFja2VyIHRvIGV4cGxvaXQg YnVncyB0aGF0IGFsbG93CisJICB0aGUgbW9kaWZpY2F0aW9uIG9mIHN0b3JlZCBmdW5jdGlvbiBw b2ludGVycy4gTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUKKwkgIGZvdW5kIGZyb20gQ2xhbmcncyBk b2N1bWVudGF0aW9uOgorCisJICAgIGh0dHBzOi8vY2xhbmcubGx2bS5vcmcvZG9jcy9Db250cm9s Rmxvd0ludGVncml0eS5odG1sCisKK2NvbmZpZyBDRklfQ0xBTkdfU0hBRE9XCisJYm9vbCAiVXNl IENGSSBzaGFkb3cgdG8gc3BlZWQgdXAgY3Jvc3MtbW9kdWxlIGNoZWNrcyIKKwlkZWZhdWx0IHkK KwlkZXBlbmRzIG9uIENGSV9DTEFORyAmJiBNT0RVTEVTCisJaGVscAorCSAgSWYgeW91IHNlbGVj dCB0aGlzIG9wdGlvbiwgdGhlIGtlcm5lbCBidWlsZHMgYSBmYXN0IGxvb2stdXAgdGFibGUgb2YK KwkgIENGSSBjaGVjayBmdW5jdGlvbnMgaW4gbG9hZGVkIG1vZHVsZXMgdG8gcmVkdWNlIHBlcmZv cm1hbmNlIG92ZXJoZWFkLgorCisJICBJZiB1bnN1cmUsIHNheSBZLgorCitjb25maWcgQ0ZJX1BF Uk1JU1NJVkUKKwlib29sICJVc2UgQ0ZJIGluIHBlcm1pc3NpdmUgbW9kZSIKKwlkZXBlbmRzIG9u IENGSV9DTEFORworCWhlbHAKKwkgIFdoZW4gc2VsZWN0ZWQsIENvbnRyb2wgRmxvdyBJbnRlZ3Jp dHkgKENGSSkgdmlvbGF0aW9ucyByZXN1bHQgaW4gYQorCSAgd2FybmluZyBpbnN0ZWFkIG9mIGEg a2VybmVsIHBhbmljLiBUaGlzIG9wdGlvbiBzaG91bGQgb25seSBiZSB1c2VkCisJICBmb3IgZmlu ZGluZyBpbmRpcmVjdCBjYWxsIHR5cGUgbWlzbWF0Y2hlcyBkdXJpbmcgZGV2ZWxvcG1lbnQuCisK KwkgIElmIHVuc3VyZSwgc2F5IE4uCisKIGNvbmZpZyBIQVZFX0FSQ0hfV0lUSElOX1NUQUNLX0ZS QU1FUwogCWJvb2wKIAloZWxwCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGlu dXgubGRzLmggYi9pbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmgKaW5kZXggMDMzMWQ1 ZDQ5NTUxLi40MGE5YzEwMTU2NWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWdlbmVyaWMvdm1s aW51eC5sZHMuaAorKysgYi9pbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmgKQEAgLTU0 NCw2ICs1NDQsMjIgQEAKIAkuID0gQUxJR04oKGFsaWduKSk7CQkJCQkJXAogCV9fZW5kX3JvZGF0 YSA9IC47CiAKKworLyoKKyAqIC50ZXh0Li5MLmNmaS5qdW1wdGFibGUuKiBjb250YWluIENvbnRy b2wtRmxvdyBJbnRlZ3JpdHkgKENGSSkKKyAqIGp1bXAgdGFibGUgZW50cmllcy4KKyAqLworI2lm ZGVmIENPTkZJR19DRklfQ0xBTkcKKyNkZWZpbmUgVEVYVF9DRklfSlQJCQkJCQkJXAorCQkuID0g QUxJR04oUE1EX1NJWkUpOwkJCQkJXAorCQlfX2NmaV9qdF9zdGFydCA9IC47CQkJCQlcCisJCSoo LnRleHQuLkwuY2ZpLmp1bXB0YWJsZSAudGV4dC4uTC5jZmkuanVtcHRhYmxlLiopCVwKKwkJLiA9 IEFMSUdOKFBNRF9TSVpFKTsJCQkJCVwKKwkJX19jZmlfanRfZW5kID0gLjsKKyNlbHNlCisjZGVm aW5lIFRFWFRfQ0ZJX0pUCisjZW5kaWYKKwogLyoKICAqIE5vbi1pbnN0cnVtZW50YWJsZSB0ZXh0 IHNlY3Rpb24KICAqLwpAQCAtNTcwLDYgKzU4Niw3IEBACiAJCU5PSU5TVFJfVEVYVAkJCQkJCVwK IAkJKigudGV4dC4ucmVmY291bnQpCQkJCQlcCiAJCSooLnJlZi50ZXh0KQkJCQkJCVwKKwkJVEVY VF9DRklfSlQJCQkJCQlcCiAJTUVNX0tFRVAoaW5pdC50ZXh0KikJCQkJCQlcCiAJTUVNX0tFRVAo ZXhpdC50ZXh0KikJCQkJCQlcCiAKQEAgLTk3NCw3ICs5OTEsOCBAQAogICoga2VlcCBhbnkgLmlu aXRfYXJyYXkuKiBzZWN0aW9ucy4KICAqIGh0dHBzOi8vYnVncy5sbHZtLm9yZy9zaG93X2J1Zy5j Z2k/aWQ9NDY0NzgKICAqLwotI2lmIGRlZmluZWQoQ09ORklHX0dDT1ZfS0VSTkVMKSB8fCBkZWZp bmVkKENPTkZJR19LQVNBTl9HRU5FUklDKSB8fCBkZWZpbmVkKENPTkZJR19LQ1NBTikKKyNpZiBk ZWZpbmVkKENPTkZJR19HQ09WX0tFUk5FTCkgfHwgZGVmaW5lZChDT05GSUdfS0FTQU5fR0VORVJJ QykgfHwgZGVmaW5lZChDT05GSUdfS0NTQU4pIHx8IFwKKwlkZWZpbmVkKENPTkZJR19DRklfQ0xB TkcpCiAjIGlmZGVmIENPTkZJR19DT05TVFJVQ1RPUlMKICMgIGRlZmluZSBTQU5JVElaRVJfRElT Q0FSRFMJCQkJCQlcCiAJKiguZWhfZnJhbWUpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2Nm aS5oIGIvaW5jbHVkZS9saW51eC9jZmkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjg3OTc0NGFhYTZlMAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbGludXgv Y2ZpLmgKQEAgLTAsMCArMSw0MSBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAgKi8KKy8qCisgKiBDbGFuZyBDb250cm9sIEZsb3cgSW50ZWdyaXR5IChDRkkpIHN1cHBvcnQu CisgKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEdvb2dsZSBMTEMKKyAqLworI2lmbmRlZiBfTElO VVhfQ0ZJX0gKKyNkZWZpbmUgX0xJTlVYX0NGSV9ICisKKyNpZmRlZiBDT05GSUdfQ0ZJX0NMQU5H Cit0eXBlZGVmIHZvaWQgKCpjZmlfY2hlY2tfZm4pKHVpbnQ2NF90IGlkLCB2b2lkICpwdHIsIHZv aWQgKmRpYWcpOworCisvKiBDb21waWxlci1nZW5lcmF0ZWQgZnVuY3Rpb24gaW4gZWFjaCBtb2R1 bGUsIGFuZCB0aGUga2VybmVsICovCitleHRlcm4gdm9pZCBfX2NmaV9jaGVjayh1aW50NjRfdCBp ZCwgdm9pZCAqcHRyLCB2b2lkICpkaWFnKTsKKworLyoKKyAqIEZvcmNlIHRoZSBjb21waWxlciB0 byBnZW5lcmF0ZSBhIENGSSBqdW1wIHRhYmxlIGVudHJ5IGZvciBhIGZ1bmN0aW9uCisgKiBhbmQg c3RvcmUgdGhlIGp1bXAgdGFibGUgYWRkcmVzcyB0byBfX2NmaV9qdF88ZnVuY3Rpb24+LgorICov CisjZGVmaW5lIF9fQ0ZJX0FERFJFU1NBQkxFKGZuLCBfX2F0dHIpIFwKKwljb25zdCB2b2lkICpf X2NmaV9qdF8gIyMgZm4gX192aXNpYmxlIF9fYXR0ciA9ICh2b2lkICopJmZuCisKKyNpZmRlZiBD T05GSUdfQ0ZJX0NMQU5HX1NIQURPVworCitleHRlcm4gdm9pZCBjZmlfbW9kdWxlX2FkZChzdHJ1 Y3QgbW9kdWxlICptb2QsIHVuc2lnbmVkIGxvbmcgYmFzZV9hZGRyKTsKK2V4dGVybiB2b2lkIGNm aV9tb2R1bGVfcmVtb3ZlKHN0cnVjdCBtb2R1bGUgKm1vZCwgdW5zaWduZWQgbG9uZyBiYXNlX2Fk ZHIpOworCisjZWxzZQorCitzdGF0aWMgaW5saW5lIHZvaWQgY2ZpX21vZHVsZV9hZGQoc3RydWN0 IG1vZHVsZSAqbW9kLCB1bnNpZ25lZCBsb25nIGJhc2VfYWRkcikge30KK3N0YXRpYyBpbmxpbmUg dm9pZCBjZmlfbW9kdWxlX3JlbW92ZShzdHJ1Y3QgbW9kdWxlICptb2QsIHVuc2lnbmVkIGxvbmcg YmFzZV9hZGRyKSB7fQorCisjZW5kaWYgLyogQ09ORklHX0NGSV9DTEFOR19TSEFET1cgKi8KKwor I2Vsc2UgLyogIUNPTkZJR19DRklfQ0xBTkcgKi8KKworI2RlZmluZSBfX0NGSV9BRERSRVNTQUJM RShmbiwgX19hdHRyKQorCisjZW5kaWYgLyogQ09ORklHX0NGSV9DTEFORyAqLworCisjZW5kaWYg LyogX0xJTlVYX0NGSV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLWNs YW5nLmggYi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLWNsYW5nLmgKaW5kZXggMDRjMGE1YTcxN2Y3 Li4xZmYyMmJkYWQ5OTIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY29tcGlsZXItY2xhbmcu aAorKysgYi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLWNsYW5nLmgKQEAgLTU1LDMgKzU1LDUgQEAK ICNpZiBfX2hhc19mZWF0dXJlKHNoYWRvd19jYWxsX3N0YWNrKQogIyBkZWZpbmUgX19ub3Njcwlf X2F0dHJpYnV0ZV9fKChfX25vX3Nhbml0aXplX18oInNoYWRvdy1jYWxsLXN0YWNrIikpKQogI2Vu ZGlmCisKKyNkZWZpbmUgX19ub2NmaQkJX19hdHRyaWJ1dGVfXygoX19ub19zYW5pdGl6ZV9fKCJj ZmkiKSkpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmggYi9pbmNs dWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmgKaW5kZXggZTVkZDVhNGFlOTQ2Li43OTY5MzVhMzdl MzcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY29tcGlsZXJfdHlwZXMuaAorKysgYi9pbmNs dWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmgKQEAgLTI0Miw2ICsyNDIsMTAgQEAgc3RydWN0IGZ0 cmFjZV9saWtlbHlfZGF0YSB7CiAjIGRlZmluZSBfX25vc2NzCiAjZW5kaWYKIAorI2lmbmRlZiBf X25vY2ZpCisjIGRlZmluZSBfX25vY2ZpCisjZW5kaWYKKwogI2lmbmRlZiBhc21fdm9sYXRpbGVf Z290bwogI2RlZmluZSBhc21fdm9sYXRpbGVfZ290byh4Li4uKSBhc20gZ290byh4KQogI2VuZGlm CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2luaXQuaCBiL2luY2x1ZGUvbGludXgvaW5pdC5o CmluZGV4IDMxZjU0ZGU1ODQyOS4uYjNlYTE1MzQ4ZmJkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xp bnV4L2luaXQuaAorKysgYi9pbmNsdWRlL2xpbnV4L2luaXQuaApAQCAtNDcsNyArNDcsNyBAQAog CiAvKiBUaGVzZSBhcmUgZm9yIGV2ZXJ5Ym9keSAoYWx0aG91Z2ggbm90IGFsbCBhcmNocyB3aWxs IGFjdHVhbGx5CiAgICBkaXNjYXJkIGl0IGluIG1vZHVsZXMpICovCi0jZGVmaW5lIF9faW5pdAkJ X19zZWN0aW9uKCIuaW5pdC50ZXh0IikgX19jb2xkICBfX2xhdGVudF9lbnRyb3B5IF9fbm9pbml0 cmV0cG9saW5lCisjZGVmaW5lIF9faW5pdAkJX19zZWN0aW9uKCIuaW5pdC50ZXh0IikgX19jb2xk ICBfX2xhdGVudF9lbnRyb3B5IF9fbm9pbml0cmV0cG9saW5lIF9fbm9jZmkKICNkZWZpbmUgX19p bml0ZGF0YQlfX3NlY3Rpb24oIi5pbml0LmRhdGEiKQogI2RlZmluZSBfX2luaXRjb25zdAlfX3Nl Y3Rpb24oIi5pbml0LnJvZGF0YSIpCiAjZGVmaW5lIF9fZXhpdGRhdGEJX19zZWN0aW9uKCIuZXhp dC5kYXRhIikKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW9kdWxlLmggYi9pbmNsdWRlL2xp bnV4L21vZHVsZS5oCmluZGV4IDU5ZjA5NGZhNmY3NC4uYjBiYmQzZjMzNmM1IDEwMDY0NAotLS0g YS9pbmNsdWRlL2xpbnV4L21vZHVsZS5oCisrKyBiL2luY2x1ZGUvbGludXgvbW9kdWxlLmgKQEAg LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxsaW51eC90cmFjZXBvaW50LWRlZnMuaD4KICNpbmNs dWRlIDxsaW51eC9zcmN1Lmg+CiAjaW5jbHVkZSA8bGludXgvc3RhdGljX2NhbGxfdHlwZXMuaD4K KyNpbmNsdWRlIDxsaW51eC9jZmkuaD4KIAogI2luY2x1ZGUgPGxpbnV4L3BlcmNwdS5oPgogI2lu Y2x1ZGUgPGFzbS9tb2R1bGUuaD4KQEAgLTEzMSwxMyArMTMyLDE3IEBAIGV4dGVybiB2b2lkIGNs ZWFudXBfbW9kdWxlKHZvaWQpOwogI2RlZmluZSBtb2R1bGVfaW5pdChpbml0Zm4pCQkJCQlcCiAJ c3RhdGljIGlubGluZSBpbml0Y2FsbF90IF9fbWF5YmVfdW51c2VkIF9faW5pdHRlc3Qodm9pZCkJ CVwKIAl7IHJldHVybiBpbml0Zm47IH0JCQkJCVwKLQlpbnQgaW5pdF9tb2R1bGUodm9pZCkgX19j b3B5KGluaXRmbikgX19hdHRyaWJ1dGVfXygoYWxpYXMoI2luaXRmbikpKTsKKwlpbnQgaW5pdF9t b2R1bGUodm9pZCkgX19jb3B5KGluaXRmbikJCQlcCisJCV9fYXR0cmlidXRlX18oKGFsaWFzKCNp bml0Zm4pKSk7CQlcCisJX19DRklfQUREUkVTU0FCTEUoaW5pdF9tb2R1bGUsIF9faW5pdGRhdGEp OwogCiAvKiBUaGlzIGlzIG9ubHkgcmVxdWlyZWQgaWYgeW91IHdhbnQgdG8gYmUgdW5sb2FkYWJs ZS4gKi8KICNkZWZpbmUgbW9kdWxlX2V4aXQoZXhpdGZuKQkJCQkJXAogCXN0YXRpYyBpbmxpbmUg ZXhpdGNhbGxfdCBfX21heWJlX3VudXNlZCBfX2V4aXR0ZXN0KHZvaWQpCQlcCiAJeyByZXR1cm4g ZXhpdGZuOyB9CQkJCQlcCi0Jdm9pZCBjbGVhbnVwX21vZHVsZSh2b2lkKSBfX2NvcHkoZXhpdGZu KSBfX2F0dHJpYnV0ZV9fKChhbGlhcygjZXhpdGZuKSkpOworCXZvaWQgY2xlYW51cF9tb2R1bGUo dm9pZCkgX19jb3B5KGV4aXRmbikJCVwKKwkJX19hdHRyaWJ1dGVfXygoYWxpYXMoI2V4aXRmbikp KTsJCVwKKwlfX0NGSV9BRERSRVNTQUJMRShjbGVhbnVwX21vZHVsZSwgX19leGl0ZGF0YSk7CiAK ICNlbmRpZgogCkBAIC0zNzksNiArMzg0LDEwIEBAIHN0cnVjdCBtb2R1bGUgewogCWNvbnN0IHMz MiAqY3JjczsKIAl1bnNpZ25lZCBpbnQgbnVtX3N5bXM7CiAKKyNpZmRlZiBDT05GSUdfQ0ZJX0NM QU5HCisJY2ZpX2NoZWNrX2ZuIGNmaV9jaGVjazsKKyNlbmRpZgorCiAJLyogS2VybmVsIHBhcmFt ZXRlcnMuICovCiAjaWZkZWYgQ09ORklHX1NZU0ZTCiAJc3RydWN0IG11dGV4IHBhcmFtX2xvY2s7 CmRpZmYgLS1naXQgYS9pbml0L0tjb25maWcgYi9pbml0L0tjb25maWcKaW5kZXggMjI5NDZmZTVk ZWQ5Li4yOTcyZGY0ZTYwNjAgMTAwNjQ0Ci0tLSBhL2luaXQvS2NvbmZpZworKysgYi9pbml0L0tj b25maWcKQEAgLTIyOTcsNyArMjI5Nyw3IEBAIGVuZGlmICMgTU9EVUxFUwogCiBjb25maWcgTU9E VUxFU19UUkVFX0xPT0tVUAogCWRlZl9ib29sIHkKLQlkZXBlbmRzIG9uIFBFUkZfRVZFTlRTIHx8 IFRSQUNJTkcKKwlkZXBlbmRzIG9uIFBFUkZfRVZFTlRTIHx8IFRSQUNJTkcgfHwgQ0ZJX0NMQU5H CiAKIGNvbmZpZyBJTklUX0FMTF9QT1NTSUJMRQogCWJvb2wKZGlmZiAtLWdpdCBhL2tlcm5lbC9N YWtlZmlsZSBiL2tlcm5lbC9NYWtlZmlsZQppbmRleCAzMjBmMWYzOTQxYjcuLmU4YTY3MTVmMzhk YyAxMDA2NDQKLS0tIGEva2VybmVsL01ha2VmaWxlCisrKyBiL2tlcm5lbC9NYWtlZmlsZQpAQCAt NDEsNiArNDEsOSBAQCBLQ1NBTl9TQU5JVElaRV9rY292Lm8gOj0gbgogVUJTQU5fU0FOSVRJWkVf a2Nvdi5vIDo9IG4KIENGTEFHU19rY292Lm8gOj0gJChjYWxsIGNjLW9wdGlvbiwgLWZuby1jb25z ZXJ2ZS1zdGFjaykgLWZuby1zdGFjay1wcm90ZWN0b3IKIAorIyBEb24ndCBpbnN0cnVtZW50IGVy cm9yIGhhbmRsZXJzCitDRkxBR1NfUkVNT1ZFX2NmaS5vIDo9ICQoQ0NfRkxBR1NfQ0ZJKQorCiBv YmoteSArPSBzY2hlZC8KIG9iai15ICs9IGxvY2tpbmcvCiBvYmoteSArPSBwb3dlci8KQEAgLTEx MSw2ICsxMTQsNyBAQCBvYmotJChDT05GSUdfQlBGKSArPSBicGYvCiBvYmotJChDT05GSUdfS0NT QU4pICs9IGtjc2FuLwogb2JqLSQoQ09ORklHX1NIQURPV19DQUxMX1NUQUNLKSArPSBzY3Mubwog b2JqLSQoQ09ORklHX0hBVkVfU1RBVElDX0NBTExfSU5MSU5FKSArPSBzdGF0aWNfY2FsbC5vCitv YmotJChDT05GSUdfQ0ZJX0NMQU5HKSArPSBjZmkubwogCiBvYmotJChDT05GSUdfUEVSRl9FVkVO VFMpICs9IGV2ZW50cy8KIApkaWZmIC0tZ2l0IGEva2VybmVsL2NmaS5jIGIva2VybmVsL2NmaS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGM5ZWQzZjcwNThhCi0t LSAvZGV2L251bGwKKysrIGIva2VybmVsL2NmaS5jCkBAIC0wLDAgKzEsMzI5IEBACisvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorLyoKKyAqIENsYW5nIENvbnRyb2wgRmxvdyBJ bnRlZ3JpdHkgKENGSSkgZXJyb3IgYW5kIHNsb3dwYXRoIGhhbmRsaW5nLgorICoKKyAqIENvcHly aWdodCAoQykgMjAyMSBHb29nbGUgTExDCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2hhcmRpcnEu aD4KKyNpbmNsdWRlIDxsaW51eC9rYWxsc3ltcy5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5o PgorI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+CisjaW5jbHVkZSA8bGludXgvcHJpbnRrLmg+Cisj aW5jbHVkZSA8bGludXgvcmF0ZWxpbWl0Lmg+CisjaW5jbHVkZSA8bGludXgvcmN1cGRhdGUuaD4K KyNpbmNsdWRlIDxsaW51eC92bWFsbG9jLmg+CisjaW5jbHVkZSA8YXNtL2NhY2hlZmx1c2guaD4K KyNpbmNsdWRlIDxhc20vc2V0X21lbW9yeS5oPgorCisvKiBDb21waWxlci1kZWZpbmVkIGhhbmRs ZXIgbmFtZXMgKi8KKyNpZmRlZiBDT05GSUdfQ0ZJX1BFUk1JU1NJVkUKKyNkZWZpbmUgY2ZpX2Zh aWx1cmVfaGFuZGxlcglfX3Vic2FuX2hhbmRsZV9jZmlfY2hlY2tfZmFpbAorI2Vsc2UKKyNkZWZp bmUgY2ZpX2ZhaWx1cmVfaGFuZGxlcglfX3Vic2FuX2hhbmRsZV9jZmlfY2hlY2tfZmFpbF9hYm9y dAorI2VuZGlmCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBoYW5kbGVfY2ZpX2ZhaWx1cmUodm9pZCAq cHRyKQoreworCWlmIChJU19FTkFCTEVEKENPTkZJR19DRklfUEVSTUlTU0lWRSkpCisJCVdBUk5f UkFURUxJTUlUKDEsICJDRkkgZmFpbHVyZSAodGFyZ2V0OiAlcFMpOlxuIiwgcHRyKTsKKwllbHNl CisJCXBhbmljKCJDRkkgZmFpbHVyZSAodGFyZ2V0OiAlcFMpXG4iLCBwdHIpOworfQorCisjaWZk ZWYgQ09ORklHX01PRFVMRVMKKyNpZmRlZiBDT05GSUdfQ0ZJX0NMQU5HX1NIQURPVworLyoKKyAq IEluZGV4IHR5cGUuIEEgMTYtYml0IGluZGV4IGNhbiBhZGRyZXNzIGF0IG1vc3QgKDJeMTYpLTIg cGFnZXMgKHRha2luZworICogaW50byBhY2NvdW50IFNIQURPV19JTlZBTElEKSwgaS5lLiB+MjU2 TSB3aXRoIDRrIHBhZ2VzLgorICovCit0eXBlZGVmIHUxNiBzaGFkb3dfdDsKKyNkZWZpbmUgU0hB RE9XX0lOVkFMSUQJCSgoc2hhZG93X3QpfjBVTCkKKworc3RydWN0IGNmaV9zaGFkb3cgeworCS8q IFBhZ2UgaW5kZXggZm9yIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNoYWRvdyAqLworCXVuc2lnbmVk IGxvbmcgYmFzZTsKKwkvKiBBbiBhcnJheSBvZiBfX2NmaV9jaGVjayBsb2NhdGlvbnMgKGFzIGlu ZGljZXMgdG8gdGhlIHNoYWRvdykgKi8KKwlzaGFkb3dfdCBzaGFkb3dbMV07Cit9IF9fcGFja2Vk OworCisvKgorICogVGhlIHNoYWRvdyBjb3ZlcnMgfjEyOE0gZnJvbSB0aGUgYmVnaW5uaW5nIG9m IHRoZSBtb2R1bGUgcmVnaW9uLiBJZgorICogdGhlIHJlZ2lvbiBpcyBsYXJnZXIsIHdlIGZhbGwg YmFjayB0byBfX21vZHVsZV9hZGRyZXNzIGZvciB0aGUgcmVzdC4KKyAqLworI2RlZmluZSBfX1NI QURPV19SQU5HRQkJKF9VTChTWl8xMjhNKSA+PiBQQUdFX1NISUZUKQorCisvKiBUaGUgaW4tbWVt b3J5IHNpemUgb2Ygc3RydWN0IGNmaV9zaGFkb3csIGFsd2F5cyBhdCBsZWFzdCBvbmUgcGFnZSAq LworI2RlZmluZSBfX1NIQURPV19QQUdFUwkJKChfX1NIQURPV19SQU5HRSAqIHNpemVvZihzaGFk b3dfdCkpID4+IFBBR0VfU0hJRlQpCisjZGVmaW5lIFNIQURPV19QQUdFUwkJbWF4KDFVTCwgX19T SEFET1dfUEFHRVMpCisjZGVmaW5lIFNIQURPV19TSVpFCQkoU0hBRE9XX1BBR0VTIDw8IFBBR0Vf U0hJRlQpCisKKy8qIFRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgc2hhZG93IGFycmF5LCBtaW51cyBt ZXRhZGF0YSAqLworI2RlZmluZSBTSEFET1dfQVJSX1NJWkUJCShTSEFET1dfU0laRSAtIG9mZnNl dG9mKHN0cnVjdCBjZmlfc2hhZG93LCBzaGFkb3cpKQorI2RlZmluZSBTSEFET1dfQVJSX1NMT1RT CShTSEFET1dfQVJSX1NJWkUgLyBzaXplb2Yoc2hhZG93X3QpKQorCitzdGF0aWMgREVGSU5FX01V VEVYKHNoYWRvd191cGRhdGVfbG9jayk7CitzdGF0aWMgc3RydWN0IGNmaV9zaGFkb3cgX19yY3Ug KmNmaV9zaGFkb3cgX19yZWFkX21vc3RseTsKKworLyogUmV0dXJucyB0aGUgaW5kZXggaW4gdGhl IHNoYWRvdyBmb3IgdGhlIGdpdmVuIGFkZHJlc3MgKi8KK3N0YXRpYyBpbmxpbmUgaW50IHB0cl90 b19zaGFkb3coY29uc3Qgc3RydWN0IGNmaV9zaGFkb3cgKnMsIHVuc2lnbmVkIGxvbmcgcHRyKQor eworCXVuc2lnbmVkIGxvbmcgaW5kZXg7CisJdW5zaWduZWQgbG9uZyBwYWdlID0gcHRyID4+IFBB R0VfU0hJRlQ7CisKKwlpZiAodW5saWtlbHkocGFnZSA8IHMtPmJhc2UpKQorCQlyZXR1cm4gLTE7 IC8qIE91dHNpZGUgb2YgbW9kdWxlIGFyZWEgKi8KKworCWluZGV4ID0gcGFnZSAtIHMtPmJhc2U7 CisKKwlpZiAoaW5kZXggPj0gU0hBRE9XX0FSUl9TTE9UUykKKwkJcmV0dXJuIC0xOyAvKiBDYW5u b3QgYmUgYWRkcmVzc2VkIHdpdGggc2hhZG93ICovCisKKwlyZXR1cm4gKGludClpbmRleDsKK30K KworLyogUmV0dXJucyB0aGUgcGFnZSBhZGRyZXNzIGZvciBhbiBpbmRleCBpbiB0aGUgc2hhZG93 ICovCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgc2hhZG93X3RvX3B0cihjb25zdCBzdHJ1 Y3QgY2ZpX3NoYWRvdyAqcywKKwlpbnQgaW5kZXgpCit7CisJaWYgKHVubGlrZWx5KGluZGV4IDwg MCB8fCBpbmRleCA+PSBTSEFET1dfQVJSX1NMT1RTKSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4g KHMtPmJhc2UgKyBpbmRleCkgPDwgUEFHRV9TSElGVDsKK30KKworLyogUmV0dXJucyB0aGUgX19j ZmlfY2hlY2sgZnVuY3Rpb24gYWRkcmVzcyBmb3IgdGhlIGdpdmVuIHNoYWRvdyBsb2NhdGlvbiAq Lworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHNoYWRvd190b19jaGVja19mbihjb25zdCBz dHJ1Y3QgY2ZpX3NoYWRvdyAqcywKKwlpbnQgaW5kZXgpCit7CisJaWYgKHVubGlrZWx5KGluZGV4 IDwgMCB8fCBpbmRleCA+PSBTSEFET1dfQVJSX1NMT1RTKSkKKwkJcmV0dXJuIDA7CisKKwlpZiAo dW5saWtlbHkocy0+c2hhZG93W2luZGV4XSA9PSBTSEFET1dfSU5WQUxJRCkpCisJCXJldHVybiAw OworCisJLyogX19jZmlfY2hlY2sgaXMgYWx3YXlzIHBhZ2UgYWxpZ25lZCAqLworCXJldHVybiAo cy0+YmFzZSArIHMtPnNoYWRvd1tpbmRleF0pIDw8IFBBR0VfU0hJRlQ7Cit9CisKK3N0YXRpYyB2 b2lkIHByZXBhcmVfbmV4dF9zaGFkb3coY29uc3Qgc3RydWN0IGNmaV9zaGFkb3cgX19yY3UgKnBy ZXYsCisJCXN0cnVjdCBjZmlfc2hhZG93ICpuZXh0KQoreworCWludCBpLCBpbmRleCwgY2hlY2s7 CisKKwkvKiBNYXJrIGV2ZXJ5dGhpbmcgaW52YWxpZCAqLworCW1lbXNldChuZXh0LT5zaGFkb3cs IDB4RkYsIFNIQURPV19BUlJfU0laRSk7CisKKwlpZiAoIXByZXYpCisJCXJldHVybjsgLyogTm8g cHJldmlvdXMgc2hhZG93ICovCisKKwkvKiBJZiB0aGUgYmFzZSBhZGRyZXNzIGRpZG4ndCBjaGFu Z2UsIGFuIHVwZGF0ZSBpcyBub3QgbmVlZGVkICovCisJaWYgKHByZXYtPmJhc2UgPT0gbmV4dC0+ YmFzZSkgeworCQltZW1jcHkobmV4dC0+c2hhZG93LCBwcmV2LT5zaGFkb3csIFNIQURPV19BUlJf U0laRSk7CisJCXJldHVybjsKKwl9CisKKwkvKiBDb252ZXJ0IHRoZSBwcmV2aW91cyBzaGFkb3cg dG8gdGhlIG5ldyBhZGRyZXNzIHJhbmdlICovCisJZm9yIChpID0gMDsgaSA8IFNIQURPV19BUlJf U0xPVFM7ICsraSkgeworCQlpZiAocHJldi0+c2hhZG93W2ldID09IFNIQURPV19JTlZBTElEKQor CQkJY29udGludWU7CisKKwkJaW5kZXggPSBwdHJfdG9fc2hhZG93KG5leHQsIHNoYWRvd190b19w dHIocHJldiwgaSkpOworCQlpZiAoaW5kZXggPCAwKQorCQkJY29udGludWU7CisKKwkJY2hlY2sg PSBwdHJfdG9fc2hhZG93KG5leHQsCisJCQkJc2hhZG93X3RvX2NoZWNrX2ZuKHByZXYsIHByZXYt PnNoYWRvd1tpXSkpOworCQlpZiAoY2hlY2sgPCAwKQorCQkJY29udGludWU7CisKKwkJbmV4dC0+ c2hhZG93W2luZGV4XSA9IChzaGFkb3dfdCljaGVjazsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGFk ZF9tb2R1bGVfdG9fc2hhZG93KHN0cnVjdCBjZmlfc2hhZG93ICpzLCBzdHJ1Y3QgbW9kdWxlICpt b2QsCisJCQl1bnNpZ25lZCBsb25nIG1pbl9hZGRyLCB1bnNpZ25lZCBsb25nIG1heF9hZGRyKQor eworCWludCBjaGVja19pbmRleDsKKwl1bnNpZ25lZCBsb25nIGNoZWNrID0gKHVuc2lnbmVkIGxv bmcpbW9kLT5jZmlfY2hlY2s7CisJdW5zaWduZWQgbG9uZyBwdHI7CisKKwlpZiAodW5saWtlbHko IVBBR0VfQUxJR05FRChjaGVjaykpKSB7CisJCXByX3dhcm4oImNmaTogbm90IHVzaW5nIHNoYWRv dyBmb3IgbW9kdWxlICVzXG4iLCBtb2QtPm5hbWUpOworCQlyZXR1cm47CisJfQorCisJY2hlY2tf aW5kZXggPSBwdHJfdG9fc2hhZG93KHMsIGNoZWNrKTsKKwlpZiAoY2hlY2tfaW5kZXggPCAwKQor CQlyZXR1cm47IC8qIE1vZHVsZSBub3QgYWRkcmVzc2FibGUgd2l0aCBzaGFkb3cgKi8KKworCS8q IEZvciBlYWNoIHBhZ2UsIHN0b3JlIHRoZSBjaGVjayBmdW5jdGlvbiBpbmRleCBpbiB0aGUgc2hh ZG93ICovCisJZm9yIChwdHIgPSBtaW5fYWRkcjsgcHRyIDw9IG1heF9hZGRyOyBwdHIgKz0gUEFH RV9TSVpFKSB7CisJCWludCBpbmRleCA9IHB0cl90b19zaGFkb3cocywgcHRyKTsKKworCQlpZiAo aW5kZXggPj0gMCkgeworCQkJLyogRWFjaCBwYWdlIG11c3Qgb25seSBjb250YWluIG9uZSBtb2R1 bGUgKi8KKwkJCVdBUk5fT05fT05DRShzLT5zaGFkb3dbaW5kZXhdICE9IFNIQURPV19JTlZBTElE KTsKKwkJCXMtPnNoYWRvd1tpbmRleF0gPSAoc2hhZG93X3QpY2hlY2tfaW5kZXg7CisJCX0KKwl9 Cit9CisKK3N0YXRpYyB2b2lkIHJlbW92ZV9tb2R1bGVfZnJvbV9zaGFkb3coc3RydWN0IGNmaV9z aGFkb3cgKnMsIHN0cnVjdCBtb2R1bGUgKm1vZCwKKwkJdW5zaWduZWQgbG9uZyBtaW5fYWRkciwg dW5zaWduZWQgbG9uZyBtYXhfYWRkcikKK3sKKwl1bnNpZ25lZCBsb25nIHB0cjsKKworCWZvciAo cHRyID0gbWluX2FkZHI7IHB0ciA8PSBtYXhfYWRkcjsgcHRyICs9IFBBR0VfU0laRSkgeworCQlp bnQgaW5kZXggPSBwdHJfdG9fc2hhZG93KHMsIHB0cik7CisKKwkJaWYgKGluZGV4ID49IDApCisJ CQlzLT5zaGFkb3dbaW5kZXhdID0gU0hBRE9XX0lOVkFMSUQ7CisJfQorfQorCit0eXBlZGVmIHZv aWQgKCp1cGRhdGVfc2hhZG93X2ZuKShzdHJ1Y3QgY2ZpX3NoYWRvdyAqLCBzdHJ1Y3QgbW9kdWxl ICosCisJCQl1bnNpZ25lZCBsb25nIG1pbl9hZGRyLCB1bnNpZ25lZCBsb25nIG1heF9hZGRyKTsK Kworc3RhdGljIHZvaWQgdXBkYXRlX3NoYWRvdyhzdHJ1Y3QgbW9kdWxlICptb2QsIHVuc2lnbmVk IGxvbmcgYmFzZV9hZGRyLAorCQl1cGRhdGVfc2hhZG93X2ZuIGZuKQoreworCXN0cnVjdCBjZmlf c2hhZG93ICpwcmV2OworCXN0cnVjdCBjZmlfc2hhZG93ICpuZXh0OworCXVuc2lnbmVkIGxvbmcg bWluX2FkZHIsIG1heF9hZGRyOworCisJbmV4dCA9IHZtYWxsb2MoU0hBRE9XX1NJWkUpOworCisJ bXV0ZXhfbG9jaygmc2hhZG93X3VwZGF0ZV9sb2NrKTsKKwlwcmV2ID0gcmN1X2RlcmVmZXJlbmNl X3Byb3RlY3RlZChjZmlfc2hhZG93LAorCQkJCQkgbXV0ZXhfaXNfbG9ja2VkKCZzaGFkb3dfdXBk YXRlX2xvY2spKTsKKworCWlmIChuZXh0KSB7CisJCW5leHQtPmJhc2UgPSBiYXNlX2FkZHIgPj4g UEFHRV9TSElGVDsKKwkJcHJlcGFyZV9uZXh0X3NoYWRvdyhwcmV2LCBuZXh0KTsKKworCQltaW5f YWRkciA9ICh1bnNpZ25lZCBsb25nKW1vZC0+Y29yZV9sYXlvdXQuYmFzZTsKKwkJbWF4X2FkZHIg PSBtaW5fYWRkciArIG1vZC0+Y29yZV9sYXlvdXQudGV4dF9zaXplOworCQlmbihuZXh0LCBtb2Qs IG1pbl9hZGRyICYgUEFHRV9NQVNLLCBtYXhfYWRkciAmIFBBR0VfTUFTSyk7CisKKwkJc2V0X21l bW9yeV9ybygodW5zaWduZWQgbG9uZyluZXh0LCBTSEFET1dfUEFHRVMpOworCX0KKworCXJjdV9h c3NpZ25fcG9pbnRlcihjZmlfc2hhZG93LCBuZXh0KTsKKwltdXRleF91bmxvY2soJnNoYWRvd191 cGRhdGVfbG9jayk7CisJc3luY2hyb25pemVfcmN1X2V4cGVkaXRlZCgpOworCisJaWYgKHByZXYp IHsKKwkJc2V0X21lbW9yeV9ydygodW5zaWduZWQgbG9uZylwcmV2LCBTSEFET1dfUEFHRVMpOwor CQl2ZnJlZShwcmV2KTsKKwl9Cit9CisKK3ZvaWQgY2ZpX21vZHVsZV9hZGQoc3RydWN0IG1vZHVs ZSAqbW9kLCB1bnNpZ25lZCBsb25nIGJhc2VfYWRkcikKK3sKKwl1cGRhdGVfc2hhZG93KG1vZCwg YmFzZV9hZGRyLCBhZGRfbW9kdWxlX3RvX3NoYWRvdyk7Cit9CisKK3ZvaWQgY2ZpX21vZHVsZV9y ZW1vdmUoc3RydWN0IG1vZHVsZSAqbW9kLCB1bnNpZ25lZCBsb25nIGJhc2VfYWRkcikKK3sKKwl1 cGRhdGVfc2hhZG93KG1vZCwgYmFzZV9hZGRyLCByZW1vdmVfbW9kdWxlX2Zyb21fc2hhZG93KTsK K30KKworc3RhdGljIGlubGluZSBjZmlfY2hlY2tfZm4gcHRyX3RvX2NoZWNrX2ZuKGNvbnN0IHN0 cnVjdCBjZmlfc2hhZG93IF9fcmN1ICpzLAorCXVuc2lnbmVkIGxvbmcgcHRyKQoreworCWludCBp bmRleDsKKworCWlmICh1bmxpa2VseSghcykpCisJCXJldHVybiBOVUxMOyAvKiBObyBzaGFkb3cg YXZhaWxhYmxlICovCisKKwlpbmRleCA9IHB0cl90b19zaGFkb3cocywgcHRyKTsKKwlpZiAoaW5k ZXggPCAwKQorCQlyZXR1cm4gTlVMTDsgLyogQ2Fubm90IGJlIGFkZHJlc3NlZCB3aXRoIHNoYWRv dyAqLworCisJcmV0dXJuIChjZmlfY2hlY2tfZm4pc2hhZG93X3RvX2NoZWNrX2ZuKHMsIGluZGV4 KTsKK30KKworc3RhdGljIGlubGluZSBjZmlfY2hlY2tfZm4gZmluZF9zaGFkb3dfY2hlY2tfZm4o dW5zaWduZWQgbG9uZyBwdHIpCit7CisJY2ZpX2NoZWNrX2ZuIGZuOworCisJcmN1X3JlYWRfbG9j a19zY2hlZCgpOworCWZuID0gcHRyX3RvX2NoZWNrX2ZuKHJjdV9kZXJlZmVyZW5jZV9zY2hlZChj Zmlfc2hhZG93KSwgcHRyKTsKKwlyY3VfcmVhZF91bmxvY2tfc2NoZWQoKTsKKworCXJldHVybiBm bjsKK30KKworI2Vsc2UgLyogIUNPTkZJR19DRklfQ0xBTkdfU0hBRE9XICovCisKK3N0YXRpYyBp bmxpbmUgY2ZpX2NoZWNrX2ZuIGZpbmRfc2hhZG93X2NoZWNrX2ZuKHVuc2lnbmVkIGxvbmcgcHRy KQoreworCXJldHVybiBOVUxMOworfQorCisjZW5kaWYgLyogQ09ORklHX0NGSV9DTEFOR19TSEFE T1cgKi8KKworc3RhdGljIGlubGluZSBjZmlfY2hlY2tfZm4gZmluZF9tb2R1bGVfY2hlY2tfZm4o dW5zaWduZWQgbG9uZyBwdHIpCit7CisJY2ZpX2NoZWNrX2ZuIGZuID0gTlVMTDsKKwlzdHJ1Y3Qg bW9kdWxlICptb2Q7CisKKwlyY3VfcmVhZF9sb2NrX3NjaGVkKCk7CisJbW9kID0gX19tb2R1bGVf YWRkcmVzcyhwdHIpOworCWlmIChtb2QpCisJCWZuID0gbW9kLT5jZmlfY2hlY2s7CisJcmN1X3Jl YWRfdW5sb2NrX3NjaGVkKCk7CisKKwlyZXR1cm4gZm47Cit9CisKK3N0YXRpYyBpbmxpbmUgY2Zp X2NoZWNrX2ZuIGZpbmRfY2hlY2tfZm4odW5zaWduZWQgbG9uZyBwdHIpCit7CisJY2ZpX2NoZWNr X2ZuIGZuID0gTlVMTDsKKworCWlmIChpc19rZXJuZWxfdGV4dChwdHIpKQorCQlyZXR1cm4gX19j ZmlfY2hlY2s7CisKKwkvKgorCSAqIEluZGlyZWN0IGNhbGwgY2hlY2tzIGNhbiBoYXBwZW4gd2hl biBSQ1UgaXMgbm90IHdhdGNoaW5nLiBCb3RoCisJICogdGhlIHNoYWRvdyBhbmQgX19tb2R1bGVf YWRkcmVzcyB1c2UgUkNVLCBzbyB3ZSBuZWVkIHRvIHdha2UgaXQKKwkgKiB1cCBpZiBuZWNlc3Nh cnkuCisJICovCisJUkNVX05PTklETEUoeworCQlpZiAoSVNfRU5BQkxFRChDT05GSUdfQ0ZJX0NM QU5HX1NIQURPVykpCisJCQlmbiA9IGZpbmRfc2hhZG93X2NoZWNrX2ZuKHB0cik7CisKKwkJaWYg KCFmbikKKwkJCWZuID0gZmluZF9tb2R1bGVfY2hlY2tfZm4ocHRyKTsKKwl9KTsKKworCXJldHVy biBmbjsKK30KKwordm9pZCBfX2NmaV9zbG93cGF0aF9kaWFnKHVpbnQ2NF90IGlkLCB2b2lkICpw dHIsIHZvaWQgKmRpYWcpCit7CisJY2ZpX2NoZWNrX2ZuIGZuID0gZmluZF9jaGVja19mbigodW5z aWduZWQgbG9uZylwdHIpOworCisJaWYgKGxpa2VseShmbikpCisJCWZuKGlkLCBwdHIsIGRpYWcp OworCWVsc2UgLyogRG9uJ3QgYWxsb3cgdW5jaGVja2VkIG1vZHVsZXMgKi8KKwkJaGFuZGxlX2Nm aV9mYWlsdXJlKHB0cik7Cit9CitFWFBPUlRfU1lNQk9MKF9fY2ZpX3Nsb3dwYXRoX2RpYWcpOwor CisjZWxzZSAvKiAhQ09ORklHX01PRFVMRVMgKi8KKwordm9pZCBfX2NmaV9zbG93cGF0aF9kaWFn KHVpbnQ2NF90IGlkLCB2b2lkICpwdHIsIHZvaWQgKmRpYWcpCit7CisJaGFuZGxlX2NmaV9mYWls dXJlKHB0cik7IC8qIE5vIG1vZHVsZXMgKi8KK30KK0VYUE9SVF9TWU1CT0woX19jZmlfc2xvd3Bh dGhfZGlhZyk7CisKKyNlbmRpZiAvKiBDT05GSUdfTU9EVUxFUyAqLworCit2b2lkIGNmaV9mYWls dXJlX2hhbmRsZXIodm9pZCAqZGF0YSwgdm9pZCAqcHRyLCB2b2lkICp2dGFibGUpCit7CisJaGFu ZGxlX2NmaV9mYWlsdXJlKHB0cik7Cit9CitFWFBPUlRfU1lNQk9MKGNmaV9mYWlsdXJlX2hhbmRs ZXIpOwpkaWZmIC0tZ2l0IGEva2VybmVsL21vZHVsZS5jIGIva2VybmVsL21vZHVsZS5jCmluZGV4 IDMwNDc5MzU1YWI4NS4uMjBmYjAwNGU3ZDhkIDEwMDY0NAotLS0gYS9rZXJuZWwvbW9kdWxlLmMK KysrIGIva2VybmVsL21vZHVsZS5jCkBAIC0yMTQ2LDYgKzIxNDYsOCBAQCB2b2lkIF9fd2VhayBt b2R1bGVfYXJjaF9mcmVlaW5nX2luaXQoc3RydWN0IG1vZHVsZSAqbW9kKQogewogfQogCitzdGF0 aWMgdm9pZCBjZmlfY2xlYW51cChzdHJ1Y3QgbW9kdWxlICptb2QpOworCiAvKiBGcmVlIGEgbW9k dWxlLCByZW1vdmUgZnJvbSBsaXN0cywgZXRjLiAqLwogc3RhdGljIHZvaWQgZnJlZV9tb2R1bGUo c3RydWN0IG1vZHVsZSAqbW9kKQogewpAQCAtMjE4Nyw2ICsyMTg5LDkgQEAgc3RhdGljIHZvaWQg ZnJlZV9tb2R1bGUoc3RydWN0IG1vZHVsZSAqbW9kKQogCXN5bmNocm9uaXplX3JjdSgpOwogCW11 dGV4X3VubG9jaygmbW9kdWxlX211dGV4KTsKIAorCS8qIENsZWFuIHVwIENGSSBmb3IgdGhlIG1v ZHVsZS4gKi8KKwljZmlfY2xlYW51cChtb2QpOworCiAJLyogVGhpcyBtYXkgYmUgZW1wdHksIGJ1 dCB0aGF0J3MgT0sgKi8KIAltb2R1bGVfYXJjaF9mcmVlaW5nX2luaXQobW9kKTsKIAltb2R1bGVf bWVtZnJlZShtb2QtPmluaXRfbGF5b3V0LmJhc2UpOwpAQCAtMzg2Niw2ICszODcxLDggQEAgc3Rh dGljIGludCB1bmtub3duX21vZHVsZV9wYXJhbV9jYihjaGFyICpwYXJhbSwgY2hhciAqdmFsLCBj b25zdCBjaGFyICptb2RuYW1lLAogCXJldHVybiAwOwogfQogCitzdGF0aWMgdm9pZCBjZmlfaW5p dChzdHJ1Y3QgbW9kdWxlICptb2QpOworCiAvKgogICogQWxsb2NhdGUgYW5kIGxvYWQgdGhlIG1v ZHVsZTogbm90ZSB0aGF0IHNpemUgb2Ygc2VjdGlvbiAwIGlzIGFsd2F5cwogICogemVybywgYW5k IHdlIHJlbHkgb24gdGhpcyBmb3Igb3B0aW9uYWwgc2VjdGlvbnMuCkBAIC0zOTk3LDYgKzQwMDQs OSBAQCBzdGF0aWMgaW50IGxvYWRfbW9kdWxlKHN0cnVjdCBsb2FkX2luZm8gKmluZm8sIGNvbnN0 IGNoYXIgX191c2VyICp1YXJncywKIAogCWZsdXNoX21vZHVsZV9pY2FjaGUobW9kKTsKIAorCS8q IFNldHVwIENGSSBmb3IgdGhlIG1vZHVsZS4gKi8KKwljZmlfaW5pdChtb2QpOworCiAJLyogTm93 IGNvcHkgaW4gYXJncyAqLwogCW1vZC0+YXJncyA9IHN0cm5kdXBfdXNlcih1YXJncywgfjBVTCA+ PiAxKTsKIAlpZiAoSVNfRVJSKG1vZC0+YXJncykpIHsKQEAgLTQwNzAsNiArNDA4MCw3IEBAIHN0 YXRpYyBpbnQgbG9hZF9tb2R1bGUoc3RydWN0IGxvYWRfaW5mbyAqaW5mbywgY29uc3QgY2hhciBf X3VzZXIgKnVhcmdzLAogCXN5bmNocm9uaXplX3JjdSgpOwogCWtmcmVlKG1vZC0+YXJncyk7CiAg ZnJlZV9hcmNoX2NsZWFudXA6CisJY2ZpX2NsZWFudXAobW9kKTsKIAltb2R1bGVfYXJjaF9jbGVh bnVwKG1vZCk7CiAgZnJlZV9tb2RpbmZvOgogCWZyZWVfbW9kaW5mbyhtb2QpOwpAQCAtNDQxNSw2 ICs0NDI2LDM4IEBAIGludCBtb2R1bGVfa2FsbHN5bXNfb25fZWFjaF9zeW1ib2woaW50ICgqZm4p KHZvaWQgKiwgY29uc3QgY2hhciAqLAogI2VuZGlmIC8qIENPTkZJR19MSVZFUEFUQ0ggKi8KICNl bmRpZiAvKiBDT05GSUdfS0FMTFNZTVMgKi8KIAorc3RhdGljIHZvaWQgY2ZpX2luaXQoc3RydWN0 IG1vZHVsZSAqbW9kKQoreworI2lmZGVmIENPTkZJR19DRklfQ0xBTkcKKwlpbml0Y2FsbF90ICpp bml0OworCWV4aXRjYWxsX3QgKmV4aXQ7CisKKwlyY3VfcmVhZF9sb2NrX3NjaGVkKCk7CisJbW9k LT5jZmlfY2hlY2sgPSAoY2ZpX2NoZWNrX2ZuKQorCQlmaW5kX2thbGxzeW1zX3N5bWJvbF92YWx1 ZShtb2QsICJfX2NmaV9jaGVjayIpOworCWluaXQgPSAoaW5pdGNhbGxfdCAqKQorCQlmaW5kX2th bGxzeW1zX3N5bWJvbF92YWx1ZShtb2QsICJfX2NmaV9qdF9pbml0X21vZHVsZSIpOworCWV4aXQg PSAoZXhpdGNhbGxfdCAqKQorCQlmaW5kX2thbGxzeW1zX3N5bWJvbF92YWx1ZShtb2QsICJfX2Nm aV9qdF9jbGVhbnVwX21vZHVsZSIpOworCXJjdV9yZWFkX3VubG9ja19zY2hlZCgpOworCisJLyog Rml4IGluaXQvZXhpdCBmdW5jdGlvbnMgdG8gcG9pbnQgdG8gdGhlIENGSSBqdW1wIHRhYmxlICov CisJaWYgKGluaXQpCisJCW1vZC0+aW5pdCA9ICppbml0OworCWlmIChleGl0KQorCQltb2QtPmV4 aXQgPSAqZXhpdDsKKworCWNmaV9tb2R1bGVfYWRkKG1vZCwgbW9kdWxlX2FkZHJfbWluKTsKKyNl bmRpZgorfQorCitzdGF0aWMgdm9pZCBjZmlfY2xlYW51cChzdHJ1Y3QgbW9kdWxlICptb2QpCit7 CisjaWZkZWYgQ09ORklHX0NGSV9DTEFORworCWNmaV9tb2R1bGVfcmVtb3ZlKG1vZCwgbW9kdWxl X2FkZHJfbWluKTsKKyNlbmRpZgorfQorCiAvKiBNYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJz IHdyaXR0ZW4gYnkgbW9kdWxlX2ZsYWdzKCkgKi8KICNkZWZpbmUgTU9EVUxFX0ZMQUdTX0JVRl9T SVpFIChUQUlOVF9GTEFHU19DT1VOVCArIDQpCiAKZGlmZiAtLWdpdCBhL3NjcmlwdHMvTWFrZWZp bGUubW9kZmluYWwgYi9zY3JpcHRzL01ha2VmaWxlLm1vZGZpbmFsCmluZGV4IDczNWUxMWU5MDQx Yi4uZGQ4N2NlYTlmYmE3IDEwMDY0NAotLS0gYS9zY3JpcHRzL01ha2VmaWxlLm1vZGZpbmFsCisr KyBiL3NjcmlwdHMvTWFrZWZpbGUubW9kZmluYWwKQEAgLTIzLDcgKzIzLDcgQEAgbW9kbmFtZSA9 ICQobm90ZGlyICQoQDoubW9kLm89KSkKIHBhcnQtb2YtbW9kdWxlID0geQogCiBxdWlldF9jbWRf Y2Nfb19jID0gQ0MgW01dICAkQAotICAgICAgY21kX2NjX29fYyA9ICQoQ0MpICQoY19mbGFncykg LWMgLW8gJEAgJDwKKyAgICAgIGNtZF9jY19vX2MgPSAkKENDKSAkKGZpbHRlci1vdXQgJChDQ19G TEFHU19DRkkpLCAkKGNfZmxhZ3MpKSAtYyAtbyAkQCAkPAogCiAlLm1vZC5vOiAlLm1vZC5jIEZP UkNFCiAJJChjYWxsIGlmX2NoYW5nZWRfZGVwLGNjX29fYykKLS0gCjIuMzEuMC5yYzIuMjYxLmc3 ZjcxNzc0NjIwLWdvb2cKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hcm0ta2VybmVsCg==