mtd: hyperbus: rpc-if: Fix RPM imbalance in probe error path
authorGeert Uytterhoeven <geert+renesas@glider.be>
Fri, 17 Jun 2022 09:26:51 +0000 (11:26 +0200)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Fri, 24 Jun 2022 18:47:36 +0000 (20:47 +0200)
If rpcif_hw_init() fails, Runtime PM is left enabled.

Fixes: b04cc0d912eb80d3 ("memory: renesas-rpc-if: Add support for RZ/G2L")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/f3070e1af480cb252ae183d479a593dbbf947685.1655457790.git.geert+renesas@glider.be
drivers/mtd/hyperbus/rpc-if.c

index 15a0be6..d00d302 100644 (file)
@@ -134,7 +134,7 @@ static int rpcif_hb_probe(struct platform_device *pdev)
 
        error = rpcif_hw_init(&hyperbus->rpc, true);
        if (error)
-               return error;
+               goto out_disable_rpm;
 
        hyperbus->hbdev.map.size = hyperbus->rpc.size;
        hyperbus->hbdev.map.virt = hyperbus->rpc.dirmap;
@@ -145,8 +145,12 @@ static int rpcif_hb_probe(struct platform_device *pdev)
        hyperbus->hbdev.np = of_get_next_child(pdev->dev.parent->of_node, NULL);
        error = hyperbus_register_device(&hyperbus->hbdev);
        if (error)
-               rpcif_disable_rpm(&hyperbus->rpc);
+               goto out_disable_rpm;
+
+       return 0;
 
+out_disable_rpm:
+       rpcif_disable_rpm(&hyperbus->rpc);
        return error;
 }