From nobody Wed Sep 04 16:21:10 2024 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 4WzSRB1sW5z5VBbN; Wed, 04 Sep 2024 16:21:10 +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 4WzSRB1M2Fz4gwW; Wed, 4 Sep 2024 16:21:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1725466870; 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=6frMuXMM5woKoR0rAm3z92jqFhIW6aYK017//Ego9oQ=; b=MoMU5Lq576KplmrxYJKkVZAzxNW9VL6SGa1zx5m6U+mYY9sJi3KckE/gd1rA8z39v1jRHk lQMRfl9xO32KJYYja9EanIBOHtTf5DUdEGA5LmzIiM+xqv7poNek95W+zuPvKYFBc+kUYS m1hl7Qhjd7emdcyjkwHxVpgGby5kDJyKxgHhP2i5atr+aggFS8IB33MUcliFC6nEckSD99 zhZjpH3rl8pG86Ru8RkyFw1Wcb5F1KDHpn3bggyr1CpnetD90NwnvBZQFDuGG62hppKWWD F/wmUMJi9yZyBhGLZ5E1dHnGUhxjSqe73Fzja3jK6W+73UM7NWMNMq9NCqIuqQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1725466870; a=rsa-sha256; cv=none; b=uPIXeEsB5QxosdKypXS4zV2ZMXZileenEx9SvL9Q8moxQL9o2n7HgjorwHsXysHMrtJJiP tjI60skNSFlGtNGeeFjQT3Y01roP1Otoo8/ZYpZ3iCQGla82XROItFz84Z3qCtfHgfzio+ ddncR4URnLO7etyKAawlMIgZiPo82fiyQb1sQ+9tYLortX2kNBAOPXRxLqu5hEv893NsQ7 g3yk126TYffrqv5AXV3SxkEpMMiu9i3tDNVNgvSPxPyxeK3kTuEwfhIWixmAptVngQY/mX lp2JIGO/GyTQyEutxHxndbiaPGyyiuzxT+W78vIWI7QIIZ8KPdQI+ooxVqkjMw== 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=1725466870; 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=6frMuXMM5woKoR0rAm3z92jqFhIW6aYK017//Ego9oQ=; b=Nx2fZE3cpq19YampjKleVy7K0TItZna4Nc9Ha9uHL1Gb5z9ZMHq/QDojWtUHn0G4Qiw7Ov 5O50RD8LiFjnX2CXDDDcjuh2fDP/bxhwV8TLpWkYAznpymL/hVmL9F+CBNsoMWTNu1TwEq g1SjBh9/3tTDDM30MOyBuF6b2oSxcVhgENfsDriuMGt2naSEp7bHTYOjlps6n0ZF6nCKf7 6/5Bg8Oq1rPZ0ervWmfSQstx5I5sgrJ4T8wRyqC2Gq9AMsMH5ZlMIir4oPkzAzghTgbDQh eit+Ize95xUDwiRbo5VV6ldgNNq0wK/2RPqJ0KlxfKlbwgKkX7mdntT1Y5F78g== 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 4WzSRB0xygzX79; Wed, 4 Sep 2024 16:21:10 +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 484GLATc066092; Wed, 4 Sep 2024 16:21:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 484GLAH4066089; Wed, 4 Sep 2024 16:21:10 GMT (envelope-from git) Date: Wed, 4 Sep 2024 16:21:10 GMT Message-Id: <202409041621.484GLAH4066089@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Eugene Grosbein Subject: git: 5d0ad5fffbb3 - stable/13 - MFC: ng_ksocket: fix upcall clearing on node shutdown 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 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: eugen X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 5d0ad5fffbb3b5a71405a47b9b74d7920f9428fd Auto-Submitted: auto-generated The branch stable/13 has been updated by eugen: URL: https://cgit.FreeBSD.org/src/commit/?id=5d0ad5fffbb3b5a71405a47b9b74d7920f9428fd commit 5d0ad5fffbb3b5a71405a47b9b74d7920f9428fd Author: Gleb Smirnoff AuthorDate: 2023-11-17 17:23:58 +0000 Commit: Eugene Grosbein CommitDate: 2024-09-04 16:20:18 +0000 MFC: ng_ksocket: fix upcall clearing on node shutdown Note: imho, the proper solution would be to guarantee that upcalls won't ever be called after soclose(), but this isn't the case, yet. This change at least makes the node work the way it always worked. Reviewed by: afedorov Differential Revision: https://reviews.freebsd.org/D42636 PR: 272319 PR: 275106 Fixes: 779f106aa169256b7010a1d8f963ff656b881e92 (cherry picked from commit efad7cbfdc06e92bcc589a6c0cae2f3bea0d5cb9) --- sys/netgraph/ng_ksocket.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/sys/netgraph/ng_ksocket.c b/sys/netgraph/ng_ksocket.c index 6e12415e449a..1acd9f78efbf 100644 --- a/sys/netgraph/ng_ksocket.c +++ b/sys/netgraph/ng_ksocket.c @@ -944,17 +944,24 @@ static int ng_ksocket_shutdown(node_p node) { const priv_p priv = NG_NODE_PRIVATE(node); + struct socket *so = priv->so; priv_p embryo; /* Close our socket (if any) */ if (priv->so != NULL) { - SOCKBUF_LOCK(&priv->so->so_rcv); - soupcall_clear(priv->so, SO_RCV); - SOCKBUF_UNLOCK(&priv->so->so_rcv); - SOCKBUF_LOCK(&priv->so->so_snd); - soupcall_clear(priv->so, SO_SND); - SOCKBUF_UNLOCK(&priv->so->so_snd); - soclose(priv->so); + if (SOLISTENING(so)) { + SOLISTEN_LOCK(so); + solisten_upcall_set(so, NULL, NULL); + SOLISTEN_UNLOCK(so); + } else { + SOCK_RECVBUF_LOCK(so); + soupcall_clear(so, SO_RCV); + SOCK_RECVBUF_UNLOCK(so); + SOCK_SENDBUF_LOCK(so); + soupcall_clear(so, SO_SND); + SOCK_SENDBUF_UNLOCK(so); + } + soclose(so); priv->so = NULL; }