]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
of: reserved-memory: Do not make kmemleak ignore freed address
authorZijun Hu <quic_zijuhu@quicinc.com>
Thu, 9 Jan 2025 13:27:01 +0000 (21:27 +0800)
committerRob Herring (Arm) <robh@kernel.org>
Mon, 13 Jan 2025 23:47:29 +0000 (17:47 -0600)
early_init_dt_alloc_reserved_memory_arch() will free address @base when
suffers memblock_mark_nomap() error, but it still makes kmemleak ignore
the freed address @base via kmemleak_ignore_phys().

That is unnecessary, besides, also causes unnecessary warning messages:

kmemleak_ignore_phys()
 -> make_black_object()
    -> paint_ptr()
       -> kmemleak_warn() // warning message here.

Fix by avoiding kmemleak_ignore_phys() when suffer the error.

Fixes: 658aafc8139c ("memblock: exclude MEMBLOCK_NOMAP regions from kmemleak")
Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
Link: https://lore.kernel.org/r/20250109-of_core_fix-v4-10-db8a72415b8c@quicinc.com
Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
drivers/of/of_reserved_mem.c

index d2753756d7c30adcbd52f57338e281c16d821488..03a8f03ed1da165d6d7bf907d931857260888225 100644 (file)
@@ -52,7 +52,8 @@ static int __init early_init_dt_alloc_reserved_memory_arch(phys_addr_t size,
                        memblock_phys_free(base, size);
        }
 
-       kmemleak_ignore_phys(base);
+       if (!err)
+               kmemleak_ignore_phys(base);
 
        return err;
 }