Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751381AbdFAIwl (ORCPT ); Thu, 1 Jun 2017 04:52:41 -0400 Received: from mail-it0-f65.google.com ([209.85.214.65]:34953 "EHLO mail-it0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751083AbdFAIwk (ORCPT ); Thu, 1 Jun 2017 04:52:40 -0400 From: Arvind Yadav To: gregkh@linuxfoundation.org, nicolas.ferre@microchip.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] misc: atmel-ssc: Handle return value of clk_prepare_enable and clk_prepare Date: Thu, 1 Jun 2017 14:22:28 +0530 Message-Id: X-Mailer: git-send-email 1.9.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1453 Lines: 54 clk_prepare_enable() and clk_prepare() can fail here and we must check its return value. Signed-off-by: Arvind Yadav --- 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