summaryrefslogtreecommitdiff
path: root/drivers/hwmon/lsm303dlhc_a.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/hwmon/lsm303dlhc_a.c')
-rw-r--r--drivers/hwmon/lsm303dlhc_a.c6
1 files changed, 5 insertions, 1 deletions
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;
}