diff options
author | Huacai Chen <chenhuacai@loongson.cn> | 2024-02-06 07:32:05 +0300 |
---|---|---|
committer | Huacai Chen <chenhuacai@loongson.cn> | 2024-02-06 07:32:05 +0300 |
commit | 639420e9f6cd9ca074732b17ac450d2518d5937f (patch) | |
tree | 97197e984a6c3ce9439dce4ea4278d175a71faf4 /arch | |
parent | 4551b30525cf3d2f026b92401ffe241eb04dfebe (diff) | |
download | linux-639420e9f6cd9ca074732b17ac450d2518d5937f.tar.xz |
LoongArch: Fix earlycon parameter if KASAN enabled
The earlycon parameter is based on fixmap, and fixmap addresses are not
supposed to be shadowed by KASAN. So return the kasan_early_shadow_page
in kasan_mem_to_shadow() if the input address is above FIXADDR_START.
Otherwise earlycon cannot work after kasan_init().
Cc: stable@vger.kernel.org
Fixes: 5aa4ac64e6add3e ("LoongArch: Add KASAN (Kernel Address Sanitizer) support")
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/loongarch/mm/kasan_init.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/loongarch/mm/kasan_init.c b/arch/loongarch/mm/kasan_init.c index cc3e81fe0186..c608adc99845 100644 --- a/arch/loongarch/mm/kasan_init.c +++ b/arch/loongarch/mm/kasan_init.c @@ -44,6 +44,9 @@ void *kasan_mem_to_shadow(const void *addr) unsigned long xrange = (maddr >> XRANGE_SHIFT) & 0xffff; unsigned long offset = 0; + if (maddr >= FIXADDR_START) + return (void *)(kasan_early_shadow_page); + maddr &= XRANGE_SHADOW_MASK; switch (xrange) { case XKPRANGE_CC_SEG: |