mm-kmemleak-remove-kmemleak_not_leak_phys-and-the-min_count-argument-to-kmemleak_alloc_phys.patch removed from -mm tree
The quilt patch titled
Subject: mm: kmemleak: remove kmemleak_not_leak_phys() and the min_count argument to kmemleak_alloc_phys()
has been removed from the -mm tree. Its filename was
mm-kmemleak-remove-kmemleak_not_leak_phys-and-the-min_count-argument-to-kmemleak_alloc_phys.patch
This patch was dropped because it was merged into the mm-stable branch of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
------------------------------------------------------
From: Patrick Wang <[email protected]>
Subject: mm: kmemleak: remove kmemleak_not_leak_phys() and the min_count argument to kmemleak_alloc_phys()
Date: Sat, 11 Jun 2022 11:55:48 +0800
Patch series "mm: kmemleak: store objects allocated with physical address separately and check when scan", v4.
The kmemleak_*_phys() interface uses "min_low_pfn" and "max_low_pfn" to check address. But on some architectures, kmemleak_*_phys() is called before those two variables initialized. The following steps will be taken:
1) Add OBJECT_PHYS flag and rbtree for the objects allocated with physical address
2) Store physical address in objects if allocated with OBJECT_PHYS
3) Check the boundary when scan instead of in kmemleak_*_phys()
This patch set will solve:
https://lore.kernel.org/r/[email protected]
https://lore.kernel.org/r/[email protected]
v3: https://lore.kernel.org/r/[email protected]
v2: https://lore.kernel.org/r/[email protected]
v1: https://lore.kernel.org/r/[email protected]
This patch (of 4):
Remove the unused kmemleak_not_leak_phys() function. And remove the min_count argument to kmemleak_alloc_phys() function, assume it's 0.
---
Documentation/dev-tools/kmemleak.rst | 1 - drivers/of/fdt.c | 2 +- include/linux/kmemleak.h | 8 ++------ mm/kmemleak.c | 20 +++----------------- mm/memblock.c | 14 +++++++------- tools/testing/memblock/linux/kmemleak.h | 2 +- 6 files changed, 14 insertions(+), 33 deletions(-)
Documentation/dev-tools/kmemleak.rst renamed from Documentation/dev-tools/kmemleak.rst~mm-kmemleak-remove-kmemleak_not_leak_phys-and-the-min_count-argument-to-kmemleak_alloc_phys +0 -1
@@ -174,7 +174,6 @@ mapping: - ``kmemleak_alloc_phys`` - ``kmemleak_free_part_phys`` -- ``kmemleak_not_leak_phys`` - ``kmemleak_ignore_phys`` Dealing with false positives/negatives
drivers/of/fdt.c renamed from drivers/of/fdt.c~mm-kmemleak-remove-kmemleak_not_leak_phys-and-the-min_count-argument-to-kmemleak_alloc_phys +1 -1
@@ -529,7 +529,7 @@ static int __init __reserved_mem_reservepr_debug ("Reserved memory: reserved region for node '%s': base %pa, size %lu MiB\n" , uname, &base, (unsigned long )(size /SZ_1M ));if (!nomap) -kmemleak_alloc_phys (base, size,0 ,0 ); +kmemleak_alloc_phys (base, size,0 ); }else pr_info("Reserved memory: failed to reserve memory for node '%s': base %pa, size %lu MiB\n",
include/linux/kmemleak.h renamed from include/linux/kmemleak.h~mm-kmemleak-remove-kmemleak_not_leak_phys-and-the-min_count-argument-to-kmemleak_alloc_phys +2 -6
@@ -29,10 +29,9 @@ extern void kmemleak_not_leak(const voidextern void kmemleak_ignore (const void *ptr)__ref ;extern void kmemleak_scan_area (const void *ptr,size_t size,gfp_t gfp)__ref ;extern void kmemleak_no_scan (const void *ptr)__ref ; -extern void kmemleak_alloc_phys (phys_addr_t phys,size_t size,int min_count, +extern void kmemleak_alloc_phys (phys_addr_t phys,size_t size,gfp_t gfp)__ref ;extern void kmemleak_free_part_phys (phys_addr_t phys,size_t size)__ref ; -extern void kmemleak_not_leak_phys (phys_addr_t phys)__ref ;extern void kmemleak_ignore_phys (phys_addr_t phys)__ref ; static inline void kmemleak_alloc_recursive(const void *ptr, size_t size,
@@ -107,15 +106,12 @@ static inline void kmemleak_no_scan(cons { }static inline void kmemleak_alloc_phys (phys_addr_t phys,size_t size, -int min_count,gfp_t gfp) +gfp_t gfp) { }static inline void kmemleak_free_part_phys (phys_addr_t phys,size_t size) { } -static inline void kmemleak_not_leak_phys (phys_addr_t phys) -{ -}static inline void kmemleak_ignore_phys (phys_addr_t phys) { }
mm/kmemleak.c renamed from mm/kmemleak.c~mm-kmemleak-remove-kmemleak_not_leak_phys-and-the-min_count-argument-to-kmemleak_alloc_phys +3 -17
@@ -1125,15 +1125,13 @@ EXPORT_SYMBOL(kmemleak_no_scan);* address argument * @phys: physical address of the object * @size: size of the object -* @min_count: minimum number of references to this object. -* See kmemleak_alloc() * @gfp: kmalloc() flags used for kmemleak internal memory allocations */ -void __ref kmemleak_alloc_phys (phys_addr_t phys,size_t size,int min_count, -gfp_t gfp) +void __ref kmemleak_alloc_phys (phys_addr_t phys,size_t size,gfp_t gfp) {if (PHYS_PFN (phys) >= min_low_pfn &&PHYS_PFN (phys) < max_low_pfn) -kmemleak_alloc (__va (phys), size, min_count, gfp); +/* assume min_count 0 */ +kmemleak_alloc (__va (phys), size,0 , gfp); }EXPORT_SYMBOL (kmemleak_alloc_phys);
@@ -1152,18 +1150,6 @@ void __ref kmemleak_free_part_phys(phys_EXPORT_SYMBOL (kmemleak_free_part_phys);/** -* kmemleak_not_leak_phys - similar to kmemleak_not_leak but taking a physical -* address argument -* @phys: physical address of the object -*/ -void __ref kmemleak_not_leak_phys (phys_addr_t phys) -{ -if (PHYS_PFN (phys) >= min_low_pfn &&PHYS_PFN (phys) < max_low_pfn) -kmemleak_not_leak (__va (phys)); -} -EXPORT_SYMBOL (kmemleak_not_leak_phys); - -/** * kmemleak_ignore_phys - similar to kmemleak_ignore but taking a physical * address argument * @phys: physical address of the object
mm/memblock.c renamed from mm/memblock.c~mm-kmemleak-remove-kmemleak_not_leak_phys-and-the-min_count-argument-to-kmemleak_alloc_phys +7 -7
@@ -1345,8 +1345,8 @@ __next_mem_pfn_range_in_zone(u64 *idx, s* from the regions with mirroring enabled and then retried from any * memory region. * -* In addition, function sets the min_count to 0 using kmemleak_alloc_phys for -* allocated boot memory block, so that it is never reported as leaks. +* In addition, function using kmemleak_alloc_phys for allocated boot +* memory block, it is never reported as leaks. * * Return: * Physical address of allocated memory block on success, %0 on failure.
@@ -1398,12 +1398,12 @@ done:*/ if (end !=MEMBLOCK_ALLOC_NOLEAKTRACE )/* -* The min_count is set to 0 so that memblock allocated -* blocks are never reported as leaks. This is because many -* of these blocks are only referred via the physical -* address which is not looked up by kmemleak. +* Memblock allocated blocks are never reported as +* leaks. This is because many of these blocks are +* only referred via the physical address which is +* not looked up by kmemleak. */ -kmemleak_alloc_phys (found, size,0 ,0 ); +kmemleak_alloc_phys (found, size,0 );return found; }
tools/testing/memblock/linux/kmemleak.h renamed from tools/testing/memblock/linux/kmemleak.h~mm-kmemleak-remove-kmemleak_not_leak_phys-and-the-min_count-argument-to-kmemleak_alloc_phys +1 -1
@@ -7,7 +7,7 @@ static inline void kmemleak_free_part_ph }static inline void kmemleak_alloc_phys (phys_addr_t phys,size_t size, -int min_count,gfp_t gfp) +gfp_t gfp) { }
_
Patches currently in -mm which might be from [email protected] are