LoongArch: Fix earlycon parameter if KASAN enabled
authorHuacai Chen <chenhuacai@loongson.cn>
Tue, 6 Feb 2024 04:32:05 +0000 (12:32 +0800)
committerHuacai Chen <chenhuacai@loongson.cn>
Tue, 6 Feb 2024 04:32:05 +0000 (12:32 +0800)
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>
arch/loongarch/mm/kasan_init.c

index cc3e81fe0186f4f0fa8de9cedfc75138583ce23f..c608adc9984581d0419594a8eb87ae18a3e9ec63 100644 (file)
@@ -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: