On Tue, 13 Jul 2004, Jesse Stockall wrote: > > The problem shows up clearly in your "dmesg" file; something is calling > > usb_unlock_device() without calling usb_lock_device() first. > > Unfortunately the diagnostic patch didn't include a dump_stack() call in > > usb_unlock_device(), so I can't tell who the guilty party is. > > > > Here's a shorter patch for you to try. It ought to pinpoint the culprit. > > This is probably some stupid mistake on my part that will end up being > > obvious, but I just can't see where it is... > > Here is the end of dmesg (the whole log is attached:
This extract from your log shows where the problem first occurs: usb_unlock_device: udev=f7fd4a00 count=1 [<c02504da>] usb_unlock_device+0x3a/0x70 [<c02536a9>] hub_port_connect_change+0x219/0x4f0 [<c0253dc2>] hub_events+0x442/0x4d0 [<c0253e85>] hub_thread+0x35/0x130 [<c0117a00>] autoremove_wake_function+0x0/0x60 [<c0103f5e>] ret_from_fork+0x6/0x14 [<c0117a00>] autoremove_wake_function+0x0/0x60 [<c0253e50>] hub_thread+0x0/0x130 [<c0102291>] kernel_thread_helper+0x5/0x14 It's the first place to mention udev=f7fd4a00; that device is unlocked without getting locked beforehand. The extract shows usb_unlock_device() being called from hub_port_connect_change() -- or, just possibly, called as a tail-recursion by a subroutine of hub_port_connect_change(). Now, in my patched source neither hub_port_connect_change() nor its subroutines calls usb_unlock_device(). This suggests our sources have gotten out of sync. In a separate email (off-list) I'll send you my copy of drivers/usb/core/hub.c. Can you compare it with your copy and send the results of a diff -u ? Alan Stern ------------------------------------------------------- This SF.Net email sponsored by Black Hat Briefings & Training. Attend Black Hat Briefings & Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel