aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/iommu/amd_iommu.c
diff options
context:
space:
mode:
authorMaurizio Lombardi <mlombard@redhat.com>2014-09-11 12:28:03 +0200
committerJoerg Roedel <jroedel@suse.de>2014-09-25 15:58:42 +0200
commit63eaa75e4362ac7981a7e619196a9c75fd03d717 (patch)
tree59c26138350670efae84d3bd5dae773a543a01bf /drivers/iommu/amd_iommu.c
parentiommu/amd: Remove device binding reference count (diff)
downloadlinux-dev-63eaa75e4362ac7981a7e619196a9c75fd03d717.tar.xz
linux-dev-63eaa75e4362ac7981a7e619196a9c75fd03d717.zip
amd_iommu: do not dereference a NULL pointer address.
under low memory conditions, alloc_pte() may return a NULL pointer. iommu_map_page() does not check it and will panic the system. Signed-off-by: Maurizio Lombardi <mlombard@redhat.com> Signed-off-by: Joerg Roedel <jroedel@suse.de>
Diffstat (limited to 'drivers/iommu/amd_iommu.c')
-rw-r--r--drivers/iommu/amd_iommu.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index 989c1ae03979..23c5be6a3a1e 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -1393,6 +1393,9 @@ static int iommu_map_page(struct protection_domain *dom,
count = PAGE_SIZE_PTE_COUNT(page_size);
pte = alloc_pte(dom, bus_addr, page_size, NULL, GFP_KERNEL);
+ if (!pte)
+ return -ENOMEM;
+
for (i = 0; i < count; ++i)
if (IOMMU_PTE_PRESENT(pte[i]))
return -EBUSY;