Commit cb32c9c5 authored by Daniel Axtens's avatar Daniel Axtens Committed by Linus Torvalds

kasan: use MAX_PTRS_PER_* for early shadow tables

powerpc has a variable number of PTRS_PER_*, set at runtime based on the
MMU that the kernel is booted under.

This means the PTRS_PER_* are no longer constants, and therefore breaks
the build.  Switch to using MAX_PTRS_PER_*, which are constant.

Link: https://lkml.kernel.org/r/20210624034050.511391-5-dja@axtens.netSigned-off-by: default avatarDaniel Axtens <dja@axtens.net>
Suggested-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
Suggested-by: default avatarBalbir Singh <bsingharora@gmail.com>
Reviewed-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
Reviewed-by: default avatarBalbir Singh <bsingharora@gmail.com>
Reviewed-by: default avatarMarco Elver <elver@google.com>
Reviewed-by: default avatarAndrey Konovalov <andreyknvl@gmail.com>
Cc: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent c0f8aa4f
...@@ -40,9 +40,9 @@ struct kunit_kasan_expectation { ...@@ -40,9 +40,9 @@ struct kunit_kasan_expectation {
#endif #endif
extern unsigned char kasan_early_shadow_page[PAGE_SIZE]; extern unsigned char kasan_early_shadow_page[PAGE_SIZE];
extern pte_t kasan_early_shadow_pte[PTRS_PER_PTE + PTE_HWTABLE_PTRS]; extern pte_t kasan_early_shadow_pte[MAX_PTRS_PER_PTE + PTE_HWTABLE_PTRS];
extern pmd_t kasan_early_shadow_pmd[PTRS_PER_PMD]; extern pmd_t kasan_early_shadow_pmd[MAX_PTRS_PER_PMD];
extern pud_t kasan_early_shadow_pud[PTRS_PER_PUD]; extern pud_t kasan_early_shadow_pud[MAX_PTRS_PER_PUD];
extern p4d_t kasan_early_shadow_p4d[MAX_PTRS_PER_P4D]; extern p4d_t kasan_early_shadow_p4d[MAX_PTRS_PER_P4D];
int kasan_populate_early_shadow(const void *shadow_start, int kasan_populate_early_shadow(const void *shadow_start,
......
...@@ -41,7 +41,7 @@ static inline bool kasan_p4d_table(pgd_t pgd) ...@@ -41,7 +41,7 @@ static inline bool kasan_p4d_table(pgd_t pgd)
} }
#endif #endif
#if CONFIG_PGTABLE_LEVELS > 3 #if CONFIG_PGTABLE_LEVELS > 3
pud_t kasan_early_shadow_pud[PTRS_PER_PUD] __page_aligned_bss; pud_t kasan_early_shadow_pud[MAX_PTRS_PER_PUD] __page_aligned_bss;
static inline bool kasan_pud_table(p4d_t p4d) static inline bool kasan_pud_table(p4d_t p4d)
{ {
return p4d_page(p4d) == virt_to_page(lm_alias(kasan_early_shadow_pud)); return p4d_page(p4d) == virt_to_page(lm_alias(kasan_early_shadow_pud));
...@@ -53,7 +53,7 @@ static inline bool kasan_pud_table(p4d_t p4d) ...@@ -53,7 +53,7 @@ static inline bool kasan_pud_table(p4d_t p4d)
} }
#endif #endif
#if CONFIG_PGTABLE_LEVELS > 2 #if CONFIG_PGTABLE_LEVELS > 2
pmd_t kasan_early_shadow_pmd[PTRS_PER_PMD] __page_aligned_bss; pmd_t kasan_early_shadow_pmd[MAX_PTRS_PER_PMD] __page_aligned_bss;
static inline bool kasan_pmd_table(pud_t pud) static inline bool kasan_pmd_table(pud_t pud)
{ {
return pud_page(pud) == virt_to_page(lm_alias(kasan_early_shadow_pmd)); return pud_page(pud) == virt_to_page(lm_alias(kasan_early_shadow_pmd));
...@@ -64,7 +64,7 @@ static inline bool kasan_pmd_table(pud_t pud) ...@@ -64,7 +64,7 @@ static inline bool kasan_pmd_table(pud_t pud)
return false; return false;
} }
#endif #endif
pte_t kasan_early_shadow_pte[PTRS_PER_PTE + PTE_HWTABLE_PTRS] pte_t kasan_early_shadow_pte[MAX_PTRS_PER_PTE + PTE_HWTABLE_PTRS]
__page_aligned_bss; __page_aligned_bss;
static inline bool kasan_pte_table(pmd_t pmd) static inline bool kasan_pte_table(pmd_t pmd)
......
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