]> git.baikalelectronics.ru Git - kernel.git/commit
mac80211_hwsim: fix locking when iterating radios during ns exit
authorMartin Willi <martin@strongswan.org>
Tue, 25 Sep 2018 07:41:13 +0000 (09:41 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 26 Sep 2018 09:20:13 +0000 (11:20 +0200)
commitbaf82fce8424ae3a13c4ddc33c8c8b8ab2d0e601
tree76ffd6708bc16fa3e6a40436d4faa570180559fc
parent5ff393f9a41e5438f59a2b936285247f3c3ffcaf
mac80211_hwsim: fix locking when iterating radios during ns exit

The cleanup of radios during namespace exit has recently been reworked
to directly delete a radio while temporarily releasing the spinlock,
fixing a race condition between the work-queue execution and namespace
exits. However, the temporary unlock allows unsafe modifications on the
iterated list, resulting in a potential crash when continuing the
iteration of additional radios.

Move radios about to destroy to a temporary list, and clean that up
after releasing the spinlock once iteration is complete.

Fixes: f9ec5ecb9603 ("mac80211_hwsim: fix use-after-free bug in hwsim_exit_net")
Signed-off-by: Martin Willi <martin@strongswan.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/mac80211_hwsim.c