clk: mmp: pxa168: Fix memory leak in pxa168_clk_init()
authorKuan-Wei Chiu <visitorckw@gmail.com>
Sun, 10 Dec 2023 17:52:32 +0000 (01:52 +0800)
committerStephen Boyd <sboyd@kernel.org>
Sun, 17 Dec 2023 01:15:06 +0000 (17:15 -0800)
In cases where mapping of mpmu/apmu/apbc registers fails, the code path
does not handle the failure gracefully, potentially leading to a memory
leak. This fix ensures proper cleanup by freeing the allocated memory
for 'pxa_unit' before returning.

Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com>
Link: https://lore.kernel.org/r/20231210175232.3414584-1-visitorckw@gmail.com
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/mmp/clk-of-pxa168.c

index fb0df64cf053c441dda1a7efef66c63edfa40ff7..c5a7ba1deaa3a1d42cd85cf462b7eed79c5d9ba1 100644 (file)
@@ -308,18 +308,21 @@ static void __init pxa168_clk_init(struct device_node *np)
        pxa_unit->mpmu_base = of_iomap(np, 0);
        if (!pxa_unit->mpmu_base) {
                pr_err("failed to map mpmu registers\n");
+               kfree(pxa_unit);
                return;
        }
 
        pxa_unit->apmu_base = of_iomap(np, 1);
        if (!pxa_unit->apmu_base) {
                pr_err("failed to map apmu registers\n");
+               kfree(pxa_unit);
                return;
        }
 
        pxa_unit->apbc_base = of_iomap(np, 2);
        if (!pxa_unit->apbc_base) {
                pr_err("failed to map apbc registers\n");
+               kfree(pxa_unit);
                return;
        }