]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 23 Dec 2020 14:16:52 +0000 (15:16 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 23 Dec 2020 14:16:52 +0000 (15:16 +0100)
added patches:
hid-i2c-hid-add-vero-k147-to-descriptor-override.patch
serial_core-check-for-port-state-when-tty-is-in-error-state.patch

queue-4.14/hid-i2c-hid-add-vero-k147-to-descriptor-override.patch [new file with mode: 0644]
queue-4.14/serial_core-check-for-port-state-when-tty-is-in-error-state.patch [new file with mode: 0644]
queue-4.14/series

diff --git a/queue-4.14/hid-i2c-hid-add-vero-k147-to-descriptor-override.patch b/queue-4.14/hid-i2c-hid-add-vero-k147-to-descriptor-override.patch
new file mode 100644 (file)
index 0000000..e79457b
--- /dev/null
@@ -0,0 +1,39 @@
+From c870d50ce387d84b6438211a7044c60afbd5d60a Mon Sep 17 00:00:00 2001
+From: Julian Sax <jsbc@gmx.de>
+Date: Thu, 26 Nov 2020 18:51:58 +0100
+Subject: HID: i2c-hid: add Vero K147 to descriptor override
+
+From: Julian Sax <jsbc@gmx.de>
+
+commit c870d50ce387d84b6438211a7044c60afbd5d60a upstream.
+
+This device uses the SIPODEV SP1064 touchpad, which does not
+supply descriptors, so it has to be added to the override list.
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Julian Sax <jsbc@gmx.de>
+Reviewed-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Jiri Kosina <jkosina@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/hid/i2c-hid/i2c-hid-dmi-quirks.c |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/hid/i2c-hid/i2c-hid-dmi-quirks.c
++++ b/drivers/hid/i2c-hid/i2c-hid-dmi-quirks.c
+@@ -397,6 +397,14 @@ static const struct dmi_system_id i2c_hi
+               },
+               .driver_data = (void *)&sipodev_desc
+       },
++      {
++              .ident = "Vero K147",
++              .matches = {
++                      DMI_EXACT_MATCH(DMI_SYS_VENDOR, "VERO"),
++                      DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "K147"),
++              },
++              .driver_data = (void *)&sipodev_desc
++      },
+       { }     /* Terminate list */
+ };
diff --git a/queue-4.14/serial_core-check-for-port-state-when-tty-is-in-error-state.patch b/queue-4.14/serial_core-check-for-port-state-when-tty-is-in-error-state.patch
new file mode 100644 (file)
index 0000000..3541810
--- /dev/null
@@ -0,0 +1,47 @@
+From 2f70e49ed860020f5abae4f7015018ebc10e1f0e Mon Sep 17 00:00:00 2001
+From: Alexey Kardashevskiy <aik@ozlabs.ru>
+Date: Thu, 3 Dec 2020 16:58:34 +1100
+Subject: serial_core: Check for port state when tty is in error state
+
+From: Alexey Kardashevskiy <aik@ozlabs.ru>
+
+commit 2f70e49ed860020f5abae4f7015018ebc10e1f0e upstream.
+
+At the moment opening a serial device node (such as /dev/ttyS3)
+succeeds even if there is no actual serial device behind it.
+Reading/writing/ioctls fail as expected because the uart port is not
+initialized (the type is PORT_UNKNOWN) and the TTY_IO_ERROR error state
+bit is set fot the tty.
+
+However setting line discipline does not have these checks
+8250_port.c (8250 is the default choice made by univ8250_console_init()).
+As the result of PORT_UNKNOWN, uart_port::iobase is NULL which
+a platform translates onto some address accessing which produces a crash
+like below.
+
+This adds tty_port_initialized() to uart_set_ldisc() to prevent the crash.
+
+Found by syzkaller.
+
+Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
+Link: https://lore.kernel.org/r/20201203055834.45838-1-aik@ozlabs.ru
+Cc: stable <stable@vger.kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/tty/serial/serial_core.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/tty/serial/serial_core.c
++++ b/drivers/tty/serial/serial_core.c
+@@ -1434,6 +1434,10 @@ static void uart_set_ldisc(struct tty_st
+ {
+       struct uart_state *state = tty->driver_data;
+       struct uart_port *uport;
++      struct tty_port *port = &state->port;
++
++      if (!tty_port_initialized(port))
++              return;
+       mutex_lock(&state->port.mutex);
+       uport = uart_port_check(state);
index a8e4fff865186165fa1626a81be88ce41dd2a53a..ffe21522f144c0a5171bb7dca99cc0808b18badb 100644 (file)
@@ -55,3 +55,5 @@ usb-chipidea-ci_hdrc_imx-pass-disable_device_streaming-flag-to-imx6ul.patch
 arm-dts-exynos-fix-roles-of-usb-3.0-ports-on-odroid-xu.patch
 arm-dts-exynos-fix-usb-3.0-vbus-control-and-over-current-pins-on-exynos5410.patch
 arm-dts-exynos-fix-usb-3.0-pins-supply-being-turned-off-on-odroid-xu.patch
+hid-i2c-hid-add-vero-k147-to-descriptor-override.patch
+serial_core-check-for-port-state-when-tty-is-in-error-state.patch