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

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

diff --git a/queue-4.4/revert-tty-hvc-fix-data-abort-due-to-race-in-hvc_open.patch b/queue-4.4/revert-tty-hvc-fix-data-abort-due-to-race-in-hvc_open.patch
new file mode 100644 (file)
index 0000000..cddf666
--- /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
+@@ -89,8 +89,6 @@ static LIST_HEAD(hvc_structs);
+  */
+ static DEFINE_SPINLOCK(hvc_structs_lock);
+-/* 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
+@@ -335,24 +333,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);
+@@ -381,8 +371,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 c7293b9b286be33e6ca280be4def637f08eddb5a..71669b94cec2130202b7fd8ccc31ce594e678798 100644 (file)
@@ -132,3 +132,4 @@ pnfs-flexfiles-fix-list-corruption-if-the-mirror-count-changes.patch
 nfsv4-fix-close-not-waiting-for-direct-io-compeletion.patch
 pci-disable-msi-for-hisilicon-hip06-hip07-only-in-root-port-mode.patch
 alsa-usb-audio-fix-invalid-null-check-in-snd_emuusb_set_samplerate.patch
+revert-tty-hvc-fix-data-abort-due-to-race-in-hvc_open.patch