Re: WARNINGs in usb-serial.c

From: Alan Stern
Date: Mon Sep 07 2009 - 11:08:33 EST


On Mon, 7 Sep 2009, Miklos Szeredi wrote:

> Here's a reproducible Oops on that kernel when trying to connect with
> wvdial. This is a regression compared to -linus, where wvdial works
> (most of the time anyway).
>
> I can bisect it if it's not immediately obvious what is happening...

I don't think bisecting will help (or is even possible).

> BUG: unable to handle kernel NULL pointer dereference at 0000000000000018
> IP: [<ffffffffa020709c>] serial_chars_in_buffer+0x47/0x5f [usbserial]

It's difficult to say without an assembly listing, but I gather that
serial_chars_in_buffer() is seeing port->serial == NULL. Can you
verify this?

This is unexpected, because port->serial is initialized in
usb_serial_probe() and is not set to NULL until destroy_serial(), after
which port should not be used at all. Can you add a

#define DEBUG

line at the start of usb-serial.c (before the #include lines) so that
we can tell if destroy_serial() is getting called too early? When you
do, post the dmesg log showing everything from the time you start
running your test.

Alan Stern

--
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/