diff options
author | Huajun Li <huajun.li.lee@gmail.com> | 2012-05-18 20:12:51 +0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-06-01 15:15:48 +0800 |
commit | a8467ea0e79ca99f4114e7c64ad6b1adaf2ca7ce (patch) | |
tree | 50e10c399e5d41bbe63f42a4ff0854877d9d1eb4 /drivers/usb/serial | |
parent | fdda49b01c157b6723137040e2033fe92188903c (diff) |
USB: Remove races in devio.c
commit 4e09dcf20f7b5358615514c2ec8584b248ab8874 upstream.
There exist races in devio.c, below is one case,
and there are similar races in destroy_async()
and proc_unlinkurb(). Remove these races.
cancel_bulk_urbs() async_completed()
------------------- -----------------------
spin_unlock(&ps->lock);
list_move_tail(&as->asynclist,
&ps->async_completed);
wake_up(&ps->wait);
Lead to free_async() be triggered,
then urb and 'as' will be freed.
usb_unlink_urb(as->urb);
===> refer to the freed 'as'
Signed-off-by: Huajun Li <huajun.li.lee@gmail.com>
Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: Oncaphillis <oncaphillis@snafu.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/serial')
0 files changed, 0 insertions, 0 deletions