diff options
author | 2009-03-23 16:53:20 +0100 | |
---|---|---|
committer | 2009-03-23 16:53:20 +0100 | |
commit | efd247fa34084d9b162f485004ae6d8a04059f0c (patch) | |
tree | 417dcbe06d5cce1353a4c19cbda480ae67652b5c /drivers/usb/core/devio.c | |
parent | sched: jiffies not printed per CPU (diff) | |
parent | Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes (diff) | |
download | linux-dev-efd247fa34084d9b162f485004ae6d8a04059f0c.tar.xz linux-dev-efd247fa34084d9b162f485004ae6d8a04059f0c.zip |
Merge branches 'sched/debug' and 'linus' into sched/core
Diffstat (limited to 'drivers/usb/core/devio.c')
-rw-r--r-- | drivers/usb/core/devio.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c index 7513bb083c15..6585f527e381 100644 --- a/drivers/usb/core/devio.c +++ b/drivers/usb/core/devio.c @@ -359,11 +359,6 @@ static void destroy_async(struct dev_state *ps, struct list_head *list) spin_lock_irqsave(&ps->lock, flags); } spin_unlock_irqrestore(&ps->lock, flags); - as = async_getcompleted(ps); - while (as) { - free_async(as); - as = async_getcompleted(ps); - } } static void destroy_async_on_interface(struct dev_state *ps, @@ -643,6 +638,7 @@ static int usbdev_release(struct inode *inode, struct file *file) struct dev_state *ps = file->private_data; struct usb_device *dev = ps->dev; unsigned int ifnum; + struct async *as; usb_lock_device(dev); @@ -661,6 +657,12 @@ static int usbdev_release(struct inode *inode, struct file *file) usb_unlock_device(dev); usb_put_dev(dev); put_pid(ps->disc_pid); + + as = async_getcompleted(ps); + while (as) { + free_async(as); + as = async_getcompleted(ps); + } kfree(ps); return 0; } |