Skip site navigation (1)Skip section navigation (2)
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>