Message ID | 20210309084242.313899703@linutronix.de |
---|---|
State | New |
Headers | show |
Series | tasklets: Replace the spin wait loops and make it RT safe | expand |
Thomas Gleixner <tglx@linutronix.de> writes: > From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> > > All callers of ath9k_beacon_ensure_primary_slot() are preemptible / > acquire a mutex except for this callchain: > > spin_lock_bh(&sc->sc_pcu_lock); > ath_complete_reset() > -> ath9k_calculate_summary_state() > -> ath9k_beacon_ensure_primary_slot() > > It's unclear how that can be distangled, so use tasklet_disable_in_atomic() > for now. This allows tasklet_disable() to become sleepable once the > remaining atomic users are cleaned up. > > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> > Signed-off-by: Thomas Gleixner <tglx@linutronix.de> > Cc: ath9k-devel@qca.qualcomm.com > Cc: Kalle Valo <kvalo@codeaurora.org> > Cc: "David S. Miller" <davem@davemloft.net> > Cc: Jakub Kicinski <kuba@kernel.org> > Cc: linux-wireless@vger.kernel.org > Cc: netdev@vger.kernel.org > --- > drivers/net/wireless/ath/ath9k/beacon.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) I assume this goes via some other tree: Acked-by: Kalle Valo <kvalo@codeaurora.org>
--- a/drivers/net/wireless/ath/ath9k/beacon.c +++ b/drivers/net/wireless/ath/ath9k/beacon.c @@ -251,7 +251,7 @@ void ath9k_beacon_ensure_primary_slot(st int first_slot = ATH_BCBUF; int slot; - tasklet_disable(&sc->bcon_tasklet); + tasklet_disable_in_atomic(&sc->bcon_tasklet); /* Find first taken slot. */ for (slot = 0; slot < ATH_BCBUF; slot++) {