diff options
author | Hans de Goede <hdegoede@redhat.com> | 2023-02-05 21:53:25 +0000 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@kernel.org> | 2023-04-15 10:37:33 +0100 |
commit | 340b4dd6c183678fc37906e491ed8431c8330c29 (patch) | |
tree | f9b37bf9d0db441bf743cb22fd4394393bad9af7 /drivers/staging | |
parent | 2726c899fb6d57d1b40c732b3b977445c4fb2400 (diff) |
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.c | 12 |
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) |