From: Pali Rohár Date: Sat, 30 Mar 2024 10:06:25 +0000 (+0100) Subject: libpci: hwdb: Remove ID_SUBSYSTEM and ID_GEN_SUBSYSTEM usage from pci_id_hwdb_lookup() X-Git-Tag: v3.13.0~24 X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=9f3d614e4578bdec2b60d97caec400b28d4af9d3;p=pciutils.git libpci: hwdb: Remove ID_SUBSYSTEM and ID_GEN_SUBSYSTEM usage from pci_id_hwdb_lookup() Currently used udev hwdb key "ID_MODEL_FROM_DATABASE" does not return subsystem, but returns device name. There is no udev hwdb key which returns subsystem or generic subsystem. So remove ID_SUBSYSTEM and ID_GEN_SUBSYSTEM from pci_id_hwdb_lookup(). This change fixes issue that pci_id_hwdb_lookup() as subsystem name always returned device name. --- diff --git a/lib/names-hwdb.c b/lib/names-hwdb.c index 71e7229..b1f6052 100644 --- a/lib/names-hwdb.c +++ b/lib/names-hwdb.c @@ -21,7 +21,7 @@ #include char * -pci_id_hwdb_lookup(struct pci_access *a, int cat, int id1, int id2, int id3, int id4) +pci_id_hwdb_lookup(struct pci_access *a, int cat, int id1, int id2, int id3, int id4 UNUSED) { char modalias[64]; const char *key = NULL; @@ -41,13 +41,16 @@ pci_id_hwdb_lookup(struct pci_access *a, int cat, int id1, int id2, int id3, int key = "ID_MODEL_FROM_DATABASE"; break; case ID_SUBSYSTEM: - sprintf(modalias, "pci:v%08Xd%08Xsv%08Xsd%08X*", id1, id2, id3, id4); - key = "ID_MODEL_FROM_DATABASE"; - break; + /* + * There is no udev hwdb key which returns subsystem. Also note that query + * modalias "pci:v%08Xd%08Xsv%08Xsd%08X*" matches also hwdb device with + * modalias "pci:v%08Xd%08Xsv*sd*" (which is the default modalias), so + * there is no way to get information specific for the subsystem. + */ + return NULL; case ID_GEN_SUBSYSTEM: - sprintf(modalias, "pci:v*d*sv%08Xsd%08X*", id1, id2); - key = "ID_MODEL_FROM_DATABASE"; - break; + /* There is no udev hwdb key which returns generic subsystem. */ + return NULL; case ID_CLASS: sprintf(modalias, "pci:v*d*sv*sd*bc%02X*", id1); key = "ID_PCI_CLASS_FROM_DATABASE";