This patch (as851) fixes a bug introduced when the USB ID matching
code was refactored.  If any of the device-level matches fail we
should reject right away.  Instead, when none of the device-level
matches fail the current code accepts right away.

Signed-off-by: Alan Stern <[EMAIL PROTECTED]>

---

Greg:

I realized that this really is a bug.  Consider for example the 
USB_INTERFACE_INFO() macro.  It creates match entries that specify only 
interface-level values, not device-level values.  So usb_match_device() 
will not find any mismatches and will return 1.  At that point you don't 
want to accept immediately; you want to go on and test for interface-level 
mismatches.

Alan Stern



Index: usb-2.6/drivers/usb/core/driver.c
===================================================================
--- usb-2.6.orig/drivers/usb/core/driver.c
+++ usb-2.6/drivers/usb/core/driver.c
@@ -415,8 +415,8 @@ int usb_match_one_id(struct usb_interfac
        intf = interface->cur_altsetting;
        dev = interface_to_usbdev(interface);
 
-       if (usb_match_device(dev, id))
-               return 1;
+       if (!usb_match_device(dev, id))
+               return 0;
 
        /* The interface class, subclass, and protocol should never be
         * checked for a match if the device class is Vendor Specific,


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to