Home Home > GIT Browse > openSUSE-15.1
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlaf Hering <ohering@suse.de>2011-10-25 19:33:27 +0200
committerOlaf Hering <ohering@suse.de>2011-10-25 19:33:27 +0200
commit68289aa24ce91a04a4746dfd01ac64503178184b (patch)
tree2760efbd3e0eef6f84735ecc8d45399eb84d605f
parenta56ba1568393519566d92fbf6a04802179fe7f34 (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.patch32
-rw-r--r--series.conf1
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