[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