diff options
author | Daniel Drake <dsd@gentoo.org> | 2006-11-30 19:56:50 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2006-12-05 19:31:32 -0500 |
commit | 383956a9c59157db4c404d1c8bb9074b8dfe3ee0 (patch) | |
tree | b14227d5f78f9e7fd79a2fd0dba327313f5d0837 /drivers | |
parent | e62438630ca37539c8cc1553710bbfaa3cf960a7 (diff) |
[PATCH] zd1211rw: zd_mac_rx isn't always called in IRQ context
e.g.
usb 1-7: rx_urb_complete() *** first fragment ***
usb 1-7: rx_urb_complete() *** second fragment ***
drivers/net/wireless/zd1211rw/zd_mac.c:1063 ASSERT
(((current_thread_info()->preempt_count) & (((1UL << (12))-1) << ((0 +
8) + 8)))) VIOLATED!
[<f0299448>] zd_mac_rx+0x3e7/0x47a [zd1211rw]
[<f029badc>] rx_urb_complete+0x22d/0x24a [zd1211rw]
[<b028a22f>] urb_destroy+0x0/0x5
[<b01f0930>] kref_put+0x65/0x72
[<b0288cdf>] usb_hcd_giveback_urb+0x28/0x57
[<b02950c4>] qh_completions+0x296/0x2f6
[<b0294b21>] ehci_urb_done+0x70/0x7a
[<b0294ea1>] qh_completions+0x73/0x2f6
[<b02951bc>] ehci_work+0x98/0x538
Remove the bogus assertion, and use dev_kfree_skb_any as pointed out by
Ulrich Kunitz.
Signed-off-by: Daniel Drake <dsd@gentoo.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/zd1211rw/zd_mac.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/net/wireless/zd1211rw/zd_mac.c b/drivers/net/wireless/zd1211rw/zd_mac.c index 2696f95b9278..d7a86b188a99 100644 --- a/drivers/net/wireless/zd1211rw/zd_mac.c +++ b/drivers/net/wireless/zd1211rw/zd_mac.c | |||
@@ -1059,10 +1059,8 @@ int zd_mac_rx(struct zd_mac *mac, const u8 *buffer, unsigned int length) | |||
1059 | memcpy(skb_put(skb, length), buffer, length); | 1059 | memcpy(skb_put(skb, length), buffer, length); |
1060 | 1060 | ||
1061 | r = ieee80211_rx(ieee, skb, &stats); | 1061 | r = ieee80211_rx(ieee, skb, &stats); |
1062 | if (!r) { | 1062 | if (!r) |
1063 | ZD_ASSERT(in_irq()); | 1063 | dev_kfree_skb_any(skb); |
1064 | dev_kfree_skb_irq(skb); | ||
1065 | } | ||
1066 | return 0; | 1064 | return 0; |
1067 | } | 1065 | } |
1068 | 1066 | ||