From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 95D3612F599; Fri, 19 Apr 2024 15:02:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713538944; cv=none; b=ICmycMjkoQkNdOT9GNHs8UDAkIVxhktusfvvYpT0KDMOhbAsMUl+ktN2nG6MKL7UWw0YuEJRag9XfZuSVV1GG9plhQTwEPxqvj5XB3/oTTjfOvsV4iJcjw4mZ/JorTl3MdUuIxEYak4h9H8FAIBkCTND/o/VAIYPCXX0nJuSHR4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713538944; c=relaxed/simple; bh=UA06SqKY53ZluOyFgnipAQL6i+7psWEVH9E0CMAEG4o=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=dbxD6ziuFD0Ad612qzq/txBXQJeonvdT8tkYpQd6kyQlCjDG94qYiIhxRU/RwTz4SaJwVBfD7pVk0UKqFuvZVgxL/ZhbHGA51TtJj/seA1kQ1SU5nfQvHK8Epjx5aGMUdI4lBQkD0A3tdcaxXIMcrl05px4TKG/L4QGwdZCWzGQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KWTmSMIA; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="KWTmSMIA" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DB0A2C072AA; Fri, 19 Apr 2024 15:02:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1713538944; bh=UA06SqKY53ZluOyFgnipAQL6i+7psWEVH9E0CMAEG4o=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=KWTmSMIAyQ/fmJBt+lKvpMxwiAysYXpUJ3T6prpJhXUA2rwNICZUJUfFtaLtyvmWQ alxcY5Q/Sy24Cvv7KcvxIL+X3djnPGLhxZS9S6n5ymUWcsbT0uEKtMpe7Xib7kVtMF m8ptSs0i9EF2d2TAruySnOiKPgSIYDIeYeL/exIyUfjtNv3ATLcCXJ5N/e1V/VAFov A50/1kX02IU/CXZRcJshE5zuYNVvjMiTIFZCeuGY8RjQKSnF7+BgvNC9JB3HmxO7mW 1+QMCfM/+ksH4uu9X/KDM10hW1LOtCv9cpApfOW5Psz21AaEEiTw1u9+tD+V46kfLU P8AT37Ym1VZ9w== Date: Fri, 19 Apr 2024 18:01:10 +0300 From: Mike Rapoport To: Yaxiong Tian Cc: catalin.marinas@arm.com, will@kernel.org, keescook@chromium.org, tony.luck@intel.com, gpiccoli@igalia.com, akpm@linux-foundation.org, ryan.roberts@arm.com, wangkefeng.wang@huawei.com, ardb@kernel.org, david@redhat.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, xiongxin Subject: Re: [PATCH v3] arm64: hibernate: Fix level3 translation fault in swsusp_save() Message-ID: References: <20240417025248.386622-1-tianyaxiong@kylinos.cn> Precedence: bulk X-Mailing-List: linux-hardening@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20240417025248.386622-1-tianyaxiong@kylinos.cn> On Wed, Apr 17, 2024 at 10:52:48AM +0800, Yaxiong Tian wrote: > On ARM64 machines using UEFI, if can_set_direct_map() return false by > setting some CONFIGS in kernel build or grub,such as > NO CONFIG_DEBUG_PAGEALLOC_ENABLE_DEFAULT、NO CONFIG_KFENCE > NO CONFIG_RODATA_FULL_DEFAULT_ENABLED.Also with setting rodata=off、 > debug_pagealloc=off in grub and NO CONFIG_KFENCE. > swsusp_save() will fail due to can't finding the map table under the > nomap memory.such as: > > [ 48.532162] Unable to handle kernel paging request at virtual address ffffff8000000000 > [ 48.532162] Mem abort info: > [ 48.532162] ESR = 0x0000000096000007 > [ 48.532162] EC = 0x25: DABT (current EL), IL = 32 bits > [ 48.532162] SET = 0, FnV = 0 > [ 48.532162] EA = 0, S1PTW = 0 > [ 48.532162] FSC = 0x07: level 3 translation fault > [ 48.532162] Data abort info: > [ 48.532162] ISV = 0, ISS = 0x00000007, ISS2 = 0x00000000 > [ 48.532162] CM = 0, WnR = 0, TnD = 0, TagAccess = 0 > [ 48.532162] GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0 > [ 48.532162] swapper pgtable: 4k pages, 39-bit VAs, pgdp=00000000eeb0b000 > [ 48.532162] [ffffff8000000000] pgd=180000217fff9803, p4d=180000217fff9803, pud=180000217fff9803, pmd=180000217fff8803, pte=0000000000000000 > [ 48.532162] Internal error: Oops: 0000000096000007 [#1] SMP > [ 48.532162] Internal error: Oops: 0000000096000007 [#1] SMP > [ 48.532162] Modules linked in: xt_multiport ipt_REJECT nf_reject_ipv4 xt_conntrack nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 libcrc32c iptable_filter bpfilter rfkill at803x snd_hda_codec_hdmi snd_hda_intel snd_intel_dspcfg dwmac_generic stmmac_platform snd_hda_codec stmmac joydev pcs_xpcs snd_hda_core phylink ppdev lp parport ramoops reed_solomon ip_tables x_tables nls_iso8859_1 vfat multipath linear amdgpu amdxcp drm_exec gpu_sched drm_buddy hid_generic usbhid hid radeon video drm_suballoc_helper drm_ttm_helper ttm i2c_algo_bit drm_display_helper cec drm_kms_helper drm > [ 48.532162] CPU: 0 PID: 3663 Comm: systemd-sleep Not tainted 6.6.2+ #76 > [ 48.532162] Source Version: 4e22ed63a0a48e7a7cff9b98b7806d8d4add7dc0 > [ 48.532162] Hardware name: Greatwall GW-XXXXXX-XXX/GW-XXXXXX-XXX, BIOS KunLun BIOS V4.0 01/19/2021 > [ 48.532162] pstate: 600003c5 (nZCv DAIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--) > [ 48.532162] pc : swsusp_save+0x280/0x538 > [ 48.532162] lr : swsusp_save+0x280/0x538 > [ 48.532162] sp : ffffffa034a3fa40 > [ 48.532162] x29: ffffffa034a3fa40 x28: ffffff8000001000 x27: 0000000000000000 > [ 48.532162] x26: ffffff8001400000 x25: ffffffc08113e248 x24: 0000000000000000 > [ 48.532162] x23: 0000000000080000 x22: ffffffc08113e280 x21: 00000000000c69f2 > [ 48.532162] x20: ffffff8000000000 x19: ffffffc081ae2500 x18: 0000000000000000 > [ 48.532162] x17: 6666662074736420 x16: 3030303030303030 x15: 3038666666666666 > [ 48.532162] x14: 0000000000000b69 x13: ffffff9f89088530 x12: 00000000ffffffea > [ 48.532162] x11: 00000000ffff7fff x10: 00000000ffff7fff x9 : ffffffc08193f0d0 > [ 48.532162] x8 : 00000000000bffe8 x7 : c0000000ffff7fff x6 : 0000000000000001 > [ 48.532162] x5 : ffffffa0fff09dc8 x4 : 0000000000000000 x3 : 0000000000000027 > [ 48.532162] x2 : 0000000000000000 x1 : 0000000000000000 x0 : 000000000000004e > [ 48.532162] Call trace: > [ 48.532162] swsusp_save+0x280/0x538 > [ 48.532162] swsusp_arch_suspend+0x148/0x190 > [ 48.532162] hibernation_snapshot+0x240/0x39c > [ 48.532162] hibernate+0xc4/0x378 > [ 48.532162] state_store+0xf0/0x10c > [ 48.532162] kobj_attr_store+0x14/0x24 > > This issue can be reproduced in QEMU using UEFI when booting with > rodata=off、debug_pagealloc=off in grub and NO CONFIG_KFENCE. > > This is because in swsusp_save()->copy_data_pages()->page_is_saveable(), > kernel_page_present() presumes that a page is present when can_set_direct_map() > returns false even for NOMAP ranges.So NOMAP pages will saved in after,and then > cause level3 translation fault in this pages. > > Since the NOMAP regions are now marked as PageReserved(), pfn walkers > and the rest of core mm will treat them as unusable memory. So this > regions should not saved in hibernation. > > This problem may cause by changes to pfn_valid() logic in commit > a7d9f306ba70 ("arm64: drop pfn_valid_within() and simplify pfn_valid()"). > > Reference ohter arch architecture,drop the !can_set_direct_map() condition > in kernel_page_present().So in page_is_savable(),these page will skiped. > > Fixes: a7d9f306ba70 ("arm64: drop pfn_valid_within() and simplify pfn_valid()") > > Suggested-by: Mike Rapoport > Suggested-by: Catalin Marinas > Co-developed-by: xiongxin > Signed-off-by: xiongxin > Signed-off-by: Yaxiong Tian Acked-by: Mike Rapoport (IBM) > --- > arch/arm64/mm/pageattr.c | 3 --- > 1 file changed, 3 deletions(-) > > diff --git a/arch/arm64/mm/pageattr.c b/arch/arm64/mm/pageattr.c > index 0c4e3ecf989d..0e270a1c51e6 100644 > --- a/arch/arm64/mm/pageattr.c > +++ b/arch/arm64/mm/pageattr.c > @@ -219,9 +219,6 @@ bool kernel_page_present(struct page *page) > pte_t *ptep; > unsigned long addr = (unsigned long)page_address(page); > > - if (!can_set_direct_map()) > - return true; > - > pgdp = pgd_offset_k(addr); > if (pgd_none(READ_ONCE(*pgdp))) > return false; > -- > 2.34.1 > -- Sincerely yours, Mike. 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 4CABCC04FF6 for ; Fri, 19 Apr 2024 15:02:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc: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=t9fgiX7Pb6fHlExJzKv08ux7XwkrSJMK1J2fAtokrSI=; b=xoXqAE+oJG9m/M FtXn/8w8fB0Swtrb6kjDv7XirSdNmn3Xz/1zKwLk7GvuSl30WrDPRi/uR9stu1HuKLKjL5aYbg9vj baDMEpbwcT6bvO3UECvD6Va/O7C+aL0mKz4Q94Ks17oRALadCQGacfxtnr5bS1hxvfQOVFT3sHu1A EyK1XiHTiX23dO66m7bO3CmKgS3XoeF7222MNoaKYH0xUdZZzTB1ViCOCMCnfXIx/1y1x+9ryUDo6 DZBKrG5dfSCqF57wGdvYVEltSp7QFTeam+b/xxMZwRONEzaSeyeGE3+Bg2wZgq66Y6X22SrvBUpYt 5IyPARLBfAs6+cBxCp+g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rxpl0-000000064GK-2rZt; Fri, 19 Apr 2024 15:02:30 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rxpkv-000000064ER-0F6Z for linux-arm-kernel@lists.infradead.org; Fri, 19 Apr 2024 15:02:29 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 73524619EE; Fri, 19 Apr 2024 15:02:24 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DB0A2C072AA; Fri, 19 Apr 2024 15:02:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1713538944; bh=UA06SqKY53ZluOyFgnipAQL6i+7psWEVH9E0CMAEG4o=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=KWTmSMIAyQ/fmJBt+lKvpMxwiAysYXpUJ3T6prpJhXUA2rwNICZUJUfFtaLtyvmWQ alxcY5Q/Sy24Cvv7KcvxIL+X3djnPGLhxZS9S6n5ymUWcsbT0uEKtMpe7Xib7kVtMF m8ptSs0i9EF2d2TAruySnOiKPgSIYDIeYeL/exIyUfjtNv3ATLcCXJ5N/e1V/VAFov A50/1kX02IU/CXZRcJshE5zuYNVvjMiTIFZCeuGY8RjQKSnF7+BgvNC9JB3HmxO7mW 1+QMCfM/+ksH4uu9X/KDM10hW1LOtCv9cpApfOW5Psz21AaEEiTw1u9+tD+V46kfLU P8AT37Ym1VZ9w== Date: Fri, 19 Apr 2024 18:01:10 +0300 From: Mike Rapoport To: Yaxiong Tian Cc: catalin.marinas@arm.com, will@kernel.org, keescook@chromium.org, tony.luck@intel.com, gpiccoli@igalia.com, akpm@linux-foundation.org, ryan.roberts@arm.com, wangkefeng.wang@huawei.com, ardb@kernel.org, david@redhat.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, xiongxin Subject: Re: [PATCH v3] arm64: hibernate: Fix level3 translation fault in swsusp_save() Message-ID: References: <20240417025248.386622-1-tianyaxiong@kylinos.cn> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20240417025248.386622-1-tianyaxiong@kylinos.cn> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240419_080225_210812_02BC01D2 X-CRM114-Status: GOOD ( 22.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 T24gV2VkLCBBcHIgMTcsIDIwMjQgYXQgMTA6NTI6NDhBTSArMDgwMCwgWWF4aW9uZyBUaWFuIHdy b3RlOgo+IE9uIEFSTTY0IG1hY2hpbmVzIHVzaW5nIFVFRkksIGlmIGNhbl9zZXRfZGlyZWN0X21h cCgpIHJldHVybiBmYWxzZSBieQo+IHNldHRpbmcgc29tZSBDT05GSUdTIGluIGtlcm5lbCBidWls ZCBvciBncnViLHN1Y2ggYXMKPiBOTyBDT05GSUdfREVCVUdfUEFHRUFMTE9DX0VOQUJMRV9ERUZB VUxU44CBTk8gQ09ORklHX0tGRU5DRQo+IE5PIENPTkZJR19ST0RBVEFfRlVMTF9ERUZBVUxUX0VO QUJMRUQuQWxzbyB3aXRoIHNldHRpbmcgcm9kYXRhPW9mZuOAgQo+IGRlYnVnX3BhZ2VhbGxvYz1v ZmYgaW4gZ3J1YiBhbmQgTk8gQ09ORklHX0tGRU5DRS4KPiBzd3N1c3Bfc2F2ZSgpIHdpbGwgZmFp bCBkdWUgdG8gY2FuJ3QgZmluZGluZyB0aGUgbWFwIHRhYmxlIHVuZGVyIHRoZQo+IG5vbWFwIG1l bW9yeS5zdWNoIGFzOgo+IAo+IFsgICA0OC41MzIxNjJdIFVuYWJsZSB0byBoYW5kbGUga2VybmVs IHBhZ2luZyByZXF1ZXN0IGF0IHZpcnR1YWwgYWRkcmVzcyBmZmZmZmY4MDAwMDAwMDAwCj4gWyAg IDQ4LjUzMjE2Ml0gTWVtIGFib3J0IGluZm86Cj4gWyAgIDQ4LjUzMjE2Ml0gICBFU1IgPSAweDAw MDAwMDAwOTYwMDAwMDcKPiBbICAgNDguNTMyMTYyXSAgIEVDID0gMHgyNTogREFCVCAoY3VycmVu dCBFTCksIElMID0gMzIgYml0cwo+IFsgICA0OC41MzIxNjJdICAgU0VUID0gMCwgRm5WID0gMAo+ IFsgICA0OC41MzIxNjJdICAgRUEgPSAwLCBTMVBUVyA9IDAKPiBbICAgNDguNTMyMTYyXSAgIEZT QyA9IDB4MDc6IGxldmVsIDMgdHJhbnNsYXRpb24gZmF1bHQKPiBbICAgNDguNTMyMTYyXSBEYXRh IGFib3J0IGluZm86Cj4gWyAgIDQ4LjUzMjE2Ml0gICBJU1YgPSAwLCBJU1MgPSAweDAwMDAwMDA3 LCBJU1MyID0gMHgwMDAwMDAwMAo+IFsgICA0OC41MzIxNjJdICAgQ00gPSAwLCBXblIgPSAwLCBU bkQgPSAwLCBUYWdBY2Nlc3MgPSAwCj4gWyAgIDQ4LjUzMjE2Ml0gICBHQ1MgPSAwLCBPdmVybGF5 ID0gMCwgRGlydHlCaXQgPSAwLCBYcyA9IDAKPiBbICAgNDguNTMyMTYyXSBzd2FwcGVyIHBndGFi bGU6IDRrIHBhZ2VzLCAzOS1iaXQgVkFzLCBwZ2RwPTAwMDAwMDAwZWViMGIwMDAKPiBbICAgNDgu NTMyMTYyXSBbZmZmZmZmODAwMDAwMDAwMF0gcGdkPTE4MDAwMDIxN2ZmZjk4MDMsIHA0ZD0xODAw MDAyMTdmZmY5ODAzLCBwdWQ9MTgwMDAwMjE3ZmZmOTgwMywgcG1kPTE4MDAwMDIxN2ZmZjg4MDMs IHB0ZT0wMDAwMDAwMDAwMDAwMDAwCj4gWyAgIDQ4LjUzMjE2Ml0gSW50ZXJuYWwgZXJyb3I6IE9v cHM6IDAwMDAwMDAwOTYwMDAwMDcgWyMxXSBTTVAKPiBbICAgNDguNTMyMTYyXSBJbnRlcm5hbCBl cnJvcjogT29wczogMDAwMDAwMDA5NjAwMDAwNyBbIzFdIFNNUAo+IFsgICA0OC41MzIxNjJdIE1v ZHVsZXMgbGlua2VkIGluOiB4dF9tdWx0aXBvcnQgaXB0X1JFSkVDVCBuZl9yZWplY3RfaXB2NCB4 dF9jb25udHJhY2sgbmZfY29ubnRyYWNrIG5mX2RlZnJhZ19pcHY2IG5mX2RlZnJhZ19pcHY0IGxp YmNyYzMyYyBpcHRhYmxlX2ZpbHRlciBicGZpbHRlciByZmtpbGwgYXQ4MDN4IHNuZF9oZGFfY29k ZWNfaGRtaSBzbmRfaGRhX2ludGVsIHNuZF9pbnRlbF9kc3BjZmcgZHdtYWNfZ2VuZXJpYyBzdG1t YWNfcGxhdGZvcm0gc25kX2hkYV9jb2RlYyBzdG1tYWMgam95ZGV2IHBjc194cGNzIHNuZF9oZGFf Y29yZSBwaHlsaW5rIHBwZGV2IGxwIHBhcnBvcnQgcmFtb29wcyByZWVkX3NvbG9tb24gaXBfdGFi bGVzIHhfdGFibGVzIG5sc19pc284ODU5XzEgdmZhdCBtdWx0aXBhdGggbGluZWFyIGFtZGdwdSBh bWR4Y3AgZHJtX2V4ZWMgZ3B1X3NjaGVkIGRybV9idWRkeSBoaWRfZ2VuZXJpYyB1c2JoaWQgaGlk IHJhZGVvbiB2aWRlbyBkcm1fc3ViYWxsb2NfaGVscGVyIGRybV90dG1faGVscGVyIHR0bSBpMmNf YWxnb19iaXQgZHJtX2Rpc3BsYXlfaGVscGVyIGNlYyBkcm1fa21zX2hlbHBlciBkcm0KPiBbICAg NDguNTMyMTYyXSBDUFU6IDAgUElEOiAzNjYzIENvbW06IHN5c3RlbWQtc2xlZXAgTm90IHRhaW50 ZWQgNi42LjIrICM3Ngo+IFsgICA0OC41MzIxNjJdIFNvdXJjZSBWZXJzaW9uOiA0ZTIyZWQ2M2Ew YTQ4ZTdhN2NmZjliOThiNzgwNmQ4ZDRhZGQ3ZGMwCj4gWyAgIDQ4LjUzMjE2Ml0gSGFyZHdhcmUg bmFtZTogR3JlYXR3YWxsIEdXLVhYWFhYWC1YWFgvR1ctWFhYWFhYLVhYWCwgQklPUyBLdW5MdW4g QklPUyBWNC4wIDAxLzE5LzIwMjEKPiBbICAgNDguNTMyMTYyXSBwc3RhdGU6IDYwMDAwM2M1IChu WkN2IERBSUYgLVBBTiAtVUFPIC1UQ08gLURJVCAtU1NCUyBCVFlQRT0tLSkKPiBbICAgNDguNTMy MTYyXSBwYyA6IHN3c3VzcF9zYXZlKzB4MjgwLzB4NTM4Cj4gWyAgIDQ4LjUzMjE2Ml0gbHIgOiBz d3N1c3Bfc2F2ZSsweDI4MC8weDUzOAo+IFsgICA0OC41MzIxNjJdIHNwIDogZmZmZmZmYTAzNGEz ZmE0MAo+IFsgICA0OC41MzIxNjJdIHgyOTogZmZmZmZmYTAzNGEzZmE0MCB4Mjg6IGZmZmZmZjgw MDAwMDEwMDAgeDI3OiAwMDAwMDAwMDAwMDAwMDAwCj4gWyAgIDQ4LjUzMjE2Ml0geDI2OiBmZmZm ZmY4MDAxNDAwMDAwIHgyNTogZmZmZmZmYzA4MTEzZTI0OCB4MjQ6IDAwMDAwMDAwMDAwMDAwMDAK PiBbICAgNDguNTMyMTYyXSB4MjM6IDAwMDAwMDAwMDAwODAwMDAgeDIyOiBmZmZmZmZjMDgxMTNl MjgwIHgyMTogMDAwMDAwMDAwMDBjNjlmMgo+IFsgICA0OC41MzIxNjJdIHgyMDogZmZmZmZmODAw MDAwMDAwMCB4MTk6IGZmZmZmZmMwODFhZTI1MDAgeDE4OiAwMDAwMDAwMDAwMDAwMDAwCj4gWyAg IDQ4LjUzMjE2Ml0geDE3OiA2NjY2NjYyMDc0NzM2NDIwIHgxNjogMzAzMDMwMzAzMDMwMzAzMCB4 MTU6IDMwMzg2NjY2NjY2NjY2NjYKPiBbICAgNDguNTMyMTYyXSB4MTQ6IDAwMDAwMDAwMDAwMDBi NjkgeDEzOiBmZmZmZmY5Zjg5MDg4NTMwIHgxMjogMDAwMDAwMDBmZmZmZmZlYQo+IFsgICA0OC41 MzIxNjJdIHgxMTogMDAwMDAwMDBmZmZmN2ZmZiB4MTA6IDAwMDAwMDAwZmZmZjdmZmYgeDkgOiBm ZmZmZmZjMDgxOTNmMGQwCj4gWyAgIDQ4LjUzMjE2Ml0geDggOiAwMDAwMDAwMDAwMGJmZmU4IHg3 IDogYzAwMDAwMDBmZmZmN2ZmZiB4NiA6IDAwMDAwMDAwMDAwMDAwMDEKPiBbICAgNDguNTMyMTYy XSB4NSA6IGZmZmZmZmEwZmZmMDlkYzggeDQgOiAwMDAwMDAwMDAwMDAwMDAwIHgzIDogMDAwMDAw MDAwMDAwMDAyNwo+IFsgICA0OC41MzIxNjJdIHgyIDogMDAwMDAwMDAwMDAwMDAwMCB4MSA6IDAw MDAwMDAwMDAwMDAwMDAgeDAgOiAwMDAwMDAwMDAwMDAwMDRlCj4gWyAgIDQ4LjUzMjE2Ml0gQ2Fs bCB0cmFjZToKPiBbICAgNDguNTMyMTYyXSAgc3dzdXNwX3NhdmUrMHgyODAvMHg1MzgKPiBbICAg NDguNTMyMTYyXSAgc3dzdXNwX2FyY2hfc3VzcGVuZCsweDE0OC8weDE5MAo+IFsgICA0OC41MzIx NjJdICBoaWJlcm5hdGlvbl9zbmFwc2hvdCsweDI0MC8weDM5Ywo+IFsgICA0OC41MzIxNjJdICBo aWJlcm5hdGUrMHhjNC8weDM3OAo+IFsgICA0OC41MzIxNjJdICBzdGF0ZV9zdG9yZSsweGYwLzB4 MTBjCj4gWyAgIDQ4LjUzMjE2Ml0gIGtvYmpfYXR0cl9zdG9yZSsweDE0LzB4MjQKPiAKPiBUaGlz IGlzc3VlIGNhbiBiZSByZXByb2R1Y2VkIGluIFFFTVUgdXNpbmcgVUVGSSB3aGVuIGJvb3Rpbmcg d2l0aAo+IHJvZGF0YT1vZmbjgIFkZWJ1Z19wYWdlYWxsb2M9b2ZmIGluIGdydWIgYW5kIE5PIENP TkZJR19LRkVOQ0UuCj4gCj4gVGhpcyBpcyBiZWNhdXNlIGluIHN3c3VzcF9zYXZlKCktPmNvcHlf ZGF0YV9wYWdlcygpLT5wYWdlX2lzX3NhdmVhYmxlKCksCj4ga2VybmVsX3BhZ2VfcHJlc2VudCgp IHByZXN1bWVzIHRoYXQgYSBwYWdlIGlzIHByZXNlbnQgd2hlbiBjYW5fc2V0X2RpcmVjdF9tYXAo KQo+IHJldHVybnMgZmFsc2UgZXZlbiBmb3IgTk9NQVAgcmFuZ2VzLlNvIE5PTUFQIHBhZ2VzIHdp bGwgc2F2ZWQgaW4gYWZ0ZXIsYW5kIHRoZW4KPiBjYXVzZSBsZXZlbDMgdHJhbnNsYXRpb24gZmF1 bHQgaW4gdGhpcyBwYWdlcy4KPiAKPiBTaW5jZSB0aGUgTk9NQVAgcmVnaW9ucyBhcmUgbm93IG1h cmtlZCBhcyBQYWdlUmVzZXJ2ZWQoKSwgcGZuIHdhbGtlcnMKPiBhbmQgdGhlIHJlc3Qgb2YgY29y ZSBtbSB3aWxsIHRyZWF0IHRoZW0gYXMgdW51c2FibGUgbWVtb3J5LiBTbyB0aGlzCj4gcmVnaW9u cyBzaG91bGQgbm90IHNhdmVkIGluIGhpYmVybmF0aW9uLgo+IAo+IFRoaXMgcHJvYmxlbSBtYXkg Y2F1c2UgYnkgY2hhbmdlcyB0byBwZm5fdmFsaWQoKSBsb2dpYyBpbiBjb21taXQKPiBhN2Q5ZjMw NmJhNzAgKCJhcm02NDogZHJvcCBwZm5fdmFsaWRfd2l0aGluKCkgYW5kIHNpbXBsaWZ5IHBmbl92 YWxpZCgpIikuCj4gCj4gUmVmZXJlbmNlIG9odGVyIGFyY2ggYXJjaGl0ZWN0dXJlLGRyb3AgdGhl ICFjYW5fc2V0X2RpcmVjdF9tYXAoKSBjb25kaXRpb24KPiBpbiBrZXJuZWxfcGFnZV9wcmVzZW50 KCkuU28gaW4gcGFnZV9pc19zYXZhYmxlKCksdGhlc2UgcGFnZSB3aWxsIHNraXBlZC4KPiAKPiBG aXhlczogYTdkOWYzMDZiYTcwICgiYXJtNjQ6IGRyb3AgcGZuX3ZhbGlkX3dpdGhpbigpIGFuZCBz aW1wbGlmeSBwZm5fdmFsaWQoKSIpCj4gCj4gU3VnZ2VzdGVkLWJ5OiBNaWtlIFJhcG9wb3J0IDxy cHB0QGtlcm5lbC5vcmc+Cj4gU3VnZ2VzdGVkLWJ5OiBDYXRhbGluIE1hcmluYXMgPGNhdGFsaW4u bWFyaW5hc0Bhcm0uY29tPgo+IENvLWRldmVsb3BlZC1ieTogeGlvbmd4aW4gPHhpb25neGluQGt5 bGlub3MuY24+Cj4gU2lnbmVkLW9mZi1ieTogeGlvbmd4aW4gPHhpb25neGluQGt5bGlub3MuY24+ Cj4gU2lnbmVkLW9mZi1ieTogWWF4aW9uZyBUaWFuIDx0aWFueWF4aW9uZ0BreWxpbm9zLmNuPgoK QWNrZWQtYnk6IE1pa2UgUmFwb3BvcnQgKElCTSkgPHJwcHRAa2VybmVsLm9yZz4KCj4gLS0tCj4g IGFyY2gvYXJtNjQvbW0vcGFnZWF0dHIuYyB8IDMgLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAzIGRl bGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L21tL3BhZ2VhdHRyLmMgYi9h cmNoL2FybTY0L21tL3BhZ2VhdHRyLmMKPiBpbmRleCAwYzRlM2VjZjk4OWQuLjBlMjcwYTFjNTFl NiAxMDA2NDQKPiAtLS0gYS9hcmNoL2FybTY0L21tL3BhZ2VhdHRyLmMKPiArKysgYi9hcmNoL2Fy bTY0L21tL3BhZ2VhdHRyLmMKPiBAQCAtMjE5LDkgKzIxOSw2IEBAIGJvb2wga2VybmVsX3BhZ2Vf cHJlc2VudChzdHJ1Y3QgcGFnZSAqcGFnZSkKPiAgCXB0ZV90ICpwdGVwOwo+ICAJdW5zaWduZWQg bG9uZyBhZGRyID0gKHVuc2lnbmVkIGxvbmcpcGFnZV9hZGRyZXNzKHBhZ2UpOwo+ICAKPiAtCWlm ICghY2FuX3NldF9kaXJlY3RfbWFwKCkpCj4gLQkJcmV0dXJuIHRydWU7Cj4gLQo+ICAJcGdkcCA9 IHBnZF9vZmZzZXRfayhhZGRyKTsKPiAgCWlmIChwZ2Rfbm9uZShSRUFEX09OQ0UoKnBnZHApKSkK PiAgCQlyZXR1cm4gZmFsc2U7Cj4gLS0gCj4gMi4zNC4xCj4gCgotLSAKU2luY2VyZWx5IHlvdXJz LApNaWtlLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K bGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu dXgtYXJtLWtlcm5lbAo=