[PATCH] lib: fwts_alloc: use plain old mmap on 32 bit machines (LP: #1204065)

Colin King colin.king at canonical.com
Fri Jul 26 15:15:12 UTC 2013


From: Colin Ian King <colin.king at canonical.com>

For 32 bit machines, we know that we're going to get a 32 bit mmap'd
address, so there is no need to lark about with forcing a low 32 bit
allocation.  We only really need to fret about this for 64 bit systems.
So, just do a normal mmap for 32 bit.

Signed-off-by: Colin Ian King <colin.king at canonical.com>
---
 src/lib/src/fwts_alloc.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/lib/src/fwts_alloc.c b/src/lib/src/fwts_alloc.c
index 5ea759a..667e8fd 100644
--- a/src/lib/src/fwts_alloc.c
+++ b/src/lib/src/fwts_alloc.c
@@ -122,10 +122,15 @@ void *fwts_low_calloc(const size_t nmemb, const size_t size)
 	ret = mmap(NULL, n, PROT_READ | PROT_WRITE,
 		MAP_PRIVATE | MAP_ANONYMOUS | MAP_32BIT, -1, 0);
 #else
-	/* We don't have a native MAP_32BIT, so bodge our own */
-	ret = fwts_low_mmap(n);
+	if (sizeof(void *) == 4) {
+		/* 32 bit mmap by default */
+		ret = mmap(NULL, n, PROT_READ | PROT_WRITE,
+			MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+	} else {
+		/* We don't have a native MAP_32BIT, so bodge our own */
+		ret = fwts_low_mmap(n);
+	}
 #endif
-
 	if (ret == MAP_FAILED)
 		return NULL;
 
-- 
1.8.1.2




More information about the fwts-devel mailing list