From nobody Sun Feb 1 21:40:54 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 4f438Q51Wlz6QjbW for ; Sun, 01 Feb 2026 21:40:54 +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 "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4f438Q2QKQz3FYC for ; Sun, 01 Feb 2026 21:40:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1769982054; 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=q8em0Xe3eoKuP8KxxzjkljL5pvmEXmp1cDVK2O9vDe0=; b=g6D8KNOI14JseRPctROLev2H/RURtrJqiUz0RG4XopYVwnxA/LuY2+wWnyyu2S1FTbT9PS w5X+QCv4STCBSFr7MIqRRNM4IAEKjz1Xz5yY2gpsI1Y9LAbcquWfvaWnlTbEsNKonwdkTZ 3N9ZjpqYbBiQ7LR0Pg+jE32PBP/oyS1ZqLTnhkneGmQP2nb2La7atcm0KCEDzbPUnAE8jy LFLrwwi2d9iWhwzIgT4A8zuI07KXfGU/ZsMHxK6R5IpFq+x06w7yS/wY+2zrFGyJHsM5qZ Z0OLI32ppE/2LisZlpnnLgMwj7XwhCixf7wAX6F3HBNk8fo4cXr96ipAD3gJKw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1769982054; a=rsa-sha256; cv=none; b=vcppxmbrLxfeu+9+CybDlSa8p706rrBevjAO5QslP1MWNgWmzXL6xVCMlaIKiwos9zgI25 NbKHL4k+v2k7WLeA5XcUd9fx5r5zzbLIttHyn7gSDV62ClSiWw5xWSkfAp/ztNjBmRUair 3SgIDON7572cpN7eGWBB8FuvI1Pg3Rut9G3dokSAvEJ9HszeduV5U7wWfbayIrNfHcFOIj Zz/kWfUtjoyzvQ7JXpSYswKu7L9S2Ao8GIqx/QyaLMg/0QwVHIIMcSONkv5czq9Rh0VPJx Nr4U5KLs4/t0GoGgTLqg3L749T9hAtZnj5V2iq8TIjzOVCTfmNAUVENnRovr2w== 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=1769982054; 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=q8em0Xe3eoKuP8KxxzjkljL5pvmEXmp1cDVK2O9vDe0=; b=FkIJY8kb29/lVM50reKZPjV17JZH39xOByFgqxEUYz+QeHLWN1MQa8BlANwF49AGIbsOIj dBrr23wrLmnEHpnvlJUlBeTHDUQN04W+xEmwz8rhSloKI+eWr5B2ItCIKkdSWwnYNnnpFk 2uSWtOW8jp2OBlYfRimQgbaqaCkwijRJpFxuocDbuxQ4rYPTzx0tdC4j0Hy+jO0CsPzoU7 IsK7rQWkBaO/q2UVU5lqD1YvW9lS0QHptvdhjTLE8jo0xVkht/weLlJ75wlHITa9X7oaHO DG9drCzZEZn6PwsBD8DRPqH+eXooGgbDDNorYe2N8MhzTDyvv21AAHIXJcr0OA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4f438Q1z74zxqK for ; Sun, 01 Feb 2026 21:40:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3d93f by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 01 Feb 2026 21:40:54 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 7659f33149d6 - stable/15 - kern/kern_exit.c: define the exterror category for exit/wait 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 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: 7659f33149d60c34dc579c01e781d09dc14ed814 Auto-Submitted: auto-generated Date: Sun, 01 Feb 2026 21:40:54 +0000 Message-Id: <697fc866.3d93f.1f03f561@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=7659f33149d60c34dc579c01e781d09dc14ed814 commit 7659f33149d60c34dc579c01e781d09dc14ed814 Author: Konstantin Belousov AuthorDate: 2026-01-08 04:03:51 +0000 Commit: Konstantin Belousov CommitDate: 2026-02-01 21:38:48 +0000 kern/kern_exit.c: define the exterror category for exit/wait (cherry picked from commit 109b9f48ec4e26e12ab5765747f3d5156aa62406) --- sys/kern/kern_exit.c | 39 +++++++++++++++++++++++++-------------- sys/sys/exterr_cat.h | 1 + 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c index 5398eaca2a80..60e7a9da9f8b 100644 --- a/sys/kern/kern_exit.c +++ b/sys/kern/kern_exit.c @@ -37,10 +37,12 @@ #include "opt_ddb.h" #include "opt_ktrace.h" +#define EXTERR_CATEGORY EXTERR_CAT_PROCEXIT #include #include /* for acct_process() function prototype */ #include #include +#include #include #include #include @@ -1269,6 +1271,26 @@ report_alive_proc(struct thread *td, struct proc *p, siginfo_t *siginfo, PROC_UNLOCK(p); } +static int +wait6_checkopt(int options) +{ + /* If we don't know the option, just return. */ + if ((options & ~(WUNTRACED | WNOHANG | WCONTINUED | WNOWAIT | + WEXITED | WTRAPPED | WLINUXCLONE)) != 0) + return (EXTERROR(EINVAL, "Unknown options %#jx", options)); + if ((options & (WEXITED | WUNTRACED | WCONTINUED | WTRAPPED)) == 0) { + /* + * We will be unable to find any matching processes, + * because there are no known events to look for. + * Prefer to return error instead of blocking + * indefinitely. + */ + return (EXTERROR(EINVAL, + "Cannot match processes %#jx", options)); + } + return (0); +} + int kern_wait6(struct thread *td, idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *siginfo) @@ -1291,20 +1313,9 @@ kern_wait6(struct thread *td, idtype_t idtype, id_t id, int *status, idtype = P_PGID; } - /* If we don't know the option, just return. */ - if ((options & ~(WUNTRACED | WNOHANG | WCONTINUED | WNOWAIT | - WEXITED | WTRAPPED | WLINUXCLONE)) != 0) - return (EINVAL); - if ((options & (WEXITED | WUNTRACED | WCONTINUED | WTRAPPED)) == 0) { - /* - * We will be unable to find any matching processes, - * because there are no known events to look for. - * Prefer to return error instead of blocking - * indefinitely. - */ - return (EINVAL); - } - + error = wait6_checkopt(options); + if (error != 0) + return (error); loop: if (q->p_flag & P_STATCHILD) { PROC_LOCK(q); diff --git a/sys/sys/exterr_cat.h b/sys/sys/exterr_cat.h index daf0419754b7..015eb6a1ae76 100644 --- a/sys/sys/exterr_cat.h +++ b/sys/sys/exterr_cat.h @@ -38,6 +38,7 @@ #define EXTERR_CAT_FUSE_VFS 13 #define EXTERR_CAT_FUSE_DEVICE 14 #define EXTERR_CAT_FORK 15 +#define EXTERR_CAT_PROCEXIT 16 #endif