On Sat, 6 Jul 2019, Benjamin Herrenschmidt wrote: > On Fri, 2019-07-05 at 10:08 -0400, Alan Stern wrote: > > On Fri, 5 Jul 2019, Benjamin Herrenschmidt wrote: > > > Sure but it would be nice if the mass storage dealt with -ESHUTDOWN > > > properly and stopped :-) Or other errors... if the UDC HW for example > > > dies for some reason, mass storage will lockup. > > > > I suppose we could add code to check for this case and handle it, > > although I'm not sure what would be the right thing to do. Delay for > > one second and try again? Disable the gadget until the host does a > > reset? > > I think just stop it until the next reset yes. Can you test this patch? Alan Stern Index: usb-devel/drivers/usb/gadget/function/f_mass_storage.c =================================================================== --- usb-devel.orig/drivers/usb/gadget/function/f_mass_storage.c +++ usb-devel/drivers/usb/gadget/function/f_mass_storage.c @@ -552,13 +552,14 @@ static int start_transfer(struct fsg_dev /* We can't do much more than wait for a reset */ req->status = rc; + if (rc == -ESHUTDOWN) + fsg->common->running = 0; /* * Note: currently the net2280 driver fails zero-length * submissions if DMA is enabled. */ - if (rc != -ESHUTDOWN && - !(rc == -EOPNOTSUPP && req->length == 0)) + else if (!(rc == -EOPNOTSUPP && req->length == 0)) WARNING(fsg, "error in submission: %s --> %d\n", ep->name, rc); }