summaryrefslogtreecommitdiff |
diff options
author | Olaf Hering <ohering@suse.de> | 2011-10-25 19:33:27 +0200 |
---|---|---|
committer | Olaf Hering <ohering@suse.de> | 2011-10-25 19:33:27 +0200 |
commit | 68289aa24ce91a04a4746dfd01ac64503178184b (patch) | |
tree | 2760efbd3e0eef6f84735ecc8d45399eb84d605f | |
parent | a56ba1568393519566d92fbf6a04802179fe7f34 (diff) |
tty deadlock in kernel-xen, xenconsole (bnc#726333).rpm-3.1.0-1.1--openSUSE-12.1-RC2rpm-3.1.0-1.1
-rw-r--r-- | patches.xen/xencons-tty_mutex.patch | 32 | ||||
-rw-r--r-- | series.conf | 1 |
2 files changed, 33 insertions, 0 deletions
diff --git a/patches.xen/xencons-tty_mutex.patch b/patches.xen/xencons-tty_mutex.patch new file mode 100644 index 0000000000..c91902bc51 --- /dev/null +++ b/patches.xen/xencons-tty_mutex.patch @@ -0,0 +1,32 @@ +Subject: tty deadlock in kernel-xen, xenconsole +References: bnc#726333 +From: <ohering@suse.de> +Patch-mainline: never + +xenconsole is broken. tty_mutex does not nest into big tty mutex. +This is violated in tty_release->xencons_close. + +--- + drivers/xen/console/console.c | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +--- a/drivers/xen/console/console.c ++++ b/drivers/xen/console/console.c +@@ -623,16 +623,11 @@ static void xencons_close(struct tty_str + if (DUMMY_TTY(tty)) + return; + +- mutex_lock(&tty_mutex); +- +- if (tty->count != 1) { +- mutex_unlock(&tty_mutex); ++ if (tty->count != 1) + return; +- } + + /* Prevent other threads from re-opening this tty. */ + set_bit(TTY_CLOSING, &tty->flags); +- mutex_unlock(&tty_mutex); + + tty->closing = 1; + tty_wait_until_sent(tty, 0); diff --git a/series.conf b/series.conf index eacc3682be..1c7cf97a7a 100644 --- a/series.conf +++ b/series.conf @@ -869,3 +869,4 @@ patches.xen/xen-x86_64-dump-user-pgt patches.xen/xen-x86_64-note-init-p2m patches.xen/xen-x86_64-unmapped-initrd + patches.xen/xencons-tty_mutex.patch |