Message ID | fa22576baa70fd0cdf8b3f5af3767116a1c680e7.1534164087.git.christophe.leroy@c-s.fr (mailing list archive) |
---|---|
State | Accepted |
Commit | 803d690e68f0c5230183f1a42c7d50a41d16e380 |
Headers | show |
Series | powerpc/mm: Don't report hugepage tables as memory leaks when using kmemleak | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | success | next/apply_patch Successfully applied |
snowpatch_ozlabs/checkpatch | success | Test checkpatch on branch next |
snowpatch_ozlabs/build-ppc64le | success | Test build-ppc64le on branch next |
snowpatch_ozlabs/build-ppc64be | success | Test build-ppc64be on branch next |
snowpatch_ozlabs/build-ppc64e | success | Test build-ppc64e on branch next |
snowpatch_ozlabs/build-ppc32 | success | Test build-ppc32 on branch next |
On Mon, 2018-08-13 at 13:19:52 UTC, Christophe Leroy wrote: > When a process allocates a hugepage, the following leak is > reported by kmemleak. This is a false positive which is > due to the pointer to the table being stored in the PGD > as physical memory address and not virtual memory pointer. > > unreferenced object 0xc30f8200 (size 512): > comm "mmap", pid 374, jiffies 4872494 (age 627.630s) > hex dump (first 32 bytes): > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ > backtrace: > [<e32b68da>] huge_pte_alloc+0xdc/0x1f8 > [<9e0df1e1>] hugetlb_fault+0x560/0x8f8 > [<7938ec6c>] follow_hugetlb_page+0x14c/0x44c > [<afbdb405>] __get_user_pages+0x1c4/0x3dc > [<b8fd7cd9>] __mm_populate+0xac/0x140 > [<3215421e>] vm_mmap_pgoff+0xb4/0xb8 > [<c148db69>] ksys_mmap_pgoff+0xcc/0x1fc > [<4fcd760f>] ret_from_syscall+0x0/0x38 > > See commit a984506c542e2 ("powerpc/mm: Don't report PUDs as > memory leaks when using kmemleak") for detailed explanation. > > To fix that, this patch tells kmemleak to ignore the allocated > hugepage table. > > Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> Applied to powerpc next, thanks. https://git.kernel.org/powerpc/c/803d690e68f0c5230183f1a42c7d50 cheers
diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c index e87f9ef9115b..7296a42eb62e 100644 --- a/arch/powerpc/mm/hugetlbpage.c +++ b/arch/powerpc/mm/hugetlbpage.c @@ -19,6 +19,7 @@ #include <linux/moduleparam.h> #include <linux/swap.h> #include <linux/swapops.h> +#include <linux/kmemleak.h> #include <asm/pgtable.h> #include <asm/pgalloc.h> #include <asm/tlb.h> @@ -112,6 +113,8 @@ static int __hugepte_alloc(struct mm_struct *mm, hugepd_t *hpdp, for (i = i - 1 ; i >= 0; i--, hpdp--) *hpdp = __hugepd(0); kmem_cache_free(cachep, new); + } else { + kmemleak_ignore(new); } spin_unlock(ptl); return 0;
When a process allocates a hugepage, the following leak is reported by kmemleak. This is a false positive which is due to the pointer to the table being stored in the PGD as physical memory address and not virtual memory pointer. unreferenced object 0xc30f8200 (size 512): comm "mmap", pid 374, jiffies 4872494 (age 627.630s) hex dump (first 32 bytes): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ backtrace: [<e32b68da>] huge_pte_alloc+0xdc/0x1f8 [<9e0df1e1>] hugetlb_fault+0x560/0x8f8 [<7938ec6c>] follow_hugetlb_page+0x14c/0x44c [<afbdb405>] __get_user_pages+0x1c4/0x3dc [<b8fd7cd9>] __mm_populate+0xac/0x140 [<3215421e>] vm_mmap_pgoff+0xb4/0xb8 [<c148db69>] ksys_mmap_pgoff+0xcc/0x1fc [<4fcd760f>] ret_from_syscall+0x0/0x38 See commit a984506c542e2 ("powerpc/mm: Don't report PUDs as memory leaks when using kmemleak") for detailed explanation. To fix that, this patch tells kmemleak to ignore the allocated hugepage table. Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> --- arch/powerpc/mm/hugetlbpage.c | 3 +++ 1 file changed, 3 insertions(+)