mm/kmemleak: use IS_ERR_PCPU() for pointer in the percpu address space
authorUros Bizjak <ubizjak@gmail.com>
Sun, 18 Aug 2024 21:01:52 +0000 (23:01 +0200)
committerAndrew Morton <akpm@linux-foundation.org>
Wed, 4 Sep 2024 04:15:38 +0000 (21:15 -0700)
Use IS_ERR_PCPU() instead of IS_ERR() for pointers in the percpu address
space.  The patch also fixes following sparse warnings:

kmemleak.c:1063:39: warning: cast removes address space '__percpu' of expression
kmemleak.c:1138:37: warning: cast removes address space '__percpu' of expression

Link: https://lkml.kernel.org/r/20240818210235.33481-2-ubizjak@gmail.com
Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/kmemleak.c

index 6b498c6d9c34a3609c3b74023b897eba68ea2fd0..0400f5e8ac60de555f43d85f1d36f67e48b4ebed 100644 (file)
@@ -1070,8 +1070,8 @@ void __ref kmemleak_alloc_percpu(const void __percpu *ptr, size_t size,
 {
        pr_debug("%s(0x%px, %zu)\n", __func__, ptr, size);
 
-       if (kmemleak_enabled && ptr && !IS_ERR(ptr))
-               create_object_percpu((unsigned long)ptr, size, 1, gfp);
+       if (kmemleak_enabled && ptr && !IS_ERR_PCPU(ptr))
+               create_object_percpu((__force unsigned long)ptr, size, 0, gfp);
 }
 EXPORT_SYMBOL_GPL(kmemleak_alloc_percpu);
 
@@ -1145,8 +1145,8 @@ void __ref kmemleak_free_percpu(const void __percpu *ptr)
 {
        pr_debug("%s(0x%px)\n", __func__, ptr);
 
-       if (kmemleak_free_enabled && ptr && !IS_ERR(ptr))
-               delete_object_full((unsigned long)ptr, OBJECT_PERCPU);
+       if (kmemleak_free_enabled && ptr && !IS_ERR_PCPU(ptr))
+               delete_object_full((__force unsigned long)ptr, OBJECT_PERCPU);
 }
 EXPORT_SYMBOL_GPL(kmemleak_free_percpu);