linux_dsm_epyc7002/drivers/net/wireless/ath/ath9k
Tobias Klausmann d1f1c0e289 ath9k: do not return early to fix rcu unlocking
Starting with commit d94a461d7a ("ath9k: use ieee80211_tx_status_noskb
where possible") the driver uses rcu_read_lock() && rcu_read_unlock(), yet on
returning early in ath_tx_edma_tasklet() the unlock is missing leading to stalls
and suspicious RCU usage:

 ===============================
 [ INFO: suspicious RCU usage. ]
 4.9.0-rc8 #11 Not tainted
 -------------------------------
 kernel/rcu/tree.c:705 Illegal idle entry in RCU read-side critical section.!

 other info that might help us debug this:

 RCU used illegally from idle CPU!
 rcu_scheduler_active = 1, debug_locks = 0
 RCU used illegally from extended quiescent state!
 1 lock held by swapper/7/0:
 #0:
  (
 rcu_read_lock
 ){......}
 , at:
 [<ffffffffa06ed110>] ath_tx_edma_tasklet+0x0/0x450 [ath9k]

 stack backtrace:
 CPU: 7 PID: 0 Comm: swapper/7 Not tainted 4.9.0-rc8 #11
 Hardware name: Acer Aspire V3-571G/VA50_HC_CR, BIOS V2.21 12/16/2013
  ffff88025efc3f38 ffffffff8132b1e5 ffff88017ede4540 0000000000000001
  ffff88025efc3f68 ffffffff810a25f7 ffff88025efcee60 ffff88017edebdd8
  ffff88025eeb5400 0000000000000091 ffff88025efc3f88 ffffffff810c3cd4
 Call Trace:
  <IRQ>
  [<ffffffff8132b1e5>] dump_stack+0x68/0x93
  [<ffffffff810a25f7>] lockdep_rcu_suspicious+0xd7/0x110
  [<ffffffff810c3cd4>] rcu_eqs_enter_common.constprop.85+0x154/0x200
  [<ffffffff810c5a54>] rcu_irq_exit+0x44/0xa0
  [<ffffffff81058631>] irq_exit+0x61/0xd0
  [<ffffffff81018d25>] do_IRQ+0x65/0x110
  [<ffffffff81672189>] common_interrupt+0x89/0x89
  <EOI>
  [<ffffffff814ffe11>] ? cpuidle_enter_state+0x151/0x200
  [<ffffffff814ffee2>] cpuidle_enter+0x12/0x20
  [<ffffffff8109a6ae>] call_cpuidle+0x1e/0x40
  [<ffffffff8109a8f6>] cpu_startup_entry+0x146/0x220
  [<ffffffff810336f8>] start_secondary+0x148/0x170

Signed-off-by: Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de>
Fixes: d94a461d7a ("ath9k: use ieee80211_tx_status_noskb where possible")
Cc: <stable@vger.kernel.org> # v4.9
Acked-by: Felix Fietkau <nbd@nbd.name>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Tested-by: Gabriel Craciunescu <nix.or.die@gmail.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2016-12-21 16:28:32 +02:00
..
ahb.c ath9k: constify ath_bus_ops structure 2016-12-01 13:17:45 +02:00
ani.c ath9k: clean up ANI per-channel pointer checking 2016-01-26 16:47:38 +02:00
ani.h
antenna.c
ar953x_initvals.h ath9k: Update QCA953x initvals 2016-03-11 13:59:56 +02:00
ar955x_1p0_initvals.h ath9k: Update AR955x initvals 2016-03-11 13:59:58 +02:00
ar956x_initvals.h ath9k: Update QCA956x initvals 2016-03-11 13:59:59 +02:00
ar5008_initvals.h
ar5008_phy.c ath9k: remove repetitions of mask array size 2016-09-09 15:12:18 +03:00
ar9001_initvals.h
ar9002_calib.c
ar9002_hw.c
ar9002_initvals.h
ar9002_mac.c
ar9002_phy.c ath9k_hw: fix spectral scan on AR9285 and newer 2016-07-19 20:58:07 +03:00
ar9002_phy.h ath9k_hw: fix spectral scan on AR9285 and newer 2016-07-19 20:58:07 +03:00
ar9003_2p2_initvals.h ath9k: Update AR9003 2.2 initvals 2016-03-11 13:59:56 +02:00
ar9003_aic.c ath9k: reduce stack usage in ar9003_aic_cal_post_process 2016-03-03 19:27:17 +02:00
ar9003_aic.h ath9k: reduce stack usage in ar9003_aic_cal_post_process 2016-03-03 19:27:17 +02:00
ar9003_buffalo_initvals.h
ar9003_calib.c Revert "ath9k_hw: implement temperature compensation support for AR9003+" 2016-10-13 14:11:30 +03:00
ar9003_eeprom.c ath9k: consider return code on 2016-08-19 13:07:06 +03:00
ar9003_eeprom.h ath9k: reuse ar9003_hw_tx_power_regwrite for tx99 setup 2016-05-09 20:46:31 +03:00
ar9003_hw.c ath9k_hw: add low power tx gain table for AR953x 2016-01-26 16:47:38 +02:00
ar9003_mac.c
ar9003_mac.h
ar9003_mci.c ath9k: make GPIO API to support both of WMAC and SOC 2016-03-11 14:00:02 +02:00
ar9003_mci.h
ar9003_paprd.c
ar9003_phy.c ath9k: Fix symbol overlap window for half/quarter channels 2016-05-09 21:12:01 +03:00
ar9003_phy.h ath9k_hw: fix duplicate (and partially wrong) definition of AR_CH0_THERM 2016-07-19 20:59:04 +03:00
ar9003_rtt.c
ar9003_rtt.h
ar9003_wow.c
ar9330_1p1_initvals.h ath9k: Update AR933x initvals 2016-03-11 13:59:57 +02:00
ar9330_1p2_initvals.h ath9k: Update AR933x initvals 2016-03-11 13:59:57 +02:00
ar9340_initvals.h ath9k: Update AR9340 initvals 2016-03-11 13:59:57 +02:00
ar9462_2p0_initvals.h ath9k: Update AR9462 initvals 2016-03-11 13:59:57 +02:00
ar9462_2p1_initvals.h ath9k: Update AR9462 initvals 2016-03-11 13:59:57 +02:00
ar9485_initvals.h ath9k: Update AR9485 initvals 2016-03-11 13:59:58 +02:00
ar9565_1p0_initvals.h ath9k: Update AR9565 initvals 2016-03-11 13:59:58 +02:00
ar9565_1p1_initvals.h
ar9580_1p0_initvals.h ath9k: Update AR9580 initvals 2016-03-11 13:59:59 +02:00
ath9k.h ath9k: Switch to using mac80211 intermediate software queues. 2016-11-15 17:00:04 +02:00
beacon.c ath9k: Fix beacon configuration for addition/removal of interfaces 2016-07-08 17:03:41 +03:00
btcoex.c ath9k: fix BTCoex configuration for SOC chips 2016-03-11 14:00:04 +02:00
btcoex.h ath9k: fix BTCoex configuration for SOC chips 2016-03-11 14:00:04 +02:00
calib.c cfg80211: remove enum ieee80211_band 2016-04-12 15:56:15 +02:00
calib.h
channel.c ath9k: Switch to using mac80211 intermediate software queues. 2016-11-15 17:00:04 +02:00
common-beacon.c ath9k: remove ath9k_mod_tsf64_tu 2015-12-08 16:51:05 +02:00
common-beacon.h
common-debug.c ath9k: fix phyerror codes 2015-10-28 20:57:13 +02:00
common-debug.h
common-init.c cfg80211: remove enum ieee80211_band 2016-04-12 15:56:15 +02:00
common-init.h
common-spectral.c ath9k: fix NULL pointer dereference 2016-11-23 15:59:38 +02:00
common-spectral.h
common.c cfg80211: remove enum ieee80211_band 2016-04-12 15:56:15 +02:00
common.h ath9k: Fix beacon configuration for addition/removal of interfaces 2016-07-08 17:03:41 +03:00
debug_sta.c ath9k: Switch to using mac80211 intermediate software queues. 2016-11-15 17:00:04 +02:00
debug.c ath9k: Switch to using mac80211 intermediate software queues. 2016-11-15 17:00:04 +02:00
debug.h ath9k: Switch to using mac80211 intermediate software queues. 2016-11-15 17:00:04 +02:00
dfs_debug.c
dfs_debug.h
dfs.c ath9k: DFS - add pulse chirp detection for FCC 2015-07-11 19:51:53 +03:00
dfs.h
dynack.c ath9k: Remove some #defined constants to decrease verbosity 2016-07-08 17:03:37 +03:00
dynack.h
eeprom_4k.c ath9k: Simplify and fix eeprom endianness swapping 2015-12-08 16:50:18 +02:00
eeprom_9287.c ath9k: Simplify and fix eeprom endianness swapping 2015-12-08 16:50:18 +02:00
eeprom_def.c ath9k: Simplify and fix eeprom endianness swapping 2015-12-08 16:50:18 +02:00
eeprom.c ath9k: simplify the code-paths when not using the built-in EEPROM 2016-07-19 20:57:14 +03:00
eeprom.h ath9k: Simplify and fix eeprom endianness swapping 2015-12-08 16:50:18 +02:00
gpio.c ath9k: mark ath_fill_led_pin() static 2016-09-02 19:06:05 +03:00
hif_usb.c ath9k_htc: don't use HZ for usb msg timeouts 2016-12-01 13:18:33 +02:00
hif_usb.h ath9k_htc: don't use HZ for usb msg timeouts 2016-12-01 13:18:33 +02:00
htc_drv_beacon.c ath9k: Remove some #defined constants to decrease verbosity 2016-07-08 17:03:37 +03:00
htc_drv_debug.c
htc_drv_gpio.c ath9k: free GPIO resource for SOC GPIOs 2016-03-11 14:00:02 +02:00
htc_drv_init.c ath9k: Remove some #defined constants to decrease verbosity 2016-07-08 17:03:37 +03:00
htc_drv_main.c Merge ath-next from ath.git 2016-04-26 14:13:59 +03:00
htc_drv_txrx.c cfg80211: remove enum ieee80211_band 2016-04-12 15:56:15 +02:00
htc_hst.c ath9k_htc: fix minor mistakes in dev_err messages 2016-11-15 16:57:47 +02:00
htc_hst.h
htc.h ath9k_htc: add support of channel switch 2015-06-15 12:44:34 +03:00
hw-ops.h
hw.c ath9k: fix ath9k_hw_gpio_get() to return 0 or 1 on success 2016-11-23 15:58:21 +02:00
hw.h Revert "ath9k_hw: implement temperature compensation support for AR9003+" 2016-10-13 14:11:30 +03:00
init.c wireless-drivers-next patches for 4.10 2016-11-27 20:26:59 -05:00
Kconfig ath9k: disable RNG by default 2016-09-28 12:59:49 +03:00
link.c ath9k: match wait_for_completion_timeout return type 2015-08-13 15:27:12 +03:00
mac.c
mac.h ath9k: Remove some #defined constants to decrease verbosity 2016-07-08 17:03:37 +03:00
main.c ath9k: Switch to using mac80211 intermediate software queues. 2016-11-15 17:00:04 +02:00
Makefile ath9k: feeding entropy in kernel from ADC capture 2015-12-11 14:08:58 +02:00
mci.c
mci.h
pci.c ath9k: Really fix LED polarity for some Mini PCI AR9220 MB92 cards. 2016-11-15 16:52:16 +02:00
phy.h
recv.c ath9k: feed only active spectral / dfs-detector 2016-12-01 12:29:24 +02:00
reg_aic.h
reg_mci.h
reg_wow.h
reg.h ath9k: fix GPIO mask for AR9462 and AR9565 2016-06-14 16:21:31 +03:00
rng.c ath9k: change entropy formula for easier understanding 2016-10-13 17:22:44 +03:00
tx99.c ath9k: Proper TX99 interrupt ref count 2016-05-28 11:24:25 +03:00
wmi.c ath9k_htc: wmi: match wait_for_completion_timeout return type 2015-08-13 15:26:19 +03:00
wmi.h
wow.c
xmit.c ath9k: do not return early to fix rcu unlocking 2016-12-21 16:28:32 +02:00