mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-25 16:31:13 +00:00
36 lines
827 B
Diff
36 lines
827 B
Diff
|
From: Bob Copeland <me@bobcopeland.com>
|
||
|
Date: Wed, 12 Oct 2016 08:24:54 -0400
|
||
|
Subject: [PATCH] mac80211: fix up mismerge of ieee80211_tx_dequeue
|
||
|
|
||
|
Looks like this spinlock wound up on the wrong side of the
|
||
|
linearize, and I also lost the part that re-enters the loop.
|
||
|
Fix up to match mac80211-next.
|
||
|
|
||
|
Signed-off-by: Bob Copeland <me@bobcopeland.com>
|
||
|
---
|
||
|
|
||
|
--- a/net/mac80211/tx.c
|
||
|
+++ b/net/mac80211/tx.c
|
||
|
@@ -3457,17 +3457,17 @@ begin:
|
||
|
skb_queue_splice_tail(&tx.skbs, &txqi->frags);
|
||
|
}
|
||
|
|
||
|
-out:
|
||
|
- spin_unlock_bh(&fq->lock);
|
||
|
-
|
||
|
if (skb && skb_has_frag_list(skb) &&
|
||
|
!ieee80211_hw_check(&local->hw, TX_FRAG_LIST)) {
|
||
|
if (skb_linearize(skb)) {
|
||
|
ieee80211_free_txskb(&local->hw, skb);
|
||
|
- return NULL;
|
||
|
+ goto begin;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
+out:
|
||
|
+ spin_unlock_bh(&fq->lock);
|
||
|
+
|
||
|
return skb;
|
||
|
}
|
||
|
EXPORT_SYMBOL(ieee80211_tx_dequeue);
|