Skip to content

Commit 4e77d3e

Browse files
dpenklergregkh
authored andcommitted
usb: usbtmc: Fix erroneous generic_read ioctl return
wait_event_interruptible_timeout returns a long The return value was being assigned to an int causing an integer overflow when the remaining jiffies > INT_MAX which resulted in random error returns. Use a long return value, converting to the int ioctl return only on error. Fixes: bb99794 ("usb: usbtmc: Add ioctl for vendor specific read") Cc: stable@vger.kernel.org Signed-off-by: Dave Penkler <dpenkler@gmail.com> Link: https://lore.kernel.org/r/20250502070941.31819-4-dpenkler@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent a9747c9 commit 4e77d3e

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

drivers/usb/class/usbtmc.c

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -833,6 +833,7 @@ static ssize_t usbtmc_generic_read(struct usbtmc_file_data *file_data,
833833
unsigned long expire;
834834
int bufcount = 1;
835835
int again = 0;
836+
long wait_rv;
836837

837838
/* mutex already locked */
838839

@@ -945,19 +946,24 @@ static ssize_t usbtmc_generic_read(struct usbtmc_file_data *file_data,
945946
if (!(flags & USBTMC_FLAG_ASYNC)) {
946947
dev_dbg(dev, "%s: before wait time %lu\n",
947948
__func__, expire);
948-
retval = wait_event_interruptible_timeout(
949+
wait_rv = wait_event_interruptible_timeout(
949950
file_data->wait_bulk_in,
950951
usbtmc_do_transfer(file_data),
951952
expire);
952953

953-
dev_dbg(dev, "%s: wait returned %d\n",
954-
__func__, retval);
954+
dev_dbg(dev, "%s: wait returned %ld\n",
955+
__func__, wait_rv);
956+
957+
if (wait_rv < 0) {
958+
retval = wait_rv;
959+
goto error;
960+
}
955961

956-
if (retval <= 0) {
957-
if (retval == 0)
958-
retval = -ETIMEDOUT;
962+
if (wait_rv == 0) {
963+
retval = -ETIMEDOUT;
959964
goto error;
960965
}
966+
961967
}
962968

963969
urb = usb_get_from_anchor(&file_data->in_anchor);

0 commit comments

Comments
 (0)