From patchwork Wed Oct 25 13:05:52 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SF Markus Elfring X-Patchwork-Id: 830255 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-i2c-owner@vger.kernel.org; receiver=) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yMVlM0XP6z9t2W for ; Thu, 26 Oct 2017 00:06:39 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750855AbdJYNGh (ORCPT ); Wed, 25 Oct 2017 09:06:37 -0400 Received: from mout.web.de ([212.227.15.3]:63753 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750765AbdJYNGg (ORCPT ); Wed, 25 Oct 2017 09:06:36 -0400 Received: from [192.168.1.2] ([77.181.217.114]) by smtp.web.de (mrweb004 [213.165.67.108]) with ESMTPSA (Nemesis) id 0LtCm3-1dAjXc1IVf-012roS; Wed, 25 Oct 2017 15:05:55 +0200 To: linux-arm-kernel@lists.infradead.org, linux-i2c@vger.kernel.org, linux-samsung-soc@vger.kernel.org, Krzysztof Kozlowski , Kukjin Kim , Wolfram Sang Cc: LKML , kernel-janitors@vger.kernel.org From: SF Markus Elfring Subject: [PATCH] I2C-S3C2410: Use common error handling code in s3c24xx_i2c_probe() Message-ID: <32c82282-ee0a-137f-4913-310b194b60f3@users.sourceforge.net> Date: Wed, 25 Oct 2017 15:05:52 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 Content-Language: en-GB X-Provags-ID: V03:K0:3Qe4Zy0CCp5RjbiPNNAZ03wE4iJ3K9Tz4xSpXgsVmADP332gN4s N/excbyMGzqpaIGcjxYnJqLflhgtP6PB38d9doVimR8GKNoWgD99rBWgYMWiMCk6tIh9vhx BedDvjzC4sZQOTyJ9trRScXrvx/8SPl9flVh9uRkp4heER1sktAa8Sz3aGzkGQXsLY/mhs+ EJrrxVj9R/dlO/4p/6gwA== X-UI-Out-Filterresults: notjunk:1; V01:K0:H/MSjfL2Dwg=:rpFgSoL7Z5F394q8TnTgj/ LotRL/a9v5PmP5Bc/agw2RL3dF7BWgSmertzOAHq7UHX1GhI6oqCU1en5/lXTX2QgkJQMCowx ZCvlrFE6KepKweA2jT04dTu/4ZsZUAy3Pk0aqTj+zuFn4mQcL9rInfDTj3zqLj/pBdZ3I6o7I y/8iVufMDCygXsI7UwkkpjwTAo+biGz+vlz8Xd0/PmxGwHr7y0HibCfj+RbsN6JmuQQWhc5E8 n8HBjIwgKYIEJfY+w5kL7yxlGJ8SN6bjsWKnmqb6aWku4J0qoRPnGQgUwpeP0OrkIpd5H50zd jQ8qPt+pZLE42z/Twl2VMOmw+eF2ihsRu2jfTcadTMrHwa/eH2mT4HCITq9Z9rSId2wKz8XYf jwG8HY0vbeBxZqj5MJnnR4DdKuE4NA05l6H7eyTqpqUsjF98sOIHTRO2i9qWxEFzVnIiVnoiY xnppj4Z5xGGF91O5lvQhDbRtDgwyLHMWr6L/JG8v1Wf/dtMq82vwfBgzCyWfXsZrSMDOTIbUQ Pp/lQxhGrB09wNBMz/YIT3FJ77/M48dg5tWnpOKlwJxoC/2i0ZtxJ1gTGjfdJAoxIMEyCAzYH OP5k8njkg55/Outj5je3Sc2Bq2CcRU04nKsJWMECiQSDzmcUgcz3kSi1imYDrLNu8U3Y5HnK1 QEgn9ZUc8Sn99krHejQlAJ2z4JUNOPqkIopcW1MS56i1MHily96pymMbuPDrFElec+/andRtY A/q02FuwpH8ClYTfbcntwJVpWoQtZfP4R09yBWOKOCaMastbPUSKjGmpydKsxP6e8USfSLFat 8ScrgSzobhCN3yVpPoKzQdu4UYuSuUU/035r5yAga2mpT+DaMA= Sender: linux-i2c-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org From: Markus Elfring Date: Wed, 25 Oct 2017 15:00:35 +0200 Add a jump target so that a bit of exception handling can be better reused at the end of this function. This issue was detected by using the Coccinelle software. Signed-off-by: Markus Elfring --- drivers/i2c/busses/i2c-s3c2410.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c index 5d97510ee48b..304a6d492c8c 100644 --- a/drivers/i2c/busses/i2c-s3c2410.c +++ b/drivers/i2c/busses/i2c-s3c2410.c @@ -1168,8 +1168,7 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev) clk_disable(i2c->clk); if (ret != 0) { dev_err(&pdev->dev, "I2C controller init failed\n"); - clk_unprepare(i2c->clk); - return ret; + goto unprepare_clock; } /* @@ -1180,24 +1179,21 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev) i2c->irq = ret = platform_get_irq(pdev, 0); if (ret <= 0) { dev_err(&pdev->dev, "cannot find IRQ\n"); - clk_unprepare(i2c->clk); - return ret; + goto unprepare_clock; } ret = devm_request_irq(&pdev->dev, i2c->irq, s3c24xx_i2c_irq, 0, dev_name(&pdev->dev), i2c); if (ret != 0) { dev_err(&pdev->dev, "cannot claim IRQ %d\n", i2c->irq); - clk_unprepare(i2c->clk); - return ret; + goto unprepare_clock; } } ret = s3c24xx_i2c_register_cpufreq(i2c); if (ret < 0) { dev_err(&pdev->dev, "failed to register cpufreq notifier\n"); - clk_unprepare(i2c->clk); - return ret; + goto unprepare_clock; } /* @@ -1217,12 +1213,15 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev) if (ret < 0) { pm_runtime_disable(&pdev->dev); s3c24xx_i2c_deregister_cpufreq(i2c); - clk_unprepare(i2c->clk); - return ret; + goto unprepare_clock; } dev_info(&pdev->dev, "%s: S3C I2C adapter\n", dev_name(&i2c->adap.dev)); return 0; + +unprepare_clock: + clk_unprepare(i2c->clk); + return ret; } static int s3c24xx_i2c_remove(struct platform_device *pdev)