From: Markus Elfring <[email protected]>
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 <[email protected]>
---
 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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to