]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
drop usb-dwc3-debugfs-add-and-remove-endpoint-dirs-dynamically.patch from everywhere
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 15 Jun 2021 10:24:24 +0000 (12:24 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 15 Jun 2021 10:24:24 +0000 (12:24 +0200)
queue-4.19/series
queue-4.19/usb-dwc3-debugfs-add-and-remove-endpoint-dirs-dynamically.patch [deleted file]
queue-5.10/series
queue-5.10/usb-dwc3-debugfs-add-and-remove-endpoint-dirs-dynamically.patch [deleted file]
queue-5.12/series
queue-5.12/usb-dwc3-debugfs-add-and-remove-endpoint-dirs-dynamically.patch [deleted file]
queue-5.4/series
queue-5.4/usb-dwc3-debugfs-add-and-remove-endpoint-dirs-dynamically.patch [deleted file]

index ddf53d57866388f654ec0bc1b4ec3ba727d247c6..5512cc0eba4e3e6bbae8b370738815506d5226e8 100644 (file)
@@ -35,7 +35,6 @@ cgroup1-don-t-allow-n-in-renaming.patch
 usb-f_ncm-ncm_bitrate-speed-is-unsigned.patch
 usb-f_ncm-only-first-packet-of-aggregate-needs-to-start-timer.patch
 usb-pd-set-pd_t_sink_wait_cap-to-310ms.patch
-usb-dwc3-debugfs-add-and-remove-endpoint-dirs-dynamically.patch
 usb-dwc3-ep0-fix-null-pointer-exception.patch
 usb-typec-ucsi-clear-ppm-capability-data-in-ucsi_init-error-path.patch
 usb-gadget-f_fs-ensure-io_completion_wq-is-idle-during-unbind.patch
diff --git a/queue-4.19/usb-dwc3-debugfs-add-and-remove-endpoint-dirs-dynamically.patch b/queue-4.19/usb-dwc3-debugfs-add-and-remove-endpoint-dirs-dynamically.patch
deleted file mode 100644 (file)
index 7cab6b8..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-From 8d396bb0a5b62b326f6be7594d8bd46b088296bd Mon Sep 17 00:00:00 2001
-From: Jack Pham <jackp@codeaurora.org>
-Date: Sat, 29 May 2021 12:29:32 -0700
-Subject: usb: dwc3: debugfs: Add and remove endpoint dirs dynamically
-
-From: Jack Pham <jackp@codeaurora.org>
-
-commit 8d396bb0a5b62b326f6be7594d8bd46b088296bd upstream.
-
-The DWC3 DebugFS directory and files are currently created once
-during probe.  This includes creation of subdirectories for each
-of the gadget's endpoints.  This works fine for peripheral-only
-controllers, as dwc3_core_init_mode() calls dwc3_gadget_init()
-just prior to calling dwc3_debugfs_init().
-
-However, for dual-role controllers, dwc3_core_init_mode() will
-instead call dwc3_drd_init() which is problematic in a few ways.
-First, the initial state must be determined, then dwc3_set_mode()
-will have to schedule drd_work and by then dwc3_debugfs_init()
-could have already been invoked.  Even if the initial mode is
-peripheral, dwc3_gadget_init() happens after the DebugFS files
-are created, and worse so if the initial state is host and the
-controller switches to peripheral much later.  And secondly,
-even if the gadget endpoints' debug entries were successfully
-created, if the controller exits peripheral mode, its dwc3_eps
-are freed so the debug files would now hold stale references.
-
-So it is best if the DebugFS endpoint entries are created and
-removed dynamically at the same time the underlying dwc3_eps are.
-Do this by calling dwc3_debugfs_create_endpoint_dir() as each
-endpoint is created, and conversely remove the DebugFS entry when
-the endpoint is freed.
-
-Fixes: 41ce1456e1db ("usb: dwc3: core: make dwc3_set_mode() work properly")
-Cc: stable <stable@vger.kernel.org>
-Reviewed-by: Peter Chen <peter.chen@kernel.org>
-Signed-off-by: Jack Pham <jackp@codeaurora.org>
-Link: https://lore.kernel.org/r/20210529192932.22912-1-jackp@codeaurora.org
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/usb/dwc3/debug.h   |    3 +++
- drivers/usb/dwc3/debugfs.c |   21 ++-------------------
- drivers/usb/dwc3/gadget.c  |    3 +++
- 3 files changed, 8 insertions(+), 19 deletions(-)
-
---- a/drivers/usb/dwc3/debug.h
-+++ b/drivers/usb/dwc3/debug.h
-@@ -653,9 +653,12 @@ static inline const char *dwc3_gadget_ge
- #ifdef CONFIG_DEBUG_FS
-+extern void dwc3_debugfs_create_endpoint_dir(struct dwc3_ep *dep);
- extern void dwc3_debugfs_init(struct dwc3 *);
- extern void dwc3_debugfs_exit(struct dwc3 *);
- #else
-+static inline void dwc3_debugfs_create_endpoint_dir(struct dwc3_ep *dep)
-+{  }
- static inline void dwc3_debugfs_init(struct dwc3 *d)
- {  }
- static inline void dwc3_debugfs_exit(struct dwc3 *d)
---- a/drivers/usb/dwc3/debugfs.c
-+++ b/drivers/usb/dwc3/debugfs.c
-@@ -725,30 +725,14 @@ static void dwc3_debugfs_create_endpoint
-       }
- }
--static void dwc3_debugfs_create_endpoint_dir(struct dwc3_ep *dep,
--              struct dentry *parent)
-+void dwc3_debugfs_create_endpoint_dir(struct dwc3_ep *dep)
- {
-       struct dentry           *dir;
--      dir = debugfs_create_dir(dep->name, parent);
-+      dir = debugfs_create_dir(dep->name, dep->dwc->root);
-       dwc3_debugfs_create_endpoint_files(dep, dir);
- }
--static void dwc3_debugfs_create_endpoint_dirs(struct dwc3 *dwc,
--              struct dentry *parent)
--{
--      int                     i;
--
--      for (i = 0; i < dwc->num_eps; i++) {
--              struct dwc3_ep  *dep = dwc->eps[i];
--
--              if (!dep)
--                      continue;
--
--              dwc3_debugfs_create_endpoint_dir(dep, parent);
--      }
--}
--
- void dwc3_debugfs_init(struct dwc3 *dwc)
- {
-       struct dentry           *root;
-@@ -777,7 +761,6 @@ void dwc3_debugfs_init(struct dwc3 *dwc)
-                                   &dwc3_testmode_fops);
-               debugfs_create_file("link_state", S_IRUGO | S_IWUSR, root, dwc,
-                                   &dwc3_link_state_fops);
--              dwc3_debugfs_create_endpoint_dirs(dwc, root);
-       }
- }
---- a/drivers/usb/dwc3/gadget.c
-+++ b/drivers/usb/dwc3/gadget.c
-@@ -2255,6 +2255,8 @@ static int dwc3_gadget_init_endpoint(str
-       INIT_LIST_HEAD(&dep->started_list);
-       INIT_LIST_HEAD(&dep->cancelled_list);
-+      dwc3_debugfs_create_endpoint_dir(dep);
-+
-       return 0;
- }
-@@ -2298,6 +2300,7 @@ static void dwc3_gadget_free_endpoints(s
-                       list_del(&dep->endpoint.ep_list);
-               }
-+              debugfs_remove_recursive(debugfs_lookup(dep->name, dwc->root));
-               kfree(dep);
-       }
- }
index 4c847c348c7fa23213d98735a6febcf790a73181..b3c5045534d9478c75ae530e68799f6db53f95e7 100644 (file)
@@ -69,7 +69,6 @@ usb-pd-set-pd_t_sink_wait_cap-to-310ms.patch
 usb-dwc3-meson-g12a-fix-usb2-phy-glue-init-when-phy0-is-disabled.patch
 usb-dwc3-meson-g12a-disable-the-regulator-in-the-error-handling-path-of-the-probe.patch
 usb-dwc3-gadget-bail-from-dwc3_gadget_exit-if-dwc-gadget-is-null.patch
-usb-dwc3-debugfs-add-and-remove-endpoint-dirs-dynamically.patch
 usb-dwc3-ep0-fix-null-pointer-exception.patch
 usb-musb-fix-musb_quirk_b_disconnect_99-handling.patch
 usb-typec-wcove-use-le-to-cpu-conversion-when-accessing-msg-header.patch
diff --git a/queue-5.10/usb-dwc3-debugfs-add-and-remove-endpoint-dirs-dynamically.patch b/queue-5.10/usb-dwc3-debugfs-add-and-remove-endpoint-dirs-dynamically.patch
deleted file mode 100644 (file)
index 8b40987..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-From 8d396bb0a5b62b326f6be7594d8bd46b088296bd Mon Sep 17 00:00:00 2001
-From: Jack Pham <jackp@codeaurora.org>
-Date: Sat, 29 May 2021 12:29:32 -0700
-Subject: usb: dwc3: debugfs: Add and remove endpoint dirs dynamically
-
-From: Jack Pham <jackp@codeaurora.org>
-
-commit 8d396bb0a5b62b326f6be7594d8bd46b088296bd upstream.
-
-The DWC3 DebugFS directory and files are currently created once
-during probe.  This includes creation of subdirectories for each
-of the gadget's endpoints.  This works fine for peripheral-only
-controllers, as dwc3_core_init_mode() calls dwc3_gadget_init()
-just prior to calling dwc3_debugfs_init().
-
-However, for dual-role controllers, dwc3_core_init_mode() will
-instead call dwc3_drd_init() which is problematic in a few ways.
-First, the initial state must be determined, then dwc3_set_mode()
-will have to schedule drd_work and by then dwc3_debugfs_init()
-could have already been invoked.  Even if the initial mode is
-peripheral, dwc3_gadget_init() happens after the DebugFS files
-are created, and worse so if the initial state is host and the
-controller switches to peripheral much later.  And secondly,
-even if the gadget endpoints' debug entries were successfully
-created, if the controller exits peripheral mode, its dwc3_eps
-are freed so the debug files would now hold stale references.
-
-So it is best if the DebugFS endpoint entries are created and
-removed dynamically at the same time the underlying dwc3_eps are.
-Do this by calling dwc3_debugfs_create_endpoint_dir() as each
-endpoint is created, and conversely remove the DebugFS entry when
-the endpoint is freed.
-
-Fixes: 41ce1456e1db ("usb: dwc3: core: make dwc3_set_mode() work properly")
-Cc: stable <stable@vger.kernel.org>
-Reviewed-by: Peter Chen <peter.chen@kernel.org>
-Signed-off-by: Jack Pham <jackp@codeaurora.org>
-Link: https://lore.kernel.org/r/20210529192932.22912-1-jackp@codeaurora.org
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/usb/dwc3/debug.h   |    3 +++
- drivers/usb/dwc3/debugfs.c |   21 ++-------------------
- drivers/usb/dwc3/gadget.c  |    3 +++
- 3 files changed, 8 insertions(+), 19 deletions(-)
-
---- a/drivers/usb/dwc3/debug.h
-+++ b/drivers/usb/dwc3/debug.h
-@@ -413,9 +413,12 @@ static inline const char *dwc3_gadget_ge
- #ifdef CONFIG_DEBUG_FS
-+extern void dwc3_debugfs_create_endpoint_dir(struct dwc3_ep *dep);
- extern void dwc3_debugfs_init(struct dwc3 *d);
- extern void dwc3_debugfs_exit(struct dwc3 *d);
- #else
-+static inline void dwc3_debugfs_create_endpoint_dir(struct dwc3_ep *dep)
-+{  }
- static inline void dwc3_debugfs_init(struct dwc3 *d)
- {  }
- static inline void dwc3_debugfs_exit(struct dwc3 *d)
---- a/drivers/usb/dwc3/debugfs.c
-+++ b/drivers/usb/dwc3/debugfs.c
-@@ -890,30 +890,14 @@ static void dwc3_debugfs_create_endpoint
-       }
- }
--static void dwc3_debugfs_create_endpoint_dir(struct dwc3_ep *dep,
--              struct dentry *parent)
-+void dwc3_debugfs_create_endpoint_dir(struct dwc3_ep *dep)
- {
-       struct dentry           *dir;
--      dir = debugfs_create_dir(dep->name, parent);
-+      dir = debugfs_create_dir(dep->name, dep->dwc->root);
-       dwc3_debugfs_create_endpoint_files(dep, dir);
- }
--static void dwc3_debugfs_create_endpoint_dirs(struct dwc3 *dwc,
--              struct dentry *parent)
--{
--      int                     i;
--
--      for (i = 0; i < dwc->num_eps; i++) {
--              struct dwc3_ep  *dep = dwc->eps[i];
--
--              if (!dep)
--                      continue;
--
--              dwc3_debugfs_create_endpoint_dir(dep, parent);
--      }
--}
--
- void dwc3_debugfs_init(struct dwc3 *dwc)
- {
-       struct dentry           *root;
-@@ -944,7 +928,6 @@ void dwc3_debugfs_init(struct dwc3 *dwc)
-                               &dwc3_testmode_fops);
-               debugfs_create_file("link_state", 0644, root, dwc,
-                                   &dwc3_link_state_fops);
--              dwc3_debugfs_create_endpoint_dirs(dwc, root);
-       }
- }
---- a/drivers/usb/dwc3/gadget.c
-+++ b/drivers/usb/dwc3/gadget.c
-@@ -2665,6 +2665,8 @@ static int dwc3_gadget_init_endpoint(str
-       INIT_LIST_HEAD(&dep->started_list);
-       INIT_LIST_HEAD(&dep->cancelled_list);
-+      dwc3_debugfs_create_endpoint_dir(dep);
-+
-       return 0;
- }
-@@ -2708,6 +2710,7 @@ static void dwc3_gadget_free_endpoints(s
-                       list_del(&dep->endpoint.ep_list);
-               }
-+              debugfs_remove_recursive(debugfs_lookup(dep->name, dwc->root));
-               kfree(dep);
-       }
- }
index 66464e70d55f2a167ce4b12e713a91ce9927a767..6358ba3ec5f51f5da7edceb5217698462016a59e 100644 (file)
@@ -88,7 +88,6 @@ usb-pd-set-pd_t_sink_wait_cap-to-310ms.patch
 usb-dwc3-meson-g12a-fix-usb2-phy-glue-init-when-phy0-is-disabled.patch
 usb-dwc3-meson-g12a-disable-the-regulator-in-the-error-handling-path-of-the-probe.patch
 usb-dwc3-gadget-bail-from-dwc3_gadget_exit-if-dwc-gadget-is-null.patch
-usb-dwc3-debugfs-add-and-remove-endpoint-dirs-dynamically.patch
 usb-dwc3-ep0-fix-null-pointer-exception.patch
 usb-pci-quirks-disable-d3cold-on-xhci-suspend-for-s2idle-on-amd-renoir.patch
 usb-musb-fix-musb_quirk_b_disconnect_99-handling.patch
diff --git a/queue-5.12/usb-dwc3-debugfs-add-and-remove-endpoint-dirs-dynamically.patch b/queue-5.12/usb-dwc3-debugfs-add-and-remove-endpoint-dirs-dynamically.patch
deleted file mode 100644 (file)
index a1fa7ef..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-From 8d396bb0a5b62b326f6be7594d8bd46b088296bd Mon Sep 17 00:00:00 2001
-From: Jack Pham <jackp@codeaurora.org>
-Date: Sat, 29 May 2021 12:29:32 -0700
-Subject: usb: dwc3: debugfs: Add and remove endpoint dirs dynamically
-
-From: Jack Pham <jackp@codeaurora.org>
-
-commit 8d396bb0a5b62b326f6be7594d8bd46b088296bd upstream.
-
-The DWC3 DebugFS directory and files are currently created once
-during probe.  This includes creation of subdirectories for each
-of the gadget's endpoints.  This works fine for peripheral-only
-controllers, as dwc3_core_init_mode() calls dwc3_gadget_init()
-just prior to calling dwc3_debugfs_init().
-
-However, for dual-role controllers, dwc3_core_init_mode() will
-instead call dwc3_drd_init() which is problematic in a few ways.
-First, the initial state must be determined, then dwc3_set_mode()
-will have to schedule drd_work and by then dwc3_debugfs_init()
-could have already been invoked.  Even if the initial mode is
-peripheral, dwc3_gadget_init() happens after the DebugFS files
-are created, and worse so if the initial state is host and the
-controller switches to peripheral much later.  And secondly,
-even if the gadget endpoints' debug entries were successfully
-created, if the controller exits peripheral mode, its dwc3_eps
-are freed so the debug files would now hold stale references.
-
-So it is best if the DebugFS endpoint entries are created and
-removed dynamically at the same time the underlying dwc3_eps are.
-Do this by calling dwc3_debugfs_create_endpoint_dir() as each
-endpoint is created, and conversely remove the DebugFS entry when
-the endpoint is freed.
-
-Fixes: 41ce1456e1db ("usb: dwc3: core: make dwc3_set_mode() work properly")
-Cc: stable <stable@vger.kernel.org>
-Reviewed-by: Peter Chen <peter.chen@kernel.org>
-Signed-off-by: Jack Pham <jackp@codeaurora.org>
-Link: https://lore.kernel.org/r/20210529192932.22912-1-jackp@codeaurora.org
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/usb/dwc3/debug.h   |    3 +++
- drivers/usb/dwc3/debugfs.c |   21 ++-------------------
- drivers/usb/dwc3/gadget.c  |    3 +++
- 3 files changed, 8 insertions(+), 19 deletions(-)
-
---- a/drivers/usb/dwc3/debug.h
-+++ b/drivers/usb/dwc3/debug.h
-@@ -413,9 +413,12 @@ static inline const char *dwc3_gadget_ge
- #ifdef CONFIG_DEBUG_FS
-+extern void dwc3_debugfs_create_endpoint_dir(struct dwc3_ep *dep);
- extern void dwc3_debugfs_init(struct dwc3 *d);
- extern void dwc3_debugfs_exit(struct dwc3 *d);
- #else
-+static inline void dwc3_debugfs_create_endpoint_dir(struct dwc3_ep *dep)
-+{  }
- static inline void dwc3_debugfs_init(struct dwc3 *d)
- {  }
- static inline void dwc3_debugfs_exit(struct dwc3 *d)
---- a/drivers/usb/dwc3/debugfs.c
-+++ b/drivers/usb/dwc3/debugfs.c
-@@ -890,30 +890,14 @@ static void dwc3_debugfs_create_endpoint
-       }
- }
--static void dwc3_debugfs_create_endpoint_dir(struct dwc3_ep *dep,
--              struct dentry *parent)
-+void dwc3_debugfs_create_endpoint_dir(struct dwc3_ep *dep)
- {
-       struct dentry           *dir;
--      dir = debugfs_create_dir(dep->name, parent);
-+      dir = debugfs_create_dir(dep->name, dep->dwc->root);
-       dwc3_debugfs_create_endpoint_files(dep, dir);
- }
--static void dwc3_debugfs_create_endpoint_dirs(struct dwc3 *dwc,
--              struct dentry *parent)
--{
--      int                     i;
--
--      for (i = 0; i < dwc->num_eps; i++) {
--              struct dwc3_ep  *dep = dwc->eps[i];
--
--              if (!dep)
--                      continue;
--
--              dwc3_debugfs_create_endpoint_dir(dep, parent);
--      }
--}
--
- void dwc3_debugfs_init(struct dwc3 *dwc)
- {
-       struct dentry           *root;
-@@ -944,7 +928,6 @@ void dwc3_debugfs_init(struct dwc3 *dwc)
-                               &dwc3_testmode_fops);
-               debugfs_create_file("link_state", 0644, root, dwc,
-                                   &dwc3_link_state_fops);
--              dwc3_debugfs_create_endpoint_dirs(dwc, root);
-       }
- }
---- a/drivers/usb/dwc3/gadget.c
-+++ b/drivers/usb/dwc3/gadget.c
-@@ -2720,6 +2720,8 @@ static int dwc3_gadget_init_endpoint(str
-       INIT_LIST_HEAD(&dep->started_list);
-       INIT_LIST_HEAD(&dep->cancelled_list);
-+      dwc3_debugfs_create_endpoint_dir(dep);
-+
-       return 0;
- }
-@@ -2763,6 +2765,7 @@ static void dwc3_gadget_free_endpoints(s
-                       list_del(&dep->endpoint.ep_list);
-               }
-+              debugfs_remove_recursive(debugfs_lookup(dep->name, dwc->root));
-               kfree(dep);
-       }
- }
index dd3a9bf76dcea379bcbda18f4eda52e7d9e6410f..b6f5071570450c5299ddbbe562dad6e270c1f9cf 100644 (file)
@@ -46,7 +46,6 @@ cgroup1-don-t-allow-n-in-renaming.patch
 usb-f_ncm-ncm_bitrate-speed-is-unsigned.patch
 usb-f_ncm-only-first-packet-of-aggregate-needs-to-start-timer.patch
 usb-pd-set-pd_t_sink_wait_cap-to-310ms.patch
-usb-dwc3-debugfs-add-and-remove-endpoint-dirs-dynamically.patch
 usb-dwc3-ep0-fix-null-pointer-exception.patch
 usb-musb-fix-musb_quirk_b_disconnect_99-handling.patch
 usb-typec-wcove-use-le-to-cpu-conversion-when-accessing-msg-header.patch
diff --git a/queue-5.4/usb-dwc3-debugfs-add-and-remove-endpoint-dirs-dynamically.patch b/queue-5.4/usb-dwc3-debugfs-add-and-remove-endpoint-dirs-dynamically.patch
deleted file mode 100644 (file)
index 3a5a191..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-From 8d396bb0a5b62b326f6be7594d8bd46b088296bd Mon Sep 17 00:00:00 2001
-From: Jack Pham <jackp@codeaurora.org>
-Date: Sat, 29 May 2021 12:29:32 -0700
-Subject: usb: dwc3: debugfs: Add and remove endpoint dirs dynamically
-
-From: Jack Pham <jackp@codeaurora.org>
-
-commit 8d396bb0a5b62b326f6be7594d8bd46b088296bd upstream.
-
-The DWC3 DebugFS directory and files are currently created once
-during probe.  This includes creation of subdirectories for each
-of the gadget's endpoints.  This works fine for peripheral-only
-controllers, as dwc3_core_init_mode() calls dwc3_gadget_init()
-just prior to calling dwc3_debugfs_init().
-
-However, for dual-role controllers, dwc3_core_init_mode() will
-instead call dwc3_drd_init() which is problematic in a few ways.
-First, the initial state must be determined, then dwc3_set_mode()
-will have to schedule drd_work and by then dwc3_debugfs_init()
-could have already been invoked.  Even if the initial mode is
-peripheral, dwc3_gadget_init() happens after the DebugFS files
-are created, and worse so if the initial state is host and the
-controller switches to peripheral much later.  And secondly,
-even if the gadget endpoints' debug entries were successfully
-created, if the controller exits peripheral mode, its dwc3_eps
-are freed so the debug files would now hold stale references.
-
-So it is best if the DebugFS endpoint entries are created and
-removed dynamically at the same time the underlying dwc3_eps are.
-Do this by calling dwc3_debugfs_create_endpoint_dir() as each
-endpoint is created, and conversely remove the DebugFS entry when
-the endpoint is freed.
-
-Fixes: 41ce1456e1db ("usb: dwc3: core: make dwc3_set_mode() work properly")
-Cc: stable <stable@vger.kernel.org>
-Reviewed-by: Peter Chen <peter.chen@kernel.org>
-Signed-off-by: Jack Pham <jackp@codeaurora.org>
-Link: https://lore.kernel.org/r/20210529192932.22912-1-jackp@codeaurora.org
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/usb/dwc3/debug.h   |    3 +++
- drivers/usb/dwc3/debugfs.c |   21 ++-------------------
- drivers/usb/dwc3/gadget.c  |    3 +++
- 3 files changed, 8 insertions(+), 19 deletions(-)
-
---- a/drivers/usb/dwc3/debug.h
-+++ b/drivers/usb/dwc3/debug.h
-@@ -409,9 +409,12 @@ static inline const char *dwc3_gadget_ge
- #ifdef CONFIG_DEBUG_FS
-+extern void dwc3_debugfs_create_endpoint_dir(struct dwc3_ep *dep);
- extern void dwc3_debugfs_init(struct dwc3 *);
- extern void dwc3_debugfs_exit(struct dwc3 *);
- #else
-+static inline void dwc3_debugfs_create_endpoint_dir(struct dwc3_ep *dep)
-+{  }
- static inline void dwc3_debugfs_init(struct dwc3 *d)
- {  }
- static inline void dwc3_debugfs_exit(struct dwc3 *d)
---- a/drivers/usb/dwc3/debugfs.c
-+++ b/drivers/usb/dwc3/debugfs.c
-@@ -878,30 +878,14 @@ static void dwc3_debugfs_create_endpoint
-       }
- }
--static void dwc3_debugfs_create_endpoint_dir(struct dwc3_ep *dep,
--              struct dentry *parent)
-+void dwc3_debugfs_create_endpoint_dir(struct dwc3_ep *dep)
- {
-       struct dentry           *dir;
--      dir = debugfs_create_dir(dep->name, parent);
-+      dir = debugfs_create_dir(dep->name, dep->dwc->root);
-       dwc3_debugfs_create_endpoint_files(dep, dir);
- }
--static void dwc3_debugfs_create_endpoint_dirs(struct dwc3 *dwc,
--              struct dentry *parent)
--{
--      int                     i;
--
--      for (i = 0; i < dwc->num_eps; i++) {
--              struct dwc3_ep  *dep = dwc->eps[i];
--
--              if (!dep)
--                      continue;
--
--              dwc3_debugfs_create_endpoint_dir(dep, parent);
--      }
--}
--
- void dwc3_debugfs_init(struct dwc3 *dwc)
- {
-       struct dentry           *root;
-@@ -935,7 +919,6 @@ void dwc3_debugfs_init(struct dwc3 *dwc)
-                                   &dwc3_testmode_fops);
-               debugfs_create_file("link_state", S_IRUGO | S_IWUSR, root, dwc,
-                                   &dwc3_link_state_fops);
--              dwc3_debugfs_create_endpoint_dirs(dwc, root);
-       }
- }
---- a/drivers/usb/dwc3/gadget.c
-+++ b/drivers/usb/dwc3/gadget.c
-@@ -2483,6 +2483,8 @@ static int dwc3_gadget_init_endpoint(str
-       INIT_LIST_HEAD(&dep->started_list);
-       INIT_LIST_HEAD(&dep->cancelled_list);
-+      dwc3_debugfs_create_endpoint_dir(dep);
-+
-       return 0;
- }
-@@ -2526,6 +2528,7 @@ static void dwc3_gadget_free_endpoints(s
-                       list_del(&dep->endpoint.ep_list);
-               }
-+              debugfs_remove_recursive(debugfs_lookup(dep->name, dwc->root));
-               kfree(dep);
-       }
- }