On Wed May 13 16:02:37 2026 +0900, Myeonghun Pak wrote:
> si476x_radio_probe() registers radio->v4l2dev before allocating the V4L2
> controls and before registering the video device. If any of those later
> steps fails, probe returns through the exit label after freeing only the
> control handler.
>
> A failed probe does not call si476x_radio_remove(), so the
> v4l2_device_unregister() there is not reached. This leaves the parent
> device reference taken by v4l2_device_register() behind on the error path.
>
> Unregister the V4L2 device in the probe error path after freeing the
> controls.
>
> Fixes: b879a9c2a755 ("[media] v4l2: Add a V4L2 driver for SI476X MFD")
> Cc: [email protected]
> Co-developed-by: Ijae Kim <[email protected]>
> Signed-off-by: Ijae Kim <[email protected]>
> Signed-off-by: Myeonghun Pak <[email protected]>
> Signed-off-by: Hans Verkuil <[email protected]>
Patch committed.
Thanks,
Hans Verkuil
drivers/media/radio/radio-si476x.c | 1 +
1 file changed, 1 insertion(+)
---
diff --git a/drivers/media/radio/radio-si476x.c
b/drivers/media/radio/radio-si476x.c
index 9980346cb5ea..bfe89782dce4 100644
--- a/drivers/media/radio/radio-si476x.c
+++ b/drivers/media/radio/radio-si476x.c
@@ -1493,6 +1493,7 @@ static int si476x_radio_probe(struct platform_device
*pdev)
return 0;
exit:
v4l2_ctrl_handler_free(radio->videodev.ctrl_handler);
+ v4l2_device_unregister(&radio->v4l2dev);
return rval;
}
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]