mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
USB serial fixes for 7.1-rc7
Here are two fixes for buffer overflows in the io_ti driver and a new modem device id. All have been in linux-next with no reported issues. -----BEGIN PGP SIGNATURE----- iJEEABYKADkWIQQHbPq+cpGvN/peuzMLxc3C7H1lCAUCaiK6XBsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIACgkQC8XNwux9ZQjb2QEAx3wjFuIWaTMAExl3Ybzh uRwr0QhocckyjVQFtW0pUxkBALTeLPfZmWmXjvnoFzhdaleHVIFDQ2IZO9+nGM8N 4QQH =pyYN -----END PGP SIGNATURE----- Merge tag 'usb-serial-7.1-rc7' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial into usb-linus Johan writes: USB serial fixes for 7.1-rc7 Here are two fixes for buffer overflows in the io_ti driver and a new modem device id. All have been in linux-next with no reported issues. * tag 'usb-serial-7.1-rc7' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial: USB: serial: option: add usb-id for Dell Wireless DW5826e-m USB: serial: io_ti: fix heap overflow in build_i2c_fw_hdr() USB: serial: io_ti: fix heap overflow in get_manuf_info()
This commit is contained in:
commit
4316acc7dd
|
|
@ -773,6 +773,12 @@ static int get_manuf_info(struct edgeport_serial *serial, u8 *buffer)
|
|||
}
|
||||
|
||||
/* Read the descriptor data */
|
||||
if (le16_to_cpu(rom_desc->Size) != sizeof(struct edge_ti_manuf_descriptor)) {
|
||||
dev_err(dev, "unexpected Edge descriptor length: %u\n",
|
||||
le16_to_cpu(rom_desc->Size));
|
||||
status = -EINVAL;
|
||||
goto exit;
|
||||
}
|
||||
status = read_rom(serial, start_address+sizeof(struct ti_i2c_desc),
|
||||
le16_to_cpu(rom_desc->Size), buffer);
|
||||
if (status)
|
||||
|
|
@ -838,6 +844,11 @@ static int build_i2c_fw_hdr(u8 *header, const struct firmware *fw)
|
|||
/* Pointer to fw_down memory image */
|
||||
img_header = (struct ti_i2c_image_header *)&fw->data[4];
|
||||
|
||||
if (le16_to_cpu(img_header->Length) >
|
||||
buffer_size - sizeof(struct ti_i2c_firmware_rec)) {
|
||||
kfree(buffer);
|
||||
return -EINVAL;
|
||||
}
|
||||
memcpy(buffer + sizeof(struct ti_i2c_firmware_rec),
|
||||
&fw->data[4 + sizeof(struct ti_i2c_image_header)],
|
||||
le16_to_cpu(img_header->Length));
|
||||
|
|
|
|||
|
|
@ -202,6 +202,7 @@ static void option_instat_callback(struct urb *urb);
|
|||
#define DELL_PRODUCT_5821E_ESIM 0x81e0
|
||||
#define DELL_PRODUCT_5829E_ESIM 0x81e4
|
||||
#define DELL_PRODUCT_5829E 0x81e6
|
||||
#define DELL_PRODUCT_5826E_ESIM 0x81ea
|
||||
|
||||
#define DELL_PRODUCT_FM101R_ESIM 0x8213
|
||||
#define DELL_PRODUCT_FM101R 0x8215
|
||||
|
|
@ -1123,6 +1124,8 @@ static const struct usb_device_id option_ids[] = {
|
|||
.driver_info = RSVD(0) | RSVD(6) },
|
||||
{ USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5829E_ESIM),
|
||||
.driver_info = RSVD(0) | RSVD(6) },
|
||||
{ USB_DEVICE_INTERFACE_CLASS(DELL_VENDOR_ID, DELL_PRODUCT_5826E_ESIM, 0xff),
|
||||
.driver_info = RSVD(1) | RSVD(4) },
|
||||
{ USB_DEVICE_INTERFACE_CLASS(DELL_VENDOR_ID, DELL_PRODUCT_FM101R, 0xff) },
|
||||
{ USB_DEVICE_INTERFACE_CLASS(DELL_VENDOR_ID, DELL_PRODUCT_FM101R_ESIM, 0xff) },
|
||||
{ USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) }, /* ADU-E100, ADU-310 */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user