Stanislaw Gruszka <sgruszka@xxxxxxxxxx> wrote: > ENOENT usb error mean "specified interface or endpoint does not exist or > is not enabled". Mark device not present when we encounter this error > similar like we do with ENODEV error. > > Otherwise we can have infinite loop in rt2x00usb_work_rxdone(), because > we remove and put again RX entries to the queue infinitely. > > We can have similar situation when submit urb will fail all the time > with other error, so we need consider to limit number of entries > processed by rxdone work. But for now, since the patch fixes > reproducible soft lockup issue on single processor systems > and taken ENOENT error meaning, let apply this fix. > > Patch adds additional ENOENT check not only in rx kick routine, but > also on other places where we check for ENODEV error. > > Reported-by: Richard Genoud <richard.genoud@xxxxxxxxx> > Debugged-by: Richard Genoud <richard.genoud@xxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Stanislaw Gruszka <sgruszka@xxxxxxxxxx> > Tested-by: Richard Genoud <richard.genoud@xxxxxxxxx> Patch applied to wireless-drivers-next.git, thanks. bfa62a52cad9 rt2x00usb: mark device removed when get ENOENT usb error -- https://patchwork.kernel.org/patch/10050781/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches