On Fri, Jan 29, 2021 at 9:31 AM Alexandre Ghiti <a...@ghiti.fr> wrote: > > virt_addr_valid macro checks that a virtual address is valid, ie that > the address belongs to the linear mapping and that the corresponding > physical page exists. > > Add the missing check that ensures the virtual address belongs to the > linear mapping, otherwise __virt_to_phys, when compiled with > CONFIG_DEBUG_VIRTUAL enabled, raises a WARN that is interpreted as a > kernel bug by syzbot. > > Signed-off-by: Alexandre Ghiti <a...@ghiti.fr> > --- > arch/riscv/include/asm/page.h | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/arch/riscv/include/asm/page.h b/arch/riscv/include/asm/page.h > index 2d50f76efe48..64a675c5c30a 100644 > --- a/arch/riscv/include/asm/page.h > +++ b/arch/riscv/include/asm/page.h > @@ -135,7 +135,10 @@ extern phys_addr_t __phys_addr_symbol(unsigned long x); > > #endif /* __ASSEMBLY__ */ > > -#define virt_addr_valid(vaddr) (pfn_valid(virt_to_pfn(vaddr))) > +#define virt_addr_valid(vaddr) ({ > \ > + unsigned long _addr = (unsigned long)vaddr; > \ > + (unsigned long)(_addr) >= PAGE_OFFSET && > pfn_valid(virt_to_pfn(_addr)); \ > +}) > > #define VM_DATA_DEFAULT_FLAGS VM_DATA_FLAGS_NON_EXEC > > -- > 2.20.1 > > > _______________________________________________ > linux-riscv mailing list > linux-ri...@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv
Reviewed-by: Atish Patra <atish.pa...@wdc.com> -- Regards, Atish