From 0f003be0104ca9cf5b01f9d8bd4a89c790035b27 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Sat, 22 Jun 2013 13:59:55 +0000
Subject: [PATCH] ath9k: fix a minor rcu issue

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 37013
---
 .../mac80211/patches/300-pending_work.patch   | 23 ++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/package/kernel/mac80211/patches/300-pending_work.patch b/package/kernel/mac80211/patches/300-pending_work.patch
index bd21e53405..11be868b38 100644
--- a/package/kernel/mac80211/patches/300-pending_work.patch
+++ b/package/kernel/mac80211/patches/300-pending_work.patch
@@ -283,7 +283,28 @@
  	struct mutex mtx;
 --- a/drivers/net/wireless/ath/ath9k/xmit.c
 +++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -1778,9 +1778,13 @@ static void ath_tx_txqaddbuf(struct ath_
+@@ -1673,6 +1673,8 @@ void ath_txq_schedule(struct ath_softc *
+ 	    txq->axq_ampdu_depth >= ATH_AGGR_MIN_QDEPTH)
+ 		return;
+ 
++	rcu_read_lock();
++
+ 	ac = list_first_entry(&txq->axq_acq, struct ath_atx_ac, list);
+ 	last_ac = list_entry(txq->axq_acq.prev, struct ath_atx_ac, list);
+ 
+@@ -1711,8 +1713,10 @@ void ath_txq_schedule(struct ath_softc *
+ 
+ 		if (ac == last_ac ||
+ 		    txq->axq_ampdu_depth >= ATH_AGGR_MIN_QDEPTH)
+-			return;
++			break;
+ 	}
++
++	rcu_read_unlock();
+ }
+ 
+ /***********/
+@@ -1778,9 +1782,13 @@ static void ath_tx_txqaddbuf(struct ath_
  	}
  
  	if (!internal) {
-- 
2.30.2