Re: [PATCH v1] media: atomisp: ov2722: Return after failed pad initialization
From: Dan Carpenter
Date: Tue Sep 15 2026 - 14:11:28 EST
On Tue, Sep 15, 2026 at 07:38:28PM +0530, Punnay Sharma wrote:
> If media_entity_pads_init() fails, ov2722_probe() calls
> ov2722_remove(), which frees the device structure. The probe then
> continues into atomisp_register_i2c_module() with a pointer to the
> freed subdevice, causing a use-after-free.
>
> Return the original error immediately after cleanup to prevent
> registration from accessing the freed device.
>
> Signed-off-by: Punnay Sharma <punnaysharma805@xxxxxxxxx>
This needs a Fixes tag.
> ---
> drivers/staging/media/atomisp/i2c/atomisp-ov2722.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/staging/media/atomisp/i2c/atomisp-ov2722.c b/drivers/staging/media/atomisp/i2c/atomisp-ov2722.c
> index 2c41c496daa6..0748247ca42c 100644
> --- a/drivers/staging/media/atomisp/i2c/atomisp-ov2722.c
> +++ b/drivers/staging/media/atomisp/i2c/atomisp-ov2722.c
> @@ -979,8 +979,10 @@ static int ov2722_probe(struct i2c_client *client)
> dev->sd.entity.function = MEDIA_ENT_F_CAM_SENSOR;
>
> ret = media_entity_pads_init(&dev->sd.entity, 1, &dev->pad);
> - if (ret)
> + if (ret) {
> ov2722_remove(client);
> + return ret;
> + }
>
> return atomisp_register_i2c_module(&dev->sd, ovpdev);
The bug you are describing is real and your patch fixes it, but
this isn't a complete fix. For example, there is no cleanup if
atomisp_register_i2c_module() fails.
regards,
dan carpenter