diff options
| author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-10-09 13:20:30 +0200 | 
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-10-09 13:20:30 +0200 | 
| commit | 47a4b71c0b15be08a0f5e3011e71551a269bbe59 (patch) | |
| tree | 9f924e759ffc03a7c2447ac95100e7284b052f53 /drivers/usb | |
| parent | 8a5776a5f49812d29fe4b2d0a2d71675c3facf3f (diff) | |
| parent | 299d7572e46f98534033a9e65973f13ad1ce9047 (diff) | |
Merge tag 'usb-serial-4.14-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial into usb-linus
Johan writes:
USB-serial fixes for v4.14-rc5
Here's a fix for a cp210x regression that prevented a class of devices
from being successfully probed. Two use-after-free bugs in the console
code are also fixed.
Included are also some new device ids.
All but the last three commits have been in linux-next with no reported
issues.
Diffstat (limited to 'drivers/usb')
| -rw-r--r-- | drivers/usb/serial/console.c | 3 | ||||
| -rw-r--r-- | drivers/usb/serial/cp210x.c | 13 | ||||
| -rw-r--r-- | drivers/usb/serial/ftdi_sio.c | 2 | ||||
| -rw-r--r-- | drivers/usb/serial/ftdi_sio_ids.h | 7 | ||||
| -rw-r--r-- | drivers/usb/serial/option.c | 2 | ||||
| -rw-r--r-- | drivers/usb/serial/qcserial.c | 4 | 
6 files changed, 24 insertions, 7 deletions
diff --git a/drivers/usb/serial/console.c b/drivers/usb/serial/console.c index fdf89800ebc3..43a862a90a77 100644 --- a/drivers/usb/serial/console.c +++ b/drivers/usb/serial/console.c @@ -186,6 +186,7 @@ static int usb_console_setup(struct console *co, char *options)  	tty_kref_put(tty);   reset_open_count:  	port->port.count = 0; +	info->port = NULL;  	usb_autopm_put_interface(serial->interface);   error_get_interface:  	usb_serial_put(serial); @@ -265,7 +266,7 @@ static struct console usbcons = {  void usb_serial_console_disconnect(struct usb_serial *serial)  { -	if (serial->port[0] == usbcons_info.port) { +	if (serial->port[0] && serial->port[0] == usbcons_info.port) {  		usb_serial_console_exit();  		usb_serial_put(serial);  	} diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c index 2d945c9f975c..412f812522ee 100644 --- a/drivers/usb/serial/cp210x.c +++ b/drivers/usb/serial/cp210x.c @@ -177,6 +177,7 @@ static const struct usb_device_id id_table[] = {  	{ USB_DEVICE(0x1843, 0x0200) }, /* Vaisala USB Instrument Cable */  	{ USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */  	{ USB_DEVICE(0x18EF, 0xE025) }, /* ELV Marble Sound Board 1 */ +	{ USB_DEVICE(0x18EF, 0xE032) }, /* ELV TFD500 Data Logger */  	{ USB_DEVICE(0x1901, 0x0190) }, /* GE B850 CP2105 Recorder interface */  	{ USB_DEVICE(0x1901, 0x0193) }, /* GE B650 CP2104 PMC interface */  	{ USB_DEVICE(0x1901, 0x0194) },	/* GE Healthcare Remote Alarm Box */ @@ -352,6 +353,7 @@ static struct usb_serial_driver * const serial_drivers[] = {  #define CP210X_PARTNUM_CP2104	0x04  #define CP210X_PARTNUM_CP2105	0x05  #define CP210X_PARTNUM_CP2108	0x08 +#define CP210X_PARTNUM_UNKNOWN	0xFF  /* CP210X_GET_COMM_STATUS returns these 0x13 bytes */  struct cp210x_comm_status { @@ -1491,8 +1493,11 @@ static int cp210x_attach(struct usb_serial *serial)  	result = cp210x_read_vendor_block(serial, REQTYPE_DEVICE_TO_HOST,  					  CP210X_GET_PARTNUM, &priv->partnum,  					  sizeof(priv->partnum)); -	if (result < 0) -		goto err_free_priv; +	if (result < 0) { +		dev_warn(&serial->interface->dev, +			 "querying part number failed\n"); +		priv->partnum = CP210X_PARTNUM_UNKNOWN; +	}  	usb_set_serial_data(serial, priv); @@ -1505,10 +1510,6 @@ static int cp210x_attach(struct usb_serial *serial)  	}  	return 0; -err_free_priv: -	kfree(priv); - -	return result;  }  static void cp210x_disconnect(struct usb_serial *serial) diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 1cec03799cdf..49d1b2d4606d 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c @@ -1015,6 +1015,8 @@ static const struct usb_device_id id_table_combined[] = {  	{ USB_DEVICE(WICED_VID, WICED_USB20706V2_PID) },  	{ USB_DEVICE(TI_VID, TI_CC3200_LAUNCHPAD_PID),  		.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, +	{ USB_DEVICE(CYPRESS_VID, CYPRESS_WICED_BT_USB_PID) }, +	{ USB_DEVICE(CYPRESS_VID, CYPRESS_WICED_WL_USB_PID) },  	{ }					/* Terminating entry */  }; diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h index 4fcf1cecb6d7..f9d15bd62785 100644 --- a/drivers/usb/serial/ftdi_sio_ids.h +++ b/drivers/usb/serial/ftdi_sio_ids.h @@ -610,6 +610,13 @@  #define ADI_GNICEPLUS_PID	0xF001  /* + * Cypress WICED USB UART + */ +#define CYPRESS_VID			0x04B4 +#define CYPRESS_WICED_BT_USB_PID	0x009B +#define CYPRESS_WICED_WL_USB_PID	0xF900 + +/*   * Microchip Technology, Inc.   *   * MICROCHIP_VID (0x04D8) and MICROCHIP_USB_BOARD_PID (0x000A) are diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 54bfef13966a..ba672cf4e888 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c @@ -522,6 +522,7 @@ static void option_instat_callback(struct urb *urb);  /* TP-LINK Incorporated products */  #define TPLINK_VENDOR_ID			0x2357 +#define TPLINK_PRODUCT_LTE			0x000D  #define TPLINK_PRODUCT_MA180			0x0201  /* Changhong products */ @@ -2011,6 +2012,7 @@ static const struct usb_device_id option_ids[] = {  	{ USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MEN200) },  	{ USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T_600A) },  	{ USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T_600E) }, +	{ USB_DEVICE_AND_INTERFACE_INFO(TPLINK_VENDOR_ID, TPLINK_PRODUCT_LTE, 0xff, 0x00, 0x00) },	/* TP-Link LTE Module */  	{ USB_DEVICE(TPLINK_VENDOR_ID, TPLINK_PRODUCT_MA180),  	  .driver_info = (kernel_ulong_t)&net_intf4_blacklist },  	{ USB_DEVICE(TPLINK_VENDOR_ID, 0x9000),					/* TP-Link MA260 */ diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c index ebc0beea69d6..eb9928963a53 100644 --- a/drivers/usb/serial/qcserial.c +++ b/drivers/usb/serial/qcserial.c @@ -174,6 +174,10 @@ static const struct usb_device_id id_table[] = {  	{DEVICE_SWI(0x413c, 0x81b3)},	/* Dell Wireless 5809e Gobi(TM) 4G LTE Mobile Broadband Card (rev3) */  	{DEVICE_SWI(0x413c, 0x81b5)},	/* Dell Wireless 5811e QDL */  	{DEVICE_SWI(0x413c, 0x81b6)},	/* Dell Wireless 5811e QDL */ +	{DEVICE_SWI(0x413c, 0x81cf)},   /* Dell Wireless 5819 */ +	{DEVICE_SWI(0x413c, 0x81d0)},   /* Dell Wireless 5819 */ +	{DEVICE_SWI(0x413c, 0x81d1)},   /* Dell Wireless 5818 */ +	{DEVICE_SWI(0x413c, 0x81d2)},   /* Dell Wireless 5818 */  	/* Huawei devices */  	{DEVICE_HWI(0x03f0, 0x581d)},	/* HP lt4112 LTE/HSPA+ Gobi 4G Modem (Huawei me906e) */  | 
