summaryrefslogtreecommitdiffstats
path: root/drivers/media/video/gspca/gspca.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2009-03-17 16:21:20 +0100
committerIngo Molnar <mingo@elte.hu>2009-03-17 16:21:20 +0100
commit47239561e39bceefecc3cd67f71fcf86a198a8ff (patch)
tree9823d0973494ea8acabb744bc3aba42b610fb434 /drivers/media/video/gspca/gspca.c
parented681a91ab805341675d166a9592551093c0a2d9 (diff)
parent5bee17f18b595937e6beafeee5197868a3f74a06 (diff)
downloadop-kernel-dev-47239561e39bceefecc3cd67f71fcf86a198a8ff.zip
op-kernel-dev-47239561e39bceefecc3cd67f71fcf86a198a8ff.tar.gz
Merge branch 'linus' into core/printk
Diffstat (limited to 'drivers/media/video/gspca/gspca.c')
-rw-r--r--drivers/media/video/gspca/gspca.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/media/video/gspca/gspca.c b/drivers/media/video/gspca/gspca.c
index 2ed2452..65e4901 100644
--- a/drivers/media/video/gspca/gspca.c
+++ b/drivers/media/video/gspca/gspca.c
@@ -422,6 +422,7 @@ static void destroy_urbs(struct gspca_dev *gspca_dev)
if (urb == NULL)
break;
+ BUG_ON(!gspca_dev->dev);
gspca_dev->urb[i] = NULL;
if (!gspca_dev->present)
usb_kill_urb(urb);
@@ -1950,8 +1951,12 @@ void gspca_disconnect(struct usb_interface *intf)
{
struct gspca_dev *gspca_dev = usb_get_intfdata(intf);
+ mutex_lock(&gspca_dev->usb_lock);
gspca_dev->present = 0;
+ mutex_unlock(&gspca_dev->usb_lock);
+ destroy_urbs(gspca_dev);
+ gspca_dev->dev = NULL;
usb_set_intfdata(intf, NULL);
/* release the device */
OpenPOWER on IntegriCloud