aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2021-01-18 09:01:23 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2021-01-21 21:34:10 +0000
commit0781c79d4872a84a8ebeee3b5eb5520a682b8e7b (patch)
treea99f2fa73449740aecb0ed880884a60a8004ed3b
parente6d795d154699cd3ddadc0ea18f015cccb024464 (diff)
downloadsrc-0781c79d4872a84a8ebeee3b5eb5520a682b8e7b.tar.gz
src-0781c79d4872a84a8ebeee3b5eb5520a682b8e7b.zip
Restrict supported alignment for malloc_domainset_aligned(9) to PAGE_SIZE.
UMA page_alloc() does not take an alignment, so UMA can only handle alignment less then page size. Noted by: alc Reviewed by: alc, markj (previous version) Discussed with: jrtc27 Tested by: pho (previous version) MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D28219
-rw-r--r--sys/kern/kern_malloc.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/kern/kern_malloc.c b/sys/kern/kern_malloc.c
index 232472708b9b..d3a151ad14e2 100644
--- a/sys/kern/kern_malloc.c
+++ b/sys/kern/kern_malloc.c
@@ -772,7 +772,7 @@ malloc_domainset_aligned(size_t size, size_t align,
KASSERT(align != 0 && powerof2(align),
("malloc_domainset_aligned: wrong align %#zx size %#zx",
align, size));
- KASSERT(align <= kmemzones[nitems(kmemzones) - 2].kz_size,
+ KASSERT(align <= PAGE_SIZE,
("malloc_domainset_aligned: align %#zx (size %#zx) too large",
align, size));
@@ -1173,7 +1173,7 @@ mallocinit(void *dummy)
align = UMA_ALIGN_PTR;
if (powerof2(size) && size > sizeof(void *))
- align = size - 1;
+ align = MIN(size, PAGE_SIZE) - 1;
for (subzone = 0; subzone < numzones; subzone++) {
kmemzones[indx].kz_zone[subzone] =
uma_zcreate(name, size,