From nobody Thu Nov 30 17:02:06 2023 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 4Sh2YB3G9Rz52JJB; Thu, 30 Nov 2023 17:02:06 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Sh2YB2jG6z4Z5t; Thu, 30 Nov 2023 17:02:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1701363726; 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=1rpr44Oxi382RO6+7ajIqS/fcK5/m4A+0vp/8OhA2fw=; b=FdRdWtjU+/3B7w72gheLgoGOxS4RW6ZqAC+3rMD34+O2uOTGbZR06YCbnLAiQmQYXUb3sQ 16iGA5MStoMZRAhKZW+hJIilat4Ib4CYgH6prvIep5saUwIwYZ+158UsSjCOU5jxej3GYY 3dz0jWJIPRHdVlSMUoOqZcfYdWX2eqBvDXwQC6yIKvncNni6Z3q0WniCHJJ6ADVH1w4HI2 HIhba6XY8SePIlMneZFLZqZBSfR22ik1D+AS4AMRY+22lTiv1Gwi6jsRV82+f1/8tPWN9k CNXhovFimVaSSYQiv7caC9iPtAEDXSUmpmgL8hCpC1olgo7CgdPbIw0rbtnVrw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1701363726; 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=1rpr44Oxi382RO6+7ajIqS/fcK5/m4A+0vp/8OhA2fw=; b=RD9LWoZMbUBeBNhjGpjdlTxTAAU/TzV6cI7Lk81opO8DoLI2CuiIiwn3R6HEGU317FMdRs /AZBnDrlJDu0dpfh8iFN3uNTP0Tttf06MaWw+kYFd3vIhOrlWVYD+h2BTzbWVEDf1NXy9B xMrPiJNaZ+7mIlXjy04d992vuI3srmDwSjhk0lK2Hwn5lTKwMfNVVKpPmXSsq0hlItnn6H lsKrp2SjQKVaWx2tHlrCidLImxBfES38VIJirRHFyCXgSBxYBWH/y9zacrBSfbYXpO2VXl RSg4Z5ZakMU6bBQSd0Jl/UqxrRSF38D+G3sppLV/KZOMIY4qPnC83sFa2DpXdw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1701363726; a=rsa-sha256; cv=none; b=nw/gy8ljFkWivhorEnmO1Q/1sCiHXxNWkqmZMz9F7hsIJGwWid3+yG/cagdhsCtMQOksKq iO294I1aLXaxxEF5mr5OxNCOhfG+mCd7IXKpqXow2z7juOZtRf0ACrJruZQvmnf3mI/bmK NTfHTF81xzr9jDEcumDJmVJoOeVymutQkUTwzCNsXdYjW5SN97XreL8jdWCfdCKLIY5nuO FVO8mxhYTEovU0+r705ef6dYJ9o33c9JNBif2oAQ3vL00OoDfemaKvF8F2UdCOhrOmBHMF D/ECMZ/XPQW2yG7fI3mE35ESFaKCEOXRRsZxkWilJTiswxtezq0U3qL6w5iwuQ== 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 4Sh2YB1nvPzyKX; Thu, 30 Nov 2023 17:02:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 3AUH26B2005520; Thu, 30 Nov 2023 17:02:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 3AUH26BE005518; Thu, 30 Nov 2023 17:02:06 GMT (envelope-from git) Date: Thu, 30 Nov 2023 17:02:06 GMT Message-Id: <202311301702.3AUH26BE005518@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: 09f4b840bd7c - stable/14 - 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: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/14 X-Git-Reftype: branch X-Git-Commit: 09f4b840bd7cb6427af2a28a10bd839da6dd76d5 Auto-Submitted: auto-generated The branch stable/14 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=09f4b840bd7cb6427af2a28a10bd839da6dd76d5 commit 09f4b840bd7cb6427af2a28a10bd839da6dd76d5 Author: Gleb Smirnoff AuthorDate: 2023-11-17 17:23:58 +0000 Commit: Gleb Smirnoff CommitDate: 2023-11-30 17:01:39 +0000 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 7e5be8c211ae..337248789473 100644 --- a/sys/netgraph/ng_ksocket.c +++ b/sys/netgraph/ng_ksocket.c @@ -929,17 +929,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; }