From nobody Sun Apr 12 18:35:30 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 4ftzkB3tV3z6YVXm for ; Sun, 12 Apr 2026 18:35:30 +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 "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ftzkB1YdJz3ZjH for ; Sun, 12 Apr 2026 18:35:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1776018930; 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=BnTz38dLQieC3Ojo3Tu5MRNx7/ntj75hJs/snVMpPIg=; b=bQhDPqSGbjOOKVibIiz5zBQa7a6BRY/E343C0Kic2eha+vFuJm27mwwcGC38Wug0AFnjb3 0UYkUTMOR8DZyXw8lzpQYOYxKFelRtxOfYEyg3E9PObWGh3O+9IEpTZ2LjjqFed8p8dudF umJsSTjfH13dmHccogavmQbXR0fzLrTbpwlPPTrDqn5xy3y5pvQf6LGma4bdQ8oAZuSxRF j5+mBGQ1T1xvL7cmXvMSRFCa5FENq65iQxoVpMYXdhk0SgCFtdvQ0TxzpzZYVCCweiMEGj /t+5FcI37vHoql3DcHEcsnetwXPytLpXWxv1NTr1RV25p6UGUp23JGZLjSiagw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1776018930; a=rsa-sha256; cv=none; b=c8e3MODUqpW0S7P08nQfXu3fyskXGa0JF97bd4xoF+uQn4KScYKx9ishX1fG3YJsWjNIPH b3hajLPQ09BZtfDjjXxJyYIeUxz3YR6nUqxQuKkUVSmSMzxpOudFQV6uS4ZLUtss7xhUSP qARo9KF1ry/8egOYsR6KIvyNJ7Kfp0XSduVWYY6oFi9s5nDEPQs6ojPpVrXuJqU82horn1 BCl+jcAg3nAaEuM4w73PEwl9sI6If/Tffju4uDNwuVT09by6EJjjuR6f477CKQjCitwVPf roR/b3CKY9acY3CdIhqUN9abcKQqSFyBFWa5jNnGTCa/+YUzHW3tkfzjlWKwpA== 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=1776018930; 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=BnTz38dLQieC3Ojo3Tu5MRNx7/ntj75hJs/snVMpPIg=; b=KZgXxv70ZxACstCMA98iBpt70A1BuW2aMoOYv8g2JM7o/ZcDjVlF6et7fU2NS/KfBsrcPo 6ombr7DCV5nVbPticK+/YRkBEHgcrYP0UDEeJGPM6eUloTcnXoHIlyDECODECW3v+LtuEo KBEs3c73Tn8s1a/nlflSmrxgjdVSJSbet97wCyLQBZ3vF0xlIxd19iPGGWZPYj6BmrtgB3 Dw17tiunIKlDv6fi7KU5zHD8Jyd/7PG2kYCRkA5nf4f/dErHlhPCrYmbMGoktZT60dro3W z30bjveRyxnWkM8s2L/zqU9g13vJ/zmirddCzSjx2hF1sEhKPUyA15mzewneLQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4ftzkB0lF6zDDL for ; Sun, 12 Apr 2026 18:35:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3941d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 12 Apr 2026 18:35:30 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Gleb Smirnoff Subject: git: 202370905f11 - main - inpcb: apply smr_advance(9)/smr_wait(9) trick only to reusable sockets 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 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 202370905f11be4e2c7afa18e73d374204fda08e Auto-Submitted: auto-generated Date: Sun, 12 Apr 2026 18:35:30 +0000 Message-Id: <69dbe5f2.3941d.56c71509@gitrepo.freebsd.org> The branch main has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=202370905f11be4e2c7afa18e73d374204fda08e commit 202370905f11be4e2c7afa18e73d374204fda08e Author: Gleb Smirnoff AuthorDate: 2026-04-12 18:30:44 +0000 Commit: Gleb Smirnoff CommitDate: 2026-04-12 18:30:44 +0000 inpcb: apply smr_advance(9)/smr_wait(9) trick only to reusable sockets The protocols marked with PR_CONNREQUIRED can never go through pr_connect after being disconnected. This is a tiny improvement of fdb987bebddf0. While here push clearing of the addresses under the same condition. Although this clearing originates from pre-FreeBSD times, it actually makes sense only for protocols that can reconnect. Reviewed by: pouria, markj Differential Revision: https://reviews.freebsd.org/D55661 --- sys/netinet/in_pcb.c | 12 +++++++----- sys/netinet6/in6_pcb.c | 15 ++++++++------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/sys/netinet/in_pcb.c b/sys/netinet/in_pcb.c index a997c643e8be..98421a7f2232 100644 --- a/sys/netinet/in_pcb.c +++ b/sys/netinet/in_pcb.c @@ -1433,11 +1433,13 @@ in_pcbdisconnect(struct inpcb *inp) in_pcbremhash_locked(inp); - /* See the comment in in_pcbinshash(). */ - inp->inp_smr = smr_advance(inp->inp_pcbinfo->ipi_smr); - inp->inp_laddr.s_addr = INADDR_ANY; - inp->inp_faddr.s_addr = INADDR_ANY; - inp->inp_fport = 0; + if ((inp->inp_socket->so_proto->pr_flags & PR_CONNREQUIRED) == 0) { + /* See the comment in in_pcbinshash(). */ + inp->inp_smr = smr_advance(inp->inp_pcbinfo->ipi_smr); + inp->inp_laddr.s_addr = INADDR_ANY; + inp->inp_faddr.s_addr = INADDR_ANY; + inp->inp_fport = 0; + } } #endif /* INET */ diff --git a/sys/netinet6/in6_pcb.c b/sys/netinet6/in6_pcb.c index f8ce64a65998..2d6e860a72ba 100644 --- a/sys/netinet6/in6_pcb.c +++ b/sys/netinet6/in6_pcb.c @@ -510,13 +510,14 @@ in6_pcbdisconnect(struct inpcb *inp) in_pcbremhash_locked(inp); - /* See the comment in in_pcbinshash(). */ - inp->inp_smr = smr_advance(inp->inp_pcbinfo->ipi_smr); - - /* XXX-MJ torn writes are visible to SMR lookup */ - memset(&inp->in6p_laddr, 0, sizeof(inp->in6p_laddr)); - memset(&inp->in6p_faddr, 0, sizeof(inp->in6p_faddr)); - inp->inp_fport = 0; + if ((inp->inp_socket->so_proto->pr_flags & PR_CONNREQUIRED) == 0) { + /* See the comment in in_pcbinshash(). */ + inp->inp_smr = smr_advance(inp->inp_pcbinfo->ipi_smr); + /* XXX-MJ torn writes are visible to SMR lookup */ + memset(&inp->in6p_laddr, 0, sizeof(inp->in6p_laddr)); + memset(&inp->in6p_faddr, 0, sizeof(inp->in6p_faddr)); + inp->inp_fport = 0; + } /* clear flowinfo - draft-itojun-ipv6-flowlabel-api-00 */ inp->inp_flow &= ~IPV6_FLOWLABEL_MASK; }