aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2012-12-10 10:40:41 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-12-10 15:49:58 -0500
commit596ab5ec3bf10a22be30d7cb1d903a4b83fd607c (patch)
tree3a61d1a4bc119cb5498351339b35d2cc31684ce9 /drivers/net
parentab5c4f71d8c7add173a2d32e5beefdaaf1b7cbbc (diff)
ath5k: fix tx path skb leaks
ieee80211_free_txskb() needs to be used instead of dev_kfree_skb_any for tx packets passed to the driver from mac80211 Signed-off-by: Felix Fietkau <nbd@openwrt.org> Cc: stable@vger.kernel.org Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/ath/ath5k/base.c4
-rw-r--r--drivers/net/wireless/ath/ath5k/mac80211-ops.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
index 3a5a61e03922..4ad40cfe9ce0 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -849,7 +849,7 @@ ath5k_txbuf_free_skb(struct ath5k_hw *ah, struct ath5k_buf *bf)
849 return; 849 return;
850 dma_unmap_single(ah->dev, bf->skbaddr, bf->skb->len, 850 dma_unmap_single(ah->dev, bf->skbaddr, bf->skb->len,
851 DMA_TO_DEVICE); 851 DMA_TO_DEVICE);
852 dev_kfree_skb_any(bf->skb); 852 ieee80211_free_txskb(ah->hw, bf->skb);
853 bf->skb = NULL; 853 bf->skb = NULL;
854 bf->skbaddr = 0; 854 bf->skbaddr = 0;
855 bf->desc->ds_data = 0; 855 bf->desc->ds_data = 0;
@@ -1576,7 +1576,7 @@ ath5k_tx_queue(struct ieee80211_hw *hw, struct sk_buff *skb,
1576 return; 1576 return;
1577 1577
1578drop_packet: 1578drop_packet:
1579 dev_kfree_skb_any(skb); 1579 ieee80211_free_txskb(hw, skb);
1580} 1580}
1581 1581
1582static void 1582static void
diff --git a/drivers/net/wireless/ath/ath5k/mac80211-ops.c b/drivers/net/wireless/ath/ath5k/mac80211-ops.c
index 1ea8c8795c8e..4264341533ea 100644
--- a/drivers/net/wireless/ath/ath5k/mac80211-ops.c
+++ b/drivers/net/wireless/ath/ath5k/mac80211-ops.c
@@ -62,7 +62,7 @@ ath5k_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control,
62 u16 qnum = skb_get_queue_mapping(skb); 62 u16 qnum = skb_get_queue_mapping(skb);
63 63
64 if (WARN_ON(qnum >= ah->ah_capabilities.cap_queues.q_tx_num)) { 64 if (WARN_ON(qnum >= ah->ah_capabilities.cap_queues.q_tx_num)) {
65 dev_kfree_skb_any(skb); 65 ieee80211_free_txskb(hw, skb);
66 return; 66 return;
67 } 67 }
68 68