From 61af983ca48646d9b2eef2a6cc1d3b25562f36e7 Mon Sep 17 00:00:00 2001 From: Sahil Mukund Patki Date: Mon, 7 Aug 2023 05:27:24 +0000 Subject: [PATCH] tsec: fix coverity defect Issue: Unchecked return value for clk_prepare_enable function. Fix: Add check for return value of clk_prepare_enable function and take proper action in case of error. CID 10162292 Bug 3952896 Change-Id: I2f3a75d028fbed2f855b72d2efc9a30844b8c336 Signed-off-by: Sahil Mukund Patki Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/2950809 Reviewed-by: Ketan Patil Reviewed-by: svcacv Reviewed-by: Bharat Nihalani GVS: Gerrit_Virtual_Submit --- drivers/video/tegra/tsec/tsec.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/drivers/video/tegra/tsec/tsec.c b/drivers/video/tegra/tsec/tsec.c index 4fd9bde6..bce55df8 100644 --- a/drivers/video/tegra/tsec/tsec.c +++ b/drivers/video/tegra/tsec/tsec.c @@ -337,7 +337,10 @@ static int tsec_module_init(struct platform_device *dev) clk_set_rate(pdata->clk[TSEC_CLK_INDEX], clk_round_rate(pdata->clk[TSEC_CLK_INDEX], pdata->rate[TSEC_CLK_INDEX])); - clk_prepare_enable(pdata->clk[TSEC_CLK_INDEX]); + if (clk_prepare_enable(pdata->clk[TSEC_CLK_INDEX]) != 0) { + dev_err(&dev->dev, "failed to enable %s clk", TSEC_CLK_NAME); + return -ENXIO; + } /* get EFUSE_CLK and enable it */ pdata->clk[EFUSE_CLK_INDEX] = devm_clk_get(&dev->dev, EFUSE_CLK_NAME); @@ -349,7 +352,11 @@ static int tsec_module_init(struct platform_device *dev) clk_set_rate(pdata->clk[EFUSE_CLK_INDEX], clk_round_rate(pdata->clk[EFUSE_CLK_INDEX], pdata->rate[EFUSE_CLK_INDEX])); - clk_prepare_enable(pdata->clk[EFUSE_CLK_INDEX]); + if (clk_prepare_enable(pdata->clk[EFUSE_CLK_INDEX]) != 0) { + dev_err(&dev->dev, "failed to enable %s clk", EFUSE_CLK_NAME); + clk_disable_unprepare(pdata->clk[TSEC_CLK_INDEX]); + return -ENXIO; + } /* get TSEC_PKA_CLK and enable it */ pdata->clk[TSEC_PKA_CLK_INDEX] = devm_clk_get(&dev->dev, TSEC_PKA_CLK_NAME); @@ -362,7 +369,12 @@ static int tsec_module_init(struct platform_device *dev) clk_set_rate(pdata->clk[TSEC_PKA_CLK_INDEX], clk_round_rate(pdata->clk[TSEC_PKA_CLK_INDEX], pdata->rate[TSEC_PKA_CLK_INDEX])); - clk_prepare_enable(pdata->clk[TSEC_PKA_CLK_INDEX]); + if (clk_prepare_enable(pdata->clk[TSEC_PKA_CLK_INDEX]) != 0) { + dev_err(&dev->dev, "failed to enable %s clk", TSEC_PKA_CLK_NAME); + clk_disable_unprepare(pdata->clk[EFUSE_CLK_INDEX]); + clk_disable_unprepare(pdata->clk[TSEC_CLK_INDEX]); + return -ENXIO; + } /* get reset_control and reset the module */ pdata->reset_control = devm_reset_control_get_exclusive_released(