Tobias Klausmann
d1f1c0e289
ath9k: do not return early to fix rcu unlocking
...
Starting with commit d94a461d7a7d ("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: d94a461d7a7d ("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
..
2016-12-01 13:17:45 +02:00
2016-01-26 16:47:38 +02:00
2016-03-11 13:59:56 +02:00
2016-03-11 13:59:58 +02:00
2016-03-11 13:59:59 +02:00
2016-09-09 15:12:18 +03:00
2015-03-30 11:31:30 +03:00
2014-11-25 14:09:56 -05:00
2016-07-19 20:58:07 +03:00
2016-07-19 20:58:07 +03:00
2016-03-11 13:59:56 +02:00
2016-03-03 19:27:17 +02:00
2016-03-03 19:27:17 +02:00
2016-10-13 14:11:30 +03:00
2016-08-19 13:07:06 +03:00
2016-05-09 20:46:31 +03:00
2016-01-26 16:47:38 +02:00
2014-11-25 14:09:56 -05:00
2016-03-11 14:00:02 +02:00
2015-03-03 14:55:24 +02:00
2016-05-09 21:12:01 +03:00
2016-07-19 20:59:04 +03:00
2015-03-13 15:19:36 +02:00
2014-10-27 14:16:18 -04:00
2015-02-26 14:58:46 +02:00
2016-03-11 13:59:57 +02:00
2016-03-11 13:59:57 +02:00
2016-03-11 13:59:57 +02:00
2016-03-11 13:59:57 +02:00
2016-03-11 13:59:57 +02:00
2016-03-11 13:59:58 +02:00
2016-03-11 13:59:58 +02:00
2016-03-11 13:59:59 +02:00
2016-11-15 17:00:04 +02:00
2016-07-08 17:03:41 +03:00
2016-03-11 14:00:04 +02:00
2016-03-11 14:00:04 +02:00
2016-04-12 15:56:15 +02:00
2014-10-27 14:16:18 -04:00
2016-11-15 17:00:04 +02:00
2015-12-08 16:51:05 +02:00
2015-10-28 20:57:13 +02:00
2016-04-12 15:56:15 +02:00
2016-11-23 15:59:38 +02:00
2015-05-09 16:46:11 +03:00
2016-04-12 15:56:15 +02:00
2016-07-08 17:03:41 +03:00
2016-11-15 17:00:04 +02:00
2016-11-15 17:00:04 +02:00
2016-11-15 17:00:04 +02:00
2015-07-11 19:51:53 +03:00
2016-07-08 17:03:37 +03:00
2014-09-16 16:18:30 -04:00
2015-12-08 16:50:18 +02:00
2015-12-08 16:50:18 +02:00
2015-12-08 16:50:18 +02:00
2016-07-19 20:57:14 +03:00
2015-12-08 16:50:18 +02:00
2016-09-02 19:06:05 +03:00
2016-12-01 13:18:33 +02:00
2016-12-01 13:18:33 +02:00
2016-07-08 17:03:37 +03:00
2015-02-13 21:21:38 -08:00
2016-03-11 14:00:02 +02:00
2016-07-08 17:03:37 +03:00
2016-04-26 14:13:59 +03:00
2016-04-12 15:56:15 +02:00
2016-11-15 16:57:47 +02:00
2015-06-15 12:44:34 +03:00
2015-03-20 08:27:17 +02:00
2016-11-23 15:58:21 +02:00
2016-10-13 14:11:30 +03:00
2016-11-27 20:26:59 -05:00
2016-09-28 12:59:49 +03:00
2015-08-13 15:27:12 +03:00
2015-01-15 14:25:03 +02:00
2016-07-08 17:03:37 +03:00
2016-11-15 17:00:04 +02:00
2015-12-11 14:08:58 +02:00
2015-03-03 14:55:24 +02:00
2016-11-15 16:52:16 +02:00
2016-12-01 12:29:24 +02:00
2015-03-20 08:27:19 +02:00
2015-03-03 14:55:27 +02:00
2015-02-26 14:58:43 +02:00
2016-06-14 16:21:31 +03:00
2016-10-13 17:22:44 +03:00
2016-05-28 11:24:25 +03:00
2015-08-13 15:26:19 +03:00
2015-04-07 20:07:44 +03:00
2015-02-06 08:39:21 +02:00
2016-12-21 16:28:32 +02:00