pet...@redhat.com
unread,Mar 4, 2024, 11:38:55 PMMar 4Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to linu...@kvack.org, linux-...@vger.kernel.org, Christophe Leroy, x...@kernel.org, Kirill A . Shutemov, Jason Gunthorpe, Yang Shi, pet...@redhat.com, Andrew Morton, linuxp...@lists.ozlabs.org, Muchun Song, Andrey Ryabinin, Alexander Potapenko, Andrey Konovalov, Dmitry Vyukov, Vincenzo Frascino, kasa...@googlegroups.com
From: Peter Xu <
pet...@redhat.com>
There is an old trick in shadow_mapped() to use pXd_bad() to detect huge
pages. After commit 93fab1b22ef7 ("mm: add generic p?d_leaf() macros") we
have a global API for huge mappings. Use that to replace the trick.
Cc: Andrey Ryabinin <
ryabin...@gmail.com>
Cc: Alexander Potapenko <
gli...@google.com>
Cc: Andrey Konovalov <
andre...@gmail.com>
Cc: Dmitry Vyukov <
dvy...@google.com>
Cc: Vincenzo Frascino <
vincenzo...@arm.com>
Cc:
kasa...@googlegroups.com
Signed-off-by: Peter Xu <
pet...@redhat.com>
---
mm/kasan/shadow.c | 11 ++---------
1 file changed, 2 insertions(+), 9 deletions(-)
diff --git a/mm/kasan/shadow.c b/mm/kasan/shadow.c
index 9ef84f31833f..d6210ca48dda 100644
--- a/mm/kasan/shadow.c
+++ b/mm/kasan/shadow.c
@@ -199,19 +199,12 @@ static bool shadow_mapped(unsigned long addr)
pud = pud_offset(p4d, addr);
if (pud_none(*pud))
return false;
-
- /*
- * We can't use pud_large() or pud_huge(), the first one is
- * arch-specific, the last one depends on HUGETLB_PAGE. So let's abuse
- * pud_bad(), if pud is bad then it's bad because it's huge.
- */
- if (pud_bad(*pud))
+ if (pud_leaf(*pud))
return true;
pmd = pmd_offset(pud, addr);
if (pmd_none(*pmd))
return false;
-
- if (pmd_bad(*pmd))
+ if (pmd_leaf(*pmd))
return true;
pte = pte_offset_kernel(pmd, addr);
return !pte_none(ptep_get(pte));
--
2.44.0