diff options
Diffstat (limited to 'package/kernel/mac80211/patches/318-mac80211-fix-up-mismerge-of-ieee80211_tx_dequeue.patch')
-rw-r--r-- | package/kernel/mac80211/patches/318-mac80211-fix-up-mismerge-of-ieee80211_tx_dequeue.patch | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/318-mac80211-fix-up-mismerge-of-ieee80211_tx_dequeue.patch b/package/kernel/mac80211/patches/318-mac80211-fix-up-mismerge-of-ieee80211_tx_dequeue.patch new file mode 100644 index 0000000000..2e742e4484 --- /dev/null +++ b/package/kernel/mac80211/patches/318-mac80211-fix-up-mismerge-of-ieee80211_tx_dequeue.patch @@ -0,0 +1,35 @@ +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); |