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)
commit628980e5c8f038f730582c6ee50b7410741cd96e
tree76ffd6708bc16fa3e6a40436d4faa570180559fc
parent30fe6d50eb088783c8729c7d930f65296b2b3fa7
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: 8cfd36a0b53a ("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