diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c index 23c398fc43b3..5ea71416415e 100644 --- a/sys/kern/kern_exec.c +++ b/sys/kern/kern_exec.c @@ -1347,7 +1347,8 @@ exec_prealloc_args_kva(void *arg __unused) mtx_init(&exec_args_kva_mtx, "exec args kva", NULL, MTX_DEF); for (i = 0; i < exec_map_entries; i++) { argkva = malloc(sizeof(*argkva), M_PARGS, M_WAITOK); - argkva->addr = kmap_alloc_wait(exec_map, exec_map_entry_size); + argkva->addr = kmap_alloc_wait(exec_map, exec_map_entry_size, + VM_PROT_RW, VM_PROT_RW); argkva->gen = exec_args_gen; SLIST_INSERT_HEAD(&exec_args_kva_freelist, argkva, next); } diff --git a/sys/kern/sys_pipe.c b/sys/kern/sys_pipe.c index 56eba3dd22db..8b0aaa9ab4cf 100644 --- a/sys/kern/sys_pipe.c +++ b/sys/kern/sys_pipe.c @@ -509,9 +509,8 @@ pipespace_new(struct pipe *cpipe, int size) size = round_page(size); buffer = (caddr_t) vm_map_min(pipe_map); - error = vm_map_find(pipe_map, NULL, 0, - (vm_offset_t *) &buffer, size, 0, VMFS_ANY_SPACE, - VM_PROT_ALL, VM_PROT_ALL, 0); + error = vm_map_find(pipe_map, NULL, 0, (vm_offset_t *)&buffer, size, 0, + VMFS_ANY_SPACE, VM_PROT_RW, VM_PROT_RW, 0); if (error != KERN_SUCCESS) { if ((cpipe->pipe_buffer.buffer == NULL) && (size > SMALL_PIPE_SIZE)) { diff --git a/sys/vm/vm_extern.h b/sys/vm/vm_extern.h index fb06076e6c43..c7d2a06dc906 100644 --- a/sys/vm/vm_extern.h +++ b/sys/vm/vm_extern.h @@ -51,7 +51,7 @@ vm_offset_t kva_alloc(vm_size_t); void kva_free(vm_offset_t, vm_size_t); /* These operate on pageable virtual addresses. */ -vm_offset_t kmap_alloc_wait(vm_map_t, vm_size_t); +vm_offset_t kmap_alloc_wait(vm_map_t, vm_size_t, vm_prot_t, vm_prot_t); void kmap_free_wakeup(vm_map_t, vm_offset_t, vm_size_t); /* These operate on virtual addresses backed by memory. */ diff --git a/sys/vm/vm_kern.c b/sys/vm/vm_kern.c index e336d18e43e3..4f32dc7ea96e 100644 --- a/sys/vm/vm_kern.c +++ b/sys/vm/vm_kern.c @@ -625,7 +625,7 @@ kmem_free(vm_offset_t addr, vm_size_t size) * This routine may block. */ vm_offset_t -kmap_alloc_wait(vm_map_t map, vm_size_t size) +kmap_alloc_wait(vm_map_t map, vm_size_t size, vm_prot_t prot, vm_prot_t max) { vm_offset_t addr; @@ -650,8 +650,8 @@ kmap_alloc_wait(vm_map_t map, vm_size_t size) map->needs_wakeup = TRUE; vm_map_unlock_and_wait(map, 0); } - vm_map_insert(map, NULL, 0, addr, addr + size, VM_PROT_ALL, - VM_PROT_ALL, MAP_ACC_CHARGED); + vm_map_insert(map, NULL, 0, addr, addr + size, prot, max, + MAP_ACC_CHARGED); vm_map_unlock(map); return (addr); }