summaryrefslogtreecommitdiff
path: root/drivers/staging
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2023-02-06 00:53:25 +0300
committerMauro Carvalho Chehab <mchehab@kernel.org>2023-04-15 12:37:33 +0300
commit340b4dd6c183678fc37906e491ed8431c8330c29 (patch)
treef9b37bf9d0db441bf743cb22fd4394393bad9af7 /drivers/staging
parent2726c899fb6d57d1b40c732b3b977445c4fb2400 (diff)
downloadlinux-340b4dd6c183678fc37906e491ed8431c8330c29.tar.xz
media: atomisp: gc0310: Use devm_kzalloc() for data struct
Use devm_kzalloc() to allocate the data struct. It is always free-ed as the last step of probe-error-exit or remove, so it can be devm-managed. This will make unwinding things easier when support is added to the gc0310 code to use standard GPIO APIs instead of the custom atomisp_gmin code. This also allows dropping the out_free label and use direct return on errors. This may seem like a functional change since the out_free label also did a v4l2_device_unregister_subdev() but at the 1 changed return the device is not registered yet, so that always is a no-op and can be dropped. Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/media/atomisp/i2c/atomisp-gc0310.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c
index cc1dba4abaa6..1e6e536027b7 100644
--- a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c
+++ b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c
@@ -546,7 +546,7 @@ static int gc0310_probe(struct i2c_client *client)
int ret;
void *pdata;
- dev = kzalloc(sizeof(*dev), GFP_KERNEL);
+ dev = devm_kzalloc(&client->dev, sizeof(*dev), GFP_KERNEL);
if (!dev)
return -ENOMEM;
@@ -557,10 +557,8 @@ static int gc0310_probe(struct i2c_client *client)
pdata = gmin_camera_platform_data(&dev->sd,
ATOMISP_INPUT_FORMAT_RAW_8,
atomisp_bayer_order_grbg);
- if (!pdata) {
- ret = -EINVAL;
- goto out_free;
- }
+ if (!pdata)
+ return -EINVAL;
pm_runtime_set_suspended(&client->dev);
pm_runtime_enable(&client->dev);
@@ -594,10 +592,6 @@ static int gc0310_probe(struct i2c_client *client)
gc0310_remove(client);
return ret;
-out_free:
- v4l2_device_unregister_subdev(&dev->sd);
- kfree(dev);
- return ret;
}
static int gc0310_suspend(struct device *dev)