Subject: USB: make MODALIAS code a bit smaller devices

From: Paulo Marques <[email-masked]>
Date: Wed, 18 May 2005 13:12:49 +0100

This patch makes the code to provide modalias in sysfs for usb devices
56 bytes smaller in i386, while making it clear that the first part of
the modalias string is the same no matter what the device class is.

Signed-Off-By: Paulo Marques <[email-masked]>
Signed-off-by: Greg Kroah-Hartman <[email-masked]>

---
 drivers/usb/core/sysfs.c |   22 ++++++++++------------
 1 files changed, 10 insertions(+), 12 deletions(-)

--- gregkh-2.6.orig/drivers/usb/core/sysfs.c	2005-05-23 16:06:44.000000000 -0700
+++ gregkh-2.6/drivers/usb/core/sysfs.c	2005-05-23 16:09:37.000000000 -0700
@@ -290,32 +290,30 @@
 {
 	struct usb_interface *intf;
 	struct usb_device *udev;
+	int len;
 
 	intf = to_usb_interface(dev);
 	udev = interface_to_usbdev(intf);
-	if (udev->descriptor.bDeviceClass == 0) {
-		struct usb_host_interface *alt = intf->cur_altsetting;
 
-		return sprintf(buf, "usb:v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02Xic%02Xisc%02Xip%02X\n",
+	len = sprintf(buf, "usb:v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02Xic",
 			       le16_to_cpu(udev->descriptor.idVendor),
 			       le16_to_cpu(udev->descriptor.idProduct),
 			       le16_to_cpu(udev->descriptor.bcdDevice),
 			       udev->descriptor.bDeviceClass,
 			       udev->descriptor.bDeviceSubClass,
-			       udev->descriptor.bDeviceProtocol,
+			       udev->descriptor.bDeviceProtocol);
+	buf += len;
+
+	if (udev->descriptor.bDeviceClass == 0) {
+		struct usb_host_interface *alt = intf->cur_altsetting;
+
+		return len + sprintf(buf, "%02Xisc%02Xip%02X\n",
 			       alt->desc.bInterfaceClass,
 			       alt->desc.bInterfaceSubClass,
 			       alt->desc.bInterfaceProtocol);
  	} else {
-		return sprintf(buf, "usb:v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02Xic*isc*ip*\n",
-			       le16_to_cpu(udev->descriptor.idVendor),
-			       le16_to_cpu(udev->descriptor.idProduct),
-			       le16_to_cpu(udev->descriptor.bcdDevice),
-			       udev->descriptor.bDeviceClass,
-			       udev->descriptor.bDeviceSubClass,
-			       udev->descriptor.bDeviceProtocol);
+		return len + sprintf(buf, "*isc*ip*\n");
 	}
-
 }
 static DEVICE_ATTR(modalias, S_IRUGO, show_modalias, NULL);