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_SIGNED,DKIM_VALID,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 A6EE7C4361B for ; Thu, 17 Dec 2020 16:04:44 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 46063239A4 for ; Thu, 17 Dec 2020 16:04:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 46063239A4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=2wZqajqAkP87jh23wynjKJKIChXSDx6SZzqtu2IqvvY=; b=0PBcaPvy5CDTNo/sehpA5hrQ+ EqKWih4gfiR/Cp9dh6ZcaV31HEOjkxLQDgHB6rXmnkLAAORRbLZm0k7bTZXKgXuY3ZCKFGqBxsIPq VVkTk162m/OLcu9qZ/ihLQwqWGDQY3Qp4Rmay4PuIohVvMDr1FYh8blEmZo7hFlQJWwQ30vlIxfJi rYJtjPFS310xvsd5uVAcNCJ5V/BSzosJTLf76gFaoBhESM5wNy0+R0aia1RkqsQb8WuV+fnRQiY3t 5piOSCYlcFs0kt6jc2u2vgT7oGpLmBUL4ondW9t4fOU6yN+X0qgPDFIu/LX99e8ITY9l3ZKlTG86s CNRHUn33w==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kpvle-0008Ib-Bg; Thu, 17 Dec 2020 16:04:38 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kpvlb-0008Hq-E7 for linux-riscv@lists.infradead.org; Thu, 17 Dec 2020 16:04:37 +0000 From: guoren@kernel.org Authentication-Results: mail.kernel.org; dkim=permerror (bad message/signature format) To: palmerdabbelt@google.com, paul.walmsley@sifive.com, mhiramat@kernel.org, alankao@andestech.com, rostedt@goodmis.org, bjorn.topel@intel.com, pdp7pdp7@gmail.com Subject: [PATCH v5 6/9] riscv: Add kprobes supported Date: Thu, 17 Dec 2020 16:01:42 +0000 Message-Id: <1608220905-1962-7-git-send-email-guoren@kernel.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1608220905-1962-1-git-send-email-guoren@kernel.org> References: <1608220905-1962-1-git-send-email-guoren@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201217_110435_639225_9346B631 X-CRM114-Status: GOOD ( 28.59 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: me@packi.ch, Guo Ren , anup@brainfault.org, linux-kernel@vger.kernel.org, linux-csky@vger.kernel.org, guoren@kernel.org, zong.li@sifive.com, =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , greentime.hu@sifive.com, linux-riscv@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org RnJvbTogR3VvIFJlbiA8Z3VvcmVuQGxpbnV4LmFsaWJhYmEuY29tPgoKVGhpcyBwYXRjaCBlbmFi bGVzICJrcHJvYmUgJiBrcmV0cHJvYmUiIHRvIHdvcmsgd2l0aCBmdHJhY2UKaW50ZXJmYWNlLiBJ dCB1dGlsaXplZCBzb2Z0d2FyZSBicmVha3BvaW50IGFzIHNpbmdsZS1zdGVwCm1lY2hhbmlzbS4K ClNvbWUgaW5zdHJ1Y3Rpb25zIHdoaWNoIGNhbid0IGJlIHNpbmdsZS1zdGVwIGV4ZWN1dGVkIG11 c3QgYmUKc2ltdWxhdGVkIGluIGtlcm5lbCBleGVjdXRpb24gc2xvdCwgc3VjaCBhczogYnJhbmNo LCBqYWwsIGF1aXBjLApsYSAuLi4KClNvbWUgaW5zdHJ1Y3Rpb25zIHNob3VsZCBiZSByZWplY3Rl ZCBmb3IgcHJvYmluZyBhbmQgd2UgdXNlIGEKYmxhY2tsaXN0IHRvIGZpbHRlciwgc3VjaCBhczog ZWNhbGwsIGVicmVhaywgLi4uCgpXZSB1c2UgZWJyZWFrICYgYy5lYnJlYWsgdG8gcmVwbGFjZSBv cmlnaW4gaW5zdHJ1Y3Rpb24gYW5kIHRoZQprcHJvYmUgaGFuZGxlciBwcmVwYXJlcyBhbiBleGVj dXRhYmxlIG1lbW9yeSBzbG90IGZvciBvdXQtb2YtbGluZQpleGVjdXRpb24gd2l0aCBhIGNvcHkg b2YgdGhlIG9yaWdpbmFsIGluc3RydWN0aW9uIGJlaW5nIHByb2JlZC4KSW4gZXhlY3V0aW9uIHNs b3Qgd2UgYWRkIGVicmVhayBiZWhpbmQgb3JpZ2luYWwgaW5zdHJ1Y3Rpb24gdG8Kc2ltdWxhdGUg YSBzaW5nbGUtc2V0cCBtZWNoYW5pc20uCgpUaGUgcGF0Y2ggaXMgYmFzZWQgb24gcGFja2kncyB3 b3JrIFsxXSBhbmQgY3NreSdzIHdvcmsgWzJdLgogLSBUaGUga3Byb2Jlc190cmFtcG9saW5lLlMg aXMgYWxsIGZyb20gcGFja2kncyBwYXRjaAogLSBUaGUgc2luZ2xlLXN0ZXAgbWVjaGFuaXNtIGlz IG5ldyBkZXNpZ25lZCBmb3IgcmlzY3Ygd2l0aG91dCBodwogICBzaW5nbGUtc3RlcCB0cmFwCiAt IFRoZSBzaW11bGF0aW9uIGNvZGVzIGFyZSBmcm9tIGNza3kKIC0gRnJhbmtseSwgYWxsIGNvZGVz IHJlZmVyIHRvIG90aGVyIGFyY2hzJyBpbXBsZW1lbnRhdGlvbgoKIFsxXSBodHRwczovL2xvcmUu a2VybmVsLm9yZy9saW51eC1yaXNjdi8yMDE4MTExMzE5NTgwNC4yMjgyNS0xLW1lQHBhY2tpLmNo LwogWzJdIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LWNza3kvMjAyMDA0MDMwNDQxNTAu MjA1NjItOS1ndW9yZW5Aa2VybmVsLm9yZy8KClNpZ25lZC1vZmYtYnk6IEd1byBSZW4gPGd1b3Jl bkBsaW51eC5hbGliYWJhLmNvbT4KQ28tZGV2ZWxvcGVkLWJ5OiBQYXRyaWNrIFN0w6RobGluIDxt ZUBwYWNraS5jaD4KU2lnbmVkLW9mZi1ieTogUGF0cmljayBTdMOkaGxpbiA8bWVAcGFja2kuY2g+ CkFja2VkLWJ5OiBNYXNhbWkgSGlyYW1hdHN1IDxtaGlyYW1hdEBrZXJuZWwub3JnPgpUZXN0ZWQt Ynk6IFpvbmcgTGkgPHpvbmcubGlAc2lmaXZlLmNvbT4KUmV2aWV3ZWQtYnk6IFBla2thIEVuYmVy ZyA8cGVuYmVyZ0BrZXJuZWwub3JnPgpDYzogUGF0cmljayBTdMOkaGxpbiA8bWVAcGFja2kuY2g+ CkNjOiBQYWxtZXIgRGFiYmVsdCA8cGFsbWVyZGFiYmVsdEBnb29nbGUuY29tPgpDYzogQmrDtnJu IFTDtnBlbCA8Ympvcm4udG9wZWxAZ21haWwuY29tPgotLS0KIGFyY2gvcmlzY3YvS2NvbmZpZyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNt L2twcm9iZXMuaCAgICAgICAgICAgICAgfCAgNDAgKysrCiBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNt L3Byb2Jlcy5oICAgICAgICAgICAgICAgfCAgMjQgKysKIGFyY2gvcmlzY3Yva2VybmVsL01ha2Vm aWxlICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMv TWFrZWZpbGUgICAgICAgICAgICAgfCAgIDQgKwogYXJjaC9yaXNjdi9rZXJuZWwvcHJvYmVzL2Rl Y29kZS1pbnNuLmMgICAgICAgIHwgIDQ4ICsrKysKIGFyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9k ZWNvZGUtaW5zbi5oICAgICAgICB8ICAxOCArKwogYXJjaC9yaXNjdi9rZXJuZWwvcHJvYmVzL2tw cm9iZXMuYyAgICAgICAgICAgIHwgMzk4ICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBhcmNo L3Jpc2N2L2tlcm5lbC9wcm9iZXMva3Byb2Jlc190cmFtcG9saW5lLlMgfCAgOTMgKysrKysrCiBh cmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvc2ltdWxhdGUtaW5zbi5jICAgICAgfCAgODUgKysrKysr CiBhcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvc2ltdWxhdGUtaW5zbi5oICAgICAgfCAgNDcgKysr CiBhcmNoL3Jpc2N2L2tlcm5lbC90cmFwcy5jICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKwog YXJjaC9yaXNjdi9tbS9mYXVsdC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKIDEz IGZpbGVzIGNoYW5nZWQsIDc3MyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJj aC9yaXNjdi9pbmNsdWRlL2FzbS9wcm9iZXMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvcmlz Y3Yva2VybmVsL3Byb2Jlcy9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvcmlzY3Yv a2VybmVsL3Byb2Jlcy9kZWNvZGUtaW5zbi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9yaXNj di9rZXJuZWwvcHJvYmVzL2RlY29kZS1pbnNuLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3Jp c2N2L2tlcm5lbC9wcm9iZXMva3Byb2Jlcy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9yaXNj di9rZXJuZWwvcHJvYmVzL2twcm9iZXNfdHJhbXBvbGluZS5TCiBjcmVhdGUgbW9kZSAxMDA2NDQg YXJjaC9yaXNjdi9rZXJuZWwvcHJvYmVzL3NpbXVsYXRlLWluc24uYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGFyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9zaW11bGF0ZS1pbnNuLmgKCmRpZmYgLS1naXQg YS9hcmNoL3Jpc2N2L0tjb25maWcgYi9hcmNoL3Jpc2N2L0tjb25maWcKaW5kZXggNjJhNDk1OC4u OWE5MjBlZCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9LY29uZmlnCisrKyBiL2FyY2gvcmlzY3Yv S2NvbmZpZwpAQCAtNjgsNiArNjgsOCBAQCBjb25maWcgUklTQ1YKIAlzZWxlY3QgSEFWRV9GVVRF WF9DTVBYQ0hHIGlmIEZVVEVYCiAJc2VsZWN0IEhBVkVfR0NDX1BMVUdJTlMKIAlzZWxlY3QgSEFW RV9HRU5FUklDX1ZEU08gaWYgTU1VICYmIDY0QklUCisJc2VsZWN0IEhBVkVfS1BST0JFUworCXNl bGVjdCBIQVZFX0tSRVRQUk9CRVMKIAlzZWxlY3QgSEFWRV9QQ0kKIAlzZWxlY3QgSEFWRV9QRVJG X0VWRU5UUwogCXNlbGVjdCBIQVZFX1BFUkZfUkVHUwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9p bmNsdWRlL2FzbS9rcHJvYmVzLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2twcm9iZXMuaApp bmRleCA1NmE5OGVhMy4uNDY0N2QzOCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2Fz bS9rcHJvYmVzLmgKKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rcHJvYmVzLmgKQEAgLTEx LDQgKzExLDQ0IEBACiAKICNpbmNsdWRlIDxhc20tZ2VuZXJpYy9rcHJvYmVzLmg+CiAKKyNpZmRl ZiBDT05GSUdfS1BST0JFUworI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGlu dXgvcHRyYWNlLmg+CisjaW5jbHVkZSA8bGludXgvcGVyY3B1Lmg+CisKKyNkZWZpbmUgX19BUkNI X1dBTlRfS1BST0JFU19JTlNOX1NMT1QKKyNkZWZpbmUgTUFYX0lOU05fU0laRQkJCTIKKworI2Rl ZmluZSBmbHVzaF9pbnNuX3Nsb3QocCkJCWRvIHsgfSB3aGlsZSAoMCkKKyNkZWZpbmUga3JldHBy b2JlX2JsYWNrbGlzdF9zaXplCTAKKworI2luY2x1ZGUgPGFzbS9wcm9iZXMuaD4KKworc3RydWN0 IHByZXZfa3Byb2JlIHsKKwlzdHJ1Y3Qga3Byb2JlICprcDsKKwl1bnNpZ25lZCBpbnQgc3RhdHVz OworfTsKKworLyogU2luZ2xlIHN0ZXAgY29udGV4dCBmb3Iga3Byb2JlICovCitzdHJ1Y3Qga3By b2JlX3N0ZXBfY3R4IHsKKwl1bnNpZ25lZCBsb25nIHNzX3BlbmRpbmc7CisJdW5zaWduZWQgbG9u ZyBtYXRjaF9hZGRyOworfTsKKworLyogcGVyLWNwdSBrcHJvYmUgY29udHJvbCBibG9jayAqLwor c3RydWN0IGtwcm9iZV9jdGxibGsgeworCXVuc2lnbmVkIGludCBrcHJvYmVfc3RhdHVzOworCXVu c2lnbmVkIGxvbmcgc2F2ZWRfc3RhdHVzOworCXN0cnVjdCBwcmV2X2twcm9iZSBwcmV2X2twcm9i ZTsKKwlzdHJ1Y3Qga3Byb2JlX3N0ZXBfY3R4IHNzX2N0eDsKK307CisKK3ZvaWQgYXJjaF9yZW1v dmVfa3Byb2JlKHN0cnVjdCBrcHJvYmUgKnApOworaW50IGtwcm9iZV9mYXVsdF9oYW5kbGVyKHN0 cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBpbnQgdHJhcG5yKTsKK2Jvb2wga3Byb2JlX2Jy ZWFrcG9pbnRfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncyk7Citib29sIGtwcm9iZV9zaW5n bGVfc3RlcF9oYW5kbGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKK3ZvaWQga3JldHByb2JlX3Ry YW1wb2xpbmUodm9pZCk7Cit2b2lkIF9fa3Byb2JlcyAqdHJhbXBvbGluZV9wcm9iZV9oYW5kbGVy KHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKKworI2VuZGlmIC8qIENPTkZJR19LUFJPQkVTICovCiAj ZW5kaWYgLyogX0FTTV9SSVNDVl9LUFJPQkVTX0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yv aW5jbHVkZS9hc20vcHJvYmVzLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Byb2Jlcy5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5hNzg3ZTZkCi0tLSAvZGV2L251bGwK KysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wcm9iZXMuaApAQCAtMCwwICsxLDI0IEBACisv KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLworCisjaWZuZGVmIF9BU01fUklT Q1ZfUFJPQkVTX0gKKyNkZWZpbmUgX0FTTV9SSVNDVl9QUk9CRVNfSAorCit0eXBlZGVmIHUzMiBw cm9iZV9vcGNvZGVfdDsKK3R5cGVkZWYgYm9vbCAocHJvYmVzX2hhbmRsZXJfdCkgKHUzMiBvcGNv ZGUsIHVuc2lnbmVkIGxvbmcgYWRkciwgc3RydWN0IHB0X3JlZ3MgKik7CisKKy8qIGFyY2hpdGVj dHVyZSBzcGVjaWZpYyBjb3B5IG9mIG9yaWdpbmFsIGluc3RydWN0aW9uICovCitzdHJ1Y3QgYXJj aF9wcm9iZV9pbnNuIHsKKwlwcm9iZV9vcGNvZGVfdCAqaW5zbjsKKwlwcm9iZXNfaGFuZGxlcl90 ICpoYW5kbGVyOworCS8qIHJlc3RvcmUgYWRkcmVzcyBhZnRlciBzaW11bGF0aW9uICovCisJdW5z aWduZWQgbG9uZyByZXN0b3JlOworfTsKKworI2lmZGVmIENPTkZJR19LUFJPQkVTCit0eXBlZGVm IHUzMiBrcHJvYmVfb3Bjb2RlX3Q7CitzdHJ1Y3QgYXJjaF9zcGVjaWZpY19pbnNuIHsKKwlzdHJ1 Y3QgYXJjaF9wcm9iZV9pbnNuIGFwaTsKK307CisjZW5kaWYKKworI2VuZGlmIC8qIF9BU01fUklT Q1ZfUFJPQkVTX0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL01ha2VmaWxlIGIv YXJjaC9yaXNjdi9rZXJuZWwvTWFrZWZpbGUKaW5kZXggNjJkZTA3NS4uNzZjNzk3NSAxMDA2NDQK LS0tIGEvYXJjaC9yaXNjdi9rZXJuZWwvTWFrZWZpbGUKKysrIGIvYXJjaC9yaXNjdi9rZXJuZWwv TWFrZWZpbGUKQEAgLTMwLDYgKzMwLDcgQEAgb2JqLXkJKz0gcmlzY3Zfa3N5bXMubwogb2JqLXkJ Kz0gc3RhY2t0cmFjZS5vCiBvYmoteQkrPSBjYWNoZWluZm8ubwogb2JqLXkJKz0gcGF0Y2gubwor b2JqLXkJKz0gcHJvYmVzLwogb2JqLSQoQ09ORklHX01NVSkgKz0gdmRzby5vIHZkc28vCiAKIG9i ai0kKENPTkZJR19SSVNDVl9NX01PREUpCSs9IHRyYXBzX21pc2FsaWduZWQubwpkaWZmIC0tZ2l0 IGEvYXJjaC9yaXNjdi9rZXJuZWwvcHJvYmVzL01ha2VmaWxlIGIvYXJjaC9yaXNjdi9rZXJuZWwv cHJvYmVzL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi44YTM5 NTA3Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9yaXNjdi9rZXJuZWwvcHJvYmVzL01ha2VmaWxl CkBAIC0wLDAgKzEsNCBAQAorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorb2Jq LSQoQ09ORklHX0tQUk9CRVMpCQkrPSBrcHJvYmVzLm8gZGVjb2RlLWluc24ubyBzaW11bGF0ZS1p bnNuLm8KK29iai0kKENPTkZJR19LUFJPQkVTKQkJKz0ga3Byb2Jlc190cmFtcG9saW5lLm8KK0NG TEFHU19SRU1PVkVfc2ltdWxhdGUtaW5zbi5vID0gJChDQ19GTEFHU19GVFJBQ0UpCmRpZmYgLS1n aXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvZGVjb2RlLWluc24uYyBiL2FyY2gvcmlzY3Yv a2VybmVsL3Byb2Jlcy9kZWNvZGUtaW5zbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwLi4wODc2YzMwCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9yaXNjdi9rZXJuZWwvcHJv YmVzL2RlY29kZS1pbnNuLmMKQEAgLTAsMCArMSw0OCBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjArCisKKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxs aW51eC9rcHJvYmVzLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGlu dXgva2FsbHN5bXMuaD4KKyNpbmNsdWRlIDxhc20vc2VjdGlvbnMuaD4KKworI2luY2x1ZGUgImRl Y29kZS1pbnNuLmgiCisjaW5jbHVkZSAic2ltdWxhdGUtaW5zbi5oIgorCisvKiBSZXR1cm46Cisg KiAgIElOU05fUkVKRUNURUQgICAgIElmIGluc3RydWN0aW9uIGlzIG9uZSBub3QgYWxsb3dlZCB0 byBrcHJvYmUsCisgKiAgIElOU05fR09PRF9OT19TTE9UIElmIGluc3RydWN0aW9uIGlzIHN1cHBv cnRlZCBidXQgZG9lc24ndCB1c2UgaXRzIHNsb3QuCisgKi8KK2VudW0gcHJvYmVfaW5zbiBfX2tw cm9iZXMKK3Jpc2N2X3Byb2JlX2RlY29kZV9pbnNuKHByb2JlX29wY29kZV90ICphZGRyLCBzdHJ1 Y3QgYXJjaF9wcm9iZV9pbnNuICphcGkpCit7CisJcHJvYmVfb3Bjb2RlX3QgaW5zbiA9IGxlMzJf dG9fY3B1KCphZGRyKTsKKworCS8qCisJICogUmVqZWN0IGluc3RydWN0aW9ucyBsaXN0OgorCSAq LworCVJJU0NWX0lOU05fUkVKRUNURUQoc3lzdGVtLAkJaW5zbik7CisJUklTQ1ZfSU5TTl9SRUpF Q1RFRChmZW5jZSwJCWluc24pOworCisJLyoKKwkgKiBTaW11bGF0ZSBpbnN0cnVjdGlvbnMgbGlz dDoKKwkgKiBUT0RPOiB0aGUgUkVKRUNURUQgb25lcyBiZWxvdyBuZWVkIHRvIGJlIGltcGxlbWVu dGVkCisJICovCisjaWZkZWYgQ09ORklHX1JJU0NWX0lTQV9DCisJUklTQ1ZfSU5TTl9SRUpFQ1RF RChjX2osCQlpbnNuKTsKKwlSSVNDVl9JTlNOX1JFSkVDVEVEKGNfanIsCQlpbnNuKTsKKwlSSVND Vl9JTlNOX1JFSkVDVEVEKGNfamFsLAkJaW5zbik7CisJUklTQ1ZfSU5TTl9SRUpFQ1RFRChjX2ph bHIsCQlpbnNuKTsKKwlSSVNDVl9JTlNOX1JFSkVDVEVEKGNfYmVxeiwJCWluc24pOworCVJJU0NW X0lOU05fUkVKRUNURUQoY19ibmV6LAkJaW5zbik7CisJUklTQ1ZfSU5TTl9SRUpFQ1RFRChjX2Vi cmVhaywJCWluc24pOworI2VuZGlmCisKKwlSSVNDVl9JTlNOX1JFSkVDVEVEKGF1aXBjLAkJaW5z bik7CisJUklTQ1ZfSU5TTl9SRUpFQ1RFRChicmFuY2gsCQlpbnNuKTsKKworCVJJU0NWX0lOU05f U0VUX1NJTVVMQVRFKGphbCwJCWluc24pOworCVJJU0NWX0lOU05fU0VUX1NJTVVMQVRFKGphbHIs CQlpbnNuKTsKKworCXJldHVybiBJTlNOX0dPT0Q7Cit9CmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2 L2tlcm5lbC9wcm9iZXMvZGVjb2RlLWluc24uaCBiL2FyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9k ZWNvZGUtaW5zbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi40MjI2OWE3 Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9yaXNjdi9rZXJuZWwvcHJvYmVzL2RlY29kZS1pbnNu LmgKQEAgLTAsMCArMSwxOCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAr ICovCisKKyNpZm5kZWYgX1JJU0NWX0tFUk5FTF9LUFJPQkVTX0RFQ09ERV9JTlNOX0gKKyNkZWZp bmUgX1JJU0NWX0tFUk5FTF9LUFJPQkVTX0RFQ09ERV9JTlNOX0gKKworI2luY2x1ZGUgPGFzbS9z ZWN0aW9ucy5oPgorI2luY2x1ZGUgPGFzbS9rcHJvYmVzLmg+CisKK2VudW0gcHJvYmVfaW5zbiB7 CisJSU5TTl9SRUpFQ1RFRCwKKwlJTlNOX0dPT0RfTk9fU0xPVCwKKwlJTlNOX0dPT0QsCit9Owor CitlbnVtIHByb2JlX2luc24gX19rcHJvYmVzCityaXNjdl9wcm9iZV9kZWNvZGVfaW5zbihwcm9i ZV9vcGNvZGVfdCAqYWRkciwgc3RydWN0IGFyY2hfcHJvYmVfaW5zbiAqYXNpKTsKKworI2VuZGlm IC8qIF9SSVNDVl9LRVJORUxfS1BST0JFU19ERUNPREVfSU5TTl9IICovCmRpZmYgLS1naXQgYS9h cmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMva3Byb2Jlcy5jIGIvYXJjaC9yaXNjdi9rZXJuZWwvcHJv YmVzL2twcm9iZXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uZTYwODkz YgotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9rcHJvYmVzLmMK QEAgLTAsMCArMSwzOTggQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKwor CisjaW5jbHVkZSA8bGludXgva3Byb2Jlcy5oPgorI2luY2x1ZGUgPGxpbnV4L2V4dGFibGUuaD4K KyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvc3RvcF9tYWNoaW5lLmg+ CisjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorI2luY2x1ZGUgPGxpbnV4L3VhY2Nlc3MuaD4KKyNp bmNsdWRlIDxhc20vc2VjdGlvbnMuaD4KKyNpbmNsdWRlIDxhc20vY2FjaGVmbHVzaC5oPgorI2lu Y2x1ZGUgPGFzbS9idWcuaD4KKyNpbmNsdWRlIDxhc20vcGF0Y2guaD4KKworI2luY2x1ZGUgImRl Y29kZS1pbnNuLmgiCisKK0RFRklORV9QRVJfQ1BVKHN0cnVjdCBrcHJvYmUgKiwgY3VycmVudF9r cHJvYmUpID0gTlVMTDsKK0RFRklORV9QRVJfQ1BVKHN0cnVjdCBrcHJvYmVfY3RsYmxrLCBrcHJv YmVfY3RsYmxrKTsKKworc3RhdGljIHZvaWQgX19rcHJvYmVzCitwb3N0X2twcm9iZV9oYW5kbGVy KHN0cnVjdCBrcHJvYmVfY3RsYmxrICosIHN0cnVjdCBwdF9yZWdzICopOworCitzdGF0aWMgdm9p ZCBfX2twcm9iZXMgYXJjaF9wcmVwYXJlX3NzX3Nsb3Qoc3RydWN0IGtwcm9iZSAqcCkKK3sKKwl1 bnNpZ25lZCBsb25nIG9mZnNldCA9IEdFVF9JTlNOX0xFTkdUSChwLT5vcGNvZGUpOworCisJcC0+ YWluc24uYXBpLnJlc3RvcmUgPSAodW5zaWduZWQgbG9uZylwLT5hZGRyICsgb2Zmc2V0OworCisJ cGF0Y2hfdGV4dChwLT5haW5zbi5hcGkuaW5zbiwgcC0+b3Bjb2RlKTsKKwlwYXRjaF90ZXh0KCh2 b2lkICopKCh1bnNpZ25lZCBsb25nKShwLT5haW5zbi5hcGkuaW5zbikgKyBvZmZzZXQpLAorCQkg ICBfX0JVR19JTlNOXzMyKTsKK30KKworc3RhdGljIHZvaWQgX19rcHJvYmVzIGFyY2hfcHJlcGFy ZV9zaW11bGF0ZShzdHJ1Y3Qga3Byb2JlICpwKQoreworCXAtPmFpbnNuLmFwaS5yZXN0b3JlID0g MDsKK30KKworc3RhdGljIHZvaWQgX19rcHJvYmVzIGFyY2hfc2ltdWxhdGVfaW5zbihzdHJ1Y3Qg a3Byb2JlICpwLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKK3sKKwlzdHJ1Y3Qga3Byb2JlX2N0bGJs ayAqa2NiID0gZ2V0X2twcm9iZV9jdGxibGsoKTsKKworCWlmIChwLT5haW5zbi5hcGkuaGFuZGxl cikKKwkJcC0+YWluc24uYXBpLmhhbmRsZXIoKHUzMilwLT5vcGNvZGUsCisJCQkJCSh1bnNpZ25l ZCBsb25nKXAtPmFkZHIsIHJlZ3MpOworCisJcG9zdF9rcHJvYmVfaGFuZGxlcihrY2IsIHJlZ3Mp OworfQorCitpbnQgX19rcHJvYmVzIGFyY2hfcHJlcGFyZV9rcHJvYmUoc3RydWN0IGtwcm9iZSAq cCkKK3sKKwl1bnNpZ25lZCBsb25nIHByb2JlX2FkZHIgPSAodW5zaWduZWQgbG9uZylwLT5hZGRy OworCisJaWYgKHByb2JlX2FkZHIgJiAweDEpIHsKKwkJcHJfd2FybigiQWRkcmVzcyBub3QgYWxp Z25lZC5cbiIpOworCisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIGNvcHkgaW5zdHJ1Y3Rp b24gKi8KKwlwLT5vcGNvZGUgPSBsZTMyX3RvX2NwdSgqcC0+YWRkcik7CisKKwkvKiBkZWNvZGUg aW5zdHJ1Y3Rpb24gKi8KKwlzd2l0Y2ggKHJpc2N2X3Byb2JlX2RlY29kZV9pbnNuKHAtPmFkZHIs ICZwLT5haW5zbi5hcGkpKSB7CisJY2FzZSBJTlNOX1JFSkVDVEVEOgkvKiBpbnNuIG5vdCBzdXBw b3J0ZWQgKi8KKwkJcmV0dXJuIC1FSU5WQUw7CisKKwljYXNlIElOU05fR09PRF9OT19TTE9UOgkv KiBpbnNuIG5lZWQgc2ltdWxhdGlvbiAqLworCQlwLT5haW5zbi5hcGkuaW5zbiA9IE5VTEw7CisJ CWJyZWFrOworCisJY2FzZSBJTlNOX0dPT0Q6CS8qIGluc3RydWN0aW9uIHVzZXMgc2xvdCAqLwor CQlwLT5haW5zbi5hcGkuaW5zbiA9IGdldF9pbnNuX3Nsb3QoKTsKKwkJaWYgKCFwLT5haW5zbi5h cGkuaW5zbikKKwkJCXJldHVybiAtRU5PTUVNOworCQlicmVhazsKKwl9CisKKwkvKiBwcmVwYXJl IHRoZSBpbnN0cnVjdGlvbiAqLworCWlmIChwLT5haW5zbi5hcGkuaW5zbikKKwkJYXJjaF9wcmVw YXJlX3NzX3Nsb3QocCk7CisJZWxzZQorCQlhcmNoX3ByZXBhcmVfc2ltdWxhdGUocCk7CisKKwly ZXR1cm4gMDsKK30KKworLyogaW5zdGFsbCBicmVha3BvaW50IGluIHRleHQgKi8KK3ZvaWQgX19r cHJvYmVzIGFyY2hfYXJtX2twcm9iZShzdHJ1Y3Qga3Byb2JlICpwKQoreworCWlmICgocC0+b3Bj b2RlICYgX19JTlNOX0xFTkdUSF9NQVNLKSA9PSBfX0lOU05fTEVOR1RIXzMyKQorCQlwYXRjaF90 ZXh0KHAtPmFkZHIsIF9fQlVHX0lOU05fMzIpOworCWVsc2UKKwkJcGF0Y2hfdGV4dChwLT5hZGRy LCBfX0JVR19JTlNOXzE2KTsKK30KKworLyogcmVtb3ZlIGJyZWFrcG9pbnQgZnJvbSB0ZXh0ICov Cit2b2lkIF9fa3Byb2JlcyBhcmNoX2Rpc2FybV9rcHJvYmUoc3RydWN0IGtwcm9iZSAqcCkKK3sK KwlwYXRjaF90ZXh0KHAtPmFkZHIsIHAtPm9wY29kZSk7Cit9CisKK3ZvaWQgX19rcHJvYmVzIGFy Y2hfcmVtb3ZlX2twcm9iZShzdHJ1Y3Qga3Byb2JlICpwKQoreworfQorCitzdGF0aWMgdm9pZCBf X2twcm9iZXMgc2F2ZV9wcmV2aW91c19rcHJvYmUoc3RydWN0IGtwcm9iZV9jdGxibGsgKmtjYikK K3sKKwlrY2ItPnByZXZfa3Byb2JlLmtwID0ga3Byb2JlX3J1bm5pbmcoKTsKKwlrY2ItPnByZXZf a3Byb2JlLnN0YXR1cyA9IGtjYi0+a3Byb2JlX3N0YXR1czsKK30KKworc3RhdGljIHZvaWQgX19r cHJvYmVzIHJlc3RvcmVfcHJldmlvdXNfa3Byb2JlKHN0cnVjdCBrcHJvYmVfY3RsYmxrICprY2Ip Cit7CisJX190aGlzX2NwdV93cml0ZShjdXJyZW50X2twcm9iZSwga2NiLT5wcmV2X2twcm9iZS5r cCk7CisJa2NiLT5rcHJvYmVfc3RhdHVzID0ga2NiLT5wcmV2X2twcm9iZS5zdGF0dXM7Cit9CisK K3N0YXRpYyB2b2lkIF9fa3Byb2JlcyBzZXRfY3VycmVudF9rcHJvYmUoc3RydWN0IGtwcm9iZSAq cCkKK3sKKwlfX3RoaXNfY3B1X3dyaXRlKGN1cnJlbnRfa3Byb2JlLCBwKTsKK30KKworLyoKKyAq IEludGVycnVwdHMgbmVlZCB0byBiZSBkaXNhYmxlZCBiZWZvcmUgc2luZ2xlLXN0ZXAgbW9kZSBp cyBzZXQsIGFuZCBub3QKKyAqIHJlZW5hYmxlZCB1bnRpbCBhZnRlciBzaW5nbGUtc3RlcCBtb2Rl IGVuZHMuCisgKiBXaXRob3V0IGRpc2FibGluZyBpbnRlcnJ1cHQgb24gbG9jYWwgQ1BVLCB0aGVy ZSBpcyBhIGNoYW5jZSBvZgorICogaW50ZXJydXB0IG9jY3VycmVuY2UgaW4gdGhlIHBlcmlvZCBv ZiBleGNlcHRpb24gcmV0dXJuIGFuZCAgc3RhcnQgb2YKKyAqIG91dC1vZi1saW5lIHNpbmdsZS1z dGVwLCB0aGF0IHJlc3VsdCBpbiB3cm9uZ2x5IHNpbmdsZSBzdGVwcGluZworICogaW50byB0aGUg aW50ZXJydXB0IGhhbmRsZXIuCisgKi8KK3N0YXRpYyB2b2lkIF9fa3Byb2JlcyBrcHJvYmVzX3Nh dmVfbG9jYWxfaXJxZmxhZyhzdHJ1Y3Qga3Byb2JlX2N0bGJsayAqa2NiLAorCQkJCQkJc3RydWN0 IHB0X3JlZ3MgKnJlZ3MpCit7CisJa2NiLT5zYXZlZF9zdGF0dXMgPSByZWdzLT5zdGF0dXM7CisJ cmVncy0+c3RhdHVzICY9IH5TUl9TUElFOworfQorCitzdGF0aWMgdm9pZCBfX2twcm9iZXMga3By b2Jlc19yZXN0b3JlX2xvY2FsX2lycWZsYWcoc3RydWN0IGtwcm9iZV9jdGxibGsgKmtjYiwKKwkJ CQkJCXN0cnVjdCBwdF9yZWdzICpyZWdzKQoreworCXJlZ3MtPnN0YXR1cyA9IGtjYi0+c2F2ZWRf c3RhdHVzOworfQorCitzdGF0aWMgdm9pZCBfX2twcm9iZXMKK3NldF9zc19jb250ZXh0KHN0cnVj dCBrcHJvYmVfY3RsYmxrICprY2IsIHVuc2lnbmVkIGxvbmcgYWRkciwgc3RydWN0IGtwcm9iZSAq cCkKK3sKKwl1bnNpZ25lZCBsb25nIG9mZnNldCA9IEdFVF9JTlNOX0xFTkdUSChwLT5vcGNvZGUp OworCisJa2NiLT5zc19jdHguc3NfcGVuZGluZyA9IHRydWU7CisJa2NiLT5zc19jdHgubWF0Y2hf YWRkciA9IGFkZHIgKyBvZmZzZXQ7Cit9CisKK3N0YXRpYyB2b2lkIF9fa3Byb2JlcyBjbGVhcl9z c19jb250ZXh0KHN0cnVjdCBrcHJvYmVfY3RsYmxrICprY2IpCit7CisJa2NiLT5zc19jdHguc3Nf cGVuZGluZyA9IGZhbHNlOworCWtjYi0+c3NfY3R4Lm1hdGNoX2FkZHIgPSAwOworfQorCitzdGF0 aWMgdm9pZCBfX2twcm9iZXMgc2V0dXBfc2luZ2xlc3RlcChzdHJ1Y3Qga3Byb2JlICpwLAorCQkJ CSAgICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVncywKKwkJCQkgICAgICAgc3RydWN0IGtwcm9iZV9j dGxibGsgKmtjYiwgaW50IHJlZW50ZXIpCit7CisJdW5zaWduZWQgbG9uZyBzbG90OworCisJaWYg KHJlZW50ZXIpIHsKKwkJc2F2ZV9wcmV2aW91c19rcHJvYmUoa2NiKTsKKwkJc2V0X2N1cnJlbnRf a3Byb2JlKHApOworCQlrY2ItPmtwcm9iZV9zdGF0dXMgPSBLUFJPQkVfUkVFTlRFUjsKKwl9IGVs c2UgeworCQlrY2ItPmtwcm9iZV9zdGF0dXMgPSBLUFJPQkVfSElUX1NTOworCX0KKworCWlmIChw LT5haW5zbi5hcGkuaW5zbikgeworCQkvKiBwcmVwYXJlIGZvciBzaW5nbGUgc3RlcHBpbmcgKi8K KwkJc2xvdCA9ICh1bnNpZ25lZCBsb25nKXAtPmFpbnNuLmFwaS5pbnNuOworCisJCXNldF9zc19j b250ZXh0KGtjYiwgc2xvdCwgcCk7CS8qIG1hcmsgcGVuZGluZyBzcyAqLworCisJCS8qIElSUXMg YW5kIHNpbmdsZSBzdGVwcGluZyBkbyBub3QgbWl4IHdlbGwuICovCisJCWtwcm9iZXNfc2F2ZV9s b2NhbF9pcnFmbGFnKGtjYiwgcmVncyk7CisKKwkJaW5zdHJ1Y3Rpb25fcG9pbnRlcl9zZXQocmVn cywgc2xvdCk7CisJfSBlbHNlIHsKKwkJLyogaW5zbiBzaW11bGF0aW9uICovCisJCWFyY2hfc2lt dWxhdGVfaW5zbihwLCByZWdzKTsKKwl9Cit9CisKK3N0YXRpYyBpbnQgX19rcHJvYmVzIHJlZW50 ZXJfa3Byb2JlKHN0cnVjdCBrcHJvYmUgKnAsCisJCQkJICAgIHN0cnVjdCBwdF9yZWdzICpyZWdz LAorCQkJCSAgICBzdHJ1Y3Qga3Byb2JlX2N0bGJsayAqa2NiKQoreworCXN3aXRjaCAoa2NiLT5r cHJvYmVfc3RhdHVzKSB7CisJY2FzZSBLUFJPQkVfSElUX1NTRE9ORToKKwljYXNlIEtQUk9CRV9I SVRfQUNUSVZFOgorCQlrcHJvYmVzX2luY19ubWlzc2VkX2NvdW50KHApOworCQlzZXR1cF9zaW5n bGVzdGVwKHAsIHJlZ3MsIGtjYiwgMSk7CisJCWJyZWFrOworCWNhc2UgS1BST0JFX0hJVF9TUzoK KwljYXNlIEtQUk9CRV9SRUVOVEVSOgorCQlwcl93YXJuKCJVbnJlY292ZXJhYmxlIGtwcm9iZSBk ZXRlY3RlZC5cbiIpOworCQlkdW1wX2twcm9iZShwKTsKKwkJQlVHKCk7CisJCWJyZWFrOworCWRl ZmF1bHQ6CisJCVdBUk5fT04oMSk7CisJCXJldHVybiAwOworCX0KKworCXJldHVybiAxOworfQor CitzdGF0aWMgdm9pZCBfX2twcm9iZXMKK3Bvc3Rfa3Byb2JlX2hhbmRsZXIoc3RydWN0IGtwcm9i ZV9jdGxibGsgKmtjYiwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCit7CisJc3RydWN0IGtwcm9iZSAq Y3VyID0ga3Byb2JlX3J1bm5pbmcoKTsKKworCWlmICghY3VyKQorCQlyZXR1cm47CisKKwkvKiBy ZXR1cm4gYWRkciByZXN0b3JlIGlmIG5vbi1icmFuY2hpbmcgaW5zbiAqLworCWlmIChjdXItPmFp bnNuLmFwaS5yZXN0b3JlICE9IDApCisJCXJlZ3MtPmVwYyA9IGN1ci0+YWluc24uYXBpLnJlc3Rv cmU7CisKKwkvKiByZXN0b3JlIGJhY2sgb3JpZ2luYWwgc2F2ZWQga3Byb2JlIHZhcmlhYmxlcyBh bmQgY29udGludWUgKi8KKwlpZiAoa2NiLT5rcHJvYmVfc3RhdHVzID09IEtQUk9CRV9SRUVOVEVS KSB7CisJCXJlc3RvcmVfcHJldmlvdXNfa3Byb2JlKGtjYik7CisJCXJldHVybjsKKwl9CisKKwkv KiBjYWxsIHBvc3QgaGFuZGxlciAqLworCWtjYi0+a3Byb2JlX3N0YXR1cyA9IEtQUk9CRV9ISVRf U1NET05FOworCWlmIChjdXItPnBvc3RfaGFuZGxlcikJeworCQkvKiBwb3N0X2hhbmRsZXIgY2Fu IGhpdCBicmVha3BvaW50IGFuZCBzaW5nbGUgc3RlcAorCQkgKiBhZ2Fpbiwgc28gd2UgZW5hYmxl IEQtZmxhZyBmb3IgcmVjdXJzaXZlIGV4Y2VwdGlvbi4KKwkJICovCisJCWN1ci0+cG9zdF9oYW5k bGVyKGN1ciwgcmVncywgMCk7CisJfQorCisJcmVzZXRfY3VycmVudF9rcHJvYmUoKTsKK30KKwor aW50IF9fa3Byb2JlcyBrcHJvYmVfZmF1bHRfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncywg dW5zaWduZWQgaW50IHRyYXBucikKK3sKKwlzdHJ1Y3Qga3Byb2JlICpjdXIgPSBrcHJvYmVfcnVu bmluZygpOworCXN0cnVjdCBrcHJvYmVfY3RsYmxrICprY2IgPSBnZXRfa3Byb2JlX2N0bGJsaygp OworCisJc3dpdGNoIChrY2ItPmtwcm9iZV9zdGF0dXMpIHsKKwljYXNlIEtQUk9CRV9ISVRfU1M6 CisJY2FzZSBLUFJPQkVfUkVFTlRFUjoKKwkJLyoKKwkJICogV2UgYXJlIGhlcmUgYmVjYXVzZSB0 aGUgaW5zdHJ1Y3Rpb24gYmVpbmcgc2luZ2xlCisJCSAqIHN0ZXBwZWQgY2F1c2VkIGEgcGFnZSBm YXVsdC4gV2UgcmVzZXQgdGhlIGN1cnJlbnQKKwkJICoga3Byb2JlIGFuZCB0aGUgaXAgcG9pbnRz IGJhY2sgdG8gdGhlIHByb2JlIGFkZHJlc3MKKwkJICogYW5kIGFsbG93IHRoZSBwYWdlIGZhdWx0 IGhhbmRsZXIgdG8gY29udGludWUgYXMgYQorCQkgKiBub3JtYWwgcGFnZSBmYXVsdC4KKwkJICov CisJCXJlZ3MtPmVwYyA9ICh1bnNpZ25lZCBsb25nKSBjdXItPmFkZHI7CisJCWlmICghaW5zdHJ1 Y3Rpb25fcG9pbnRlcihyZWdzKSkKKwkJCUJVRygpOworCisJCWlmIChrY2ItPmtwcm9iZV9zdGF0 dXMgPT0gS1BST0JFX1JFRU5URVIpCisJCQlyZXN0b3JlX3ByZXZpb3VzX2twcm9iZShrY2IpOwor CQllbHNlCisJCQlyZXNldF9jdXJyZW50X2twcm9iZSgpOworCisJCWJyZWFrOworCWNhc2UgS1BS T0JFX0hJVF9BQ1RJVkU6CisJY2FzZSBLUFJPQkVfSElUX1NTRE9ORToKKwkJLyoKKwkJICogV2Ug aW5jcmVtZW50IHRoZSBubWlzc2VkIGNvdW50IGZvciBhY2NvdW50aW5nLAorCQkgKiB3ZSBjYW4g YWxzbyB1c2UgbnByZS9ucG9zdGZhdWx0IGNvdW50IGZvciBhY2NvdW50aW5nCisJCSAqIHRoZXNl IHNwZWNpZmljIGZhdWx0IGNhc2VzLgorCQkgKi8KKwkJa3Byb2Jlc19pbmNfbm1pc3NlZF9jb3Vu dChjdXIpOworCisJCS8qCisJCSAqIFdlIGNvbWUgaGVyZSBiZWNhdXNlIGluc3RydWN0aW9ucyBp biB0aGUgcHJlL3Bvc3QKKwkJICogaGFuZGxlciBjYXVzZWQgdGhlIHBhZ2VfZmF1bHQsIHRoaXMg Y291bGQgaGFwcGVuCisJCSAqIGlmIGhhbmRsZXIgdHJpZXMgdG8gYWNjZXNzIHVzZXIgc3BhY2Ug YnkKKwkJICogY29weV9mcm9tX3VzZXIoKSwgZ2V0X3VzZXIoKSBldGMuIExldCB0aGUKKwkJICog dXNlci1zcGVjaWZpZWQgaGFuZGxlciB0cnkgdG8gZml4IGl0IGZpcnN0LgorCQkgKi8KKwkJaWYg KGN1ci0+ZmF1bHRfaGFuZGxlciAmJiBjdXItPmZhdWx0X2hhbmRsZXIoY3VyLCByZWdzLCB0cmFw bnIpKQorCQkJcmV0dXJuIDE7CisKKwkJLyoKKwkJICogSW4gY2FzZSB0aGUgdXNlci1zcGVjaWZp ZWQgZmF1bHQgaGFuZGxlciByZXR1cm5lZAorCQkgKiB6ZXJvLCB0cnkgdG8gZml4IHVwLgorCQkg Ki8KKwkJaWYgKGZpeHVwX2V4Y2VwdGlvbihyZWdzKSkKKwkJCXJldHVybiAxOworCX0KKwlyZXR1 cm4gMDsKK30KKworYm9vbCBfX2twcm9iZXMKK2twcm9iZV9icmVha3BvaW50X2hhbmRsZXIoc3Ry dWN0IHB0X3JlZ3MgKnJlZ3MpCit7CisJc3RydWN0IGtwcm9iZSAqcCwgKmN1cl9rcHJvYmU7CisJ c3RydWN0IGtwcm9iZV9jdGxibGsgKmtjYjsKKwl1bnNpZ25lZCBsb25nIGFkZHIgPSBpbnN0cnVj dGlvbl9wb2ludGVyKHJlZ3MpOworCisJa2NiID0gZ2V0X2twcm9iZV9jdGxibGsoKTsKKwljdXJf a3Byb2JlID0ga3Byb2JlX3J1bm5pbmcoKTsKKworCXAgPSBnZXRfa3Byb2JlKChrcHJvYmVfb3Bj b2RlX3QgKikgYWRkcik7CisKKwlpZiAocCkgeworCQlpZiAoY3VyX2twcm9iZSkgeworCQkJaWYg KHJlZW50ZXJfa3Byb2JlKHAsIHJlZ3MsIGtjYikpCisJCQkJcmV0dXJuIHRydWU7CisJCX0gZWxz ZSB7CisJCQkvKiBQcm9iZSBoaXQgKi8KKwkJCXNldF9jdXJyZW50X2twcm9iZShwKTsKKwkJCWtj Yi0+a3Byb2JlX3N0YXR1cyA9IEtQUk9CRV9ISVRfQUNUSVZFOworCisJCQkvKgorCQkJICogSWYg d2UgaGF2ZSBubyBwcmUtaGFuZGxlciBvciBpdCByZXR1cm5lZCAwLCB3ZQorCQkJICogY29udGlu dWUgd2l0aCBub3JtYWwgcHJvY2Vzc2luZy4gIElmIHdlIGhhdmUgYQorCQkJICogcHJlLWhhbmRs ZXIgYW5kIGl0IHJldHVybmVkIG5vbi16ZXJvLCBpdCB3aWxsCisJCQkgKiBtb2RpZnkgdGhlIGV4 ZWN1dGlvbiBwYXRoIGFuZCBubyBuZWVkIHRvIHNpbmdsZQorCQkJICogc3RlcHBpbmcuIExldCdz IGp1c3QgcmVzZXQgY3VycmVudCBrcHJvYmUgYW5kIGV4aXQuCisJCQkgKgorCQkJICogcHJlX2hh bmRsZXIgY2FuIGhpdCBhIGJyZWFrcG9pbnQgYW5kIGNhbiBzdGVwIHRocnUKKwkJCSAqIGJlZm9y ZSByZXR1cm4uCisJCQkgKi8KKwkJCWlmICghcC0+cHJlX2hhbmRsZXIgfHwgIXAtPnByZV9oYW5k bGVyKHAsIHJlZ3MpKQorCQkJCXNldHVwX3NpbmdsZXN0ZXAocCwgcmVncywga2NiLCAwKTsKKwkJ CWVsc2UKKwkJCQlyZXNldF9jdXJyZW50X2twcm9iZSgpOworCQl9CisJCXJldHVybiB0cnVlOwor CX0KKworCS8qCisJICogVGhlIGJyZWFrcG9pbnQgaW5zdHJ1Y3Rpb24gd2FzIHJlbW92ZWQgcmln aHQKKwkgKiBhZnRlciB3ZSBoaXQgaXQuICBBbm90aGVyIGNwdSBoYXMgcmVtb3ZlZAorCSAqIGVp dGhlciBhIHByb2JlcG9pbnQgb3IgYSBkZWJ1Z2dlciBicmVha3BvaW50CisJICogYXQgdGhpcyBh ZGRyZXNzLiAgSW4gZWl0aGVyIGNhc2UsIG5vIGZ1cnRoZXIKKwkgKiBoYW5kbGluZyBvZiB0aGlz IGludGVycnVwdCBpcyBhcHByb3ByaWF0ZS4KKwkgKiBSZXR1cm4gYmFjayB0byBvcmlnaW5hbCBp bnN0cnVjdGlvbiwgYW5kIGNvbnRpbnVlLgorCSAqLworCXJldHVybiBmYWxzZTsKK30KKworYm9v bCBfX2twcm9iZXMKK2twcm9iZV9zaW5nbGVfc3RlcF9oYW5kbGVyKHN0cnVjdCBwdF9yZWdzICpy ZWdzKQoreworCXN0cnVjdCBrcHJvYmVfY3RsYmxrICprY2IgPSBnZXRfa3Byb2JlX2N0bGJsaygp OworCisJaWYgKChrY2ItPnNzX2N0eC5zc19wZW5kaW5nKQorCSAgICAmJiAoa2NiLT5zc19jdHgu bWF0Y2hfYWRkciA9PSBpbnN0cnVjdGlvbl9wb2ludGVyKHJlZ3MpKSkgeworCQljbGVhcl9zc19j b250ZXh0KGtjYik7CS8qIGNsZWFyIHBlbmRpbmcgc3MgKi8KKworCQlrcHJvYmVzX3Jlc3RvcmVf bG9jYWxfaXJxZmxhZyhrY2IsIHJlZ3MpOworCisJCXBvc3Rfa3Byb2JlX2hhbmRsZXIoa2NiLCBy ZWdzKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCXJldHVybiBmYWxzZTsKK30KKworLyoKKyAqIFBy b3ZpZGUgYSBibGFja2xpc3Qgb2Ygc3ltYm9scyBpZGVudGlmeWluZyByYW5nZXMgd2hpY2ggY2Fu bm90IGJlIGtwcm9iZWQuCisgKiBUaGlzIGJsYWNrbGlzdCBpcyBleHBvc2VkIHRvIHVzZXJzcGFj ZSB2aWEgZGVidWdmcyAoa3Byb2Jlcy9ibGFja2xpc3QpLgorICovCitpbnQgX19pbml0IGFyY2hf cG9wdWxhdGVfa3Byb2JlX2JsYWNrbGlzdCh2b2lkKQoreworCWludCByZXQ7CisKKwlyZXQgPSBr cHJvYmVfYWRkX2FyZWFfYmxhY2tsaXN0KCh1bnNpZ25lZCBsb25nKV9faXJxZW50cnlfdGV4dF9z dGFydCwKKwkJCQkJKHVuc2lnbmVkIGxvbmcpX19pcnFlbnRyeV90ZXh0X2VuZCk7CisJcmV0dXJu IHJldDsKK30KKwordm9pZCBfX2twcm9iZXMgX191c2VkICp0cmFtcG9saW5lX3Byb2JlX2hhbmRs ZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCit7CisJcmV0dXJuICh2b2lkICopa3JldHByb2JlX3Ry YW1wb2xpbmVfaGFuZGxlcihyZWdzLCAma3JldHByb2JlX3RyYW1wb2xpbmUsIE5VTEwpOworfQor Cit2b2lkIF9fa3Byb2JlcyBhcmNoX3ByZXBhcmVfa3JldHByb2JlKHN0cnVjdCBrcmV0cHJvYmVf aW5zdGFuY2UgKnJpLAorCQkJCSAgICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzKQoreworCXJpLT5y ZXRfYWRkciA9IChrcHJvYmVfb3Bjb2RlX3QgKilyZWdzLT5yYTsKKwlyaS0+ZnAgPSBOVUxMOwor CXJlZ3MtPnJhID0gKHVuc2lnbmVkIGxvbmcpICZrcmV0cHJvYmVfdHJhbXBvbGluZTsKK30KKwor aW50IF9fa3Byb2JlcyBhcmNoX3RyYW1wb2xpbmVfa3Byb2JlKHN0cnVjdCBrcHJvYmUgKnApCit7 CisJcmV0dXJuIDA7Cit9CisKK2ludCBfX2luaXQgYXJjaF9pbml0X2twcm9iZXModm9pZCkKK3sK KwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9rcHJv YmVzX3RyYW1wb2xpbmUuUyBiL2FyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9rcHJvYmVzX3RyYW1w b2xpbmUuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNmU4NWQwMgotLS0g L2Rldi9udWxsCisrKyBiL2FyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9rcHJvYmVzX3RyYW1wb2xp bmUuUwpAQCAtMCwwICsxLDkzIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MCsgKi8KKy8qCisgKiBBdXRob3I6IFBhdHJpY2sgU3TDpGhsaW4gPG1lQHBhY2tpLmNoPgorICov CisjaW5jbHVkZSA8bGludXgvbGlua2FnZS5oPgorCisjaW5jbHVkZSA8YXNtL2FzbS5oPgorI2lu Y2x1ZGUgPGFzbS9hc20tb2Zmc2V0cy5oPgorCisJLnRleHQKKwkuYWx0bWFjcm8KKworCS5tYWNy byBzYXZlX2FsbF9iYXNlX3JlZ3MKKwlSRUdfUyB4MSwgIFBUX1JBKHNwKQorCVJFR19TIHgzLCAg UFRfR1Aoc3ApCisJUkVHX1MgeDQsICBQVF9UUChzcCkKKwlSRUdfUyB4NSwgIFBUX1QwKHNwKQor CVJFR19TIHg2LCAgUFRfVDEoc3ApCisJUkVHX1MgeDcsICBQVF9UMihzcCkKKwlSRUdfUyB4OCwg IFBUX1MwKHNwKQorCVJFR19TIHg5LCAgUFRfUzEoc3ApCisJUkVHX1MgeDEwLCBQVF9BMChzcCkK KwlSRUdfUyB4MTEsIFBUX0ExKHNwKQorCVJFR19TIHgxMiwgUFRfQTIoc3ApCisJUkVHX1MgeDEz LCBQVF9BMyhzcCkKKwlSRUdfUyB4MTQsIFBUX0E0KHNwKQorCVJFR19TIHgxNSwgUFRfQTUoc3Ap CisJUkVHX1MgeDE2LCBQVF9BNihzcCkKKwlSRUdfUyB4MTcsIFBUX0E3KHNwKQorCVJFR19TIHgx OCwgUFRfUzIoc3ApCisJUkVHX1MgeDE5LCBQVF9TMyhzcCkKKwlSRUdfUyB4MjAsIFBUX1M0KHNw KQorCVJFR19TIHgyMSwgUFRfUzUoc3ApCisJUkVHX1MgeDIyLCBQVF9TNihzcCkKKwlSRUdfUyB4 MjMsIFBUX1M3KHNwKQorCVJFR19TIHgyNCwgUFRfUzgoc3ApCisJUkVHX1MgeDI1LCBQVF9TOShz cCkKKwlSRUdfUyB4MjYsIFBUX1MxMChzcCkKKwlSRUdfUyB4MjcsIFBUX1MxMShzcCkKKwlSRUdf UyB4MjgsIFBUX1QzKHNwKQorCVJFR19TIHgyOSwgUFRfVDQoc3ApCisJUkVHX1MgeDMwLCBQVF9U NShzcCkKKwlSRUdfUyB4MzEsIFBUX1Q2KHNwKQorCS5lbmRtCisKKwkubWFjcm8gcmVzdG9yZV9h bGxfYmFzZV9yZWdzCisJUkVHX0wgeDMsICBQVF9HUChzcCkKKwlSRUdfTCB4NCwgIFBUX1RQKHNw KQorCVJFR19MIHg1LCAgUFRfVDAoc3ApCisJUkVHX0wgeDYsICBQVF9UMShzcCkKKwlSRUdfTCB4 NywgIFBUX1QyKHNwKQorCVJFR19MIHg4LCAgUFRfUzAoc3ApCisJUkVHX0wgeDksICBQVF9TMShz cCkKKwlSRUdfTCB4MTAsIFBUX0EwKHNwKQorCVJFR19MIHgxMSwgUFRfQTEoc3ApCisJUkVHX0wg eDEyLCBQVF9BMihzcCkKKwlSRUdfTCB4MTMsIFBUX0EzKHNwKQorCVJFR19MIHgxNCwgUFRfQTQo c3ApCisJUkVHX0wgeDE1LCBQVF9BNShzcCkKKwlSRUdfTCB4MTYsIFBUX0E2KHNwKQorCVJFR19M IHgxNywgUFRfQTcoc3ApCisJUkVHX0wgeDE4LCBQVF9TMihzcCkKKwlSRUdfTCB4MTksIFBUX1Mz KHNwKQorCVJFR19MIHgyMCwgUFRfUzQoc3ApCisJUkVHX0wgeDIxLCBQVF9TNShzcCkKKwlSRUdf TCB4MjIsIFBUX1M2KHNwKQorCVJFR19MIHgyMywgUFRfUzcoc3ApCisJUkVHX0wgeDI0LCBQVF9T OChzcCkKKwlSRUdfTCB4MjUsIFBUX1M5KHNwKQorCVJFR19MIHgyNiwgUFRfUzEwKHNwKQorCVJF R19MIHgyNywgUFRfUzExKHNwKQorCVJFR19MIHgyOCwgUFRfVDMoc3ApCisJUkVHX0wgeDI5LCBQ VF9UNChzcCkKKwlSRUdfTCB4MzAsIFBUX1Q1KHNwKQorCVJFR19MIHgzMSwgUFRfVDYoc3ApCisJ LmVuZG0KKworRU5UUlkoa3JldHByb2JlX3RyYW1wb2xpbmUpCisJYWRkaSBzcCwgc3AsIC0oUFRf U0laRV9PTl9TVEFDSykKKwlzYXZlX2FsbF9iYXNlX3JlZ3MKKworCW1vdmUgYTAsIHNwIC8qIHB0 X3JlZ3MgKi8KKworCWNhbGwgdHJhbXBvbGluZV9wcm9iZV9oYW5kbGVyCisKKwkvKiB1c2UgdGhl IHJlc3VsdCBhcyB0aGUgcmV0dXJuLWFkZHJlc3MgKi8KKwltb3ZlIHJhLCBhMAorCisJcmVzdG9y ZV9hbGxfYmFzZV9yZWdzCisJYWRkaSBzcCwgc3AsIFBUX1NJWkVfT05fU1RBQ0sKKworCXJldAor RU5EUFJPQyhrcmV0cHJvYmVfdHJhbXBvbGluZSkKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2Vy bmVsL3Byb2Jlcy9zaW11bGF0ZS1pbnNuLmMgYi9hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvc2lt dWxhdGUtaW5zbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4yNTE5Y2Uy Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9yaXNjdi9rZXJuZWwvcHJvYmVzL3NpbXVsYXRlLWlu c24uYwpAQCAtMCwwICsxLDg1IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MCsKKworI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o PgorI2luY2x1ZGUgPGxpbnV4L2twcm9iZXMuaD4KKworI2luY2x1ZGUgImRlY29kZS1pbnNuLmgi CisjaW5jbHVkZSAic2ltdWxhdGUtaW5zbi5oIgorCitzdGF0aWMgaW5saW5lIGJvb2wgcnZfaW5z bl9yZWdfZ2V0X3ZhbChzdHJ1Y3QgcHRfcmVncyAqcmVncywgdTMyIGluZGV4LAorCQkJCSAgICAg ICB1bnNpZ25lZCBsb25nICpwdHIpCit7CisJaWYgKGluZGV4ID09IDApCisJCSpwdHIgPSAwOwor CWVsc2UgaWYgKGluZGV4IDw9IDMxKQorCQkqcHRyID0gKigodW5zaWduZWQgbG9uZyAqKXJlZ3Mg KyBpbmRleCk7CisJZWxzZQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwor c3RhdGljIGlubGluZSBib29sIHJ2X2luc25fcmVnX3NldF92YWwoc3RydWN0IHB0X3JlZ3MgKnJl Z3MsIHUzMiBpbmRleCwKKwkJCQkgICAgICAgdW5zaWduZWQgbG9uZyB2YWwpCit7CisJaWYgKGlu ZGV4ID09IDApCisJCXJldHVybiBmYWxzZTsKKwllbHNlIGlmIChpbmRleCA8PSAzMSkKKwkJKigo dW5zaWduZWQgbG9uZyAqKXJlZ3MgKyBpbmRleCkgPSB2YWw7CisJZWxzZQorCQlyZXR1cm4gZmFs c2U7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBfX2twcm9iZXMgc2ltdWxhdGVfamFsKHUz MiBvcGNvZGUsIHVuc2lnbmVkIGxvbmcgYWRkciwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCit7CisJ LyoKKwkgKiAgICAgMzEgICAgMzAgICAgICAgMjEgICAgMjAgICAgIDE5ICAgICAgICAxMiAxMSA3 IDYgICAgICAwCisJICogaW1tIFsyMF0gfCBpbW1bMTA6MV0gfCBpbW1bMTFdIHwgaW1tWzE5OjEy XSB8IHJkIHwgb3Bjb2RlCisJICogICAgIDEgICAgICAgICAxMCAgICAgICAgICAxICAgICAgICAg ICA4ICAgICAgIDUgICAgSkFML0oKKwkgKi8KKwlib29sIHJldDsKKwl1MzIgaW1tOworCXUzMiBp bmRleCA9IChvcGNvZGUgPj4gNykgJiAweDFmOworCisJcmV0ID0gcnZfaW5zbl9yZWdfc2V0X3Zh bChyZWdzLCBpbmRleCwgYWRkciArIDQpOworCWlmICghcmV0KQorCQlyZXR1cm4gcmV0OworCisJ aW1tICA9ICgob3Bjb2RlID4+IDIxKSAmIDB4M2ZmKSA8PCAxOworCWltbSB8PSAoKG9wY29kZSA+ PiAyMCkgJiAweDEpICAgPDwgMTE7CisJaW1tIHw9ICgob3Bjb2RlID4+IDEyKSAmIDB4ZmYpICA8 PCAxMjsKKwlpbW0gfD0gKChvcGNvZGUgPj4gMzEpICYgMHgxKSAgIDw8IDIwOworCisJaW5zdHJ1 Y3Rpb25fcG9pbnRlcl9zZXQocmVncywgYWRkciArIHNpZ25fZXh0ZW5kMzIoKGltbSksIDIwKSk7 CisKKwlyZXR1cm4gcmV0OworfQorCitib29sIF9fa3Byb2JlcyBzaW11bGF0ZV9qYWxyKHUzMiBv cGNvZGUsIHVuc2lnbmVkIGxvbmcgYWRkciwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCit7CisJLyoK KwkgKiAzMSAgICAgICAgICAyMCAxOSAxNSAxNCAxMiAxMSA3IDYgICAgICAwCisJICogIG9mZnNl dFsxMTowXSB8IHJzMSB8IDAxMCB8IHJkIHwgb3Bjb2RlCisJICogICAgICAxMiAgICAgICAgIDUg ICAgICAzICAgIDUgICAgSkFMUi9KUgorCSAqLworCWJvb2wgcmV0OworCXVuc2lnbmVkIGxvbmcg YmFzZV9hZGRyOworCXUzMiBpbW0gPSAob3Bjb2RlID4+IDIwKSAmIDB4ZmZmOworCXUzMiByZF9p bmRleCA9IChvcGNvZGUgPj4gNykgJiAweDFmOworCXUzMiByczFfaW5kZXggPSAob3Bjb2RlID4+ IDE1KSAmIDB4MWY7CisKKwlyZXQgPSBydl9pbnNuX3JlZ19zZXRfdmFsKHJlZ3MsIHJkX2luZGV4 LCBhZGRyICsgNCk7CisJaWYgKCFyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBydl9pbnNu X3JlZ19nZXRfdmFsKHJlZ3MsIHJzMV9pbmRleCwgJmJhc2VfYWRkcik7CisJaWYgKCFyZXQpCisJ CXJldHVybiByZXQ7CisKKwlpbnN0cnVjdGlvbl9wb2ludGVyX3NldChyZWdzLCAoYmFzZV9hZGRy ICsgc2lnbl9leHRlbmQzMigoaW1tKSwgMTEpKSZ+MSk7CisKKwlyZXR1cm4gcmV0OworfQpkaWZm IC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwvcHJvYmVzL3NpbXVsYXRlLWluc24uaCBiL2FyY2gv cmlzY3Yva2VybmVsL3Byb2Jlcy9zaW11bGF0ZS1pbnNuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAuLmNiNmZmN2QKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL3Jpc2N2L2tl cm5lbC9wcm9iZXMvc2ltdWxhdGUtaW5zbi5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKyAqLworCisjaWZuZGVmIF9SSVNDVl9LRVJORUxfUFJP QkVTX1NJTVVMQVRFX0lOU05fSAorI2RlZmluZSBfUklTQ1ZfS0VSTkVMX1BST0JFU19TSU1VTEFU RV9JTlNOX0gKKworI2RlZmluZSBfX1JJU0NWX0lOU05fRlVOQ1MobmFtZSwgbWFzaywgdmFsKQkJ CQlcCitzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgcmlzY3ZfaW5zbl9pc18jI25hbWUocHJv YmVfb3Bjb2RlX3QgY29kZSkJXAorewkJCQkJCQkJCVwKKwlCVUlMRF9CVUdfT04ofihtYXNrKSAm ICh2YWwpKTsJCQkJCVwKKwlyZXR1cm4gKGNvZGUgJiAobWFzaykpID09ICh2YWwpOwkJCQlcCit9 CQkJCQkJCQkJXAorYm9vbCBzaW11bGF0ZV8jI25hbWUodTMyIG9wY29kZSwgdW5zaWduZWQgbG9u ZyBhZGRyLAkJCVwKKwkJICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVncykKKworI2RlZmluZSBSSVND Vl9JTlNOX1JFSkVDVEVEKG5hbWUsIGNvZGUpCQkJCQlcCisJZG8gewkJCQkJCQkJXAorCQlpZiAo cmlzY3ZfaW5zbl9pc18jI25hbWUoY29kZSkpIHsJCQlcCisJCQlyZXR1cm4gSU5TTl9SRUpFQ1RF RDsJCQkJXAorCQl9CQkJCQkJCVwKKwl9IHdoaWxlICgwKQorCitfX1JJU0NWX0lOU05fRlVOQ1Mo c3lzdGVtLAkweDdmLCAweDczKTsKK19fUklTQ1ZfSU5TTl9GVU5DUyhmZW5jZSwJMHg3ZiwgMHgw Zik7CisKKyNkZWZpbmUgUklTQ1ZfSU5TTl9TRVRfU0lNVUxBVEUobmFtZSwgY29kZSkJCQkJXAor CWRvIHsJCQkJCQkJCVwKKwkJaWYgKHJpc2N2X2luc25faXNfIyNuYW1lKGNvZGUpKSB7CQkJXAor CQkJYXBpLT5oYW5kbGVyID0gc2ltdWxhdGVfIyNuYW1lOwkJCVwKKwkJCXJldHVybiBJTlNOX0dP T0RfTk9fU0xPVDsJCQlcCisJCX0JCQkJCQkJXAorCX0gd2hpbGUgKDApCisKK19fUklTQ1ZfSU5T Tl9GVU5DUyhjX2osCQkweGUwMDMsIDB4YTAwMSk7CitfX1JJU0NWX0lOU05fRlVOQ1MoY19qciwJ MHhmMDA3LCAweDgwMDIpOworX19SSVNDVl9JTlNOX0ZVTkNTKGNfamFsLAkweGUwMDMsIDB4MjAw MSk7CitfX1JJU0NWX0lOU05fRlVOQ1MoY19qYWxyLAkweGYwMDcsIDB4OTAwMik7CitfX1JJU0NW X0lOU05fRlVOQ1MoY19iZXF6LAkweGUwMDMsIDB4YzAwMSk7CitfX1JJU0NWX0lOU05fRlVOQ1Mo Y19ibmV6LAkweGUwMDMsIDB4ZTAwMSk7CitfX1JJU0NWX0lOU05fRlVOQ1MoY19lYnJlYWssCTB4 ZmZmZiwgMHg5MDAyKTsKKworX19SSVNDVl9JTlNOX0ZVTkNTKGF1aXBjLAkweDdmLCAweDE3KTsK K19fUklTQ1ZfSU5TTl9GVU5DUyhicmFuY2gsCTB4N2YsIDB4NjMpOworCitfX1JJU0NWX0lOU05f RlVOQ1MoamFsLAkJMHg3ZiwgMHg2Zik7CitfX1JJU0NWX0lOU05fRlVOQ1MoamFsciwJMHg3MDdm LCAweDY3KTsKKworI2VuZGlmIC8qIF9SSVNDVl9LRVJORUxfUFJPQkVTX1NJTVVMQVRFX0lOU05f SCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwvdHJhcHMuYyBiL2FyY2gvcmlzY3Yv a2VybmVsL3RyYXBzLmMKaW5kZXggYWQxNGY0NC4uMTlhNzg4YSAxMDA2NDQKLS0tIGEvYXJjaC9y aXNjdi9rZXJuZWwvdHJhcHMuYworKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC90cmFwcy5jCkBAIC0x Miw2ICsxMiw3IEBACiAjaW5jbHVkZSA8bGludXgvc2lnbmFsLmg+CiAjaW5jbHVkZSA8bGludXgv a2RlYnVnLmg+CiAjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgorI2luY2x1ZGUgPGxpbnV4L2tw cm9iZXMuaD4KICNpbmNsdWRlIDxsaW51eC9tbS5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5o PgogI2luY2x1ZGUgPGxpbnV4L2lycS5oPgpAQCAtMTQ1LDYgKzE0NiwxNCBAQCBzdGF0aWMgaW5s aW5lIHVuc2lnbmVkIGxvbmcgZ2V0X2JyZWFrX2luc25fbGVuZ3RoKHVuc2lnbmVkIGxvbmcgcGMp CiAKIGFzbWxpbmthZ2UgX192aXNpYmxlIHZvaWQgZG9fdHJhcF9icmVhayhzdHJ1Y3QgcHRfcmVn cyAqcmVncykKIHsKKyNpZmRlZiBDT05GSUdfS1BST0JFUworCWlmIChrcHJvYmVfc2luZ2xlX3N0 ZXBfaGFuZGxlcihyZWdzKSkKKwkJcmV0dXJuOworCisJaWYgKGtwcm9iZV9icmVha3BvaW50X2hh bmRsZXIocmVncykpCisJCXJldHVybjsKKyNlbmRpZgorCiAJaWYgKHVzZXJfbW9kZShyZWdzKSkK IAkJZm9yY2Vfc2lnX2ZhdWx0KFNJR1RSQVAsIFRSQVBfQlJLUFQsICh2b2lkIF9fdXNlciAqKXJl Z3MtPmVwYyk7CiAjaWZkZWYgQ09ORklHX0tHREIKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbW0v ZmF1bHQuYyBiL2FyY2gvcmlzY3YvbW0vZmF1bHQuYwppbmRleCAzYzhiOWU0Li42MDJmMTI1IDEw MDY0NAotLS0gYS9hcmNoL3Jpc2N2L21tL2ZhdWx0LmMKKysrIGIvYXJjaC9yaXNjdi9tbS9mYXVs dC5jCkBAIC0xMyw2ICsxMyw3IEBACiAjaW5jbHVkZSA8bGludXgvcGVyZl9ldmVudC5oPgogI2lu Y2x1ZGUgPGxpbnV4L3NpZ25hbC5oPgogI2luY2x1ZGUgPGxpbnV4L3VhY2Nlc3MuaD4KKyNpbmNs dWRlIDxsaW51eC9rcHJvYmVzLmg+CiAKICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CiAjaW5jbHVk ZSA8YXNtL3RsYmZsdXNoLmg+CkBAIC0yMDIsNiArMjAzLDkgQEAgYXNtbGlua2FnZSB2b2lkIGRv X3BhZ2VfZmF1bHQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiAJdHNrID0gY3VycmVudDsKIAltbSA9 IHRzay0+bW07CiAKKwlpZiAoa3Byb2JlX3BhZ2VfZmF1bHQocmVncywgY2F1c2UpKQorCQlyZXR1 cm47CisKIAkvKgogCSAqIEZhdWx0LWluIGtlcm5lbC1zcGFjZSB2aXJ0dWFsIG1lbW9yeSBvbi1k ZW1hbmQuCiAJICogVGhlICdyZWZlcmVuY2UnIHBhZ2UgdGFibGUgaXMgaW5pdF9tbS5wZ2QuCi0t IAoyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK