OSDN Git Service

riscv: Fix kfence now that the linear mapping can be backed by PUD/P4D/PGD
authorAlexandre Ghiti <alexghiti@rivosinc.com>
Tue, 6 Jun 2023 13:04:44 +0000 (15:04 +0200)
committerPalmer Dabbelt <palmer@rivosinc.com>
Wed, 7 Jun 2023 14:13:53 +0000 (07:13 -0700)
commit25abe0db92437fde463204c3e4eb5a71b62d6e5d
treef68b8318d1220f37771d6994e28e2fd19f48902d
parent6569fc12e442ea973d96db39e542aa19a7bc3a79
riscv: Fix kfence now that the linear mapping can be backed by PUD/P4D/PGD

RISC-V Kfence implementation used to rely on the fact the linear mapping
was backed by at most PMD hugepages, which is not true anymore since
commit 3335068f8721 ("riscv: Use PUD/P4D/PGD pages for the linear
mapping").

Instead of splitting PUD/P4D/PGD mappings afterwards, directly map the
kfence pool region using PTE mappings by allocating this region before
setup_vm_final().

Reported-by: syzbot+a74d57bddabbedd75135@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=a74d57bddabbedd75135
Fixes: 3335068f8721 ("riscv: Use PUD/P4D/PGD pages for the linear mapping")
Signed-off-by: Alexandre Ghiti <alexghiti@rivosinc.com>
Link: https://lore.kernel.org/r/20230606130444.25090-1-alexghiti@rivosinc.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/include/asm/kfence.h
arch/riscv/mm/init.c