| From: Catalin Marinas <catalin.marinas@arm.com> |
| Subject: samples: kmemleak: print the raw pointers for debugging purposes |
| Date: Thu, 6 Feb 2025 11:45:37 +0000 |
| |
| The kmemleak-test.c module is meant to leak some pointers for debugging |
| the kmemleak detection, pointer information dumping. It's no use if it |
| prints the hashed values of such pointers. |
| |
| Change the printk() format from %p to %px. While at it, also display the |
| raw __percpu pointer rather than this_cpu_ptr() since kmemleak now tracks |
| such pointers independently of the standard allocations. |
| |
| Link: https://lkml.kernel.org/r/20250206114537.2597764-3-catalin.marinas@arm.com |
| Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| samples/kmemleak/kmemleak-test.c | 36 ++++++++++++++--------------- |
| 1 file changed, 18 insertions(+), 18 deletions(-) |
| |
| --- a/samples/kmemleak/kmemleak-test.c~samples-kmemleak-print-the-raw-pointers-for-debugging-purposes |
| +++ a/samples/kmemleak/kmemleak-test.c |
| @@ -40,25 +40,25 @@ static int kmemleak_test_init(void) |
| pr_info("Kmemleak testing\n"); |
| |
| /* make some orphan objects */ |
| - pr_info("kmalloc(32) = %p\n", kmalloc(32, GFP_KERNEL)); |
| - pr_info("kmalloc(32) = %p\n", kmalloc(32, GFP_KERNEL)); |
| - pr_info("kmalloc(1024) = %p\n", kmalloc(1024, GFP_KERNEL)); |
| - pr_info("kmalloc(1024) = %p\n", kmalloc(1024, GFP_KERNEL)); |
| - pr_info("kmalloc(2048) = %p\n", kmalloc(2048, GFP_KERNEL)); |
| - pr_info("kmalloc(2048) = %p\n", kmalloc(2048, GFP_KERNEL)); |
| - pr_info("kmalloc(4096) = %p\n", kmalloc(4096, GFP_KERNEL)); |
| - pr_info("kmalloc(4096) = %p\n", kmalloc(4096, GFP_KERNEL)); |
| + pr_info("kmalloc(32) = 0x%px\n", kmalloc(32, GFP_KERNEL)); |
| + pr_info("kmalloc(32) = 0x%px\n", kmalloc(32, GFP_KERNEL)); |
| + pr_info("kmalloc(1024) = 0x%px\n", kmalloc(1024, GFP_KERNEL)); |
| + pr_info("kmalloc(1024) = 0x%px\n", kmalloc(1024, GFP_KERNEL)); |
| + pr_info("kmalloc(2048) = 0x%px\n", kmalloc(2048, GFP_KERNEL)); |
| + pr_info("kmalloc(2048) = 0x%px\n", kmalloc(2048, GFP_KERNEL)); |
| + pr_info("kmalloc(4096) = 0x%px\n", kmalloc(4096, GFP_KERNEL)); |
| + pr_info("kmalloc(4096) = 0x%px\n", kmalloc(4096, GFP_KERNEL)); |
| #ifndef CONFIG_MODULES |
| - pr_info("kmem_cache_alloc(files_cachep) = %p\n", |
| + pr_info("kmem_cache_alloc(files_cachep) = 0x%px\n", |
| kmem_cache_alloc(files_cachep, GFP_KERNEL)); |
| - pr_info("kmem_cache_alloc(files_cachep) = %p\n", |
| + pr_info("kmem_cache_alloc(files_cachep) = 0x%px\n", |
| kmem_cache_alloc(files_cachep, GFP_KERNEL)); |
| #endif |
| - pr_info("vmalloc(64) = %p\n", vmalloc(64)); |
| - pr_info("vmalloc(64) = %p\n", vmalloc(64)); |
| - pr_info("vmalloc(64) = %p\n", vmalloc(64)); |
| - pr_info("vmalloc(64) = %p\n", vmalloc(64)); |
| - pr_info("vmalloc(64) = %p\n", vmalloc(64)); |
| + pr_info("vmalloc(64) = 0x%px\n", vmalloc(64)); |
| + pr_info("vmalloc(64) = 0x%px\n", vmalloc(64)); |
| + pr_info("vmalloc(64) = 0x%px\n", vmalloc(64)); |
| + pr_info("vmalloc(64) = 0x%px\n", vmalloc(64)); |
| + pr_info("vmalloc(64) = 0x%px\n", vmalloc(64)); |
| |
| /* |
| * Add elements to a list. They should only appear as orphan |
| @@ -66,7 +66,7 @@ static int kmemleak_test_init(void) |
| */ |
| for (i = 0; i < 10; i++) { |
| elem = kzalloc(sizeof(*elem), GFP_KERNEL); |
| - pr_info("kzalloc(sizeof(*elem)) = %p\n", elem); |
| + pr_info("kzalloc(sizeof(*elem)) = 0x%px\n", elem); |
| if (!elem) |
| return -ENOMEM; |
| INIT_LIST_HEAD(&elem->list); |
| @@ -75,11 +75,11 @@ static int kmemleak_test_init(void) |
| |
| for_each_possible_cpu(i) { |
| per_cpu(kmemleak_test_pointer, i) = kmalloc(129, GFP_KERNEL); |
| - pr_info("kmalloc(129) = %p\n", |
| + pr_info("kmalloc(129) = 0x%px\n", |
| per_cpu(kmemleak_test_pointer, i)); |
| } |
| |
| - pr_info("__alloc_percpu(64, 4) = %p\n", __alloc_percpu(64, 4)); |
| + pr_info("__alloc_percpu(64, 4) = 0x%px\n", __alloc_percpu(64, 4)); |
| |
| return 0; |
| } |
| _ |