diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2013-11-29 01:51:23 +0100 |
---|---|---|
committer | Wolfram Sang <wsa@the-dreams.de> | 2014-01-03 17:40:20 +0100 |
commit | bc12cfc87f1028d1b22ad97e3b7be8914d253c48 (patch) | |
tree | 07bce6403d70c5695c7c985a2230c7e16901ab82 /drivers/i2c | |
parent | 4b9b00734b0ae64f49753e246e9c754009e08278 (diff) |
i2c: pca954x: Use devm_kzalloc managed allocator
This simplifies error and removal paths.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/muxes/i2c-mux-pca954x.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/drivers/i2c/muxes/i2c-mux-pca954x.c b/drivers/i2c/muxes/i2c-mux-pca954x.c index ce740f1e027b..2880c38543de 100644 --- a/drivers/i2c/muxes/i2c-mux-pca954x.c +++ b/drivers/i2c/muxes/i2c-mux-pca954x.c @@ -187,16 +187,14 @@ static int pca954x_probe(struct i2c_client *client, struct pca954x_platform_data *pdata = dev_get_platdata(&client->dev); int num, force, class; struct pca954x *data; - int ret = -ENODEV; + int ret; if (!i2c_check_functionality(adap, I2C_FUNC_SMBUS_BYTE)) - goto err; + return -ENODEV; - data = kzalloc(sizeof(struct pca954x), GFP_KERNEL); - if (!data) { - ret = -ENOMEM; - goto err; - } + data = devm_kzalloc(&client->dev, sizeof(struct pca954x), GFP_KERNEL); + if (!data) + return -ENOMEM; i2c_set_clientdata(client, data); @@ -206,7 +204,7 @@ static int pca954x_probe(struct i2c_client *client, */ if (i2c_smbus_write_byte(client, 0) < 0) { dev_warn(&client->dev, "probe failed\n"); - goto exit_free; + return -ENODEV; } data->type = id->driver_data; @@ -251,9 +249,6 @@ static int pca954x_probe(struct i2c_client *client, virt_reg_failed: for (num--; num >= 0; num--) i2c_del_mux_adapter(data->virt_adaps[num]); -exit_free: - kfree(data); -err: return ret; } @@ -269,7 +264,6 @@ static int pca954x_remove(struct i2c_client *client) data->virt_adaps[i] = NULL; } - kfree(data); return 0; } |