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? Otherwise, how would this code even be present? :) thanks, greg k-h