[PATCH] mm/kmemleak: Fix percpu memory leak detection failure

Guo Weikang posted 1 patch 1 year, 1 month ago
mm/kmemleak.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] mm/kmemleak: Fix percpu memory leak detection failure
Posted by Guo Weikang 1 year, 1 month ago
kmemleak_alloc_percpu gives an incorrect min_count parameter, causing
percpu memory to be considered a gray object.

Fixes: 8c8685928910 ("mm/kmemleak: use IS_ERR_PCPU() for pointer in the percpu address space")

Signed-off-by: Guo Weikang <guoweikang.kernel@gmail.com>
---
 mm/kmemleak.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/kmemleak.c b/mm/kmemleak.c
index 238ab733fbea..982bb5ef3233 100644
--- a/mm/kmemleak.c
+++ b/mm/kmemleak.c
@@ -1093,7 +1093,7 @@ 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_PCPU(ptr))
-		create_object_percpu((__force unsigned long)ptr, size, 0, gfp);
+		create_object_percpu((__force unsigned long)ptr, size, 1, gfp);
 }
 EXPORT_SYMBOL_GPL(kmemleak_alloc_percpu);
 
-- 
2.25.1
Re: [PATCH] mm/kmemleak: Fix percpu memory leak detection failure
Posted by Catalin Marinas 1 year, 1 month ago
On Fri, Dec 27, 2024 at 05:23:10PM +0800, Guo Weikang wrote:
> kmemleak_alloc_percpu gives an incorrect min_count parameter, causing
> percpu memory to be considered a gray object.
> 
> Fixes: 8c8685928910 ("mm/kmemleak: use IS_ERR_PCPU() for pointer in the percpu address space")
> 
> Signed-off-by: Guo Weikang <guoweikang.kernel@gmail.com>

Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Re: [PATCH] mm/kmemleak: Fix percpu memory leak detection failure
Posted by Uros Bizjak 1 year, 1 month ago
On Fri, Dec 27, 2024 at 10:23 AM Guo Weikang
<guoweikang.kernel@gmail.com> wrote:
>
> kmemleak_alloc_percpu gives an incorrect min_count parameter, causing
> percpu memory to be considered a gray object.
>
> Fixes: 8c8685928910 ("mm/kmemleak: use IS_ERR_PCPU() for pointer in the percpu address space")
>
> Signed-off-by: Guo Weikang <guoweikang.kernel@gmail.com>

I don't know how 1 turned to 0, the change was definitely unintended.

Acked-by: Uros Bizjak <ubizjak@gmail.com>

Thanks,
Uros.

> ---
>  mm/kmemleak.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/mm/kmemleak.c b/mm/kmemleak.c
> index 238ab733fbea..982bb5ef3233 100644
> --- a/mm/kmemleak.c
> +++ b/mm/kmemleak.c
> @@ -1093,7 +1093,7 @@ 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_PCPU(ptr))
> -               create_object_percpu((__force unsigned long)ptr, size, 0, gfp);
> +               create_object_percpu((__force unsigned long)ptr, size, 1, gfp);
>  }
>  EXPORT_SYMBOL_GPL(kmemleak_alloc_percpu);
>
> --
> 2.25.1
>
Re: [PATCH] mm/kmemleak: Fix percpu memory leak detection failure
Posted by Uros Bizjak 1 year, 1 month ago
On Fri, Dec 27, 2024 at 11:37 AM Uros Bizjak <ubizjak@gmail.com> wrote:
>
> On Fri, Dec 27, 2024 at 10:23 AM Guo Weikang
> <guoweikang.kernel@gmail.com> wrote:
> >
> > kmemleak_alloc_percpu gives an incorrect min_count parameter, causing
> > percpu memory to be considered a gray object.
> >
> > Fixes: 8c8685928910 ("mm/kmemleak: use IS_ERR_PCPU() for pointer in the percpu address space")
> >
> > Signed-off-by: Guo Weikang <guoweikang.kernel@gmail.com>
>
> I don't know how 1 turned to 0, the change was definitely unintended.

Looking at the original patch at [1], it looks like a mismerge to me.

[1] https://lore.kernel.org/all/20240818210235.33481-2-ubizjak@gmail.com/T/#u

Uros.
Re: [PATCH] mm/kmemleak: Fix percpu memory leak detection failure
Posted by Catalin Marinas 1 year, 1 month ago
On Fri, Dec 27, 2024 at 11:42:49AM +0100, Uros Bizjak wrote:
> On Fri, Dec 27, 2024 at 11:37 AM Uros Bizjak <ubizjak@gmail.com> wrote:
> > On Fri, Dec 27, 2024 at 10:23 AM Guo Weikang
> > <guoweikang.kernel@gmail.com> wrote:
> > > kmemleak_alloc_percpu gives an incorrect min_count parameter, causing
> > > percpu memory to be considered a gray object.
> > >
> > > Fixes: 8c8685928910 ("mm/kmemleak: use IS_ERR_PCPU() for pointer in the percpu address space")
> > >
> > > Signed-off-by: Guo Weikang <guoweikang.kernel@gmail.com>
> >
> > I don't know how 1 turned to 0, the change was definitely unintended.
> 
> Looking at the original patch at [1], it looks like a mismerge to me.
> 
> [1] https://lore.kernel.org/all/20240818210235.33481-2-ubizjak@gmail.com/T/#u

About the same time we had commit 6c99d4eb7c5e ("kmemleak: enable
tracking for percpu pointers") increasing min_count to 1 but in the
merge this got lost.

-- 
Catalin