aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPali Rohár <pali@kernel.org>2024-03-30 11:06:25 +0100
committerMartin Mares <mj@ucw.cz>2024-04-05 13:14:07 +0200
commit9f3d614e4578bdec2b60d97caec400b28d4af9d3 (patch)
treeee3e1048fa3595fc6af032d4417f51f2b49b0830
parent4b4ea003ef812f098d6ad7052792261248959a1c (diff)
downloadpciutils-9f3d614e4578bdec2b60d97caec400b28d4af9d3.tar.gz
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.
-rw-r--r--lib/names-hwdb.c17
1 files changed, 10 insertions, 7 deletions
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 <stdlib.h>
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";