On Tue, Jun 04, 2019 at 11:32:58AM +0200, Greg Kroah-Hartman wrote: > The USB gadget subsystem wants to use the USB debugfs root directory, so > move it to the common "core" USB code so that it is properly initialized > and removed as needed. > > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > > --- > > This should be the "correct" version of this, Chunfeng, can you test > this to verify it works for you? > > > diff --git a/drivers/usb/common/common.c b/drivers/usb/common/common.c > index 18f5dcf58b0d..3b5e4263ffef 100644 > --- a/drivers/usb/common/common.c > +++ b/drivers/usb/common/common.c > @@ -15,6 +15,7 @@ > #include <linux/usb/of.h> > #include <linux/usb/otg.h> > #include <linux/of_platform.h> > +#include <linux/debugfs.h> > > static const char *const ep_type_names[] = { > [USB_ENDPOINT_XFER_CONTROL] = "ctrl", > @@ -291,4 +292,21 @@ struct device *usb_of_get_companion_dev(struct device *dev) > EXPORT_SYMBOL_GPL(usb_of_get_companion_dev); > #endif > > +struct dentry *usb_debug_root; > +EXPORT_SYMBOL_GPL(usb_debug_root); > + > +static int usb_common_init(void) > +{ > + usb_debug_root = debugfs_create_dir("usb", NULL); > + return 0; > +} > + > +static void usb_common_exit(void) > +{ > + debugfs_remove_recursive(usb_debug_root); > +} > + > +module_init(usb_common_init); > +module_exit(usb_common_exit); > + > MODULE_LICENSE("GPL"); > diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c > index 7fcb9f782931..f3d6b1ab80cb 100644 > --- a/drivers/usb/core/usb.c > +++ b/drivers/usb/core/usb.c > @@ -1185,19 +1185,17 @@ static struct notifier_block usb_bus_nb = { > .notifier_call = usb_bus_notify, > }; > > -struct dentry *usb_debug_root; > -EXPORT_SYMBOL_GPL(usb_debug_root); > +static struct dentry *usb_devices_root; > > static void usb_debugfs_init(void) > { > - usb_debug_root = debugfs_create_dir("usb", NULL); > - debugfs_create_file("devices", 0444, usb_debug_root, NULL, > - &usbfs_devices_fops); > + usb_devices_root = debugfs_create_file("devices", 0444, usb_debug_root, > + NULL, &usbfs_devices_fops); > } > > static void usb_debugfs_cleanup(void) > { > - debugfs_remove_recursive(usb_debug_root); > + debugfs_remove_recursive(usb_devices_root); That should just be debugfs_remove(); I'll fix it up after someone tests this :) thanks, greg k-h