Message ID | 20240315020144.2715575-1-yuanlinyu@hihonor.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 2a587a035214fa1b5ef598aea0b81848c5b72e5e |
Headers | show |
Series | [v4] usb: udc: remove warning when queue disabled ep | expand |
On Fri, Mar 15, 2024 at 10:01:44AM +0800, yuan linyu wrote: > It is possible trigger below warning message from mass storage function, > > WARNING: CPU: 6 PID: 3839 at drivers/usb/gadget/udc/core.c:294 usb_ep_queue+0x7c/0x104 > pc : usb_ep_queue+0x7c/0x104 > lr : fsg_main_thread+0x494/0x1b3c > > Root cause is mass storage function try to queue request from main thread, > but other thread may already disable ep when function disable. > > As there is no function failure in the driver, in order to avoid effort > to fix warning, change WARN_ON_ONCE() in usb_ep_queue() to pr_debug(). > > Suggested-by: Alan Stern <stern@rowland.harvard.edu> > Cc: <stable@vger.kernel.org> > Signed-off-by: yuan linyu <yuanlinyu@hihonor.com> > --- Reviewed-by: Alan Stern <stern@rowland.harvard.edu> > v4: add version info in subject > v3: add more debug info, remove two line commit description > https://lore.kernel.org/linux-usb/20240315015854.2715357-1-yuanlinyu@hihonor.com/ > v2: change WARN_ON_ONCE() in usb_ep_queue() to pr_debug() > https://lore.kernel.org/linux-usb/20240315013019.2711135-1-yuanlinyu@hihonor.com/ > v1: https://lore.kernel.org/linux-usb/20240314065949.2627778-1-yuanlinyu@hihonor.com/ > > drivers/usb/gadget/udc/core.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/usb/gadget/udc/core.c b/drivers/usb/gadget/udc/core.c > index 9d4150124fdb..b3a9d18a8dcd 100644 > --- a/drivers/usb/gadget/udc/core.c > +++ b/drivers/usb/gadget/udc/core.c > @@ -292,7 +292,9 @@ int usb_ep_queue(struct usb_ep *ep, > { > int ret = 0; > > - if (WARN_ON_ONCE(!ep->enabled && ep->address)) { > + if (!ep->enabled && ep->address) { > + pr_debug("USB gadget: queue request to disabled ep 0x%x (%s)\n", > + ep->address, ep->name); > ret = -ESHUTDOWN; > goto out; > } > -- > 2.25.1 >
diff --git a/drivers/usb/gadget/udc/core.c b/drivers/usb/gadget/udc/core.c index 9d4150124fdb..b3a9d18a8dcd 100644 --- a/drivers/usb/gadget/udc/core.c +++ b/drivers/usb/gadget/udc/core.c @@ -292,7 +292,9 @@ int usb_ep_queue(struct usb_ep *ep, { int ret = 0; - if (WARN_ON_ONCE(!ep->enabled && ep->address)) { + if (!ep->enabled && ep->address) { + pr_debug("USB gadget: queue request to disabled ep 0x%x (%s)\n", + ep->address, ep->name); ret = -ESHUTDOWN; goto out; }
It is possible trigger below warning message from mass storage function, WARNING: CPU: 6 PID: 3839 at drivers/usb/gadget/udc/core.c:294 usb_ep_queue+0x7c/0x104 pc : usb_ep_queue+0x7c/0x104 lr : fsg_main_thread+0x494/0x1b3c Root cause is mass storage function try to queue request from main thread, but other thread may already disable ep when function disable. As there is no function failure in the driver, in order to avoid effort to fix warning, change WARN_ON_ONCE() in usb_ep_queue() to pr_debug(). Suggested-by: Alan Stern <stern@rowland.harvard.edu> Cc: <stable@vger.kernel.org> Signed-off-by: yuan linyu <yuanlinyu@hihonor.com> --- v4: add version info in subject v3: add more debug info, remove two line commit description https://lore.kernel.org/linux-usb/20240315015854.2715357-1-yuanlinyu@hihonor.com/ v2: change WARN_ON_ONCE() in usb_ep_queue() to pr_debug() https://lore.kernel.org/linux-usb/20240315013019.2711135-1-yuanlinyu@hihonor.com/ v1: https://lore.kernel.org/linux-usb/20240314065949.2627778-1-yuanlinyu@hihonor.com/ drivers/usb/gadget/udc/core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)