From: "Günther Noack" <gnoack3000@gmail.com>
To: Alejandro Colomar <alx@kernel.org>
Cc: linux-man@vger.kernel.org, "Günther Noack" <gnoack3000@gmail.com>,
"Pavel Emelyanov" <xemul@virtuozzo.com>,
"Dmitry V. Levin" <ldv@strace.io>,
"Michael Kerrisk" <mtk.manpages@gmail.com>,
"Kuniyuki Iwashima" <kuniyu@google.com>
Subject: [PATCH v2 05/24] man/man7/sock_diag.7: udiag_wqueue: This is memory in use, not memory available
Date: Sun, 18 Oct 2026 19:36:53 +0200 [thread overview]
Message-ID: <20261018173712.27670-6-gnoack3000@gmail.com> (raw)
In-Reply-To: <20261018173712.27670-1-gnoack3000@gmail.com>
The reported value is equivalent to what SIOCINQ/SIOCOUTQ report, as
also discussed in the commit message in linux.git c9da99e6475f
(2011-12-30; "unix_diag: Fixup RQLEN extension report"). (Those are
socket-flavoured synonyms of TIOCINQ(2const), TIOCOUTQ(2const))
In Linux code, the reasoning is as follows:
* The udiag_wqueue field is set in sk_diag_show_rqlen() in linux.git
net/unix/diag.c, where for non-listening sockets, unix_outq_len() is
assigned.
* unix_outq_len() in linux.git net/unix/af_unix.c returns
sk_wmem_alloc_get().
* sk_wmem_alloc_get() in linux.git include/net/sock.h reads its return
value from refcount_read(&sk->sk_wmem_alloc) (with some technical
tweaks).
* The field sk_wmem_alloc is documented in the same file as:
@sk_wmem_alloc: transmit queue bytes committed
That this interpretation of sk_wmem_alloc is correct can also be seen
in the places where the protocol-specific code adds to it.
The UNIX sockets increment sk->sk_wmem_alloc as follows:
* unix_dgram_sendmsg() and unix_stream_sendmsg() in net/unix/af_unix.c
invoke sock_alloc_send_pskb()
* sock_alloc_send_pskb() in net/core/sock.c calls skb_set_owner_w()
* skb_set_owner_w() in the same file increments the counter using
__refcount_add(skb->truesize, &sk->sk_wmem_alloc, &old_wmem);
Fixes: 4f6a0a4a909e (2016-12-07; "sock_diag.7: New page documenting NETLINK_SOCK_DIAG interface")
Cc: Pavel Emelyanov <xemul@virtuozzo.com>
Cc: Dmitry V. Levin <ldv@strace.io>
Cc: Michael Kerrisk <mtk.manpages@gmail.com>
Cc: Kuniyuki Iwashima <kuniyu@google.com>
Assisted-by: LLM
Signed-off-by: Günther Noack <gnoack3000@gmail.com>
---
Notes:
Verified in kernel code; the udiag_wqueue field does indeed have these
different semantics -- it's the data already sent, which is still
stuck in the output queue, not the maximum size of the output queue.
man/man7/sock_diag.7 | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/man/man7/sock_diag.7 b/man/man7/sock_diag.7
index 35a6d5a80ffc..8f8b28b4404d 100644
--- a/man/man7/sock_diag.7
+++ b/man/man7/sock_diag.7
@@ -248,7 +248,9 @@ the backlog size which equals to the value passed as the second argument to
.BR listen (2).
.IP
For established sockets:
-the amount of memory available for sending.
+the amount of memory currently allocated for data
+that was sent on this socket
+but has not yet been received by the peer.
.RE
.TP
.B UDIAG_SHOW_MEMINFO
--
2.56.0
next prev parent reply other threads:[~2026-10-18 17:37 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-18 17:36 [PATCH v2 00/24] Documentation fixes in unix(7) Günther Noack
2026-10-18 17:36 ` [PATCH v2 01/24] man/man7/unix.7: ERRORS: EINVAL: The address field is sun_family, not sun_type Günther Noack
2026-10-18 17:36 ` [PATCH v2 02/24] man/man7/unix.7: Socket options: SOL_SOCKET is a level, not a family Günther Noack
2026-10-18 17:36 ` [PATCH v2 03/24] man/man7/unix.7: SO_PASSCRED: ffix Günther Noack
2026-10-18 17:36 ` [PATCH v2 04/24] man/man7/sock_diag.7: Fix member order of struct unix_diag_vfs Günther Noack
2026-10-18 17:36 ` Günther Noack [this message]
2026-10-18 17:36 ` [PATCH v2 06/24] man/man7/unix.7: ERRORS: EPROTONOSUPPORT: Protocol 0 is also accepted Günther Noack
2026-10-18 17:36 ` [PATCH v2 07/24] man/man7/unix.7: ERRORS: ETOOMANYREFS: Fix the conditions Günther Noack
2026-10-18 17:36 ` [PATCH v2 08/24] man/man7/socket.7: SO_PEEK_OFF: This option is no longer specific to unix(7) Günther Noack
2026-10-18 17:36 ` [PATCH v2 09/24] man/man7/unix.7: SO_PEERCRED: Also works for SOCK_SEQPACKET Günther Noack
2026-10-18 17:36 ` [PATCH v2 10/24] man/man7/unix.7: SIOCINQ: Document behavior " Günther Noack
2026-10-18 17:36 ` [PATCH v2 11/24] man/man7/sock_diag.7: udiag_states: Document TCP_CLOSE Günther Noack
2026-10-18 17:37 ` [PATCH v2 12/24] man/man7/sock_diag.7: UNIX_DIAG_NAME: The payload is not always a pathname Günther Noack
2026-10-18 17:37 ` [PATCH v2 13/24] man/man7/sock_diag.7: Document UDIAG_SHOW_UID Günther Noack
2026-10-18 17:37 ` [PATCH v2 14/24] man/man7/unix.7: Several items of the same type may be sent in one message Günther Noack
2026-10-18 17:37 ` [PATCH v2 15/24] man/man2/bind.2: ERRORS: EACCES: Write permission on the directory is required Günther Noack
2026-10-18 17:37 ` [PATCH v2 16/24] man/man7/unix.7: Autobind: Fix when it happens, and mention SO_PASSPIDFD Günther Noack
2026-10-18 17:37 ` [PATCH v2 17/24] man/man7/unix.7: SOCK_RAW is accepted as an alias for SOCK_DGRAM Günther Noack
2026-10-18 17:37 ` [PATCH v2 18/24] man/man7/unix.7: SCM_SECURITY: This is not specific to SELinux Günther Noack
2026-10-18 17:37 ` [PATCH v2 19/24] man/man7/unix.7: SO_PASSSEC: wfix Günther Noack
2026-10-18 17:37 ` [PATCH v2 20/24] man/man7/unix.7: ERRORS: Document EACCES, EAGAIN, EMSGSIZE, ENOSPC, and EPERM Günther Noack
2026-10-18 17:37 ` [PATCH v2 21/24] man/man7/unix.7: Abstract sockets are scoped to a network namespace Günther Noack
2026-10-18 17:37 ` [PATCH v2 22/24] man/man7/unix.7: Remove mentions of unsupported out-of-band messaging Günther Noack
2026-10-18 17:37 ` [PATCH v2 23/24] man/man7/unix.7: Document SO_PASSPIDFD, SO_PEERPIDFD, and SCM_PIDFD Günther Noack
2026-10-18 17:37 ` [PATCH v2 24/24] man/man7/unix.7: Document SO_PASSRIGHTS Günther Noack
2026-10-18 18:37 ` [PATCH v2 00/24] Documentation fixes in unix(7) Kuniyuki Iwashima
2026-10-19 7:05 ` Alejandro Colomar
2026-10-19 8:48 ` Günther Noack
2026-10-19 12:07 ` the meaning of "ffix" (was: [PATCH v2 00/24] Documentation fixes in unix(7)) G. Branden Robinson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261018173712.27670-6-gnoack3000@gmail.com \
--to=gnoack3000@gmail.com \
--cc=alx@kernel.org \
--cc=kuniyu@google.com \
--cc=ldv@strace.io \
--cc=linux-man@vger.kernel.org \
--cc=mtk.manpages@gmail.com \
--cc=xemul@virtuozzo.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox