clk_prepare_enable() and clk_prepare() can fail here and
we must check its return value.
Signed-off-by: Arvind Yadav <[email protected]>
---
drivers/misc/atmel-ssc.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/drivers/misc/atmel-ssc.c b/drivers/misc/atmel-ssc.c
index b2a0340..4d2b090 100644
--- a/drivers/misc/atmel-ssc.c
+++ b/drivers/misc/atmel-ssc.c
@@ -30,6 +30,7 @@ struct ssc_device *ssc_request(unsigned int ssc_num)
{
int ssc_valid = 0;
struct ssc_device *ssc;
+ int ret;
spin_lock(&user_lock);
list_for_each_entry(ssc, &ssc_list, list) {
@@ -60,7 +61,11 @@ struct ssc_device *ssc_request(unsigned int ssc_num)
ssc->user++;
spin_unlock(&user_lock);
- clk_prepare(ssc->clk);
+ ret = clk_prepare(ssc->clk);
+ if (ret) {
+ pr_err("Failed to prepare clock\n");
+ return ret;
+ }
return ssc;
}
@@ -195,6 +200,7 @@ static int ssc_probe(struct platform_device *pdev)
struct resource *regs;
struct ssc_device *ssc;
const struct atmel_ssc_platform_data *plat_dat;
+ int ret;
ssc = devm_kzalloc(&pdev->dev, sizeof(struct ssc_device), GFP_KERNEL);
if (!ssc) {
@@ -229,7 +235,9 @@ static int ssc_probe(struct platform_device *pdev)
}
/* disable all interrupts */
- clk_prepare_enable(ssc->clk);
+ ret = clk_prepare_enable(ssc->clk);
+ if (ret)
+ return ret;
ssc_writel(ssc->regs, IDR, -1);
ssc_readl(ssc->regs, SR);
clk_disable_unprepare(ssc->clk);
--
1.9.1
Hi Arvind,
[auto build test WARNING on char-misc/char-misc-testing]
[also build test WARNING on v4.12-rc3 next-20170601]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Arvind-Yadav/misc-atmel-ssc-Handle-return-value-of-clk_prepare_enable-and-clk_prepare/20170601-191011
config: xtensa-allmodconfig (attached as .config)
compiler: xtensa-linux-gcc (GCC) 4.9.0
reproduce:
wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=xtensa
All warnings (new ones prefixed by >>):
drivers/misc/atmel-ssc.c: In function 'ssc_request':
>> drivers/misc/atmel-ssc.c:67:3: warning: return makes pointer from integer without a cast
return ret;
^
vim +67 drivers/misc/atmel-ssc.c
51 spin_unlock(&user_lock);
52 pr_err("ssc: ssc%d platform device is missing\n", ssc_num);
53 return ERR_PTR(-ENODEV);
54 }
55
56 if (ssc->user) {
57 spin_unlock(&user_lock);
58 dev_dbg(&ssc->pdev->dev, "module busy\n");
59 return ERR_PTR(-EBUSY);
60 }
61 ssc->user++;
62 spin_unlock(&user_lock);
63
64 ret = clk_prepare(ssc->clk);
65 if (ret) {
66 pr_err("Failed to prepare clock\n");
> 67 return ret;
68 }
69
70 return ssc;
71 }
72 EXPORT_SYMBOL(ssc_request);
73
74 void ssc_free(struct ssc_device *ssc)
75 {
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation