tty: introduce wait_event_interruptible_tty
Calling wait_event_interruptible implicitly releases the BKL when it sleeps, but we need to do this explcitly when we have converted it to a mutex. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
4e60867167
commit
be1bc2889a
@@ -133,7 +133,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(vt_event_waitqueue, vw->done);
|
||||
wait_event_interruptible_tty(vt_event_waitqueue, vw->done);
|
||||
/* Dequeue it */
|
||||
spin_lock_irqsave(&vt_event_lock, flags);
|
||||
list_del(&vw->list);
|
||||
@@ -1761,10 +1761,13 @@ int vt_move_to_console(unsigned int vt, int alloc)
|
||||
return -EIO;
|
||||
}
|
||||
release_console_sem();
|
||||
tty_lock();
|
||||
if (vt_waitactive(vt + 1)) {
|
||||
pr_debug("Suspend: Can't switch VCs.");
|
||||
tty_unlock();
|
||||
return -EINTR;
|
||||
}
|
||||
tty_unlock();
|
||||
return prev;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user