On Sun, 30 Dec 2007, Ingo Molnar wrote:

> * Andreas Mohr <[EMAIL PROTECTED]> wrote:
> 
> > (yes, that's all there is, despite CONFIG_USB_DEBUG being set)
> > 
> > The LED of a usb stick isn't active either, for obvious reasons.
> > 
> > And keep in mind that this is a (relatively old) OHCI-only machine... 
> > (which had the 2.6.19 lsmod showing ohci-hcd just fine and working 
> > fine with WLAN USB)
> > 
> > Now pondering whether to try -rc6 proper or whether to revert specific 
> > guilty-looking USB changes... And wondering how to properly elevate 
> > this issue (prompt Greg about it, new thread, bug #, ...?)

It looks like Greg misused the debugfs API -- which is ironic, because
he wrote debugfs in the first place!  :-)

Let me know if this patch fixes the problem.  If it does, I'll submit 
it to Greg with all the proper accoutrements.

Alan Stern


Index: 2.6.24-rc6-mm1/drivers/usb/host/ohci-hcd.c
===================================================================
--- 2.6.24-rc6-mm1.orig/drivers/usb/host/ohci-hcd.c
+++ 2.6.24-rc6-mm1/drivers/usb/host/ohci-hcd.c
@@ -1067,14 +1067,8 @@ static int __init ohci_hcd_mod_init(void
 
 #ifdef DEBUG
        ohci_debug_root = debugfs_create_dir("ohci", NULL);
-       if (!ohci_debug_root || IS_ERR(ohci_debug_root)) {
-               if (!ohci_debug_root)
-                       retval = -ENOENT;
-               else
-                       retval = PTR_ERR(ohci_debug_root);
-
-               goto error_debug;
-       }
+       if (!ohci_debug_root)
+               return -ENOENT;
 #endif
 
 #ifdef PS3_SYSTEM_BUS_DRIVER
@@ -1142,7 +1136,6 @@ static int __init ohci_hcd_mod_init(void
 #ifdef DEBUG
        debugfs_remove(ohci_debug_root);
        ohci_debug_root = NULL;
- error_debug:
 #endif
 
        return retval;
Index: 2.6.24-rc6-mm1/drivers/usb/host/ohci-dbg.c
===================================================================
--- 2.6.24-rc6-mm1.orig/drivers/usb/host/ohci-dbg.c
+++ 2.6.24-rc6-mm1/drivers/usb/host/ohci-dbg.c
@@ -813,30 +813,29 @@ static inline void create_debug_files (s
        struct device *dev = bus->dev;
 
        ohci->debug_dir = debugfs_create_dir(bus->bus_name, ohci_debug_root);
-       if (!ohci->debug_dir || IS_ERR(ohci->debug_dir)) {
-               ohci->debug_dir = NULL;
-               goto done;
-       }
+       if (!ohci->debug_dir)
+               return;
 
        ohci->debug_async = debugfs_create_file("async", S_IRUGO,
                                                ohci->debug_dir, dev,
                                                &debug_async_fops);
-       if (!ohci->debug_async || IS_ERR(ohci->debug_async))
+       if (!ohci->debug_async)
                goto async_error;
 
        ohci->debug_periodic = debugfs_create_file("periodic", S_IRUGO,
                                                   ohci->debug_dir, dev,
                                                   &debug_periodic_fops);
-       if (!ohci->debug_periodic || IS_ERR(ohci->debug_periodic))
+       if (!ohci->debug_periodic)
                goto periodic_error;
 
        ohci->debug_registers = debugfs_create_file("registers", S_IRUGO,
                                                    ohci->debug_dir, dev,
                                                    &debug_registers_fops);
-       if (!ohci->debug_registers || IS_ERR(ohci->debug_registers))
+       if (!ohci->debug_registers)
                goto registers_error;
 
-       goto done;
+       ohci_dbg(ohci, "created debug files\n");
+       return;
 
 registers_error:
        debugfs_remove(ohci->debug_periodic);
@@ -847,10 +846,6 @@ periodic_error:
 async_error:
        debugfs_remove(ohci->debug_dir);
        ohci->debug_dir = NULL;
-done:
-       return;
-
-       ohci_dbg (ohci, "created debug files\n");
 }
 
 static inline void remove_debug_files (struct ohci_hcd *ohci)
Index: 2.6.24-rc6-mm1/drivers/usb/host/ehci-hcd.c
===================================================================
--- 2.6.24-rc6-mm1.orig/drivers/usb/host/ehci-hcd.c
+++ 2.6.24-rc6-mm1/drivers/usb/host/ehci-hcd.c
@@ -1019,14 +1019,8 @@ static int __init ehci_hcd_init(void)
 
 #ifdef DEBUG
        ehci_debug_root = debugfs_create_dir("ehci", NULL);
-       if (!ehci_debug_root || IS_ERR(ehci_debug_root)) {
-               if (!ehci_debug_root)
-                       retval = -ENOENT;
-               else
-                       retval = PTR_ERR(ehci_debug_root);
-
-               return retval;
-       }
+       if (!ehci_debug_root)
+               return -ENOENT;
 #endif
 
 #ifdef PLATFORM_DRIVER
Index: 2.6.24-rc6-mm1/drivers/usb/host/ehci-dbg.c
===================================================================
--- 2.6.24-rc6-mm1.orig/drivers/usb/host/ehci-dbg.c
+++ 2.6.24-rc6-mm1/drivers/usb/host/ehci-dbg.c
@@ -914,30 +914,28 @@ static inline void create_debug_files (s
        struct usb_bus *bus = &ehci_to_hcd(ehci)->self;
 
        ehci->debug_dir = debugfs_create_dir(bus->bus_name, ehci_debug_root);
-       if (!ehci->debug_dir || IS_ERR(ehci->debug_dir)) {
-               ehci->debug_dir = NULL;
-               goto done;
-       }
+       if (!ehci->debug_dir)
+               return;
 
        ehci->debug_async = debugfs_create_file("async", S_IRUGO,
                                                ehci->debug_dir, bus,
                                                &debug_async_fops);
-       if (!ehci->debug_async || IS_ERR(ehci->debug_async))
+       if (!ehci->debug_async)
                goto async_error;
 
        ehci->debug_periodic = debugfs_create_file("periodic", S_IRUGO,
                                                   ehci->debug_dir, bus,
                                                   &debug_periodic_fops);
-       if (!ehci->debug_periodic || IS_ERR(ehci->debug_periodic))
+       if (!ehci->debug_periodic)
                goto periodic_error;
 
        ehci->debug_registers = debugfs_create_file("registers", S_IRUGO,
                                                    ehci->debug_dir, bus,
                                                    &debug_registers_fops);
-       if (!ehci->debug_registers || IS_ERR(ehci->debug_registers))
+       if (!ehci->debug_registers)
                goto registers_error;
 
-       goto done;
+       return;
 
 registers_error:
        debugfs_remove(ehci->debug_periodic);
@@ -948,9 +946,6 @@ periodic_error:
 async_error:
        debugfs_remove(ehci->debug_dir);
        ehci->debug_dir = NULL;
-
-done:
-       return;
 }
 
 static inline void remove_debug_files (struct ehci_hcd *ehci)

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to