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]

Reply via email to