when do role switch from device to host mode, first disable device mode, currently there is no better way to confirm when gadget was complete removed. change device release function to clear gadget pointer, this will confirm device stop complete when it is NULL. Signed-off-by: Linyu Yuan <quic_linyyuan@xxxxxxxxxxx> --- v2: fix comment from Greg Kroah-Hartman and improve commit log drivers/usb/dwc3/gadget.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 804b505..e2ab5f6 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -4188,9 +4188,10 @@ static int dwc3_gadget_get_irq(struct dwc3 *dwc) static void dwc_gadget_release(struct device *dev) { - struct usb_gadget *gadget = container_of(dev, struct usb_gadget, dev); + struct dwc3 *dwc = dev_get_platdata(dev); - kfree(gadget); + kfree(dwc->gadget); + dwc->gadget = NULL; } /** -- 2.7.4