On Mon, Aug 28, 2023 at 04:10:32AM +0200, andrey.konovalov@xxxxxxxxx wrote: > From: Andrey Konovalov <andreyknvl@xxxxxxxxx> > > Return USB_GADGET_DELAYED_STATUS from the setup() callback for 0-length > transfers as a workaround to stop some UDC drivers (e.g. dwc3) from > automatically proceeding with the status stage. > > This workaround should be removed once all UDC drivers are fixed to > always delay the status stage until a response is queued to EP0. > > Signed-off-by: Andrey Konovalov <andreyknvl@xxxxxxxxx> > --- > drivers/usb/gadget/legacy/inode.c | 15 ++++++++++++++- > 1 file changed, 14 insertions(+), 1 deletion(-) > > diff --git a/drivers/usb/gadget/legacy/inode.c b/drivers/usb/gadget/legacy/inode.c > index 28249d0bf062..154bbf578ba2 100644 > --- a/drivers/usb/gadget/legacy/inode.c > +++ b/drivers/usb/gadget/legacy/inode.c > @@ -31,6 +31,7 @@ > > #include <linux/usb/gadgetfs.h> > #include <linux/usb/gadget.h> > +#include <linux/usb/composite.h> Add: /* for USB_GADGET_DELAYED_STATUS */ > > > /* > @@ -241,6 +242,7 @@ static DEFINE_MUTEX(sb_mutex); /* Serialize superblock operations */ > #define xprintk(d,level,fmt,args...) \ > printk(level "%s: " fmt , shortname , ## args) > > +#undef DBG > #ifdef DEBUG > #define DBG(dev,fmt,args...) \ > xprintk(dev , KERN_DEBUG , fmt , ## args) > @@ -256,8 +258,10 @@ static DEFINE_MUTEX(sb_mutex); /* Serialize superblock operations */ > do { } while (0) > #endif /* DEBUG */ > > +#undef ERROR > #define ERROR(dev,fmt,args...) \ > xprintk(dev , KERN_ERR , fmt , ## args) > +#undef INFO Please move these #undef lines up, just after the new #include. And add a comment explaining briefly why they are needed. Aside from these changes, Reviewed-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>