mirror of
https://abf.rosa.ru/djam/kernel-6.6.git
synced 2025-02-25 20:02:47 +00:00
40 lines
1.3 KiB
Diff
40 lines
1.3 KiB
Diff
From 427c3a95e3e29e65f59d99aaf320d7506f3eed57 Mon Sep 17 00:00:00 2001
|
|
From: Johan Hovold <johan@kernel.org>
|
|
Date: Thu, 12 Jan 2017 14:56:11 +0100
|
|
Subject: USB: serial: ftdi_sio: fix modem-status error handling
|
|
|
|
From: Johan Hovold <johan@kernel.org>
|
|
|
|
commit 427c3a95e3e29e65f59d99aaf320d7506f3eed57 upstream.
|
|
|
|
Make sure to detect short responses when fetching the modem status in
|
|
order to avoid parsing uninitialised buffer data and having bits of it
|
|
leak to user space.
|
|
|
|
Note that we still allow for short 1-byte responses.
|
|
|
|
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
|
|
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
Signed-off-by: Johan Hovold <johan@kernel.org>
|
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
|
|
---
|
|
drivers/usb/serial/ftdi_sio.c | 6 +++++-
|
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
|
|
|
--- a/drivers/usb/serial/ftdi_sio.c
|
|
+++ b/drivers/usb/serial/ftdi_sio.c
|
|
@@ -2433,8 +2433,12 @@ static int ftdi_get_modem_status(struct
|
|
FTDI_SIO_GET_MODEM_STATUS_REQUEST_TYPE,
|
|
0, priv->interface,
|
|
buf, len, WDR_TIMEOUT);
|
|
- if (ret < 0) {
|
|
+
|
|
+ /* NOTE: We allow short responses and handle that below. */
|
|
+ if (ret < 1) {
|
|
dev_err(&port->dev, "failed to get modem status: %d\n", ret);
|
|
+ if (ret >= 0)
|
|
+ ret = -EIO;
|
|
ret = usb_translate_errors(ret);
|
|
goto out;
|
|
}
|