Messages in this thread | | | Date | Sun, 19 Oct 2008 14:39:46 -0300 | From | "Sergio Luis" <> | Subject | Re: tty: usb-serial krefs - bad magic number for tty struct (188:0) |
| |
On Sat, Oct 18, 2008 at 1:15 PM, Sergio Luis <eeeesti@gmail.com> wrote: > Hello, > > commit 4a90f09b20f4622dcbff1f0e1e6bae1704f8ad8c > > tty: usb-serial krefs > > Use kref in the USB serial drivers so that we don't free tty structures > from under the URB receive handlers as has historically been the case if > you were unlucky. This also gives us a framework for general tty drivers to > use tty_port objects and refcount. > > Contains two err->dev_err changes merged together to fix clashes in the > -next tree. > > Signed-off-by: Alan Cox <alan@redhat.com> > Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> > > ---- > > causes problems with my usb hsdpa modem. when I try to connect pppd > dies and I get these messages on dmesg: > > [...] > usb-storage: device scan complete > PPP generic driver version 2.4.2 > bad magic number for tty struct (188:0) in tty_ioctl > bad magic number for tty struct (188:0) in tty_ioctl > bad magic number for tty struct (188:0) in tty_release_dev > bad magic number for tty struct (188:0) in tty_poll > bad magic number for tty struct (188:0) in tty_poll > bad magic number for tty struct (188:0) in tty_write > bad magic number for tty struct (188:0) in tty_ioctl > bad magic number for tty struct (188:0) in tty_ioctl > bad magic number for tty struct (188:0) in tty_ioctl > bad magic number for tty struct (188:0) in tty_release_dev > > --- > > drivers/usb/serial/ChangeLog.history has this: > > (03/26/2002) gkh > removed the port->tty check from port_paranoia_check() due to serial > consoles not having a tty device assigned to them. > > and this seems to be the problem here. > something in this commit seems to make it reach the tty_paranoia_check > in tty_ioctl() from drivers/char/tty_io.c, but I could be completely > wrong. > > Sergio. > Hello,
one of the problems was the tty_kref_put(tty) in usb_serial_port_work() [drivers/usb/serial/usb-serial.c], that was releasing the tty device. I removed that line and it _almost_ worked. well, it worked, but only _once_. If I stopped the daemon and tried to start it again, it would give me I/O error and would not open /dev/ttyUSB0 anymore. I'd suggest to revert that commit and to review it more carefully. What do you people think?
Thanks, Sergio.
| |