Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932626AbcDYNjK (ORCPT ); Mon, 25 Apr 2016 09:39:10 -0400 Received: from hqemgate16.nvidia.com ([216.228.121.65]:1243 "EHLO hqemgate16.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932231AbcDYNjI (ORCPT ); Mon, 25 Apr 2016 09:39:08 -0400 X-PGP-Universal: processed; by hqnvupgp08.nvidia.com on Mon, 25 Apr 2016 06:38:49 -0700 From: Shardar Shariff Md To: , , , , , , , , CC: Shardar Shariff Md Subject: [PATCH v7 1/4] i2c: tegra: disable clock before returning error Date: Mon, 25 Apr 2016 19:08:36 +0530 Message-ID: <1461591519-24602-1-git-send-email-smohammed@nvidia.com> X-Mailer: git-send-email 1.8.1.5 MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1172 Lines: 49 Disable clock before returning error in tegra_i2c_init() as its leaves i2c clock ON in case of error and never turns off again as it will have unbalanced clock enable/disable Signed-off-by: Shardar Shariff Md --- Changes in v5: - Move current patch as separate patch Changes in v6: - Remove unnecessary line Changes in v7 - Updated commit message with description of issue --- drivers/i2c/busses/i2c-tegra.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c index d764d64..445398c3 100644 --- a/drivers/i2c/busses/i2c-tegra.c +++ b/drivers/i2c/busses/i2c-tegra.c @@ -483,19 +483,20 @@ static int tegra_i2c_init(struct tegra_i2c_dev *i2c_dev) if (time_after(jiffies, timeout)) { dev_warn(i2c_dev->dev, "timeout waiting for config load\n"); - return -ETIMEDOUT; + err = -ETIMEDOUT; + goto err; } msleep(1); } } - tegra_i2c_clock_disable(i2c_dev); - if (i2c_dev->irq_disabled) { i2c_dev->irq_disabled = 0; enable_irq(i2c_dev->irq); } +err: + tegra_i2c_clock_disable(i2c_dev); return err; } -- 1.8.1.5