linux/drivers/net/wireless/intel/iwlwifi
Johannes Berg 42116705a7 iwlwifi: mvm: fix race in queue notification wait
Initially in this code, the race didn't matter since it didn't
do anything. Latest with the commit I marked this as fixing it
started to matter as something got done here that needed other
data that got freed as soon as the queue notification wait was
returning.

In the scenario we saw, apparently the IWL_MVM_RXQ_NOTIF_DEL_BA
event was sent to all queues, but processing the last event we
returned from iwl_mvm_sync_rx_queues_internal() and then from
iwl_mvm_free_reorder() and continued some processing before
wl_mvm_del_ba() was even invoked on the other CPU. Thus, when
the latter finally ran, it found that mvm->baid_map[baid] was
no longer valid.

Correct the race by moving the counter decrement and wake_up()
to be done only after all the per-event processing completed.
Note that in the commit I marked as being fixed the wake_up()
didn't exist yet (and the code was otherwise problematic) but
this particular problem already existed in a way.

Fixes: b915c10174 ("iwlwifi: mvm: add reorder buffer per queue")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
2018-05-30 09:57:23 +03:00
..
cfg iwlwifi: add csr configuration for 6300 devices 2018-05-29 15:23:06 +03:00
dvm iwlwifi: remove upper case letters in sku_capa_band_*_enable 2018-04-20 10:57:16 +03:00
fw iwlwifi: mvm: drop UNKNOWN security type frames 2018-05-30 09:08:06 +03:00
mvm iwlwifi: mvm: fix race in queue notification wait 2018-05-30 09:57:23 +03:00
pcie iwlwifi: pcie: fix race in Rx buffer allocator 2018-05-30 09:44:20 +03:00
iwl-agn-hw.h
iwl-config.h iwlwifi: make bitfield a u32 instead of u16 2018-04-26 15:18:07 +03:00
iwl-context-info.h
iwl-csr.h iwlwifi: allow different csr flags for different device families 2018-04-26 15:18:07 +03:00
iwl-debug.c
iwl-debug.h iwlwifi: acpi: add common code to read from ACPI 2017-10-06 15:22:28 +03:00
iwl-devtrace-data.h iwlwifi: simplify data tracepoint 2017-06-23 11:57:20 +03:00
iwl-devtrace-io.h iwlwifi: pcie: add MSI-X interrupt tracing 2017-06-29 20:27:48 +03:00
iwl-devtrace-iwlwifi.h net/wireless/iwlwifi: fix iwlwifi_dev_ucode_error tracepoint 2018-03-28 22:55:19 +02:00
iwl-devtrace-msg.h
iwl-devtrace-ucode.h
iwl-devtrace.c net/wireless/iwlwifi: fix iwlwifi_dev_ucode_error tracepoint 2018-03-28 22:55:19 +02:00
iwl-devtrace.h iwlwifi: fix tracing when tx only is enabled 2017-07-21 12:26:38 +03:00
iwl-drv.c iwlwifi: pcie: remove non-responsive device 2018-04-26 15:18:07 +03:00
iwl-drv.h iwlwifi: cleanup references to 8000 family in NVM code 2017-06-05 23:25:21 +03:00
iwl-eeprom-parse.c iwlwifi: remove upper case letters in sku_capa_band_*_enable 2018-04-20 10:57:16 +03:00
iwl-eeprom-parse.h iwlwifi: remove upper case letters in sku_capa_band_*_enable 2018-04-20 10:57:16 +03:00
iwl-eeprom-read.c iwlwifi: allow different csr flags for different device families 2018-04-26 15:18:07 +03:00
iwl-eeprom-read.h
iwl-fh.h iwlwifi: rename the temporary name of A000 to the official 22000 2017-11-28 16:39:57 +02:00
iwl-io.c iwlwifi: fix nmi triggering from host 2017-08-09 21:14:43 +03:00
iwl-io.h
iwl-modparams.h iwlwifi: pcie: remove non-responsive device 2018-04-26 15:18:07 +03:00
iwl-nvm-parse.c iwlwifi: mvm: remove division by size of sizeof(struct ieee80211_wmm_rule) 2018-05-30 09:49:38 +03:00
iwl-nvm-parse.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers.git 2018-04-26 13:26:37 +03:00
iwl-op-mode.h
iwl-phy-db.c iwlwifi: mvm: add documentation for all command IDs 2017-06-29 13:26:24 +03:00
iwl-phy-db.h
iwl-prph.h iwlwifi: fix nmi triggering from host 2017-08-09 21:14:43 +03:00
iwl-scd.h
iwl-trans.c iwlwifi: trans: move ref/unref code to the common part of the transport 2017-10-06 14:57:20 +03:00
iwl-trans.h iwlwifi: introduce Image Loader (IML) - new firmware image 2018-04-26 15:18:07 +03:00
Kconfig iwlwifi: fix malformed CONFIG_IWLWIFI_PCIE_RTPM default 2018-03-02 10:20:03 +02:00
Makefile iwlwifi: get rid of fw/nvm.c 2018-04-20 10:57:16 +03:00