samples: kmemleak: print the raw pointers for debugging purposes
authorCatalin Marinas <catalin.marinas@arm.com>
Thu, 6 Feb 2025 11:45:37 +0000 (11:45 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 17 Mar 2025 05:06:08 +0000 (22:06 -0700)
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

index 544c36d51d5612cf97648d0d779b17bfb1d7308a..8609812a37ebed722aa0b15b4598606fe0d0e945 100644 (file)
@@ -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;
 }