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=-8.6 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 DABE4C433FF for ; Thu, 1 Aug 2019 12:12:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id AD4312171F for ; Thu, 1 Aug 2019 12:12:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1564661543; bh=oIaRqmpy4nbMnyVSHQ2jwoHghsxRXBYnSkrs4LmjELU=; h=Date:From:To:Cc:Subject:References:In-Reply-To:List-ID:From; b=osXP2WZtPgjB+JrckMdcXORXfaprM3SwjmsXxrByFPBKA8NnOyq8zGI6eTVbFP+QW JDHUoxB+ctwOxAP9opB/cs9prrR/M+6H95bf5k/mIYZIht/pJ5BZXA6Ijs0N25HGzS Od+/n6F1SrZ7+UL5uKnf/M3Z26b5BVgxujuRulIw= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730124AbfHAMMW (ORCPT ); Thu, 1 Aug 2019 08:12:22 -0400 Received: from mail.kernel.org ([198.145.29.99]:57316 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728592AbfHAMMW (ORCPT ); Thu, 1 Aug 2019 08:12:22 -0400 Received: from willie-the-truck (236.31.169.217.in-addr.arpa [217.169.31.236]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 52C70214DA; Thu, 1 Aug 2019 12:12:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1564661541; bh=oIaRqmpy4nbMnyVSHQ2jwoHghsxRXBYnSkrs4LmjELU=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=XpjBoZOM9WEMmJnVixUe8KlMMnHzHLMwsEfaOe5HpMAunBpn20UoOMHV/gjCXcw14 e6uSzA0A769JajDOkm2zd4fd5l3J8MfUlCD0Peh/QIJRPoVq4LzNVUBu+1ItDmblca aS2iudqWh/M9bSjEGPHLN0UITfRFIXT9oMYdGsgQ= Date: Thu, 1 Aug 2019 13:12:17 +0100 From: Will Deacon To: Qian Cai Cc: Catalin Marinas , andreyknvl@google.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] arm64/mm: fix variable 'tag' set but not used Message-ID: <20190801121216.gsvneelth6scj57s@willie-the-truck> References: <1564605498-17629-1-git-send-email-cai@lca.pw> <20190801120121.6cmtho3wd32nzfoz@willie-the-truck> <5E9F5456-3B82-4CB8-868B-1C7B4CBE4CBC@lca.pw> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <5E9F5456-3B82-4CB8-868B-1C7B4CBE4CBC@lca.pw> User-Agent: NeoMutt/20170113 (1.7.2) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Aug 01, 2019 at 08:07:12AM -0400, Qian Cai wrote: > > > > On Aug 1, 2019, at 8:01 AM, Will Deacon wrote: > > > > On Wed, Jul 31, 2019 at 04:38:18PM -0400, Qian Cai wrote: > >> When CONFIG_KASAN_SW_TAGS=n, set_tag() is compiled away. GCC throws a > >> warning, > >> > >> mm/kasan/common.c: In function '__kasan_kmalloc': > >> mm/kasan/common.c:464:5: warning: variable 'tag' set but not used > >> [-Wunused-but-set-variable] > >> u8 tag = 0xff; > >> ^~~ > >> > >> Fix it by making __tag_set() a static inline function. > >> > >> Signed-off-by: Qian Cai > >> --- > >> arch/arm64/include/asm/memory.h | 6 +++++- > >> 1 file changed, 5 insertions(+), 1 deletion(-) > >> > >> diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h > >> index b7ba75809751..9645b1340afe 100644 > >> --- a/arch/arm64/include/asm/memory.h > >> +++ b/arch/arm64/include/asm/memory.h > >> @@ -210,7 +210,11 @@ static inline unsigned long kaslr_offset(void) > >> #define __tag_reset(addr) untagged_addr(addr) > >> #define __tag_get(addr) (__u8)((u64)(addr) >> 56) > >> #else > >> -#define __tag_set(addr, tag) (addr) > >> +static inline const void *__tag_set(const void *addr, u8 tag) > >> +{ > >> + return addr; > >> +} > > > > Why doesn't this trigger a warning in page_to_virt(), which passes an > > unsigned long for the address parameter? > > #define page_to_virt(page) … __tag_set(__addr, page_kasan_tag(page)); … > > static inline u8 page_kasan_tag(const struct page *page) > { > return 0xff; > } > > GCC will see that “page” is used. No, I mean because you're making addr 'const void *'. /me finds a toolchain. Look: In file included from ./arch/arm64/include/asm/pgtable-hwdef.h:8, from ./arch/arm64/include/asm/processor.h:35, from ./include/linux/mutex.h:19, from ./include/linux/kernfs.h:12, from ./include/linux/sysfs.h:16, from ./include/linux/kobject.h:20, from ./include/linux/of.h:17, from ./include/linux/irqdomain.h:35, from ./include/linux/acpi.h:13, from ./include/acpi/apei.h:9, from ./include/acpi/ghes.h:5, from ./include/linux/arm_sdei.h:14, from arch/arm64/kernel/asm-offsets.c:10: ./include/linux/mm.h: In function ‘lowmem_page_address’: ./arch/arm64/include/asm/memory.h:309:14: warning: passing argument 1 of ‘__tag_set’ makes pointer from integer without a cast [-Wint-conversion] __tag_set(__addr, page_kasan_tag(page)); \ ^~~~~~ ./include/linux/mm.h:1302:9: note: in expansion of macro ‘page_to_virt’ return page_to_virt(page); ^~~~~~~~~~~~ ./arch/arm64/include/asm/memory.h:213:49: note: expected ‘const void *’ but argument is of type ‘long unsigned int’ static inline const void *__tag_set(const void *addr, u8 tag) ~~~~~~~~~~~~^~~~ ./arch/arm64/include/asm/memory.h:309:4: warning: initialization of ‘long unsigned int’ from ‘const void *’ makes integer from pointer without a cast [-Wint-conversion] __tag_set(__addr, page_kasan_tag(page)); \ ^~~~~~~~~ ./include/linux/mm.h:1302:9: note: in expansion of macro ‘page_to_virt’ return page_to_virt(page); ^~~~~~~~~~~~ If you're going to send patches removing compiler warnings, please have the courtesy to test them first. Will 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=-8.5 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 D86FDC433FF for ; Thu, 1 Aug 2019 12:13:39 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 AE03620838 for ; Thu, 1 Aug 2019 12:13:39 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="aGVZoIaZ"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="XpjBoZOM" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AE03620838 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-arm-kernel-bounces+infradead-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=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=YqvW/x1/im3Jqqhovx9pKkcyp3LBR4LkShwlbnNgwgU=; b=aGVZoIaZDQguZ8 AvUBhr9bZ3DN0p61MjlGMT0QczG2SL7nBEbQn97yx5/G+EjV1wCSmXhWD6T28oCNn9GC3+JoA230a odGr0rsMgzKWh5BaIRiDxfs9JmyDb0MVq5NpxdR/1dm6vtNMthnUtvGwGRnZ1oy2Fr+BUHvxoTF1s 3sZNJA/NzygLfnXtz4imDthwMoerU+NjNOUZBaAunT8HI04xrAq4RkNiX9DMf2rIdTSxD/z/fdYHm lnPpzSqyi1T8m6YGKento7OY9FoEnf5CqQ9sNgp/XIcyQPSwSjDYlsbE2dFHvccpsvsnbFEzLdSV0 lQ8MBFqcOiVbD772mLhQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1ht9xe-0004Wn-9b; Thu, 01 Aug 2019 12:13:34 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1ht9wT-0002oF-Un for linux-arm-kernel@lists.infradead.org; Thu, 01 Aug 2019 12:12:23 +0000 Received: from willie-the-truck (236.31.169.217.in-addr.arpa [217.169.31.236]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 52C70214DA; Thu, 1 Aug 2019 12:12:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1564661541; bh=oIaRqmpy4nbMnyVSHQ2jwoHghsxRXBYnSkrs4LmjELU=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=XpjBoZOM9WEMmJnVixUe8KlMMnHzHLMwsEfaOe5HpMAunBpn20UoOMHV/gjCXcw14 e6uSzA0A769JajDOkm2zd4fd5l3J8MfUlCD0Peh/QIJRPoVq4LzNVUBu+1ItDmblca aS2iudqWh/M9bSjEGPHLN0UITfRFIXT9oMYdGsgQ= Date: Thu, 1 Aug 2019 13:12:17 +0100 From: Will Deacon To: Qian Cai Subject: Re: [PATCH] arm64/mm: fix variable 'tag' set but not used Message-ID: <20190801121216.gsvneelth6scj57s@willie-the-truck> References: <1564605498-17629-1-git-send-email-cai@lca.pw> <20190801120121.6cmtho3wd32nzfoz@willie-the-truck> <5E9F5456-3B82-4CB8-868B-1C7B4CBE4CBC@lca.pw> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <5E9F5456-3B82-4CB8-868B-1C7B4CBE4CBC@lca.pw> User-Agent: NeoMutt/20170113 (1.7.2) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190801_051222_218370_A58A6D41 X-CRM114-Status: GOOD ( 16.21 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Catalin Marinas , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, andreyknvl@google.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVGh1LCBBdWcgMDEsIDIwMTkgYXQgMDg6MDc6MTJBTSAtMDQwMCwgUWlhbiBDYWkgd3JvdGU6 Cj4gCj4gCj4gPiBPbiBBdWcgMSwgMjAxOSwgYXQgODowMSBBTSwgV2lsbCBEZWFjb24gPHdpbGxA a2VybmVsLm9yZz4gd3JvdGU6Cj4gPiAKPiA+IE9uIFdlZCwgSnVsIDMxLCAyMDE5IGF0IDA0OjM4 OjE4UE0gLTA0MDAsIFFpYW4gQ2FpIHdyb3RlOgo+ID4+IFdoZW4gQ09ORklHX0tBU0FOX1NXX1RB R1M9biwgc2V0X3RhZygpIGlzIGNvbXBpbGVkIGF3YXkuIEdDQyB0aHJvd3MgYQo+ID4+IHdhcm5p bmcsCj4gPj4gCj4gPj4gbW0va2FzYW4vY29tbW9uLmM6IEluIGZ1bmN0aW9uICdfX2thc2FuX2tt YWxsb2MnOgo+ID4+IG1tL2thc2FuL2NvbW1vbi5jOjQ2NDo1OiB3YXJuaW5nOiB2YXJpYWJsZSAn dGFnJyBzZXQgYnV0IG5vdCB1c2VkCj4gPj4gWy1XdW51c2VkLWJ1dC1zZXQtdmFyaWFibGVdCj4g Pj4gIHU4IHRhZyA9IDB4ZmY7Cj4gPj4gICAgIF5+fgo+ID4+IAo+ID4+IEZpeCBpdCBieSBtYWtp bmcgX190YWdfc2V0KCkgYSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9uLgo+ID4+IAo+ID4+IFNpZ25l ZC1vZmYtYnk6IFFpYW4gQ2FpIDxjYWlAbGNhLnB3Pgo+ID4+IC0tLQo+ID4+IGFyY2gvYXJtNjQv aW5jbHVkZS9hc20vbWVtb3J5LmggfCA2ICsrKysrLQo+ID4+IDEgZmlsZSBjaGFuZ2VkLCA1IGlu c2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiA+PiAKPiA+PiBkaWZmIC0tZ2l0IGEvYXJjaC9h cm02NC9pbmNsdWRlL2FzbS9tZW1vcnkuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vbWVtb3J5 LmgKPiA+PiBpbmRleCBiN2JhNzU4MDk3NTEuLjk2NDViMTM0MGFmZSAxMDA2NDQKPiA+PiAtLS0g YS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL21lbW9yeS5oCj4gPj4gKysrIGIvYXJjaC9hcm02NC9p bmNsdWRlL2FzbS9tZW1vcnkuaAo+ID4+IEBAIC0yMTAsNyArMjEwLDExIEBAIHN0YXRpYyBpbmxp bmUgdW5zaWduZWQgbG9uZyBrYXNscl9vZmZzZXQodm9pZCkKPiA+PiAjZGVmaW5lIF9fdGFnX3Jl c2V0KGFkZHIpCXVudGFnZ2VkX2FkZHIoYWRkcikKPiA+PiAjZGVmaW5lIF9fdGFnX2dldChhZGRy KQkJKF9fdTgpKCh1NjQpKGFkZHIpID4+IDU2KQo+ID4+ICNlbHNlCj4gPj4gLSNkZWZpbmUgX190 YWdfc2V0KGFkZHIsIHRhZykJKGFkZHIpCj4gPj4gK3N0YXRpYyBpbmxpbmUgY29uc3Qgdm9pZCAq X190YWdfc2V0KGNvbnN0IHZvaWQgKmFkZHIsIHU4IHRhZykKPiA+PiArewo+ID4+ICsJcmV0dXJu IGFkZHI7Cj4gPj4gK30KPiA+IAo+ID4gV2h5IGRvZXNuJ3QgdGhpcyB0cmlnZ2VyIGEgd2Fybmlu ZyBpbiBwYWdlX3RvX3ZpcnQoKSwgd2hpY2ggcGFzc2VzIGFuCj4gPiB1bnNpZ25lZCBsb25nIGZv ciB0aGUgYWRkcmVzcyBwYXJhbWV0ZXI/Cj4gCj4gI2RlZmluZSBwYWdlX3RvX3ZpcnQocGFnZSkg 4oCmIF9fdGFnX3NldChfX2FkZHIsIHBhZ2Vfa2FzYW5fdGFnKHBhZ2UpKTsg4oCmCj4gCj4gc3Rh dGljIGlubGluZSB1OCBwYWdlX2thc2FuX3RhZyhjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSkKPiB7 CQo+IAlyZXR1cm4gMHhmZjsKPiB9Cj4gCj4gR0NDIHdpbGwgc2VlIHRoYXQg4oCccGFnZeKAnSBp cyB1c2VkLgoKTm8sIEkgbWVhbiBiZWNhdXNlIHlvdSdyZSBtYWtpbmcgYWRkciAnY29uc3Qgdm9p ZCAqJy4KCi9tZSBmaW5kcyBhIHRvb2xjaGFpbi4KCkxvb2s6CgoKSW4gZmlsZSBpbmNsdWRlZCBm cm9tIC4vYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLWh3ZGVmLmg6OCwKICAgICAgICAg ICAgICAgICBmcm9tIC4vYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaDozNSwKICAg ICAgICAgICAgICAgICBmcm9tIC4vaW5jbHVkZS9saW51eC9tdXRleC5oOjE5LAogICAgICAgICAg ICAgICAgIGZyb20gLi9pbmNsdWRlL2xpbnV4L2tlcm5mcy5oOjEyLAogICAgICAgICAgICAgICAg IGZyb20gLi9pbmNsdWRlL2xpbnV4L3N5c2ZzLmg6MTYsCiAgICAgICAgICAgICAgICAgZnJvbSAu L2luY2x1ZGUvbGludXgva29iamVjdC5oOjIwLAogICAgICAgICAgICAgICAgIGZyb20gLi9pbmNs dWRlL2xpbnV4L29mLmg6MTcsCiAgICAgICAgICAgICAgICAgZnJvbSAuL2luY2x1ZGUvbGludXgv aXJxZG9tYWluLmg6MzUsCiAgICAgICAgICAgICAgICAgZnJvbSAuL2luY2x1ZGUvbGludXgvYWNw aS5oOjEzLAogICAgICAgICAgICAgICAgIGZyb20gLi9pbmNsdWRlL2FjcGkvYXBlaS5oOjksCiAg ICAgICAgICAgICAgICAgZnJvbSAuL2luY2x1ZGUvYWNwaS9naGVzLmg6NSwKICAgICAgICAgICAg ICAgICBmcm9tIC4vaW5jbHVkZS9saW51eC9hcm1fc2RlaS5oOjE0LAogICAgICAgICAgICAgICAg IGZyb20gYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYzoxMDoKLi9pbmNsdWRlL2xpbnV4 L21tLmg6IEluIGZ1bmN0aW9uIOKAmGxvd21lbV9wYWdlX2FkZHJlc3PigJk6Ci4vYXJjaC9hcm02 NC9pbmNsdWRlL2FzbS9tZW1vcnkuaDozMDk6MTQ6IHdhcm5pbmc6IHBhc3NpbmcgYXJndW1lbnQg MSBvZiDigJhfX3RhZ19zZXTigJkgbWFrZXMgcG9pbnRlciBmcm9tIGludGVnZXIgd2l0aG91dCBh IGNhc3QgWy1XaW50LWNvbnZlcnNpb25dCiAgICBfX3RhZ19zZXQoX19hZGRyLCBwYWdlX2thc2Fu X3RhZyhwYWdlKSk7ICBcCiAgICAgICAgICAgICAgXn5+fn5+Ci4vaW5jbHVkZS9saW51eC9tbS5o OjEzMDI6OTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmHBhZ2VfdG9fdmlydOKAmQog IHJldHVybiBwYWdlX3RvX3ZpcnQocGFnZSk7CiAgICAgICAgIF5+fn5+fn5+fn5+fgouL2FyY2gv YXJtNjQvaW5jbHVkZS9hc20vbWVtb3J5Lmg6MjEzOjQ5OiBub3RlOiBleHBlY3RlZCDigJhjb25z dCB2b2lkICrigJkgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUg4oCYbG9uZyB1bnNpZ25lZCBpbnTi gJkKIHN0YXRpYyBpbmxpbmUgY29uc3Qgdm9pZCAqX190YWdfc2V0KGNvbnN0IHZvaWQgKmFkZHIs IHU4IHRhZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5+fn5+fn5+fn5+ fl5+fn4KLi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL21lbW9yeS5oOjMwOTo0OiB3YXJuaW5nOiBp bml0aWFsaXphdGlvbiBvZiDigJhsb25nIHVuc2lnbmVkIGludOKAmSBmcm9tIOKAmGNvbnN0IHZv aWQgKuKAmSBtYWtlcyBpbnRlZ2VyIGZyb20gcG9pbnRlciB3aXRob3V0IGEgY2FzdCBbLVdpbnQt Y29udmVyc2lvbl0KICAgIF9fdGFnX3NldChfX2FkZHIsIHBhZ2Vfa2FzYW5fdGFnKHBhZ2UpKTsg IFwKICAgIF5+fn5+fn5+fgouL2luY2x1ZGUvbGludXgvbW0uaDoxMzAyOjk6IG5vdGU6IGluIGV4 cGFuc2lvbiBvZiBtYWNybyDigJhwYWdlX3RvX3ZpcnTigJkKICByZXR1cm4gcGFnZV90b192aXJ0 KHBhZ2UpOwogICAgICAgICBefn5+fn5+fn5+fn4KCgpJZiB5b3UncmUgZ29pbmcgdG8gc2VuZCBw YXRjaGVzIHJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzLCBwbGVhc2UgaGF2ZSB0aGUKY291cnRl c3kgdG8gdGVzdCB0aGVtIGZpcnN0LgoKV2lsbAoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgt YXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=