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

powerpc/32s: map kasan zero shadow with PAGE_READONLY instead of PAGE_KERNEL_RO

For hash32, the zero shadow page gets mapped with PAGE_READONLY instead
of PAGE_KERNEL_RO, because the PP bits don't provide a RO kernel, so
PAGE_KERNEL_RO is equivalent to PAGE_KERNEL. By using PAGE_READONLY,
the page is RO for both kernel and user, but this is not a security issue
as it contains only zeroes.
Signed-off-by: default avatarChristophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 215b8237
...@@ -39,6 +39,9 @@ static int kasan_init_shadow_page_tables(unsigned long k_start, unsigned long k_ ...@@ -39,6 +39,9 @@ static int kasan_init_shadow_page_tables(unsigned long k_start, unsigned long k_
if (!new) if (!new)
return -ENOMEM; return -ENOMEM;
if (early_mmu_has_feature(MMU_FTR_HPTE_TABLE))
kasan_populate_pte(new, PAGE_READONLY);
else
kasan_populate_pte(new, PAGE_KERNEL_RO); kasan_populate_pte(new, PAGE_KERNEL_RO);
pmd_populate_kernel(&init_mm, pmd, new); pmd_populate_kernel(&init_mm, pmd, new);
} }
...@@ -84,6 +87,9 @@ static int __ref kasan_init_region(void *start, size_t size) ...@@ -84,6 +87,9 @@ static int __ref kasan_init_region(void *start, size_t size)
static void __init kasan_remap_early_shadow_ro(void) static void __init kasan_remap_early_shadow_ro(void)
{ {
if (early_mmu_has_feature(MMU_FTR_HPTE_TABLE))
kasan_populate_pte(kasan_early_shadow_pte, PAGE_READONLY);
else
kasan_populate_pte(kasan_early_shadow_pte, PAGE_KERNEL_RO); kasan_populate_pte(kasan_early_shadow_pte, PAGE_KERNEL_RO);
flush_tlb_kernel_range(KASAN_SHADOW_START, KASAN_SHADOW_END); flush_tlb_kernel_range(KASAN_SHADOW_START, KASAN_SHADOW_END);
......
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