mirror of
https://github.com/torvalds/linux.git
synced 2025-01-01 07:42:07 +00:00
USB-serial fixes for v4.17-rc4
Here's a fix for a long-standing issue in the visor driver, which could have security implications. Included is also a new modem device id. Both commits have been in linux-next for a couple of days with no reported issues. Signed-off-by: Johan Hovold <johan@kernel.org> -----BEGIN PGP SIGNATURE----- iQJFBAABCAAvFiEEHszNKQClByu0A+9RQQ3kT97htJUFAlrsITQRHGpvaGFuQGtl cm5lbC5vcmcACgkQQQ3kT97htJVRVA/8DaR7QYdYlvm3zOL9acsWsBjfwH9QvLei xldK3UHNk0Tk42WCGtXjpTeoZgRqZx27xoWzbCYxIHfCPE/t+0u6IBie9EzIGoJg y918BWobFd9D3DqT9tJOajtR08RH1KpM5r4mfyDdPZbVeihRJsMWhpjQvZm6dQEq IXdcZeHqYFUcHtwUax00I28epgYg6dA44/hHJGi18uUZ5nWTM1wqQW466DH3T4KF CtawtCBoY9wXl6uBf6jcbbMN5EQJTSjKQLRHU3Bs6ZOizhHL01FyWTrtznk27f7D +ZxB96NZQIvPHC0GB8mrL8/aXHZAhkFMPSaoTYnQDjWiiup3M1lpzKmFx8PlBwzH 93vy9cSs+P/0p9yRDcpeSyc2lF/QTJASEx0hrJmSfWruAJ2I4dWjSq+tz6mEmQyl IomB9Kvg7HfY5x/5LfskR4cioDrqGaah3llilPBaSs7SvdG145C2XqitqrnwV4OH I6RvmCEHWoJFXxuaDmVtrFcBTVrA4Qanodiqy1PxI7OoKU/odAMXytp5Osf+5481 bRIGpTAaP0CGqYZYFRYtPD6Q3hGV03FWe4p0Lrf5LWeNbIdRx2KnlpDmWrN1UerS KRfVKaLL5kzVs/pyTLBd6C21x5zJcJq14x2T+5ZwFWZoOumkfn/4RyX/+XisxyYQ hit4llYk5kA= =jWQ/ -----END PGP SIGNATURE----- Merge tag 'usb-serial-4.17-rc4' of https://git.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial into usb-linus Johan writes: USB-serial fixes for v4.17-rc4 Here's a fix for a long-standing issue in the visor driver, which could have security implications. Included is also a new modem device id. Both commits have been in linux-next for a couple of days with no reported issues. Signed-off-by: Johan Hovold <johan@kernel.org>
This commit is contained in:
commit
6844dc4272
@ -233,6 +233,8 @@ static void option_instat_callback(struct urb *urb);
|
||||
/* These Quectel products use Qualcomm's vendor ID */
|
||||
#define QUECTEL_PRODUCT_UC20 0x9003
|
||||
#define QUECTEL_PRODUCT_UC15 0x9090
|
||||
/* These u-blox products use Qualcomm's vendor ID */
|
||||
#define UBLOX_PRODUCT_R410M 0x90b2
|
||||
/* These Yuga products use Qualcomm's vendor ID */
|
||||
#define YUGA_PRODUCT_CLM920_NC5 0x9625
|
||||
|
||||
@ -1065,6 +1067,9 @@ static const struct usb_device_id option_ids[] = {
|
||||
/* Yuga products use Qualcomm vendor ID */
|
||||
{ USB_DEVICE(QUALCOMM_VENDOR_ID, YUGA_PRODUCT_CLM920_NC5),
|
||||
.driver_info = RSVD(1) | RSVD(4) },
|
||||
/* u-blox products using Qualcomm vendor ID */
|
||||
{ USB_DEVICE(QUALCOMM_VENDOR_ID, UBLOX_PRODUCT_R410M),
|
||||
.driver_info = RSVD(1) | RSVD(3) },
|
||||
/* Quectel products using Quectel vendor ID */
|
||||
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21),
|
||||
.driver_info = RSVD(4) },
|
||||
|
@ -335,47 +335,48 @@ static int palm_os_3_probe(struct usb_serial *serial,
|
||||
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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user