aboutsummaryrefslogtreecommitdiff
path: root/drivers/net
diff options
context:
space:
mode:
authorGertjan van Wingerde <gwingerde@kpnplanet.nl>2008-06-16 19:55:18 +0200
committerJohn W. Linville <linville@tuxdriver.com>2008-06-26 16:49:15 -0400
commitc95edf5432f097c926dd3f59239ecde80da3b214 (patch)
tree4f71f8bb557ccfe81346caff0409cbece5bd4f8e /drivers/net
parentac1044628d477d655f5f70420c3493119abeb6d3 (diff)
rt2x00: Properly clean up beacon skbs.
The skbs containing the beacons weren't properly cleaned up for rt2400pci, rt2500pci, rt61pci, and rt73usb. Clean up those skbs in the manner appropriate for each driver. Signed-off-by: Gertjan van Wingerde <gwingerde@kpnplanet.nl> Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00dev.c6
-rw-r--r--drivers/net/wireless/rt2x00/rt61pci.c6
-rw-r--r--drivers/net/wireless/rt2x00/rt73usb.c6
3 files changed, 18 insertions, 0 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index f9e75319770..b8e0c4c3ed0 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -474,6 +474,12 @@ static void rt2x00lib_beacondone_iter(void *data, u8 *mac,
vif->type != IEEE80211_IF_TYPE_IBSS)
return;
+ /*
+ * Clean up the beacon skb.
+ */
+ dev_kfree_skb_irq(intf->beacon->skb);
+ intf->beacon->skb = NULL;
+
spin_lock(&intf->lock);
intf->delayed_flags |= DELAYED_UPDATE_BEACON;
spin_unlock(&intf->lock);
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
index 5b7267ece1b..27f30ae8f52 100644
--- a/drivers/net/wireless/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/rt2x00/rt61pci.c
@@ -2402,6 +2402,12 @@ static int rt61pci_beacon_update(struct ieee80211_hw *hw, struct sk_buff *skb)
skb->data, skb->len);
rt61pci_kick_tx_queue(rt2x00dev, QID_BEACON);
+ /*
+ * Clean up beacon skb.
+ */
+ dev_kfree_skb_any(skb);
+ intf->beacon->skb = NULL;
+
return 0;
}
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
index fceefd730ab..42b7e98b2d2 100644
--- a/drivers/net/wireless/rt2x00/rt73usb.c
+++ b/drivers/net/wireless/rt2x00/rt73usb.c
@@ -2001,6 +2001,12 @@ static int rt73usb_beacon_update(struct ieee80211_hw *hw, struct sk_buff *skb)
REGISTER_TIMEOUT32(skb->len));
rt73usb_kick_tx_queue(rt2x00dev, QID_BEACON);
+ /*
+ * Clean up the beacon skb.
+ */
+ dev_kfree_skb(skb);
+ intf->beacon->skb = NULL;
+
return 0;
}