aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/318-mac80211-fix-up-mismerge-of-ieee80211_tx_dequeue.patch
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2016-10-08 13:53:14 +0200
committerFelix Fietkau <nbd@nbd.name>2016-10-13 17:06:03 +0200
commitad51e09fd1301484820a466a49447a34d7504882 (patch)
tree06d56b89cf8709b0e9ca63528f8efc411089ddf5 /package/kernel/mac80211/patches/318-mac80211-fix-up-mismerge-of-ieee80211_tx_dequeue.patch
parent4379bcb1b4b73fb8487a14bec9554a17d4726e35 (diff)
downloadupstream-ad51e09fd1301484820a466a49447a34d7504882.tar.gz
upstream-ad51e09fd1301484820a466a49447a34d7504882.tar.bz2
upstream-ad51e09fd1301484820a466a49447a34d7504882.zip
mac80211: update to wireless-testing 2016-10-08
Signed-off-by: Felix Fietkau <nbd@nbd.name>
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.patch35
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);