Skip to content

Commit 662786a

Browse files
khoroshilovWolfram Sang
authored and
Wolfram Sang
committed
i2c: axxia: disable clks in case of failure in probe
axxia_i2c_probe() does not disable clock in case of failure in i2c_add_adapter(). Also it ignores returned value from clk_prepare_enable(). Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Alexey Khoroshilov <[email protected]> Signed-off-by: Wolfram Sang <[email protected]>
1 parent 70121f7 commit 662786a

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

drivers/i2c/busses/i2c-axxia.c

+12-2
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,11 @@ static int axxia_i2c_probe(struct platform_device *pdev)
545545
return ret;
546546
}
547547

548-
clk_prepare_enable(idev->i2c_clk);
548+
ret = clk_prepare_enable(idev->i2c_clk);
549+
if (ret) {
550+
dev_err(&pdev->dev, "failed to enable clock\n");
551+
return ret;
552+
}
549553

550554
i2c_set_adapdata(&idev->adapter, idev);
551555
strlcpy(idev->adapter.name, pdev->name, sizeof(idev->adapter.name));
@@ -558,7 +562,13 @@ static int axxia_i2c_probe(struct platform_device *pdev)
558562

559563
platform_set_drvdata(pdev, idev);
560564

561-
return i2c_add_adapter(&idev->adapter);
565+
ret = i2c_add_adapter(&idev->adapter);
566+
if (ret) {
567+
clk_disable_unprepare(idev->i2c_clk);
568+
return ret;
569+
}
570+
571+
return 0;
562572
}
563573

564574
static int axxia_i2c_remove(struct platform_device *pdev)

0 commit comments

Comments
 (0)