Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> wrote: > The USB completion callback does not disable interrupts while acquiring > the lock. We want to remove the local_irq_disable() invocation from > __usb_hcd_giveback_urb() and therefore it is required for the callback > handler to disable the interrupts while acquiring the lock. > The callback may be invoked either in IRQ or BH context depending on the > USB host controller. > Use the _irqsave() variant of the locking primitives. > > I am removing the > BUG_ON(!in_interrupt()); > > check because it serves no purpose. Running the completion callback in > BH context makes in_interrupt() still return true but the interrupts > could be enabled. The important part is that ->driver_lock is acquired > with disabled interrupts which is the case now. > > Cc: Kalle Valo <kvalo@xxxxxxxxxxxxxx> > Cc: "David S. Miller" <davem@xxxxxxxxxxxxx> > Cc: linux-wireless@xxxxxxxxxxxxxxx > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> 3 patches applied to wireless-drivers-next.git, thanks. fc75122fabb5 libertas_tf: use irqsave() in USB's complete callback a3128feef6d5 libertas: use irqsave() in USB's complete callback 81454b8405f2 zd1211rw: use irqsave() in USB's complete callback -- https://patchwork.kernel.org/patch/10478609/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches