]> git.baikalelectronics.ru Git - kernel.git/commit
mac80211: protect rx-path with spinlock
authorChristian Lamparter <chunkeey@googlemail.com>
Mon, 4 Feb 2013 17:44:44 +0000 (17:44 +0000)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 11 Feb 2013 17:44:55 +0000 (18:44 +0100)
commitc51869a03113ae3de76d0f1e35d3908734fafa62
treef09c89096de26a4211d73742933260d5d240b58e
parent39c0444558d44bb0650ac54f2f6a9009cfd9e031
mac80211: protect rx-path with spinlock

This patch fixes the problem which was discussed in
"mac80211: Fix PN corruption in case of multiple
virtual interface" [1].

Amit Shakya reported a serious issue with my patch:
mac80211: serialize rx path workers" [2]:

In case, ieee80211_rx_handlers processing is going on
for skbs received on one vif and at the same time, rx
aggregation reorder timer expires on another vif then
sta_rx_agg_reorder_timer_expired is invoked and it will
push skbs into the single queue (local->rx_skb_queue).

ieee80211_rx_handlers in the while loop assumes that
the skbs are for the same sdata and sta. This assumption
doesn't hold good in this scenario and the PN gets
corrupted by PN received in other vif's skb, causing
traffic to stop due to PN mismatch."

[1] Message-Id: http://mid.gmane.org/201302041844.44436.chunkeey@googlemail.com
[2] Commit-Id: 49871c8c1c4b64e8e947

Reported-by: Amit Shakya <amit.shakya@stericsson.com>
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/ieee80211_i.h
net/mac80211/main.c
net/mac80211/rx.c