Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

samples: kmemleak: print the raw pointers for debugging purposes

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>

authored by

Catalin Marinas and committed by
Andrew Morton
fe1136b4 7ddeb91f

+18 -18
+18 -18
samples/kmemleak/kmemleak-test.c
··· 40 40 pr_info("Kmemleak testing\n"); 41 41 42 42 /* make some orphan objects */ 43 - pr_info("kmalloc(32) = %p\n", kmalloc(32, GFP_KERNEL)); 44 - pr_info("kmalloc(32) = %p\n", kmalloc(32, GFP_KERNEL)); 45 - pr_info("kmalloc(1024) = %p\n", kmalloc(1024, GFP_KERNEL)); 46 - pr_info("kmalloc(1024) = %p\n", kmalloc(1024, GFP_KERNEL)); 47 - pr_info("kmalloc(2048) = %p\n", kmalloc(2048, GFP_KERNEL)); 48 - pr_info("kmalloc(2048) = %p\n", kmalloc(2048, GFP_KERNEL)); 49 - pr_info("kmalloc(4096) = %p\n", kmalloc(4096, GFP_KERNEL)); 50 - pr_info("kmalloc(4096) = %p\n", kmalloc(4096, GFP_KERNEL)); 43 + pr_info("kmalloc(32) = 0x%px\n", kmalloc(32, GFP_KERNEL)); 44 + pr_info("kmalloc(32) = 0x%px\n", kmalloc(32, GFP_KERNEL)); 45 + pr_info("kmalloc(1024) = 0x%px\n", kmalloc(1024, GFP_KERNEL)); 46 + pr_info("kmalloc(1024) = 0x%px\n", kmalloc(1024, GFP_KERNEL)); 47 + pr_info("kmalloc(2048) = 0x%px\n", kmalloc(2048, GFP_KERNEL)); 48 + pr_info("kmalloc(2048) = 0x%px\n", kmalloc(2048, GFP_KERNEL)); 49 + pr_info("kmalloc(4096) = 0x%px\n", kmalloc(4096, GFP_KERNEL)); 50 + pr_info("kmalloc(4096) = 0x%px\n", kmalloc(4096, GFP_KERNEL)); 51 51 #ifndef CONFIG_MODULES 52 - pr_info("kmem_cache_alloc(files_cachep) = %p\n", 52 + pr_info("kmem_cache_alloc(files_cachep) = 0x%px\n", 53 53 kmem_cache_alloc(files_cachep, GFP_KERNEL)); 54 - pr_info("kmem_cache_alloc(files_cachep) = %p\n", 54 + pr_info("kmem_cache_alloc(files_cachep) = 0x%px\n", 55 55 kmem_cache_alloc(files_cachep, GFP_KERNEL)); 56 56 #endif 57 - pr_info("vmalloc(64) = %p\n", vmalloc(64)); 58 - pr_info("vmalloc(64) = %p\n", vmalloc(64)); 59 - pr_info("vmalloc(64) = %p\n", vmalloc(64)); 60 - pr_info("vmalloc(64) = %p\n", vmalloc(64)); 61 - pr_info("vmalloc(64) = %p\n", vmalloc(64)); 57 + pr_info("vmalloc(64) = 0x%px\n", vmalloc(64)); 58 + pr_info("vmalloc(64) = 0x%px\n", vmalloc(64)); 59 + pr_info("vmalloc(64) = 0x%px\n", vmalloc(64)); 60 + pr_info("vmalloc(64) = 0x%px\n", vmalloc(64)); 61 + pr_info("vmalloc(64) = 0x%px\n", vmalloc(64)); 62 62 63 63 /* 64 64 * Add elements to a list. They should only appear as orphan ··· 66 66 */ 67 67 for (i = 0; i < 10; i++) { 68 68 elem = kzalloc(sizeof(*elem), GFP_KERNEL); 69 - pr_info("kzalloc(sizeof(*elem)) = %p\n", elem); 69 + pr_info("kzalloc(sizeof(*elem)) = 0x%px\n", elem); 70 70 if (!elem) 71 71 return -ENOMEM; 72 72 INIT_LIST_HEAD(&elem->list); ··· 75 75 76 76 for_each_possible_cpu(i) { 77 77 per_cpu(kmemleak_test_pointer, i) = kmalloc(129, GFP_KERNEL); 78 - pr_info("kmalloc(129) = %p\n", 78 + pr_info("kmalloc(129) = 0x%px\n", 79 79 per_cpu(kmemleak_test_pointer, i)); 80 80 } 81 81 82 - pr_info("__alloc_percpu(64, 4) = %p\n", __alloc_percpu(64, 4)); 82 + pr_info("__alloc_percpu(64, 4) = 0x%px\n", __alloc_percpu(64, 4)); 83 83 84 84 return 0; 85 85 }