Date: Sun, 28 Jun 2026 00:30:06 +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: da1398dd6962 - stable/14 - kern_proc.c: ensure stability of the vmspace for sysctl kern.proc.vm_layout Message-ID: <6a406b0e.3e2ac.30019a7e@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch stable/14 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=da1398dd6962b458fdcf25799fcb512f4d9c070d commit da1398dd6962b458fdcf25799fcb512f4d9c070d Author: Konstantin Belousov <kib@FreeBSD.org> AuthorDate: 2026-06-14 23:49:20 +0000 Commit: Konstantin Belousov <kib@FreeBSD.org> CommitDate: 2026-06-28 00:28:59 +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 6c010490f43b..a0a8e0f1f2b5 100644 --- a/sys/kern/kern_proc.c +++ b/sys/kern/kern_proc.c @@ -3293,6 +3293,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; @@ -3300,6 +3301,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); @@ -3311,8 +3313,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); @@ -3364,7 +3371,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?6a406b0e.3e2ac.30019a7e>
