Re: Can't unload uhci_hcd module with 2.6.22 -- also oops

Alan Stern <[email protected]>
Newsgroups gmane.linux.usb.devel
Message-ID <[email protected]>
On Wed, 1 Aug 2007, A. Kalten wrote:

> On Wed, 1 Aug 2007 11:55:25 -0400 (EDT)
> Alan Stern <[email protected]> wrote:
> 
> > 
> > This shouldn't make any difference.  Your later message was
> > self-contradictory; you wrote that the oops occurred only if the
> > modules were loaded before the modem was plugged in, and that it also
> > occurred if the modules were loaded after the modem was plugged in.
> >
> 
> Sorry about the confusion.  At first I just assumed that the kernel
> oops occured under all conditions, but on closer inspection I found
> that it only occurs when the modules are loaded before the modem
> is plugged in.
> 
> So, to get things straight:
> 
> 1) plug in modem
> 2) load modules
> 3) unload modules
> No kernel oops
> 
> 1) load modules
> 2) plug in modem
> 3) unload modules
> kernel oops

Okay, I understand.

> > Here's an additional patch for 2.6.22, to be applied along with the 
> > previous patch.  Let's see what it shows.
> > 
> 
> 2.6.22 has been patched with this and the previous patch.
> 
> Here is the kernel log containing the oops.  It results from the
> following sequence (I included the time as well):

There's some useful information here but still not enough.  I've got a
third patch for you to add in; hopefully we are zeroing in on the
correct spot.  For this test you don't have to run the non-oopsing
scenarios.

Alan Stern


Index: 2.6.22/drivers/base/core.c
===================================================================
--- 2.6.22.orig/drivers/base/core.c
+++ 2.6.22/drivers/base/core.c
@@ -24,6 +24,8 @@
 #include "base.h"
 #include "power/power.h"
 
+extern int attrtest;
+
 int (*platform_notify)(struct device * dev) = NULL;
 int (*platform_notify_remove)(struct device * dev) = NULL;
 
@@ -926,7 +928,10 @@ void device_del(struct device * dev)
 			up(&dev->class->sem);
 		}
 	}
+attrtest = 1;
+printk("%s: before remove uevent\n", dev->bus_id);
 	device_remove_file(dev, &dev->uevent_attr);
+printk("after remove uevent\n");
 	device_remove_attrs(dev);
 	bus_remove_device(dev);
 
@@ -945,7 +950,9 @@ void device_del(struct device * dev)
 	if (dev->bus)
 		blocking_notifier_call_chain(&dev->bus->bus_notifier,
 					     BUS_NOTIFY_DEL_DEVICE, dev);
+printk("%s: before remove power\n", dev->bus_id);
 	device_pm_remove(dev);
+printk("after remove power\n");
 	kobject_uevent(&dev->kobj, KOBJ_REMOVE);
 	kobject_del(&dev->kobj);
 	if (parent)


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.