aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/dwc3/gadget.h
diff options
context:
space:
mode:
authorPeter Chen <peter.chen@nxp.com>2020-08-21 10:55:48 +0800
committerFelipe Balbi <balbi@kernel.org>2020-10-02 09:57:42 +0300
commite81a7018d93a7de31a3f121c9a7eecd0a5ec58b0 (patch)
tree4df35b09f38a78e71a14a9f5c7c6db7aa161c15a /drivers/usb/dwc3/gadget.h
parentusb: cdns3: gadget: fix possible memory leak (diff)
downloadlinux-dev-e81a7018d93a7de31a3f121c9a7eecd0a5ec58b0.tar.xz
linux-dev-e81a7018d93a7de31a3f121c9a7eecd0a5ec58b0.zip
usb: dwc3: allocate gadget structure dynamically
The current code uses commit fac323471df6 ("usb: udc: allow adding and removing the same gadget device") as the workaround to let the gadget device is re-used, but it is not allowed from driver core point. In this commit, we allocate gadget structure dynamically, and free it at its release function. Since the gadget device's driver_data has already occupied by usb_composite_dev structure, we have to use gadget device's platform data to store dwc3 structure. Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Alan Stern <stern@rowland.harvard.edu> Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Peter Chen <peter.chen@nxp.com> Signed-off-by: Felipe Balbi <balbi@kernel.org>
Diffstat (limited to 'drivers/usb/dwc3/gadget.h')
-rw-r--r--drivers/usb/dwc3/gadget.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/usb/dwc3/gadget.h b/drivers/usb/dwc3/gadget.h
index a7791cb827c4..0cd281949970 100644
--- a/drivers/usb/dwc3/gadget.h
+++ b/drivers/usb/dwc3/gadget.h
@@ -17,7 +17,7 @@
struct dwc3;
#define to_dwc3_ep(ep) (container_of(ep, struct dwc3_ep, endpoint))
-#define gadget_to_dwc(g) (container_of(g, struct dwc3, gadget))
+#define gadget_to_dwc(g) (dev_get_platdata(&g->dev))
/* DEPCFG parameter 1 */
#define DWC3_DEPCFG_INT_NUM(n) (((n) & 0x1f) << 0)