]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: radio-keene: fix memory leak in error path
authorShaurya Rane <ssrane_b23@ee.vjti.ac.in>
Wed, 26 Nov 2025 19:04:10 +0000 (00:34 +0530)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Tue, 13 Jan 2026 12:21:03 +0000 (13:21 +0100)
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: syzbot+a41b73dce23962a74c72@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=a41b73dce23962a74c72
Fixes: 1bf20c3a0c61 ("[media] radio-keene: add a driver for the Keene FM Transmitter")
Cc: stable@vger.kernel.org
Signed-off-by: Shaurya Rane <ssrane_b23@ee.vjti.ac.in>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/media/radio/radio-keene.c

index f3b57f0cb1ec4064aa7e81b1c6425f937ca819de..c133305fd0194a36784bb22ce36b90dae9cf16e3 100644 (file)
@@ -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: