mirror of
https://github.com/torvalds/linux.git
synced 2024-11-18 01:51:53 +00:00
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: 2edb16efc8
("powerpc/32: Add KASAN support")
Cc: stable@vger.kernel.org
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/c24163ee5d5f8cdf52fefa45055ceb35435b8f15.1589866984.git.christophe.leroy@csgroup.eu
This commit is contained in:
parent
3a66a24f60
commit
d2a91cef9b
@ -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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
|
|
||||||
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);
|
||||||
|
Loading…
Reference in New Issue
Block a user