From nobody Wed Sep 30 23:31:23 2026 X-Original-To: dev-commits-src-main@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 4hwBBh3Sl2z6tSgP for ; Wed, 30 Sep 2026 23:31:24 +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 4hwBBh0bnNz4Kl4 for ; Wed, 30 Sep 2026 23:31:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1790811084; 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=X6498LuMdSYLnMpKaf9PJoXGTqoU6X9JL6qAFiWYBbs=; b=f3nt+0UVsj550+eFGa3+BcpiYul9OMfPauXOTogdPSxAVSguOwI5y7t2g08wb+NN6pDOs2 Xwx3oThCDQIH1tWaHCqn6WrKiNaeC+vn69jVpt7cITUi1Il1Pz1S/d9//hET3G+dRMz2HS EwKp85d5Hqx/mJLW7pN7HG8PtdLGfK6+acsnZfWAqa4z6cFvyOzGbr0p8z7ZWunYOcwyMh 7eZIRYl6TYAsrRoHBACAckqUlJLDYoFmObo4CIF9nEJblh9dA8JNqfHZwcZyDPefxCTnCt ubr6LtKw+twVc+uOwDzyYQ+tPLDbOJaPzvVGwPWAy8/hdhbYvrmDp/sHZn8jTw== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1790811084; b=ynYFVYrnNNMn5jpOJe52bhcONBw/uRF0qisUEGCzfylBd3tKsJxjN0rMsAVBg5D9PidDAt 0t3A+TL1An9PnL0aZICEp0yxuNq+tmcbhwzGIXLwMoHF9fWy8gs6IdfQ/EMl9ERKf8hTdQ hg7cfN9qMJomy7AUhwmYtybCzakwXvdrSBuwVDacmzT3fdgdYstoglaDkM1ndzsXi3pH4q YQuqaHR1sNEPYG2QWi3xMvFrE5kVfIN9i+SPaotQH9up8wut3MtM27W/7QWqi5gcaz7AbY 9IUaZ0irCbz+mZaxjF47hjAlC90aPdiODi8akbltNOkrJ4OjK9JfMxJjJXtxIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1790811084; 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=X6498LuMdSYLnMpKaf9PJoXGTqoU6X9JL6qAFiWYBbs=; b=vkqNKBgQOreATzIbREVEh+mZcZdMU/WbllxvTNxyNQgffj4skUOjvhXVoTviTE1G7cMsjZ 3i4YE+l/gKxDresycXYpfha6w0jivVsu1VwW0VUhP0yRNSUGgxLIPuyC6WKOaAG6AFR9FU s7LL0pVeFlPWEUhkdHaZ0tkVIdlazOLdgBIEQJMg2u2l4mzOa/gecGaP9F7dbkkkOoUoL8 0m6WTZxSgFGF5UBKJXzGlLFkO+i7LfaW3AV1lwkcBu1yfqFRy8Q15pRs3x5gWQzQd0z3j2 YQqbAvaTFK+CpqrOqSqmXpcFHVaJO5EkvSUUw2ZUM9pDQQpUzk0afZxqMg1RCQ== 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 4hwBBg3HJMz16FF for ; Wed, 30 Sep 2026 23:31:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 44eeb by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 30 Sep 2026 23:31:23 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: R. Christian McDonald Subject: git: 82ab4adec955 - main - pf: leave the epoch to purge unlinked rules List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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: rcm X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 82ab4adec95578b196eaf431d6ca87dd209aca6b Auto-Submitted: auto-generated Date: Wed, 30 Sep 2026 23:31:23 +0000 Message-Id: <6abd9bcb.44eeb.9102c31@gitrepo.freebsd.org> The branch main has been updated by rcm: URL: https://cgit.FreeBSD.org/src/commit/?id=82ab4adec95578b196eaf431d6ca87dd209aca6b commit 82ab4adec95578b196eaf431d6ca87dd209aca6b Author: R. Christian McDonald AuthorDate: 2026-09-30 23:30:54 +0000 Commit: R. Christian McDonald CommitDate: 2026-09-30 23:30:54 +0000 pf: leave the epoch to purge unlinked rules pf_purge_thread() calls pf_purge_unlinked_rules() in the network epoch, where sleeping is not allowed, and it takes pf_config_lock, an sx lock. If a rule is being added at the time, the purge thread can sleep on the lock, which panics with INVARIANTS. Reviewed by: kp Approved by: kp (mentor) Fixes: f92d9b1aad73 ("pflow: import from OpenBSD") MFC after: 1 week Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D60160 --- sys/netpfil/pf/pf.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index 73e6900ec6eb..d125a28a5b76 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -2935,7 +2935,13 @@ pf_purge_thread(void *unused __unused) */ pf_purge_expired_fragments(); pf_purge_expired_src_nodes(); + /* + * Takes the config lock, and may have to + * sleep for it. + */ + NET_EPOCH_EXIT(et); pf_purge_unlinked_rules(); + NET_EPOCH_ENTER(et); pf_source_purge(); pfi_kkif_purge(); }