Alan Stern wrote: > At this point I don't know... Just post whatever you've got when it's > ready. > > So there are two separate issues from the original patch series. 1) The crash on console hand over (this thread) 2) The baud init problem (another thread) Let us solve one at a time. I pulled the latest Linus tree, and we still have the usb serial console crash regression. Here is the patch to fix the problem which we picked up in 2.6.31. Can we close this one out or should I start a new lkml thread with this patch? Thanks, Jason.
>From b5da000db43b7429d267e1e4c4f4c5db967d5f76 Mon Sep 17 00:00:00 2001 From: Jason Wessel <jason.wessel@xxxxxxxxxxxxx> Date: Wed, 23 Sep 2009 08:26:56 -0500 Subject: [PATCH 1/1] usb console: Fix lockdep crash Booting the kernel with kernel args containing "console=ttyUSB0,115200" causes a crash with the FTDI usb-serial device. Ultimately further use of the device results in a hard hang on the device. WARNING: at kernel/lockdep.c:2813 __lock_acquire+0x4d9/0xa50() Hardware name: Modules linked in: Pid: 958, comm: init Not tainted 2.6.31-06535-g7bd032d #773 Call Trace: [<c024c749>] ? __lock_acquire+0x4d9/0xa50 [<c022ac2c>] warn_slowpath_common+0x7c/0xa0 [<c024c749>] ? __lock_acquire+0x4d9/0xa50 [<c022ac65>] warn_slowpath_null+0x15/0x20 [<c024c749>] __lock_acquire+0x4d9/0xa50 [<c024dff8>] lock_acquire+0x68/0x90 [<c03acccb>] ? tty_open+0x29b/0x490 [<c03acccb>] ? tty_open+0x29b/0x490 [<c05749da>] mutex_lock_nested+0x4a/0x2c0 [<c03acccb>] ? tty_open+0x29b/0x490 [<c03acccb>] tty_open+0x29b/0x490 [<c028b40f>] chrdev_open+0xdf/0x1b0 [<c0286b9d>] __dentry_open+0x10d/0x2a0 [<c029039c>] ? inode_permission+0x5c/0xa0 [<c0287e82>] nameidata_to_filp+0x52/0x60 [<c028b330>] ? chrdev_open+0x0/0x1b0 [<c0293ab8>] do_filp_open+0x218/0x7f0 [<c0576377>] ? _spin_unlock+0x27/0x50 [<c0286923>] do_sys_open+0x53/0x110 [<c0286a49>] sys_open+0x29/0x40 [<c0202df1>] syscall_call+0x7/0xb After the usb serial code was updated to work with the tty code in 2.6.32, the console check needs to be removed from serial_release() to keep the tty reference counting correct when using a usb serial console. Signed-off-by: Jason Wessel <jason.wessel@xxxxxxxxxxxxx> --- drivers/usb/serial/usb-serial.c | 6 ------ 1 files changed, 0 insertions(+), 6 deletions(-) diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c index 9d7ca48..7aad761 100644 --- a/drivers/usb/serial/usb-serial.c +++ b/drivers/usb/serial/usb-serial.c @@ -358,12 +358,6 @@ static void serial_release(struct tty_struct *tty) struct usb_serial *serial; struct module *owner; - /* The console is magical. Do not hang up the console hardware - * or there will be tears. - */ - if (port->console) - return; - dbg("%s - port %d", __func__, port->number); /* Standard shutdown processing */ -- 1.6.3.1.9.g95405b