spurious hangups on serial console
Guy M. Streeter
streeter at redhat.com
Tue Oct 28 06:32:59 EST 2003
I have been investigating a situation where the login prompt begins to
fail on a serial console. What I have discovered is that there is an
unexpected call to the serial driver's hangup() routine, between the
login prompt and the password prompt.
I traced this to do_tty_hangup() (called from sys_vhangup), and I see
that it attempts to avoid calling the driver's hangup() routine for the
console device. The test for the console doesn't account for serial
console. The attached patch adds a check for ttyS0 if serial console is
configured.
I only see this problem only recent kernels, and I don't know what
changed to make it start happening. Perhaps someone else has a better
idea?
--Guy
-------------- next part --------------
--- v2.4.23-pre8/drivers/char/tty_io.c.orig 2003-10-27 13:22:19.000000000 -0600
+++ v2.4.23-pre8/drivers/char/tty_io.c 2003-10-27 13:23:49.000000000 -0600
@@ -109,6 +109,7 @@ extern void con_init_devfs (void);
extern void disable_early_printk(void);
#define CONSOLE_DEV MKDEV(TTY_MAJOR,0)
+#define SERIAL_CONSOLE_DEV MKDEV(TTY_MAJOR,64)
#define TTY_DEV MKDEV(TTYAUX_MAJOR,0)
#define SYSCONS_DEV MKDEV(TTYAUX_MAJOR,1)
#define PTMX_DEV MKDEV(TTYAUX_MAJOR,2)
@@ -461,6 +462,9 @@ void do_tty_hangup(void *data)
for (l = tty->tty_files.next; l != &tty->tty_files; l = l->next) {
struct file * filp = list_entry(l, struct file, f_list);
if (filp->f_dentry->d_inode->i_rdev == CONSOLE_DEV ||
+#ifdef CONFIG_SERIAL_CONSOLE
+ filp->f_dentry->d_inode->i_rdev == SERIAL_CONSOLE_DEV ||
+#endif
filp->f_dentry->d_inode->i_rdev == SYSCONS_DEV) {
cons_filp = filp;
continue;
More information about the Linuxppc-embedded
mailing list