Message ID | cb2b3be8181a11c9d102bd2e7d4088e87f939e4d.1496302242.git.arvind.yadav.cs@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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
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);
clk_prepare_enable() and clk_prepare() can fail here and we must check its return value. Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com> --- drivers/misc/atmel-ssc.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)