kasan_early_shadow_pte is a complete PTE table rather than a standalone PTE value. Declare and define its elements as hw_pte_t so the object uses the PTE table storage type.
Read the first element through ptep_get(), which returns the logical pte_t value expected by note_page_pte(), instead of accessing hw_pte_t storage directly. This also uses the accessor selected by the architecture. The generic hw_pte_t remains an alias of pte_t, so the storage representation is unchanged. Signed-off-by: Muhammad Usama Anjum <[email protected]> --- include/linux/kasan.h | 2 +- mm/kasan/init.c | 2 +- mm/ptdump.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/linux/kasan.h b/include/linux/kasan.h index bf233bde68c7e..ff41949c0ac08 100644 --- a/include/linux/kasan.h +++ b/include/linux/kasan.h @@ -51,7 +51,7 @@ typedef unsigned int __bitwise kasan_vmalloc_flags_t; #endif extern unsigned char kasan_early_shadow_page[PAGE_SIZE]; -extern pte_t kasan_early_shadow_pte[MAX_PTRS_PER_PTE + PTE_HWTABLE_PTRS]; +extern hw_pte_t kasan_early_shadow_pte[MAX_PTRS_PER_PTE + PTE_HWTABLE_PTRS]; extern pmd_t kasan_early_shadow_pmd[MAX_PTRS_PER_PMD]; extern pud_t kasan_early_shadow_pud[MAX_PTRS_PER_PUD]; extern p4d_t kasan_early_shadow_p4d[MAX_PTRS_PER_P4D]; diff --git a/mm/kasan/init.c b/mm/kasan/init.c index 30c5266eaf37e..9bbc2a41d23f0 100644 --- a/mm/kasan/init.c +++ b/mm/kasan/init.c @@ -64,7 +64,7 @@ static inline bool kasan_pmd_table(pud_t pud) return false; } #endif -pte_t kasan_early_shadow_pte[MAX_PTRS_PER_PTE + PTE_HWTABLE_PTRS] +hw_pte_t kasan_early_shadow_pte[MAX_PTRS_PER_PTE + PTE_HWTABLE_PTRS] __bss_pgtbl; static inline bool kasan_pte_table(pmd_t pmd) diff --git a/mm/ptdump.c b/mm/ptdump.c index 376880071ca2a..8f19f20be3c44 100644 --- a/mm/ptdump.c +++ b/mm/ptdump.c @@ -19,7 +19,7 @@ static inline int note_kasan_page_table(struct mm_walk *walk, { struct ptdump_state *st = walk->private; - st->note_page_pte(st, addr, kasan_early_shadow_pte[0]); + st->note_page_pte(st, addr, ptep_get(kasan_early_shadow_pte)); walk->action = ACTION_CONTINUE; -- 2.47.3
