]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
net80211: fix LOR/deadlock in ieee80211_ff_node_cleanup().
authoravos <avos@FreeBSD.org>
Wed, 29 Jun 2016 17:25:46 +0000 (17:25 +0000)
committeravos <avos@FreeBSD.org>
Wed, 29 Jun 2016 17:25:46 +0000 (17:25 +0000)
commit19e196315ea112a4d6e5618f871df55902e3bb99
tree7edfcd8a5ab830fc811418da4c0893551af5d185
parent5c68448b2f996875f54eceb0cf97c6a1a749748c
net80211: fix LOR/deadlock in ieee80211_ff_node_cleanup().

Add new lock for stageq (part of ieee80211_superg structure) and
ni_tx_superg (part of ieee80211_node structure);
drop com_lock protection where it is used to protect them.

While here, drop duplicate OPACKETS counter incrementation.

ni_tx_ampdu is not protected with it (however, it is also used without
locking in other places; probably, it requires some other solution
to be thread-safe).

Tested with RTL8188CUS (AP) and RTL8188EU (STA).

NOTE: Since this change breaks KBI, all wireless drivers need to be
recompiled.

Reviewed by: adrian
Approved by: re (gjb)
Differential Revision: https://reviews.freebsd.org/D6958
sys/net80211/ieee80211_ddb.c
sys/net80211/ieee80211_freebsd.h
sys/net80211/ieee80211_superg.c
sys/net80211/ieee80211_superg.h
sys/net80211/ieee80211_var.h