Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 21 Jan 2021 21:34:27 GMT
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 0781c79d4872 - main - Restrict supported alignment for malloc_domainset_aligned(9) to PAGE_SIZE.
Message-ID:  <202101212134.10LLYRqd030064@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=0781c79d4872a84a8ebeee3b5eb5520a682b8e7b

commit 0781c79d4872a84a8ebeee3b5eb5520a682b8e7b
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2021-01-18 09:01:23 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2021-01-21 21:34:10 +0000

    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
---
 sys/kern/kern_malloc.c | 4 ++--
 1 file 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,



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202101212134.10LLYRqd030064>