diff options
author | Christian Lamparter <chunkeey@web.de> | 2008-12-09 09:14:37 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-12-12 14:01:39 -0500 |
commit | dd397dc9dddfa2149a1bbc9e52ac7d5630737cec (patch) | |
tree | e96caebf6081bbeb70bc8407342989c0bbda4fbf /drivers/net/wireless/p54/p54usb.h | |
parent | a07d3619faeea3f540dd55f86685136f8928b4ad (diff) |
p54usb: rewriting rx/tx routines to make use of usb_anchor's facilities
Alan Stern found several flaws in p54usb's implementation and annotated:
"usb_kill_urb() and similar routines do not expect an URB's completion
routine to deallocate it. This is almost obvious -- if the URB is deallocated
before the completion routine returns then there's no way for usb_kill_urb
to detect when the URB actually is complete."
This patch addresses all known limitations in the old implementation and fixes
khub's "use-after-freed" hang, when SLUB debug's poisoning option is enabled.
Signed-off-by: Christian Lamparter <chunkeey@web.de>
Cc: stable@kernel.org
Tested-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/p54/p54usb.h')
-rw-r--r-- | drivers/net/wireless/p54/p54usb.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/wireless/p54/p54usb.h b/drivers/net/wireless/p54/p54usb.h index 5b8fe91379c3..54ee738bf2af 100644 --- a/drivers/net/wireless/p54/p54usb.h +++ b/drivers/net/wireless/p54/p54usb.h | |||
@@ -133,6 +133,7 @@ struct p54u_priv { | |||
133 | 133 | ||
134 | spinlock_t lock; | 134 | spinlock_t lock; |
135 | struct sk_buff_head rx_queue; | 135 | struct sk_buff_head rx_queue; |
136 | struct usb_anchor submitted; | ||
136 | }; | 137 | }; |
137 | 138 | ||
138 | #endif /* P54USB_H */ | 139 | #endif /* P54USB_H */ |