From ce0653fd2cb3b91553870938edd1b854c4975c72 Mon Sep 17 00:00:00 2001 From: Dezhi Huang Date: Thu, 23 May 2024 15:10:35 +0800 Subject: [PATCH] ANDROID: Allow vendor modules perform more operations on memleak detect Export arch_vma_name, anon_vma_name, vm_normal_page, walk_page_range, pmd_clear_bad, __pmd_trans_huge_lock,__pte_offset_map_lock functions. Allow vendor modules perform more operations on memleak detect and debug.It can detect multiple types of memleak, such as Native,ION,Slub and Vmalloc. Shows detail size of memleak, and shows the stack. Bug: 365506692 Bug: 342305999 Change-Id: I118efa570e660d0696bf081d00b670760d01bec1 Signed-off-by: Dezhi Huang (cherry picked from commit 21e76b82444db3635eacb360f0d0206a069de4a8) --- kernel/signal.c | 1 + mm/huge_memory.c | 1 + mm/madvise.c | 1 + mm/memory.c | 1 + mm/pagewalk.c | 1 + mm/pgtable-generic.c | 1 + 6 files changed, 6 insertions(+) diff --git a/kernel/signal.c b/kernel/signal.c index e0f8e35e15b8..a1ac9c063631 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -4709,6 +4709,7 @@ __weak const char *arch_vma_name(struct vm_area_struct *vma) { return NULL; } +EXPORT_SYMBOL_GPL(arch_vma_name); static inline void siginfo_buildtime_checks(void) { diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 77bee3b4fadd..d48053581af0 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -2069,6 +2069,7 @@ spinlock_t *__pmd_trans_huge_lock(pmd_t *pmd, struct vm_area_struct *vma) spin_unlock(ptl); return NULL; } +EXPORT_SYMBOL_GPL(__pmd_trans_huge_lock); /* * Returns page table lock pointer if a given pud maps a thp, NULL otherwise. diff --git a/mm/madvise.c b/mm/madvise.c index e1852ea44c8e..9ddd36f094b7 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -103,6 +103,7 @@ struct anon_vma_name *anon_vma_name(struct vm_area_struct *vma) return vma->anon_name; } +EXPORT_SYMBOL_GPL(anon_vma_name); /* mmap_lock should be write-locked */ static int replace_anon_vma_name(struct vm_area_struct *vma, diff --git a/mm/memory.c b/mm/memory.c index ee5cb9ac1074..ee80a70947f8 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -688,6 +688,7 @@ check_pfn: out: return pfn_to_page(pfn); } +EXPORT_SYMBOL_GPL(vm_normal_page); struct folio *vm_normal_folio(struct vm_area_struct *vma, unsigned long addr, pte_t pte) diff --git a/mm/pagewalk.c b/mm/pagewalk.c index d92c5b567837..c14e5f1fd6bb 100644 --- a/mm/pagewalk.c +++ b/mm/pagewalk.c @@ -509,6 +509,7 @@ int walk_page_range(struct mm_struct *mm, unsigned long start, } while (start = next, start < end); return err; } +EXPORT_SYMBOL_GPL(walk_page_range); /** * walk_page_range_novma - walk a range of pagetables not backed by a vma diff --git a/mm/pgtable-generic.c b/mm/pgtable-generic.c index 6a582cc07023..4cdcc883d090 100644 --- a/mm/pgtable-generic.c +++ b/mm/pgtable-generic.c @@ -51,6 +51,7 @@ void pmd_clear_bad(pmd_t *pmd) pmd_ERROR(*pmd); pmd_clear(pmd); } +EXPORT_SYMBOL_GPL(pmd_clear_bad); #ifndef __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS /*