riscv: Make vmalloc/vmemmap end equal to the start of the next region
authorAlexandre Ghiti <alexandre.ghiti@canonical.com>
Thu, 18 Nov 2021 13:45:39 +0000 (14:45 +0100)
committerPalmer Dabbelt <palmer@rivosinc.com>
Thu, 6 Jan 2022 03:22:13 +0000 (19:22 -0800)
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>
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/include/asm/pgtable.h
arch/riscv/mm/fault.c

index bf204e7..db3f739 100644 (file)
@@ -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)
@@ -51,7 +51,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)
 
 /*
index aa08dd2..41ae0aa 100644 (file)
@@ -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;
        }