media: tm6000: Fix memleak in tm6000_start_stream
authorDinghao Liu <dinghao.liu@zju.edu.cn>
Sat, 2 Jan 2021 08:26:37 +0000 (09:26 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Tue, 12 Jan 2021 17:22:17 +0000 (18:22 +0100)
When usb_clear_halt() fails, dvb->bulk_urb->transfer_buffer
and dvb->bulk_urb should be freed just like when
usb_submit_urb() fails.

Fixes: 3169c9b26fffa ("V4L/DVB (12788): tm6000: Add initial DVB-T support")
Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/usb/tm6000/tm6000-dvb.c

index 19c90fa..293a460 100644 (file)
@@ -141,6 +141,10 @@ static int tm6000_start_stream(struct tm6000_core *dev)
        if (ret < 0) {
                printk(KERN_ERR "tm6000: error %i in %s during pipe reset\n",
                                                        ret, __func__);
+
+               kfree(dvb->bulk_urb->transfer_buffer);
+               usb_free_urb(dvb->bulk_urb);
+               dvb->bulk_urb = NULL;
                return ret;
        } else
                printk(KERN_ERR "tm6000: pipe reset\n");