]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
reset: sunxi: fix memory region leak on ioremap failure
authorZhao Dongdong <zhaodongdong@kylinos.cn>
Wed, 17 Jun 2026 03:16:27 +0000 (11:16 +0800)
committerPhilipp Zabel <p.zabel@pengutronix.de>
Wed, 1 Jul 2026 13:08:09 +0000 (15:08 +0200)
In sunxi_reset_init(), when ioremap() fails, the memory region obtained
via request_mem_region() is not released, leading to a resource leak.

Add an err_mem_region label to properly release the memory region before
freeing the data structure.

Fixes: 8f1ae77f4666 ("reset: Add Allwinner SoCs Reset Controller Driver")
Cc: stable@vger.kernel.org
Signed-off-by: Zhao Dongdong <zhaodongdong@kylinos.cn>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
drivers/reset/reset-sunxi.c

index 2544de6576e446caa851618bb586acfc1e47f616..2f6df7707cad1b6653201dbce18a2fe7b76cfcbb 100644 (file)
@@ -44,7 +44,7 @@ static int sunxi_reset_init(struct device_node *np)
        data->membase = ioremap(res.start, size);
        if (!data->membase) {
                ret = -ENOMEM;
-               goto err_alloc;
+               goto err_mem_region;
        }
 
        spin_lock_init(&data->lock);
@@ -57,6 +57,8 @@ static int sunxi_reset_init(struct device_node *np)
 
        return reset_controller_register(&data->rcdev);
 
+err_mem_region:
+       release_mem_region(res.start, size);
 err_alloc:
        kfree(data);
        return ret;