]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
mac80211: do not call driver wake_tx_queue op during reconfig
authorFelix Fietkau <nbd@nbd.name>
Fri, 1 Mar 2019 13:48:37 +0000 (14:48 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 27 Apr 2019 07:35:38 +0000 (09:35 +0200)
commit5efba8d96466b824aa9d205fe6eabcec2c6aa960
tree334db1b003cf91b196d13f5ca4ff3503f34f2bb1
parent8a80544c5e6f50e7796380381f285488af47287f
mac80211: do not call driver wake_tx_queue op during reconfig

commit 4856bfd230985e43e84c26473c91028ff0a533bd upstream.

There are several scenarios in which mac80211 can call drv_wake_tx_queue
after ieee80211_restart_hw has been called and has not yet completed.
Driver private structs are considered uninitialized until mac80211 has
uploaded the vifs, stations and keys again, so using private tx queue
data during that time is not safe.

The driver can also not rely on drv_reconfig_complete to figure out when
it is safe to accept drv_wake_tx_queue calls again, because it is only
called after all tx queues are woken again.

To fix this, bail out early in drv_wake_tx_queue if local->in_reconfig
is set.

Cc: stable@vger.kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/mac80211/driver-ops.h