Date: Thu, 23 Apr 2026 18:16:25 +0000 From: John Baldwin <jhb@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: 30af462bd264 - main - kmap_alloc_wait/kmap_free_wakeup: Use void * instead of vm_offset_t Message-ID: <69ea61f9.4650c.3088e535@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=30af462bd2641798a6ac29235b82e49ad386d363 commit 30af462bd2641798a6ac29235b82e49ad386d363 Author: John Baldwin <jhb@FreeBSD.org> AuthorDate: 2026-04-23 17:05:55 +0000 Commit: John Baldwin <jhb@FreeBSD.org> CommitDate: 2026-04-23 17:05:55 +0000 kmap_alloc_wait/kmap_free_wakeup: Use void * instead of vm_offset_t Effort: CHERI upstreaming Reviewed by: kib Sponsored by: AFRL, DARPA Pull Request: https://github.com/freebsd/freebsd-src/pull/2068 --- sys/i386/linux/linux_machdep.c | 2 +- sys/kern/kern_exec.c | 14 ++++++-------- sys/vm/vm_extern.h | 4 ++-- sys/vm/vm_kern.c | 10 ++++++---- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/sys/i386/linux/linux_machdep.c b/sys/i386/linux/linux_machdep.c index 0e056aadb4b5..ff1748d7db94 100644 --- a/sys/i386/linux/linux_machdep.c +++ b/sys/i386/linux/linux_machdep.c @@ -852,7 +852,7 @@ cleanup: /* Release the temporary mapping. */ if (a_out) - kmap_free_wakeup(exec_map, (vm_offset_t)a_out, PAGE_SIZE); + kmap_free_wakeup(exec_map, a_out, PAGE_SIZE); return (error); } diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c index 20d022050803..df5a1c044643 100644 --- a/sys/kern/kern_exec.c +++ b/sys/kern/kern_exec.c @@ -1414,7 +1414,7 @@ err_exit: } struct exec_args_kva { - vm_offset_t addr; + void *addr; u_int gen; SLIST_ENTRY(exec_args_kva) next; }; @@ -1442,7 +1442,7 @@ exec_prealloc_args_kva(void *arg __unused) } SYSINIT(exec_args_kva, SI_SUB_EXEC, SI_ORDER_ANY, exec_prealloc_args_kva, NULL); -static vm_offset_t +static void * exec_alloc_args_kva(void **cookie) { struct exec_args_kva *argkva; @@ -1457,8 +1457,7 @@ exec_alloc_args_kva(void **cookie) SLIST_REMOVE_HEAD(&exec_args_kva_freelist, next); mtx_unlock(&exec_args_kva_mtx); } - kasan_mark((void *)argkva->addr, exec_map_entry_size, - exec_map_entry_size, 0); + kasan_mark(argkva->addr, exec_map_entry_size, exec_map_entry_size, 0); *(struct exec_args_kva **)cookie = argkva; return (argkva->addr); } @@ -1468,9 +1467,8 @@ exec_release_args_kva(struct exec_args_kva *argkva, u_int gen) { vm_offset_t base; - base = argkva->addr; - kasan_mark((void *)argkva->addr, 0, exec_map_entry_size, - KASAN_EXEC_ARGS_FREED); + base = (vm_offset_t)argkva->addr; + kasan_mark(argkva->addr, 0, exec_map_entry_size, KASAN_EXEC_ARGS_FREED); if (argkva->gen != gen) { (void)vm_map_madvise(exec_map, base, base + exec_map_entry_size, MADV_FREE); @@ -1533,7 +1531,7 @@ int exec_alloc_args(struct image_args *args) { - args->buf = (char *)exec_alloc_args_kva(&args->bufkva); + args->buf = exec_alloc_args_kva(&args->bufkva); return (0); } diff --git a/sys/vm/vm_extern.h b/sys/vm/vm_extern.h index 725f6097d8a9..207eb721d129 100644 --- a/sys/vm/vm_extern.h +++ b/sys/vm/vm_extern.h @@ -51,8 +51,8 @@ void *kva_alloc_aligned(vm_size_t, vm_size_t); void kva_free(void *, vm_size_t); /* These operate on pageable virtual addresses. */ -vm_offset_t kmap_alloc_wait(vm_map_t, vm_size_t); -void kmap_free_wakeup(vm_map_t, vm_offset_t, vm_size_t); +void *kmap_alloc_wait(vm_map_t, vm_size_t); +void kmap_free_wakeup(vm_map_t, void *, vm_size_t); /* These operate on virtual addresses backed by memory. */ void *kmem_alloc_attr(vm_size_t size, int flags, diff --git a/sys/vm/vm_kern.c b/sys/vm/vm_kern.c index 3c5dc57f3668..3a6fed6cb3e1 100644 --- a/sys/vm/vm_kern.c +++ b/sys/vm/vm_kern.c @@ -714,14 +714,14 @@ kmem_free(void *addr, vm_size_t size) * * This routine may block. */ -vm_offset_t +void * kmap_alloc_wait(vm_map_t map, vm_size_t size) { vm_offset_t addr; size = round_page(size); if (!swap_reserve(size)) - return (0); + return (NULL); for (;;) { /* @@ -744,7 +744,7 @@ kmap_alloc_wait(vm_map_t map, vm_size_t size) vm_map_insert(map, NULL, 0, addr, addr + size, VM_PROT_RW, VM_PROT_RW, MAP_ACC_CHARGED); vm_map_unlock(map); - return (addr); + return ((void *)addr); } /* @@ -754,9 +754,11 @@ kmap_alloc_wait(vm_map_t map, vm_size_t size) * waiting for memory in that map. */ void -kmap_free_wakeup(vm_map_t map, vm_offset_t addr, vm_size_t size) +kmap_free_wakeup(vm_map_t map, void *va, vm_size_t size) { + vm_offset_t addr; + addr = (vm_offset_t)va; vm_map_lock(map); (void) vm_map_delete(map, trunc_page(addr), round_page(addr + size)); if ((map->flags & MAP_NEEDS_WAKEUP) != 0) {home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69ea61f9.4650c.3088e535>
