Commit b472191f authored by Will Deacon's avatar Will Deacon
Browse files

iommu/arm-smmu: Check smmu->impl pointer before dereferencing



Commit 0d97174a ("iommu/arm-smmu: Implement ->probe_finalize()")
added a new optional ->probe_finalize callback to 'struct arm_smmu_impl'
but neglected to check that 'smmu->impl' is present prior to checking
if the new callback is present.

Add the missing check, which avoids dereferencing NULL when probing an
SMMU which doesn't require any implementation-specific callbacks:

  | Unable to handle kernel NULL pointer dereference at virtual address
  | 0000000000000070
  |
  | Call trace:
  |   arm_smmu_probe_finalize+0x14/0x48
  |   of_iommu_configure+0xe4/0x1b8
  |   of_dma_configure_id+0xf8/0x2d8
  |   pci_dma_configure+0x44/0x88
  |   really_probe+0xc0/0x3c0

Fixes: 0d97174a ("iommu/arm-smmu: Implement ->probe_finalize()")
Reported-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: default avatarWill Deacon <will@kernel.org>
parent 0d97174a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1458,7 +1458,7 @@ static void arm_smmu_probe_finalize(struct device *dev)
	cfg = dev_iommu_priv_get(dev);
	smmu = cfg->smmu;

	if (smmu->impl->probe_finalize)
	if (smmu->impl && smmu->impl->probe_finalize)
		smmu->impl->probe_finalize(smmu, dev);
}