diff options
| author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-07-11 16:21:51 +0200 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-07-11 16:21:51 +0200 |
| commit | 824f28c9ec990b8b0c7e92ec3fd2c268ec9a17a5 (patch) | |
| tree | 18e9afab2d9cb5bae86e0e1c8edb32a149bdac02 /usb-serial-visor-handle-potential-invalid-device-configuration.patch | |
| parent | ffad0c8695eb61e151a1095cb140b7c804f7b889 (diff) | |
| download | patches-824f28c9ec990b8b0c7e92ec3fd2c268ec9a17a5.tar.gz | |
refresh with 4.18-rc4
Diffstat (limited to 'usb-serial-visor-handle-potential-invalid-device-configuration.patch')
| -rw-r--r-- | usb-serial-visor-handle-potential-invalid-device-configuration.patch | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/usb-serial-visor-handle-potential-invalid-device-configuration.patch b/usb-serial-visor-handle-potential-invalid-device-configuration.patch deleted file mode 100644 index c73ab62cb07578..00000000000000 --- a/usb-serial-visor-handle-potential-invalid-device-configuration.patch +++ /dev/null @@ -1,115 +0,0 @@ -From foo@baz Sun Apr 29 17:37:43 CEST 2018 -Date: Sun, 29 Apr 2018 17:37:43 +0200 -To: Greg KH <gregkh@linuxfoundation.org> -From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -Subject: [PATCH] USB: serial: visor: handle potential invalid device configuration - -If we get an invalid device configuration from a palm 3 type device, we -might incorrectly parse things, and we have the potential to crash in -"interesting" ways. - -Fix this up by verifying the size of the configuration passed to us by -the device, and only if it is correct, will we handle it. - -Reported-by: Andrey Konovalov <andreyknvl@google.com> -Reviewed-by: Andrey Konovalov <andreyknvl@google.com> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> - ---- - -Here is my long-forgotten patch for the visor driver to resolve an issue -that Andrey found back in September of 2017. Sorry for the long delay. - -Johan, I incorporated your review comments of my original one-off patch -here as well. - - ---- - drivers/usb/serial/visor.c | 69 ++++++++++++++++++++++----------------------- - 1 file changed, 35 insertions(+), 34 deletions(-) - ---- a/drivers/usb/serial/visor.c -+++ b/drivers/usb/serial/visor.c -@@ -335,47 +335,48 @@ static int palm_os_3_probe(struct usb_se - goto exit; - } - -- if (retval == sizeof(*connection_info)) { -- connection_info = (struct visor_connection_info *) -- transfer_buffer; -- -- num_ports = le16_to_cpu(connection_info->num_ports); -- for (i = 0; i < num_ports; ++i) { -- switch ( -- connection_info->connections[i].port_function_id) { -- case VISOR_FUNCTION_GENERIC: -- string = "Generic"; -- break; -- case VISOR_FUNCTION_DEBUGGER: -- string = "Debugger"; -- break; -- case VISOR_FUNCTION_HOTSYNC: -- string = "HotSync"; -- break; -- case VISOR_FUNCTION_CONSOLE: -- string = "Console"; -- break; -- case VISOR_FUNCTION_REMOTE_FILE_SYS: -- string = "Remote File System"; -- break; -- default: -- string = "unknown"; -- break; -- } -- dev_info(dev, "%s: port %d, is for %s use\n", -- serial->type->description, -- connection_info->connections[i].port, string); -- } -+ if (retval != sizeof(*connection_info)) { -+ dev_err(dev, "Invalid connection information received from device\n"); -+ retval = -ENODEV; -+ goto exit; - } -- /* -- * Handle devices that report invalid stuff here. -- */ -+ -+ connection_info = (struct visor_connection_info *)transfer_buffer; -+ -+ num_ports = le16_to_cpu(connection_info->num_ports); -+ -+ /* Handle devices that report invalid stuff here. */ - if (num_ports == 0 || num_ports > 2) { - dev_warn(dev, "%s: No valid connect info available\n", - serial->type->description); - num_ports = 2; - } - -+ for (i = 0; i < num_ports; ++i) { -+ switch (connection_info->connections[i].port_function_id) { -+ case VISOR_FUNCTION_GENERIC: -+ string = "Generic"; -+ break; -+ case VISOR_FUNCTION_DEBUGGER: -+ string = "Debugger"; -+ break; -+ case VISOR_FUNCTION_HOTSYNC: -+ string = "HotSync"; -+ break; -+ case VISOR_FUNCTION_CONSOLE: -+ string = "Console"; -+ break; -+ case VISOR_FUNCTION_REMOTE_FILE_SYS: -+ string = "Remote File System"; -+ break; -+ default: -+ string = "unknown"; -+ break; -+ } -+ dev_info(dev, "%s: port %d, is for %s use\n", -+ serial->type->description, -+ connection_info->connections[i].port, string); -+ } - dev_info(dev, "%s: Number of ports: %d\n", serial->type->description, - num_ports); - |
