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.
Alan Stern
Sebastian