Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

USB: dwc3: remove debugfs root dentry storage

There is no need to keep around the debugfs "root" directory for the
dwc3 device. Instead, look it up anytime we need to find it. This will
help when callers get out-of-order and we had the potential to have a
"stale" pointer around for the root dentry, as has happened in the past.

Tested-by: Jack Pham <jackp@codeaurora.org>
Reviewed-by: Peter Chen <peter.chen@kernel.org>
Acked-by: Felipe Balbi <balbi@kernel.org>
Link: https://lore.kernel.org/r/20210609093924.3293230-1-gregkh@linuxfoundation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

+7 -7
-2
drivers/usb/dwc3/core.h
··· 1013 1013 * @link_state: link state 1014 1014 * @speed: device speed (super, high, full, low) 1015 1015 * @hwparams: copy of hwparams registers 1016 - * @root: debugfs root folder pointer 1017 1016 * @regset: debugfs pointer to regdump file 1018 1017 * @dbg_lsp_select: current debug lsp mux register selection 1019 1018 * @test_mode: true when we're entering a USB test mode ··· 1221 1222 u8 num_eps; 1222 1223 1223 1224 struct dwc3_hwparams hwparams; 1224 - struct dentry *root; 1225 1225 struct debugfs_regset32 *regset; 1226 1226 1227 1227 u32 dbg_lsp_select;
+4 -4
drivers/usb/dwc3/debugfs.c
··· 889 889 void dwc3_debugfs_create_endpoint_dir(struct dwc3_ep *dep) 890 890 { 891 891 struct dentry *dir; 892 + struct dentry *root; 892 893 893 - dir = debugfs_create_dir(dep->name, dep->dwc->root); 894 + root = debugfs_lookup(dev_name(dep->dwc->dev), usb_debug_root); 895 + dir = debugfs_create_dir(dep->name, root); 894 896 dwc3_debugfs_create_endpoint_files(dep, dir); 895 897 } 896 898 ··· 911 909 dwc->regset->base = dwc->regs - DWC3_GLOBALS_REGS_START; 912 910 913 911 root = debugfs_create_dir(dev_name(dwc->dev), usb_debug_root); 914 - dwc->root = root; 915 - 916 912 debugfs_create_regset32("regdump", 0444, root, dwc->regset); 917 913 debugfs_create_file("lsp_dump", 0644, root, dwc, &dwc3_lsp_fops); 918 914 ··· 929 929 930 930 void dwc3_debugfs_exit(struct dwc3 *dwc) 931 931 { 932 - debugfs_remove_recursive(dwc->root); 932 + debugfs_remove(debugfs_lookup(dev_name(dwc->dev), usb_debug_root)); 933 933 kfree(dwc->regset); 934 934 }
+3 -1
drivers/usb/dwc3/gadget.c
··· 2799 2799 list_del(&dep->endpoint.ep_list); 2800 2800 } 2801 2801 2802 - debugfs_remove_recursive(debugfs_lookup(dep->name, dwc->root)); 2802 + debugfs_remove_recursive(debugfs_lookup(dep->name, 2803 + debugfs_lookup(dev_name(dep->dwc->dev), 2804 + usb_debug_root))); 2803 2805 kfree(dep); 2804 2806 } 2805 2807 }