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=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable 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 4BBDCC49361 for ; Thu, 17 Jun 2021 17:33:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 254C76109E for ; Thu, 17 Jun 2021 17:33:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232525AbhFQRfn (ORCPT ); Thu, 17 Jun 2021 13:35:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49552 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231382AbhFQRfk (ORCPT ); Thu, 17 Jun 2021 13:35:40 -0400 Received: from ustc.edu.cn (email6.ustc.edu.cn [IPv6:2001:da8:d800::8]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 47287C061574; Thu, 17 Jun 2021 10:33:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mail.ustc.edu.cn; s=dkim; h=Received:Date:From:To:Cc:Subject: Message-ID:In-Reply-To:References:MIME-Version:Content-Type: Content-Transfer-Encoding; bh=2WqF3xlPdjlb7DNjB4HbqU0LlDMvIWnKuW lsbQskrk8=; b=DEf7GGPw3c3zu5n5HzmKg3as3RSUDzFlCRmmqQRVKyQlhOP8ZI 4EuFN4UiyoT7PcRr924jrwO2PeoimMFqEKa77Snha5XUpnwIfNRMyNLkGDqfLDRA a1xay2+5i3xzOAEDpnV2ACS//0uicAsNzlyIzGxBsn/Z2PyzmlKWPtF80= Received: from xhacker (unknown [101.86.20.15]) by newmailweb.ustc.edu.cn (Coremail) with SMTP id LkAmygC3vIhQh8tgAw73AA--.5293S2; Fri, 18 Jun 2021 01:33:05 +0800 (CST) Date: Fri, 18 Jun 2021 01:27:31 +0800 From: Jisheng Zhang To: Alex Ghiti Cc: Palmer Dabbelt , schwab@linux-m68k.org, Paul Walmsley , aou@eecs.berkeley.edu, ryabinin.a.a@gmail.com, glider@google.com, andreyknvl@gmail.com, dvyukov@google.com, bjorn@kernel.org, ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, kafai@fb.com, songliubraving@fb.com, yhs@fb.com, john.fastabend@gmail.com, kpsingh@kernel.org, luke.r.nels@gmail.com, xi.wang@gmail.com, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, netdev@vger.kernel.org, bpf@vger.kernel.org Subject: Re: [PATCH] riscv: Ensure BPF_JIT_REGION_START aligned with PMD size Message-ID: <20210618012731.345657bf@xhacker> In-Reply-To: <50ebc99c-f0a2-b4ea-fc9b-cd93a8324697@ghiti.fr> References: <50ebc99c-f0a2-b4ea-fc9b-cd93a8324697@ghiti.fr> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: LkAmygC3vIhQh8tgAw73AA--.5293S2 X-Coremail-Antispam: 1UD129KBjvJXoWxtFW7Wr13tr1fAryfGw15Jwb_yoWDJrWkpr 1kJFW3GrWrtr1kXry2qry5CryUtw1UAasFqr1DJa4rAFsrKF1jqr1jqFy29rnFqF4xA3W2 yr4DJrsIv345Aw7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUkKb7Iv0xC_Kw4lb4IE77IF4wAFF20E14v26ryj6rWUM7CY07I2 0VC2zVCF04k26cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rw A2F7IY1VAKz4vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Xr0_Ar1l84ACjcxK6xII jxv20xvEc7CjxVAFwI0_Cr0_Gr1UM28EF7xvwVC2z280aVAFwI0_Gr1j6F4UJwA2z4x0Y4 vEx4A2jsIEc7CjxVAFwI0_Gr1j6F4UJwAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40E FcxC0VAKzVAqx4xG6I80ewAv7VC0I7IYx2IY67AKxVWUGVWUXwAv7VC2z280aVAFwI0_Jr 0_Gr1lOx8S6xCaFVCjc4AY6r1j6r4UM4x0Y48IcVAKI48JM4IIrI8v6xkF7I0E8cxan2IY 04v7MxAIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI 0_Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVW8ZVWrXwCIc40Y 0x0EwIxGrwCI42IY6xIIjxv20xvE14v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x0267AKxV W8JVWxJwCI42IY6xAIw20EY4v20xvaj40_Wr1j6rW3Jr1lIxAIcVC2z280aVAFwI0_Jr0_ Gr1lIxAIcVC2z280aVCY1x0267AKxVW8JVW8JrUvcSsGvfC2KfnxnUUI43ZEXa7IU5Vmh7 UUUUU== X-CM-SenderInfo: xmv2xttqjtqzxdloh3xvwfhvlgxou0/ Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 17 Jun 2021 16:18:54 +0200 Alex Ghiti wrote: > Le 17/06/2021 =C3=A0 10:09, Alex Ghiti a =C3=A9crit=C2=A0: > > Le 17/06/2021 =C3=A0 09:30, Palmer Dabbelt a =C3=A9crit=C2=A0: =20 > >> On Tue, 15 Jun 2021 17:03:28 PDT (-0700), jszhang3@mail.ustc.edu.cn=20 > >> wrote: =20 > >>> On Tue, 15 Jun 2021 20:54:19 +0200 > >>> Alex Ghiti wrote: > >>> =20 > >>>> Hi Jisheng, =20 > >>> > >>> Hi Alex, > >>> =20 > >>>> > >>>> Le 14/06/2021 =C3=A0 18:49, Jisheng Zhang a =C3=A9crit=C2=A0: =20 > >>>> > From: Jisheng Zhang =20 > >>>> > > Andreas reported commit fc8504765ec5 ("riscv: bpf: Avoid =20 > >>>> breaking W^X") =20 > >>>> > breaks booting with one kind of config file, I reproduced a kernel= =20 > >>>> panic =20 > >>>> > with the config: =20 > >>>> > > [=C2=A0=C2=A0=C2=A0 0.138553] Unable to handle kernel paging req= uest at virtual =20 > >>>> address ffffffff81201220 =20 > >>>> > [=C2=A0=C2=A0=C2=A0 0.139159] Oops [#1] > >>>> > [=C2=A0=C2=A0=C2=A0 0.139303] Modules linked in: > >>>> > [=C2=A0=C2=A0=C2=A0 0.139601] CPU: 0 PID: 1 Comm: swapper/0 Not ta= inted =20 > >>>> 5.13.0-rc5-default+ #1 =20 > >>>> > [=C2=A0=C2=A0=C2=A0 0.139934] Hardware name: riscv-virtio,qemu (DT) > >>>> > [=C2=A0=C2=A0=C2=A0 0.140193] epc : __memset+0xc4/0xfc > >>>> > [=C2=A0=C2=A0=C2=A0 0.140416]=C2=A0 ra : skb_flow_dissector_init+0= x1e/0x82 > >>>> > [=C2=A0=C2=A0=C2=A0 0.140609] epc : ffffffff8029806c ra : ffffffff= 8033be78 sp : =20 > >>>> ffffffe001647da0 =20 > >>>> > [=C2=A0=C2=A0=C2=A0 0.140878]=C2=A0 gp : ffffffff81134b08 tp : fff= fffe001654380 t0 : =20 > >>>> ffffffff81201158 =20 > >>>> > [=C2=A0=C2=A0=C2=A0 0.141156]=C2=A0 t1 : 0000000000000002 t2 : 000= 0000000000154 s0 : =20 > >>>> ffffffe001647dd0 =20 > >>>> > [=C2=A0=C2=A0=C2=A0 0.141424]=C2=A0 s1 : ffffffff80a43250 a0 : fff= fffff81201220 a1 : =20 > >>>> 0000000000000000 =20 > >>>> > [=C2=A0=C2=A0=C2=A0 0.141654]=C2=A0 a2 : 000000000000003c a3 : fff= fffff81201258 a4 : =20 > >>>> 0000000000000064 =20 > >>>> > [=C2=A0=C2=A0=C2=A0 0.141893]=C2=A0 a5 : ffffffff8029806c a6 : 000= 0000000000040 a7 : =20 > >>>> ffffffffffffffff =20 > >>>> > [=C2=A0=C2=A0=C2=A0 0.142126]=C2=A0 s2 : ffffffff81201220 s3 : 000= 0000000000009 s4 : =20 > >>>> ffffffff81135088 =20 > >>>> > [=C2=A0=C2=A0=C2=A0 0.142353]=C2=A0 s5 : ffffffff81135038 s6 : fff= fffff8080ce80 s7 : =20 > >>>> ffffffff80800438 =20 > >>>> > [=C2=A0=C2=A0=C2=A0 0.142584]=C2=A0 s8 : ffffffff80bc6578 s9 : 000= 0000000000008 s10: =20 > >>>> ffffffff806000ac =20 > >>>> > [=C2=A0=C2=A0=C2=A0 0.142810]=C2=A0 s11: 0000000000000000 t3 : fff= ffffffffffffc t4 : =20 > >>>> 0000000000000000 =20 > >>>> > [=C2=A0=C2=A0=C2=A0 0.143042]=C2=A0 t5 : 0000000000000155 t6 : 000= 00000000003ff > >>>> > [=C2=A0=C2=A0=C2=A0 0.143220] status: 0000000000000120 badaddr: ff= ffffff81201220 =20 > >>>> cause: 000000000000000f =20 > >>>> > [=C2=A0=C2=A0=C2=A0 0.143560] [] __memset+0xc4/0= xfc > >>>> > [=C2=A0=C2=A0=C2=A0 0.143859] [] =20 > >>>> init_default_flow_dissectors+0x22/0x60 =20 > >>>> > [=C2=A0=C2=A0=C2=A0 0.144092] [] do_one_initcall= +0x3e/0x168 > >>>> > [=C2=A0=C2=A0=C2=A0 0.144278] [] kernel_init_fre= eable+0x1c8/0x224 > >>>> > [=C2=A0=C2=A0=C2=A0 0.144479] [] kernel_init+0x1= 2/0x110 > >>>> > [=C2=A0=C2=A0=C2=A0 0.144658] [] ret_from_except= ion+0x0/0xc > >>>> > [=C2=A0=C2=A0=C2=A0 0.145124] ---[ end trace f1e9643daa46d591 ]---= =20 > >>>> > > After some investigation, I think I found the root cause: commit= =20 > >>>> > 2bfc6cd81bd ("move kernel mapping outside of linear mapping") moves > >>>> > BPF JIT region after the kernel: =20 > >>>> > > The &_end is unlikely aligned with PMD size, so the front bpf ji= t =20 > >>>> > region sits with part of kernel .data section in one PMD size =20 > >>>> mapping. =20 > >>>> > But kernel is mapped in PMD SIZE, when bpf_jit_binary_lock_ro() is > >>>> > called to make the first bpf jit prog ROX, we will make part of = =20 > >>>> kernel =20 > >>>> > .data section RO too, so when we write to, for example memset the > >>>> > .data section, MMU will trigger a store page fault. =20 > >>>> Good catch, we make sure no physical allocation happens between _end= =20 > >>>> and the next PMD aligned address, but I missed this one. > >>>> =20 > >>>> > > To fix the issue, we need to ensure the BPF JIT region is PMD si= ze =20 > >>>> > aligned. This patch acchieve this goal by restoring the BPF JIT = =20 > >>>> region =20 > >>>> > to original position, I.E the 128MB before kernel .text section. = =20 > >>>> But I disagree with your solution: I made sure modules and BPF=20 > >>>> programs get their own virtual regions to avoid worst case scenario= =20 > >>>> where one could allocate all the space and leave nothing to the=20 > >>>> other (we are limited to +- 2GB offset). Why don't just align=20 > >>>> BPF_JIT_REGION_START to the next PMD aligned address? =20 > >>> > >>> Originally, I planed to fix the issue by aligning=20 > >>> BPF_JIT_REGION_START, but > >>> IIRC, BPF experts are adding (or have added) "Calling kernel=20 > >>> functions from BPF" > >>> feature, there's a risk that BPF JIT region is beyond the 2GB of=20 > >>> module region: > >>> > >>> ------ > >>> module > >>> ------ > >>> kernel > >>> ------ > >>> BPF_JIT > >>> > >>> So I made this patch finally. In this patch, we let BPF JIT region sit > >>> between module and kernel. > >>> > >>> To address "make sure modules and BPF programs get their own virtual= =20 > >>> regions", > >>> what about something as below (applied against this patch)? > >>> > >>> diff --git a/arch/riscv/include/asm/pgtable.h=20 > >>> b/arch/riscv/include/asm/pgtable.h > >>> index 380cd3a7e548..da1158f10b09 100644 > >>> --- a/arch/riscv/include/asm/pgtable.h > >>> +++ b/arch/riscv/include/asm/pgtable.h > >>> @@ -31,7 +31,7 @@ > >>> =C2=A0#define BPF_JIT_REGION_SIZE=C2=A0=C2=A0=C2=A0 (SZ_128M) > >>> =C2=A0#ifdef CONFIG_64BIT > >>> =C2=A0#define BPF_JIT_REGION_START=C2=A0=C2=A0=C2=A0 (BPF_JIT_REGION_= END -=20 > >>> BPF_JIT_REGION_SIZE) > >>> -#define BPF_JIT_REGION_END=C2=A0=C2=A0=C2=A0 (MODULES_END) > >>> +#define BPF_JIT_REGION_END=C2=A0=C2=A0=C2=A0 (PFN_ALIGN((unsigned lo= ng)&_start)) > >>> =C2=A0#else > >>> =C2=A0#define BPF_JIT_REGION_START=C2=A0=C2=A0=C2=A0 (PAGE_OFFSET - B= PF_JIT_REGION_SIZE) > >>> =C2=A0#define BPF_JIT_REGION_END=C2=A0=C2=A0=C2=A0 (VMALLOC_END) > >>> @@ -40,7 +40,7 @@ > >>> =C2=A0/* Modules always live before the kernel */ > >>> =C2=A0#ifdef CONFIG_64BIT > >>> =C2=A0#define MODULES_VADDR=C2=A0=C2=A0=C2=A0 (PFN_ALIGN((unsigned lo= ng)&_end) - SZ_2G) > >>> -#define MODULES_END=C2=A0=C2=A0=C2=A0 (PFN_ALIGN((unsigned long)&_st= art)) > >>> +#define MODULES_END=C2=A0=C2=A0=C2=A0 (BPF_JIT_REGION_END) > >>> =C2=A0#endif > >>> > >>> > >>> =20 > >>>> > >>>> Again, good catch, thanks, > >>>> > >>>> Alex > >>>> =20 > >>>> > > Reported-by: Andreas Schwab =20 > >>>> > Signed-off-by: Jisheng Zhang > >>>> > --- > >>>> >=C2=A0=C2=A0 arch/riscv/include/asm/pgtable.h | 5 ++--- > >>>> >=C2=A0=C2=A0 1 file changed, 2 insertions(+), 3 deletions(-) =20 > >>>> > > diff --git a/arch/riscv/include/asm/pgtable.h =20 > >>>> b/arch/riscv/include/asm/pgtable.h =20 > >>>> > index 9469f464e71a..380cd3a7e548 100644 > >>>> > --- a/arch/riscv/include/asm/pgtable.h > >>>> > +++ b/arch/riscv/include/asm/pgtable.h > >>>> > @@ -30,9 +30,8 @@ =20 > >>>> > >=C2=A0=C2=A0 #define BPF_JIT_REGION_SIZE=C2=A0=C2=A0=C2=A0 (SZ_12= 8M) =20 > >>>> >=C2=A0=C2=A0 #ifdef CONFIG_64BIT > >>>> > -/* KASLR should leave at least 128MB for BPF after the kernel */ > >>>> > -#define BPF_JIT_REGION_START=C2=A0=C2=A0=C2=A0 PFN_ALIGN((unsigne= d long)&_end) > >>>> > -#define BPF_JIT_REGION_END=C2=A0=C2=A0=C2=A0 (BPF_JIT_REGION_STAR= T + =20 > >>>> BPF_JIT_REGION_SIZE) =20 > >>>> > +#define BPF_JIT_REGION_START=C2=A0=C2=A0=C2=A0 (BPF_JIT_REGION_EN= D - =20 > >>>> BPF_JIT_REGION_SIZE) =20 > >>>> > +#define BPF_JIT_REGION_END=C2=A0=C2=A0=C2=A0 (MODULES_END) > >>>> >=C2=A0=C2=A0 #else > >>>> >=C2=A0=C2=A0 #define BPF_JIT_REGION_START=C2=A0=C2=A0=C2=A0 (PAGE_O= FFSET - BPF_JIT_REGION_SIZE) > >>>> >=C2=A0=C2=A0 #define BPF_JIT_REGION_END=C2=A0=C2=A0=C2=A0 (VMALLOC_= END) > >>>> > =20 > >> > >> This, when applied onto fixes, is breaking early boot on KASAN=20 > >> configurations for me. =20 I can reproduce this issue. > >=20 > > Not surprising, I took a shortcut when initializing KASAN for modules,= =20 > > kernel and BPF: > >=20 > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 kasan_populate(kasan_mem_to= _shadow((const void *)MODULES_VADDR), > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 kasan_mem_t= o_shadow((const void=20 > > *)BPF_JIT_REGION_END)); > >=20 > > The kernel is then not covered, I'm taking a look at how to fix that=20 > > properly. > > =20 >=20 > The following based on "riscv: Introduce structure that group all=20 > variables regarding kernel mapping" fixes the issue: >=20 > diff --git a/arch/riscv/mm/kasan_init.c b/arch/riscv/mm/kasan_init.c > index 9daacae93e33..2a45ea909e7f 100644 > --- a/arch/riscv/mm/kasan_init.c > +++ b/arch/riscv/mm/kasan_init.c > @@ -199,9 +199,12 @@ void __init kasan_init(void) > kasan_populate(kasan_mem_to_shadow(start),=20 > kasan_mem_to_shadow(end)); > } >=20 > - /* Populate kernel, BPF, modules mapping */ > + /* Populate BPF and modules mapping: modules mapping encompasses= =20 > BPF mapping */ > kasan_populate(kasan_mem_to_shadow((const void *)MODULES_VADDR), > - kasan_mem_to_shadow((const void=20 > *)BPF_JIT_REGION_END)); > + kasan_mem_to_shadow((const void *)MODULES_END)); > + /* Populate kernel mapping */ > + kasan_populate(kasan_mem_to_shadow((const void=20 > *)kernel_map.virt_addr), > + kasan_mem_to_shadow((const void=20 > *)kernel_map.virt_addr + kernel_map.size)); > If this patch works, maybe we can still use one kasan_populate() to cover kernel, bpf, and module: kasan_populate(kasan_mem_to_shadow((const void *)MODULES_VADDR), - kasan_mem_to_shadow((const void *)BPF_JIT_REGION_END= )); + kasan_mem_to_shadow((const void *)MODULES_VADDR + SZ= _2G)); However, both can't solve the early boot hang issue. I'm not sure what's mi= ssing. I applied your patch on rc6 + solution below "replace kernel_map.virt_addr = with kernel_virt_addr and kernel_map.size with load_sz" Thanks =20 >=20 > Without the mentioned patch, replace kernel_map.virt_addr with=20 > kernel_virt_addr and kernel_map.size with load_sz. Note that load_sz was= =20 > re-exposed in v6 of the patchset "Map the kernel with correct=20 > permissions the first time". >=20 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=-13.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS 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 29091C2B9F4 for ; Thu, 17 Jun 2021 17:33:55 +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 B82876109E for ; Thu, 17 Jun 2021 17:33:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B82876109E Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=mail.ustc.edu.cn 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=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: 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=KFe5vVvR8YxnyteztyPnkdqRze05oSLdzUX9d3M6oCk=; b=pPmO79+4MTfnw7 f0TrtfEcFwPWephpAfiEZM0sJPfOK0LloaW32QbPyk/JRkYWPXdCfq3h1GenUa9CaWDEyZqA7yGnm jmJmtp22/S1v8PArgz+99ujsAVR7HJjdubTQMibqx1ORB72WVlHC1vNNPGY7Z4tc6E569I5MqmtHM 6P0PYAaj3E5o9bH3FErdIow5d8Og6r32Uk/TNPB2jqcpIBqZDoXqCT3sZIy3XsnaZZionhuI8/H+M FyO29tpUnQI2oEm+zkdXAeNPIUmtDPQQmyaUD/D/EDS1lta4gREyrQjHXDUHigYi8GEUskZRDSmqf En+u4wjHmFVhQdRtf4iA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ltvtT-00BEmu-DU; Thu, 17 Jun 2021 17:33:31 +0000 Received: from email6.ustc.edu.cn ([2001:da8:d800::8] helo=ustc.edu.cn) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ltvtP-00BEeK-H5 for linux-riscv@lists.infradead.org; Thu, 17 Jun 2021 17:33:30 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mail.ustc.edu.cn; s=dkim; h=Received:Date:From:To:Cc:Subject: Message-ID:In-Reply-To:References:MIME-Version:Content-Type: Content-Transfer-Encoding; bh=2WqF3xlPdjlb7DNjB4HbqU0LlDMvIWnKuW lsbQskrk8=; b=DEf7GGPw3c3zu5n5HzmKg3as3RSUDzFlCRmmqQRVKyQlhOP8ZI 4EuFN4UiyoT7PcRr924jrwO2PeoimMFqEKa77Snha5XUpnwIfNRMyNLkGDqfLDRA a1xay2+5i3xzOAEDpnV2ACS//0uicAsNzlyIzGxBsn/Z2PyzmlKWPtF80= Received: from xhacker (unknown [101.86.20.15]) by newmailweb.ustc.edu.cn (Coremail) with SMTP id LkAmygC3vIhQh8tgAw73AA--.5293S2; Fri, 18 Jun 2021 01:33:05 +0800 (CST) Date: Fri, 18 Jun 2021 01:27:31 +0800 From: Jisheng Zhang To: Alex Ghiti Cc: Palmer Dabbelt , schwab@linux-m68k.org, Paul Walmsley , aou@eecs.berkeley.edu, ryabinin.a.a@gmail.com, glider@google.com, andreyknvl@gmail.com, dvyukov@google.com, bjorn@kernel.org, ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, kafai@fb.com, songliubraving@fb.com, yhs@fb.com, john.fastabend@gmail.com, kpsingh@kernel.org, luke.r.nels@gmail.com, xi.wang@gmail.com, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, netdev@vger.kernel.org, bpf@vger.kernel.org Subject: Re: [PATCH] riscv: Ensure BPF_JIT_REGION_START aligned with PMD size Message-ID: <20210618012731.345657bf@xhacker> In-Reply-To: <50ebc99c-f0a2-b4ea-fc9b-cd93a8324697@ghiti.fr> References: <50ebc99c-f0a2-b4ea-fc9b-cd93a8324697@ghiti.fr> MIME-Version: 1.0 X-CM-TRANSID: LkAmygC3vIhQh8tgAw73AA--.5293S2 X-Coremail-Antispam: 1UD129KBjvJXoWxtFW7Wr13tr1fAryfGw15Jwb_yoWDJrWkpr 1kJFW3GrWrtr1kXry2qry5CryUtw1UAasFqr1DJa4rAFsrKF1jqr1jqFy29rnFqF4xA3W2 yr4DJrsIv345Aw7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUkKb7Iv0xC_Kw4lb4IE77IF4wAFF20E14v26ryj6rWUM7CY07I2 0VC2zVCF04k26cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rw A2F7IY1VAKz4vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Xr0_Ar1l84ACjcxK6xII jxv20xvEc7CjxVAFwI0_Cr0_Gr1UM28EF7xvwVC2z280aVAFwI0_Gr1j6F4UJwA2z4x0Y4 vEx4A2jsIEc7CjxVAFwI0_Gr1j6F4UJwAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40E FcxC0VAKzVAqx4xG6I80ewAv7VC0I7IYx2IY67AKxVWUGVWUXwAv7VC2z280aVAFwI0_Jr 0_Gr1lOx8S6xCaFVCjc4AY6r1j6r4UM4x0Y48IcVAKI48JM4IIrI8v6xkF7I0E8cxan2IY 04v7MxAIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI 0_Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVW8ZVWrXwCIc40Y 0x0EwIxGrwCI42IY6xIIjxv20xvE14v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x0267AKxV W8JVWxJwCI42IY6xAIw20EY4v20xvaj40_Wr1j6rW3Jr1lIxAIcVC2z280aVAFwI0_Jr0_ Gr1lIxAIcVC2z280aVCY1x0267AKxVW8JVW8JrUvcSsGvfC2KfnxnUUI43ZEXa7IU5Vmh7 UUUUU== X-CM-SenderInfo: xmv2xttqjtqzxdloh3xvwfhvlgxou0/ X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210617_103328_237496_203862D2 X-CRM114-Status: GOOD ( 34.72 ) X-BeenThere: linux-riscv@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-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gVGh1LCAxNyBKdW4gMjAyMSAxNjoxODo1NCArMDIwMApBbGV4IEdoaXRpIDxhbGV4QGdoaXRp LmZyPiB3cm90ZToKCj4gTGUgMTcvMDYvMjAyMSDDoCAxMDowOSwgQWxleCBHaGl0aSBhIMOpY3Jp dMKgOgo+ID4gTGUgMTcvMDYvMjAyMSDDoCAwOTozMCwgUGFsbWVyIERhYmJlbHQgYSDDqWNyaXTC oDogIAo+ID4+IE9uIFR1ZSwgMTUgSnVuIDIwMjEgMTc6MDM6MjggUERUICgtMDcwMCksIGpzemhh bmczQG1haWwudXN0Yy5lZHUuY24gCj4gPj4gd3JvdGU6ICAKPiA+Pj4gT24gVHVlLCAxNSBKdW4g MjAyMSAyMDo1NDoxOSArMDIwMAo+ID4+PiBBbGV4IEdoaXRpIDxhbGV4QGdoaXRpLmZyPiB3cm90 ZToKPiA+Pj4gIAo+ID4+Pj4gSGkgSmlzaGVuZywgIAo+ID4+Pgo+ID4+PiBIaSBBbGV4LAo+ID4+ PiAgCj4gPj4+Pgo+ID4+Pj4gTGUgMTQvMDYvMjAyMSDDoCAxODo0OSwgSmlzaGVuZyBaaGFuZyBh IMOpY3JpdMKgOiAgCj4gPj4+PiA+IEZyb206IEppc2hlbmcgWmhhbmcgPGpzemhhbmdAa2VybmVs Lm9yZz4gIAo+ID4+Pj4gPiA+IEFuZHJlYXMgcmVwb3J0ZWQgY29tbWl0IGZjODUwNDc2NWVjNSAo InJpc2N2OiBicGY6IEF2b2lkICAgCj4gPj4+PiBicmVha2luZyBXXlgiKSAgCj4gPj4+PiA+IGJy ZWFrcyBib290aW5nIHdpdGggb25lIGtpbmQgb2YgY29uZmlnIGZpbGUsIEkgcmVwcm9kdWNlZCBh IGtlcm5lbCAgIAo+ID4+Pj4gcGFuaWMgIAo+ID4+Pj4gPiB3aXRoIHRoZSBjb25maWc6ICAKPiA+ Pj4+ID4gPiBbwqDCoMKgIDAuMTM4NTUzXSBVbmFibGUgdG8gaGFuZGxlIGtlcm5lbCBwYWdpbmcg cmVxdWVzdCBhdCB2aXJ0dWFsICAgCj4gPj4+PiBhZGRyZXNzIGZmZmZmZmZmODEyMDEyMjAgIAo+ ID4+Pj4gPiBbwqDCoMKgIDAuMTM5MTU5XSBPb3BzIFsjMV0KPiA+Pj4+ID4gW8KgwqDCoCAwLjEz OTMwM10gTW9kdWxlcyBsaW5rZWQgaW46Cj4gPj4+PiA+IFvCoMKgwqAgMC4xMzk2MDFdIENQVTog MCBQSUQ6IDEgQ29tbTogc3dhcHBlci8wIE5vdCB0YWludGVkICAgCj4gPj4+PiA1LjEzLjAtcmM1 LWRlZmF1bHQrICMxICAKPiA+Pj4+ID4gW8KgwqDCoCAwLjEzOTkzNF0gSGFyZHdhcmUgbmFtZTog cmlzY3YtdmlydGlvLHFlbXUgKERUKQo+ID4+Pj4gPiBbwqDCoMKgIDAuMTQwMTkzXSBlcGMgOiBf X21lbXNldCsweGM0LzB4ZmMKPiA+Pj4+ID4gW8KgwqDCoCAwLjE0MDQxNl3CoCByYSA6IHNrYl9m bG93X2Rpc3NlY3Rvcl9pbml0KzB4MWUvMHg4Mgo+ID4+Pj4gPiBbwqDCoMKgIDAuMTQwNjA5XSBl cGMgOiBmZmZmZmZmZjgwMjk4MDZjIHJhIDogZmZmZmZmZmY4MDMzYmU3OCBzcCA6ICAgCj4gPj4+ PiBmZmZmZmZlMDAxNjQ3ZGEwICAKPiA+Pj4+ID4gW8KgwqDCoCAwLjE0MDg3OF3CoCBncCA6IGZm ZmZmZmZmODExMzRiMDggdHAgOiBmZmZmZmZlMDAxNjU0MzgwIHQwIDogICAKPiA+Pj4+IGZmZmZm ZmZmODEyMDExNTggIAo+ID4+Pj4gPiBbwqDCoMKgIDAuMTQxMTU2XcKgIHQxIDogMDAwMDAwMDAw MDAwMDAwMiB0MiA6IDAwMDAwMDAwMDAwMDAxNTQgczAgOiAgIAo+ID4+Pj4gZmZmZmZmZTAwMTY0 N2RkMCAgCj4gPj4+PiA+IFvCoMKgwqAgMC4xNDE0MjRdwqAgczEgOiBmZmZmZmZmZjgwYTQzMjUw IGEwIDogZmZmZmZmZmY4MTIwMTIyMCBhMSA6ICAgCj4gPj4+PiAwMDAwMDAwMDAwMDAwMDAwICAK PiA+Pj4+ID4gW8KgwqDCoCAwLjE0MTY1NF3CoCBhMiA6IDAwMDAwMDAwMDAwMDAwM2MgYTMgOiBm ZmZmZmZmZjgxMjAxMjU4IGE0IDogICAKPiA+Pj4+IDAwMDAwMDAwMDAwMDAwNjQgIAo+ID4+Pj4g PiBbwqDCoMKgIDAuMTQxODkzXcKgIGE1IDogZmZmZmZmZmY4MDI5ODA2YyBhNiA6IDAwMDAwMDAw MDAwMDAwNDAgYTcgOiAgIAo+ID4+Pj4gZmZmZmZmZmZmZmZmZmZmZiAgCj4gPj4+PiA+IFvCoMKg wqAgMC4xNDIxMjZdwqAgczIgOiBmZmZmZmZmZjgxMjAxMjIwIHMzIDogMDAwMDAwMDAwMDAwMDAw OSBzNCA6ICAgCj4gPj4+PiBmZmZmZmZmZjgxMTM1MDg4ICAKPiA+Pj4+ID4gW8KgwqDCoCAwLjE0 MjM1M13CoCBzNSA6IGZmZmZmZmZmODExMzUwMzggczYgOiBmZmZmZmZmZjgwODBjZTgwIHM3IDog ICAKPiA+Pj4+IGZmZmZmZmZmODA4MDA0MzggIAo+ID4+Pj4gPiBbwqDCoMKgIDAuMTQyNTg0XcKg IHM4IDogZmZmZmZmZmY4MGJjNjU3OCBzOSA6IDAwMDAwMDAwMDAwMDAwMDggczEwOiAgIAo+ID4+ Pj4gZmZmZmZmZmY4MDYwMDBhYyAgCj4gPj4+PiA+IFvCoMKgwqAgMC4xNDI4MTBdwqAgczExOiAw MDAwMDAwMDAwMDAwMDAwIHQzIDogZmZmZmZmZmZmZmZmZmZmYyB0NCA6ICAgCj4gPj4+PiAwMDAw MDAwMDAwMDAwMDAwICAKPiA+Pj4+ID4gW8KgwqDCoCAwLjE0MzA0Ml3CoCB0NSA6IDAwMDAwMDAw MDAwMDAxNTUgdDYgOiAwMDAwMDAwMDAwMDAwM2ZmCj4gPj4+PiA+IFvCoMKgwqAgMC4xNDMyMjBd IHN0YXR1czogMDAwMDAwMDAwMDAwMDEyMCBiYWRhZGRyOiBmZmZmZmZmZjgxMjAxMjIwICAgCj4g Pj4+PiBjYXVzZTogMDAwMDAwMDAwMDAwMDAwZiAgCj4gPj4+PiA+IFvCoMKgwqAgMC4xNDM1NjBd IFs8ZmZmZmZmZmY4MDI5ODA2Yz5dIF9fbWVtc2V0KzB4YzQvMHhmYwo+ID4+Pj4gPiBbwqDCoMKg IDAuMTQzODU5XSBbPGZmZmZmZmZmODA2MWU5ODQ+XSAgIAo+ID4+Pj4gaW5pdF9kZWZhdWx0X2Zs b3dfZGlzc2VjdG9ycysweDIyLzB4NjAgIAo+ID4+Pj4gPiBbwqDCoMKgIDAuMTQ0MDkyXSBbPGZm ZmZmZmZmODAwMDEwZmM+XSBkb19vbmVfaW5pdGNhbGwrMHgzZS8weDE2OAo+ID4+Pj4gPiBbwqDC oMKgIDAuMTQ0Mjc4XSBbPGZmZmZmZmZmODA2MDBkZjA+XSBrZXJuZWxfaW5pdF9mcmVlYWJsZSsw eDFjOC8weDIyNAo+ID4+Pj4gPiBbwqDCoMKgIDAuMTQ0NDc5XSBbPGZmZmZmZmZmODA0ODY4YTg+ XSBrZXJuZWxfaW5pdCsweDEyLzB4MTEwCj4gPj4+PiA+IFvCoMKgwqAgMC4xNDQ2NThdIFs8ZmZm ZmZmZmY4MDAwMjJkZT5dIHJldF9mcm9tX2V4Y2VwdGlvbisweDAvMHhjCj4gPj4+PiA+IFvCoMKg wqAgMC4xNDUxMjRdIC0tLVsgZW5kIHRyYWNlIGYxZTk2NDNkYWE0NmQ1OTEgXS0tLSAgCj4gPj4+ PiA+ID4gQWZ0ZXIgc29tZSBpbnZlc3RpZ2F0aW9uLCBJIHRoaW5rIEkgZm91bmQgdGhlIHJvb3Qg Y2F1c2U6IGNvbW1pdCAgCj4gPj4+PiA+IDJiZmM2Y2Q4MWJkICgibW92ZSBrZXJuZWwgbWFwcGlu ZyBvdXRzaWRlIG9mIGxpbmVhciBtYXBwaW5nIikgbW92ZXMKPiA+Pj4+ID4gQlBGIEpJVCByZWdp b24gYWZ0ZXIgdGhlIGtlcm5lbDogIAo+ID4+Pj4gPiA+IFRoZSAmX2VuZCBpcyB1bmxpa2VseSBh bGlnbmVkIHdpdGggUE1EIHNpemUsIHNvIHRoZSBmcm9udCBicGYgaml0ICAKPiA+Pj4+ID4gcmVn aW9uIHNpdHMgd2l0aCBwYXJ0IG9mIGtlcm5lbCAuZGF0YSBzZWN0aW9uIGluIG9uZSBQTUQgc2l6 ZSAgIAo+ID4+Pj4gbWFwcGluZy4gIAo+ID4+Pj4gPiBCdXQga2VybmVsIGlzIG1hcHBlZCBpbiBQ TUQgU0laRSwgd2hlbiBicGZfaml0X2JpbmFyeV9sb2NrX3JvKCkgaXMKPiA+Pj4+ID4gY2FsbGVk IHRvIG1ha2UgdGhlIGZpcnN0IGJwZiBqaXQgcHJvZyBST1gsIHdlIHdpbGwgbWFrZSBwYXJ0IG9m ICAgCj4gPj4+PiBrZXJuZWwgIAo+ID4+Pj4gPiAuZGF0YSBzZWN0aW9uIFJPIHRvbywgc28gd2hl biB3ZSB3cml0ZSB0bywgZm9yIGV4YW1wbGUgbWVtc2V0IHRoZQo+ID4+Pj4gPiAuZGF0YSBzZWN0 aW9uLCBNTVUgd2lsbCB0cmlnZ2VyIGEgc3RvcmUgcGFnZSBmYXVsdC4gIAo+ID4+Pj4gR29vZCBj YXRjaCwgd2UgbWFrZSBzdXJlIG5vIHBoeXNpY2FsIGFsbG9jYXRpb24gaGFwcGVucyBiZXR3ZWVu IF9lbmQgCj4gPj4+PiBhbmQgdGhlIG5leHQgUE1EIGFsaWduZWQgYWRkcmVzcywgYnV0IEkgbWlz c2VkIHRoaXMgb25lLgo+ID4+Pj4gIAo+ID4+Pj4gPiA+IFRvIGZpeCB0aGUgaXNzdWUsIHdlIG5l ZWQgdG8gZW5zdXJlIHRoZSBCUEYgSklUIHJlZ2lvbiBpcyBQTUQgc2l6ZSAgCj4gPj4+PiA+IGFs aWduZWQuIFRoaXMgcGF0Y2ggYWNjaGlldmUgdGhpcyBnb2FsIGJ5IHJlc3RvcmluZyB0aGUgQlBG IEpJVCAgIAo+ID4+Pj4gcmVnaW9uICAKPiA+Pj4+ID4gdG8gb3JpZ2luYWwgcG9zaXRpb24sIEku RSB0aGUgMTI4TUIgYmVmb3JlIGtlcm5lbCAudGV4dCBzZWN0aW9uLiAgCj4gPj4+PiBCdXQgSSBk aXNhZ3JlZSB3aXRoIHlvdXIgc29sdXRpb246IEkgbWFkZSBzdXJlIG1vZHVsZXMgYW5kIEJQRiAK PiA+Pj4+IHByb2dyYW1zIGdldCB0aGVpciBvd24gdmlydHVhbCByZWdpb25zIHRvIGF2b2lkIHdv cnN0IGNhc2Ugc2NlbmFyaW8gCj4gPj4+PiB3aGVyZSBvbmUgY291bGQgYWxsb2NhdGUgYWxsIHRo ZSBzcGFjZSBhbmQgbGVhdmUgbm90aGluZyB0byB0aGUgCj4gPj4+PiBvdGhlciAod2UgYXJlIGxp bWl0ZWQgdG8gKy0gMkdCIG9mZnNldCkuIFdoeSBkb24ndCBqdXN0IGFsaWduIAo+ID4+Pj4gQlBG X0pJVF9SRUdJT05fU1RBUlQgdG8gdGhlIG5leHQgUE1EIGFsaWduZWQgYWRkcmVzcz8gIAo+ID4+ Pgo+ID4+PiBPcmlnaW5hbGx5LCBJIHBsYW5lZCB0byBmaXggdGhlIGlzc3VlIGJ5IGFsaWduaW5n IAo+ID4+PiBCUEZfSklUX1JFR0lPTl9TVEFSVCwgYnV0Cj4gPj4+IElJUkMsIEJQRiBleHBlcnRz IGFyZSBhZGRpbmcgKG9yIGhhdmUgYWRkZWQpICJDYWxsaW5nIGtlcm5lbCAKPiA+Pj4gZnVuY3Rp b25zIGZyb20gQlBGIgo+ID4+PiBmZWF0dXJlLCB0aGVyZSdzIGEgcmlzayB0aGF0IEJQRiBKSVQg cmVnaW9uIGlzIGJleW9uZCB0aGUgMkdCIG9mIAo+ID4+PiBtb2R1bGUgcmVnaW9uOgo+ID4+Pgo+ ID4+PiAtLS0tLS0KPiA+Pj4gbW9kdWxlCj4gPj4+IC0tLS0tLQo+ID4+PiBrZXJuZWwKPiA+Pj4g LS0tLS0tCj4gPj4+IEJQRl9KSVQKPiA+Pj4KPiA+Pj4gU28gSSBtYWRlIHRoaXMgcGF0Y2ggZmlu YWxseS4gSW4gdGhpcyBwYXRjaCwgd2UgbGV0IEJQRiBKSVQgcmVnaW9uIHNpdAo+ID4+PiBiZXR3 ZWVuIG1vZHVsZSBhbmQga2VybmVsLgo+ID4+Pgo+ID4+PiBUbyBhZGRyZXNzICJtYWtlIHN1cmUg bW9kdWxlcyBhbmQgQlBGIHByb2dyYW1zIGdldCB0aGVpciBvd24gdmlydHVhbCAKPiA+Pj4gcmVn aW9ucyIsCj4gPj4+IHdoYXQgYWJvdXQgc29tZXRoaW5nIGFzIGJlbG93IChhcHBsaWVkIGFnYWlu c3QgdGhpcyBwYXRjaCk/Cj4gPj4+Cj4gPj4+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1 ZGUvYXNtL3BndGFibGUuaCAKPiA+Pj4gYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUu aAo+ID4+PiBpbmRleCAzODBjZDNhN2U1NDguLmRhMTE1OGYxMGIwOSAxMDA2NDQKPiA+Pj4gLS0t IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKPiA+Pj4gKysrIGIvYXJjaC9yaXNj di9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKPiA+Pj4gQEAgLTMxLDcgKzMxLDcgQEAKPiA+Pj4gwqAj ZGVmaW5lIEJQRl9KSVRfUkVHSU9OX1NJWkXCoMKgwqAgKFNaXzEyOE0pCj4gPj4+IMKgI2lmZGVm IENPTkZJR182NEJJVAo+ID4+PiDCoCNkZWZpbmUgQlBGX0pJVF9SRUdJT05fU1RBUlTCoMKgwqAg KEJQRl9KSVRfUkVHSU9OX0VORCAtIAo+ID4+PiBCUEZfSklUX1JFR0lPTl9TSVpFKQo+ID4+PiAt I2RlZmluZSBCUEZfSklUX1JFR0lPTl9FTkTCoMKgwqAgKE1PRFVMRVNfRU5EKQo+ID4+PiArI2Rl ZmluZSBCUEZfSklUX1JFR0lPTl9FTkTCoMKgwqAgKFBGTl9BTElHTigodW5zaWduZWQgbG9uZykm X3N0YXJ0KSkKPiA+Pj4gwqAjZWxzZQo+ID4+PiDCoCNkZWZpbmUgQlBGX0pJVF9SRUdJT05fU1RB UlTCoMKgwqAgKFBBR0VfT0ZGU0VUIC0gQlBGX0pJVF9SRUdJT05fU0laRSkKPiA+Pj4gwqAjZGVm aW5lIEJQRl9KSVRfUkVHSU9OX0VORMKgwqDCoCAoVk1BTExPQ19FTkQpCj4gPj4+IEBAIC00MCw3 ICs0MCw3IEBACj4gPj4+IMKgLyogTW9kdWxlcyBhbHdheXMgbGl2ZSBiZWZvcmUgdGhlIGtlcm5l bCAqLwo+ID4+PiDCoCNpZmRlZiBDT05GSUdfNjRCSVQKPiA+Pj4gwqAjZGVmaW5lIE1PRFVMRVNf VkFERFLCoMKgwqAgKFBGTl9BTElHTigodW5zaWduZWQgbG9uZykmX2VuZCkgLSBTWl8yRykKPiA+ Pj4gLSNkZWZpbmUgTU9EVUxFU19FTkTCoMKgwqAgKFBGTl9BTElHTigodW5zaWduZWQgbG9uZykm X3N0YXJ0KSkKPiA+Pj4gKyNkZWZpbmUgTU9EVUxFU19FTkTCoMKgwqAgKEJQRl9KSVRfUkVHSU9O X0VORCkKPiA+Pj4gwqAjZW5kaWYKPiA+Pj4KPiA+Pj4KPiA+Pj4gIAo+ID4+Pj4KPiA+Pj4+IEFn YWluLCBnb29kIGNhdGNoLCB0aGFua3MsCj4gPj4+Pgo+ID4+Pj4gQWxleAo+ID4+Pj4gIAo+ID4+ Pj4gPiA+IFJlcG9ydGVkLWJ5OiBBbmRyZWFzIFNjaHdhYiA8c2Nod2FiQGxpbnV4LW02OGsub3Jn PiAgCj4gPj4+PiA+IFNpZ25lZC1vZmYtYnk6IEppc2hlbmcgWmhhbmcgPGpzemhhbmdAa2VybmVs Lm9yZz4KPiA+Pj4+ID4gLS0tCj4gPj4+PiA+wqDCoCBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Bn dGFibGUuaCB8IDUgKystLS0KPiA+Pj4+ID7CoMKgIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlv bnMoKyksIDMgZGVsZXRpb25zKC0pICAKPiA+Pj4+ID4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNj di9pbmNsdWRlL2FzbS9wZ3RhYmxlLmggICAKPiA+Pj4+IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2Fz bS9wZ3RhYmxlLmggIAo+ID4+Pj4gPiBpbmRleCA5NDY5ZjQ2NGU3MWEuLjM4MGNkM2E3ZTU0OCAx MDA2NDQKPiA+Pj4+ID4gLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKPiA+ Pj4+ID4gKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKPiA+Pj4+ID4gQEAg LTMwLDkgKzMwLDggQEAgIAo+ID4+Pj4gPiA+wqDCoCAjZGVmaW5lIEJQRl9KSVRfUkVHSU9OX1NJ WkXCoMKgwqAgKFNaXzEyOE0pICAKPiA+Pj4+ID7CoMKgICNpZmRlZiBDT05GSUdfNjRCSVQKPiA+ Pj4+ID4gLS8qIEtBU0xSIHNob3VsZCBsZWF2ZSBhdCBsZWFzdCAxMjhNQiBmb3IgQlBGIGFmdGVy IHRoZSBrZXJuZWwgKi8KPiA+Pj4+ID4gLSNkZWZpbmUgQlBGX0pJVF9SRUdJT05fU1RBUlTCoMKg wqAgUEZOX0FMSUdOKCh1bnNpZ25lZCBsb25nKSZfZW5kKQo+ID4+Pj4gPiAtI2RlZmluZSBCUEZf SklUX1JFR0lPTl9FTkTCoMKgwqAgKEJQRl9KSVRfUkVHSU9OX1NUQVJUICsgICAKPiA+Pj4+IEJQ Rl9KSVRfUkVHSU9OX1NJWkUpICAKPiA+Pj4+ID4gKyNkZWZpbmUgQlBGX0pJVF9SRUdJT05fU1RB UlTCoMKgwqAgKEJQRl9KSVRfUkVHSU9OX0VORCAtICAgCj4gPj4+PiBCUEZfSklUX1JFR0lPTl9T SVpFKSAgCj4gPj4+PiA+ICsjZGVmaW5lIEJQRl9KSVRfUkVHSU9OX0VORMKgwqDCoCAoTU9EVUxF U19FTkQpCj4gPj4+PiA+wqDCoCAjZWxzZQo+ID4+Pj4gPsKgwqAgI2RlZmluZSBCUEZfSklUX1JF R0lPTl9TVEFSVMKgwqDCoCAoUEFHRV9PRkZTRVQgLSBCUEZfSklUX1JFR0lPTl9TSVpFKQo+ID4+ Pj4gPsKgwqAgI2RlZmluZSBCUEZfSklUX1JFR0lPTl9FTkTCoMKgwqAgKFZNQUxMT0NfRU5EKQo+ ID4+Pj4gPiAgIAo+ID4+Cj4gPj4gVGhpcywgd2hlbiBhcHBsaWVkIG9udG8gZml4ZXMsIGlzIGJy ZWFraW5nIGVhcmx5IGJvb3Qgb24gS0FTQU4gCj4gPj4gY29uZmlndXJhdGlvbnMgZm9yIG1lLiAg CgpJIGNhbiByZXByb2R1Y2UgdGhpcyBpc3N1ZS4KCj4gPiAKPiA+IE5vdCBzdXJwcmlzaW5nLCBJ IHRvb2sgYSBzaG9ydGN1dCB3aGVuIGluaXRpYWxpemluZyBLQVNBTiBmb3IgbW9kdWxlcywgCj4g PiBrZXJuZWwgYW5kIEJQRjoKPiA+IAo+ID4gIMKgwqDCoMKgwqDCoMKgIGthc2FuX3BvcHVsYXRl KGthc2FuX21lbV90b19zaGFkb3coKGNvbnN0IHZvaWQgKilNT0RVTEVTX1ZBRERSKSwKPiA+ICDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBrYXNhbl9tZW1fdG9f c2hhZG93KChjb25zdCB2b2lkIAo+ID4gKilCUEZfSklUX1JFR0lPTl9FTkQpKTsKPiA+IAo+ID4g VGhlIGtlcm5lbCBpcyB0aGVuIG5vdCBjb3ZlcmVkLCBJJ20gdGFraW5nIGEgbG9vayBhdCBob3cg dG8gZml4IHRoYXQgCj4gPiBwcm9wZXJseS4KPiA+ICAKPiAKPiBUaGUgZm9sbG93aW5nIGJhc2Vk IG9uICJyaXNjdjogSW50cm9kdWNlIHN0cnVjdHVyZSB0aGF0IGdyb3VwIGFsbCAKPiB2YXJpYWJs ZXMgcmVnYXJkaW5nIGtlcm5lbCBtYXBwaW5nIiBmaXhlcyB0aGUgaXNzdWU6Cj4gCj4gZGlmZiAt LWdpdCBhL2FyY2gvcmlzY3YvbW0va2FzYW5faW5pdC5jIGIvYXJjaC9yaXNjdi9tbS9rYXNhbl9p bml0LmMKPiBpbmRleCA5ZGFhY2FlOTNlMzMuLjJhNDVlYTkwOWU3ZiAxMDA2NDQKPiAtLS0gYS9h cmNoL3Jpc2N2L21tL2thc2FuX2luaXQuYwo+ICsrKyBiL2FyY2gvcmlzY3YvbW0va2FzYW5faW5p dC5jCj4gQEAgLTE5OSw5ICsxOTksMTIgQEAgdm9pZCBfX2luaXQga2FzYW5faW5pdCh2b2lkKQo+ ICAgICAgICAgICAgICAgICAga2FzYW5fcG9wdWxhdGUoa2FzYW5fbWVtX3RvX3NoYWRvdyhzdGFy dCksIAo+IGthc2FuX21lbV90b19zaGFkb3coZW5kKSk7Cj4gICAgICAgICAgfQo+IAo+IC0gICAg ICAgLyogUG9wdWxhdGUga2VybmVsLCBCUEYsIG1vZHVsZXMgbWFwcGluZyAqLwo+ICsgICAgICAg LyogUG9wdWxhdGUgQlBGIGFuZCBtb2R1bGVzIG1hcHBpbmc6IG1vZHVsZXMgbWFwcGluZyBlbmNv bXBhc3NlcyAKPiBCUEYgbWFwcGluZyAqLwo+ICAgICAgICAgIGthc2FuX3BvcHVsYXRlKGthc2Fu X21lbV90b19zaGFkb3coKGNvbnN0IHZvaWQgKilNT0RVTEVTX1ZBRERSKSwKPiAtICAgICAgICAg ICAgICAgICAgICAgIGthc2FuX21lbV90b19zaGFkb3coKGNvbnN0IHZvaWQgCj4gKilCUEZfSklU X1JFR0lPTl9FTkQpKTsKPiArICAgICAgICAgICAgICAgICAgICAgIGthc2FuX21lbV90b19zaGFk b3coKGNvbnN0IHZvaWQgKilNT0RVTEVTX0VORCkpOwo+ICsgICAgICAgLyogUG9wdWxhdGUga2Vy bmVsIG1hcHBpbmcgKi8KPiArICAgICAgIGthc2FuX3BvcHVsYXRlKGthc2FuX21lbV90b19zaGFk b3coKGNvbnN0IHZvaWQgCj4gKilrZXJuZWxfbWFwLnZpcnRfYWRkciksCj4gKyAgICAgICAgICAg ICAgICAgICAgICBrYXNhbl9tZW1fdG9fc2hhZG93KChjb25zdCB2b2lkIAo+ICopa2VybmVsX21h cC52aXJ0X2FkZHIgKyBrZXJuZWxfbWFwLnNpemUpKTsKPgpJZiB0aGlzIHBhdGNoIHdvcmtzLCBt YXliZSB3ZSBjYW4gc3RpbGwgdXNlIG9uZSBrYXNhbl9wb3B1bGF0ZSgpIHRvIGNvdmVyCmtlcm5l bCwgYnBmLCBhbmQgbW9kdWxlOgoKICAgICAgICBrYXNhbl9wb3B1bGF0ZShrYXNhbl9tZW1fdG9f c2hhZG93KChjb25zdCB2b2lkICopTU9EVUxFU19WQUREUiksCi0gICAgICAgICAgICAgICAgICAg ICAga2FzYW5fbWVtX3RvX3NoYWRvdygoY29uc3Qgdm9pZCAqKUJQRl9KSVRfUkVHSU9OX0VORCkp OworICAgICAgICAgICAgICAgICAgICAgIGthc2FuX21lbV90b19zaGFkb3coKGNvbnN0IHZvaWQg KilNT0RVTEVTX1ZBRERSICsgU1pfMkcpKTsKCkhvd2V2ZXIsIGJvdGggY2FuJ3Qgc29sdmUgdGhl IGVhcmx5IGJvb3QgaGFuZyBpc3N1ZS4gSSdtIG5vdCBzdXJlIHdoYXQncyBtaXNzaW5nLgoKSSBh cHBsaWVkIHlvdXIgcGF0Y2ggb24gcmM2ICsgc29sdXRpb24gYmVsb3cgInJlcGxhY2Uga2VybmVs X21hcC52aXJ0X2FkZHIgd2l0aCBrZXJuZWxfdmlydF9hZGRyIGFuZAprZXJuZWxfbWFwLnNpemUg d2l0aCBsb2FkX3N6IgoKClRoYW5rcwogCj4gCj4gV2l0aG91dCB0aGUgbWVudGlvbmVkIHBhdGNo LCByZXBsYWNlIGtlcm5lbF9tYXAudmlydF9hZGRyIHdpdGggCj4ga2VybmVsX3ZpcnRfYWRkciBh bmQga2VybmVsX21hcC5zaXplIHdpdGggbG9hZF9zei4gTm90ZSB0aGF0IGxvYWRfc3ogd2FzIAo+ IHJlLWV4cG9zZWQgaW4gdjYgb2YgdGhlIHBhdGNoc2V0ICJNYXAgdGhlIGtlcm5lbCB3aXRoIGNv cnJlY3QgCj4gcGVybWlzc2lvbnMgdGhlIGZpcnN0IHRpbWUiLgo+IAoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlz dApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQu b3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK