Skip to content

Commit 7784caa

Browse files
AlanSterngregkh
authored andcommitted
USB: usbtmc: Use usb_bulk_msg_killable() with user-specified timeouts
The usbtmc driver accepts timeout values specified by the user in an ioctl command, and uses these timeouts for some usb_bulk_msg() calls. Since the user can specify arbitrarily long timeouts and usb_bulk_msg() uses unkillable waits, call usb_bulk_msg_killable() instead to avoid the possibility of the user hanging a kernel thread indefinitely. Reported-by: syzbot+25ba18e2c5040447585d@syzkaller.appspotmail.com Closes: https://lore.kernel.org/linux-usb/8e1c7ac5-e076-44b0-84b8-1b34b20f0ae1@suse.com/T/#t Tested-by: syzbot+25ba18e2c5040447585d@syzkaller.appspotmail.com Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Fixes: 048c6d8 ("usb: usbtmc: Add ioctls to set/get usb timeout") CC: stable@vger.kernel.org Link: https://patch.msgid.link/81c6fc24-0607-40f1-8c20-5270dab2fad5@rowland.harvard.edu Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 4169099 commit 7784caa

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

drivers/usb/class/usbtmc.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -727,7 +727,7 @@ static int usbtmc488_ioctl_trigger(struct usbtmc_file_data *file_data)
727727
buffer[1] = data->bTag;
728728
buffer[2] = ~data->bTag;
729729

730-
retval = usb_bulk_msg(data->usb_dev,
730+
retval = usb_bulk_msg_killable(data->usb_dev,
731731
usb_sndbulkpipe(data->usb_dev,
732732
data->bulk_out),
733733
buffer, USBTMC_HEADER_SIZE,
@@ -1347,7 +1347,7 @@ static int send_request_dev_dep_msg_in(struct usbtmc_file_data *file_data,
13471347
buffer[11] = 0; /* Reserved */
13481348

13491349
/* Send bulk URB */
1350-
retval = usb_bulk_msg(data->usb_dev,
1350+
retval = usb_bulk_msg_killable(data->usb_dev,
13511351
usb_sndbulkpipe(data->usb_dev,
13521352
data->bulk_out),
13531353
buffer, USBTMC_HEADER_SIZE,
@@ -1419,7 +1419,7 @@ static ssize_t usbtmc_read(struct file *filp, char __user *buf,
14191419
actual = 0;
14201420

14211421
/* Send bulk URB */
1422-
retval = usb_bulk_msg(data->usb_dev,
1422+
retval = usb_bulk_msg_killable(data->usb_dev,
14231423
usb_rcvbulkpipe(data->usb_dev,
14241424
data->bulk_in),
14251425
buffer, bufsize, &actual,

0 commit comments

Comments
 (0)