• Pavel Skripkin's avatar
    Input: aiptek - properly check endpoint type · 5600f698
    Pavel Skripkin authored
    Syzbot reported warning in usb_submit_urb() which is caused by wrong
    endpoint type. There was a check for the number of endpoints, but not
    for the type of endpoint.
    
    Fix it by replacing old desc.bNumEndpoints check with
    usb_find_common_endpoints() helper for finding endpoints
    
    Fail log:
    
    usb 5-1: BOGUS urb xfer, pipe 1 != type 3
    WARNING: CPU: 2 PID: 48 at drivers/usb/core/urb.c:502 usb_submit_urb+0xed2/0x18a0 drivers/usb/core/urb.c:502
    Modules linked in:
    CPU: 2 PID: 48 Comm: kworker/2:2 Not tainted 5.17.0-rc6-syzkaller-00226-g07ebd38a #0
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014
    Workqueue: usb_hub_wq hub_event
    ...
    Call Trace:
     <TASK>
     aiptek_open+0xd5/0x130 drivers/input/tablet/aiptek.c:830
     input_open_device+0x1bb/0x320 drivers/input/input.c:629
     kbd_connect+0xfe/0x160 drivers/tty/vt/keyboard.c:1593
    
    Fixes: 8e20cf2b ("Input: aiptek - fix crash on detecting device without endpoints")
    Reported-and-tested-by: syzbot+75cccf2b7da87fb6f84b@syzkaller.appspotmail.com
    Signed-off-by: default avatarPavel Skripkin <paskripkin@gmail.com>
    Link: https://lore.kernel.org/r/20220308194328.26220-1-paskripkin@gmail.comSigned-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
    5600f698
aiptek.c 61.2 KB