Re: 2.6.6 Oops disconnecting speedtouch usb modem

From: Duncan Sands
Date: Thu May 13 2004 - 04:06:53 EST


> OK, I tried it with -mm1 and the second problem I reported (modem_run
> complaining about not being able to read interrupts ans exiting) appears
> to be gone.
> The oops while disconnecting still exists, but it's different.
>
> May 11 21:18:10 taz kernel: usb 1-1: USB disconnect, address 2
> May 11 21:18:10 taz kernel: Unable to handle kernel NULL pointer
> dereference at virtual address 00000000 May 11 21:18:10 taz kernel:
> printing eip:
> May 11 21:18:10 taz kernel: c02168f4
> May 11 21:18:10 taz kernel: *pde = 00000000
> May 11 21:18:10 taz kernel: ___ ______
> May 11 21:18:10 taz kernel: 0--,| /OOOOOO\
> May 11 21:18:10 taz kernel: {_o / /OO plop OO\
> May 11 21:18:10 taz kernel: \__\_/OO oh dear OOO\s
> May 11 21:18:10 taz kernel: \OOOOOOOOOOOOOOOO/
> May 11 21:18:10 taz kernel: __XXX__ __XXX__
> May 11 21:18:10 taz kernel: Oops: 0000 [#1]
> May 11 21:18:10 taz kernel: CPU: 0
> May 11 21:18:10 taz kernel: EIP: 0060:[usb_ifnum_to_if+36/64] Not
> tainted VLI
> May 11 21:18:10 taz kernel: EFLAGS: 00010293 (2.6.6-mm1)
> May 11 21:18:10 taz kernel: EIP is at usb_ifnum_to_if+0x24/0x40
> May 11 21:18:10 taz kernel: eax: 00000000 ebx: dd3b7c00 ecx: 00000000
> edx: 00000001 May 11 21:18:10 taz kernel: esi: 00000003 edi: 00000001
> ebp: dd5d5824 esp: ddd91ea8 May 11 21:18:10 taz kernel: ds: 007b es:
> 007b ss: 0068
> May 11 21:18:10 taz kernel: Process khubd (pid: 21, threadinfo=ddd91000
> task=ddd676b0) May 11 21:18:10 taz kernel: Stack: dd5d5800 00000000
> 00000001 c021c42a dcce4510 00000282 dcce4510 de8d5c80
> May 11 21:18:10 taz kernel: dd5d5800 de864a6d 00000000 de8d3e60
> ddd4b194 de8d5c80 dd5d5800 dd5d5824
> May 11 21:18:10 taz kernel: c02167c5 ddd4b1a4 de8d5ca0 c01e8fe6
> ddd4b1a4 dd5d58cc c01e90f8 ddd4b1a4
> May 11 21:18:10 taz kernel: Call Trace:
> May 11 21:18:10 taz kernel: [usb_set_interface+26/304]
> usb_set_interface+0x1a/0x130 May 11 21:18:10 taz kernel:
> [pg0+508303981/1069920256] atm_dev_deregister+0xd/0xc0 [atm] May 11
> 21:18:10 taz kernel: [pg0+508759648/1069920256]
> udsl_atm_dev_close+0x30/0x50 [speedtch] May 11 21:18:10 taz kernel:
> [usb_unbind_interface+69/112] usb_unbind_interface+0x45/0x70 May 11
> 21:18:10 taz kernel: [device_release_driver+86/96]
> device_release_driver+0x56/0x60 May 11 21:18:10 taz kernel:
> [bus_remove_device+72/144] bus_remove_device+0x48/0x90 May 11 21:18:10 taz
> kernel: [device_del+90/144] device_del+0x5a/0x90 May 11 21:18:10 taz
> kernel: [device_unregister+8/16] device_unregister+0x8/0x10May 11 21:18:10
> taz kernel: [usb_disable_device+97/176] usb_disable_device+0x61/0xb0 May
> 11 21:18:10 taz kernel: [usb_disconnect+143/224] usb_disconnect+0x8f/0xe0
> May 11 21:18:10 taz kernel: [hub_port_connect_change+580/640]
> hub_port_connect_change+0x244/0x280 May 11 21:18:10 taz kernel:
> [hub_port_status+58/176] hub_port_status+0x3a/0xb0 May 11 21:18:10 taz
> kernel: [schedule+604/1040] schedule+0x25c/0x410 May 11 21:18:10 taz
> kernel: [hub_events+604/688] hub_events+0x25c/0x2b0 May 11 21:18:10 taz
> kernel: [hub_thread+43/224] hub_thread+0x2b/0xe0 May 11 21:18:10 taz
> kernel: [default_wake_function+0/16] default_wake_function+0x0/0x10 May 11
> 21:18:10 taz kernel: [hub_thread+0/224] hub_thread+0x0/0xe0 May 11
> 21:18:10 taz kernel: [kernel_thread_helper+5/24]
> kernel_thread_helper+0x5/0x18 May 11 21:18:10 taz kernel:
> May 11 21:18:10 taz kernel: Code: 00 00 90 8d 74 26 00 57 89 d7 56 53 8b 98
> 9c 01 00 00 31 c0 85 db 74 24 0f b6 43 04 31 c9 39 c1 7d 18 89 c6 8d 76 00
> 8b 44 8b 0c <8b> 10 0f b6 52 02 39 fa 74 07 41 39 f1 7c ed 31 c0 5b 5e 5f
> c3

Hi Nuno, I suspect it is caused by this patch (as246c - Allocate interface structures dynamically):

http://marc.theaimsgroup.com/?l=linux-usb-devel&m=108239223425404&w=2

Can you please revert it and see if that helps? I think it is this bit that is causing the problem:

/*
* usb_disable_device - Disable all the endpoints for a USB device
* @dev: the device whose endpoints are being disabled
@@ -835,6 +831,7 @@
dev_dbg (&dev->dev, "unregistering interface %s\n",
interface->dev.bus_id);
device_unregister (&interface->dev);
+ dev->actconfig->interface[i] = NULL;
}
dev->actconfig = 0;
if (dev->state == USB_STATE_CONFIGURED)
@@ -1071,6 +1068,16 @@
return 0;
}

All the best,

Duncan.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/