From: Andreas Noever <andreas.noever@gmail.com>
To: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,
bhelgaas@google.com
Cc: Andreas Noever <andreas.noever@gmail.com>
Subject: [PATCH 7/8] PCI: Check for child busses which use more bus numbers than allocated.
Date: Thu, 23 Jan 2014 21:59:27 +0100 [thread overview]
Message-ID: <1390510768-5652-8-git-send-email-andreas.noever@gmail.com> (raw)
In-Reply-To: <1390510768-5652-1-git-send-email-andreas.noever@gmail.com>
pci_scan_child_bus can (potentially) return a bus number higher than the subordinate
value of the child bus. Possible reasons are that bus numbers are reserved for
SR-IOV or for CardBus (SR-IOV is done without checks and the CardBus
checks are sketchy at best).
We clamp the returned value to the actual subordinate value and print a
warning if too many bus numbers are reserved.
Signed-off-by: Andreas Noever <andreas.noever@gmail.com>
---
drivers/pci/probe.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 90d5c48..74bc644 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -805,10 +805,13 @@ int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, int pass)
}
cmax = pci_scan_child_bus(child);
- if (cmax > max)
- max = cmax;
- if (child->busn_res.end > max)
- max = child->busn_res.end;
+ if (cmax > subordinate)
+ dev_warn(&dev->dev,
+ "bridge has subordinate %02x but max busn %02x\n",
+ subordinate, cmax);
+ /* subordinate should equal child->busn_res.end */
+ if (subordinate > max)
+ max = subordinate;
} else {
/*
* We need to assign a number to this bus which we always
--
1.8.5.3
next prev parent reply other threads:[~2014-01-23 21:00 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-23 20:59 [PATCH 0/8] PCI: cleanup pci_scan_bridge Andreas Noever
2014-01-23 20:59 ` [PATCH 1/8] PCI: Increment max correctly in pci_scan_bridge Andreas Noever
2014-01-23 20:59 ` [PATCH 2/8] PCI: Clarify the "scan anyway" comment " Andreas Noever
2014-01-23 20:59 ` [PATCH 3/8] PCI: Assign CardBus bus number only during the second pass Andreas Noever
2014-01-23 20:59 ` [PATCH 4/8] PCI: Use request_resource_conflict instead of insert_ for bus numbers Andreas Noever
2014-01-23 20:59 ` [PATCH 5/8] PCI: Make sure bus number resources stay within their parents bounds Andreas Noever
2014-01-23 20:59 ` [PATCH 6/8] PCI: Remove pci_fixup_parent_subordinate_busnr Andreas Noever
2014-01-23 20:59 ` Andreas Noever [this message]
2014-01-23 20:59 ` [PATCH 8/8] PCI: Don't scan random busses in pci_scan_bridge Andreas Noever
2014-02-11 0:16 ` [PATCH 0/8] PCI: cleanup pci_scan_bridge Bjorn Helgaas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1390510768-5652-8-git-send-email-andreas.noever@gmail.com \
--to=andreas.noever@gmail.com \
--cc=bhelgaas@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.