[BUG REPORT] USB UDC/gadget regression

From: Aaro Koskinen
Date: Wed Feb 01 2023 - 14:20:38 EST


Hi,

After commit fc274c1e9973 ("USB: gadget: Add a new bus for gadgets"),
g_ether started to crash on modprobe when used with OMAP UDC.

It seems that because of drv->bus getting set to NULL in the middle of
bus_add_driver() things go wrong.

The below simple change seems to fix it, but I'm not sure if this is
the correct way? Many drivers seem to be doing the same in UDC start -
are they really all broken?

diff --git a/drivers/usb/gadget/udc/omap_udc.c b/drivers/usb/gadget/udc/omap_udc.c
index 6e9314e95be3..47d83bbb09e3 100644
--- a/drivers/usb/gadget/udc/omap_udc.c
+++ b/drivers/usb/gadget/udc/omap_udc.c
@@ -2062,7 +2062,6 @@ static int omap_udc_start(struct usb_gadget *g,
udc->softconnect = 1;

/* hook up the driver */
- driver->driver.bus = NULL;
udc->driver = driver;
spin_unlock_irqrestore(&udc->lock, flags);

A.