]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
cache: starfive: fix device node leak in starlink_cache_init()
authorFelix Gu <ustc.gu@gmail.com>
Fri, 30 Jan 2026 17:13:45 +0000 (01:13 +0800)
committerConor Dooley <conor.dooley@microchip.com>
Fri, 6 Feb 2026 19:54:27 +0000 (19:54 +0000)
of_find_matching_node() returns a device_node with refcount incremented.

Use __free(device_node) attribute to automatically call of_node_put()
when the variable goes out of scope, preventing the refcount leak.

Fixes: cabff60ca77d ("cache: Add StarFive StarLink cache management")
Signed-off-by: Felix Gu <ustc.gu@gmail.com>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
drivers/cache/starfive_starlink_cache.c

index 24c7d078ca2272851866dec68930d5c978d39eda..3a25d2d7c70ca3d865bcd7fb1d3739a94d0fbda0 100644 (file)
@@ -102,11 +102,11 @@ static const struct of_device_id starlink_cache_ids[] = {
 
 static int __init starlink_cache_init(void)
 {
-       struct device_node *np;
        u32 block_size;
        int ret;
 
-       np = of_find_matching_node(NULL, starlink_cache_ids);
+       struct device_node *np __free(device_node) =
+               of_find_matching_node(NULL, starlink_cache_ids);
        if (!of_device_is_available(np))
                return -ENODEV;