tty: Replace TTY_IO_ERROR bit tests with tty_io_error()
Abstract TTY_IO_ERROR status test treewide with tty_io_error(). NB: tty->flags uses atomic bit ops; replace non-atomic bit test with test_bit(). Signed-off-by: Peter Hurley <peter@hurleysoftware.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

父節點
1aabf523a2
當前提交
18900ca65a
@@ -1143,7 +1143,7 @@ static int rs_tiocmget(struct tty_struct *tty)
|
||||
|
||||
if (serial_paranoia_check(info, tty->name, "rs_ioctl"))
|
||||
return -ENODEV;
|
||||
if (tty->flags & (1 << TTY_IO_ERROR))
|
||||
if (tty_io_error(tty))
|
||||
return -EIO;
|
||||
|
||||
control = info->MCR;
|
||||
@@ -1165,7 +1165,7 @@ static int rs_tiocmset(struct tty_struct *tty, unsigned int set,
|
||||
|
||||
if (serial_paranoia_check(info, tty->name, "rs_ioctl"))
|
||||
return -ENODEV;
|
||||
if (tty->flags & (1 << TTY_IO_ERROR))
|
||||
if (tty_io_error(tty))
|
||||
return -EIO;
|
||||
|
||||
local_irq_save(flags);
|
||||
@@ -1250,7 +1250,7 @@ static int rs_ioctl(struct tty_struct *tty,
|
||||
if ((cmd != TIOCGSERIAL) && (cmd != TIOCSSERIAL) &&
|
||||
(cmd != TIOCSERCONFIG) && (cmd != TIOCSERGSTRUCT) &&
|
||||
(cmd != TIOCMIWAIT) && (cmd != TIOCGICOUNT)) {
|
||||
if (tty->flags & (1 << TTY_IO_ERROR))
|
||||
if (tty_io_error(tty))
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
|
@@ -1334,7 +1334,7 @@ static int mxser_tiocmget(struct tty_struct *tty)
|
||||
|
||||
if (tty->index == MXSER_PORTS)
|
||||
return -ENOIOCTLCMD;
|
||||
if (test_bit(TTY_IO_ERROR, &tty->flags))
|
||||
if (tty_io_error(tty))
|
||||
return -EIO;
|
||||
|
||||
control = info->MCR;
|
||||
@@ -1361,7 +1361,7 @@ static int mxser_tiocmset(struct tty_struct *tty,
|
||||
|
||||
if (tty->index == MXSER_PORTS)
|
||||
return -ENOIOCTLCMD;
|
||||
if (test_bit(TTY_IO_ERROR, &tty->flags))
|
||||
if (tty_io_error(tty))
|
||||
return -EIO;
|
||||
|
||||
spin_lock_irqsave(&info->slock, flags);
|
||||
@@ -1715,8 +1715,7 @@ static int mxser_ioctl(struct tty_struct *tty,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (cmd != TIOCGSERIAL && cmd != TIOCMIWAIT &&
|
||||
test_bit(TTY_IO_ERROR, &tty->flags))
|
||||
if (cmd != TIOCGSERIAL && cmd != TIOCMIWAIT && tty_io_error(tty))
|
||||
return -EIO;
|
||||
|
||||
switch (cmd) {
|
||||
|
@@ -44,7 +44,7 @@ static void pty_close(struct tty_struct *tty, struct file *filp)
|
||||
if (tty->driver->subtype == PTY_TYPE_MASTER)
|
||||
WARN_ON(tty->count > 1);
|
||||
else {
|
||||
if (test_bit(TTY_IO_ERROR, &tty->flags))
|
||||
if (tty_io_error(tty))
|
||||
return;
|
||||
if (tty->count > 2)
|
||||
return;
|
||||
|
@@ -3445,7 +3445,7 @@ rs_ioctl(struct tty_struct *tty,
|
||||
if ((cmd != TIOCGSERIAL) && (cmd != TIOCSSERIAL) &&
|
||||
(cmd != TIOCSERCONFIG) && (cmd != TIOCSERGWILD) &&
|
||||
(cmd != TIOCSERSWILD) && (cmd != TIOCSERGSTRUCT)) {
|
||||
if (tty->flags & (1 << TTY_IO_ERROR))
|
||||
if (tty_io_error(tty))
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
@@ -3755,8 +3755,7 @@ block_til_ready(struct tty_struct *tty, struct file * filp,
|
||||
* If non-blocking mode is set, or the port is not enabled,
|
||||
* then make the check up front and then exit.
|
||||
*/
|
||||
if ((filp->f_flags & O_NONBLOCK) ||
|
||||
(tty->flags & (1 << TTY_IO_ERROR))) {
|
||||
if ((filp->f_flags & O_NONBLOCK) || tty_io_error(tty)) {
|
||||
info->port.flags |= ASYNC_NORMAL_ACTIVE;
|
||||
return 0;
|
||||
}
|
||||
|
@@ -969,7 +969,7 @@ static int uart_tiocmget(struct tty_struct *tty)
|
||||
int result = -EIO;
|
||||
|
||||
mutex_lock(&port->mutex);
|
||||
if (!(tty->flags & (1 << TTY_IO_ERROR))) {
|
||||
if (!tty_io_error(tty)) {
|
||||
result = uport->mctrl;
|
||||
spin_lock_irq(&uport->lock);
|
||||
result |= uport->ops->get_mctrl(uport);
|
||||
@@ -989,7 +989,7 @@ uart_tiocmset(struct tty_struct *tty, unsigned int set, unsigned int clear)
|
||||
int ret = -EIO;
|
||||
|
||||
mutex_lock(&port->mutex);
|
||||
if (!(tty->flags & (1 << TTY_IO_ERROR))) {
|
||||
if (!tty_io_error(tty)) {
|
||||
uart_update_mctrl(uport, set, clear);
|
||||
ret = 0;
|
||||
}
|
||||
@@ -1238,7 +1238,7 @@ uart_ioctl(struct tty_struct *tty, unsigned int cmd,
|
||||
if (ret != -ENOIOCTLCMD)
|
||||
goto out;
|
||||
|
||||
if (tty->flags & (1 << TTY_IO_ERROR)) {
|
||||
if (tty_io_error(tty)) {
|
||||
ret = -EIO;
|
||||
goto out;
|
||||
}
|
||||
@@ -1257,7 +1257,7 @@ uart_ioctl(struct tty_struct *tty, unsigned int cmd,
|
||||
|
||||
mutex_lock(&port->mutex);
|
||||
|
||||
if (tty->flags & (1 << TTY_IO_ERROR)) {
|
||||
if (tty_io_error(tty)) {
|
||||
ret = -EIO;
|
||||
goto out_up;
|
||||
}
|
||||
|
@@ -2972,7 +2972,7 @@ static int mgsl_ioctl(struct tty_struct *tty,
|
||||
|
||||
if ((cmd != TIOCGSERIAL) && (cmd != TIOCSSERIAL) &&
|
||||
(cmd != TIOCMIWAIT)) {
|
||||
if (tty->flags & (1 << TTY_IO_ERROR))
|
||||
if (tty_io_error(tty))
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
@@ -3270,7 +3270,7 @@ static int block_til_ready(struct tty_struct *tty, struct file * filp,
|
||||
printk("%s(%d):block_til_ready on %s\n",
|
||||
__FILE__,__LINE__, tty->driver->name );
|
||||
|
||||
if (filp->f_flags & O_NONBLOCK || tty->flags & (1 << TTY_IO_ERROR)){
|
||||
if (filp->f_flags & O_NONBLOCK || tty_io_error(tty)) {
|
||||
/* nonblock mode is set or port is not enabled */
|
||||
port->flags |= ASYNC_NORMAL_ACTIVE;
|
||||
return 0;
|
||||
|
@@ -1032,7 +1032,7 @@ static int ioctl(struct tty_struct *tty,
|
||||
|
||||
if ((cmd != TIOCGSERIAL) && (cmd != TIOCSSERIAL) &&
|
||||
(cmd != TIOCMIWAIT)) {
|
||||
if (tty->flags & (1 << TTY_IO_ERROR))
|
||||
if (tty_io_error(tty))
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
@@ -3269,7 +3269,7 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp,
|
||||
|
||||
DBGINFO(("%s block_til_ready\n", tty->driver->name));
|
||||
|
||||
if (filp->f_flags & O_NONBLOCK || tty->flags & (1 << TTY_IO_ERROR)){
|
||||
if (filp->f_flags & O_NONBLOCK || tty_io_error(tty)) {
|
||||
/* nonblock mode is set or port is not enabled */
|
||||
port->flags |= ASYNC_NORMAL_ACTIVE;
|
||||
return 0;
|
||||
|
@@ -1261,7 +1261,7 @@ static int ioctl(struct tty_struct *tty,
|
||||
|
||||
if ((cmd != TIOCGSERIAL) && (cmd != TIOCSSERIAL) &&
|
||||
(cmd != TIOCMIWAIT)) {
|
||||
if (tty->flags & (1 << TTY_IO_ERROR))
|
||||
if (tty_io_error(tty))
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
@@ -3285,7 +3285,7 @@ static int block_til_ready(struct tty_struct *tty, struct file *filp,
|
||||
printk("%s(%d):%s block_til_ready()\n",
|
||||
__FILE__,__LINE__, tty->driver->name );
|
||||
|
||||
if (filp->f_flags & O_NONBLOCK || tty->flags & (1 << TTY_IO_ERROR)){
|
||||
if (filp->f_flags & O_NONBLOCK || tty_io_error(tty)) {
|
||||
/* nonblock mode is set or port is not enabled */
|
||||
/* just verify that callout device is not active */
|
||||
port->flags |= ASYNC_NORMAL_ACTIVE;
|
||||
|
@@ -1070,7 +1070,7 @@ static ssize_t tty_read(struct file *file, char __user *buf, size_t count,
|
||||
|
||||
if (tty_paranoia_check(tty, inode, "tty_read"))
|
||||
return -EIO;
|
||||
if (!tty || (test_bit(TTY_IO_ERROR, &tty->flags)))
|
||||
if (!tty || tty_io_error(tty))
|
||||
return -EIO;
|
||||
|
||||
/* We want to wait for the line discipline to sort out in this
|
||||
@@ -1245,8 +1245,7 @@ static ssize_t tty_write(struct file *file, const char __user *buf,
|
||||
|
||||
if (tty_paranoia_check(tty, file_inode(file), "tty_write"))
|
||||
return -EIO;
|
||||
if (!tty || !tty->ops->write ||
|
||||
(test_bit(TTY_IO_ERROR, &tty->flags)))
|
||||
if (!tty || !tty->ops->write || tty_io_error(tty))
|
||||
return -EIO;
|
||||
/* Short term debug to catch buggy drivers */
|
||||
if (tty->ops->write_room == NULL)
|
||||
|
@@ -364,7 +364,7 @@ int tty_port_block_til_ready(struct tty_port *port,
|
||||
|
||||
/* if non-blocking mode is set we can pass directly to open unless
|
||||
the port has just hung up or is in another error state */
|
||||
if (tty->flags & (1 << TTY_IO_ERROR)) {
|
||||
if (tty_io_error(tty)) {
|
||||
port->flags |= ASYNC_NORMAL_ACTIVE;
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user