OSDN Git Service

powerpc/pseries: Fix oops with MSIs when missing EEH PEs
authorAlexey Kardashevskiy <aik@ozlabs.ru>
Fri, 23 Nov 2012 02:25:39 +0000 (13:25 +1100)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 23 Nov 2012 02:26:05 +0000 (13:26 +1100)
The new EEH code introduced a small regression, if the EEH PEs
are missin (which happens currently in qemu for example), it
will deref a NULL pointer in the MSI code.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/platforms/pseries/msi.c

index d19f497..e5b0847 100644 (file)
@@ -220,7 +220,8 @@ static struct device_node *find_pe_dn(struct pci_dev *dev, int *total)
 
        /* Get the top level device in the PE */
        edev = of_node_to_eeh_dev(dn);
-       edev = list_first_entry(&edev->pe->edevs, struct eeh_dev, list);
+       if (edev->pe)
+               edev = list_first_entry(&edev->pe->edevs, struct eeh_dev, list);
        dn = eeh_dev_to_of_node(edev);
        if (!dn)
                return NULL;