We should avoid use the return value directly after call iommu_pseries_alloc_group. Because it_may return a null.
Signed-off-by: Deming Wang <wangdem...@inspur.com> --- arch/powerpc/platforms/pseries/iommu.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c index fba64304e859..801eb9d4bdca 100644 --- a/arch/powerpc/platforms/pseries/iommu.c +++ b/arch/powerpc/platforms/pseries/iommu.c @@ -649,6 +649,9 @@ static void pci_dma_bus_setup_pSeries(struct pci_bus *bus) pci->phb->dma_window_base_cur = 0x8000000ul; pci->table_group = iommu_pseries_alloc_group(pci->phb->node); + if (!pci->table_group) + return; + tbl = pci->table_group->tables[0]; iommu_table_setparms(pci->phb, dn, tbl); @@ -734,6 +737,9 @@ static void pci_dma_bus_setup_pSeriesLP(struct pci_bus *bus) if (!ppci->table_group) { ppci->table_group = iommu_pseries_alloc_group(ppci->phb->node); + if (!ppci->table_group) + return; + tbl = ppci->table_group->tables[0]; iommu_table_setparms_lpar(ppci->phb, pdn, tbl, ppci->table_group, dma_window); @@ -765,6 +771,9 @@ static void pci_dma_dev_setup_pSeries(struct pci_dev *dev) pr_debug(" --> first child, no bridge. Allocating iommu table.\n"); PCI_DN(dn)->table_group = iommu_pseries_alloc_group(phb->node); + if (!PCI_DN(dn)->table_group) + return; + tbl = PCI_DN(dn)->table_group->tables[0]; iommu_table_setparms(phb, dn, tbl); @@ -1521,6 +1530,9 @@ static void pci_dma_dev_setup_pSeriesLP(struct pci_dev *dev) pci = PCI_DN(pdn); if (!pci->table_group) { pci->table_group = iommu_pseries_alloc_group(pci->phb->node); + if (!pci->table_group) + return; + tbl = pci->table_group->tables[0]; iommu_table_setparms_lpar(pci->phb, pdn, tbl, pci->table_group, dma_window); -- 2.27.0