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 911ADC433E9 for ; Thu, 18 Mar 2021 17:13: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 4CF2A601FF for ; Thu, 18 Mar 2021 17:13:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4CF2A601FF 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=K6HGDzv9NsH7q3V0qCmM+xgIuDXY3It1YJfZnIpupw8=; b=VbJv0WWV2lDTpt YBb6hwC1w38xTp1OVB8CZo/od3qRSM8gxw3iJgMHfxErVOyTsh+OSeBVsjE0uJZmS+eUo+DDEr64b O90Q8OlECAykp0UlR6ApeRiNoTBZ19BMnk9FBWXQK+YCPM0A3RzD1uwfhPochSUCmJJdRwMC3FL4n +U5DXr3LQZ3wS/VxrZwh7YADzKl7NXX68KiCLW4rh1vUZJdsvOkBoz9Tc8rbwEq1oTFQiCP3GvMyn N8evmn1AhYImG5eTnr0OPl90x6Tj78QZJIExDMz2or0igrPcaByCzlasqaaJHZfbjl3YehSQwosOM 0XJIko311V+cqSJgnAig==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lMwBH-005flv-N3; Thu, 18 Mar 2021 17:11:31 +0000 Received: from mail-pg1-x54a.google.com ([2607:f8b0:4864:20::54a]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lMwB6-005fgv-Mh for linux-arm-kernel@lists.infradead.org; Thu, 18 Mar 2021 17:11:23 +0000 Received: by mail-pg1-x54a.google.com with SMTP id o9so8694601pgm.15 for ; Thu, 18 Mar 2021 10:11:18 -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=40IXvbEGegumr/e0JekwqqPdN8gPpMDEvpqbwL87e34=; b=jgiPqnE13LJHLCpVJBdEZpYgmkikZptA7F1JF9CvWtSXN3u3PObfo6NoQ8cL81PXyK DWagDFFEpsc+Qe5YM8pIVT/1ik80XmSENvM5S9/RUY3c5eZ1a2XsLfOPo3BiqGUul7Ao HNy4kY/7e2ZHLrqXcr9ANtJwkeMMN3k8qaS/nf0lDH28YYATW/xCJ78ChvajEK8VomaT qlV4PeiDdnYzATSq4dPFxbVXn3Qlo24+Ah1BBFqYUR6tOyIp8pUtVBIhUsDSkqWJkwJz IwTntbV3JL0kJXET2QCUQKkCpUy66ywe63mvqE1y3thZ/2YtsvYSlr/s/SsaUTDGXFU6 D9xQ== 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=40IXvbEGegumr/e0JekwqqPdN8gPpMDEvpqbwL87e34=; b=BKzmn7c9/2q7Yiopjy1qvd/9hSwfFV2PjBCe+9y4aRYXJSG88KxYx+kvvrpx+PJB46 yxuqW9/JmgWRtluvtz1xcNNqnXhDdM6gZj8d8zrk6+wWYtZJmmw7A5tfa7vPqjOKm3P4 hJqGykUOiuq2A4pFsFKcKVnRqcBw+80KjUmLwQLYBJ5VocDxIZ/OwY49CIiNNlkm4ryE O35m4ryICnZR3lFvX6KwROMumXNCLRoFc7F933UrmNT2glIsP0qW26bZiaii9buj+PXG /kYWyAKM9gM7Js0QpzCgltHAdPCzYhRUrcD+qv2Ys/qq+2N6LGjHrtVI+M3rCKimTX8y u7SQ== X-Gm-Message-State: AOAM531lI4m017HLxHlm1QAAOWy9TdOEBDtb7avW+z0rJmFckOtlAIbs sZnvV7FEEHXlLuzcI1SmW/OPkh6kja4DmIwtSfQ= X-Google-Smtp-Source: ABdhPJy6RWtjBdfbwPb/ObFvM7f5GDoEQpCdEGgoT0eTSp/y8lkRlLnCLffte211hFjV7XPDixhB62VZo/qPuaqa1R8= X-Received: from samitolvanen1.mtv.corp.google.com ([2620:15c:201:2:c0d7:a7ba:fb41:a35a]) (user=samitolvanen job=sendgmr) by 2002:a62:1913:0:b029:20f:eadf:28c1 with SMTP id 19-20020a6219130000b029020feadf28c1mr4685343pfz.58.1616087477482; Thu, 18 Mar 2021 10:11:17 -0700 (PDT) Date: Thu, 18 Mar 2021 10:10:55 -0700 In-Reply-To: <20210318171111.706303-1-samitolvanen@google.com> Message-Id: <20210318171111.706303-2-samitolvanen@google.com> Mime-Version: 1.0 References: <20210318171111.706303-1-samitolvanen@google.com> X-Mailer: git-send-email 2.31.0.291.g576ba9dcdaf-goog Subject: [PATCH v2 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 , 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-20210318_171120_914572_95D422CE X-CRM114-Status: GOOD ( 36.46 ) 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 ZSBiL01ha2VmaWxlCmluZGV4IGEyOGJiMzc0NjYzZC4uOWE5ZTc1YjkzN2Y5IDEwMDY0NAotLS0g 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 ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhjOWVkM2Y3MDU4YQotLS0g 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 YXRlX2xvY2spOworCXN5bmNocm9uaXplX3JjdV9leHBlZGl0ZWQoKTsKKworCWlmIChwcmV2KSB7 CisJCXNldF9tZW1vcnlfcncoKHVuc2lnbmVkIGxvbmcpcHJldiwgU0hBRE9XX1BBR0VTKTsKKwkJ dmZyZWUocHJldik7CisJfQorfQorCit2b2lkIGNmaV9tb2R1bGVfYWRkKHN0cnVjdCBtb2R1bGUg Km1vZCwgdW5zaWduZWQgbG9uZyBiYXNlX2FkZHIpCit7CisJdXBkYXRlX3NoYWRvdyhtb2QsIGJh c2VfYWRkciwgYWRkX21vZHVsZV90b19zaGFkb3cpOworfQorCit2b2lkIGNmaV9tb2R1bGVfcmVt b3ZlKHN0cnVjdCBtb2R1bGUgKm1vZCwgdW5zaWduZWQgbG9uZyBiYXNlX2FkZHIpCit7CisJdXBk YXRlX3NoYWRvdyhtb2QsIGJhc2VfYWRkciwgcmVtb3ZlX21vZHVsZV9mcm9tX3NoYWRvdyk7Cit9 CisKK3N0YXRpYyBpbmxpbmUgY2ZpX2NoZWNrX2ZuIHB0cl90b19jaGVja19mbihjb25zdCBzdHJ1 Y3QgY2ZpX3NoYWRvdyBfX3JjdSAqcywKKwl1bnNpZ25lZCBsb25nIHB0cikKK3sKKwlpbnQgaW5k ZXg7CisKKwlpZiAodW5saWtlbHkoIXMpKQorCQlyZXR1cm4gTlVMTDsgLyogTm8gc2hhZG93IGF2 YWlsYWJsZSAqLworCisJaW5kZXggPSBwdHJfdG9fc2hhZG93KHMsIHB0cik7CisJaWYgKGluZGV4 IDwgMCkKKwkJcmV0dXJuIE5VTEw7IC8qIENhbm5vdCBiZSBhZGRyZXNzZWQgd2l0aCBzaGFkb3cg Ki8KKworCXJldHVybiAoY2ZpX2NoZWNrX2ZuKXNoYWRvd190b19jaGVja19mbihzLCBpbmRleCk7 Cit9CisKK3N0YXRpYyBpbmxpbmUgY2ZpX2NoZWNrX2ZuIGZpbmRfc2hhZG93X2NoZWNrX2ZuKHVu c2lnbmVkIGxvbmcgcHRyKQoreworCWNmaV9jaGVja19mbiBmbjsKKworCXJjdV9yZWFkX2xvY2tf c2NoZWQoKTsKKwlmbiA9IHB0cl90b19jaGVja19mbihyY3VfZGVyZWZlcmVuY2Vfc2NoZWQoY2Zp X3NoYWRvdyksIHB0cik7CisJcmN1X3JlYWRfdW5sb2NrX3NjaGVkKCk7CisKKwlyZXR1cm4gZm47 Cit9CisKKyNlbHNlIC8qICFDT05GSUdfQ0ZJX0NMQU5HX1NIQURPVyAqLworCitzdGF0aWMgaW5s aW5lIGNmaV9jaGVja19mbiBmaW5kX3NoYWRvd19jaGVja19mbih1bnNpZ25lZCBsb25nIHB0cikK K3sKKwlyZXR1cm4gTlVMTDsKK30KKworI2VuZGlmIC8qIENPTkZJR19DRklfQ0xBTkdfU0hBRE9X ICovCisKK3N0YXRpYyBpbmxpbmUgY2ZpX2NoZWNrX2ZuIGZpbmRfbW9kdWxlX2NoZWNrX2ZuKHVu c2lnbmVkIGxvbmcgcHRyKQoreworCWNmaV9jaGVja19mbiBmbiA9IE5VTEw7CisJc3RydWN0IG1v ZHVsZSAqbW9kOworCisJcmN1X3JlYWRfbG9ja19zY2hlZCgpOworCW1vZCA9IF9fbW9kdWxlX2Fk ZHJlc3MocHRyKTsKKwlpZiAobW9kKQorCQlmbiA9IG1vZC0+Y2ZpX2NoZWNrOworCXJjdV9yZWFk X3VubG9ja19zY2hlZCgpOworCisJcmV0dXJuIGZuOworfQorCitzdGF0aWMgaW5saW5lIGNmaV9j aGVja19mbiBmaW5kX2NoZWNrX2ZuKHVuc2lnbmVkIGxvbmcgcHRyKQoreworCWNmaV9jaGVja19m biBmbiA9IE5VTEw7CisKKwlpZiAoaXNfa2VybmVsX3RleHQocHRyKSkKKwkJcmV0dXJuIF9fY2Zp X2NoZWNrOworCisJLyoKKwkgKiBJbmRpcmVjdCBjYWxsIGNoZWNrcyBjYW4gaGFwcGVuIHdoZW4g UkNVIGlzIG5vdCB3YXRjaGluZy4gQm90aAorCSAqIHRoZSBzaGFkb3cgYW5kIF9fbW9kdWxlX2Fk ZHJlc3MgdXNlIFJDVSwgc28gd2UgbmVlZCB0byB3YWtlIGl0CisJICogdXAgaWYgbmVjZXNzYXJ5 LgorCSAqLworCVJDVV9OT05JRExFKHsKKwkJaWYgKElTX0VOQUJMRUQoQ09ORklHX0NGSV9DTEFO R19TSEFET1cpKQorCQkJZm4gPSBmaW5kX3NoYWRvd19jaGVja19mbihwdHIpOworCisJCWlmICgh Zm4pCisJCQlmbiA9IGZpbmRfbW9kdWxlX2NoZWNrX2ZuKHB0cik7CisJfSk7CisKKwlyZXR1cm4g Zm47Cit9CisKK3ZvaWQgX19jZmlfc2xvd3BhdGhfZGlhZyh1aW50NjRfdCBpZCwgdm9pZCAqcHRy LCB2b2lkICpkaWFnKQoreworCWNmaV9jaGVja19mbiBmbiA9IGZpbmRfY2hlY2tfZm4oKHVuc2ln bmVkIGxvbmcpcHRyKTsKKworCWlmIChsaWtlbHkoZm4pKQorCQlmbihpZCwgcHRyLCBkaWFnKTsK KwllbHNlIC8qIERvbid0IGFsbG93IHVuY2hlY2tlZCBtb2R1bGVzICovCisJCWhhbmRsZV9jZmlf ZmFpbHVyZShwdHIpOworfQorRVhQT1JUX1NZTUJPTChfX2NmaV9zbG93cGF0aF9kaWFnKTsKKwor I2Vsc2UgLyogIUNPTkZJR19NT0RVTEVTICovCisKK3ZvaWQgX19jZmlfc2xvd3BhdGhfZGlhZyh1 aW50NjRfdCBpZCwgdm9pZCAqcHRyLCB2b2lkICpkaWFnKQoreworCWhhbmRsZV9jZmlfZmFpbHVy ZShwdHIpOyAvKiBObyBtb2R1bGVzICovCit9CitFWFBPUlRfU1lNQk9MKF9fY2ZpX3Nsb3dwYXRo X2RpYWcpOworCisjZW5kaWYgLyogQ09ORklHX01PRFVMRVMgKi8KKwordm9pZCBjZmlfZmFpbHVy ZV9oYW5kbGVyKHZvaWQgKmRhdGEsIHZvaWQgKnB0ciwgdm9pZCAqdnRhYmxlKQoreworCWhhbmRs ZV9jZmlfZmFpbHVyZShwdHIpOworfQorRVhQT1JUX1NZTUJPTChjZmlfZmFpbHVyZV9oYW5kbGVy KTsKZGlmZiAtLWdpdCBhL2tlcm5lbC9tb2R1bGUuYyBiL2tlcm5lbC9tb2R1bGUuYwppbmRleCAz MDQ3OTM1NWFiODUuLjIwZmIwMDRlN2Q4ZCAxMDA2NDQKLS0tIGEva2VybmVsL21vZHVsZS5jCisr KyBiL2tlcm5lbC9tb2R1bGUuYwpAQCAtMjE0Niw2ICsyMTQ2LDggQEAgdm9pZCBfX3dlYWsgbW9k dWxlX2FyY2hfZnJlZWluZ19pbml0KHN0cnVjdCBtb2R1bGUgKm1vZCkKIHsKIH0KIAorc3RhdGlj IHZvaWQgY2ZpX2NsZWFudXAoc3RydWN0IG1vZHVsZSAqbW9kKTsKKwogLyogRnJlZSBhIG1vZHVs ZSwgcmVtb3ZlIGZyb20gbGlzdHMsIGV0Yy4gKi8KIHN0YXRpYyB2b2lkIGZyZWVfbW9kdWxlKHN0 cnVjdCBtb2R1bGUgKm1vZCkKIHsKQEAgLTIxODcsNiArMjE4OSw5IEBAIHN0YXRpYyB2b2lkIGZy ZWVfbW9kdWxlKHN0cnVjdCBtb2R1bGUgKm1vZCkKIAlzeW5jaHJvbml6ZV9yY3UoKTsKIAltdXRl eF91bmxvY2soJm1vZHVsZV9tdXRleCk7CiAKKwkvKiBDbGVhbiB1cCBDRkkgZm9yIHRoZSBtb2R1 bGUuICovCisJY2ZpX2NsZWFudXAobW9kKTsKKwogCS8qIFRoaXMgbWF5IGJlIGVtcHR5LCBidXQg dGhhdCdzIE9LICovCiAJbW9kdWxlX2FyY2hfZnJlZWluZ19pbml0KG1vZCk7CiAJbW9kdWxlX21l bWZyZWUobW9kLT5pbml0X2xheW91dC5iYXNlKTsKQEAgLTM4NjYsNiArMzg3MSw4IEBAIHN0YXRp YyBpbnQgdW5rbm93bl9tb2R1bGVfcGFyYW1fY2IoY2hhciAqcGFyYW0sIGNoYXIgKnZhbCwgY29u c3QgY2hhciAqbW9kbmFtZSwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIHZvaWQgY2ZpX2luaXQo c3RydWN0IG1vZHVsZSAqbW9kKTsKKwogLyoKICAqIEFsbG9jYXRlIGFuZCBsb2FkIHRoZSBtb2R1 bGU6IG5vdGUgdGhhdCBzaXplIG9mIHNlY3Rpb24gMCBpcyBhbHdheXMKICAqIHplcm8sIGFuZCB3 ZSByZWx5IG9uIHRoaXMgZm9yIG9wdGlvbmFsIHNlY3Rpb25zLgpAQCAtMzk5Nyw2ICs0MDA0LDkg QEAgc3RhdGljIGludCBsb2FkX21vZHVsZShzdHJ1Y3QgbG9hZF9pbmZvICppbmZvLCBjb25zdCBj aGFyIF9fdXNlciAqdWFyZ3MsCiAKIAlmbHVzaF9tb2R1bGVfaWNhY2hlKG1vZCk7CiAKKwkvKiBT ZXR1cCBDRkkgZm9yIHRoZSBtb2R1bGUuICovCisJY2ZpX2luaXQobW9kKTsKKwogCS8qIE5vdyBj b3B5IGluIGFyZ3MgKi8KIAltb2QtPmFyZ3MgPSBzdHJuZHVwX3VzZXIodWFyZ3MsIH4wVUwgPj4g MSk7CiAJaWYgKElTX0VSUihtb2QtPmFyZ3MpKSB7CkBAIC00MDcwLDYgKzQwODAsNyBAQCBzdGF0 aWMgaW50IGxvYWRfbW9kdWxlKHN0cnVjdCBsb2FkX2luZm8gKmluZm8sIGNvbnN0IGNoYXIgX191 c2VyICp1YXJncywKIAlzeW5jaHJvbml6ZV9yY3UoKTsKIAlrZnJlZShtb2QtPmFyZ3MpOwogIGZy ZWVfYXJjaF9jbGVhbnVwOgorCWNmaV9jbGVhbnVwKG1vZCk7CiAJbW9kdWxlX2FyY2hfY2xlYW51 cChtb2QpOwogIGZyZWVfbW9kaW5mbzoKIAlmcmVlX21vZGluZm8obW9kKTsKQEAgLTQ0MTUsNiAr NDQyNiwzOCBAQCBpbnQgbW9kdWxlX2thbGxzeW1zX29uX2VhY2hfc3ltYm9sKGludCAoKmZuKSh2 b2lkICosIGNvbnN0IGNoYXIgKiwKICNlbmRpZiAvKiBDT05GSUdfTElWRVBBVENIICovCiAjZW5k aWYgLyogQ09ORklHX0tBTExTWU1TICovCiAKK3N0YXRpYyB2b2lkIGNmaV9pbml0KHN0cnVjdCBt b2R1bGUgKm1vZCkKK3sKKyNpZmRlZiBDT05GSUdfQ0ZJX0NMQU5HCisJaW5pdGNhbGxfdCAqaW5p dDsKKwlleGl0Y2FsbF90ICpleGl0OworCisJcmN1X3JlYWRfbG9ja19zY2hlZCgpOworCW1vZC0+ Y2ZpX2NoZWNrID0gKGNmaV9jaGVja19mbikKKwkJZmluZF9rYWxsc3ltc19zeW1ib2xfdmFsdWUo bW9kLCAiX19jZmlfY2hlY2siKTsKKwlpbml0ID0gKGluaXRjYWxsX3QgKikKKwkJZmluZF9rYWxs c3ltc19zeW1ib2xfdmFsdWUobW9kLCAiX19jZmlfanRfaW5pdF9tb2R1bGUiKTsKKwlleGl0ID0g KGV4aXRjYWxsX3QgKikKKwkJZmluZF9rYWxsc3ltc19zeW1ib2xfdmFsdWUobW9kLCAiX19jZmlf anRfY2xlYW51cF9tb2R1bGUiKTsKKwlyY3VfcmVhZF91bmxvY2tfc2NoZWQoKTsKKworCS8qIEZp eCBpbml0L2V4aXQgZnVuY3Rpb25zIHRvIHBvaW50IHRvIHRoZSBDRkkganVtcCB0YWJsZSAqLwor CWlmIChpbml0KQorCQltb2QtPmluaXQgPSAqaW5pdDsKKwlpZiAoZXhpdCkKKwkJbW9kLT5leGl0 ID0gKmV4aXQ7CisKKwljZmlfbW9kdWxlX2FkZChtb2QsIG1vZHVsZV9hZGRyX21pbik7CisjZW5k aWYKK30KKworc3RhdGljIHZvaWQgY2ZpX2NsZWFudXAoc3RydWN0IG1vZHVsZSAqbW9kKQorewor I2lmZGVmIENPTkZJR19DRklfQ0xBTkcKKwljZmlfbW9kdWxlX3JlbW92ZShtb2QsIG1vZHVsZV9h ZGRyX21pbik7CisjZW5kaWYKK30KKwogLyogTWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB3 cml0dGVuIGJ5IG1vZHVsZV9mbGFncygpICovCiAjZGVmaW5lIE1PRFVMRV9GTEFHU19CVUZfU0la RSAoVEFJTlRfRkxBR1NfQ09VTlQgKyA0KQogCmRpZmYgLS1naXQgYS9zY3JpcHRzL01ha2VmaWxl Lm1vZGZpbmFsIGIvc2NyaXB0cy9NYWtlZmlsZS5tb2RmaW5hbAppbmRleCA3MzVlMTFlOTA0MWIu LmRkODdjZWE5ZmJhNyAxMDA2NDQKLS0tIGEvc2NyaXB0cy9NYWtlZmlsZS5tb2RmaW5hbAorKysg Yi9zY3JpcHRzL01ha2VmaWxlLm1vZGZpbmFsCkBAIC0yMyw3ICsyMyw3IEBAIG1vZG5hbWUgPSAk KG5vdGRpciAkKEA6Lm1vZC5vPSkpCiBwYXJ0LW9mLW1vZHVsZSA9IHkKIAogcXVpZXRfY21kX2Nj X29fYyA9IENDIFtNXSAgJEAKLSAgICAgIGNtZF9jY19vX2MgPSAkKENDKSAkKGNfZmxhZ3MpIC1j IC1vICRAICQ8CisgICAgICBjbWRfY2Nfb19jID0gJChDQykgJChmaWx0ZXItb3V0ICQoQ0NfRkxB R1NfQ0ZJKSwgJChjX2ZsYWdzKSkgLWMgLW8gJEAgJDwKIAogJS5tb2QubzogJS5tb2QuYyBGT1JD RQogCSQoY2FsbCBpZl9jaGFuZ2VkX2RlcCxjY19vX2MpCi0tIAoyLjMxLjAuMjkxLmc1NzZiYTlk Y2RhZi1nb29nCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5p bmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8v bGludXgtYXJtLWtlcm5lbAo=