From nobody Sat Sep 05 00:35:30 2026 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4hcDrf5Htnz6qZVn for ; Sat, 05 Sep 2026 00:35:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hcDrf32xDz44Bf for ; Sat, 05 Sep 2026 00:35:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1788568530; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NalBUlSwdwmctGYEdIf5TmgCjkQSz5n4FpoWXgfFhNw=; b=TmzjpJHlCmd/UA2lpqtgymNo5VgWaH2ESoTZCU54vY78DPJWx3qNCu6Wt7E2trDIvFazei be+4eWcxOCrtAJC9Ts7Pif90j1kQr/tCUgZFh4OR5drUd+qiEcHK/2aqcvmHIUqHz0reAw YhTH5NWq2FCPucR1+ay+BClZQT29dHvyfZwG7C6df08LjACOHf75xE90bCyRH6HowJqLeU dF/HBmiAHNUQVHyzuT4R/HSPTGG8NKwPUjMoOWDf4AkFBI9Ff3kFVChuF1sNDb3zG9ZzZ6 rISVImKavQyJNI/V+NsZkzx5t0+jib8hgOsa98INDXX2YOG8Kxg8aoi5VmWusQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1788568530; a=rsa-sha256; cv=none; b=uy0x3a3vVlf2hMGFy1eYNbEuXlgjdyCuCt5uEGd1OfWAOCdkbzcv0+GYaMg7aNsZ7yijuH /lSTrLDrdhiz9Z2MWq5D4V1p8qcs34WNa4lY6QWh9GT2uZWDU2RJAAgRj7kU1zYrvXFJxw Q2UHSO9rPog7XYJa277pTDToCnbDea012AZezYeDYNIJ6PZg8EiUUf9AR5OuQeLvgNFBK8 JGnl0LSuxld4yKtpUml2UMcBqr5q8IcWiwzXdRMTxoSFtcFpomgQJvuh1t92i40nNHLloC 25vaCYr6NdTw+IlfSZVZWt8UEUqPc5vUrFJm0qZK+nSdQlG6s1aaznD4eBk64g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1788568530; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NalBUlSwdwmctGYEdIf5TmgCjkQSz5n4FpoWXgfFhNw=; b=tt8hIVWAiMq53axDG8DjXlDaGAWzYWrVM9zYGnNP2QMTzkw71Zo9xCo2Srv5m/4cwN6zNV lAe3npkodGACBNu8dHWu8K/ytswkQi9TV8MHcXDw9m124wG7FSn2cdj3Hz9LodcphQeYTJ DLViTB73qkd7dNhRsPEb+UAtJjo25nw+iZXTJnPoypGpSm+tIZI6yUuFBNCZ5ktBlfwPoZ xBxOgHzrIuZ1JYO+gr5TMrQRT+HASWupzRIyAwLe1G9QYvouT1sbrNZAePNeQFLMEkY4uO uHFhqLIE8w8Lwt9uZY5xCdXtjI+HmI1/NIyU7REW8CXEGebR5jkrorHaL7spYQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hcDrf1h6nz7y3 for ; Sat, 05 Sep 2026 00:35:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1ec5d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 05 Sep 2026 00:35:30 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 1cab7e212476 - stable/15 - pdptrace(2): allow debugging in capability mode List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 1cab7e212476174fc749627cc5114ebaf3f92590 Auto-Submitted: auto-generated Date: Sat, 05 Sep 2026 00:35:30 +0000 Message-Id: <6a9b63d2.1ec5d.21fe897f@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=1cab7e212476174fc749627cc5114ebaf3f92590 commit 1cab7e212476174fc749627cc5114ebaf3f92590 Author: Konstantin Belousov AuthorDate: 2026-07-07 23:46:56 +0000 Commit: Konstantin Belousov CommitDate: 2026-09-05 00:33:41 +0000 pdptrace(2): allow debugging in capability mode (cherry picked from commit 7006cb7bd22d07d2ce30b0fb7ebfe58771b2a32f) --- sys/compat/freebsd32/freebsd32_misc.c | 3 --- sys/kern/sys_process.c | 26 ++++++++++++++++++++++---- sys/kern/syscalls.master | 4 ++-- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/sys/compat/freebsd32/freebsd32_misc.c b/sys/compat/freebsd32/freebsd32_misc.c index 4da3b4ee97c1..bb4548660278 100644 --- a/sys/compat/freebsd32/freebsd32_misc.c +++ b/sys/compat/freebsd32/freebsd32_misc.c @@ -1050,9 +1050,6 @@ freebsd32_ptrace_useraction(struct thread *td, int req, bool pd_mode, pid_t pid, void *addr; int data, error, i; - if (!allow_ptrace) - return (ENOSYS); - error = 0; addr = &r; data = udata; diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c index 1bfa0f04959d..af8a7dafaf3e 100644 --- a/sys/kern/sys_process.c +++ b/sys/kern/sys_process.c @@ -51,6 +51,7 @@ #include #include #include +#include #include #include #include @@ -674,6 +675,24 @@ ptrace_vm_entry(struct thread *td, struct proc *p, struct ptrace_vm_entry *pve) return (error); } +static int +ptrace_check_allowed(struct thread *td, int req, bool pd_mode, pid_t pid) +{ + if (!allow_ptrace) + return (ENOSYS); + if (!IN_CAPABILITY_MODE(td)) + return (0); + if (!allow_ptrace_in_cap_mode) + return (ECAPMODE); + if (pd_mode) + return (0); + if (req == PT_GET_CHILDREN && pid == td->td_proc->p_pid) + return (0); + if (req == PT_CLEARSTEP && pid == td->td_tid) + return (0); + return (ECAPMODE); +} + /* * Process debugging system call. */ @@ -714,12 +733,11 @@ ptrace_useraction(struct thread *td, int req, bool pd_mode, pid_t pid, int pfd, void *addr; int error, data; - if (!allow_ptrace) - return (ENOSYS); + error = ptrace_check_allowed(td, req, pd_mode, pid); + if (error != 0) + return (error); - error = 0; addr = &r; - switch (req) { case PT_GET_EVENT_MASK: case PT_LWPINFO: diff --git a/sys/kern/syscalls.master b/sys/kern/syscalls.master index 694f927989c2..b717f9029543 100644 --- a/sys/kern/syscalls.master +++ b/sys/kern/syscalls.master @@ -264,7 +264,7 @@ 25 AUE_GETEUID STD|CAPENABLED { uid_t geteuid(void); } -26 AUE_PTRACE STD { +26 AUE_PTRACE STD|CAPENABLED { int ptrace( int req, pid_t pid, @@ -3435,7 +3435,7 @@ int flags ); } -605 AUE_PDPTRACE STD { +605 AUE_PDPTRACE STD|CAPENABLED { int pdptrace( int req, int pfd,