From 303031bad77ee84e2eac6b65543f9c8bc16b8b67 Mon Sep 17 00:00:00 2001 From: Antti Kantee Date: Tue, 17 Nov 2015 11:40:33 +0000 Subject: [PATCH] pgalloc_align: make page size min alignment Fix callers and tighten assert. --- lib/libbmk_core/pgalloc.c | 4 ++-- lib/libbmk_rumpuser/rumpuser_mem.c | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/libbmk_core/pgalloc.c b/lib/libbmk_core/pgalloc.c index 57c580b..4c60341 100644 --- a/lib/libbmk_core/pgalloc.c +++ b/lib/libbmk_core/pgalloc.c @@ -367,7 +367,7 @@ void * bmk_pgalloc(int order) { - return bmk_pgalloc_align(order, 1); + return bmk_pgalloc_align(order, BMK_PCPU_PAGE_SIZE); } void * @@ -377,7 +377,7 @@ bmk_pgalloc_align(int order, unsigned long align) unsigned long p, len; unsigned int bucket; - bmk_assert((align & (align-1)) == 0); + bmk_assert(align >= BMK_PCPU_PAGE_SIZE && (align & (align-1)) == 0); bmk_assert((unsigned)order < FREELIST_LEVELS); for (bucket = order; bucket < FREELIST_LEVELS; bucket++) { diff --git a/lib/libbmk_rumpuser/rumpuser_mem.c b/lib/libbmk_rumpuser/rumpuser_mem.c index 922b136..bbcbb63 100644 --- a/lib/libbmk_rumpuser/rumpuser_mem.c +++ b/lib/libbmk_rumpuser/rumpuser_mem.c @@ -57,6 +57,9 @@ rumpuser_malloc(size_t len, int alignment, void **retval) if (len < BMK_PCPU_PAGE_SIZE) { *retval = bmk_memalloc(len, alignment, BMK_MEMWHO_RUMPKERN); } else { + bmk_assert((alignment & (alignment-1)) == 0); + if (alignment < BMK_PCPU_PAGE_SIZE) + alignment = BMK_PCPU_PAGE_SIZE; *retval = bmk_pgalloc_align(len2order(len), alignment); } if (*retval) -- 2.39.5