diff options
author | Zhang Qilong <zhangqilong3@huawei.com> | 2020-11-28 21:39:21 +0800 |
---|---|---|
committer | Marc Kleine-Budde <mkl@pengutronix.de> | 2020-11-30 12:43:55 +0100 |
commit | 44cef0c0ffbd8d61143712ce874be68a273b7884 (patch) | |
tree | 401ac60b5f06beac0212f43b9a2abdc1e1e4bb7f /drivers/net/can/kvaser_pciefd.c | |
parent | can: sun4i_can: sun4i_can_err(): don't count arbitration lose as an error (diff) | |
download | linux-dev-44cef0c0ffbd8d61143712ce874be68a273b7884.tar.xz linux-dev-44cef0c0ffbd8d61143712ce874be68a273b7884.zip |
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>
Diffstat (limited to 'drivers/net/can/kvaser_pciefd.c')
0 files changed, 0 insertions, 0 deletions