summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Chen <vincent.chen@sifive.com>2020-07-10 10:40:54 +0800
committerPalmer Dabbelt <palmerdabbelt@google.com>2020-07-20 21:14:51 -0700
commit4cb699d0447be8e0906539f93cbe41e19598ee5a (patch)
treeade72673581d45914670b209542101bdabbc2abe
parentba47d845d715a010f7b51f6f89bae32845e6acb7 (diff)
downloadlinux-stable-4cb699d0447be8e0906539f93cbe41e19598ee5a.tar.gz
linux-stable-4cb699d0447be8e0906539f93cbe41e19598ee5a.tar.bz2
linux-stable-4cb699d0447be8e0906539f93cbe41e19598ee5a.zip
riscv: kasan: use local_tlb_flush_all() to avoid uninitialized __sbi_rfence
It fails to boot the v5.8-rc4 kernel with CONFIG_KASAN because kasan_init and kasan_early_init use uninitialized __sbi_rfence as executing the tlb_flush_all(). Actually, at this moment, only the CPU which is responsible for the system initialization enables the MMU. Other CPUs are parking at the .Lsecondary_start. Hence the tlb_flush_all() is able to be replaced by local_tlb_flush_all() to avoid using uninitialized __sbi_rfence. Signed-off-by: Vincent Chen <vincent.chen@sifive.com> Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
-rw-r--r--arch/riscv/mm/kasan_init.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/riscv/mm/kasan_init.c b/arch/riscv/mm/kasan_init.c
index 4a8b61806633..87b4ab3d3c77 100644
--- a/arch/riscv/mm/kasan_init.c
+++ b/arch/riscv/mm/kasan_init.c
@@ -44,7 +44,7 @@ asmlinkage void __init kasan_early_init(void)
(__pa(((uintptr_t) kasan_early_shadow_pmd))),
__pgprot(_PAGE_TABLE)));
- flush_tlb_all();
+ local_flush_tlb_all();
}
static void __init populate(void *start, void *end)
@@ -79,7 +79,7 @@ static void __init populate(void *start, void *end)
pfn_pgd(PFN_DOWN(__pa(&pmd[offset])),
__pgprot(_PAGE_TABLE)));
- flush_tlb_all();
+ local_flush_tlb_all();
memset(start, 0, end - start);
}