From nobody Mon Mar 24 06:41:18 2025 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 4ZLk3M26Hsz5rTh1; Mon, 24 Mar 2025 06:41:19 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZLk3L6GW1z3x3l; Mon, 24 Mar 2025 06:41:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1742798478; 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=OlSI+Jt5XSxtV6qtEI18A6kktfWJIhikFaa6+rcdeOQ=; b=xMnrYvOeTMJwGFJkX996h1HWVy9oR8lWmwcmWZNjqORQdCGukuHo1iNyX3xczs3sIcE8F2 xUo01WOfXYyR+zBZpjwCnzhap+R89ht/2qgvBGCk3BQXlg8CHvjUM3FI6hIfVaIaCdp9GI eOdhKHCRrlJ44PL5vk1aya3jU4Gxs2D+yYSFwfMw+4/XuQlIUp7xZDdyTgMBM60ZCymsPl 3D5EqKI2d0+yXrRnQ1Vb/MaGddc3Yck9MSqQqqu7bpEbiE6Clm74i7J97a947p4jGpdA8b 4A7Vhe+U1QNRGK+RWQqeZle9HzmocN2X7veDppskdGOZyEOvxxFVzIFnPSN/2g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1742798478; a=rsa-sha256; cv=none; b=RHTQwcUqxO09XQisPYJ4zQb0LdMqL5e9WojykG0Meo6v5bfjLMhkasjcJGIEvTKOYACvJd U/AeKFrdCfFSPCE1aGgU5CqiOjr9Dq/d9cONjfN2MYSUmDZNZUB+L/3B1q6Wv22u+Ia8Ns BUIPbuuDMWvWAycjiY0cT9BFJPwqihHteHVbMwNX0UzrBJ9Fc/JwgqDwdz8VVT1/0Uo7HT SOsLBnZUqINrKsrWVuDvx0iGTmfC9D70ouY9+IyZRg2TCQ3Qd8FQZruVUEdjlY6CIS7OjB Qo6S1v4e4BLyLXFAEhntTSUDvDhceK8M8dGbRpcY8Xhws+yGPRlz1M4qZRzkLw== 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=1742798478; 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=OlSI+Jt5XSxtV6qtEI18A6kktfWJIhikFaa6+rcdeOQ=; b=G/70VFit5BWrN/u5UVq/uD8vd+n5U2JIFqxeDaOutW7nkdNre2tCzyC9DWgnPL2wOnVwEU Mpi+EJSMa4vUaPALTiblp4t1a5vnA9qvP3SAbL9lORdFrDsgoKQRP58asIdXFUq4kvKs17 nKatyRE7WKyHJa5Nko6YXgB3RytNQZXXg4rVRIcJWd/rXnPp5ut8jadSaiR4ltAoNAaPLw VQT69UUtKAf6uvuG4WuZvrz4lYw8k92JkFpzImIZ0qeduph3Se7JU7VP6YFXrjz905gUdB iRrVREiEqTqjGJjcz2f5XM18fPvhPGBPMyAMY9BNpZujc1VdQNBqhF3Cx5ktGg== 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 4ZLk3L5fmyzjxs; Mon, 24 Mar 2025 06:41:18 +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 52O6fITi052786; Mon, 24 Mar 2025 06:41:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52O6fIF8052783; Mon, 24 Mar 2025 06:41:18 GMT (envelope-from git) Date: Mon, 24 Mar 2025 06:41:18 GMT Message-Id: <202503240641.52O6fIF8052783@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: 371392bc10f2 - main - sockbuf: remove sbflush_internal() and sbrelease_internal() shims 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: 371392bc10f262a71c197a64d3815d930f8527fe Auto-Submitted: auto-generated The branch main has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=371392bc10f262a71c197a64d3815d930f8527fe commit 371392bc10f262a71c197a64d3815d930f8527fe Author: Gleb Smirnoff AuthorDate: 2025-03-24 06:40:19 +0000 Commit: Gleb Smirnoff CommitDate: 2025-03-24 06:40:19 +0000 sockbuf: remove sbflush_internal() and sbrelease_internal() shims This functions serve just one purpose - allow to call sbdestroy() from sofree() without triggering unlocked mutex assertions. Let's just don't save on locking with INVARIANTS kernel and this will allow to clean up all these shims. Should be no functional changes. Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D49363 --- sys/kern/uipc_sockbuf.c | 34 ++++++++++------------------------ sys/kern/uipc_socket.c | 18 +++++++++++++----- 2 files changed, 23 insertions(+), 29 deletions(-) diff --git a/sys/kern/uipc_sockbuf.c b/sys/kern/uipc_sockbuf.c index e8d410b00c15..48984046ea8a 100644 --- a/sys/kern/uipc_sockbuf.c +++ b/sys/kern/uipc_sockbuf.c @@ -75,7 +75,6 @@ static void sbcompress_ktls_rx(struct sockbuf *sb, struct mbuf *m, struct mbuf *n); #endif static struct mbuf *sbcut_internal(struct sockbuf *sb, int len); -static void sbflush_internal(struct sockbuf *sb); /* * Our own version of m_clrprotoflags(), that can preserve M_NOTREADY. @@ -779,24 +778,17 @@ sbsetopt(struct socket *so, struct sockopt *sopt) /* * Free mbufs held by a socket, and reserved mbuf space. */ -static void -sbrelease_internal(struct socket *so, sb_which which) -{ - struct sockbuf *sb = sobuf(so, which); - - sbflush_internal(sb); - (void)chgsbsize(so->so_cred->cr_uidinfo, &sb->sb_hiwat, 0, - RLIM_INFINITY); - sb->sb_mbmax = 0; -} - void sbrelease_locked(struct socket *so, sb_which which) { + struct sockbuf *sb = sobuf(so, which); SOCK_BUF_LOCK_ASSERT(so, which); - sbrelease_internal(so, which); + sbflush_locked(sb); + (void)chgsbsize(so->so_cred->cr_uidinfo, &sb->sb_hiwat, 0, + RLIM_INFINITY); + sb->sb_mbmax = 0; } void @@ -818,7 +810,7 @@ sbdestroy(struct socket *so, sb_which which) ktls_free(sb->sb_tls_info); sb->sb_tls_info = NULL; #endif - sbrelease_internal(so, which); + sbrelease_locked(so, which); } /* @@ -1530,10 +1522,12 @@ sbcompress_ktls_rx(struct sockbuf *sb, struct mbuf *m, struct mbuf *n) /* * Free all mbufs in a sockbuf. Check that all resources are reclaimed. */ -static void -sbflush_internal(struct sockbuf *sb) +void +sbflush_locked(struct sockbuf *sb) { + SOCKBUF_LOCK_ASSERT(sb); + while (sb->sb_mbcnt || sb->sb_tlsdcc) { /* * Don't call sbcut(sb, 0) if the leading mbuf is non-empty: @@ -1548,14 +1542,6 @@ sbflush_internal(struct sockbuf *sb) sb->sb_ccc, (void *)sb->sb_mb, sb->sb_mbcnt)); } -void -sbflush_locked(struct sockbuf *sb) -{ - - SOCKBUF_LOCK_ASSERT(sb); - sbflush_internal(sb); -} - void sbflush(struct sockbuf *sb) { diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index c27b007cafc6..63d30f04c8e0 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -1862,14 +1862,22 @@ sofree(struct socket *so) if (pr->pr_detach != NULL) pr->pr_detach(so); - /* - * From this point on, we assume that no other references to this - * socket exist anywhere else in the stack. Therefore, no locks need - * to be acquired or held. - */ if (!(pr->pr_flags & PR_SOCKBUF) && !SOLISTENING(so)) { + /* + * From this point on, we assume that no other references to + * this socket exist anywhere else in the stack. Therefore, + * no locks need to be acquired or held. + */ +#ifdef INVARIANTS + SOCK_SENDBUF_LOCK(so); + SOCK_RECVBUF_LOCK(so); +#endif sbdestroy(so, SO_SND); sbdestroy(so, SO_RCV); +#ifdef INVARIANTS + SOCK_SENDBUF_UNLOCK(so); + SOCK_RECVBUF_UNLOCK(so); +#endif } seldrain(&so->so_rdsel); seldrain(&so->so_wrsel);