Re: [syzbot] WARNING in usb_tx_block/usb_submit_urb

From: Fabio M. De Francesco
Date: Thu Feb 16 2023 - 04:21:47 EST


On giovedì 16 febbraio 2023 09:18:34 CET Hillf Danton wrote:
> Fabio!
>
> On Thu, 16 Feb 2023 07:54:08 +0100 Fabio M. De Francesco
> <fmdefrancesco@xxxxxxxxx>
> > > do {
> > >
> > > int j =3D 0;
> > > i++;
> > >
> > > - if_usb_issue_boot_command(cardp, BOOT_CMD_FW_BY_USB);
> >
> > Don't we need to call if_usb_issue_boot_command() in a loop in order to
> > retry
> > the command?
>
> Nope certainly because of no sense made by sending it again, given no
> response this round.
>

Your argument looks reasonable but...

For what regards subsystems/drivers whose I'm not expert I always assume that
the authors know what they do despite bugs. I mean that looks more probable
that they have reasons to issue several calls to if_usb_issue_boot_command() /
usb_submit_urb in a loop. May be that those usb_submit_urb get lost in some
particular conditions, since they decide to try if_usb_issue_boot_command() in
a loop (but forget to kill the URB before next iteration).

I have no reasons to think you are wrong. However I don't understand the
reason that made you leave the loops untouched (except the line with the call
to if_usb_issue_boot_command().

I suppose that, if you confirm that we have no reasons to reiterate that call,
you should also leave only one loop waiting for response.

Am I missing something?

Thanks,

Fabio