Linux-kernel mailing list archive 1998-31,: Re: [2.1.113] What is CHECK_TTY_COUNT warning me about?

# Re: [2.1.113] What is CHECK_TTY_COUNT warning me about?

Miquel van Smoorenburg (miquels@cistron.nl)
7 Aug 1998 11:31:42 +0200

- Messages sorted by: [ date ][ thread ][ subject ][ author ]
- Next message: Andreas Schwab: "Re: floating-point abuse in 2.1.113"
- Previous message: Aaron Tiensivu: "Re: 2.1.114 VFS code 5x slower than 2.0.33?!?"
- Maybe in reply to: Steve Snyder: "[2.1.113] What is CHECK_TTY_COUNT warning me about?"
- Next in thread: Bill Hawes: "Re: [2.1.113] What is CHECK_TTY_COUNT warning me about?"

As it happens I sent a patch to Linus for 2.1.115 (which hasn't been
applied ;( ) that fixes this. It has to to do with the DEV_SYSCONS code
so you can blaim the bug on me :)

Hi Linus,

ever since you accepted my serial console code into the kernel
I have seen intermittant

rs_close: bad serial port count for ttys0: -1

warning messages from the serial driver. I've finally found out what it
is - it has to do with the fact that, when we hangup a serial port that
is the console (say ttyS0) we do not hang up processes that connected
to /dev/console instead (that is good). As a result, some usage counters in
serial.c were out of sync with counters in tty_io.c

Here's a patch that fixes the problem:

--- linux-2.1.113/drivers/char/tty_io.c.orig Mon Aug 3 20:44:21 1998
+++ linux-2.1.113/drivers/char/tty_io.c Mon Aug 3 21:11:08 1998
@@ -375,8 +375,10 @@
{
struct tty_struct *tty = (struct tty_struct *) data;
struct file * filp;
+ struct file * cons_filp = NULL;
struct task_struct *p;
unsigned long flags;
+ int closecount = 0, n;
if (!tty)
return;
@@ -392,10 +394,13 @@
if (!filp->f_dentry->d_inode)
continue;
if (filp->f_dentry->d_inode->i_rdev == CONSOLE_DEV ||
- filp->f_dentry->d_inode->i_rdev == SYSCONS_DEV)
+ filp->f_dentry->d_inode->i_rdev == SYSCONS_DEV) {
+ cons_filp = filp;
continue;
+ }
if (filp->f_op != &tty_fops)
continue;
+ closecount++;
tty_fasync(filp, 0);
filp->f_op = &hung_up_tty_fops;
}
@@ -447,7 +452,11 @@
tty->session = 0;
tty->pgrp = -1;
tty->ctrl_status = 0;
- if (tty->driver.hangup)
+ if (cons_filp) {
+ if (tty->driver.close)
+ for (n = 0; n < closecount; n++)
+ tty->driver.close(tty, cons_filp);
+ } else if (tty->driver.hangup)
(tty->driver.hangup)(tty);
restore_flags(flags);
}

Mike.

    --
     Miquel van Smoorenburg | Our vision is to speed up time,
        miquels@cistron.nl  |   eventually eliminating it.     <*>

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.rutgers.edu
    Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html

- Next message: Andreas Schwab: "Re: floating-point abuse in 2.1.113"
- Previous message: Aaron Tiensivu: "Re: 2.1.114 VFS code 5x slower than 2.0.33?!?"
- Maybe in reply to: Steve Snyder: "[2.1.113] What is CHECK_TTY_COUNT warning me about?"
- Next in thread: Bill Hawes: "Re: [2.1.113] What is CHECK_TTY_COUNT warning me about?"