]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.19-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 30 Jun 2020 13:09:42 +0000 (15:09 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 30 Jun 2020 13:09:42 +0000 (15:09 +0200)
added patches:
revert-tty-hvc-fix-data-abort-due-to-race-in-hvc_open.patch

queue-4.19/revert-tty-hvc-fix-data-abort-due-to-race-in-hvc_open.patch [new file with mode: 0644]
queue-4.19/series

diff --git a/queue-4.19/revert-tty-hvc-fix-data-abort-due-to-race-in-hvc_open.patch b/queue-4.19/revert-tty-hvc-fix-data-abort-due-to-race-in-hvc_open.patch
new file mode 100644 (file)
index 0000000..3db24e3
--- /dev/null
@@ -0,0 +1,72 @@
+From cf9c94456ebafc6d75a834e58dfdc8ae71a3acbc Mon Sep 17 00:00:00 2001
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Date: Tue, 12 May 2020 10:22:44 +0200
+Subject: Revert "tty: hvc: Fix data abort due to race in hvc_open"
+
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+commit cf9c94456ebafc6d75a834e58dfdc8ae71a3acbc upstream.
+
+This reverts commit e2bd1dcbe1aa34ff5570b3427c530e4332ecf0fe.
+
+In discussion on the mailing list, it has been determined that this is
+not the correct type of fix for this issue.  Revert it so that we can do
+this correctly.
+
+Reported-by: Jiri Slaby <jslaby@suse.cz>
+Reported-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Link: https://lore.kernel.org/r/20200428032601.22127-1-rananta@codeaurora.org
+Cc: Raghavendra Rao Ananta <rananta@codeaurora.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/tty/hvc/hvc_console.c |   16 ++--------------
+ 1 file changed, 2 insertions(+), 14 deletions(-)
+
+--- a/drivers/tty/hvc/hvc_console.c
++++ b/drivers/tty/hvc/hvc_console.c
+@@ -75,8 +75,6 @@ static LIST_HEAD(hvc_structs);
+  */
+ static DEFINE_MUTEX(hvc_structs_mutex);
+-/* Mutex to serialize hvc_open */
+-static DEFINE_MUTEX(hvc_open_mutex);
+ /*
+  * This value is used to assign a tty->index value to a hvc_struct based
+  * upon order of exposure via hvc_probe(), when we can not match it to
+@@ -348,24 +346,16 @@ static int hvc_install(struct tty_driver
+  */
+ static int hvc_open(struct tty_struct *tty, struct file * filp)
+ {
+-      struct hvc_struct *hp;
++      struct hvc_struct *hp = tty->driver_data;
+       unsigned long flags;
+       int rc = 0;
+-      mutex_lock(&hvc_open_mutex);
+-
+-      hp = tty->driver_data;
+-      if (!hp) {
+-              rc = -EIO;
+-              goto out;
+-      }
+-
+       spin_lock_irqsave(&hp->port.lock, flags);
+       /* Check and then increment for fast path open. */
+       if (hp->port.count++ > 0) {
+               spin_unlock_irqrestore(&hp->port.lock, flags);
+               hvc_kick();
+-              goto out;
++              return 0;
+       } /* else count == 0 */
+       spin_unlock_irqrestore(&hp->port.lock, flags);
+@@ -393,8 +383,6 @@ static int hvc_open(struct tty_struct *t
+       /* Force wakeup of the polling thread */
+       hvc_kick();
+-out:
+-      mutex_unlock(&hvc_open_mutex);
+       return rc;
+ }
index d35cef5a03977aff96c48161fffe96b1bf19727d..0af36e2493c38363f1b788873466a732a75fbb1e 100644 (file)
@@ -128,3 +128,4 @@ nfsv4-fix-close-not-waiting-for-direct-io-compeletion.patch
 dm-writecache-correct-uncommitted_block-when-discarding-uncommitted-entry.patch
 dm-writecache-add-cond_resched-to-loop-in-persistent_memory_claim.patch
 xfs-add-agf-freeblocks-verify-in-xfs_agf_verify.patch
+revert-tty-hvc-fix-data-abort-due-to-race-in-hvc_open.patch