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/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to