mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-08 12:52:40 -04:00
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: Johan Hovold <johan@kernel.org>
This commit is contained in:
@@ -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 */
|
||||
};
|
||||
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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) },
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user