Fixed a deadlock in xencons_close().

This commit is contained in:
Rafal Wojtczuk 2011-07-21 14:34:28 +02:00
parent 9d2ada0644
commit 05fa87eadb
2 changed files with 16 additions and 0 deletions

View File

@ -0,0 +1,15 @@
--- linux-2.6.38.3/drivers/xen/console/console.c.orig 2011-07-21 13:20:34.120001602 +0200
+++ linux-2.6.38.3/drivers/xen/console/console.c 2011-07-21 13:36:14.848001956 +0200
@@ -618,7 +618,12 @@ static void xencons_close(struct tty_str
if (DUMMY_TTY(tty))
return;
+ /* We are called under tty_lock(). As other functions in tty core
+ obtain locks in tty_mutex,tty_lock order, we must do the same to
+ avoid a deadlock. Thus we must first tty_unlock(), and then lock. */
+ tty_unlock();
mutex_lock(&tty_mutex);
+ tty_lock();
if (tty->count != 1) {
mutex_unlock(&tty_mutex);

View File

@ -845,3 +845,4 @@
patches.qubes/nuke_balloon_minimum_target.patch
patches.fixes/xen-blkfront-connect-overflow.patch
patches.fixes/xencons_close_deadlock.patch