diff options
author | Larry Finger <Larry.Finger@lwfinger.net> | 2008-12-10 00:34:27 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-12-12 14:02:06 -0500 |
commit | c1db52b9d27ee6e15a7136e67e4a21dc916cd07f (patch) | |
tree | ecccf2807efe8e2f50e0a71b6a66751f17b8f16b /drivers/net/wireless/rtl818x/rtl8187.h | |
parent | 388cdf31db6dfc3d175786a76989266380e12c26 (diff) |
rtl8187: Use usb anchor facilities to manage urbs
When SLUB debugging is enabled in the kernel, and the boot command includes
the option "slub_debug=P", rtl8187 encounters a GPF due to a read-after-free
of a urb.
Following the example of changes in p54usb to fix the same problem, the code
has been modified to use the usb_anchor_urb() method. With this change, the
USB core handles the freeing of urb's.
This patch fixes the problem reported in Kernel Bugzilla #12185
(http://bugzilla.kernel.org/show_bug.cgi?id=12185).
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Tested-by: Hin-Tak Leung <htl10@users.sourceforge.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rtl818x/rtl8187.h')
-rw-r--r-- | drivers/net/wireless/rtl818x/rtl8187.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/wireless/rtl818x/rtl8187.h b/drivers/net/wireless/rtl818x/rtl8187.h index c385407a9941..3b1e1c2aad26 100644 --- a/drivers/net/wireless/rtl818x/rtl8187.h +++ b/drivers/net/wireless/rtl818x/rtl8187.h | |||
@@ -99,6 +99,7 @@ struct rtl8187_priv { | |||
99 | struct ieee80211_supported_band band; | 99 | struct ieee80211_supported_band band; |
100 | struct usb_device *udev; | 100 | struct usb_device *udev; |
101 | u32 rx_conf; | 101 | u32 rx_conf; |
102 | struct usb_anchor anchored; | ||
102 | u16 txpwr_base; | 103 | u16 txpwr_base; |
103 | u8 asic_rev; | 104 | u8 asic_rev; |
104 | u8 is_rtl8187b; | 105 | u8 is_rtl8187b; |
@@ -115,7 +116,6 @@ struct rtl8187_priv { | |||
115 | u8 aifsn[4]; | 116 | u8 aifsn[4]; |
116 | struct { | 117 | struct { |
117 | __le64 buf; | 118 | __le64 buf; |
118 | struct urb *urb; | ||
119 | struct sk_buff_head queue; | 119 | struct sk_buff_head queue; |
120 | } b_tx_status; | 120 | } b_tx_status; |
121 | }; | 121 | }; |