aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/pci-label.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci/pci-label.c')
-rw-r--r--drivers/pci/pci-label.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/pci/pci-label.c b/drivers/pci/pci-label.c
index 51357377efbc..1d828a614ac0 100644
--- a/drivers/pci/pci-label.c
+++ b/drivers/pci/pci-label.c
@@ -43,9 +43,11 @@ static size_t find_smbios_instance_string(struct pci_dev *pdev, char *buf,
43{ 43{
44 const struct dmi_device *dmi; 44 const struct dmi_device *dmi;
45 struct dmi_dev_onboard *donboard; 45 struct dmi_dev_onboard *donboard;
46 int domain_nr;
46 int bus; 47 int bus;
47 int devfn; 48 int devfn;
48 49
50 domain_nr = pci_domain_nr(pdev->bus);
49 bus = pdev->bus->number; 51 bus = pdev->bus->number;
50 devfn = pdev->devfn; 52 devfn = pdev->devfn;
51 53
@@ -53,8 +55,9 @@ static size_t find_smbios_instance_string(struct pci_dev *pdev, char *buf,
53 while ((dmi = dmi_find_device(DMI_DEV_TYPE_DEV_ONBOARD, 55 while ((dmi = dmi_find_device(DMI_DEV_TYPE_DEV_ONBOARD,
54 NULL, dmi)) != NULL) { 56 NULL, dmi)) != NULL) {
55 donboard = dmi->device_data; 57 donboard = dmi->device_data;
56 if (donboard && donboard->bus == bus && 58 if (donboard && donboard->segment == domain_nr &&
57 donboard->devfn == devfn) { 59 donboard->bus == bus &&
60 donboard->devfn == devfn) {
58 if (buf) { 61 if (buf) {
59 if (attribute == SMBIOS_ATTR_INSTANCE_SHOW) 62 if (attribute == SMBIOS_ATTR_INSTANCE_SHOW)
60 return scnprintf(buf, PAGE_SIZE, 63 return scnprintf(buf, PAGE_SIZE,