Date: Fri, 4 Aug 2023 18:43:36 GMT From: Doug Moore <dougm@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: ccdb28275db7 - main - vm_phys_enq_range: no alignment assert for npages==0 Message-ID: <202308041843.374IhapQ060300@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by dougm: URL: https://cgit.FreeBSD.org/src/commit/?id=ccdb28275db7c94ffdafc542d9e29fd43f51f39b commit ccdb28275db7c94ffdafc542d9e29fd43f51f39b Author: Doug Moore <dougm@FreeBSD.org> AuthorDate: 2023-08-04 18:41:59 +0000 Commit: Doug Moore <dougm@FreeBSD.org> CommitDate: 2023-08-04 18:41:59 +0000 vm_phys_enq_range: no alignment assert for npages==0 Do not assume that when vm_phys_enq_range is passed npages==0 that the vm_page argument is valid in any way, much less that it has a page-aligned address. Just don't look at it. Assert nothing about it. Reported by: karels Differential Revision: https://reviews.freebsd.org/D41317 --- sys/vm/vm_phys.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sys/vm/vm_phys.c b/sys/vm/vm_phys.c index ed358d7cd4a9..a3af3964fba4 100644 --- a/sys/vm/vm_phys.c +++ b/sys/vm/vm_phys.c @@ -690,15 +690,17 @@ vm_phys_split_pages(vm_page_t m, int oind, struct vm_freelist *fl, int order, * term fragmentation by promoting contemporaneous allocation and (hopefully) * deallocation. * - * The physical page m's buddy must not be free. + * If npages is zero, this function does nothing and ignores the physical page + * parameter m. Otherwise, the physical page m's buddy must not be free. */ static vm_page_t vm_phys_enq_range(vm_page_t m, u_int npages, struct vm_freelist *fl, int tail) { int order; - KASSERT(((VM_PAGE_TO_PHYS(m) + npages * PAGE_SIZE) & - ((PAGE_SIZE << fls(npages / 2)) - 1)) == 0, + KASSERT(npages == 0 || + ((VM_PAGE_TO_PHYS(m) + npages * PAGE_SIZE) & + ((PAGE_SIZE << (fls(npages) - 1)) - 1)) == 0, ("vm_phys_enq_range: page %p and npages %u are misaligned", m, npages)); while (npages > 0) {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202308041843.374IhapQ060300>