Commit 2fd9c2ea authored by Jean-Francois Moine's avatar Jean-Francois Moine Committed by Mauro Carvalho Chehab

V4L/DVB (10385): gspca - main: Fix memory leak when USB disconnection while streaming.

Resetting the streaming flag on disconnection prevented the URBs to be freed
when streaming was active.
Also, USBs cannot be killed after disconnection (oops in [usbcore] unlink1).
Signed-off-by: default avatarJean-Francois Moine <moinejf@free.fr>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 9c06210b
...@@ -423,7 +423,8 @@ static void destroy_urbs(struct gspca_dev *gspca_dev) ...@@ -423,7 +423,8 @@ static void destroy_urbs(struct gspca_dev *gspca_dev)
break; break;
gspca_dev->urb[i] = NULL; gspca_dev->urb[i] = NULL;
usb_kill_urb(urb); if (!gspca_dev->present)
usb_kill_urb(urb);
if (urb->transfer_buffer != NULL) if (urb->transfer_buffer != NULL)
usb_buffer_free(gspca_dev->dev, usb_buffer_free(gspca_dev->dev,
urb->transfer_buffer_length, urb->transfer_buffer_length,
...@@ -1950,7 +1951,6 @@ void gspca_disconnect(struct usb_interface *intf) ...@@ -1950,7 +1951,6 @@ void gspca_disconnect(struct usb_interface *intf)
struct gspca_dev *gspca_dev = usb_get_intfdata(intf); struct gspca_dev *gspca_dev = usb_get_intfdata(intf);
gspca_dev->present = 0; gspca_dev->present = 0;
gspca_dev->streaming = 0;
usb_set_intfdata(intf, NULL); usb_set_intfdata(intf, NULL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment