From nobody Sun Jul 6 23:18:38 2025 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 4bb3G738P2z60ZgZ; Sun, 06 Jul 2025 23:18:39 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bb3G70bx5z3th5; Sun, 06 Jul 2025 23:18:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1751843919; 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=FiIrKqfMecxS8R7f0Wx1BDlXi0pBIbS7ptJmg2icAMg=; b=qycns5PwkUTEtaNP1172w+WOJHFxRwTHrXLsDElx5Jbm7UHOGrPwWaqUlqAraXlX8xU2+M koFj0OUUtO7/RHMRENpz+fPmY6qBvqjZZVMU07OasaGdYxBsBuSrKYQM+JB1vqQ5VZoLC+ CgNO/9oFbATPzOXdrHKzk/Fm8BjqeRah83r2QL4MmOypdPoYowaXM+0CFfHeDlGN8q1YSb 1hs6LjuYmx9X1ogSBJQTRduhcQWb+lVx8FYX3MhnW35baWYpAFz6asLUTl26Yo6yisL08Q WvwXvHGzW5KGOz8xWtzex+iiZ4ikxrP/gWtLDZ34XbtqVNAQoJWioCAhaNdFDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1751843919; 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=FiIrKqfMecxS8R7f0Wx1BDlXi0pBIbS7ptJmg2icAMg=; b=Dsviro5yRcNT/eKKwkvVEtKYVpdR4bsxyU3qmc0yeQtKTSpcsIlup/0QNbAFw/dgK7/D90 PYWH2OfrrwP1qkF8lFmMNObzf47EIgcPYec/5X0Si/mgbJ/Sk9QLNkAB3jAiT0RTbJ3nKZ gEaRo0z06QNfhmE6MyPmEWq5UoMJC2+y6uw2CgH6ACfkfkDnPVQRAXnGtpzTMdG3R+0TE4 NmABoRx2d/PAxMzMjtc1Z8bhHHkjvcIXMjaztH5X5JXLf462JH4e/+pjjF98/5Jf5qZVOz vyO+xQfbRvyWp8GPvAUkMRSNgZVykLfmSITJLdY9qkRia9GFnGPNTdIQvLM8Zw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1751843919; a=rsa-sha256; cv=none; b=wwhKBYcuYhD63TcnYKjvoRhIBxJwKuQTkPVBsvAa79aXsD5hpAHdDb0jiTFmNcxwqyxzGM cixGJODHx+rB6ePVDFH+oqIsXOcveD6XOSB4yTs3h2h4CMA4Hx9Ii3/HpPIkv5a6akswPk sq1v1zev/J9XwbSThhWgcLzyCR9sHT8OifkZP9oOrZZnOg9QquVBclNF1jQO2EKbNEafeX 3wvljUg43MDjD2hp9JNroS4cn5gGwkywmt/rTUMLG675CfC6zS5p0J2lrew6poWtxcIjSM SWESxn8ZSiW2N72+OL1Pl8zfFJUa6ZvuwUdHUVQdlqEX5m/QoF3ZwAHmlrrajQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bb3G66g4Jz9VZ; Sun, 06 Jul 2025 23:18:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 566NIcCu031163; Sun, 6 Jul 2025 23:18:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 566NIcYS031160; Sun, 6 Jul 2025 23:18:38 GMT (envelope-from git) Date: Sun, 6 Jul 2025 23:18:38 GMT Message-Id: <202507062318.566NIcYS031160@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: e6b64eea5e77 - main - kern: Make close_range() support CLOSE_RANGE_CLOEXEC 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: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e6b64eea5e7751b92bbabcef8470ff75547f5d0f Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=e6b64eea5e7751b92bbabcef8470ff75547f5d0f commit e6b64eea5e7751b92bbabcef8470ff75547f5d0f Author: Ricardo Branco AuthorDate: 2025-05-11 20:17:43 +0000 Commit: Mark Johnston CommitDate: 2025-07-06 23:08:33 +0000 kern: Make close_range() support CLOSE_RANGE_CLOEXEC Reviewed by: kib MFC after: 1 month Pull Request: https://github.com/freebsd/freebsd-src/pull/1698 --- sys/kern/kern_descrip.c | 14 ++++++++------ sys/sys/unistd.h | 1 + 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c index bd6fa0c14075..e432f33d810e 100644 --- a/sys/kern/kern_descrip.c +++ b/sys/kern/kern_descrip.c @@ -1424,13 +1424,15 @@ kern_close(struct thread *td, int fd) } static int -close_range_cloexec(struct thread *td, u_int lowfd, u_int highfd) +close_range_flags(struct thread *td, u_int lowfd, u_int highfd, int flags) { struct filedesc *fdp; struct fdescenttbl *fdt; struct filedescent *fde; - int fd; + int fd, fde_flags; + fde_flags = ((flags & CLOSE_RANGE_CLOEXEC) != 0 ? UF_EXCLOSE : 0) | + ((flags & CLOSE_RANGE_CLOFORK) != 0 ? UF_FOCLOSE : 0); fdp = td->td_proc->p_fd; FILEDESC_XLOCK(fdp); fdt = atomic_load_ptr(&fdp->fd_files); @@ -1442,7 +1444,7 @@ close_range_cloexec(struct thread *td, u_int lowfd, u_int highfd) for (; fd <= highfd; fd++) { fde = &fdt->fdt_ofiles[fd]; if (fde->fde_file != NULL) - fde->fde_flags |= UF_EXCLOSE; + fde->fde_flags |= fde_flags; } out_locked: FILEDESC_XUNLOCK(fdp); @@ -1500,8 +1502,8 @@ kern_close_range(struct thread *td, int flags, u_int lowfd, u_int highfd) return (EINVAL); } - if ((flags & CLOSE_RANGE_CLOEXEC) != 0) - return (close_range_cloexec(td, lowfd, highfd)); + if ((flags & (CLOSE_RANGE_CLOEXEC | CLOSE_RANGE_CLOFORK)) != 0) + return (close_range_flags(td, lowfd, highfd, flags)); return (close_range_impl(td, lowfd, highfd)); } @@ -1521,7 +1523,7 @@ sys_close_range(struct thread *td, struct close_range_args *uap) AUDIT_ARG_CMD(uap->highfd); AUDIT_ARG_FFLAGS(uap->flags); - if ((uap->flags & ~(CLOSE_RANGE_CLOEXEC)) != 0) + if ((uap->flags & ~(CLOSE_RANGE_CLOEXEC | CLOSE_RANGE_CLOFORK)) != 0) return (EINVAL); return (kern_close_range(td, uap->flags, uap->lowfd, uap->highfd)); } diff --git a/sys/sys/unistd.h b/sys/sys/unistd.h index c12343e5d0fd..c291c1dc2b95 100644 --- a/sys/sys/unistd.h +++ b/sys/sys/unistd.h @@ -211,6 +211,7 @@ * close_range() options. */ #define CLOSE_RANGE_CLOEXEC (1<<2) +#define CLOSE_RANGE_CLOFORK (1<<3) #endif /* __BSD_VISIBLE */