From nobody Sun Jan 25 15:56:51 2026 X-Original-To: dev-commits-src-all@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 4dzbrj0NtKz6PjMV for ; Sun, 25 Jan 2026 15:56:53 +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 4dzbrh0dNDz48BW for ; Sun, 25 Jan 2026 15:56:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1769356612; 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=qZike3ze75E+Ny58IlzBworsBMdgx4tGltib0J0XV40=; b=pLrAK7HZ/yputwurByc1uecW04T6siCQJb0OKs+BR7I0woJwHbETKQU8rcnB/IUZxIPu1h bQ1RYk5EpGmS6vMqFQCcOAe79zjPqMBHC/KKxTSjDxJ5wr3ktaEwBa9YY7tn7Hndw+2iXb Qley/IIazEsXIkyWR4zQMpDFDcU7zpIYKIJdxRc74FKyxNWE0u5x4Zv+YKZJ0CH36aPVY4 U96Jt21Z0hiCr5CYT8WBklDo0wB4xzdNcg9G3tD2Wh4dpGA3I4qV62BWEPGlO56soWPLhD ++sUm7hd+oroKRitDYZh/MBDx7avUzEJL9suV/efsEZWoMnXb3odc88aO3Wgjg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1769356612; 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=qZike3ze75E+Ny58IlzBworsBMdgx4tGltib0J0XV40=; b=rmGRSW8oe/qeTydHJJKd9PJ1M2UnulCBKd/qPZEaNB8BZhJhwOy9D27Z11BQBZw4mL5LL6 Oca2yHMpbLiVSvduEdMjE3/qIpddB6ddMvebGmPwYVFlKWaNlIlAisrpgABxsnzfH3HqCQ CgfaYGo3DrJeAZWLCByios6tlIklPoXl8TQeZcY2oQpp0TaCSwWPeRHb8hY8sC6Idrx20W N3WRf0Am7NE/luddMEXy87ZWnouPBPFabG1b/SJn5GnFyk+iDldPnkoMEwkRNFasA8wsMD F6MfdITSyGT/mK3mmMA/AXRLEuo1ahHmSEodehMUrZe/NwNgU9t9TUTRnLACqQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1769356612; a=rsa-sha256; cv=none; b=QF9PzKYsdE0gfhROkUtOMKy2Z87l9lt6+p6o4TW7Vuo2DVrJuS1yVmfx8XOXeLJhcJ+MlL +m55Ezcz1cgD2y4xUwnz74NXUWBVPb1ov2r8rgekAYMFTa3yvGiR2hTI9LSZkst7/+vJim k+UKfiLM8Zq3bVmQh4Cg6m5C4id3DX/JSTpJMVfOpr4I6T8vA05QXmyMXkamU/WlJUq9ew rqbnXM3XFW2tVkCkAbe5e+wXYYZkvzDxqPULzpZ9ZvUm6Qwjj/IRqSOs/utbA4ANaHKtRW MqD3CwORaYct28LJkZd7DHBuyeeJYUEJRpS8L3ozXuoNt+VlEg+jfAJ1MNgubQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4dzbrg6wskzhtD for ; Sun, 25 Jan 2026 15:56:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 31d6d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 25 Jan 2026 15:56:51 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 109b9f48ec4e - main - kern/kern_exit.c: define the exterror category for exit/wait List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@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/main X-Git-Reftype: branch X-Git-Commit: 109b9f48ec4e26e12ab5765747f3d5156aa62406 Auto-Submitted: auto-generated Date: Sun, 25 Jan 2026 15:56:51 +0000 Message-Id: <69763d43.31d6d.6bcc0993@gitrepo.freebsd.org> The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=109b9f48ec4e26e12ab5765747f3d5156aa62406 commit 109b9f48ec4e26e12ab5765747f3d5156aa62406 Author: Konstantin Belousov AuthorDate: 2026-01-08 04:03:51 +0000 Commit: Konstantin Belousov CommitDate: 2026-01-25 15:53:22 +0000 kern/kern_exit.c: define the exterror category for exit/wait Convert EINVALs in kern_exit.c into EXTERRORs. Reviewed by: asomers, markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D54592 --- 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 44d2bddf53fb..db6e91f00534 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