From nobody Mon Feb 17 23:31:03 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 4Yxf6c2tG2z5nbh9; Mon, 17 Feb 2025 23:31:04 +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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Yxf6b1hdYz420m; Mon, 17 Feb 2025 23:31:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1739835063; 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=HvXUAAQ40aCV8SX/YLIufGWhu0qzX5gTJVED2tEI+Fo=; b=J7RkucT80ImDgp2b8qjzZxoh44UeEmjs6EJ2X4pHUolP7DzQvoauWb9Fe6DT9O67yEVk9J +XK0pOpqTcHLKjy79yUzag88tmPVXQ8JAmDVQssTVBrzPkFYcfpBZlwnbRnDr7kkZkV8bx bOQi9MofPPaRXN2wSzQ0y+fsMdVl/7fgVsv+tydg019M9pYIuVr9EoUtsBKDG9bTx8B1rR h6TxujC0B6H+kiADCDOL9Gggr+fPTlAzhGGvpzsoppFEiMKnUj0EtTuOJRgD/Yf+xoEmnv lUGTXe+arg30eGyxEkubTD1GOYHLW0iz7TbIbtdleH5YDoA+K2puLBz/nt9VEg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1739835063; a=rsa-sha256; cv=none; b=hCCIUrjgj2FhR1t63Y/kbwrDJ+9qf8z4BzQ74PxxKgs2zaAE4qZLpaha1r1YOXMoEF4XNU r/h3A6MTPH4OjkhN5uihJhZmr4VS8SEV+IGn5iNp3xm3kiNOTF0DMUR9gVSdV2MDK1DVAg OZZSuUFDuqx96POsbr/vxjMvK9KbdRjkF7V59mPvrjAJ7in4vDB+va+uNnkEA58xhqNcXg IXSuV2iVChgREJXn7byOJY+n1Sh4lTSTwBkpBMkoWz93pFV9k32fk/sMQr/nmUWy5111l+ 9dIlFkSEMkOC4fKvhhtlQznp54vSSUT3FPSMy8mauHLiPUUMTUfNq6it94ACJg== 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=1739835063; 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=HvXUAAQ40aCV8SX/YLIufGWhu0qzX5gTJVED2tEI+Fo=; b=eLoHkHYZbiCQ/nePbOgqPmcFn2np5De5Dn5yVQkoMLUmD9FaOXZ0ZMBDaUHz+8g2St691k aAb6odJuaZHZdlALGfJSfxVosTPL+TUZuJ8q3vhAB2njlAg/6QxITX4EReXRFWNLwRuZ9d fK/Y4bFwNP4kWlItHKYGQyxZy8Nj/pSCoFjIQLF1Gxb1LrSLvYTW4ZXofBbdHLVyAC5duA pgBvPwBcuSWMAOvIf3xwDnjgYgWtFP4W/RxwFsxvlMZeOeiU4P3R+2eybbvezhNPOkcsOz z3119mWIu2e5qkDHPGNeCwHiQvYGYOsIh7CnQA+BK7y5CnVEAAKsblmAbdWr3Q== 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 4Yxf6b0yTTztpN; Mon, 17 Feb 2025 23:31:03 +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 51HNV3Z0067173; Mon, 17 Feb 2025 23:31:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 51HNV30h067170; Mon, 17 Feb 2025 23:31:03 GMT (envelope-from git) Date: Mon, 17 Feb 2025 23:31:03 GMT Message-Id: <202502172331.51HNV30h067170@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Gleb Smirnoff Subject: git: 24e5c2ee2a18 - main - inpcb: update inpcb multipath routing information only on success 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: glebius X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 24e5c2ee2a185bb0e6e69c0e55341eed5d23c141 Auto-Submitted: auto-generated The branch main has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=24e5c2ee2a185bb0e6e69c0e55341eed5d23c141 commit 24e5c2ee2a185bb0e6e69c0e55341eed5d23c141 Author: Gleb Smirnoff AuthorDate: 2025-02-17 23:28:52 +0000 Commit: Gleb Smirnoff CommitDate: 2025-02-17 23:28:52 +0000 inpcb: update inpcb multipath routing information only on success The in_pcbconnect_setup() function is not supposed to modify inpcb. It may be entered with read-only lock via UDP path. Also at this point we aren't yet sure that the binding is going to be successful. Thus, update the multipath routing information only at the end of a succesful in_pcbconnect(). Fixes: 0c325f53f16731f608919a4489f96fbbe28d2344 --- sys/netinet/in_pcb.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/sys/netinet/in_pcb.c b/sys/netinet/in_pcb.c index 18f92cdffc53..c34b4594c9b9 100644 --- a/sys/netinet/in_pcb.c +++ b/sys/netinet/in_pcb.c @@ -1121,7 +1121,18 @@ in_pcbconnect(struct inpcb *inp, struct sockaddr_in *sin, struct ucred *cred) else in_pcbinshash(inp); } +#ifdef ROUTE_MPATH + if (CALC_FLOWID_OUTBOUND) { + uint32_t hash_val, hash_type; + + hash_val = fib4_calc_software_hash(inp->inp_laddr, + inp->inp_faddr, 0, fport, + inp->inp_socket->so_proto->pr_protocol, &hash_type); + inp->inp_flowid = hash_val; + inp->inp_flowtype = hash_type; + } +#endif if (anonport) inp->inp_flags |= INP_ANONPORT; return (0); @@ -1377,17 +1388,6 @@ in_pcbconnect_setup(struct inpcb *inp, struct sockaddr_in *sin, lport = *lportp; faddr = sin->sin_addr; fport = sin->sin_port; -#ifdef ROUTE_MPATH - if (CALC_FLOWID_OUTBOUND) { - uint32_t hash_val, hash_type; - - hash_val = fib4_calc_software_hash(laddr, faddr, 0, fport, - inp->inp_socket->so_proto->pr_protocol, &hash_type); - - inp->inp_flowid = hash_val; - inp->inp_flowtype = hash_type; - } -#endif if (V_connect_inaddr_wild && !CK_STAILQ_EMPTY(&V_in_ifaddrhead)) { /* * If the destination address is INADDR_ANY,