On Mon, 6 Oct 2003, Robin Munn wrote: > [1.] PROBLEM: Kernel oops registering usbnet > > [2.] Full description: > > I have a Sharp Zaurus 5500 PDA, which I'm using usbnet to sync with. The > cradle's USB cable is plugged into my USB ports, and I place the Zaurus > in the cradle to sync with my PC. Last time I did so, I got this error > message: > > Unable to handle kernel NULL pointer dereference at virtual address 000000c0 > > It was followed by a kernel oops, which I ran through ksymoops and > reproduced below. Note that I had already placed the Zaurus in its > cradle several times, and removed it several times, before triggering > this message. Yes, it's an intermittent bug -- sorry. :-( Here's the > last few lines from the output of 'dmesg > dmesglog.txt'. Note the > (successful) register & unregister events showing up -- the register > events occur when I put the Zaurus in its sync cradle, and the > unregister events occur when I remove the Zaurus from its sync cradle.
The cause of the oops is in usb_ifnum_to_if(). The subroutine doesn't check whether dev->actconfig is NULL before dereferencing it. It would be easy enough to add such a test. But that doesn't answer the underlying question: How did the configuration get reset while an interface was being probed? It sounds like it might be a "bounce" effect -- maybe placing the Zaurus in its cradle caused some connections to be made and dropped intermittently, and that triggered some sort of race. However, the dev->serialize semaphore is supposed to prevent that sort of thing from happening. So I don't see how this could have happened. Alan Stern ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
