From: David S. Miller Date: Sun, 3 Aug 2008 06:25:50 +0000 (-0700) Subject: mac80211: Use queue_lock() in ieee80211_ht_agg_queue_remove(). X-Git-Tag: v2.6.27-rc2~2^2~21 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=35ed4e75989c4e84a44b25569bbf09b98f923880;p=linux-2.6 mac80211: Use queue_lock() in ieee80211_ht_agg_queue_remove(). qdisc_root_lock() is only %100 safe to use when the RTNL semaphore is held. Signed-off-by: David S. Miller --- diff --git a/net/mac80211/wme.c b/net/mac80211/wme.c index 28437f0001..4310e2f656 100644 --- a/net/mac80211/wme.c +++ b/net/mac80211/wme.c @@ -241,12 +241,14 @@ void ieee80211_ht_agg_queue_remove(struct ieee80211_local *local, } else { struct netdev_queue *txq; spinlock_t *root_lock; + struct Qdisc *q; txq = netdev_get_tx_queue(local->mdev, agg_queue); - root_lock = qdisc_root_lock(txq->qdisc); + q = rcu_dereference(txq->qdisc); + root_lock = qdisc_lock(q); spin_lock_bh(root_lock); - qdisc_reset(txq->qdisc); + qdisc_reset(q); spin_unlock_bh(root_lock); } }