On 12.06.19 16:47, Sebastian Andrzej Siewior wrote:
On 2019-06-12 10:38:11 [-0400], Alan Stern wrote:
When stopping hostapd after it hangs: [ 903.504475] ieee80211 phy0: rt2x00queue_flush_queue: Warning - Queue 14 failed to flush
Instead of reverting the original commit, can you prevent the problem by adding local_irq_save() and local_irq_restore() to the URB completion routines in that wireless driver?
Probably people who aren't already pretty familiar with the driver code won't easily be able to locate the race. Still, a little overkill may be an acceptable solution.
Not from RT point of view because you do local_irq_save() -> spin_lock()
but it might be worth checking if the local_irq_save() within that wireless driver avoids the race or not.
I just sent a patch for the underlying problem in the rt2x00 driver, see [1]. So we can drop this patch here and keep RT folks happy. I really hope that no other usb drivers are affected by similar problems.
Zyxel support just sent me (some?) source code for the firmware of my internet router (my real problem I mentioned before). Need to look into this...
Thanks for your help, Soeren
[1] https://lkml.org/lkml/2019/6/17/238
Alan Stern
Sebastian