Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fa254255 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Merge tag 'usb-serial-4.8-rc2' of...

Merge tag 'usb-serial-4.8-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial

 into usb-linus

Johan writes:

USB-serial fixes for v4.8-rc2

Here is a fix of a memory leak in a driver-registration error path, and
some new device ids.

Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
parents 53958751 647024a7
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -648,6 +648,8 @@ static const struct usb_device_id id_table_combined[] = {
	{ USB_DEVICE(FTDI_VID, FTDI_ELV_TFD128_PID) },
	{ USB_DEVICE(FTDI_VID, FTDI_ELV_FM3RX_PID) },
	{ USB_DEVICE(FTDI_VID, FTDI_ELV_WS777_PID) },
	{ USB_DEVICE(FTDI_VID, FTDI_PALMSENS_PID) },
	{ USB_DEVICE(FTDI_VID, FTDI_IVIUM_XSTAT_PID) },
	{ USB_DEVICE(FTDI_VID, LINX_SDMUSBQSS_PID) },
	{ USB_DEVICE(FTDI_VID, LINX_MASTERDEVEL2_PID) },
	{ USB_DEVICE(FTDI_VID, LINX_FUTURE_0_PID) },
@@ -1008,6 +1010,7 @@ static const struct usb_device_id id_table_combined[] = {
	{ USB_DEVICE(ICPDAS_VID, ICPDAS_I7560U_PID) },
	{ USB_DEVICE(ICPDAS_VID, ICPDAS_I7561U_PID) },
	{ USB_DEVICE(ICPDAS_VID, ICPDAS_I7563U_PID) },
	{ USB_DEVICE(WICED_VID, WICED_USB20706V2_PID) },
	{ }					/* Terminating entry */
};

+12 −0
Original line number Diff line number Diff line
@@ -405,6 +405,12 @@
#define FTDI_4N_GALAXY_DE_2_PID	0xF3C1
#define FTDI_4N_GALAXY_DE_3_PID	0xF3C2

/*
 * Ivium Technologies product IDs
 */
#define FTDI_PALMSENS_PID	0xf440
#define FTDI_IVIUM_XSTAT_PID	0xf441

/*
 * Linx Technologies product ids
 */
@@ -672,6 +678,12 @@
#define INTREPID_VALUECAN_PID	0x0601
#define INTREPID_NEOVI_PID	0x0701

/*
 * WICED USB UART
 */
#define WICED_VID		0x0A5C
#define WICED_USB20706V2_PID	0x6422

/*
 * Definitions for ID TECH (www.idt-net.com) devices
 */
+22 −0
Original line number Diff line number Diff line
@@ -274,6 +274,12 @@ static void option_instat_callback(struct urb *urb);
#define TELIT_PRODUCT_LE920			0x1200
#define TELIT_PRODUCT_LE910			0x1201
#define TELIT_PRODUCT_LE910_USBCFG4		0x1206
#define TELIT_PRODUCT_LE920A4_1207		0x1207
#define TELIT_PRODUCT_LE920A4_1208		0x1208
#define TELIT_PRODUCT_LE920A4_1211		0x1211
#define TELIT_PRODUCT_LE920A4_1212		0x1212
#define TELIT_PRODUCT_LE920A4_1213		0x1213
#define TELIT_PRODUCT_LE920A4_1214		0x1214

/* ZTE PRODUCTS */
#define ZTE_VENDOR_ID				0x19d2
@@ -628,6 +634,11 @@ static const struct option_blacklist_info telit_le920_blacklist = {
	.reserved = BIT(1) | BIT(5),
};

static const struct option_blacklist_info telit_le920a4_blacklist_1 = {
	.sendsetup = BIT(0),
	.reserved = BIT(1),
};

static const struct option_blacklist_info telit_le922_blacklist_usbcfg0 = {
	.sendsetup = BIT(2),
	.reserved = BIT(0) | BIT(1) | BIT(3),
@@ -1203,6 +1214,16 @@ static const struct usb_device_id option_ids[] = {
		.driver_info = (kernel_ulong_t)&telit_le922_blacklist_usbcfg3 },
	{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920),
		.driver_info = (kernel_ulong_t)&telit_le920_blacklist },
	{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920A4_1207) },
	{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920A4_1208),
		.driver_info = (kernel_ulong_t)&telit_le920a4_blacklist_1 },
	{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920A4_1211),
		.driver_info = (kernel_ulong_t)&telit_le922_blacklist_usbcfg3 },
	{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920A4_1212),
		.driver_info = (kernel_ulong_t)&telit_le920a4_blacklist_1 },
	{ USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920A4_1213, 0xff) },
	{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920A4_1214),
		.driver_info = (kernel_ulong_t)&telit_le922_blacklist_usbcfg3 },
	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */
	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0002, 0xff, 0xff, 0xff),
		.driver_info = (kernel_ulong_t)&net_intf1_blacklist },
@@ -1966,6 +1987,7 @@ static const struct usb_device_id option_ids[] = {
	  .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
	{ USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e01, 0xff, 0xff, 0xff) }, /* D-Link DWM-152/C1 */
	{ USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e02, 0xff, 0xff, 0xff) }, /* D-Link DWM-156/C1 */
	{ USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x7e11, 0xff, 0xff, 0xff) }, /* D-Link DWM-156/A3 */
	{ USB_DEVICE_INTERFACE_CLASS(0x2020, 0x4000, 0xff) },                /* OLICARD300 - MT6225 */
	{ USB_DEVICE(INOVIA_VENDOR_ID, INOVIA_SEW858) },
	{ USB_DEVICE(VIATELECOM_VENDOR_ID, VIATELECOM_PRODUCT_CDS7) },
+3 −1
Original line number Diff line number Diff line
@@ -1433,7 +1433,7 @@ int usb_serial_register_drivers(struct usb_serial_driver *const serial_drivers[]

	rc = usb_register(udriver);
	if (rc)
		return rc;
		goto failed_usb_register;

	for (sd = serial_drivers; *sd; ++sd) {
		(*sd)->usb_driver = udriver;
@@ -1451,6 +1451,8 @@ int usb_serial_register_drivers(struct usb_serial_driver *const serial_drivers[]
	while (sd-- > serial_drivers)
		usb_serial_deregister(*sd);
	usb_deregister(udriver);
failed_usb_register:
	kfree(udriver);
	return rc;
}
EXPORT_SYMBOL_GPL(usb_serial_register_drivers);