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>,
	"Michael Kerrisk" <mtk.manpages@gmail.com>,
	"Kuniyuki Iwashima" <kuniyu@google.com>
Subject: [PATCH 2/7] man/man7/unix.7: Multiple same-typed SCM_* messages may be sent in one message
Date: Wed, 21 Oct 2026 23:22:51 +0200	[thread overview]
Message-ID: <20261021212256.27961-3-gnoack3000@gmail.com> (raw)
In-Reply-To: <20261021212256.27961-1-gnoack3000@gmail.com>

Verified in Linux kernel code:

__scm_send() in linux.git net/core/scm.c walks all control messages
in a loop like this:

	for_each_cmsghdr(cmsg, msg) {
		// ...
		switch (cmsg->cmsg_type)
		{
		case SCM_RIGHTS:
			// Append(!) file descriptors
			// up to the SCM_MAX_FD limit
			break;
		case SCM_CREDENTIALS:
			// Replace previously set credentials
			break;
		default:
			goto error;
		}
	}

So it is possible to pass multiple SCM_* messages -- they will compose
if possible and override the previous value if not.  Since their
contents are being conflated that way, they will appear as one message
again on the receiving side.

Keep the recommendation as portability advice, and describe the Linux
behavior.

Fixes: 5b5cb1958062 (2018-07-10; "unix.7: When sending ancillary data, only one item of each type may be sent")
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:
    The factual analysis in the commit message is correct.
    
    I kept the LLM phrasing; it did not seem overly wordy to me and the
    style is in line with the paragraph after it, which also documents
    Linux-only vs. portable APIs that way.

 man/man7/unix.7 | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/man/man7/unix.7 b/man/man7/unix.7
index 0d2ea8bda2ae..a1dce8c47246 100644
--- a/man/man7/unix.7
+++ b/man/man7/unix.7
@@ -543,7 +543,24 @@ option must be enabled on the socket (see above).
 .P
 When sending ancillary data with
 .BR sendmsg (2),
-only one item of each of the above types may be included in the sent message.
+portable applications should include
+only one item of each of the above types in the sent message.
+On Linux,
+if several
+.B SCM_RIGHTS
+items are included,
+their file descriptors are combined into a single list,
+to which the
+.B SCM_MAX_FD
+limit applies as a whole,
+and the receiver gets them in a single
+.B SCM_RIGHTS
+item;
+if several
+.B SCM_CREDENTIALS
+items are included,
+each of them is checked,
+and the last one takes effect.
 .P
 At least one byte of real data should be sent when sending ancillary data.
 On Linux, this is required to successfully send ancillary data over
-- 
2.56.0


  parent reply	other threads:[~2026-10-21 21:23 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-21 21:22 [PATCH 0/7] unix.7: Socket Options and SCM_* fixes Günther Noack
2026-10-21 21:22 ` [PATCH 1/7] man/man7/unix.7: ERRORS: ETOOMANYREFS: Fix the conditions Günther Noack
2026-10-22 21:14   ` Alejandro Colomar
2026-10-23 16:50     ` Günther Noack
2026-10-24  4:45   ` Kuniyuki Iwashima
2026-10-21 21:22 ` Günther Noack [this message]
2026-10-22 21:28   ` [PATCH 2/7] man/man7/unix.7: Multiple same-typed SCM_* messages may be sent in one message Alejandro Colomar
2026-10-23 17:09     ` Günther Noack
2026-10-21 21:22 ` [PATCH 3/7] man/man7/unix.7: Autobind: Clarify when it happens, and mention SO_PASSPIDFD Günther Noack
2026-10-24  4:57   ` Kuniyuki Iwashima
2026-10-26 21:55     ` Günther Noack
2026-10-27  5:04       ` Kuniyuki Iwashima
2026-10-21 21:22 ` [PATCH 4/7] man/man7/unix.7: SCM_SECURITY: Generalize to other LSMs, not just SELinux Günther Noack
2026-10-23  9:57   ` Alejandro Colomar
2026-10-23 17:57     ` Günther Noack
2026-10-23 18:13       ` Alejandro Colomar
2026-10-26 22:41         ` Günther Noack
2026-10-27  8:54           ` Günther Noack
2026-10-27 21:46             ` Alejandro Colomar
2026-10-27 22:30               ` Günther Noack
2026-10-27 22:59                 ` Alejandro Colomar
2026-10-28  6:19                   ` Günther Noack
2026-10-28 12:45                     ` Alejandro Colomar
2026-10-27 16:32           ` Casey Schaufler
2026-10-27 21:52             ` Alejandro Colomar
2026-10-21 21:22 ` [PATCH 5/7] man/man7/unix.7: SO_PASSSEC: wfix Günther Noack
2026-10-24  5:02   ` Kuniyuki Iwashima
2026-10-24  8:36     ` Alejandro Colomar
2026-10-26 22:42       ` Günther Noack
2026-10-27  5:05         ` Kuniyuki Iwashima
2026-10-21 21:22 ` [PATCH 6/7] man/man7/unix.7: Document SO_PASSPIDFD, SO_PEERPIDFD, and SCM_PIDFD Günther Noack
2026-10-24  5:22   ` Kuniyuki Iwashima
2026-10-26 23:02     ` Günther Noack
2026-10-27  5:06       ` Kuniyuki Iwashima
2026-10-21 21:22 ` [PATCH 7/7] man/man7/unix.7: Document SO_PASSRIGHTS Günther Noack

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=20261021212256.27961-3-gnoack3000@gmail.com \
    --to=gnoack3000@gmail.com \
    --cc=alx@kernel.org \
    --cc=kuniyu@google.com \
    --cc=linux-man@vger.kernel.org \
    --cc=mtk.manpages@gmail.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.