From 05fa87eadb4687f95c3f6452c95d6c9dcc1dbdec Mon Sep 17 00:00:00 2001 From: Rafal Wojtczuk Date: Thu, 21 Jul 2011 14:34:28 +0200 Subject: [PATCH] Fixed a deadlock in xencons_close(). --- patches.fixes/xencons_close_deadlock.patch | 15 +++++++++++++++ series.conf | 1 + 2 files changed, 16 insertions(+) create mode 100644 patches.fixes/xencons_close_deadlock.patch diff --git a/patches.fixes/xencons_close_deadlock.patch b/patches.fixes/xencons_close_deadlock.patch new file mode 100644 index 0000000..c62faee --- /dev/null +++ b/patches.fixes/xencons_close_deadlock.patch @@ -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); diff --git a/series.conf b/series.conf index 056f435..c4b6d41 100644 --- a/series.conf +++ b/series.conf @@ -845,3 +845,4 @@ patches.qubes/nuke_balloon_minimum_target.patch patches.fixes/xen-blkfront-connect-overflow.patch + patches.fixes/xencons_close_deadlock.patch