mirror of
https://github.com/torvalds/linux.git
synced 2026-06-03 12:03:54 +02:00
usb: usbtmc: reject interrupt endpoints with small wMaxPacketSize
The USB488 subclass specification requires interrupt wMaxPacketSize to
be 0x02, unless the device sends vendor-specific notifications.
Endpoints that advertise less than 2 bytes for wMaxPacketSize are
unlikely to work with the current driver, as URBs will not have enough
space for interrupt headers. Considering that any notification URBs will
be ignored by the driver, reject these endpoints early during probe.
Fixes: 041370cce8 ("USB: usbtmc: refactor endpoint retrieval")
Cc: stable <stable@kernel.org>
Suggested-by: Michal Pecio <michal.pecio@gmail.com>
Signed-off-by: Heitor Alves de Siqueira <halves@igalia.com>
Link: https://patch.msgid.link/20260505-usbtmc-iin-size-v3-2-a36113f62db7@igalia.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
52f2ad3f7e
commit
121d2f682b
|
|
@ -2440,6 +2440,12 @@ static int usbtmc_probe(struct usb_interface *intf,
|
|||
data->iin_ep = int_in->bEndpointAddress;
|
||||
data->iin_wMaxPacketSize = usb_endpoint_maxp(int_in);
|
||||
data->iin_interval = int_in->bInterval;
|
||||
/* wMaxPacketSize should be 0x02 or more as per USB488 Table 22 */
|
||||
if (iface_desc->desc.bInterfaceProtocol == 1 &&
|
||||
data->iin_wMaxPacketSize < 2) {
|
||||
retcode = -EINVAL;
|
||||
goto err_put;
|
||||
}
|
||||
dev_dbg(&intf->dev, "Found Int in endpoint at %u\n",
|
||||
data->iin_ep);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user