Commit d2a91cef authored by Christophe Leroy's avatar Christophe Leroy Committed by Michael Ellerman

powerpc/kasan: Fix shadow pages allocation failure

Doing kasan pages allocation in MMU_init is too early, kernel doesn't
have access yet to the entire memory space and memblock_alloc() fails
when the kernel is a bit big.

Do it from kasan_init() instead.

Fixes: 2edb16ef ("powerpc/32: Add KASAN support")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/c24163ee5d5f8cdf52fefa45055ceb35435b8f15.1589866984.git.christophe.leroy@csgroup.eu
parent 3a66a24f
...@@ -27,12 +27,10 @@ ...@@ -27,12 +27,10 @@
#ifdef CONFIG_KASAN #ifdef CONFIG_KASAN
void kasan_early_init(void); void kasan_early_init(void);
void kasan_mmu_init(void);
void kasan_init(void); void kasan_init(void);
void kasan_late_init(void); void kasan_late_init(void);
#else #else
static inline void kasan_init(void) { } static inline void kasan_init(void) { }
static inline void kasan_mmu_init(void) { }
static inline void kasan_late_init(void) { } static inline void kasan_late_init(void) { }
#endif #endif
......
...@@ -170,8 +170,6 @@ void __init MMU_init(void) ...@@ -170,8 +170,6 @@ void __init MMU_init(void)
btext_unmap(); btext_unmap();
#endif #endif
kasan_mmu_init();
setup_kup(); setup_kup();
/* Shortly after that, the entire linear mapping will be available */ /* Shortly after that, the entire linear mapping will be available */
......
...@@ -131,7 +131,7 @@ static void __init kasan_unmap_early_shadow_vmalloc(void) ...@@ -131,7 +131,7 @@ static void __init kasan_unmap_early_shadow_vmalloc(void)
flush_tlb_kernel_range(k_start, k_end); flush_tlb_kernel_range(k_start, k_end);
} }
void __init kasan_mmu_init(void) static void __init kasan_mmu_init(void)
{ {
int ret; int ret;
struct memblock_region *reg; struct memblock_region *reg;
...@@ -159,6 +159,8 @@ void __init kasan_mmu_init(void) ...@@ -159,6 +159,8 @@ void __init kasan_mmu_init(void)
void __init kasan_init(void) void __init kasan_init(void)
{ {
kasan_mmu_init();
kasan_remap_early_shadow_ro(); kasan_remap_early_shadow_ro();
clear_page(kasan_early_shadow_page); clear_page(kasan_early_shadow_page);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment