Commit 662786a5 authored by Alexey Khoroshilov's avatar Alexey Khoroshilov Committed by Wolfram Sang
Browse files

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: default avatarAlexey Khoroshilov <khoroshilov@ispras.ru>
Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
parent 70121f7f
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -545,7 +545,11 @@ static int axxia_i2c_probe(struct platform_device *pdev)
		return ret;
	}

	clk_prepare_enable(idev->i2c_clk);
	ret = clk_prepare_enable(idev->i2c_clk);
	if (ret) {
		dev_err(&pdev->dev, "failed to enable clock\n");
		return ret;
	}

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

	platform_set_drvdata(pdev, idev);

	return i2c_add_adapter(&idev->adapter);
	ret = i2c_add_adapter(&idev->adapter);
	if (ret) {
		clk_disable_unprepare(idev->i2c_clk);
		return ret;
	}

	return 0;
}

static int axxia_i2c_remove(struct platform_device *pdev)