MIPS: PCI: Fix pcibios_scan_bus() NULL check code path
authorLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Mon, 10 Jul 2017 14:58:46 +0000 (09:58 -0500)
committerBjorn Helgaas <bhelgaas@google.com>
Mon, 31 Jul 2017 19:37:53 +0000 (14:37 -0500)
If pci_scan_root_bus() fails (ie returns NULL) pcibios_scan_bus() must
return immediately since the struct pci_bus pointer it returns is not valid
and cannot be used.

Move code checking the pci_scan_root_bus() return value to reinstate proper
pcibios_scanbus() error path behaviour.

Fixes: 88555b481958 ("MIPS: PCI: Support for CONFIG_PCI_DOMAINS_GENERIC")
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Paul Burton <paul.burton@imgtec.com>
arch/mips/pci/pci-legacy.c

index 174575a9a112dcb73634e31b21040df3ad6ad470..71d62f818d77ddf370e25f0f1bf5cb54c5ae82f0 100644 (file)
@@ -89,16 +89,16 @@ static void pcibios_scanbus(struct pci_controller *hose)
        pci_add_resource(&resources, hose->busn_resource);
        bus = pci_scan_root_bus(NULL, next_busno, hose->pci_ops, hose,
                                &resources);
-       hose->bus = bus;
-
-       need_domain_info = need_domain_info || pci_domain_nr(bus);
-       set_pci_need_domain_info(hose, need_domain_info);
-
        if (!bus) {
                pci_free_resource_list(&resources);
                return;
        }
 
+       hose->bus = bus;
+
+       need_domain_info = need_domain_info || pci_domain_nr(bus);
+       set_pci_need_domain_info(hose, need_domain_info);
+
        next_busno = bus->busn_res.end + 1;
        /* Don't allow 8-bit bus number overflow inside the hose -
           reserve some space for bridges. */