]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
can: c_can: fix unbalanced runtime PM disable in error path
authorKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Sun, 12 Jan 2025 12:41:52 +0000 (13:41 +0100)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Sat, 8 Feb 2025 11:41:35 +0000 (12:41 +0100)
Runtime PM is enabled as one of the last steps of probe(), so all
earlier gotos to "exit_free_device" label were not correct and were
leading to unbalanced runtime PM disable depth.

Fixes: 6e2fe01dd6f9 ("can: c_can: move runtime PM enable/disable to c_can_platform")
Cc: stable@vger.kernel.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Link: https://patch.msgid.link/20250112-syscon-phandle-args-can-v1-1-314d9549906f@linaro.org
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/c_can/c_can_platform.c

index 6cba9717a6d87db3d779a31afd6966162094f452..399844809bbeaad42e19b4003b85fc487b01d336 100644 (file)
@@ -385,15 +385,16 @@ static int c_can_plat_probe(struct platform_device *pdev)
        if (ret) {
                dev_err(&pdev->dev, "registering %s failed (err=%d)\n",
                        KBUILD_MODNAME, ret);
-               goto exit_free_device;
+               goto exit_pm_runtime;
        }
 
        dev_info(&pdev->dev, "%s device registered (regs=%p, irq=%d)\n",
                 KBUILD_MODNAME, priv->base, dev->irq);
        return 0;
 
-exit_free_device:
+exit_pm_runtime:
        pm_runtime_disable(priv->device);
+exit_free_device:
        free_c_can_dev(dev);
 exit:
        dev_err(&pdev->dev, "probe failed\n");