From nobody Sat Sep 05 00:35:41 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 4hcDrs6kqXz6qZWL for ; Sat, 05 Sep 2026 00:35:41 +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 4hcDrs2JBqz44cC for ; Sat, 05 Sep 2026 00:35:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1788568541; 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=Fv136GaYZNOJDRyv45twkOdZ+62MkR1YASVZEGnl41w=; b=rbq89V6WrhDWk41Bq8+Y2/TeKnDLSGkamJIpD0e4JP1hM5bmm/BSmnBMA4vhUVCRgleJZ9 3skEtP4KXEm9gfyNoUmaEjDy5QjR4ve5AsHZCPI/NnlfMcqX3G63Qoz0LgUl6nI+c/eimH N3r9R1T8mzGsDOrkcEFhqyo4wFoVMs7aenzwIrRznc8oahkaxWH8GKeMHJGeo2/WSgG22t FhjvaLqOzqQHjVdb8jfu93nDvMSUQF2d4nMG37LglOjWFnrLoJUcs0PBKZcms3f/qvfiNa effNucbFuwzBQx0ye2Ch7QNyb3ZKA7Aa6L+Re9RomIxyN3qNN5BKkBq20uuzLA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1788568541; a=rsa-sha256; cv=none; b=ZLMh2i1llXDlWwBI9L82uywC1USNeVXwReqZSz228BKXTlFPDMsQQl0yh6AiEIUatKVt7G Gb7AhbH5qAQweedSjBWrv+TuS69epela58ly40ODwTB+xWWmPMUGx4pDlAyC69gSj2WzVa RTLSpd0Qeri60bCVA8KjFWG/xgAiWXwFAgmuQmOHNIZOLEpKHkzAhL4XCWUJOKexVsOqtr 9ArcJeC47gnr3uAdSqS9dESF4YGi2y/QCORo0fKN7vGyuFG5h/D+AXju1RESBai2nhHDuA tIzIJ7rQZ93TlQe/jW/hrBB5NgH2LWnwLZ5mD1JVZFkhj/BxGK+jxkMeZQR8Qw== 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=1788568541; 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=Fv136GaYZNOJDRyv45twkOdZ+62MkR1YASVZEGnl41w=; b=CBNh0triYAhs2mZn1mQM3TQ6v1311wJDwUUJxgwnJGEqmIJN7C+GzjIEKbvDVWWqrI7lNm Xx69iotAuslHkFn6JKV2jzHgUGX8Nw0SyeNsEUBDakMgHuJmc1bj4U4tdG2tgaHHuwgsia RRwdSAAJrX9cVhDH+vEnlqgaC5xx1pelBnqWBejMqjIhbitOiWRhtYHKh7c1QQJSuxIMDQ +tXDYv9Sy3/K/SUGVwoGjI+dHEhQMrUC0bv0QbPv/u8Cux04C7hY8GXz6plqynd1JptB/R nGPx24K4TMInAmBezfA4n/WvyA7b5qq2eLlmjYk+TwUQpAlWj4Shf9HhoMJs9g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hcDrs0qy6z7y6 for ; Sat, 05 Sep 2026 00:35:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1e35d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 05 Sep 2026 00:35:41 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: a58557090670 - stable/15 - tty: add tty_wait_proctree(9) 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: a58557090670d61358b97eab285dcbde2402ad97 Auto-Submitted: auto-generated Date: Sat, 05 Sep 2026 00:35:41 +0000 Message-Id: <6a9b63dd.1e35d.6826c482@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=a58557090670d61358b97eab285dcbde2402ad97 commit a58557090670d61358b97eab285dcbde2402ad97 Author: Konstantin Belousov AuthorDate: 2026-08-25 08:19:32 +0000 Commit: Konstantin Belousov CommitDate: 2026-09-05 00:33:45 +0000 tty: add tty_wait_proctree(9) (cherry picked from commit 9bd3fe5712217ef8ae4cebba8be82c45be0c72e6) --- sys/kern/tty.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/sys/kern/tty.c b/sys/kern/tty.c index f412205a3d2b..41ce5ecdb455 100644 --- a/sys/kern/tty.c +++ b/sys/kern/tty.c @@ -72,6 +72,8 @@ static MALLOC_DEFINE(M_TTY, "tty", "tty device"); static void tty_rel_free(struct tty *tp, bool inttydevclose); +static int tty_wait_proctree(struct tty *tp, struct cv *cv, + int proctree_lock_mode); static TAILQ_HEAD(, tty) tty_list = TAILQ_HEAD_INITIALIZER(tty_list); static struct sx tty_list_sx; @@ -1608,6 +1610,43 @@ tty_wait(struct tty *tp, struct cv *cv) return (error); } +static int +tty_wait_proctree(struct tty *tp, struct cv *cv, int proctree_lock_mode) +{ + int error; + int revokecnt = tp->t_revokecnt; + + tty_lock_assert(tp, MA_OWNED | MA_NOTRECURSED); + MPASS(!tty_gone(tp)); + MPASS(proctree_lock_mode == LA_UNLOCKED || + proctree_lock_mode == LA_SLOCKED || + proctree_lock_mode == LA_XLOCKED); + + if (proctree_lock_mode != LA_UNLOCKED) + sx_unlock(&proctree_lock); + + error = cv_wait_sig_unlock(cv, tp->t_mtx); + switch (proctree_lock_mode) { + case LA_SLOCKED: + sx_slock(&proctree_lock); + break; + case LA_XLOCKED: + sx_xlock(&proctree_lock); + break; + } + tty_lock(tp); + + /* Bail out when the device slipped away. */ + if (tty_gone(tp)) + return (EXTERROR(ENXIO, "tty_wait_proctree: device is gone")); + + /* Restart the system call when we may have been revoked. */ + if (tp->t_revokecnt != revokecnt) + return (ERESTART); + + return (error); +} + int tty_timedwait(struct tty *tp, struct cv *cv, int hz) {