can: c_can: c_can_power_up(): fix error handling
authorZhang Qilong <zhangqilong3@huawei.com>
Sat, 28 Nov 2020 13:39:21 +0000 (21:39 +0800)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Mon, 30 Nov 2020 11:43:55 +0000 (12:43 +0100)
commit44cef0c0ffbd8d61143712ce874be68a273b7884
tree401ac60b5f06beac0212f43b9a2abdc1e1e4bb7f
parentc2d095eff797813461a426b97242e3ffc50e4134
can: c_can: c_can_power_up(): fix error handling

In the error handling in c_can_power_up(), there are two bugs:

1) c_can_pm_runtime_get_sync() will increase usage counter if device is not
   empty. Forgetting to call c_can_pm_runtime_put_sync() will result in a
   reference leak here.

2) c_can_reset_ram() operation will set start bit when enable is true. We
   should clear it in the error handling.

We fix it by adding c_can_pm_runtime_put_sync() for 1), and
c_can_reset_ram(enable is false) for 2) in the error handling.

Fixes: 8212003260c60 ("can: c_can: Add d_can suspend resume support")
Fixes: 52cde85acc23f ("can: c_can: Add d_can raminit support")
Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
Link: https://lore.kernel.org/r/20201128133922.3276973-2-zhangqilong3@huawei.com
[mkl: return "0" instead of "ret"]
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/c_can/c_can.c