linux/arch/riscv/mm
Hsieh-Tseng Shen 6569fc12e4
riscv: mm: Ensure prot of VM_WRITE and VM_EXEC must be readable
Commit 8aeb7b17f0 ("RISC-V: Make mmap() with PROT_WRITE imply PROT_READ")
allows riscv to use mmap with PROT_WRITE only, and meanwhile mmap with w+x
is also permitted. However, when userspace tries to access this page with
PROT_WRITE|PROT_EXEC, which causes infinite loop at load page fault as
well as it triggers soft lockup. According to riscv privileged spec,
"Writable pages must also be marked readable". The fix to drop the
`PAGE_COPY_READ_EXEC` and then `PAGE_COPY_EXEC` would be just used instead.
This aligns the other arches (i.e arm64) for protection_map.

Fixes: 8aeb7b17f0 ("RISC-V: Make mmap() with PROT_WRITE imply PROT_READ")
Signed-off-by: Hsieh-Tseng Shen <woodrow.shen@sifive.com>
Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com>
Link: https://lore.kernel.org/r/20230425102828.1616812-1-woodrow.shen@sifive.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
2023-06-07 07:13:25 -07:00
..
cacheflush.c RISC-V Patches for the 6.4 Merge Window, Part 1 2023-04-28 16:55:39 -07:00
context.c riscv: mm: Fix incorrect ASID argument when flushing TLB 2023-03-21 15:55:19 -07:00
dma-noncoherent.c RISC-V: Fix compilation without RISCV_ISA_ZICBOM 2022-10-21 11:52:39 +05:30
extable.c riscv: extable: fix err reg writing in dedicated uaccess handler 2022-02-08 17:02:47 -08:00
fault.c RISC-V Patches for the 6.4 Merge Window, Part 1 2023-04-28 16:55:39 -07:00
hugetlbpage.c riscv: Implement missing huge_ptep_get 2023-06-01 18:15:37 -07:00
init.c riscv: mm: Ensure prot of VM_WRITE and VM_EXEC must be readable 2023-06-07 07:13:25 -07:00
kasan_init.c riscv: Rework kasan population functions 2023-04-19 07:24:50 -07:00
Makefile riscv: Introduce CONFIG_RELOCATABLE 2023-04-19 07:46:30 -07:00
pageattr.c RISC-V: mm: Enable huge page support to kernel_page_present() function 2023-04-29 11:25:12 -07:00
pgtable.c riscv: mm: Implement pmdp_collapse_flush for THP 2023-02-01 20:52:09 -08:00
physaddr.c riscv: Use PUD/P4D/PGD pages for the linear mapping 2023-04-18 20:43:04 -07:00
pmem.c RISC-V: Implement arch specific PMEM APIs 2022-12-08 15:43:59 -08:00
ptdump.c riscv: Fix ptdump when KASAN is enabled 2023-04-19 07:24:53 -07:00
tlbflush.c RISC-V: Use IPIs for remote TLB flush when possible 2023-04-08 11:26:24 +01:00