Re: [PATCH] tty_ioctl: Soft carrier handling

From: Jiri Slaby
Date: Mon Mar 10 2008 - 18:24:19 EST


On 03/10/2008 10:56 PM, Alan Cox wrote:
First cut at moving the soft carrier handling knowledge entirely into the
core code. One or two drivers still needed to snoop these functions to
track CLOCAL internally. Instead make TIOCSSOFTCAR generate the same
driver calls as other termios ioctls changing the clocal flag. This
allows us to remove any driver knowledge and special casing. Also while
we are at it we can fix the error handling.

Signed-off-by: Alan Cox <alan@xxxxxxxxxx>

diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.25-rc3-mm1/drivers/char/tty_ioctl.c linux-2.6.25-rc3-mm1/drivers/char/tty_ioctl.c
--- linux.vanilla-2.6.25-rc3-mm1/drivers/char/tty_ioctl.c 2008-03-10 12:57:53.000000000 +0000
+++ linux-2.6.25-rc3-mm1/drivers/char/tty_ioctl.c 2008-03-10 13:27:09.000000000 +0000
@@ -753,6 +756,32 @@
[...]
+static int tty_change_softcar(struct tty_struct *tty, int arg)
+{
+ int ret = 0;
+ int bit = arg ? CLOCAL : 0;
+ struct ktermios old = *tty->termios;

Maybe a dumb question, but shouldn't be the snapshot done in the critical section too?

+
+ mutex_lock(&tty->termios_mutex);
+ tty->termios->c_cflag &= ~CLOCAL;
+ tty->termios->c_cflag |= bit;
+ if (tty->driver->set_termios)
+ tty->driver->set_termios(tty, &old);
+ if ((tty->termios->c_cflag & CLOCAL) != bit)
+ ret = -EINVAL;
+ mutex_unlock(&tty->termios_mutex);
+ return ret;
+}
--
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/