tty: Fix spinlock flavor in non-atomic __tty_hangup()
authorPeter Hurley <peter@hurleysoftware.com>
Wed, 6 Mar 2013 12:20:54 +0000 (07:20 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 15 Mar 2013 21:02:32 +0000 (14:02 -0700)
__tty_hangup() and tty_vhangup() cannot be called from atomic context,
so locks do not need to preserve the interrupt state (although,
still disable interrupts).

Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Acked-by: Jiri Slaby <jslaby@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/tty_io.c

index 706c23b9cb959856b98913283750859afb47f4f5..fb50442fd2a42c5663bb410dbd76c8db0b98fbdd 100644 (file)
@@ -605,7 +605,6 @@ static void __tty_hangup(struct tty_struct *tty)
        struct file *filp, *f = NULL;
        struct tty_file_private *priv;
        int    closecount = 0, n;
-       unsigned long flags;
        int refs;
 
        if (!tty)
@@ -654,7 +653,7 @@ static void __tty_hangup(struct tty_struct *tty)
        while (refs--)
                tty_kref_put(tty);
 
-       spin_lock_irqsave(&tty->ctrl_lock, flags);
+       spin_lock_irq(&tty->ctrl_lock);
        clear_bit(TTY_THROTTLED, &tty->flags);
        clear_bit(TTY_PUSH, &tty->flags);
        clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags);
@@ -663,7 +662,7 @@ static void __tty_hangup(struct tty_struct *tty)
        tty->session = NULL;
        tty->pgrp = NULL;
        tty->ctrl_status = 0;
-       spin_unlock_irqrestore(&tty->ctrl_lock, flags);
+       spin_unlock_irq(&tty->ctrl_lock);
 
        /*
         * If one of the devices matches a console pointer, we