Linux Manual Pages development
 help / color / mirror / Atom feed
From: "Günther Noack" <gnoack3000@gmail.com>
To: Alejandro Colomar <alx+linux-man@kernel.org>
Cc: "Kuniyuki Iwashima" <kuniyu@google.com>,
	"Günther Noack" <gnoack3000@gmail.com>,
	linux-man@vger.kernel.org
Subject: [PATCH v2 6/6] man/man7/unix.7: ERRORS: Document EACCES, EAGAIN, EMSGSIZE, ENOSPC, and EPERM
Date: Tue,  3 Nov 2026 21:21:36 +0100	[thread overview]
Message-ID: <20261103202136.13574-7-gnoack3000@gmail.com> (raw)
In-Reply-To: <20261103202136.13574-1-gnoack3000@gmail.com>

These are all returned directly from linux.git net/unix/af_unix.c:

EACCES
	unix_find_bsd() checks path_permission(&path, MAY_WRITE) on the
	socket file of the remote address.  The rule was already described
	in prose, but the error was not listed.

EAGAIN
	unix_stream_connect() returns -EAGAIN when the listener's backlog
	is full and the socket is nonblocking (there is no EINPROGRESS for
	AF_UNIX).  unix_dgram_sendmsg() returns -EAGAIN when the receiver's
	queue is full and the send would block.

EMSGSIZE
	unix_dgram_sendmsg() fails if 'len > sk->sk_sndbuf - 32'.  This is
	the limit described in "Sockets API".

ENOSPC
	unix_autobind() fails when all 2^20 autobind names are taken.

EPERM
	unix_dgram_connect() and unix_dgram_sendmsg() fail if
	!unix_may_send(), that is, if the target datagram socket is
	connected to a socket other than the caller's.

	This is not something that the remote end normally does,
	but it's a possible corner case.

Cc: Kuniyuki Iwashima <kuniyu@google.com>
Assisted-by: LLM
Signed-off-by: Günther Noack <gnoack3000@gmail.com>
---

Notes:
    Verified in code.  Kept LLM wording, which seemed OK.
    
    Remark:
    
    The case where the remote end is connected to a different socket is
    obscure, but still possible with Unix Domain Sockets, when a program
    first bind(2)s to a name, and then connect(2)s to another name.  Then
    that socket can be discovered by another process through the bound
    name, but sending a dgram fails if the sender is not the one that that
    socket has connected to.

 man/man7/unix.7 | 36 ++++++++++++++++++++++++++++++++++--
 1 file changed, 34 insertions(+), 2 deletions(-)

diff --git a/man/man7/unix.7 b/man/man7/unix.7
index 762bf0d1fe08..2163a91514b9 100644
--- a/man/man7/unix.7
+++ b/man/man7/unix.7
@@ -645,9 +645,24 @@ .SS Ioctls
 .\" and it may well change, probably best not to document this now.
 .SH ERRORS
 .TP
+.B EACCES
+Write permission is denied on the socket file
+specified as the remote address to
+.BR connect (2)
+or
+.BR sendto (2)
+(see "Pathname socket ownership and permissions", above).
+.TP
 .B EADDRINUSE
-The specified local address is already in use or the filesystem socket
-object already exists.
+The specified local address is already in use
+or the file already exists.
+.TP
+.B EAGAIN
+The socket is nonblocking, and either
+.BR connect (2)
+was called on a stream or sequenced-packet socket
+and the backlog of the listening socket is full,
+or a datagram was sent to a socket whose receive queue is full.
 .TP
 .B EBADF
 This error can occur for
@@ -684,6 +699,11 @@ .SH ERRORS
 called on an already connected socket or a target address was
 specified on a connected socket.
 .TP
+.B EMSGSIZE
+The datagram to be sent is larger than the limit imposed by the
+.B SO_SNDBUF
+socket option (see "Sockets API", above).
+.TP
 .B ENFILE
 The system-wide limit on the total number of open files has been reached.
 .TP
@@ -695,6 +715,11 @@ .SH ERRORS
 .B ENOMEM
 Out of memory.
 .TP
+.B ENOSPC
+The socket was to be autobound,
+but all autobind addresses are in use
+(see "Autobind feature", above).
+.TP
 .B ENOTCONN
 Socket operation needs a target address, but the socket is not connected.
 .TP
@@ -706,6 +731,13 @@ .SH ERRORS
 The sender passed invalid credentials in the
 .IR "struct ucred" .
 .TP
+.B EPERM
+.BR connect (2)
+or
+.BR sendto (2)
+specified a datagram socket as the remote address,
+but that socket is connected to a different socket.
+.TP
 .B EPIPE
 Remote socket was closed on a stream socket.
 If enabled, a
-- 
2.56.0


      parent reply	other threads:[~2026-11-03 20:22 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-03 20:21 [PATCH v2 0/6] {unix,socket,bind}.7: General Unix Domain Socket fixes Günther Noack
2026-11-03 20:21 ` [PATCH v2 1/6] man/man7/socket.7: SO_PEEK_OFF: This option is no longer specific to unix(7) Günther Noack
2026-11-03 20:21 ` [PATCH v2 2/6] man/man7/unix.7: SO_PEERCRED: Also works for SOCK_SEQPACKET Günther Noack
2026-11-03 20:21 ` [PATCH v2 3/6] man/man7/unix.7: SIOCINQ: Document behavior " Günther Noack
2026-11-03 20:21 ` [PATCH v2 4/6] man/man7/unix.7: Explain Abstract UDS scoping to the network namespace Günther Noack
2026-11-03 20:21 ` [PATCH v2 5/6] man/man2/bind.2: ERRORS: EACCES: Write permission on the directory is required Günther Noack
2026-11-03 20:21 ` Günther Noack [this message]

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=20261103202136.13574-7-gnoack3000@gmail.com \
    --to=gnoack3000@gmail.com \
    --cc=alx+linux-man@kernel.org \
    --cc=kuniyu@google.com \
    --cc=linux-man@vger.kernel.org \
    /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