vt: waitevent is self locked so drop the tty_lock
Alan Cox [Fri, 2 Mar 2012 14:59:49 +0000 (14:59 +0000)]
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drivers/tty/vt/vt_ioctl.c

index c6720be..ede2ef1 100644 (file)
@@ -130,7 +130,7 @@ static void vt_event_wait(struct vt_event_wait *vw)
        list_add(&vw->list, &vt_events);
        spin_unlock_irqrestore(&vt_event_lock, flags);
        /* Wait for it to pass */
-       wait_event_interruptible_tty(vt_event_waitqueue, vw->done);
+       wait_event_interruptible(vt_event_waitqueue, vw->done);
        /* Dequeue it */
        spin_lock_irqsave(&vt_event_lock, flags);
        list_del(&vw->list);
@@ -671,11 +671,8 @@ int vt_ioctl(struct tty_struct *tty,
                        return -EPERM;
                if (arg == 0 || arg > MAX_NR_CONSOLES)
                        ret = -ENXIO;
-               else {
-                       tty_lock();
+               else
                        ret = vt_waitactive(arg);
-                       tty_unlock();
-               }
                break;
 
        /*
@@ -1426,14 +1423,10 @@ int vt_move_to_console(unsigned int vt, int alloc)
                return -EIO;
        }
        console_unlock();
-       /* Review: I don't see why we need tty_lock here FIXME */
-       tty_lock();
        if (vt_waitactive(vt + 1)) {
                pr_debug("Suspend: Can't switch VCs.");
-               tty_unlock();
                return -EINTR;
        }
-       tty_unlock();
        return prev;
 }