Thread (4 messages) 4 messages, 2 authors, 2015-01-07

Re: [PATCH v2] tty: Prevent hw state corruption in exclusive mode reopen

From: Shreyas Bethur <hidden>
Date: 2015-01-07 22:55:10
Also in: lkml

Peter Hurley [off-list ref] wrote on 12/30/2014 09:39:25 AM:
From: Peter Hurley <redacted>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
Cc: Jiri Slaby <redacted>, linux-kernel@vger.kernel.org, 
linux-serial@vger.kernel.org, Shreyas Bethur 
[off-list ref], Peter Hurley [off-list ref]
Date: 12/30/2014 09:39 AM
Subject: [PATCH v2] tty: Prevent hw state corruption in exclusive mode 
reopen
quoted hunk ↗ jump to hunk
Exclusive mode ttys (TTY_EXCLUSIVE) do not allow further reopens;
fail the condition before associating the file pointer and calling
the driver open() method.

Prevents DTR programming when the tty is already in exclusive mode.

Reported-by: Shreyas Bethur <redacted>
Signed-off-by: Peter Hurley <redacted>
---
 drivers/tty/tty_io.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
index 4f35b43..51f066a 100644
--- a/drivers/tty/tty_io.c
+++ b/drivers/tty/tty_io.c
@@ -1464,6 +1464,9 @@ static int tty_reopen(struct tty_struct *tty)
        driver->subtype == PTY_TYPE_MASTER)
       return -EIO;

+   if (test_bit(TTY_EXCLUSIVE, &tty->flags) && !capable(CAP_SYS_ADMIN))
+      return -EBUSY;
+
    tty->count++;

    WARN_ON(!tty->ldisc);
@@ -2106,10 +2109,6 @@ retry_open:
       retval = -ENODEV;
    filp->f_flags = saved_flags;

-   if (!retval && test_bit(TTY_EXCLUSIVE, &tty->flags) &&
-                  !capable(CAP_SYS_ADMIN))
-      retval = -EBUSY;
-
    if (retval) {
 #ifdef TTY_DEBUG_HANGUP
       printk(KERN_DEBUG "%s: error %d in opening %s...\n", __func__,
-- 
2.2.1
Acked-by: Shreyas Bethur <redacted>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help