Date: Fri, 26 Jun 2026 22:20:50 +0000 From: Konstantin Belousov <kib@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Subject: git: eb03358c407d - stable/15 - kern_proc.c: ensure stability of the vmspace for sysctl kern.proc.vm_layout Message-ID: <6a3efb42.27bc7.58a5d287@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=eb03358c407d6f3c073320bdc26a5e4ceb923ca1 commit eb03358c407d6f3c073320bdc26a5e4ceb923ca1 Author: Konstantin Belousov <kib@FreeBSD.org> AuthorDate: 2026-06-14 23:49:20 +0000 Commit: Konstantin Belousov <kib@FreeBSD.org> CommitDate: 2026-06-26 22:16:06 +0000 kern_proc.c: ensure stability of the vmspace for sysctl kern.proc.vm_layout (cherry picked from commit 31fa677e4af00b795bf671847b4dc72960c90f14) --- sys/kern/kern_proc.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c index 5d37d0b5fa39..1e09e6042e7a 100644 --- a/sys/kern/kern_proc.c +++ b/sys/kern/kern_proc.c @@ -3292,6 +3292,7 @@ sysctl_kern_proc_vm_layout(SYSCTL_HANDLER_ARGS) { struct kinfo_vm_layout kvm; struct proc *p; + struct thread *td; struct vmspace *vmspace; int error, *name; @@ -3299,6 +3300,7 @@ sysctl_kern_proc_vm_layout(SYSCTL_HANDLER_ARGS) if ((u_int)arg2 != 1) return (EINVAL); + td = curthread; error = pget((pid_t)name[0], PGET_CANDEBUG, &p); if (error != 0) return (error); @@ -3310,8 +3312,13 @@ sysctl_kern_proc_vm_layout(SYSCTL_HANDLER_ARGS) } } #endif - vmspace = vmspace_acquire_ref(p); + _PHOLD(p); PROC_UNLOCK(p); + error = proc_vmspace_ref(td, p, PRVM_CHECK_DEBUG, &vmspace); + if (error != 0) { + PRELE(p); + return (error); + } memset(&kvm, 0, sizeof(kvm)); kvm.kvm_min_user_addr = vm_map_min(&vmspace->vm_map); @@ -3363,7 +3370,8 @@ sysctl_kern_proc_vm_layout(SYSCTL_HANDLER_ARGS) #ifdef COMPAT_FREEBSD32 out: #endif - vmspace_free(vmspace); + proc_vmspace_unref(td, p, PRVM_CHECK_DEBUG, vmspace); + PRELE(p); return (error); }home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a3efb42.27bc7.58a5d287>
