[U-Boot] [PATCH] USB storage probe

Kim B. Heino Kim.Heino at bluegiga.com
Fri Mar 12 09:07:00 CET 2010


While debugging one ill behaving USB device I found two bugs in USB
storage probe.

usb_stor_get_info() returns -1 (error), 0 (skip) or 1 (ok). First part
of this patch fixes error case.

Second part fixes usb_inquiry()'s retry counter handling. Original code
had retry = -1 on error case, not retry = 0 as checked in the next line.


Signed-off-by: Kim B. Heino <Kim.Heino at bluegiga.com>


diff -ur u-boot.orig/common/usb_storage.c u-boot/common/usb_storage.c
--- u-boot.orig/common/usb_storage.c	2010-03-12 01:26:32.000000000 +0200
+++ u-boot/common/usb_storage.c	2010-03-12 09:51:56.355564562 +0200
@@ -244,7 +244,7 @@
 			 * get info and fill it in
 			 */
 			if (usb_stor_get_info(dev, &usb_stor[usb_max_devs],
-						&usb_dev_desc[usb_max_devs]))
+						&usb_dev_desc[usb_max_devs]) == 1)
 				usb_max_devs++;
 		}
 		/* if storage device */
@@ -888,7 +888,7 @@
 		USB_STOR_PRINTF("inquiry returns %d\n", i);
 		if (i == 0)
 			break;
-	} while (retry--);
+	} while (--retry);
 
 	if (!retry) {
 		printf("error in inquiry\n");


More information about the U-Boot mailing list