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> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABCAAGBQJXrYB3AAoJEEEN5E/e4bSVz5sQAKjgRwxltR6uu4shLwSlumPA F/LWuPxZjKsDfn+QuYNTAw5bJF4smCB9AlCXesXGHSlU8q4wCMdHp2cU9adbmGys K6Ah1gzPY+PMkjtW4qiI3kR6AFXE+SgEUKGSskRpkiJ6Vq5IdO+qmk/TNEL96h2w B2a8CrPFbd2BW9J0Np3/W7BRMx9g1OUiQzif6vBZXAlGXt+pGlW8sAYZfzzzGddq m8UXbnXQkvi7Pr5Gwplcfs7PX3Qd3RLP4St4SpbeYE6uIJ2EgAaHV8uRwMa45Lmi AtROmXSj5SkgpqKHPNBxSe/kBqf6HTIGLLSHFKmGHfBQ009S+iPpg2XlQw8MCpLz EjX/oji00RgzbtQ10ztyNSxHqRKEdEVZmsWuJvHj01ajLvZgGWpBye2A5c/SUQRF yVtsex2YkFCuRDDuhE9iqx5+XOHKEIVHdRIP8EasFTENN8Dt7NLuMqw6YsD4Cf9G tdEa2ZuzipwXjqdXUfON0SKNFnjP9KjOOS8+ECnnuj5RlBeELFXIVamXn5vbQDl/ EI+jAcC2K9Hwa8cVI8FXT/NhBCVv92OMvHVvwnSNiEZFHA30UGhuXZyJfz5SY/Bp xP3P2dTbGd9j6X2eQitewIJFdoEkRE0XzT87v1t7Bw01kRB1rIvM5pspy5OcbT62 YmuVbzihdFQ7Xz++vSSD =k37B -----END PGP SIGNATURE----- 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:
commit
fa25425593
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user