Commit 185c9bcf authored by Ming Lei's avatar Ming Lei Committed by Greg Kroah-Hartman

USB: ehci: fix remove of ehci debugfs dir

The patch below on gregkh tree only creates 'lpm' file under
ehci->debug_dir, but not removes it when unloading module,

	 USB: EHCI: EHCI 1.1 addendum: preparation

which can make loading of ehci-hcd module failed after unloading it.

This patch replaces debugfs_remove with debugfs_remove_recursive
to remove ehci debugfs dir and files. It does fix the bug above,
and may simplify the removing procedure.

Also, remove the debug_registers, debug_async and debug_periodic
field from ehci_hcd struct since they are useless now.
Signed-off-by: default avatarMing Lei <tom.leiming@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent f2402f21
...@@ -1049,49 +1049,33 @@ static inline void create_debug_files (struct ehci_hcd *ehci) ...@@ -1049,49 +1049,33 @@ static inline void create_debug_files (struct ehci_hcd *ehci)
ehci->debug_dir = debugfs_create_dir(bus->bus_name, ehci_debug_root); ehci->debug_dir = debugfs_create_dir(bus->bus_name, ehci_debug_root);
if (!ehci->debug_dir) if (!ehci->debug_dir)
goto dir_error; return;
ehci->debug_async = debugfs_create_file("async", S_IRUGO, if (!debugfs_create_file("async", S_IRUGO, ehci->debug_dir, bus,
ehci->debug_dir, bus, &debug_async_fops))
&debug_async_fops); goto file_error;
if (!ehci->debug_async)
goto async_error; if (!debugfs_create_file("periodic", S_IRUGO, ehci->debug_dir, bus,
&debug_periodic_fops))
ehci->debug_periodic = debugfs_create_file("periodic", S_IRUGO, goto file_error;
ehci->debug_dir, bus,
&debug_periodic_fops); if (!debugfs_create_file("registers", S_IRUGO, ehci->debug_dir, bus,
if (!ehci->debug_periodic) &debug_registers_fops))
goto periodic_error; goto file_error;
ehci->debug_registers = debugfs_create_file("registers", S_IRUGO, if (!debugfs_create_file("lpm", S_IRUGO|S_IWUGO, ehci->debug_dir, bus,
ehci->debug_dir, bus, &debug_lpm_fops))
&debug_registers_fops); goto file_error;
ehci->debug_registers = debugfs_create_file("lpm", S_IRUGO|S_IWUGO,
ehci->debug_dir, bus,
&debug_lpm_fops);
if (!ehci->debug_registers)
goto registers_error;
return; return;
registers_error: file_error:
debugfs_remove(ehci->debug_periodic); debugfs_remove_recursive(ehci->debug_dir);
periodic_error:
debugfs_remove(ehci->debug_async);
async_error:
debugfs_remove(ehci->debug_dir);
dir_error:
ehci->debug_periodic = NULL;
ehci->debug_async = NULL;
ehci->debug_dir = NULL;
} }
static inline void remove_debug_files (struct ehci_hcd *ehci) static inline void remove_debug_files (struct ehci_hcd *ehci)
{ {
debugfs_remove(ehci->debug_registers); debugfs_remove_recursive(ehci->debug_dir);
debugfs_remove(ehci->debug_periodic);
debugfs_remove(ehci->debug_async);
debugfs_remove(ehci->debug_dir);
} }
#endif /* STUB_DEBUG_FILES */ #endif /* STUB_DEBUG_FILES */
...@@ -156,10 +156,6 @@ struct ehci_hcd { /* one per controller */ ...@@ -156,10 +156,6 @@ struct ehci_hcd { /* one per controller */
/* debug files */ /* debug files */
#ifdef DEBUG #ifdef DEBUG
struct dentry *debug_dir; struct dentry *debug_dir;
struct dentry *debug_async;
struct dentry *debug_periodic;
struct dentry *debug_registers;
struct dentry *debug_lpm;
#endif #endif
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment