From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751673AbcACIvH (ORCPT ); Sun, 3 Jan 2016 03:51:07 -0500 Received: from mout.web.de ([212.227.17.11]:53176 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751163AbcACIvF (ORCPT ); Sun, 3 Jan 2016 03:51:05 -0500 Subject: [PATCH 1/8] rtc-ab-b5ze-s3: Better exception handling in abb5zes3_probe() To: rtc-linux@googlegroups.com, Alessandro Zummo , Alexandre Belloni References: <566ABCD9.1060404@users.sourceforge.net> <5688DF2D.6090204@users.sourceforge.net> Cc: LKML , kernel-janitors@vger.kernel.org, Julia Lawall From: SF Markus Elfring Message-ID: <5688E0E1.4020502@users.sourceforge.net> Date: Sun, 3 Jan 2016 09:50:41 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0 MIME-Version: 1.0 In-Reply-To: <5688DF2D.6090204@users.sourceforge.net> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:FtJ1dPA6YZxwWvxoy3Q+kqQwV3rbtfUXudoV2SRXsKeMeGsd9lj eM5A9soTSGgYf+NwweMULbJIsZ9wRZciTz3GXdpeCCOXJ9we9TKf0P72XTiKZV4/X3ijGh9 1FzmCAk+ytXHDKUNJTni7nc8ohpf0PJZlZCtUt3WyEB2HiMcj4I87wPMdWKt5GRC+mWSgjr YEcWTSJX59kqZIqpRTIvw== X-UI-Out-Filterresults: notjunk:1;V01:K0:Z0AGJwWI/+E=:bHwULAh70jjIENg6DcOWWp PoM7w24+JT2e+L96zYPigJKARjJoSGxvfn2J3xGd8VdIC5cMyM1XcyH8bGevRUK+n7IhsJn34 rh45TsXeGfyw33hmWNzxEwouCdakxQvISLaWDxpYWM/c+9xaacW8seMJY+DGhMcizzaTqSE3f Wc2Pj6O9q5utNP/+Kki47DXhpeHxhzeMav/YCn7PI7A1I0sR0Tr4ejEEwePdwzS0nroEeilks 9OkzqTl8TeFTAh/UQnzLhb3Upp6X8dgMg/Uvwmp7Bvss82JjiuzzKa2pQodK8sMA5vFubbcy2 ZDPYtJgPUtgk4k1kbxQTi3FfyYnycPlp5zdyOzYLr3CVu9rnw2WclfxCpAqLNLEqJXUmivO3H 9+VsaQZFy6eNr6YrzFIr6anUfqIamlKDQ2Y+2zO4P+x4yXrK/6Yfz3w53Bv+xfiEUW5ics5I7 TmGhKdqyjwHBWOMaCZg562pAgvpg2+sbBC32oNuB3mZ5ej5EIOeeccFL2dFNZuBCKIQNE/f/m WwdDiQD9F2BCizieUpKzfktYulQ8fqNrkerFYdqTSNu7wEQ7aADKH+McSOArTXJDXBnZX6Dee PPhze1L264uoRbgA7sINKXNpcAy2XyticgBBTcvLkBzkQqguz3EQ1ddjJSedzBxONJkCnbRmL xuQSrAQi8SBJuNgOZdLrFiEtpTlQ6Prr+KhHCE7WOyLJDj0m4RIfBoCfCLsCj792tbM5e8UMH MS5y+fm3gY0sxUC39xCZlnBEXQc5z6e+c2LcGe2WF3JE8zzNlwZSfZI/tCITkK4+5CrlSknjA aGfrwI6 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Markus Elfring Date: Sun, 3 Jan 2016 07:07:49 +0100 This issue was detected by using the Coccinelle software. * Return directly before the data structure element "irq" was assigned. * Drop the explicit initialisation for the variable "data" at the beginning then. * Adjust jump targets according to the Linux coding style convention. * Simplify a condition check at the end. Signed-off-by: Markus Elfring --- drivers/rtc/rtc-ab-b5ze-s3.c | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/drivers/rtc/rtc-ab-b5ze-s3.c b/drivers/rtc/rtc-ab-b5ze-s3.c index a319bf1..1291206 100644 --- a/drivers/rtc/rtc-ab-b5ze-s3.c +++ b/drivers/rtc/rtc-ab-b5ze-s3.c @@ -889,35 +889,31 @@ static const struct regmap_config abb5zes3_rtc_regmap_config = { static int abb5zes3_probe(struct i2c_client *client, const struct i2c_device_id *id) { - struct abb5zes3_rtc_data *data = NULL; + struct abb5zes3_rtc_data *data; struct device *dev = &client->dev; struct regmap *regmap; int ret; if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C | I2C_FUNC_SMBUS_BYTE_DATA | - I2C_FUNC_SMBUS_I2C_BLOCK)) { - ret = -ENODEV; - goto err; - } + I2C_FUNC_SMBUS_I2C_BLOCK)) + return -ENODEV; regmap = devm_regmap_init_i2c(client, &abb5zes3_rtc_regmap_config); if (IS_ERR(regmap)) { ret = PTR_ERR(regmap); dev_err(dev, "%s: regmap allocation failed: %d\n", __func__, ret); - goto err; + return ret; } ret = abb5zes3_i2c_validate_chip(regmap); if (ret) - goto err; + return ret; data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); - if (!data) { - ret = -ENOMEM; - goto err; - } + if (!data) + return -ENOMEM; mutex_init(&data->lock); data->regmap = regmap; @@ -925,7 +921,7 @@ static int abb5zes3_probe(struct i2c_client *client, ret = abb5zes3_rtc_check_setup(dev); if (ret) - goto err; + return ret; if (client->irq > 0) { ret = devm_request_threaded_irq(dev, client->irq, NULL, @@ -940,7 +936,7 @@ static int abb5zes3_probe(struct i2c_client *client, } else { dev_err(dev, "%s: irq %d unavailable (%d)\n", __func__, client->irq, ret); - goto err; + return ret; } } @@ -950,7 +946,7 @@ static int abb5zes3_probe(struct i2c_client *client, if (ret) { dev_err(dev, "%s: unable to register RTC device (%d)\n", __func__, ret); - goto err; + goto check_irq; } /* Enable battery low detection interrupt if battery not already low */ @@ -959,12 +955,12 @@ static int abb5zes3_probe(struct i2c_client *client, if (ret) { dev_err(dev, "%s: enabling battery low interrupt " "generation failed (%d)\n", __func__, ret); - goto err; + goto check_irq; } } - -err: - if (ret && data && data->irq) + return 0; +check_irq: + if (data->irq) device_init_wakeup(dev, false); return ret; } -- 2.6.3