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

Reply via email to