summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsrinidhi kasagar <srinidhi.kasagar@stericsson.com>2012-01-12 17:50:01 +0530
committerPhilippe Langlais <philippe.langlais@stericsson.com>2012-05-22 11:06:12 +0200
commitba644aea2dd062c6ce7fab6a0a2e825ed3bc1f6e (patch)
treed771516ed15f1099794e808d76b182a262014c00
parent654b71a446e238a8fb1c80749ed083f9b4d74e82 (diff)
hwmon: l3g4200,lsm303x: fix up the error handling
handle the errors properly. ST-Ericsson ID: 370799 ST-Ericsson FOSS-OUT ID: Trivial ST-Ericsson Linux next: N/A Signed-off-by: srinidhi kasagar <srinidhi.kasagar@stericsson.com> Change-Id: I74d3f2e159bba9847fc4aab6287d23d38fb722e8 Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/45272 Reviewed-by: QATOOLS Reviewed-by: Naga RADHESH Y <naga.radheshy@stericsson.com> Reviewed-by: QABUILD
-rw-r--r--drivers/hwmon/l3g4200d.c4
-rw-r--r--drivers/hwmon/lsm303dlh_a.c6
-rw-r--r--drivers/hwmon/lsm303dlh_m.c10
-rw-r--r--drivers/hwmon/lsm303dlhc_a.c6
4 files changed, 20 insertions, 6 deletions
diff --git a/drivers/hwmon/l3g4200d.c b/drivers/hwmon/l3g4200d.c
index ffe3e1a9730..ad7d9ee6e05 100644
--- a/drivers/hwmon/l3g4200d.c
+++ b/drivers/hwmon/l3g4200d.c
@@ -458,8 +458,9 @@ static int __devinit l3g4200d_probe(struct i2c_client *client,
ddata = kzalloc(sizeof(struct l3g4200d_data), GFP_KERNEL);
if (ddata == NULL) {
+ dev_err(&client->dev, "memory alocation failed\n");
ret = -ENOMEM;
- goto error_op_failed;
+ goto exit;
}
ddata->client = client;
@@ -479,6 +480,7 @@ static int __devinit l3g4200d_probe(struct i2c_client *client,
dev_err(&client->dev, "failed to get regulator\n");
ret = PTR_ERR(ddata->regulator);
ddata->regulator = NULL;
+ goto error_op_failed;
}
if (ddata->regulator) {
diff --git a/drivers/hwmon/lsm303dlh_a.c b/drivers/hwmon/lsm303dlh_a.c
index a6e724facc3..22600c550f9 100644
--- a/drivers/hwmon/lsm303dlh_a.c
+++ b/drivers/hwmon/lsm303dlh_a.c
@@ -1083,8 +1083,9 @@ static int __devinit lsm303dlh_a_probe(struct i2c_client *client,
ddata = kzalloc(sizeof(struct lsm303dlh_a_data), GFP_KERNEL);
if (ddata == NULL) {
+ dev_err(&client->dev, "memory alocation failed\n");
ret = -ENOMEM;
- goto err_op_failed;
+ goto err_alloc;
}
ddata->client = client;
@@ -1105,6 +1106,7 @@ static int __devinit lsm303dlh_a_probe(struct i2c_client *client,
dev_err(&client->dev, "failed to get regulator\n");
ret = PTR_ERR(ddata->regulator);
ddata->regulator = NULL;
+ goto err_op_failed;
}
if (ddata->regulator) {
@@ -1237,8 +1239,10 @@ exit_free_regulator:
regulator_put(ddata->regulator);
ddata->device_status = DEVICE_OFF;
}
+
err_op_failed:
kfree(ddata);
+err_alloc:
dev_err(&client->dev, "probe function fails %x", ret);
return ret;
}
diff --git a/drivers/hwmon/lsm303dlh_m.c b/drivers/hwmon/lsm303dlh_m.c
index 11815e3470f..270e532f78b 100644
--- a/drivers/hwmon/lsm303dlh_m.c
+++ b/drivers/hwmon/lsm303dlh_m.c
@@ -671,8 +671,9 @@ static int __devinit lsm303dlh_m_probe(struct i2c_client *client,
ddata = kzalloc(sizeof(struct lsm303dlh_m_data), GFP_KERNEL);
if (ddata == NULL) {
+ dev_err(&client->dev, "memory alocation failed\n");
ret = -ENOMEM;
- goto err_op_failed;
+ goto err_alloc;
}
ddata->client = client;
@@ -691,12 +692,13 @@ static int __devinit lsm303dlh_m_probe(struct i2c_client *client,
ddata->gain[ddata->pdata.axis_map_z] = Z_GAIN_1_3;
ddata->device_status = DEVICE_OFF;
dev_set_name(&client->dev, ddata->pdata.name_m);
- ddata->regulator = regulator_get(&client->dev, "vdd");
+ ddata->regulator = regulator_get(&client->dev, "vdd");
if (IS_ERR(ddata->regulator)) {
dev_err(&client->dev, "failed to get regulator\n");
ret = PTR_ERR(ddata->regulator);
ddata->regulator = NULL;
+ goto err_op_failed;
}
if (ddata->regulator) {
@@ -790,9 +792,11 @@ exit_free_regulator:
regulator_put(ddata->regulator);
ddata->device_status = DEVICE_OFF;
}
+
err_op_failed:
- dev_err(&client->dev, "lsm303dlh_m_probe failed %x", ret);
kfree(ddata);
+err_alloc:
+ dev_err(&client->dev, "lsm303dlh_m_probe failed %x", ret);
return ret;
}
diff --git a/drivers/hwmon/lsm303dlhc_a.c b/drivers/hwmon/lsm303dlhc_a.c
index f4012442b68..cf00ce9d50b 100644
--- a/drivers/hwmon/lsm303dlhc_a.c
+++ b/drivers/hwmon/lsm303dlhc_a.c
@@ -506,8 +506,9 @@ static int __devinit lsm303dlhc_a_probe(struct i2c_client *client,
adata = kzalloc(sizeof(struct lsm303dlhc_a_data), GFP_KERNEL);
if (adata == NULL) {
+ dev_err(&client->dev, "memory alocation failed\n");
ret = -ENOMEM;
- goto err_op_failed;
+ goto err_alloc;
}
adata->client = client;
@@ -526,6 +527,7 @@ static int __devinit lsm303dlhc_a_probe(struct i2c_client *client,
dev_err(&client->dev, "failed to get regulator\n");
ret = PTR_ERR(adata->regulator);
adata->regulator = NULL;
+ goto err_op_failed;
}
if (adata->regulator) {
@@ -573,8 +575,10 @@ exit_free_regulator:
regulator_put(adata->regulator);
adata->device_status = DEVICE_OFF;
}
+
err_op_failed:
kfree(adata);
+err_alloc:
dev_err(&client->dev, "probe function fails %x", ret);
return ret;
}