[Make-wifi-fast] Fwd: [PATCH] mac80211: prevent skb/txq mismatch

Jon Pike jonpike54 at gmail.com
Wed Jan 18 01:58:30 EST 2017

I'm pretty clueless on this,  but as a single data point, my Archer C7 has
abt 21 days of uptime now, since my last update, as the single router in a
4 person household.  I've been running cake/piece of cake the whole time.

Standard disclaimers apply as to clueless user not knowing if his FW
version has anything to do with the issue in question, or if its connected
to other things like whatever is going on with the airtime fairness.  But
the comment in the third paragraph sounded interesting in light of my lack
of a crash and running a SQM method, FWIW.

My last update was a sysupgrade to LEDE Reboot SNAPSHOT r2687-dc5f496
pretty sure date was 12-27-16.

Today's Topics:

   1. Fwd: [PATCH] mac80211: prevent skb/txq mismatch (Dave Taht)

---------- Forwarded message ----------
From: Dave Taht <dave.taht at gmail.com>
To: make-wifi-fast at lists.bufferbloat.net
Date: Thu, 12 Jan 2017 10:44:12 -0800
Subject: [Make-wifi-fast] Fwd: [PATCH] mac80211: prevent skb/txq mismatch
yea! (I think)

---------- Forwarded message ----------
From: Michal Kazior <michal.kazior at tieto.com>
Date: Thu, Jan 12, 2017 at 6:28 AM
Subject: [PATCH] mac80211: prevent skb/txq mismatch
To: johannes at sipsolutions.net
Cc: linux-wireless at vger.kernel.org, greearb at candelatech.com,
mohammed at qti.qualcomm.com, Michal Kazior <michal.kazior at tieto.com>

Station structure is considered as not uploaded
(to driver) until drv_sta_state() finishes. This
call is however done after the structure is
attached to mac80211 internal lists and hashes.
This means mac80211 can lookup (and use) station
structure before it is uploaded to a driver.

If this happens (structure exists, but
sta->uploaded is false) fast_tx path can still be
taken. Deep in the fastpath call the sta->uploaded
is checked against to derive "pubsta" argument for
ieee80211_get_txq(). If sta->uploaded is false
(and sta is actually non-NULL) ieee80211_get_txq()
effectively downgraded to vif->txq.

At first glance this may look innocent but coerces
mac80211 into a state that is almost guaranteed
(codel may drop offending skb) to crash because a
station-oriented skb gets queued up on
vif-oriented txq. The ieee80211_tx_dequeue() ends
up looking at info->control.flags and tries to use
txq->sta which in the fail case is NULL.

Make-wifi-fast mailing list
Make-wifi-fast at lists.bufferbloat.net
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.bufferbloat.net/pipermail/make-wifi-fast/attachments/20170117/3c3ea028/attachment.html>

More information about the Make-wifi-fast mailing list