Message ID | 20211118134539.137212-1-alexandre.ghiti@canonical.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | riscv: Make vmalloc/vmemmap end equal to the start of the next region | expand |
On Thu, 18 Nov 2021 14:45:39 +0100 Alexandre Ghiti <alexandre.ghiti@canonical.com> wrote: > We used to define VMALLOC_END equal to the start of the next region > *minus one* which is inconsistent with the use of this define in the > core code (for example, see the definitions of VMALLOC_TOTAL and > is_vmalloc_addr). > > And then make the definition of VMEMMAP_END consistent with VMALLOC_END > and all other regions actually. > > Signed-off-by: Alexandre Ghiti <alexandre.ghiti@canonical.com> Reviewed-by: Jisheng Zhang <jszhang@kernel.org> > --- > arch/riscv/include/asm/pgtable.h | 4 ++-- > arch/riscv/mm/fault.c | 2 +- > 2 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h > index d34f3a7a9701..5155048274c2 100644 > --- a/arch/riscv/include/asm/pgtable.h > +++ b/arch/riscv/include/asm/pgtable.h > @@ -25,7 +25,7 @@ > #endif > > #define VMALLOC_SIZE (KERN_VIRT_SIZE >> 1) > -#define VMALLOC_END (PAGE_OFFSET - 1) > +#define VMALLOC_END PAGE_OFFSET > #define VMALLOC_START (PAGE_OFFSET - VMALLOC_SIZE) > > #define BPF_JIT_REGION_SIZE (SZ_128M) > @@ -53,7 +53,7 @@ > #define VMEMMAP_SHIFT \ > (CONFIG_VA_BITS - PAGE_SHIFT - 1 + STRUCT_PAGE_MAX_SHIFT) > #define VMEMMAP_SIZE BIT(VMEMMAP_SHIFT) > -#define VMEMMAP_END (VMALLOC_START - 1) > +#define VMEMMAP_END VMALLOC_START > #define VMEMMAP_START (VMALLOC_START - VMEMMAP_SIZE) > > /* > diff --git a/arch/riscv/mm/fault.c b/arch/riscv/mm/fault.c > index aa08dd2f8fae..41ae0aa8f2b8 100644 > --- a/arch/riscv/mm/fault.c > +++ b/arch/riscv/mm/fault.c > @@ -235,7 +235,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs) > * only copy the information from the master page table, > * nothing more. > */ > - if (unlikely((addr >= VMALLOC_START) && (addr <= VMALLOC_END))) { > + if (unlikely((addr >= VMALLOC_START) && (addr < VMALLOC_END))) { > vmalloc_fault(regs, code, addr); > return; > }
On Thu, 18 Nov 2021 05:45:39 PST (-0800), alexandre.ghiti@canonical.com wrote: > We used to define VMALLOC_END equal to the start of the next region > *minus one* which is inconsistent with the use of this define in the > core code (for example, see the definitions of VMALLOC_TOTAL and > is_vmalloc_addr). > > And then make the definition of VMEMMAP_END consistent with VMALLOC_END > and all other regions actually. > > Signed-off-by: Alexandre Ghiti <alexandre.ghiti@canonical.com> > --- > arch/riscv/include/asm/pgtable.h | 4 ++-- > arch/riscv/mm/fault.c | 2 +- > 2 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h > index d34f3a7a9701..5155048274c2 100644 > --- a/arch/riscv/include/asm/pgtable.h > +++ b/arch/riscv/include/asm/pgtable.h > @@ -25,7 +25,7 @@ > #endif > > #define VMALLOC_SIZE (KERN_VIRT_SIZE >> 1) > -#define VMALLOC_END (PAGE_OFFSET - 1) > +#define VMALLOC_END PAGE_OFFSET > #define VMALLOC_START (PAGE_OFFSET - VMALLOC_SIZE) > > #define BPF_JIT_REGION_SIZE (SZ_128M) > @@ -53,7 +53,7 @@ > #define VMEMMAP_SHIFT \ > (CONFIG_VA_BITS - PAGE_SHIFT - 1 + STRUCT_PAGE_MAX_SHIFT) > #define VMEMMAP_SIZE BIT(VMEMMAP_SHIFT) > -#define VMEMMAP_END (VMALLOC_START - 1) > +#define VMEMMAP_END VMALLOC_START > #define VMEMMAP_START (VMALLOC_START - VMEMMAP_SIZE) > > /* > diff --git a/arch/riscv/mm/fault.c b/arch/riscv/mm/fault.c > index aa08dd2f8fae..41ae0aa8f2b8 100644 > --- a/arch/riscv/mm/fault.c > +++ b/arch/riscv/mm/fault.c > @@ -235,7 +235,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs) > * only copy the information from the master page table, > * nothing more. > */ > - if (unlikely((addr >= VMALLOC_START) && (addr <= VMALLOC_END))) { > + if (unlikely((addr >= VMALLOC_START) && (addr < VMALLOC_END))) { > vmalloc_fault(regs, code, addr); > return; > } Thanks, this is on for-next.
diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h index d34f3a7a9701..5155048274c2 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -25,7 +25,7 @@ #endif #define VMALLOC_SIZE (KERN_VIRT_SIZE >> 1) -#define VMALLOC_END (PAGE_OFFSET - 1) +#define VMALLOC_END PAGE_OFFSET #define VMALLOC_START (PAGE_OFFSET - VMALLOC_SIZE) #define BPF_JIT_REGION_SIZE (SZ_128M) @@ -53,7 +53,7 @@ #define VMEMMAP_SHIFT \ (CONFIG_VA_BITS - PAGE_SHIFT - 1 + STRUCT_PAGE_MAX_SHIFT) #define VMEMMAP_SIZE BIT(VMEMMAP_SHIFT) -#define VMEMMAP_END (VMALLOC_START - 1) +#define VMEMMAP_END VMALLOC_START #define VMEMMAP_START (VMALLOC_START - VMEMMAP_SIZE) /* diff --git a/arch/riscv/mm/fault.c b/arch/riscv/mm/fault.c index aa08dd2f8fae..41ae0aa8f2b8 100644 --- a/arch/riscv/mm/fault.c +++ b/arch/riscv/mm/fault.c @@ -235,7 +235,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs) * only copy the information from the master page table, * nothing more. */ - if (unlikely((addr >= VMALLOC_START) && (addr <= VMALLOC_END))) { + if (unlikely((addr >= VMALLOC_START) && (addr < VMALLOC_END))) { vmalloc_fault(regs, code, addr); return; }
We used to define VMALLOC_END equal to the start of the next region *minus one* which is inconsistent with the use of this define in the core code (for example, see the definitions of VMALLOC_TOTAL and is_vmalloc_addr). And then make the definition of VMEMMAP_END consistent with VMALLOC_END and all other regions actually. Signed-off-by: Alexandre Ghiti <alexandre.ghiti@canonical.com> --- arch/riscv/include/asm/pgtable.h | 4 ++-- arch/riscv/mm/fault.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-)