aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/b43/dma.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2012-12-10 11:40:21 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-12-10 15:49:59 -0500
commit78f18df4b323d2ac14d6c82e2fc3c8dc4556bccc (patch)
treee34db528fb48b4e4f1d6d5adc9f07994c95380af /drivers/net/wireless/b43/dma.c
parent596ab5ec3bf10a22be30d7cb1d903a4b83fd607c (diff)
b43: 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/wireless/b43/dma.c')
-rw-r--r--drivers/net/wireless/b43/dma.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/wireless/b43/dma.c b/drivers/net/wireless/b43/dma.c
index 777cd74921d7..38bc5a7997ff 100644
--- a/drivers/net/wireless/b43/dma.c
+++ b/drivers/net/wireless/b43/dma.c
@@ -409,7 +409,10 @@ static inline
409 struct b43_dmadesc_meta *meta) 409 struct b43_dmadesc_meta *meta)
410{ 410{
411 if (meta->skb) { 411 if (meta->skb) {
412 dev_kfree_skb_any(meta->skb); 412 if (ring->tx)
413 ieee80211_free_txskb(ring->dev->wl->hw, meta->skb);
414 else
415 dev_kfree_skb_any(meta->skb);
413 meta->skb = NULL; 416 meta->skb = NULL;
414 } 417 }
415} 418}
@@ -1454,7 +1457,7 @@ int b43_dma_tx(struct b43_wldev *dev, struct sk_buff *skb)
1454 if (unlikely(err == -ENOKEY)) { 1457 if (unlikely(err == -ENOKEY)) {
1455 /* Drop this packet, as we don't have the encryption key 1458 /* Drop this packet, as we don't have the encryption key
1456 * anymore and must not transmit it unencrypted. */ 1459 * anymore and must not transmit it unencrypted. */
1457 dev_kfree_skb_any(skb); 1460 ieee80211_free_txskb(dev->wl->hw, skb);
1458 err = 0; 1461 err = 0;
1459 goto out; 1462 goto out;
1460 } 1463 }