diff --git a/drivers/media/i2c/mt9p031.c b/drivers/media/i2c/mt9p031.c index e32833262d32..e0bad594c8da 100644 --- a/drivers/media/i2c/mt9p031.c +++ b/drivers/media/i2c/mt9p031.c @@ -927,7 +927,7 @@ static int mt9p031_probe(struct i2c_client *client, return -EIO; } - mt9p031 = kzalloc(sizeof(*mt9p031), GFP_KERNEL); + mt9p031 = devm_kzalloc(&client->dev, sizeof(*mt9p031), GFP_KERNEL); if (mt9p031 == NULL) return -ENOMEM; @@ -1001,8 +1001,8 @@ static int mt9p031_probe(struct i2c_client *client, mt9p031->format.colorspace = V4L2_COLORSPACE_SRGB; if (pdata->reset != -1) { - ret = gpio_request_one(pdata->reset, GPIOF_OUT_INIT_LOW, - "mt9p031_rst"); + ret = devm_gpio_request_one(&client->dev, pdata->reset, + GPIOF_OUT_INIT_LOW, "mt9p031_rst"); if (ret < 0) goto done; @@ -1013,12 +1013,8 @@ static int mt9p031_probe(struct i2c_client *client, done: if (ret < 0) { - if (mt9p031->reset != -1) - gpio_free(mt9p031->reset); - v4l2_ctrl_handler_free(&mt9p031->ctrls); media_entity_cleanup(&mt9p031->subdev.entity); - kfree(mt9p031); } return ret; @@ -1032,9 +1028,6 @@ static int mt9p031_remove(struct i2c_client *client) v4l2_ctrl_handler_free(&mt9p031->ctrls); v4l2_device_unregister_subdev(subdev); media_entity_cleanup(&subdev->entity); - if (mt9p031->reset != -1) - gpio_free(mt9p031->reset); - kfree(mt9p031); return 0; }