On Thu Nov 27 00:34:10 2025 +0530, Shaurya Rane wrote:
> Fix a memory leak in usb_keene_probe(). The v4l2 control handler is
> initialized and controls are added, but if v4l2_device_register() or
> video_register_device() fails afterward, the handler was never freed,
> leaking memory.
> 
> Add v4l2_ctrl_handler_free() call in the err_v4l2 error path to ensure
> the control handler is properly freed for all error paths after it is
> initialized.
> 
> Reported-by: [email protected]
> Closes: https://syzkaller.appspot.com/bug?extid=a41b73dce23962a74c72
> Fixes: 1bf20c3a0c61 ("[media] radio-keene: add a driver for the Keene FM 
> Transmitter")
> Cc: [email protected]
> Signed-off-by: Shaurya Rane <[email protected]>
> Signed-off-by: Hans Verkuil <[email protected]>

Patch committed.

Thanks,
Hans Verkuil

 drivers/media/radio/radio-keene.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

---

diff --git a/drivers/media/radio/radio-keene.c 
b/drivers/media/radio/radio-keene.c
index f3b57f0cb1ec..c133305fd019 100644
--- a/drivers/media/radio/radio-keene.c
+++ b/drivers/media/radio/radio-keene.c
@@ -338,7 +338,6 @@ static int usb_keene_probe(struct usb_interface *intf,
        if (hdl->error) {
                retval = hdl->error;
 
-               v4l2_ctrl_handler_free(hdl);
                goto err_v4l2;
        }
        retval = v4l2_device_register(&intf->dev, &radio->v4l2_dev);
@@ -384,6 +383,7 @@ static int usb_keene_probe(struct usb_interface *intf,
 err_vdev:
        v4l2_device_unregister(&radio->v4l2_dev);
 err_v4l2:
+       v4l2_ctrl_handler_free(&radio->hdl);
        kfree(radio->buffer);
        kfree(radio);
 err:
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to