[arch-commits] CVS update of core/base/udev (usb_id-fix.patch)

Tobias Powalowski tpowa at archlinux.org
Wed Dec 12 01:23:30 EST 2007


    Date: Wednesday, December 12, 2007 @ 01:23:30
  Author: tpowa
    Path: /home/cvs-core/core/base/udev

Modified: usb_id-fix.patch (1.2 -> 1.3)

'upgpkg: added patch again'


------------------+
 usb_id-fix.patch |  107 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 107 insertions(+)


Index: core/base/udev/usb_id-fix.patch
diff -u /dev/null core/base/udev/usb_id-fix.patch:1.3
--- /dev/null	Wed Dec 12 01:23:30 2007
+++ core/base/udev/usb_id-fix.patch	Wed Dec 12 01:23:30 2007
@@ -0,0 +1,107 @@
+From: Kay Sievers <kay.sievers at vrfy.org>
+Date: Mon, 15 Oct 2007 18:38:20 +0000 (+0200)
+Subject: usb_id: fail if vendor/product can not be retrieved
+X-Git-Url: http://git.kernel.org/?p=linux%2Fhotplug%2Fudev.git;a=commitdiff_plain;h=963033472f8d2aab0bf77147b916de8f3b0b5450
+
+usb_id: fail if vendor/product can not be retrieved
+
+Thanks to Daniel Drake for identifying the bug.
+---
+
+diff --git a/extras/usb_id/usb_id.c b/extras/usb_id/usb_id.c
+index d36a27b..5fb030d 100644
+--- a/extras/usb_id/usb_id.c
++++ b/extras/usb_id/usb_id.c
+@@ -1,7 +1,5 @@
+ /*
+- * usb_id.c
+- *
+- * Identify an USB (block) device
++ * usb_id - identify an USB device
+  *
+  * Copyright (c) 2005 SUSE Linux Products GmbH, Germany
+  *
+@@ -224,8 +222,6 @@ static int usb_id(const char *devpath)
+ 	struct sysfs_device *dev;
+ 	struct sysfs_device *dev_interface;
+ 	struct sysfs_device *dev_usb;
+-	const char *scsi_model, *scsi_vendor, *scsi_type, *scsi_rev;
+-	const char *usb_model = NULL, *usb_vendor = NULL, *usb_rev, *usb_serial;
+ 	const char *if_class, *if_subclass;
+ 	int if_class_num;
+ 	int protocol = 0;
+@@ -271,6 +267,7 @@ static int usb_id(const char *devpath)
+ 	/* mass storage */
+ 	if (protocol == 6 && !use_usb_info) {
+ 		struct sysfs_device *dev_scsi;
++		const char *scsi_model, *scsi_vendor, *scsi_type, *scsi_rev;
+ 		int host, bus, target, lun;
+ 
+ 		/* get scsi device */
+@@ -321,40 +318,50 @@ static int usb_id(const char *devpath)
+ 	}
+ 
+ fallback:
+-	/* Fallback to USB vendor & device */
++	/* fallback to USB vendor & device */
+ 	if (vendor_str[0] == '\0') {
++		const char *usb_vendor = NULL;
++
+ 		if (!use_num_info)
+-			if (!(usb_vendor = sysfs_attr_get_value(dev_usb->devpath, "manufacturer")))
+-				dbg("No USB vendor string found, using idVendor");
++			usb_vendor = sysfs_attr_get_value(dev_usb->devpath, "manufacturer");
++
++		if (!usb_vendor)
++			usb_vendor = sysfs_attr_get_value(dev_usb->devpath, "idVendor");
+ 
+ 		if (!usb_vendor) {
+-			if (!(usb_vendor = sysfs_attr_get_value(dev_usb->devpath, "idVendor"))) {
+-				dbg("No USB vendor information available\n");
+-				sprintf(vendor_str,"0000");
+-			}
++			info("No USB vendor information available");
++			return 1;
+ 		}
+-		set_str(vendor_str,usb_vendor, sizeof(vendor_str) - 1);
++		set_str(vendor_str, usb_vendor, sizeof(vendor_str)-1);
+ 	}
+-	
++
+ 	if (model_str[0] == '\0') {
++		const char *usb_model = NULL;
++
+ 		if (!use_num_info)
+-			if (!(usb_model = sysfs_attr_get_value(dev_usb->devpath, "product")))
+-				dbg("No USB model string found, using idProduct");
+-		
++			usb_model = sysfs_attr_get_value(dev_usb->devpath, "product");
++
++		if (!usb_model)
++			usb_model = sysfs_attr_get_value(dev_usb->devpath, "idProduct");
++
+ 		if (!usb_model) {
+-			if (!(usb_model = sysfs_attr_get_value(dev_usb->devpath, "idProduct")))
+-				dbg("No USB model information available\n"); sprintf(model_str,"0000");
++			dbg("No USB model information available");
++			return 1;
+ 		}
+-		set_str(model_str, usb_model, sizeof(model_str) - 1);
++		set_str(model_str, usb_model, sizeof(model_str)-1);
+ 	}
+ 
+ 	if (revision_str[0] == '\0') {
++		const char *usb_rev;
++
+ 		usb_rev = sysfs_attr_get_value(dev_usb->devpath, "bcdDevice");
+ 		if (usb_rev)
+ 			set_str(revision_str, usb_rev, sizeof(revision_str)-1);
+ 	}
+ 
+ 	if (serial_str[0] == '\0') {
++		const char *usb_serial;
++
+ 		usb_serial = sysfs_attr_get_value(dev_usb->devpath, "serial");
+ 		if (usb_serial)
+ 			set_str(serial_str, usb_serial, sizeof(serial_str)-1);
+ 




More information about the arch-commits mailing list