In the Linux kernel, the following vulnerability has been resolved:
usb: usbtmc: Fix bug in pipe direction for control transfers
The syzbot fuzzer reported a minor bug in the usbtmc driver:
usb 5-1: BOGUS control dir, pipe 80001e80 doesn't match bRequestType 0 WARNING: CPU: 0 PID: 3813 at drivers/usb/core/urb.c:412 usbsubmiturb+0x13a5/0x1970 drivers/usb/core/urb.c:410 Modules linked in: CPU: 0 PID: 3813 Comm: syz-executor122 Not tainted 5.17.0-rc5-syzkaller-00306-g2293be58d6a1 #0 ... Call Trace: <TASK> usbstartwaiturb+0x113/0x530 drivers/usb/core/message.c:58 usbinternalcontrolmsg drivers/usb/core/message.c:102 [inline] usbcontrolmsg+0x2a5/0x4b0 drivers/usb/core/message.c:153 usbtmcioctlrequest drivers/usb/class/usbtmc.c:1947 [inline]
The problem is that usbtmcioctlrequest() uses usb_rcvctrlpipe() for all of its transfers, whether they are in or out. It's easy to fix.