[PATCH libpciaccess] PCI: set correct mask value when matching for bridges.

Egbert Eich eich at freedesktop.org
Wed Dec 5 09:30:11 PST 2012


The mask must not be zero otherwise the matching condition will never
be true: ((val & mask) == set).

Signed-off-by: Egbert Eich <eich at freedesktop.org>
---
 src/common_bridge.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/src/common_bridge.c b/src/common_bridge.c
index 4a067b9..82a13fd 100644
--- a/src/common_bridge.c
+++ b/src/common_bridge.c
@@ -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;
-- 
1.7.7



More information about the xorg-devel mailing list