summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2007-10-16 05:45:32 +0200
committerDavid S. Miller <davem@sunset.davemloft.net>2007-10-18 01:25:10 +0200
commit4209ab098c61b1a9684bb4d3fc287352fc2438c3 (patch)
tree5f8862485df17c6ab87cb8396280f14ab03a3e9b /arch
parent[SPARC64]: Fix boot failures due to bootmem. (diff)
downloadlinux-4209ab098c61b1a9684bb4d3fc287352fc2438c3.tar.xz
linux-4209ab098c61b1a9684bb4d3fc287352fc2438c3.zip
[SPARC64]: Check of_get_property() return in pci_determine_mem_io_space().
If the PCI controller lacks the 'ranges' property nothing is going to work. Noticed by Al Viro. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch')
-rw-r--r--arch/sparc64/kernel/pci_common.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/sparc64/kernel/pci_common.c b/arch/sparc64/kernel/pci_common.c
index c76bfbb7da08..923e0bcc3bfd 100644
--- a/arch/sparc64/kernel/pci_common.c
+++ b/arch/sparc64/kernel/pci_common.c
@@ -396,6 +396,13 @@ void pci_determine_mem_io_space(struct pci_pbm_info *pbm)
saw_mem = saw_io = 0;
pbm_ranges = of_get_property(pbm->prom_node, "ranges", &i);
+ if (!pbm_ranges) {
+ prom_printf("PCI: Fatal error, missing PBM ranges property "
+ " for %s\n",
+ pbm->name);
+ prom_halt();
+ }
+
num_pbm_ranges = i / sizeof(*pbm_ranges);
for (i = 0; i < num_pbm_ranges; i++) {