2020-05-22 09:48:28

by Dinghao Liu

[permalink] [raw]
Subject: [PATCH] can: flexcan: Fix runtime PM imbalance on error

When register_flexcandev() returns an error code, a
pairing runtime PM usage counter decrement is needed
to keep the counter balanced.

Also, call pm_runtime_disable() when register_flexcandev()
returns an error code.

Signed-off-by: Dinghao Liu <[email protected]>
---
drivers/net/can/flexcan.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
index 94d10ec954a0..ea193426e5ae 100644
--- a/drivers/net/can/flexcan.c
+++ b/drivers/net/can/flexcan.c
@@ -1666,6 +1666,8 @@ static int flexcan_probe(struct platform_device *pdev)
return 0;

failed_register:
+ pm_runtime_put_noidle(&pdev->dev);
+ pm_runtime_disable(&pdev->dev);
free_candev(dev);
return err;
}
--
2.17.1


2020-05-25 01:40:29

by Joakim Zhang

[permalink] [raw]
Subject: RE: [PATCH] can: flexcan: Fix runtime PM imbalance on error


> -----Original Message-----
> From: [email protected] <[email protected]>
> On Behalf Of Dinghao Liu
> Sent: 2020??5??22?? 17:44
> To: [email protected]; [email protected]
> Cc: Wolfgang Grandegger <[email protected]>; Marc Kleine-Budde
> <[email protected]>; David S. Miller <[email protected]>; Jakub
> Kicinski <[email protected]>; [email protected];
> [email protected]; [email protected]
> Subject: [PATCH] can: flexcan: Fix runtime PM imbalance on error
>
> When register_flexcandev() returns an error code, a pairing runtime PM
> usage counter decrement is needed to keep the counter balanced.
>
> Also, call pm_runtime_disable() when register_flexcandev() returns an error
> code.
>
> Signed-off-by: Dinghao Liu <[email protected]>

A patch has already been sent out to fix this issue:
https://www.spinics.net/lists/linux-can/msg03052.html

Reviewed-by: Joakim Zhang <[email protected]>

Best Regards,
Joakim Zhang
> ---
> drivers/net/can/flexcan.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c index
> 94d10ec954a0..ea193426e5ae 100644
> --- a/drivers/net/can/flexcan.c
> +++ b/drivers/net/can/flexcan.c
> @@ -1666,6 +1666,8 @@ static int flexcan_probe(struct platform_device
> *pdev)
> return 0;
>
> failed_register:
> + pm_runtime_put_noidle(&pdev->dev);
> + pm_runtime_disable(&pdev->dev);
> free_candev(dev);
> return err;
> }
> --
> 2.17.1