From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00,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, 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 56600C433B4 for ; Wed, 31 Mar 2021 21:29:28 +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 C010461073 for ; Wed, 31 Mar 2021 21:29:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C010461073 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=rwtmbzNOUwEH+ArgVel4jST435OuQJJKMEFvSm8WkmQ=; b=FAWOxCierQxR/d HwoZ6vectQajqGrDoyuOvG3FV2+QZQmLt8sE+qNT+DIbINJ6kqv0SR6u3YMriGrZ/NEu1u+KaiKuW C4yIVTpijBUulMr0Y0gki6+5aaQO8UmVq+F4t5q3Oajmq2Co/Yp+paFsryRGWKkmG2z7mLBoe+QIC VmP1vgjDN2RC9cvcBB3srtApPELYXMjIzbp/sOelJ0g9DywTyXJKQVKgi9LTugg/EoIbp9DqQ8pbv 8mZmy1AosD8r56BnrO7kzLi5hh6Dd4249qnRH5y3Bclr/T5FPLrivAlAd5RBa24fPlIzkS1C+y47l b5ll/gMnsv6vWS0xY6FA==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lRiNI-007ejQ-Qb; Wed, 31 Mar 2021 21:27:41 +0000 Received: from mail-yb1-xb49.google.com ([2607:f8b0:4864:20::b49]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lRiN6-007efQ-3X for linux-arm-kernel@lists.infradead.org; Wed, 31 Mar 2021 21:27:31 +0000 Received: by mail-yb1-xb49.google.com with SMTP id 125so610977ybd.17 for ; Wed, 31 Mar 2021 14:27:27 -0700 (PDT) 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=MD7gEDamITC1CAlAt7dxOxGSXpVHYTo3DV9/y5T2kDg=; b=MreWT4S/JEbqWGV58Ig1eiLvQUzfcOc6o6DgrD0r7unPSHwoxWoS6hhBLkxusZWKMG VlsDxlRQVQFVDcG7D6c/cEQ0MU5QkDiTdjnISoy0CSpdPMCGdATyXwdgcC7Ud1tO82jJ MBx6UDkpA3cDklJuB9ALf9Z9tumx2gYd/YwbV76TwqpBlBD988in9bdminI4JrT1Br3q MEuzpMzsrneY/6vlfckqk8KQppP95MazdTHW/XFkAMGrvc/ISqGNGUxww8sSf6viY6aB Ha1MLKu6umCYEy8umFHw4HpoixwR0sFsWghrmb0M98p+mHXQVR9A7wIG0NHH3F2g0hXs Ixgw== 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=MD7gEDamITC1CAlAt7dxOxGSXpVHYTo3DV9/y5T2kDg=; b=ZLdtJ4mGEaHZAGDHMJ+vI/TkThkil/SfeIABQIovRABnE0XAwlk+RvyfLQDYTR4RAZ muRhcOEtrppid0TvZZGQVR4V8IvYOFmZjF1L728bDDGNdpndVaVn41bsrzt1x3r/WODp R4yvYrCeA9PKoiOFNInHS1KQSjiE8h1SGyzUJ5cOL5ECuZN14/isWmDltfdY4dF88ClD hSDWUzHPCIYMNWTXa7qCfQPd5Uc93lP9EtaMJLbVDoRrQVj94w7DgSGsDgyhNvp05N29 wO/XvKgU5e2kvqiKtU0IEbWffuTfi2mqHeDBH520aX6yrFnj6R8fS1ro6+A6ASJqA2g0 Q/Cw== X-Gm-Message-State: AOAM533ZP7uzF8sHuWmn2gvonMFWyhkprFN/t4iIQ3ayUhxuqsyfYz8J iHK3yMVqZ2dcsafs4oMh4SxrIj1vrYX9esCJZ4c= X-Google-Smtp-Source: ABdhPJz+Szi3CUmrhkkKMjuhVK2a/MFyX3ttk7+uAN2tT92szooe9x6SYIvOYOng0jbOFOOXmEiJcNATGXxeNFt/APg= X-Received: from samitolvanen1.mtv.corp.google.com ([2620:15c:201:2:7933:7015:a5d5:3835]) (user=samitolvanen job=sendgmr) by 2002:a25:accd:: with SMTP id x13mr7714590ybd.88.1617226045965; Wed, 31 Mar 2021 14:27:25 -0700 (PDT) Date: Wed, 31 Mar 2021 14:27:05 -0700 In-Reply-To: <20210331212722.2746212-1-samitolvanen@google.com> Message-Id: <20210331212722.2746212-2-samitolvanen@google.com> Mime-Version: 1.0 References: <20210331212722.2746212-1-samitolvanen@google.com> X-Mailer: git-send-email 2.31.0.291.g576ba9dcdaf-goog Subject: [PATCH v4 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 , "Paul E. McKenney" , Christoph Hellwig , Peter Zijlstra , Sedat Dilek , 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, clang-built-linux@googlegroups.com, Sami Tolvanen X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210331_222728_314513_D70B6FF7 X-CRM114-Status: GOOD ( 36.62 ) 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+ClJldmlld2VkLWJ5OiBLZWVzIENvb2sgPGtlZXNjb29rQGNocm9taXVtLm9yZz4K LS0tCiBNYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTcgKysKIGFyY2gvS2Nv bmZpZyAgICAgICAgICAgICAgICAgICAgICB8ICA0NSArKysrCiBpbmNsdWRlL2FzbS1nZW5lcmlj L2J1Zy5oICAgICAgICAgfCAgMTYgKysKIGluY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51eC5sZHMu aCB8ICAyMCArLQogaW5jbHVkZS9saW51eC9jZmkuaCAgICAgICAgICAgICAgIHwgIDQxICsrKysK IGluY2x1ZGUvbGludXgvY29tcGlsZXItY2xhbmcuaCAgICB8ICAgMiArCiBpbmNsdWRlL2xpbnV4 L2NvbXBpbGVyX3R5cGVzLmggICAgfCAgIDQgKwogaW5jbHVkZS9saW51eC9pbml0LmggICAgICAg ICAgICAgIHwgICAyICstCiBpbmNsdWRlL2xpbnV4L21vZHVsZS5oICAgICAgICAgICAgfCAgMTMg Ky0KIGluaXQvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQoga2VybmVsL01h a2VmaWxlICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIGtlcm5lbC9jZmkuYyAgICAgICAgICAg ICAgICAgICAgICB8IDMyOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGtlcm5lbC9t b2R1bGUuYyAgICAgICAgICAgICAgICAgICB8ICA0MyArKysrCiBzY3JpcHRzL01ha2VmaWxlLm1v ZGZpbmFsICAgICAgICAgfCAgIDIgKy0KIDE0IGZpbGVzIGNoYW5nZWQsIDUzNCBpbnNlcnRpb25z KCspLCA2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvY2Zp LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBrZXJuZWwvY2ZpLmMKCmRpZmYgLS1naXQgYS9NYWtlZmls ZSBiL01ha2VmaWxlCmluZGV4IDczYWRkMTZmOTg5OC4uNGE5YzFmZjQyMGI2IDEwMDY0NAotLS0g YS9NYWtlZmlsZQorKysgYi9NYWtlZmlsZQpAQCAtOTIwLDYgKzkyMCwyMyBAQCBLQlVJTERfQUZM QUdTCSs9IC1mbm8tbHRvCiBleHBvcnQgQ0NfRkxBR1NfTFRPCiBlbmRpZgogCitpZmRlZiBDT05G SUdfQ0ZJX0NMQU5HCitDQ19GTEFHU19DRkkJOj0gLWZzYW5pdGl6ZT1jZmkgXAorCQkgICAtZnNh bml0aXplLWNmaS1jcm9zcy1kc28gXAorCQkgICAtZm5vLXNhbml0aXplLWNmaS1jYW5vbmljYWwt anVtcC10YWJsZXMgXAorCQkgICAtZm5vLXNhbml0aXplLXRyYXA9Y2ZpIFwKKwkJICAgLWZuby1z YW5pdGl6ZS1ibGFja2xpc3QKKworaWZkZWYgQ09ORklHX0NGSV9QRVJNSVNTSVZFCitDQ19GTEFH U19DRkkJKz0gLWZzYW5pdGl6ZS1yZWNvdmVyPWNmaQorZW5kaWYKKworIyBJZiBMVE8gZmxhZ3Mg YXJlIGZpbHRlcmVkIG91dCwgd2UgbXVzdCBhbHNvIGZpbHRlciBvdXQgQ0ZJLgorQ0NfRkxBR1Nf TFRPCSs9ICQoQ0NfRkxBR1NfQ0ZJKQorS0JVSUxEX0NGTEFHUwkrPSAkKENDX0ZMQUdTX0NGSSkK K2V4cG9ydCBDQ19GTEFHU19DRkkKK2VuZGlmCisKIGlmZGVmIENPTkZJR19ERUJVR19GT1JDRV9G VU5DVElPTl9BTElHTl8zMkIKIEtCVUlMRF9DRkxBR1MgKz0gLWZhbGlnbi1mdW5jdGlvbnM9MzIK IGVuZGlmCmRpZmYgLS1naXQgYS9hcmNoL0tjb25maWcgYi9hcmNoL0tjb25maWcKaW5kZXggZWNm ZDM1MjBiNjc2Li5mNmE4NWJhNmNiYTIgMTAwNjQ0Ci0tLSBhL2FyY2gvS2NvbmZpZworKysgYi9h cmNoL0tjb25maWcKQEAgLTY5Miw2ICs2OTIsNTEgQEAgY29uZmlnIExUT19DTEFOR19USElOCiAJ ICBJZiB1bnN1cmUsIHNheSBZLgogZW5kY2hvaWNlCiAKK2NvbmZpZyBBUkNIX1NVUFBPUlRTX0NG SV9DTEFORworCWJvb2wKKwloZWxwCisJICBBbiBhcmNoaXRlY3R1cmUgc2hvdWxkIHNlbGVjdCB0 aGlzIG9wdGlvbiBpZiBpdCBjYW4gc3VwcG9ydCBDbGFuZydzCisJICBDb250cm9sLUZsb3cgSW50 ZWdyaXR5IChDRkkpIGNoZWNraW5nLgorCitjb25maWcgQ0ZJX0NMQU5HCisJYm9vbCAiVXNlIENs YW5nJ3MgQ29udHJvbCBGbG93IEludGVncml0eSAoQ0ZJKSIKKwlkZXBlbmRzIG9uIExUT19DTEFO RyAmJiBBUkNIX1NVUFBPUlRTX0NGSV9DTEFORworCSMgQ2xhbmcgPj0gMTI6CisJIyAtIGh0dHBz Oi8vYnVncy5sbHZtLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYyNTgKKwkjIC0gaHR0cHM6Ly9idWdz Lmxsdm0ub3JnL3Nob3dfYnVnLmNnaT9pZD00NzQ3OQorCWRlcGVuZHMgb24gQ0xBTkdfVkVSU0lP TiA+PSAxMjAwMDAKKwlzZWxlY3QgS0FMTFNZTVMKKwloZWxwCisJICBUaGlzIG9wdGlvbiBlbmFi bGVzIENsYW5n4oCZcyBmb3J3YXJkLWVkZ2UgQ29udHJvbCBGbG93IEludGVncml0eQorCSAgKENG SSkgY2hlY2tpbmcsIHdoZXJlIHRoZSBjb21waWxlciBpbmplY3RzIGEgcnVudGltZSBjaGVjayB0 byBlYWNoCisJICBpbmRpcmVjdCBmdW5jdGlvbiBjYWxsIHRvIGVuc3VyZSB0aGUgdGFyZ2V0IGlz IGEgdmFsaWQgZnVuY3Rpb24gd2l0aAorCSAgdGhlIGNvcnJlY3Qgc3RhdGljIHR5cGUuIFRoaXMg cmVzdHJpY3RzIHBvc3NpYmxlIGNhbGwgdGFyZ2V0cyBhbmQKKwkgIG1ha2VzIGl0IG1vcmUgZGlm ZmljdWx0IGZvciBhbiBhdHRhY2tlciB0byBleHBsb2l0IGJ1Z3MgdGhhdCBhbGxvdworCSAgdGhl IG1vZGlmaWNhdGlvbiBvZiBzdG9yZWQgZnVuY3Rpb24gcG9pbnRlcnMuIE1vcmUgaW5mb3JtYXRp b24gY2FuIGJlCisJICBmb3VuZCBmcm9tIENsYW5nJ3MgZG9jdW1lbnRhdGlvbjoKKworCSAgICBo dHRwczovL2NsYW5nLmxsdm0ub3JnL2RvY3MvQ29udHJvbEZsb3dJbnRlZ3JpdHkuaHRtbAorCitj b25maWcgQ0ZJX0NMQU5HX1NIQURPVworCWJvb2wgIlVzZSBDRkkgc2hhZG93IHRvIHNwZWVkIHVw IGNyb3NzLW1vZHVsZSBjaGVja3MiCisJZGVmYXVsdCB5CisJZGVwZW5kcyBvbiBDRklfQ0xBTkcg JiYgTU9EVUxFUworCWhlbHAKKwkgIElmIHlvdSBzZWxlY3QgdGhpcyBvcHRpb24sIHRoZSBrZXJu ZWwgYnVpbGRzIGEgZmFzdCBsb29rLXVwIHRhYmxlIG9mCisJICBDRkkgY2hlY2sgZnVuY3Rpb25z IGluIGxvYWRlZCBtb2R1bGVzIHRvIHJlZHVjZSBwZXJmb3JtYW5jZSBvdmVyaGVhZC4KKworCSAg SWYgdW5zdXJlLCBzYXkgWS4KKworY29uZmlnIENGSV9QRVJNSVNTSVZFCisJYm9vbCAiVXNlIENG SSBpbiBwZXJtaXNzaXZlIG1vZGUiCisJZGVwZW5kcyBvbiBDRklfQ0xBTkcKKwloZWxwCisJICBX aGVuIHNlbGVjdGVkLCBDb250cm9sIEZsb3cgSW50ZWdyaXR5IChDRkkpIHZpb2xhdGlvbnMgcmVz dWx0IGluIGEKKwkgIHdhcm5pbmcgaW5zdGVhZCBvZiBhIGtlcm5lbCBwYW5pYy4gVGhpcyBvcHRp b24gc2hvdWxkIG9ubHkgYmUgdXNlZAorCSAgZm9yIGZpbmRpbmcgaW5kaXJlY3QgY2FsbCB0eXBl IG1pc21hdGNoZXMgZHVyaW5nIGRldmVsb3BtZW50LgorCisJICBJZiB1bnN1cmUsIHNheSBOLgor CiBjb25maWcgSEFWRV9BUkNIX1dJVEhJTl9TVEFDS19GUkFNRVMKIAlib29sCiAJaGVscApkaWZm IC0tZ2l0IGEvaW5jbHVkZS9hc20tZ2VuZXJpYy9idWcuaCBiL2luY2x1ZGUvYXNtLWdlbmVyaWMv YnVnLmgKaW5kZXggNzZhMTBlMGRjYTlmLi5iNDAyNDk0ODgzYjYgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvYXNtLWdlbmVyaWMvYnVnLmgKKysrIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9idWcuaApAQCAt MjQxLDYgKzI0MSwyMiBAQCB2b2lkIF9fd2Fybihjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwg dm9pZCAqY2FsbGVyLCB1bnNpZ25lZCB0YWludCwKICMgZGVmaW5lIFdBUk5fT05fU01QKHgpCQkJ KHswO30pCiAjZW5kaWYKIAorLyoKKyAqIFdBUk5fT05fRlVOQ1RJT05fTUlTTUFUQ0goKSB3YXJu cyBpZiBhIHZhbHVlIGRvZXNuJ3QgbWF0Y2ggYQorICogZnVuY3Rpb24gYWRkcmVzcywgYW5kIGNh biBiZSB1c2VmdWwgZm9yIGNhdGNoaW5nIGlzc3VlcyB3aXRoCisgKiBjYWxsYmFjayBmdW5jdGlv bnMsIGZvciBleGFtcGxlLgorICoKKyAqIFdpdGggQ09ORklHX0NGSV9DTEFORywgdGhlIHdhcm5p bmcgaXMgZGlzYWJsZWQgYmVjYXVzZSB0aGUKKyAqIGNvbXBpbGVyIHJlcGxhY2VzIGZ1bmN0aW9u IGFkZHJlc3NlcyB0YWtlbiBpbiBDIGNvZGUgd2l0aAorICogbG9jYWwganVtcCB0YWJsZSBhZGRy ZXNzZXMsIHdoaWNoIGJyZWFrcyBjcm9zcy1tb2R1bGUgZnVuY3Rpb24KKyAqIGFkZHJlc3MgZXF1 YWxpdHkuCisgKi8KKyNpZiBkZWZpbmVkKENPTkZJR19DRklfQ0xBTkcpICYmIGRlZmluZWQoQ09O RklHX01PRFVMRVMpCisjIGRlZmluZSBXQVJOX09OX0ZVTkNUSU9OX01JU01BVENIKHgsIGZuKSAo eyAwOyB9KQorI2Vsc2UKKyMgZGVmaW5lIFdBUk5fT05fRlVOQ1RJT05fTUlTTUFUQ0goeCwgZm4p IFdBUk5fT05fT05DRSgoeCkgIT0gKGZuKSkKKyNlbmRpZgorCiAjZW5kaWYgLyogX19BU1NFTUJM WV9fICovCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4 Lmxkcy5oIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oCmluZGV4IDAzMzFkNWQ0 OTU1MS4uNDBhOWMxMDE1NjVlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGlu dXgubGRzLmgKKysrIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oCkBAIC01NDQs NiArNTQ0LDIyIEBACiAJLiA9IEFMSUdOKChhbGlnbikpOwkJCQkJCVwKIAlfX2VuZF9yb2RhdGEg PSAuOwogCisKKy8qCisgKiAudGV4dC4uTC5jZmkuanVtcHRhYmxlLiogY29udGFpbiBDb250cm9s LUZsb3cgSW50ZWdyaXR5IChDRkkpCisgKiBqdW1wIHRhYmxlIGVudHJpZXMuCisgKi8KKyNpZmRl ZiBDT05GSUdfQ0ZJX0NMQU5HCisjZGVmaW5lIFRFWFRfQ0ZJX0pUCQkJCQkJCVwKKwkJLiA9IEFM SUdOKFBNRF9TSVpFKTsJCQkJCVwKKwkJX19jZmlfanRfc3RhcnQgPSAuOwkJCQkJXAorCQkqKC50 ZXh0Li5MLmNmaS5qdW1wdGFibGUgLnRleHQuLkwuY2ZpLmp1bXB0YWJsZS4qKQlcCisJCS4gPSBB TElHTihQTURfU0laRSk7CQkJCQlcCisJCV9fY2ZpX2p0X2VuZCA9IC47CisjZWxzZQorI2RlZmlu ZSBURVhUX0NGSV9KVAorI2VuZGlmCisKIC8qCiAgKiBOb24taW5zdHJ1bWVudGFibGUgdGV4dCBz ZWN0aW9uCiAgKi8KQEAgLTU3MCw2ICs1ODYsNyBAQAogCQlOT0lOU1RSX1RFWFQJCQkJCQlcCiAJ CSooLnRleHQuLnJlZmNvdW50KQkJCQkJXAogCQkqKC5yZWYudGV4dCkJCQkJCQlcCisJCVRFWFRf Q0ZJX0pUCQkJCQkJXAogCU1FTV9LRUVQKGluaXQudGV4dCopCQkJCQkJXAogCU1FTV9LRUVQKGV4 aXQudGV4dCopCQkJCQkJXAogCkBAIC05NzQsNyArOTkxLDggQEAKICAqIGtlZXAgYW55IC5pbml0 X2FycmF5Liogc2VjdGlvbnMuCiAgKiBodHRwczovL2J1Z3MubGx2bS5vcmcvc2hvd19idWcuY2dp P2lkPTQ2NDc4CiAgKi8KLSNpZiBkZWZpbmVkKENPTkZJR19HQ09WX0tFUk5FTCkgfHwgZGVmaW5l ZChDT05GSUdfS0FTQU5fR0VORVJJQykgfHwgZGVmaW5lZChDT05GSUdfS0NTQU4pCisjaWYgZGVm aW5lZChDT05GSUdfR0NPVl9LRVJORUwpIHx8IGRlZmluZWQoQ09ORklHX0tBU0FOX0dFTkVSSUMp IHx8IGRlZmluZWQoQ09ORklHX0tDU0FOKSB8fCBcCisJZGVmaW5lZChDT05GSUdfQ0ZJX0NMQU5H KQogIyBpZmRlZiBDT05GSUdfQ09OU1RSVUNUT1JTCiAjICBkZWZpbmUgU0FOSVRJWkVSX0RJU0NB UkRTCQkJCQkJXAogCSooLmVoX2ZyYW1lKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jZmku aCBiL2luY2x1ZGUvbGludXgvY2ZpLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi44Nzk3NDRhYWE2ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2xpbnV4L2Nm aS5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w ICovCisvKgorICogQ2xhbmcgQ29udHJvbCBGbG93IEludGVncml0eSAoQ0ZJKSBzdXBwb3J0Lgor ICoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBHb29nbGUgTExDCisgKi8KKyNpZm5kZWYgX0xJTlVY X0NGSV9ICisjZGVmaW5lIF9MSU5VWF9DRklfSAorCisjaWZkZWYgQ09ORklHX0NGSV9DTEFORwor dHlwZWRlZiB2b2lkICgqY2ZpX2NoZWNrX2ZuKSh1aW50NjRfdCBpZCwgdm9pZCAqcHRyLCB2b2lk ICpkaWFnKTsKKworLyogQ29tcGlsZXItZ2VuZXJhdGVkIGZ1bmN0aW9uIGluIGVhY2ggbW9kdWxl LCBhbmQgdGhlIGtlcm5lbCAqLworZXh0ZXJuIHZvaWQgX19jZmlfY2hlY2sodWludDY0X3QgaWQs IHZvaWQgKnB0ciwgdm9pZCAqZGlhZyk7CisKKy8qCisgKiBGb3JjZSB0aGUgY29tcGlsZXIgdG8g Z2VuZXJhdGUgYSBDRkkganVtcCB0YWJsZSBlbnRyeSBmb3IgYSBmdW5jdGlvbgorICogYW5kIHN0 b3JlIHRoZSBqdW1wIHRhYmxlIGFkZHJlc3MgdG8gX19jZmlfanRfPGZ1bmN0aW9uPi4KKyAqLwor I2RlZmluZSBfX0NGSV9BRERSRVNTQUJMRShmbiwgX19hdHRyKSBcCisJY29uc3Qgdm9pZCAqX19j ZmlfanRfICMjIGZuIF9fdmlzaWJsZSBfX2F0dHIgPSAodm9pZCAqKSZmbgorCisjaWZkZWYgQ09O RklHX0NGSV9DTEFOR19TSEFET1cKKworZXh0ZXJuIHZvaWQgY2ZpX21vZHVsZV9hZGQoc3RydWN0 IG1vZHVsZSAqbW9kLCB1bnNpZ25lZCBsb25nIGJhc2VfYWRkcik7CitleHRlcm4gdm9pZCBjZmlf bW9kdWxlX3JlbW92ZShzdHJ1Y3QgbW9kdWxlICptb2QsIHVuc2lnbmVkIGxvbmcgYmFzZV9hZGRy KTsKKworI2Vsc2UKKworc3RhdGljIGlubGluZSB2b2lkIGNmaV9tb2R1bGVfYWRkKHN0cnVjdCBt b2R1bGUgKm1vZCwgdW5zaWduZWQgbG9uZyBiYXNlX2FkZHIpIHt9CitzdGF0aWMgaW5saW5lIHZv aWQgY2ZpX21vZHVsZV9yZW1vdmUoc3RydWN0IG1vZHVsZSAqbW9kLCB1bnNpZ25lZCBsb25nIGJh c2VfYWRkcikge30KKworI2VuZGlmIC8qIENPTkZJR19DRklfQ0xBTkdfU0hBRE9XICovCisKKyNl bHNlIC8qICFDT05GSUdfQ0ZJX0NMQU5HICovCisKKyNkZWZpbmUgX19DRklfQUREUkVTU0FCTEUo Zm4sIF9fYXR0cikKKworI2VuZGlmIC8qIENPTkZJR19DRklfQ0xBTkcgKi8KKworI2VuZGlmIC8q IF9MSU5VWF9DRklfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jb21waWxlci1jbGFu Zy5oIGIvaW5jbHVkZS9saW51eC9jb21waWxlci1jbGFuZy5oCmluZGV4IGQyMTdjMzgyYjAyZC4u NmRlOWQwYzkzNzdlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLWNsYW5nLmgK KysrIGIvaW5jbHVkZS9saW51eC9jb21waWxlci1jbGFuZy5oCkBAIC02MSwzICs2MSw1IEBACiAj aWYgX19oYXNfZmVhdHVyZShzaGFkb3dfY2FsbF9zdGFjaykKICMgZGVmaW5lIF9fbm9zY3MJX19h dHRyaWJ1dGVfXygoX19ub19zYW5pdGl6ZV9fKCJzaGFkb3ctY2FsbC1zdGFjayIpKSkKICNlbmRp ZgorCisjZGVmaW5lIF9fbm9jZmkJCV9fYXR0cmlidXRlX18oKF9fbm9fc2FuaXRpemVfXygiY2Zp IikpKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jb21waWxlcl90eXBlcy5oIGIvaW5jbHVk ZS9saW51eC9jb21waWxlcl90eXBlcy5oCmluZGV4IGU1ZGQ1YTRhZTk0Ni4uNzk2OTM1YTM3ZTM3 IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmgKKysrIGIvaW5jbHVk ZS9saW51eC9jb21waWxlcl90eXBlcy5oCkBAIC0yNDIsNiArMjQyLDEwIEBAIHN0cnVjdCBmdHJh Y2VfbGlrZWx5X2RhdGEgewogIyBkZWZpbmUgX19ub3NjcwogI2VuZGlmCiAKKyNpZm5kZWYgX19u b2NmaQorIyBkZWZpbmUgX19ub2NmaQorI2VuZGlmCisKICNpZm5kZWYgYXNtX3ZvbGF0aWxlX2dv dG8KICNkZWZpbmUgYXNtX3ZvbGF0aWxlX2dvdG8oeC4uLikgYXNtIGdvdG8oeCkKICNlbmRpZgpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pbml0LmggYi9pbmNsdWRlL2xpbnV4L2luaXQuaApp bmRleCAzMWY1NGRlNTg0MjkuLmIzZWExNTM0OGZiZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51 eC9pbml0LmgKKysrIGIvaW5jbHVkZS9saW51eC9pbml0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAKIAog LyogVGhlc2UgYXJlIGZvciBldmVyeWJvZHkgKGFsdGhvdWdoIG5vdCBhbGwgYXJjaHMgd2lsbCBh Y3R1YWxseQogICAgZGlzY2FyZCBpdCBpbiBtb2R1bGVzKSAqLwotI2RlZmluZSBfX2luaXQJCV9f c2VjdGlvbigiLmluaXQudGV4dCIpIF9fY29sZCAgX19sYXRlbnRfZW50cm9weSBfX25vaW5pdHJl dHBvbGluZQorI2RlZmluZSBfX2luaXQJCV9fc2VjdGlvbigiLmluaXQudGV4dCIpIF9fY29sZCAg X19sYXRlbnRfZW50cm9weSBfX25vaW5pdHJldHBvbGluZSBfX25vY2ZpCiAjZGVmaW5lIF9faW5p dGRhdGEJX19zZWN0aW9uKCIuaW5pdC5kYXRhIikKICNkZWZpbmUgX19pbml0Y29uc3QJX19zZWN0 aW9uKCIuaW5pdC5yb2RhdGEiKQogI2RlZmluZSBfX2V4aXRkYXRhCV9fc2VjdGlvbigiLmV4aXQu ZGF0YSIpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21vZHVsZS5oIGIvaW5jbHVkZS9saW51 eC9tb2R1bGUuaAppbmRleCBkYTRiNmZiZThlYmUuLjgxMDBiYjQ3N2Q4NiAxMDA2NDQKLS0tIGEv aW5jbHVkZS9saW51eC9tb2R1bGUuaAorKysgYi9pbmNsdWRlL2xpbnV4L21vZHVsZS5oCkBAIC0y Niw2ICsyNiw3IEBACiAjaW5jbHVkZSA8bGludXgvdHJhY2Vwb2ludC1kZWZzLmg+CiAjaW5jbHVk ZSA8bGludXgvc3JjdS5oPgogI2luY2x1ZGUgPGxpbnV4L3N0YXRpY19jYWxsX3R5cGVzLmg+Cisj aW5jbHVkZSA8bGludXgvY2ZpLmg+CiAKICNpbmNsdWRlIDxsaW51eC9wZXJjcHUuaD4KICNpbmNs dWRlIDxhc20vbW9kdWxlLmg+CkBAIC0xMjgsMTMgKzEyOSwxNyBAQCBleHRlcm4gdm9pZCBjbGVh bnVwX21vZHVsZSh2b2lkKTsKICNkZWZpbmUgbW9kdWxlX2luaXQoaW5pdGZuKQkJCQkJXAogCXN0 YXRpYyBpbmxpbmUgaW5pdGNhbGxfdCBfX21heWJlX3VudXNlZCBfX2luaXR0ZXN0KHZvaWQpCQlc CiAJeyByZXR1cm4gaW5pdGZuOyB9CQkJCQlcCi0JaW50IGluaXRfbW9kdWxlKHZvaWQpIF9fY29w eShpbml0Zm4pIF9fYXR0cmlidXRlX18oKGFsaWFzKCNpbml0Zm4pKSk7CisJaW50IGluaXRfbW9k dWxlKHZvaWQpIF9fY29weShpbml0Zm4pCQkJXAorCQlfX2F0dHJpYnV0ZV9fKChhbGlhcygjaW5p dGZuKSkpOwkJXAorCV9fQ0ZJX0FERFJFU1NBQkxFKGluaXRfbW9kdWxlLCBfX2luaXRkYXRhKTsK IAogLyogVGhpcyBpcyBvbmx5IHJlcXVpcmVkIGlmIHlvdSB3YW50IHRvIGJlIHVubG9hZGFibGUu ICovCiAjZGVmaW5lIG1vZHVsZV9leGl0KGV4aXRmbikJCQkJCVwKIAlzdGF0aWMgaW5saW5lIGV4 aXRjYWxsX3QgX19tYXliZV91bnVzZWQgX19leGl0dGVzdCh2b2lkKQkJXAogCXsgcmV0dXJuIGV4 aXRmbjsgfQkJCQkJXAotCXZvaWQgY2xlYW51cF9tb2R1bGUodm9pZCkgX19jb3B5KGV4aXRmbikg X19hdHRyaWJ1dGVfXygoYWxpYXMoI2V4aXRmbikpKTsKKwl2b2lkIGNsZWFudXBfbW9kdWxlKHZv aWQpIF9fY29weShleGl0Zm4pCQlcCisJCV9fYXR0cmlidXRlX18oKGFsaWFzKCNleGl0Zm4pKSk7 CQlcCisJX19DRklfQUREUkVTU0FCTEUoY2xlYW51cF9tb2R1bGUsIF9fZXhpdGRhdGEpOwogCiAj ZW5kaWYKIApAQCAtMzc2LDYgKzM4MSwxMCBAQCBzdHJ1Y3QgbW9kdWxlIHsKIAljb25zdCBzMzIg KmNyY3M7CiAJdW5zaWduZWQgaW50IG51bV9zeW1zOwogCisjaWZkZWYgQ09ORklHX0NGSV9DTEFO RworCWNmaV9jaGVja19mbiBjZmlfY2hlY2s7CisjZW5kaWYKKwogCS8qIEtlcm5lbCBwYXJhbWV0 ZXJzLiAqLwogI2lmZGVmIENPTkZJR19TWVNGUwogCXN0cnVjdCBtdXRleCBwYXJhbV9sb2NrOwpk aWZmIC0tZ2l0IGEvaW5pdC9LY29uZmlnIGIvaW5pdC9LY29uZmlnCmluZGV4IDVmNWM3NzZlZjE5 Mi4uNWJhYmVhMzhlMzQ2IDEwMDY0NAotLS0gYS9pbml0L0tjb25maWcKKysrIGIvaW5pdC9LY29u ZmlnCkBAIC0yMjk2LDcgKzIyOTYsNyBAQCBlbmRpZiAjIE1PRFVMRVMKIAogY29uZmlnIE1PRFVM RVNfVFJFRV9MT09LVVAKIAlkZWZfYm9vbCB5Ci0JZGVwZW5kcyBvbiBQRVJGX0VWRU5UUyB8fCBU UkFDSU5HCisJZGVwZW5kcyBvbiBQRVJGX0VWRU5UUyB8fCBUUkFDSU5HIHx8IENGSV9DTEFORwog CiBjb25maWcgSU5JVF9BTExfUE9TU0lCTEUKIAlib29sCmRpZmYgLS1naXQgYS9rZXJuZWwvTWFr ZWZpbGUgYi9rZXJuZWwvTWFrZWZpbGUKaW5kZXggMzIwZjFmMzk0MWI3Li5lOGE2NzE1ZjM4ZGMg MTAwNjQ0Ci0tLSBhL2tlcm5lbC9NYWtlZmlsZQorKysgYi9rZXJuZWwvTWFrZWZpbGUKQEAgLTQx LDYgKzQxLDkgQEAgS0NTQU5fU0FOSVRJWkVfa2Nvdi5vIDo9IG4KIFVCU0FOX1NBTklUSVpFX2tj b3YubyA6PSBuCiBDRkxBR1Nfa2Nvdi5vIDo9ICQoY2FsbCBjYy1vcHRpb24sIC1mbm8tY29uc2Vy dmUtc3RhY2spIC1mbm8tc3RhY2stcHJvdGVjdG9yCiAKKyMgRG9uJ3QgaW5zdHJ1bWVudCBlcnJv ciBoYW5kbGVycworQ0ZMQUdTX1JFTU9WRV9jZmkubyA6PSAkKENDX0ZMQUdTX0NGSSkKKwogb2Jq LXkgKz0gc2NoZWQvCiBvYmoteSArPSBsb2NraW5nLwogb2JqLXkgKz0gcG93ZXIvCkBAIC0xMTEs NiArMTE0LDcgQEAgb2JqLSQoQ09ORklHX0JQRikgKz0gYnBmLwogb2JqLSQoQ09ORklHX0tDU0FO KSArPSBrY3Nhbi8KIG9iai0kKENPTkZJR19TSEFET1dfQ0FMTF9TVEFDSykgKz0gc2NzLm8KIG9i ai0kKENPTkZJR19IQVZFX1NUQVRJQ19DQUxMX0lOTElORSkgKz0gc3RhdGljX2NhbGwubworb2Jq LSQoQ09ORklHX0NGSV9DTEFORykgKz0gY2ZpLm8KIAogb2JqLSQoQ09ORklHX1BFUkZfRVZFTlRT KSArPSBldmVudHMvCiAKZGlmZiAtLWdpdCBhL2tlcm5lbC9jZmkuYyBiL2tlcm5lbC9jZmkuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmUxN2E1NjYzOTc2NgotLS0g L2Rldi9udWxsCisrKyBiL2tlcm5lbC9jZmkuYwpAQCAtMCwwICsxLDMyOSBAQAorLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBDbGFuZyBDb250cm9sIEZsb3cgSW50 ZWdyaXR5IChDRkkpIGVycm9yIGFuZCBzbG93cGF0aCBoYW5kbGluZy4KKyAqCisgKiBDb3B5cmln aHQgKEMpIDIwMjEgR29vZ2xlIExMQworICovCisKKyNpbmNsdWRlIDxsaW51eC9oYXJkaXJxLmg+ CisjaW5jbHVkZSA8bGludXgva2FsbHN5bXMuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4K KyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgorI2luY2x1ZGUgPGxpbnV4L3ByaW50ay5oPgorI2lu Y2x1ZGUgPGxpbnV4L3JhdGVsaW1pdC5oPgorI2luY2x1ZGUgPGxpbnV4L3JjdXBkYXRlLmg+Cisj aW5jbHVkZSA8bGludXgvdm1hbGxvYy5oPgorI2luY2x1ZGUgPGFzbS9jYWNoZWZsdXNoLmg+Cisj aW5jbHVkZSA8YXNtL3NldF9tZW1vcnkuaD4KKworLyogQ29tcGlsZXItZGVmaW5lZCBoYW5kbGVy IG5hbWVzICovCisjaWZkZWYgQ09ORklHX0NGSV9QRVJNSVNTSVZFCisjZGVmaW5lIGNmaV9mYWls dXJlX2hhbmRsZXIJX191YnNhbl9oYW5kbGVfY2ZpX2NoZWNrX2ZhaWwKKyNlbHNlCisjZGVmaW5l IGNmaV9mYWlsdXJlX2hhbmRsZXIJX191YnNhbl9oYW5kbGVfY2ZpX2NoZWNrX2ZhaWxfYWJvcnQK KyNlbmRpZgorCitzdGF0aWMgaW5saW5lIHZvaWQgaGFuZGxlX2NmaV9mYWlsdXJlKHZvaWQgKnB0 cikKK3sKKwlpZiAoSVNfRU5BQkxFRChDT05GSUdfQ0ZJX1BFUk1JU1NJVkUpKQorCQlXQVJOX1JB VEVMSU1JVCgxLCAiQ0ZJIGZhaWx1cmUgKHRhcmdldDogJXBTKTpcbiIsIHB0cik7CisJZWxzZQor CQlwYW5pYygiQ0ZJIGZhaWx1cmUgKHRhcmdldDogJXBTKVxuIiwgcHRyKTsKK30KKworI2lmZGVm IENPTkZJR19NT0RVTEVTCisjaWZkZWYgQ09ORklHX0NGSV9DTEFOR19TSEFET1cKKy8qCisgKiBJ bmRleCB0eXBlLiBBIDE2LWJpdCBpbmRleCBjYW4gYWRkcmVzcyBhdCBtb3N0ICgyXjE2KS0yIHBh Z2VzICh0YWtpbmcKKyAqIGludG8gYWNjb3VudCBTSEFET1dfSU5WQUxJRCksIGkuZS4gfjI1Nk0g d2l0aCA0ayBwYWdlcy4KKyAqLwordHlwZWRlZiB1MTYgc2hhZG93X3Q7CisjZGVmaW5lIFNIQURP V19JTlZBTElECQkoKHNoYWRvd190KX4wVUwpCisKK3N0cnVjdCBjZmlfc2hhZG93IHsKKwkvKiBQ YWdlIGluZGV4IGZvciB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzaGFkb3cgKi8KKwl1bnNpZ25lZCBs b25nIGJhc2U7CisJLyogQW4gYXJyYXkgb2YgX19jZmlfY2hlY2sgbG9jYXRpb25zIChhcyBpbmRp Y2VzIHRvIHRoZSBzaGFkb3cpICovCisJc2hhZG93X3Qgc2hhZG93WzFdOworfSBfX3BhY2tlZDsK KworLyoKKyAqIFRoZSBzaGFkb3cgY292ZXJzIH4xMjhNIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0 aGUgbW9kdWxlIHJlZ2lvbi4gSWYKKyAqIHRoZSByZWdpb24gaXMgbGFyZ2VyLCB3ZSBmYWxsIGJh Y2sgdG8gX19tb2R1bGVfYWRkcmVzcyBmb3IgdGhlIHJlc3QuCisgKi8KKyNkZWZpbmUgX19TSEFE T1dfUkFOR0UJCShfVUwoU1pfMTI4TSkgPj4gUEFHRV9TSElGVCkKKworLyogVGhlIGluLW1lbW9y eSBzaXplIG9mIHN0cnVjdCBjZmlfc2hhZG93LCBhbHdheXMgYXQgbGVhc3Qgb25lIHBhZ2UgKi8K KyNkZWZpbmUgX19TSEFET1dfUEFHRVMJCSgoX19TSEFET1dfUkFOR0UgKiBzaXplb2Yoc2hhZG93 X3QpKSA+PiBQQUdFX1NISUZUKQorI2RlZmluZSBTSEFET1dfUEFHRVMJCW1heCgxVUwsIF9fU0hB RE9XX1BBR0VTKQorI2RlZmluZSBTSEFET1dfU0laRQkJKFNIQURPV19QQUdFUyA8PCBQQUdFX1NI SUZUKQorCisvKiBUaGUgYWN0dWFsIHNpemUgb2YgdGhlIHNoYWRvdyBhcnJheSwgbWludXMgbWV0 YWRhdGEgKi8KKyNkZWZpbmUgU0hBRE9XX0FSUl9TSVpFCQkoU0hBRE9XX1NJWkUgLSBvZmZzZXRv ZihzdHJ1Y3QgY2ZpX3NoYWRvdywgc2hhZG93KSkKKyNkZWZpbmUgU0hBRE9XX0FSUl9TTE9UUwko U0hBRE9XX0FSUl9TSVpFIC8gc2l6ZW9mKHNoYWRvd190KSkKKworc3RhdGljIERFRklORV9NVVRF WChzaGFkb3dfdXBkYXRlX2xvY2spOworc3RhdGljIHN0cnVjdCBjZmlfc2hhZG93IF9fcmN1ICpj Zmlfc2hhZG93IF9fcmVhZF9tb3N0bHk7CisKKy8qIFJldHVybnMgdGhlIGluZGV4IGluIHRoZSBz aGFkb3cgZm9yIHRoZSBnaXZlbiBhZGRyZXNzICovCitzdGF0aWMgaW5saW5lIGludCBwdHJfdG9f c2hhZG93KGNvbnN0IHN0cnVjdCBjZmlfc2hhZG93ICpzLCB1bnNpZ25lZCBsb25nIHB0cikKK3sK Kwl1bnNpZ25lZCBsb25nIGluZGV4OworCXVuc2lnbmVkIGxvbmcgcGFnZSA9IHB0ciA+PiBQQUdF X1NISUZUOworCisJaWYgKHVubGlrZWx5KHBhZ2UgPCBzLT5iYXNlKSkKKwkJcmV0dXJuIC0xOyAv KiBPdXRzaWRlIG9mIG1vZHVsZSBhcmVhICovCisKKwlpbmRleCA9IHBhZ2UgLSBzLT5iYXNlOwor CisJaWYgKGluZGV4ID49IFNIQURPV19BUlJfU0xPVFMpCisJCXJldHVybiAtMTsgLyogQ2Fubm90 IGJlIGFkZHJlc3NlZCB3aXRoIHNoYWRvdyAqLworCisJcmV0dXJuIChpbnQpaW5kZXg7Cit9CisK Ky8qIFJldHVybnMgdGhlIHBhZ2UgYWRkcmVzcyBmb3IgYW4gaW5kZXggaW4gdGhlIHNoYWRvdyAq Lworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHNoYWRvd190b19wdHIoY29uc3Qgc3RydWN0 IGNmaV9zaGFkb3cgKnMsCisJaW50IGluZGV4KQoreworCWlmICh1bmxpa2VseShpbmRleCA8IDAg fHwgaW5kZXggPj0gU0hBRE9XX0FSUl9TTE9UUykpCisJCXJldHVybiAwOworCisJcmV0dXJuIChz LT5iYXNlICsgaW5kZXgpIDw8IFBBR0VfU0hJRlQ7Cit9CisKKy8qIFJldHVybnMgdGhlIF9fY2Zp X2NoZWNrIGZ1bmN0aW9uIGFkZHJlc3MgZm9yIHRoZSBnaXZlbiBzaGFkb3cgbG9jYXRpb24gKi8K K3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBzaGFkb3dfdG9fY2hlY2tfZm4oY29uc3Qgc3Ry dWN0IGNmaV9zaGFkb3cgKnMsCisJaW50IGluZGV4KQoreworCWlmICh1bmxpa2VseShpbmRleCA8 IDAgfHwgaW5kZXggPj0gU0hBRE9XX0FSUl9TTE9UUykpCisJCXJldHVybiAwOworCisJaWYgKHVu bGlrZWx5KHMtPnNoYWRvd1tpbmRleF0gPT0gU0hBRE9XX0lOVkFMSUQpKQorCQlyZXR1cm4gMDsK KworCS8qIF9fY2ZpX2NoZWNrIGlzIGFsd2F5cyBwYWdlIGFsaWduZWQgKi8KKwlyZXR1cm4gKHMt PmJhc2UgKyBzLT5zaGFkb3dbaW5kZXhdKSA8PCBQQUdFX1NISUZUOworfQorCitzdGF0aWMgdm9p ZCBwcmVwYXJlX25leHRfc2hhZG93KGNvbnN0IHN0cnVjdCBjZmlfc2hhZG93IF9fcmN1ICpwcmV2 LAorCQlzdHJ1Y3QgY2ZpX3NoYWRvdyAqbmV4dCkKK3sKKwlpbnQgaSwgaW5kZXgsIGNoZWNrOwor CisJLyogTWFyayBldmVyeXRoaW5nIGludmFsaWQgKi8KKwltZW1zZXQobmV4dC0+c2hhZG93LCAw eEZGLCBTSEFET1dfQVJSX1NJWkUpOworCisJaWYgKCFwcmV2KQorCQlyZXR1cm47IC8qIE5vIHBy ZXZpb3VzIHNoYWRvdyAqLworCisJLyogSWYgdGhlIGJhc2UgYWRkcmVzcyBkaWRuJ3QgY2hhbmdl LCBhbiB1cGRhdGUgaXMgbm90IG5lZWRlZCAqLworCWlmIChwcmV2LT5iYXNlID09IG5leHQtPmJh c2UpIHsKKwkJbWVtY3B5KG5leHQtPnNoYWRvdywgcHJldi0+c2hhZG93LCBTSEFET1dfQVJSX1NJ WkUpOworCQlyZXR1cm47CisJfQorCisJLyogQ29udmVydCB0aGUgcHJldmlvdXMgc2hhZG93IHRv IHRoZSBuZXcgYWRkcmVzcyByYW5nZSAqLworCWZvciAoaSA9IDA7IGkgPCBTSEFET1dfQVJSX1NM T1RTOyArK2kpIHsKKwkJaWYgKHByZXYtPnNoYWRvd1tpXSA9PSBTSEFET1dfSU5WQUxJRCkKKwkJ CWNvbnRpbnVlOworCisJCWluZGV4ID0gcHRyX3RvX3NoYWRvdyhuZXh0LCBzaGFkb3dfdG9fcHRy KHByZXYsIGkpKTsKKwkJaWYgKGluZGV4IDwgMCkKKwkJCWNvbnRpbnVlOworCisJCWNoZWNrID0g cHRyX3RvX3NoYWRvdyhuZXh0LAorCQkJCXNoYWRvd190b19jaGVja19mbihwcmV2LCBwcmV2LT5z aGFkb3dbaV0pKTsKKwkJaWYgKGNoZWNrIDwgMCkKKwkJCWNvbnRpbnVlOworCisJCW5leHQtPnNo YWRvd1tpbmRleF0gPSAoc2hhZG93X3QpY2hlY2s7CisJfQorfQorCitzdGF0aWMgdm9pZCBhZGRf bW9kdWxlX3RvX3NoYWRvdyhzdHJ1Y3QgY2ZpX3NoYWRvdyAqcywgc3RydWN0IG1vZHVsZSAqbW9k LAorCQkJdW5zaWduZWQgbG9uZyBtaW5fYWRkciwgdW5zaWduZWQgbG9uZyBtYXhfYWRkcikKK3sK KwlpbnQgY2hlY2tfaW5kZXg7CisJdW5zaWduZWQgbG9uZyBjaGVjayA9ICh1bnNpZ25lZCBsb25n KW1vZC0+Y2ZpX2NoZWNrOworCXVuc2lnbmVkIGxvbmcgcHRyOworCisJaWYgKHVubGlrZWx5KCFQ QUdFX0FMSUdORUQoY2hlY2spKSkgeworCQlwcl93YXJuKCJjZmk6IG5vdCB1c2luZyBzaGFkb3cg Zm9yIG1vZHVsZSAlc1xuIiwgbW9kLT5uYW1lKTsKKwkJcmV0dXJuOworCX0KKworCWNoZWNrX2lu ZGV4ID0gcHRyX3RvX3NoYWRvdyhzLCBjaGVjayk7CisJaWYgKGNoZWNrX2luZGV4IDwgMCkKKwkJ cmV0dXJuOyAvKiBNb2R1bGUgbm90IGFkZHJlc3NhYmxlIHdpdGggc2hhZG93ICovCisKKwkvKiBG b3IgZWFjaCBwYWdlLCBzdG9yZSB0aGUgY2hlY2sgZnVuY3Rpb24gaW5kZXggaW4gdGhlIHNoYWRv dyAqLworCWZvciAocHRyID0gbWluX2FkZHI7IHB0ciA8PSBtYXhfYWRkcjsgcHRyICs9IFBBR0Vf U0laRSkgeworCQlpbnQgaW5kZXggPSBwdHJfdG9fc2hhZG93KHMsIHB0cik7CisKKwkJaWYgKGlu ZGV4ID49IDApIHsKKwkJCS8qIEVhY2ggcGFnZSBtdXN0IG9ubHkgY29udGFpbiBvbmUgbW9kdWxl ICovCisJCQlXQVJOX09OX09OQ0Uocy0+c2hhZG93W2luZGV4XSAhPSBTSEFET1dfSU5WQUxJRCk7 CisJCQlzLT5zaGFkb3dbaW5kZXhdID0gKHNoYWRvd190KWNoZWNrX2luZGV4OworCQl9CisJfQor fQorCitzdGF0aWMgdm9pZCByZW1vdmVfbW9kdWxlX2Zyb21fc2hhZG93KHN0cnVjdCBjZmlfc2hh ZG93ICpzLCBzdHJ1Y3QgbW9kdWxlICptb2QsCisJCXVuc2lnbmVkIGxvbmcgbWluX2FkZHIsIHVu c2lnbmVkIGxvbmcgbWF4X2FkZHIpCit7CisJdW5zaWduZWQgbG9uZyBwdHI7CisKKwlmb3IgKHB0 ciA9IG1pbl9hZGRyOyBwdHIgPD0gbWF4X2FkZHI7IHB0ciArPSBQQUdFX1NJWkUpIHsKKwkJaW50 IGluZGV4ID0gcHRyX3RvX3NoYWRvdyhzLCBwdHIpOworCisJCWlmIChpbmRleCA+PSAwKQorCQkJ cy0+c2hhZG93W2luZGV4XSA9IFNIQURPV19JTlZBTElEOworCX0KK30KKwordHlwZWRlZiB2b2lk ICgqdXBkYXRlX3NoYWRvd19mbikoc3RydWN0IGNmaV9zaGFkb3cgKiwgc3RydWN0IG1vZHVsZSAq LAorCQkJdW5zaWduZWQgbG9uZyBtaW5fYWRkciwgdW5zaWduZWQgbG9uZyBtYXhfYWRkcik7CisK K3N0YXRpYyB2b2lkIHVwZGF0ZV9zaGFkb3coc3RydWN0IG1vZHVsZSAqbW9kLCB1bnNpZ25lZCBs b25nIGJhc2VfYWRkciwKKwkJdXBkYXRlX3NoYWRvd19mbiBmbikKK3sKKwlzdHJ1Y3QgY2ZpX3No YWRvdyAqcHJldjsKKwlzdHJ1Y3QgY2ZpX3NoYWRvdyAqbmV4dDsKKwl1bnNpZ25lZCBsb25nIG1p bl9hZGRyLCBtYXhfYWRkcjsKKworCW5leHQgPSB2bWFsbG9jKFNIQURPV19TSVpFKTsKKworCW11 dGV4X2xvY2soJnNoYWRvd191cGRhdGVfbG9jayk7CisJcHJldiA9IHJjdV9kZXJlZmVyZW5jZV9w cm90ZWN0ZWQoY2ZpX3NoYWRvdywKKwkJCQkJIG11dGV4X2lzX2xvY2tlZCgmc2hhZG93X3VwZGF0 ZV9sb2NrKSk7CisKKwlpZiAobmV4dCkgeworCQluZXh0LT5iYXNlID0gYmFzZV9hZGRyID4+IFBB R0VfU0hJRlQ7CisJCXByZXBhcmVfbmV4dF9zaGFkb3cocHJldiwgbmV4dCk7CisKKwkJbWluX2Fk ZHIgPSAodW5zaWduZWQgbG9uZyltb2QtPmNvcmVfbGF5b3V0LmJhc2U7CisJCW1heF9hZGRyID0g bWluX2FkZHIgKyBtb2QtPmNvcmVfbGF5b3V0LnRleHRfc2l6ZTsKKwkJZm4obmV4dCwgbW9kLCBt aW5fYWRkciAmIFBBR0VfTUFTSywgbWF4X2FkZHIgJiBQQUdFX01BU0spOworCisJCXNldF9tZW1v cnlfcm8oKHVuc2lnbmVkIGxvbmcpbmV4dCwgU0hBRE9XX1BBR0VTKTsKKwl9CisKKwlyY3VfYXNz aWduX3BvaW50ZXIoY2ZpX3NoYWRvdywgbmV4dCk7CisJbXV0ZXhfdW5sb2NrKCZzaGFkb3dfdXBk YXRlX2xvY2spOworCXN5bmNocm9uaXplX3JjdSgpOworCisJaWYgKHByZXYpIHsKKwkJc2V0X21l bW9yeV9ydygodW5zaWduZWQgbG9uZylwcmV2LCBTSEFET1dfUEFHRVMpOworCQl2ZnJlZShwcmV2 KTsKKwl9Cit9CisKK3ZvaWQgY2ZpX21vZHVsZV9hZGQoc3RydWN0IG1vZHVsZSAqbW9kLCB1bnNp Z25lZCBsb25nIGJhc2VfYWRkcikKK3sKKwl1cGRhdGVfc2hhZG93KG1vZCwgYmFzZV9hZGRyLCBh ZGRfbW9kdWxlX3RvX3NoYWRvdyk7Cit9CisKK3ZvaWQgY2ZpX21vZHVsZV9yZW1vdmUoc3RydWN0 IG1vZHVsZSAqbW9kLCB1bnNpZ25lZCBsb25nIGJhc2VfYWRkcikKK3sKKwl1cGRhdGVfc2hhZG93 KG1vZCwgYmFzZV9hZGRyLCByZW1vdmVfbW9kdWxlX2Zyb21fc2hhZG93KTsKK30KKworc3RhdGlj IGlubGluZSBjZmlfY2hlY2tfZm4gcHRyX3RvX2NoZWNrX2ZuKGNvbnN0IHN0cnVjdCBjZmlfc2hh ZG93IF9fcmN1ICpzLAorCXVuc2lnbmVkIGxvbmcgcHRyKQoreworCWludCBpbmRleDsKKworCWlm ICh1bmxpa2VseSghcykpCisJCXJldHVybiBOVUxMOyAvKiBObyBzaGFkb3cgYXZhaWxhYmxlICov CisKKwlpbmRleCA9IHB0cl90b19zaGFkb3cocywgcHRyKTsKKwlpZiAoaW5kZXggPCAwKQorCQly ZXR1cm4gTlVMTDsgLyogQ2Fubm90IGJlIGFkZHJlc3NlZCB3aXRoIHNoYWRvdyAqLworCisJcmV0 dXJuIChjZmlfY2hlY2tfZm4pc2hhZG93X3RvX2NoZWNrX2ZuKHMsIGluZGV4KTsKK30KKworc3Rh dGljIGlubGluZSBjZmlfY2hlY2tfZm4gZmluZF9zaGFkb3dfY2hlY2tfZm4odW5zaWduZWQgbG9u ZyBwdHIpCit7CisJY2ZpX2NoZWNrX2ZuIGZuOworCisJcmN1X3JlYWRfbG9ja19zY2hlZCgpOwor CWZuID0gcHRyX3RvX2NoZWNrX2ZuKHJjdV9kZXJlZmVyZW5jZV9zY2hlZChjZmlfc2hhZG93KSwg cHRyKTsKKwlyY3VfcmVhZF91bmxvY2tfc2NoZWQoKTsKKworCXJldHVybiBmbjsKK30KKworI2Vs c2UgLyogIUNPTkZJR19DRklfQ0xBTkdfU0hBRE9XICovCisKK3N0YXRpYyBpbmxpbmUgY2ZpX2No ZWNrX2ZuIGZpbmRfc2hhZG93X2NoZWNrX2ZuKHVuc2lnbmVkIGxvbmcgcHRyKQoreworCXJldHVy biBOVUxMOworfQorCisjZW5kaWYgLyogQ09ORklHX0NGSV9DTEFOR19TSEFET1cgKi8KKworc3Rh dGljIGlubGluZSBjZmlfY2hlY2tfZm4gZmluZF9tb2R1bGVfY2hlY2tfZm4odW5zaWduZWQgbG9u ZyBwdHIpCit7CisJY2ZpX2NoZWNrX2ZuIGZuID0gTlVMTDsKKwlzdHJ1Y3QgbW9kdWxlICptb2Q7 CisKKwlyY3VfcmVhZF9sb2NrX3NjaGVkKCk7CisJbW9kID0gX19tb2R1bGVfYWRkcmVzcyhwdHIp OworCWlmIChtb2QpCisJCWZuID0gbW9kLT5jZmlfY2hlY2s7CisJcmN1X3JlYWRfdW5sb2NrX3Nj aGVkKCk7CisKKwlyZXR1cm4gZm47Cit9CisKK3N0YXRpYyBpbmxpbmUgY2ZpX2NoZWNrX2ZuIGZp bmRfY2hlY2tfZm4odW5zaWduZWQgbG9uZyBwdHIpCit7CisJY2ZpX2NoZWNrX2ZuIGZuID0gTlVM TDsKKworCWlmIChpc19rZXJuZWxfdGV4dChwdHIpKQorCQlyZXR1cm4gX19jZmlfY2hlY2s7CisK KwkvKgorCSAqIEluZGlyZWN0IGNhbGwgY2hlY2tzIGNhbiBoYXBwZW4gd2hlbiBSQ1UgaXMgbm90 IHdhdGNoaW5nLiBCb3RoCisJICogdGhlIHNoYWRvdyBhbmQgX19tb2R1bGVfYWRkcmVzcyB1c2Ug UkNVLCBzbyB3ZSBuZWVkIHRvIHdha2UgaXQKKwkgKiB1cCBpZiBuZWNlc3NhcnkuCisJICovCisJ UkNVX05PTklETEUoeworCQlpZiAoSVNfRU5BQkxFRChDT05GSUdfQ0ZJX0NMQU5HX1NIQURPVykp CisJCQlmbiA9IGZpbmRfc2hhZG93X2NoZWNrX2ZuKHB0cik7CisKKwkJaWYgKCFmbikKKwkJCWZu ID0gZmluZF9tb2R1bGVfY2hlY2tfZm4ocHRyKTsKKwl9KTsKKworCXJldHVybiBmbjsKK30KKwor dm9pZCBfX2NmaV9zbG93cGF0aF9kaWFnKHVpbnQ2NF90IGlkLCB2b2lkICpwdHIsIHZvaWQgKmRp YWcpCit7CisJY2ZpX2NoZWNrX2ZuIGZuID0gZmluZF9jaGVja19mbigodW5zaWduZWQgbG9uZylw dHIpOworCisJaWYgKGxpa2VseShmbikpCisJCWZuKGlkLCBwdHIsIGRpYWcpOworCWVsc2UgLyog RG9uJ3QgYWxsb3cgdW5jaGVja2VkIG1vZHVsZXMgKi8KKwkJaGFuZGxlX2NmaV9mYWlsdXJlKHB0 cik7Cit9CitFWFBPUlRfU1lNQk9MKF9fY2ZpX3Nsb3dwYXRoX2RpYWcpOworCisjZWxzZSAvKiAh Q09ORklHX01PRFVMRVMgKi8KKwordm9pZCBfX2NmaV9zbG93cGF0aF9kaWFnKHVpbnQ2NF90IGlk LCB2b2lkICpwdHIsIHZvaWQgKmRpYWcpCit7CisJaGFuZGxlX2NmaV9mYWlsdXJlKHB0cik7IC8q IE5vIG1vZHVsZXMgKi8KK30KK0VYUE9SVF9TWU1CT0woX19jZmlfc2xvd3BhdGhfZGlhZyk7CisK KyNlbmRpZiAvKiBDT05GSUdfTU9EVUxFUyAqLworCit2b2lkIGNmaV9mYWlsdXJlX2hhbmRsZXIo dm9pZCAqZGF0YSwgdm9pZCAqcHRyLCB2b2lkICp2dGFibGUpCit7CisJaGFuZGxlX2NmaV9mYWls dXJlKHB0cik7Cit9CitFWFBPUlRfU1lNQk9MKGNmaV9mYWlsdXJlX2hhbmRsZXIpOwpkaWZmIC0t Z2l0IGEva2VybmVsL21vZHVsZS5jIGIva2VybmVsL21vZHVsZS5jCmluZGV4IDMwNDc5MzU1YWI4 NS4uMjBmYjAwNGU3ZDhkIDEwMDY0NAotLS0gYS9rZXJuZWwvbW9kdWxlLmMKKysrIGIva2VybmVs L21vZHVsZS5jCkBAIC0yMTQ2LDYgKzIxNDYsOCBAQCB2b2lkIF9fd2VhayBtb2R1bGVfYXJjaF9m cmVlaW5nX2luaXQoc3RydWN0IG1vZHVsZSAqbW9kKQogewogfQogCitzdGF0aWMgdm9pZCBjZmlf Y2xlYW51cChzdHJ1Y3QgbW9kdWxlICptb2QpOworCiAvKiBGcmVlIGEgbW9kdWxlLCByZW1vdmUg ZnJvbSBsaXN0cywgZXRjLiAqLwogc3RhdGljIHZvaWQgZnJlZV9tb2R1bGUoc3RydWN0IG1vZHVs ZSAqbW9kKQogewpAQCAtMjE4Nyw2ICsyMTg5LDkgQEAgc3RhdGljIHZvaWQgZnJlZV9tb2R1bGUo c3RydWN0IG1vZHVsZSAqbW9kKQogCXN5bmNocm9uaXplX3JjdSgpOwogCW11dGV4X3VubG9jaygm bW9kdWxlX211dGV4KTsKIAorCS8qIENsZWFuIHVwIENGSSBmb3IgdGhlIG1vZHVsZS4gKi8KKwlj ZmlfY2xlYW51cChtb2QpOworCiAJLyogVGhpcyBtYXkgYmUgZW1wdHksIGJ1dCB0aGF0J3MgT0sg Ki8KIAltb2R1bGVfYXJjaF9mcmVlaW5nX2luaXQobW9kKTsKIAltb2R1bGVfbWVtZnJlZShtb2Qt PmluaXRfbGF5b3V0LmJhc2UpOwpAQCAtMzg2Niw2ICszODcxLDggQEAgc3RhdGljIGludCB1bmtu b3duX21vZHVsZV9wYXJhbV9jYihjaGFyICpwYXJhbSwgY2hhciAqdmFsLCBjb25zdCBjaGFyICpt b2RuYW1lLAogCXJldHVybiAwOwogfQogCitzdGF0aWMgdm9pZCBjZmlfaW5pdChzdHJ1Y3QgbW9k dWxlICptb2QpOworCiAvKgogICogQWxsb2NhdGUgYW5kIGxvYWQgdGhlIG1vZHVsZTogbm90ZSB0 aGF0IHNpemUgb2Ygc2VjdGlvbiAwIGlzIGFsd2F5cwogICogemVybywgYW5kIHdlIHJlbHkgb24g dGhpcyBmb3Igb3B0aW9uYWwgc2VjdGlvbnMuCkBAIC0zOTk3LDYgKzQwMDQsOSBAQCBzdGF0aWMg aW50IGxvYWRfbW9kdWxlKHN0cnVjdCBsb2FkX2luZm8gKmluZm8sIGNvbnN0IGNoYXIgX191c2Vy ICp1YXJncywKIAogCWZsdXNoX21vZHVsZV9pY2FjaGUobW9kKTsKIAorCS8qIFNldHVwIENGSSBm b3IgdGhlIG1vZHVsZS4gKi8KKwljZmlfaW5pdChtb2QpOworCiAJLyogTm93IGNvcHkgaW4gYXJn cyAqLwogCW1vZC0+YXJncyA9IHN0cm5kdXBfdXNlcih1YXJncywgfjBVTCA+PiAxKTsKIAlpZiAo SVNfRVJSKG1vZC0+YXJncykpIHsKQEAgLTQwNzAsNiArNDA4MCw3IEBAIHN0YXRpYyBpbnQgbG9h ZF9tb2R1bGUoc3RydWN0IGxvYWRfaW5mbyAqaW5mbywgY29uc3QgY2hhciBfX3VzZXIgKnVhcmdz LAogCXN5bmNocm9uaXplX3JjdSgpOwogCWtmcmVlKG1vZC0+YXJncyk7CiAgZnJlZV9hcmNoX2Ns ZWFudXA6CisJY2ZpX2NsZWFudXAobW9kKTsKIAltb2R1bGVfYXJjaF9jbGVhbnVwKG1vZCk7CiAg ZnJlZV9tb2RpbmZvOgogCWZyZWVfbW9kaW5mbyhtb2QpOwpAQCAtNDQxNSw2ICs0NDI2LDM4IEBA IGludCBtb2R1bGVfa2FsbHN5bXNfb25fZWFjaF9zeW1ib2woaW50ICgqZm4pKHZvaWQgKiwgY29u c3QgY2hhciAqLAogI2VuZGlmIC8qIENPTkZJR19MSVZFUEFUQ0ggKi8KICNlbmRpZiAvKiBDT05G SUdfS0FMTFNZTVMgKi8KIAorc3RhdGljIHZvaWQgY2ZpX2luaXQoc3RydWN0IG1vZHVsZSAqbW9k KQoreworI2lmZGVmIENPTkZJR19DRklfQ0xBTkcKKwlpbml0Y2FsbF90ICppbml0OworCWV4aXRj YWxsX3QgKmV4aXQ7CisKKwlyY3VfcmVhZF9sb2NrX3NjaGVkKCk7CisJbW9kLT5jZmlfY2hlY2sg PSAoY2ZpX2NoZWNrX2ZuKQorCQlmaW5kX2thbGxzeW1zX3N5bWJvbF92YWx1ZShtb2QsICJfX2Nm aV9jaGVjayIpOworCWluaXQgPSAoaW5pdGNhbGxfdCAqKQorCQlmaW5kX2thbGxzeW1zX3N5bWJv bF92YWx1ZShtb2QsICJfX2NmaV9qdF9pbml0X21vZHVsZSIpOworCWV4aXQgPSAoZXhpdGNhbGxf dCAqKQorCQlmaW5kX2thbGxzeW1zX3N5bWJvbF92YWx1ZShtb2QsICJfX2NmaV9qdF9jbGVhbnVw X21vZHVsZSIpOworCXJjdV9yZWFkX3VubG9ja19zY2hlZCgpOworCisJLyogRml4IGluaXQvZXhp dCBmdW5jdGlvbnMgdG8gcG9pbnQgdG8gdGhlIENGSSBqdW1wIHRhYmxlICovCisJaWYgKGluaXQp CisJCW1vZC0+aW5pdCA9ICppbml0OworCWlmIChleGl0KQorCQltb2QtPmV4aXQgPSAqZXhpdDsK KworCWNmaV9tb2R1bGVfYWRkKG1vZCwgbW9kdWxlX2FkZHJfbWluKTsKKyNlbmRpZgorfQorCitz dGF0aWMgdm9pZCBjZmlfY2xlYW51cChzdHJ1Y3QgbW9kdWxlICptb2QpCit7CisjaWZkZWYgQ09O RklHX0NGSV9DTEFORworCWNmaV9tb2R1bGVfcmVtb3ZlKG1vZCwgbW9kdWxlX2FkZHJfbWluKTsK KyNlbmRpZgorfQorCiAvKiBNYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHdyaXR0ZW4gYnkg bW9kdWxlX2ZsYWdzKCkgKi8KICNkZWZpbmUgTU9EVUxFX0ZMQUdTX0JVRl9TSVpFIChUQUlOVF9G TEFHU19DT1VOVCArIDQpCiAKZGlmZiAtLWdpdCBhL3NjcmlwdHMvTWFrZWZpbGUubW9kZmluYWwg Yi9zY3JpcHRzL01ha2VmaWxlLm1vZGZpbmFsCmluZGV4IDczNWUxMWU5MDQxYi4uZGQ4N2NlYTlm YmE3IDEwMDY0NAotLS0gYS9zY3JpcHRzL01ha2VmaWxlLm1vZGZpbmFsCisrKyBiL3NjcmlwdHMv TWFrZWZpbGUubW9kZmluYWwKQEAgLTIzLDcgKzIzLDcgQEAgbW9kbmFtZSA9ICQobm90ZGlyICQo QDoubW9kLm89KSkKIHBhcnQtb2YtbW9kdWxlID0geQogCiBxdWlldF9jbWRfY2Nfb19jID0gQ0Mg W01dICAkQAotICAgICAgY21kX2NjX29fYyA9ICQoQ0MpICQoY19mbGFncykgLWMgLW8gJEAgJDwK KyAgICAgIGNtZF9jY19vX2MgPSAkKENDKSAkKGZpbHRlci1vdXQgJChDQ19GTEFHU19DRkkpLCAk KGNfZmxhZ3MpKSAtYyAtbyAkQCAkPAogCiAlLm1vZC5vOiAlLm1vZC5jIEZPUkNFCiAJJChjYWxs IGlmX2NoYW5nZWRfZGVwLGNjX29fYykKLS0gCjIuMzEuMC4yOTEuZzU3NmJhOWRjZGFmLWdvb2cK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1h cm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5v cmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0t a2VybmVsCg==