PCI: set correct mask value when matching for bridges.
authorEgbert Eich <eich@freedesktop.org>
Mon, 4 Jul 2011 05:38:33 +0000 (07:38 +0200)
committerEgbert Eich <eich@freedesktop.org>
Thu, 3 Jan 2013 15:22:54 +0000 (10:22 -0500)
The mask must not be zero otherwise the matching condition will never
be true: ((val & mask) == set).

Signed-off-by: Egbert Eich <eich@freedesktop.org>
Reviewed-by: Guillem Jover <guillem@hadrons.org>
src/common_bridge.c

index 4a067b9..82a13fd 100644 (file)
@@ -321,6 +321,8 @@ pci_device_get_bridge_buses(struct pci_device * dev, int *primary_bus,
 
 #define PCI_CLASS_BRIDGE 0x06
 #define PCI_SUBCLASS_BRIDGE_PCI 0x04
+#define PCI_CLASS_MASK 0xFF
+#define PCI_SUBCLASS_MASK 0xFF
 
 struct pci_device *
 pci_device_get_parent_bridge(struct pci_device *dev)
@@ -328,7 +330,7 @@ pci_device_get_parent_bridge(struct pci_device *dev)
     struct pci_id_match bridge_match = {
         PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY,
         (PCI_CLASS_BRIDGE << 16) | (PCI_SUBCLASS_BRIDGE_PCI << 8),
-        0
+        (PCI_CLASS_MASK << 16) | (PCI_SUBCLASS_MASK << 8)
     };
 
     struct pci_device *bridge;