Skip to contentSkip to conversation

tiglusb timeouts

PATCH Applied Romain Lievin 2 participants 3 messages Nov 26, 2002 USB

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 tiglusb timeouts

Hi,

this patch fixes some troubles in the tiglusb driver.

Patch is against 2.5.49. Please apply.

Thanks, Romain.

Quoted 23 lines

From: "Randy.Dunlap" <[email protected]>
To: [email protected], [email protected],
[email protected]
Subject: [PATCH] tiglusb timeouts

Hi,

Here's a patch for you to consider and apply... It addresses the timeout parameter in the tiglusb driver.

1. timeout could be 0, causing a divide-by-zero.
The patch prevents this.

2. The timeout value to usb_bulk_msg() could be rounded down to cause a divide-by-zero if timeout was < 10, e.g. 9, in:

	result = usb_bulk_msg (s->dev, pipe, buffer, bytes_to_read,
			       &bytes_read, HZ / (timeout / 10));

9 / 10 == 0 => divide-by-zero !!

3. The timeout value above doesn't do very well on converting timeout to tenths of seconds. Even for the default timeout value of 15 (1.5 seconds), it becomes:

Quoted 8 lines
	HZ / (15 / 10) == HZ / 1 == HZ, or 1 second.
The patch corrects this formula to use:
	(HZ * 10) / timeout

Patch is against 2.5.49. Please apply.

Thanks,
~Randy

============================[ cut here ]========================

drivers/usb/misc/tiglusb.c renamed from drivers/usb/misc/tiglusb.c%times +8 -3
@@ -185,7 +185,7 @@
 
 	pipe = usb_rcvbulkpipe (s->dev, 1);
 	result = usb_bulk_msg (s->dev, pipe, buffer, bytes_to_read,
-			       &bytes_read, HZ / (timeout / 10));
+			       &bytes_read, HZ * 10 / timeout);
 	if (result == -ETIMEDOUT) {	/* NAK */
 		ret = result;
 		if (!bytes_read) {
@@ -242,7 +242,7 @@
 
 	pipe = usb_sndbulkpipe (s->dev, 2);
 	result = usb_bulk_msg (s->dev, pipe, buffer, bytes_to_write,
-			       &bytes_written, HZ / (timeout / 10));
+			       &bytes_written, HZ * 10 / timeout);
 
 	if (result == -ETIMEDOUT) {	/* NAK */
 		warn ("tiglusb_write, NAK received.");
@@ -453,6 +453,8 @@
 	if (ints[0] > 0) {
 		timeout = ints[1];
 	}
+	if (!timeout)
+		timeout = TIMAXTIME;
 
 	return 1;
 }
@@ -494,6 +496,9 @@
 
 	info (DRIVER_DESC ", " DRIVER_VERSION);
 
+	if (!timeout)
+		timeout = TIMAXTIME;
+
 	return 0;
 }
 
@@ -516,6 +521,6 @@
 MODULE_LICENSE (DRIVER_LICENSE);
 
 MODULE_PARM (timeout, "i");
-MODULE_PARM_DESC (timeout, "Timeout (default=1.5 seconds)");
+MODULE_PARM_DESC (timeout, "Timeout in tenths of seconds (default=1.5 seconds)");
 
 /* --------------------------------------------------------------------- */

============================[ cut here ]========================

Signature · 3 lines
Romain Lievin, aka 'roms'  	<[email protected]>
Web site 			<http://lpg.ticalc.org/prj_tilp>
"Linux, y'a moins bien mais c'est plus cher !"
Applied
#1 lore raw
Quoted 5 lines · Romain Lievin

Hi,

this patch fixes some troubles in the tiglusb driver.

Patch is against 2.5.49. Please apply.

Applied, thanks.

greg k-h

#2 lore raw
In reply to Romain Lievin
Quoted 5 lines · Romain Lievin

Hi,

this patch fixes some troubles in the tiglusb driver.

Patch is against 2.5.49. Please apply.

I also applied it to my 2.4 tree, as it applied there too.

thanks,

greg k-h