* [PATCH] ath9k: unlock rcu read when returning early [not found] <1cFMHb-00BdWd-Ks> @ 2016-12-12 18:50 ` Tobias Klausmann 2016-12-13 9:59 ` Kalle Valo 2016-12-13 10:41 ` Felix Fietkau 0 siblings, 2 replies; 8+ messages in thread From: Tobias Klausmann @ 2016-12-12 18:50 UTC (permalink / raw) To: kvalo, helgaas, linux-kernel, linux-pci, marc.zyngier, Janusz.Dziedzic, rmanohar, ath9k-devel, linux-wireless, rmanohar, bharat.kumar.gogada Cc: Tobias Klausmann Starting with ath9k: use ieee80211_tx_status_noskb where possible [d94a461d7a7df68991fb9663531173f60ef89c68] 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> --- drivers/net/wireless/ath/ath9k/xmit.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c index 52bfbb988611..857d5ae09a1d 100644 --- a/drivers/net/wireless/ath/ath9k/xmit.c +++ b/drivers/net/wireless/ath/ath9k/xmit.c @@ -2787,6 +2787,7 @@ void ath_tx_edma_tasklet(struct ath_softc *sc) fifo_list = &txq->txq_fifo[txq->txq_tailidx]; if (list_empty(fifo_list)) { ath_txq_unlock(sc, txq); + rcu_read_unlock(); return; } -- 2.11.0 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] ath9k: unlock rcu read when returning early 2016-12-12 18:50 ` [PATCH] ath9k: unlock rcu read when returning early Tobias Klausmann @ 2016-12-13 9:59 ` Kalle Valo 2016-12-13 10:41 ` Felix Fietkau 1 sibling, 0 replies; 8+ messages in thread From: Kalle Valo @ 2016-12-13 9:59 UTC (permalink / raw) To: Tobias Klausmann Cc: helgaas, linux-kernel, linux-pci, marc.zyngier, Janusz.Dziedzic, rmanohar, ath9k-devel, linux-wireless, rmanohar, bharat.kumar.gogada, Felix Fietkau Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de> writes: > Starting with ath9k: use ieee80211_tx_status_noskb where possible > [d94a461d7a7df68991fb9663531173f60ef89c68] The correct format to reference a commit in the commit log is: Starting with commit d94a461d7a7d ("ath9k: use ieee80211_tx_status_noskb where possible") the... > 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> A fixes line and cc stable would be good to have: Fixes: d94a461d7a7d ("ath9k: use ieee80211_tx_status_noskb where possible") Cc: <stable@vger.kernel.org> # v4.9 I can add those. I'm planning to push this to 4.10 but would prefer to see an ack from Felix (the author of d94a461d7a7d) first. I added him to Cc. -- Kalle Valo ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] ath9k: unlock rcu read when returning early 2016-12-12 18:50 ` [PATCH] ath9k: unlock rcu read when returning early Tobias Klausmann 2016-12-13 9:59 ` Kalle Valo @ 2016-12-13 10:41 ` Felix Fietkau 2016-12-13 13:41 ` Tobias Klausmann 2016-12-13 17:08 ` [PATCH v2] ath9k: do not return early to fix rcu unlocking Tobias Klausmann 1 sibling, 2 replies; 8+ messages in thread From: Felix Fietkau @ 2016-12-13 10:41 UTC (permalink / raw) To: Tobias Klausmann, kvalo, helgaas, linux-kernel, linux-pci, marc.zyngier, Janusz.Dziedzic, rmanohar, ath9k-devel, linux-wireless, rmanohar, bharat.kumar.gogada On 2016-12-12 19:50, Tobias Klausmann wrote: > Starting with ath9k: use ieee80211_tx_status_noskb where possible > [d94a461d7a7df68991fb9663531173f60ef89c68] 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> > --- > drivers/net/wireless/ath/ath9k/xmit.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c > index 52bfbb988611..857d5ae09a1d 100644 > --- a/drivers/net/wireless/ath/ath9k/xmit.c > +++ b/drivers/net/wireless/ath/ath9k/xmit.c > @@ -2787,6 +2787,7 @@ void ath_tx_edma_tasklet(struct ath_softc *sc) > fifo_list = &txq->txq_fifo[txq->txq_tailidx]; > if (list_empty(fifo_list)) { > ath_txq_unlock(sc, txq); > + rcu_read_unlock(); Technically this is fine as well, but I'd prefer a fix where you replace the 'return' with 'break', thus avoiding the duplication of rcu_read_unlock() Thanks, - Felix ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] ath9k: unlock rcu read when returning early 2016-12-13 10:41 ` Felix Fietkau @ 2016-12-13 13:41 ` Tobias Klausmann 2016-12-13 13:52 ` Felix Fietkau 2016-12-13 17:08 ` [PATCH v2] ath9k: do not return early to fix rcu unlocking Tobias Klausmann 1 sibling, 1 reply; 8+ messages in thread From: Tobias Klausmann @ 2016-12-13 13:41 UTC (permalink / raw) To: Felix Fietkau, kvalo, helgaas, linux-kernel, linux-pci, marc.zyngier, Janusz.Dziedzic, rmanohar, ath9k-devel, linux-wireless, rmanohar, bharat.kumar.gogada On 13.12.2016 11:41, Felix Fietkau wrote: > On 2016-12-12 19:50, Tobias Klausmann wrote: >> Starting with ath9k: use ieee80211_tx_status_noskb where possible >> [d94a461d7a7df68991fb9663531173f60ef89c68] 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> >> --- >> drivers/net/wireless/ath/ath9k/xmit.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c >> index 52bfbb988611..857d5ae09a1d 100644 >> --- a/drivers/net/wireless/ath/ath9k/xmit.c >> +++ b/drivers/net/wireless/ath/ath9k/xmit.c >> @@ -2787,6 +2787,7 @@ void ath_tx_edma_tasklet(struct ath_softc *sc) >> fifo_list = &txq->txq_fifo[txq->txq_tailidx]; >> if (list_empty(fifo_list)) { >> ath_txq_unlock(sc, txq); >> + rcu_read_unlock(); > Technically this is fine as well, but I'd prefer a fix where you replace > the 'return' with 'break', thus avoiding the duplication of > rcu_read_unlock() Actually if you want to avoid it, maybe skipping over the rest is better (as originally intended): ... ath_txq_unlock(sc, txq); goto unlock; } ... unlock: rcu_read_unlock(); Thanks, Tobias > > Thanks, > > - Felix > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] ath9k: unlock rcu read when returning early 2016-12-13 13:41 ` Tobias Klausmann @ 2016-12-13 13:52 ` Felix Fietkau 0 siblings, 0 replies; 8+ messages in thread From: Felix Fietkau @ 2016-12-13 13:52 UTC (permalink / raw) To: Tobias Klausmann, kvalo, helgaas, linux-kernel, linux-pci, marc.zyngier, Janusz.Dziedzic, rmanohar, ath9k-devel, linux-wireless, rmanohar, bharat.kumar.gogada On 2016-12-13 14:41, Tobias Klausmann wrote: > On 13.12.2016 11:41, Felix Fietkau wrote: >> On 2016-12-12 19:50, Tobias Klausmann wrote: >>> diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c >>> index 52bfbb988611..857d5ae09a1d 100644 >>> --- a/drivers/net/wireless/ath/ath9k/xmit.c >>> +++ b/drivers/net/wireless/ath/ath9k/xmit.c >>> @@ -2787,6 +2787,7 @@ void ath_tx_edma_tasklet(struct ath_softc *sc) >>> fifo_list = &txq->txq_fifo[txq->txq_tailidx]; >>> if (list_empty(fifo_list)) { >>> ath_txq_unlock(sc, txq); >>> + rcu_read_unlock(); >> Technically this is fine as well, but I'd prefer a fix where you replace >> the 'return' with 'break', thus avoiding the duplication of >> rcu_read_unlock() > > Actually if you want to avoid it, maybe skipping over the rest is better > (as originally intended): > > ... > > ath_txq_unlock(sc, txq); > > > goto unlock; > } > ... > > unlock: > rcu_read_unlock(); There are already other places that skip to the rcu_read_unlock() part by using 'break'. I don't see how adding an unnecessary goto makes things any better. - Felix ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2] ath9k: do not return early to fix rcu unlocking 2016-12-13 10:41 ` Felix Fietkau 2016-12-13 13:41 ` Tobias Klausmann @ 2016-12-13 17:08 ` Tobias Klausmann 2016-12-14 20:45 ` Felix Fietkau 2016-12-21 14:29 ` [v2] " Kalle Valo 1 sibling, 2 replies; 8+ messages in thread From: Tobias Klausmann @ 2016-12-13 17:08 UTC (permalink / raw) To: kvalo, helgaas, linux-kernel, linux-pci, marc.zyngier, Janusz.Dziedzic, ath9k-devel, linux-wireless, rmanohar, bharat.kumar.gogada Cc: Tobias Klausmann, # v4 . 9 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 --- v2: break instead of unlock (rename patch) [Felix Fietkau], fix reference to commit [Kalle Valo] --- drivers/net/wireless/ath/ath9k/xmit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c index 52bfbb988611..e47286bf378e 100644 --- a/drivers/net/wireless/ath/ath9k/xmit.c +++ b/drivers/net/wireless/ath/ath9k/xmit.c @@ -2787,7 +2787,7 @@ void ath_tx_edma_tasklet(struct ath_softc *sc) fifo_list = &txq->txq_fifo[txq->txq_tailidx]; if (list_empty(fifo_list)) { ath_txq_unlock(sc, txq); - return; + break; } bf = list_first_entry(fifo_list, struct ath_buf, list); -- 2.11.0 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2] ath9k: do not return early to fix rcu unlocking 2016-12-13 17:08 ` [PATCH v2] ath9k: do not return early to fix rcu unlocking Tobias Klausmann @ 2016-12-14 20:45 ` Felix Fietkau 2016-12-21 14:29 ` [v2] " Kalle Valo 1 sibling, 0 replies; 8+ messages in thread From: Felix Fietkau @ 2016-12-14 20:45 UTC (permalink / raw) To: Tobias Klausmann, kvalo, helgaas, linux-kernel, linux-pci, marc.zyngier, Janusz.Dziedzic, ath9k-devel, linux-wireless, rmanohar, bharat.kumar.gogada Cc: # v4 . 9 On 2016-12-13 18:08, Tobias Klausmann wrote: > 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> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [v2] ath9k: do not return early to fix rcu unlocking 2016-12-13 17:08 ` [PATCH v2] ath9k: do not return early to fix rcu unlocking Tobias Klausmann 2016-12-14 20:45 ` Felix Fietkau @ 2016-12-21 14:29 ` Kalle Valo 1 sibling, 0 replies; 8+ messages in thread From: Kalle Valo @ 2016-12-21 14:29 UTC (permalink / raw) To: Tobias Klausmann Cc: kvalo, helgaas, linux-kernel, linux-pci, marc.zyngier, janusz.dziedzic, ath9k-devel, linux-wireless, rmanohar, bharat.kumar.gogada, Tobias Klausmann, # v4 . 9 Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de> wrote: > 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> Patch applied to ath-current branch of ath.git, thanks. d1f1c0e289e1 ath9k: do not return early to fix rcu unlocking -- https://patchwork.kernel.org/patch/9472709/ Documentation about submitting wireless patches and checking status from patchwork: https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2016-12-21 14:29 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <1cFMHb-00BdWd-Ks> 2016-12-12 18:50 ` [PATCH] ath9k: unlock rcu read when returning early Tobias Klausmann 2016-12-13 9:59 ` Kalle Valo 2016-12-13 10:41 ` Felix Fietkau 2016-12-13 13:41 ` Tobias Klausmann 2016-12-13 13:52 ` Felix Fietkau 2016-12-13 17:08 ` [PATCH v2] ath9k: do not return early to fix rcu unlocking Tobias Klausmann 2016-12-14 20:45 ` Felix Fietkau 2016-12-21 14:29 ` [v2] " Kalle Valo
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).