]> mj.ucw.cz Git - pciutils.git/blobdiff - lib/caps.c
lspci: Print names of capabilities even if we can't decode the rest
[pciutils.git] / lib / caps.c
index 13e395617758ad90befac56c4d31e8b6ecffc258..9a2e0a5f1291cf67cf8a1ac136311bae2ccb7d11 100644 (file)
@@ -71,7 +71,7 @@ pci_scan_ext_caps(struct pci_dev *d)
       if (been_there[where]++)
        break;
       pci_add_cap(d, where, id, PCI_CAP_EXTENDED);
-      where = header >> 20;
+      where = (header >> 20) & ~3;
     }
   while (where);
 }
@@ -96,8 +96,8 @@ pci_free_caps(struct pci_dev *d)
 
   while (cap = d->first_cap)
     {
-      d->first_cap = cap;
-      pci_mfree(d);
+      d->first_cap = cap->next;
+      pci_mfree(cap);
     }
 }
 
@@ -106,7 +106,7 @@ pci_find_cap(struct pci_dev *d, unsigned int id, unsigned int type)
 {
   struct pci_cap *c;
 
-  pci_fill_info(d, ((type == PCI_CAP_NORMAL) ? PCI_FILL_CAPS : PCI_FILL_EXT_CAPS));
+  pci_fill_info_v35(d, ((type == PCI_CAP_NORMAL) ? PCI_FILL_CAPS : PCI_FILL_EXT_CAPS));
   for (c=d->first_cap; c; c=c->next)
     if (c->type == type && c->id == id)
       return c;