Gert Wollny wrote:
Oops in 2.5.66 when removing the module "uhci_hcd"

Try this ... it reverts a change which prevented drivers from cleaning up in their disconnect() routines, and a number of people have reported that it solves their problems.


Other modules can be removed.

(Please CC me, I'm not on the list. )

command to trigger the Oops:

rmmod uhci_hcd

printing eip:
c012ee53
*pde = 0
Oops: 0002 [#1]
CPU: 0
EIP: 0060:c012ee53 Not tainted
EFLAGS: 00010002
EIP is at run_timer_softirq+0xe3/0x400
eax: 6b6b6b6b6 ebx: 6b6b6b6b6 ecx: cf1f3454 edx: 6b6b6b6b
esi: 6b6b6b6b6 edi: cd95c000  ebp: cd95df68: esp: cd95df34
ds: 007B es: 007B ss: 0068

Process usb.agent (bid: 658, threadinfo=cd95c000 task=cd997320)

Call Trace
        timer_interrupt+0x1a0/03f0
        do_brk+0x143/0x220
        do_softirq+0xB5/0xc0
        do_IRG+0x245/0x380
        sys_read+0x45/0x60
        common_interrupt+0x18/0x20

code 89 50 04 89 02 c7 41 30 00 00 00 00 81 3d 00 68 3d c0 3c 4b

kernel/timer.c: 302: spin_lock(kernel/timer.c:c03d6800) already locked by kernel/timer.c/398
Kernel panic: Aiee, killing interrupt handler!
In interrupt handler - not syncing
--- 1.15/drivers/usb/core/urb.c Thu Mar 13 10:45:40 2003
+++ edited/drivers/usb/core/urb.c       Thu Mar 20 11:17:55 2003
@@ -384,11 +384,11 @@
        /* FIXME
         * We should not care about the state here, but the host controllers
         * die a horrible death if we unlink a urb for a device that has been
-        * physically removed.
+        * physically removed.  (after driver->disconnect returns...)
         */
        if (urb &&
            urb->dev &&
-           (urb->dev->state >= USB_STATE_DEFAULT) &&
+           // (urb->dev->state >= USB_STATE_DEFAULT) &&
            urb->dev->bus &&
            urb->dev->bus->op)
                return urb->dev->bus->op->unlink_urb(urb);

Reply via email to