[PATCH] ppc64: Fix add notifier crashes
authorJohn Rose <johnrose@austin.ibm.com>
Wed, 2 Nov 2005 16:29:55 +0000 (10:29 -0600)
committerPaul Mackerras <paulus@samba.org>
Thu, 3 Nov 2005 05:53:49 +0000 (16:53 +1100)
The extraction of PCI stuff from struct device_node left some false
assumptions in notifier code.  As a result, dynamic add crashes when
non-PCI nodes are added.  This patch fixes these assumptions.

Signed-off-by: John Rose <johnrose@austin.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/platforms/pseries/iommu.c
arch/ppc64/kernel/pci_dn.c

index 9e90d41131d8b115ffff46877f97e4bb3e3c85a5..a73faafaac8cf489a038e155f2fed045373a38eb 100644 (file)
@@ -498,7 +498,7 @@ static int iommu_reconfig_notifier(struct notifier_block *nb, unsigned long acti
 
        switch (action) {
        case PSERIES_RECONFIG_REMOVE:
-               if (pci->iommu_table &&
+               if (pci && pci->iommu_table &&
                    get_property(np, "ibm,dma-window", NULL))
                        iommu_free_table(np);
                break;
index 493bbe43f5b450cd470626b6412c488fea64df70..1a443a7ada4c868030d0cb4d2e0e14e1df28c257 100644 (file)
@@ -181,13 +181,14 @@ EXPORT_SYMBOL(fetch_dev_dn);
 static int pci_dn_reconfig_notifier(struct notifier_block *nb, unsigned long action, void *node)
 {
        struct device_node *np = node;
-       struct pci_dn *pci;
+       struct pci_dn *pci = NULL;
        int err = NOTIFY_OK;
 
        switch (action) {
        case PSERIES_RECONFIG_ADD:
                pci = np->parent->data;
-               update_dn_pci_info(np, pci->phb);
+               if (pci)
+                       update_dn_pci_info(np, pci->phb);
                break;
        default:
                err = NOTIFY_DONE;