On Tue, 2019-06-04 at 10:24 +0200, Greg Kroah-Hartman wrote: > On Tue, Jun 04, 2019 at 10:47:55AM +0300, Felipe Balbi wrote: > > > > Hi, > > > > Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> writes: > > >> +struct dentry *usb_debugfs_init(void) > > >> +{ > > >> + if (!usb_debug_root) > > >> + usb_debug_root = debugfs_create_dir("usb", NULL); > > >> + > > >> + atomic_inc(&usb_debug_root_refcnt); > > >> + > > >> + return usb_debug_root; > > >> +} > > >> +EXPORT_SYMBOL_GPL(usb_debugfs_init); > > >> + > > >> +void usb_debugfs_cleanup(void) > > >> +{ > > >> + if (atomic_dec_and_test(&usb_debug_root_refcnt)) { > > >> + debugfs_remove_recursive(usb_debug_root); > > >> + usb_debug_root = NULL; > > >> + } > > >> +} > > >> +EXPORT_SYMBOL_GPL(usb_debugfs_cleanup); > > > > > > Only remove the debugfs subdir if the usbcore module is removed. Create > > > the debugfs subdir when the usbcore module is loaded. No need for any > > > reference counting of any sort at all. No need to overthink this :) > > > > There is a slight need to overthink. He wants to use the same directory > > for gadget-only builds too :-) > > Again, that's fine, this file will be loaded for those builds as well, > right? Yes, either usbcore or gadget will select this file. > Otherwise, how would this code even be present? :) > > thanks, > > greg k-h