]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob
92bacf56c985833eb28048887a58755ac6cf7a18
[thirdparty/kernel/stable-queue.git] /
1 From 0ccab5e0d9b824e2df387c27a3be9178d23a19d0 Mon Sep 17 00:00:00 2001
2 From: Sasha Levin <sashal@kernel.org>
3 Date: Fri, 17 Jul 2020 16:04:39 +0800
4 Subject: can: ti_hecc: ti_hecc_probe(): add missed clk_disable_unprepare() in
5 error path
6
7 From: Zhang Changzhong <zhangchangzhong@huawei.com>
8
9 [ Upstream commit e002103b36a695f7cb6048b96da73e66c86ddffb ]
10
11 The driver forgets to call clk_disable_unprepare() in error path after
12 a success calling for clk_prepare_enable().
13
14 Fix it by adding a clk_disable_unprepare() in error path.
15
16 Signed-off-by: Zhang Changzhong <zhangchangzhong@huawei.com>
17 Link: https://lore.kernel.org/r/1594973079-27743-1-git-send-email-zhangchangzhong@huawei.com
18 Fixes: befa60113ce7 ("can: ti_hecc: add missing prepare and unprepare of the clock")
19 Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
20 Signed-off-by: Sasha Levin <sashal@kernel.org>
21 ---
22 drivers/net/can/ti_hecc.c | 8 +++++---
23 1 file changed, 5 insertions(+), 3 deletions(-)
24
25 diff --git a/drivers/net/can/ti_hecc.c b/drivers/net/can/ti_hecc.c
26 index 31ad364a89bbe..d3a7631eecaf2 100644
27 --- a/drivers/net/can/ti_hecc.c
28 +++ b/drivers/net/can/ti_hecc.c
29 @@ -936,7 +936,7 @@ static int ti_hecc_probe(struct platform_device *pdev)
30 err = clk_prepare_enable(priv->clk);
31 if (err) {
32 dev_err(&pdev->dev, "clk_prepare_enable() failed\n");
33 - goto probe_exit_clk;
34 + goto probe_exit_release_clk;
35 }
36
37 priv->offload.mailbox_read = ti_hecc_mailbox_read;
38 @@ -945,7 +945,7 @@ static int ti_hecc_probe(struct platform_device *pdev)
39 err = can_rx_offload_add_timestamp(ndev, &priv->offload);
40 if (err) {
41 dev_err(&pdev->dev, "can_rx_offload_add_timestamp() failed\n");
42 - goto probe_exit_clk;
43 + goto probe_exit_disable_clk;
44 }
45
46 err = register_candev(ndev);
47 @@ -963,7 +963,9 @@ static int ti_hecc_probe(struct platform_device *pdev)
48
49 probe_exit_offload:
50 can_rx_offload_del(&priv->offload);
51 -probe_exit_clk:
52 +probe_exit_disable_clk:
53 + clk_disable_unprepare(priv->clk);
54 +probe_exit_release_clk:
55 clk_put(priv->clk);
56 probe_exit_candev:
57 free_candev(ndev);
58 --
59 2.27.0
60