diff options
author | Kevin Mitchell <kevmitch@arista.com> | 2019-06-13 00:52:03 +0300 |
---|---|---|
committer | Joerg Roedel <jroedel@suse.de> | 2019-07-01 15:02:33 +0300 |
commit | 3ddbe913e55516d3e2165d43d4d5570761769878 (patch) | |
tree | 6b02a53d2a7502365d7bbc541839ab8c008f3470 /drivers/iommu/amd_iommu_init.c | |
parent | c1ddcf1cc9add03d775ba787b942729a4b87e7a6 (diff) | |
download | linux-3ddbe913e55516d3e2165d43d4d5570761769878.tar.xz |
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.c | 3 |
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); |