From e3b82fb7a25a32977cab867552eda358dd9634b4 Mon Sep 17 00:00:00 2001 From: Oliver Neukum Date: Fri, 5 Jan 2007 17:42:35 +0100 Subject: [PATCH] --- yaml --- r: 46657 b: refs/heads/master c: f38649fee955c19f4df9b9e7267f87702712d973 h: refs/heads/master i: 46655: a79361ff283e3021268db1b7acf3fc94592d483f v: v3 --- [refs] | 2 +- trunk/drivers/usb/image/mdc800.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 458320dbf5a9..00e9a2ee79df 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6f23ee1fefdc1f80bd8a3ab04a1c41ab2dec14c9 +refs/heads/master: f38649fee955c19f4df9b9e7267f87702712d973 diff --git a/trunk/drivers/usb/image/mdc800.c b/trunk/drivers/usb/image/mdc800.c index 63a84bbc310d..d308afd06935 100644 --- a/trunk/drivers/usb/image/mdc800.c +++ b/trunk/drivers/usb/image/mdc800.c @@ -565,11 +565,15 @@ static void mdc800_usb_disconnect (struct usb_interface *intf) usb_deregister_dev(intf, &mdc800_class); + /* must be under lock to make sure no URB + is submitted after usb_kill_urb() */ + mutex_lock(&mdc800->io_lock); mdc800->state=NOT_CONNECTED; usb_kill_urb(mdc800->irq_urb); usb_kill_urb(mdc800->write_urb); usb_kill_urb(mdc800->download_urb); + mutex_unlock(&mdc800->io_lock); mdc800->dev = NULL; usb_set_intfdata(intf, NULL);