• Alan Stern's avatar
    usb: usbtmc: Fix bug in pipe direction for control transfers · e9b667a8
    Alan Stern authored
    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
    usb_submit_urb+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-g2293be58 #0
    ...
    Call Trace:
     <TASK>
     usb_start_wait_urb+0x113/0x530 drivers/usb/core/message.c:58
     usb_internal_control_msg drivers/usb/core/message.c:102 [inline]
     usb_control_msg+0x2a5/0x4b0 drivers/usb/core/message.c:153
     usbtmc_ioctl_request drivers/usb/class/usbtmc.c:1947 [inline]
    
    The problem is that usbtmc_ioctl_request() uses usb_rcvctrlpipe() for
    all of its transfers, whether they are in or out.  It's easy to fix.
    
    CC: <stable@vger.kernel.org>
    Reported-and-tested-by: syzbot+a48e3d1a875240cab5de@syzkaller.appspotmail.com
    Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/YiEsYTPEE6lOCOA5@rowland.harvard.eduSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    e9b667a8
usbtmc.c 60.9 KB