[PATCH] omap: iommu: disallow mapping NULL address

Michael Jones
2011-03-07T13:10:39Z

>From e7dbe4c4b64eb114f9b0804d6af3a3ca0e78acc8 Mon Sep 17 00:00:00 2001
From: Michael Jones <michael.jones@matrix-vision.de>
Date: Mon, 7 Mar 2011 13:36:15 +0100
Subject: [PATCH] omap: iommu: disallow mapping NULL address

commit c7f4ab26e3bcdaeb3e19ec658e3ad9092f1a6ceb allowed mapping
the NULL address if da_start==0. Force da_start to exclude the
first page.

Signed-off-by: Michael Jones <michael.jones@matrix-vision.de>
---
arch/arm/plat-omap/iommu.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/arch/arm/plat-omap/iommu.c b/arch/arm/plat-omap/iommu.c
index 5990ea6..dcb5513 100644
--- a/arch/arm/plat-omap/iommu.c
+++ b/arch/arm/plat-omap/iommu.c
@@ -850,7 +850,7 @@ int iommu_set_da_range(struct iommu *obj, u32 start, u32 end)
if (end < start || !PAGE_ALIGN(start | end))
return -EINVAL;

- obj->da_start = start;
+ obj->da_start = max(start, (u32)PAGE_SIZE);
obj->da_end = end;

return 0;
@@ -950,7 +950,9 @@ static int __devinit omap_iommu_probe(struct platform_device *pdev)
obj->name = pdata->name;
obj->dev = &pdev->dev;
obj->ctx = (void *)obj + sizeof(*obj);
- obj->da_start = pdata->da_start;
+
+ /* reserve the first page for NULL */
+ obj->da_start = max(pdata->da_start, (u32)PAGE_SIZE);
obj->da_end = pdata->da_end;

mutex_init(&obj->iommu_lock);
--
1.7.4.1

MATRIX VISION GmbH, Talstrasse 16, DE-71570 Oppenweiler
Registergericht: Amtsgericht Stuttgart, HRB 271090
Geschaeftsfuehrer: Gerhard Thullner, Werner Armingeon, Uwe Furtner