From nobody Fri Jun 24 19:36:54 2022 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 E33B48642A1; Fri, 24 Jun 2022 19:36:55 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4LV6ng4DF0z4XFT; Fri, 24 Jun 2022 19:36:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1656099415; 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=QzUSDSAk6/lCkyRYdGDOsBylN2YaHdL1XkQBQ2sehPw=; b=DQF8XA271Kx65v0e50bZ7UXkyYav9X6BZe72BPkwG5g/As2xmYd30DPwUKljEWK7G4I70I V2UntvfeUrevkXXGL+4dim0QULiM5GnJUkn4jbxRMHEIA0vbD2e1Goj55MO/LbRZ9Up20A tsVxzFACNLQzCmqTP3+jJF/OI4W9p98v8GFnLw7wSRf4qxHeyMHaI7LHYc4jz8I7tlVGxo jM8RdOMc7cl+yoPSsoWAR8U8U1H3FuMg8R1FV4rzY1NMCMUclVo91LbHdfZZLv9pskIGEm IC73gNrLNEfrYZG/Pxmm3gFi0Ax7T0/eVsPR/G1c0rK2lTmzvCPT2LNjyMauCg== 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 01B061597E; Fri, 24 Jun 2022 19:36:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 25OJas2e084157; Fri, 24 Jun 2022 19:36:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 25OJasgj084156; Fri, 24 Jun 2022 19:36:54 GMT (envelope-from git) Date: Fri, 24 Jun 2022 19:36:54 GMT Message-Id: <202206241936.25OJasgj084156@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: ddd432de610f - stable/13 - P2_WEXIT: avoid thread_single() for exiting process earlier 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: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: 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/13 X-Git-Reftype: branch X-Git-Commit: ddd432de610f340436fef2868502b5c3e3132d00 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1656099415; 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=QzUSDSAk6/lCkyRYdGDOsBylN2YaHdL1XkQBQ2sehPw=; b=ubwuNpJKbH4eEI0b7oiPAT/zVpf0lOZp9CHUXHDCZWazgit0xRm9dfPJO1zR9CjkaN4b5L XOSqHaZjIYYmrw4QPjwWXctKiIv+rMfGYx4m2oZ0Re9VES3JtBO8hJXBMDr1sYbVkd9DKC 7Y1JLma39Feue1+EpF95FLwyu+yPzGszBmH7ovpUTuQhdZNWMu8cw7PMKfi2/pa/zVg2Y7 uJBx12yWaz3AkSz6zBwbL5e0u3n6cOPf2GsLO1sPxWhWZC13LUUNjFOZGfMSR2hMXOJlsI iO+RH8hAlKmFRphVEGIAyunQa4KhRzS9IQVy0CwKJhe0PsEm1Ub9v+IM15V4jg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1656099415; a=rsa-sha256; cv=none; b=i61WCdnbXpEZx6WyFN9UNu3RzSToiHSbuDQWXSynS2kzMs1kJHWHws7vimb3MVbVOC70EV Qwy38rYzp043NkvCju4lRIMyFhONpsrP4qg/S9HQVWSftlnxY1E510oCAaEMaGH2T1gXLr PIxgQubqRjs6hol5jkIwHO8b36HRTqLSk4IYDvxskp83LspVsgWhzN6K9Qn5RWaHx5qcNb E8/A8YMDqRMryWLD8joX30QzhPF8SLgt6/rX4N5vAcvmChWAroFLgioYLCud7t8hXIn+De m2AaUSEo+0+xMdAV605/28Rih8MNM9GuLDf4U+wPRdncoXRhs+2XYA52kbVfpg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=ddd432de610f340436fef2868502b5c3e3132d00 commit ddd432de610f340436fef2868502b5c3e3132d00 Author: Konstantin Belousov AuthorDate: 2022-05-04 23:57:26 +0000 Commit: Konstantin Belousov CommitDate: 2022-06-24 14:45:45 +0000 P2_WEXIT: avoid thread_single() for exiting process earlier (cherry picked from commit d3000939c7b94fc887f23dd8946861cf0fa1b73b) --- sys/kern/kern_exit.c | 2 ++ sys/kern/kern_proc.c | 2 +- sys/kern/kern_procctl.c | 2 +- sys/kern/kern_sig.c | 1 + sys/sys/proc.h | 3 +++ 5 files changed, 8 insertions(+), 2 deletions(-) diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c index 27c7f00130f8..073174a1a82d 100644 --- a/sys/kern/kern_exit.c +++ b/sys/kern/kern_exit.c @@ -251,6 +251,8 @@ exit1(struct thread *td, int rval, int signo) * MUST abort all other threads before proceeding past here. */ PROC_LOCK(p); + p->p_flag2 |= P2_WEXIT; + /* * First check if some other thread or external request got * here before us. If so, act appropriately: exit or suspend. diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c index 5faa5641c566..29e710176897 100644 --- a/sys/kern/kern_proc.c +++ b/sys/kern/kern_proc.c @@ -3369,7 +3369,7 @@ allproc_loop: PROC_UNLOCK(p); continue; } - if ((p->p_flag & P_WEXIT) != 0) { + if ((p->p_flag2 & P2_WEXIT) != 0) { seen_exiting = true; PROC_UNLOCK(p); continue; diff --git a/sys/kern/kern_procctl.c b/sys/kern/kern_procctl.c index 9db9577fde3d..640ebc32ee55 100644 --- a/sys/kern/kern_procctl.c +++ b/sys/kern/kern_procctl.c @@ -325,7 +325,7 @@ reap_kill_proc(struct thread *td, struct proc *p2, ksiginfo_t *ksi, res = true; PROC_LOCK(p2); - if ((p2->p_flag & P_WEXIT) == 0) { + if ((p2->p_flag2 & P2_WEXIT) == 0) { _PHOLD_LITE(p2); res = reap_kill_proc_locked(td, p2, ksi, rk, error); _PRELE(p2); diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index 05712f55195a..a178193d3d1d 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -3426,6 +3426,7 @@ sigexit(struct thread *td, int sig) struct proc *p = td->td_proc; PROC_LOCK_ASSERT(p, MA_OWNED); + p->p_flag2 |= P2_WEXIT; p->p_acflag |= AXSIG; /* * We must be single-threading to generate a core dump. This diff --git a/sys/sys/proc.h b/sys/sys/proc.h index 3db7ce620176..188e65e75f0a 100644 --- a/sys/sys/proc.h +++ b/sys/sys/proc.h @@ -830,6 +830,9 @@ struct proc { #define P2_NO_NEW_PRIVS 0x00008000 /* Ignore setuid */ #define P2_WXORX_DISABLE 0x00010000 /* WX mappings enabled */ #define P2_WXORX_ENABLE_EXEC 0x00020000 /* WXORX enabled after exec */ +#define P2_WEXIT 0x00040000 /* exit just started, no + external thread_single() is + permitted */ /* Flags protected by proctree_lock, kept in p_treeflags. */ #define P_TREE_ORPHANED 0x00000001 /* Reparented, on orphan list */