summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAlexey Kardashevskiy <aik@ozlabs.ru>2012-11-23 13:25:39 +1100
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2012-11-23 13:26:05 +1100
commitbb4618823a3389086f157fafb2a0d97cade8d89f (patch)
tree0485c5a67e6dd65dae4bf0a64122b20159b2aa51 /arch
parentd6dc24613c222f9057131ccbd5264a10bcba9f97 (diff)
downloadblackbird-op-linux-bb4618823a3389086f157fafb2a0d97cade8d89f.tar.gz
blackbird-op-linux-bb4618823a3389086f157fafb2a0d97cade8d89f.zip
powerpc/pseries: Fix oops with MSIs when missing EEH PEs
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>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/platforms/pseries/msi.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/powerpc/platforms/pseries/msi.c b/arch/powerpc/platforms/pseries/msi.c
index d19f4977c834..e5b084723131 100644
--- a/arch/powerpc/platforms/pseries/msi.c
+++ b/arch/powerpc/platforms/pseries/msi.c
@@ -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;
OpenPOWER on IntegriCloud