diff options
author | Martin Mares <mj@ucw.cz> | 2013-11-10 12:39:19 +0100 |
---|---|---|
committer | Martin Mares <mj@ucw.cz> | 2013-11-10 12:39:19 +0100 |
commit | 4134538ae5df2adfa9a9befd49d1de4418b04780 (patch) | |
tree | 941c51aed2f08d323df0b1cb92fbf9e489f5276a | |
parent | 8ad3c8cfcf002557a8302156b79be4c54d4e22d1 (diff) | |
download | pciutils-4134538ae5df2adfa9a9befd49d1de4418b04780.tar.gz |
sysfs: Do not warn on incomplete slot addresses
Based on a patch by Zheng Huai Cheng <zhenghch@linux.vnet.ibm.com>.
-rw-r--r-- | lib/sysfs.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/sysfs.c b/lib/sysfs.c index fb1b521..5a48c0d 100644 --- a/lib/sysfs.c +++ b/lib/sysfs.c @@ -226,6 +226,7 @@ sysfs_fill_slots(struct pci_access *a) char namebuf[OBJNAMELEN], buf[16]; FILE *file; unsigned int dom, bus, dev; + int res = 0; struct pci_dev *d; /* ".", ".." or a special non-device perhaps */ @@ -244,8 +245,16 @@ sysfs_fill_slots(struct pci_access *a) if (!file) continue; - if (!fgets(buf, sizeof(buf), file) || sscanf(buf, "%x:%x:%x", &dom, &bus, &dev) < 3) - a->warning("sysfs_fill_slots: Couldn't parse entry address %s", buf); + if (!fgets(buf, sizeof(buf), file) || (res = sscanf(buf, "%x:%x:%x", &dom, &bus, &dev)) < 3) + { + /* + * In some cases, the slot is not tied to a specific device before + * a card gets inserted. This happens for example on IBM pSeries + * and we need not warn about it. + */ + if (res != 2) + a->warning("sysfs_fill_slots: Couldn't parse entry address %s", buf); + } else { for (d = a->devices; d; d = d->next) |