lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAHVXubhVGR1vjqFVv1vuDGDMSiG0JBpKtRZnzgzpa9VBK+BuNw@mail.gmail.com>
Date:   Wed, 29 Mar 2023 16:40:18 +0200
From:   Alexandre Ghiti <alexghiti@...osinc.com>
To:     Conor Dooley <conor@...nel.org>
Cc:     Jonathan Corbet <corbet@....net>,
        Paul Walmsley <paul.walmsley@...ive.com>,
        Palmer Dabbelt <palmer@...belt.com>,
        Albert Ou <aou@...s.berkeley.edu>,
        Conor Dooley <conor.dooley@...rochip.com>,
        linux-doc@...r.kernel.org, linux-riscv@...ts.infradead.org,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH -fixes v2 3/3] riscv: No need to relocate the dtb as it
 lies in the fixmap region

On Wed, Mar 29, 2023 at 3:56 PM Conor Dooley <conor@...nel.org> wrote:
>
> On Wed, Mar 29, 2023 at 10:19:32AM +0200, Alexandre Ghiti wrote:
> > We used to access the dtb via its linear mapping address but now that the
> > dtb early mapping was moved in the fixmap region, we can keep using this
> > address since it is present in swapper_pg_dir, and remove the dtb
> > relocation.
> >
> > Note that the relocation was wrong anyway since early_memremap() is
> > restricted to 256K whereas the maximum fdt size is 2MB.
>
> So, should this be marked as a fix, and backported along with 1/3?

Hmmm the whole series should be backported, it does not make sense to
move the dtb mapping and keep accessing it using its linear mapping
address since it could fail for the exact reason the relocation was
implemented in the first place and the relocation is wrong.

Maybe we should simply add a "Cc: stable@...r.kernel.org" on all the patches?

> Either way,
> Reviewed-by: Conor Dooley <conor.dooley@...rochip.com>
>
> And from v1 (although I didn't actually send it for idk what reason):
> Tested-by: Conor Dooley <conor.dooley@...rochip.com>

Thanks!

>
> Thanks,
> Conor.
>
> >
> > Signed-off-by: Alexandre Ghiti <alexghiti@...osinc.com>
> > ---
> >  arch/riscv/mm/init.c | 21 ++-------------------
> >  1 file changed, 2 insertions(+), 19 deletions(-)
> >
> > diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c
> > index fb78d6bbabae..0f14f4a8d179 100644
> > --- a/arch/riscv/mm/init.c
> > +++ b/arch/riscv/mm/init.c
> > @@ -249,25 +249,8 @@ static void __init setup_bootmem(void)
> >        * early_init_fdt_reserve_self() since __pa() does
> >        * not work for DTB pointers that are fixmap addresses
> >        */
> > -     if (!IS_ENABLED(CONFIG_BUILTIN_DTB)) {
> > -             /*
> > -              * In case the DTB is not located in a memory region we won't
> > -              * be able to locate it later on via the linear mapping and
> > -              * get a segfault when accessing it via __va(dtb_early_pa).
> > -              * To avoid this situation copy DTB to a memory region.
> > -              * Note that memblock_phys_alloc will also reserve DTB region.
> > -              */
> > -             if (!memblock_is_memory(dtb_early_pa)) {
> > -                     size_t fdt_size = fdt_totalsize(dtb_early_va);
> > -                     phys_addr_t new_dtb_early_pa = memblock_phys_alloc(fdt_size, PAGE_SIZE);
> > -                     void *new_dtb_early_va = early_memremap(new_dtb_early_pa, fdt_size);
> > -
> > -                     memcpy(new_dtb_early_va, dtb_early_va, fdt_size);
> > -                     early_memunmap(new_dtb_early_va, fdt_size);
> > -                     _dtb_early_pa = new_dtb_early_pa;
> > -             } else
> > -                     memblock_reserve(dtb_early_pa, fdt_totalsize(dtb_early_va));
> > -     }
> > +     if (!IS_ENABLED(CONFIG_BUILTIN_DTB))
> > +             memblock_reserve(dtb_early_pa, fdt_totalsize(dtb_early_va));
> >
> >       dma_contiguous_reserve(dma32_phys_limit);
> >       if (IS_ENABLED(CONFIG_64BIT))
> > --
> > 2.37.2
> >

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ