All of lore.kernel.org
 help / color / mirror / Atom feed
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>,
	"Kuniyuki Iwashima" <kuniyu@google.com>,
	"Willem de Bruijn" <willemb@google.com>
Subject: [PATCH 24/24] man/man7/unix.7: Document SO_PASSRIGHTS
Date: Fri, 16 Oct 2026 19:31:39 +0200	[thread overview]
Message-ID: <20261016173139.13076-25-gnoack3000@gmail.com> (raw)
In-Reply-To: <20261016173139.13076-1-gnoack3000@gmail.com>

SO_PASSRIGHTS was added in linux.git 77cbe1a6d873 (2025-05-19;
"af_unix: Introduce SO_PASSRIGHTS."), in Linux 6.16.  It lets a
receiver refuse file descriptors passed with SCM_RIGHTS, so that an
untrusted peer cannot leave it with file descriptors whose final
close() blocks for a long time (for example, a file on a hung NFS
mount or a FUSE-controlled file).

The option is enabled by default (unix_create1()).  When the receiving
socket has it disabled, unix_dgram_sendmsg(), unix_stream_sendmsg(),
and queue_oob() fail with EPERM if the message carries file
descriptors.  The check happens at send time, so messages that are
already queued are unaffected.

Also add the new EPERM case to ERRORS.

Link: <https://uapi-group.org/kernel-features/#disabling-reception-of-scm_rights-for-af_unix-sockets>
Cc: Kuniyuki Iwashima <kuniyu@google.com>
Cc: Willem de Bruijn <willemb@google.com>
Assisted-by: LLM
Signed-off-by: Günther Noack <gnoack3000@gmail.com>
---
 man/man7/unix.7 | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/man/man7/unix.7 b/man/man7/unix.7
index 6283d455ffa9..fe3feaced07a 100644
--- a/man/man7/unix.7
+++ b/man/man7/unix.7
@@ -343,6 +343,35 @@ and returned as the result of
 .BR getsockopt (2)
 is an integer boolean flag.
 .TP
+.BR SO_PASSRIGHTS " (since Linux 6.16)"
+.\" commit 77cbe1a6d8730a07f99f9263c2d5f2304cf5e830
+This socket option controls whether the socket accepts
+file descriptors from its peers in
+.B SCM_RIGHTS
+ancillary messages (see below).
+It is enabled by default.
+When it is disabled,
+.BR sendmsg (2)
+calls that pass file descriptors to this socket
+fail with the error
+.BR EPERM .
+The option is checked when the message is sent;
+disabling it does not affect messages
+that are already queued on the socket.
+.IP
+Processes that do not expect to receive file descriptors
+can disable this option.
+Once the file descriptors have been passed,
+closing them is the responsibility of the receiving process,
+and this may block for a long time,
+for example for a file on an unresponsive network file system.
+.IP
+The value given as an argument to
+.BR setsockopt (2)
+and returned as the result of
+.BR getsockopt (2)
+is an integer boolean flag.
+.TP
 .B SO_PASSSEC
 Enables receiving of the security context of the peer socket
 in an ancillary message of type
@@ -886,6 +915,14 @@ or
 specified a datagram socket as the remote address,
 but that socket is connected to a different socket.
 .TP
+.B EPERM
+The sender passed file descriptors in an
+.B SCM_RIGHTS
+ancillary message,
+but the receiving socket has the
+.B SO_PASSRIGHTS
+option disabled.
+.TP
 .B EPIPE
 Remote socket was closed on a stream socket.
 If enabled, a
-- 
2.56.0


      parent reply	other threads:[~2026-10-16 17:33 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-16 17:31 [PATCH 00/24] Documentation fixes in unix(7) Günther Noack
2026-10-16 17:31 ` [PATCH 01/24] man/man7/unix.7: ERRORS: EINVAL: The address field is sun_family, not sun_type Günther Noack
2026-10-16 17:31 ` [PATCH 02/24] man/man7/unix.7: Socket options: SOL_SOCKET is a level, not a family Günther Noack
2026-10-16 17:31 ` [PATCH 03/24] man/man7/unix.7: SO_PASSCRED: ffix Günther Noack
2026-10-16 17:31 ` [PATCH 04/24] man/man7/sock_diag.7: Fix member order of struct unix_diag_vfs Günther Noack
2026-10-16 17:31 ` [PATCH 05/24] man/man7/sock_diag.7: udiag_wqueue: This is memory in use, not memory available Günther Noack
2026-10-16 17:31 ` [PATCH 06/24] man/man7/unix.7: ERRORS: EPROTONOSUPPORT: Protocol 0 is also accepted Günther Noack
2026-10-16 17:31 ` [PATCH 07/24] man/man7/unix.7: ERRORS: ETOOMANYREFS: Fix the conditions Günther Noack
2026-10-16 17:31 ` [PATCH 08/24] man/man7/socket.7: SO_PEEK_OFF: This option is no longer specific to unix(7) Günther Noack
2026-10-16 17:31 ` [PATCH 09/24] man/man7/unix.7: SO_PEERCRED: Also works for SOCK_SEQPACKET Günther Noack
2026-10-16 17:31 ` [PATCH 10/24] man/man7/unix.7: SIOCINQ: Document behavior " Günther Noack
2026-10-16 17:31 ` [PATCH 11/24] man/man7/sock_diag.7: udiag_states: Document TCP_CLOSE Günther Noack
2026-10-16 17:31 ` [PATCH 12/24] man/man7/sock_diag.7: UNIX_DIAG_NAME: The payload is not always a pathname Günther Noack
2026-10-16 17:31 ` [PATCH 13/24] man/man7/sock_diag.7: Document UDIAG_SHOW_UID Günther Noack
2026-10-16 17:31 ` [PATCH 14/24] man/man7/unix.7: Several items of the same type may be sent in one message Günther Noack
2026-10-16 17:31 ` [PATCH 15/24] man/man2/bind.2: ERRORS: EACCES: Write permission on the directory is required Günther Noack
2026-10-16 17:31 ` [PATCH 16/24] man/man7/unix.7: Autobind: Fix when it happens, and mention SO_PASSPIDFD Günther Noack
2026-10-16 17:31 ` [PATCH 17/24] man/man7/unix.7: SOCK_RAW is accepted as an alias for SOCK_DGRAM Günther Noack
2026-10-16 17:31 ` [PATCH 18/24] man/man7/unix.7: SCM_SECURITY: This is not specific to SELinux Günther Noack
2026-10-16 17:31 ` [PATCH 19/24] man/man7/unix.7: SO_PASSSEC: wfix Günther Noack
2026-10-16 17:31 ` [PATCH 20/24] man/man7/unix.7: ERRORS: Document EACCES, EAGAIN, EMSGSIZE, ENOSPC, and EPERM Günther Noack
2026-10-16 17:31 ` [PATCH 21/24] man/man7/unix.7: Abstract sockets are scoped to a network namespace Günther Noack
2026-10-16 17:31 ` [PATCH 22/24] man/man7/unix.7: Remove mentions of unsupported out-of-band messaging Günther Noack
2026-10-16 17:31 ` [PATCH 23/24] man/man7/unix.7: Document SO_PASSPIDFD, SO_PEERPIDFD, and SCM_PIDFD Günther Noack
2026-10-16 17:31 ` 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=20261016173139.13076-25-gnoack3000@gmail.com \
    --to=gnoack3000@gmail.com \
    --cc=alx@kernel.org \
    --cc=kuniyu@google.com \
    --cc=linux-man@vger.kernel.org \
    --cc=willemb@google.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.