aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/iommu/amd_iommu_init.c
diff options
context:
space:
mode:
authorKevin Mitchell <kevmitch@arista.com>2019-06-12 14:52:03 -0700
committerJoerg Roedel <jroedel@suse.de>2019-07-01 14:02:33 +0200
commit3ddbe913e55516d3e2165d43d4d5570761769878 (patch)
tree6b02a53d2a7502365d7bbc541839ab8c008f3470 /drivers/iommu/amd_iommu_init.c
parentiommu/amd: Add missed 'tag' to error msg in iommu_print_event (diff)
downloadlinux-dev-3ddbe913e55516d3e2165d43d4d5570761769878.tar.xz
linux-dev-3ddbe913e55516d3e2165d43d4d5570761769878.zip
iommu/amd: Make iommu_disable safer
Make it safe to call iommu_disable during early init error conditions before mmio_base is set, but after the struct amd_iommu has been added to the amd_iommu_list. For example, this happens if firmware fails to fill in mmio_phys in the ACPI table leading to a NULL pointer dereference in iommu_feature_disable. Fixes: 2c0ae1720c09c ('iommu/amd: Convert iommu initialization to state machine') Signed-off-by: Kevin Mitchell <kevmitch@arista.com> Signed-off-by: Joerg Roedel <jroedel@suse.de>
Diffstat (limited to 'drivers/iommu/amd_iommu_init.c')
-rw-r--r--drivers/iommu/amd_iommu_init.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
index f977df90d2a4..df144dc6d8ac 100644
--- a/drivers/iommu/amd_iommu_init.c
+++ b/drivers/iommu/amd_iommu_init.c
@@ -418,6 +418,9 @@ static void iommu_enable(struct amd_iommu *iommu)
static void iommu_disable(struct amd_iommu *iommu)
{
+ if (!iommu->mmio_base)
+ return;
+
/* Disable command buffer */
iommu_feature_disable(iommu, CONTROL_CMDBUF_EN);