diff options
-rw-r--r-- | drivers/hwmon/l3g4200d.c | 4 | ||||
-rw-r--r-- | drivers/hwmon/lsm303dlh_a.c | 6 | ||||
-rw-r--r-- | drivers/hwmon/lsm303dlh_m.c | 10 | ||||
-rw-r--r-- | drivers/hwmon/lsm303dlhc_a.c | 6 |
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; } |