From: "Günther Noack" <gnoack3000@gmail.com>
To: Alejandro Colomar <alx@kernel.org>
Cc: linux-man@vger.kernel.org,
Michael Kerrisk <mtk.manpages@gmail.com>,
Kuniyuki Iwashima <kuniyu@google.com>
Subject: Re: [PATCH 2/7] man/man7/unix.7: Multiple same-typed SCM_* messages may be sent in one message
Date: Fri, 23 Oct 2026 19:09:26 +0200 [thread overview]
Message-ID: <20261023.23c5bcea7fc6@gnoack.org> (raw)
In-Reply-To: <atp-nJT72YOgvnw4@debian>
Hello Alejandro!
On Thu, Oct 22, 2026 at 11:28:12PM +0200, Alejandro Colomar wrote:
> > Date: 2026-10-21 23:22:51+0200
> > From: Günther Noack <gnoack3000@gmail.com>
> >
> > Verified in Linux kernel code:
>
> I think 'verified' in a commit message seems inappropriate. It should
> describe, rather than verify, and the verification would come only from
> the review tags. Maybe say something like "Relevant kernel code:".
Good point, replaced. I'll double check the other commits as well.
> > __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
>
> Since these are your comments, and not actual comments in the source
> code (are they yours, or from the LLM?), I'd format them clearly as
> such using invalid code rather than comments:
>
> ... replace previously set credentials ...
Done.
Yes, I transcribed the source code by hand here, including these
comments.
> > 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.
>
> Is 'takes effect' appropriate? I think 'is sent' might be more
> appropriate, right? There's nothing taking effect, I think (but I'm not
> an expert in SCM_* stuff).
You are right, "takes effect" is maybe too much described from the
angle of the implementation - I replaced it with "is sent".
What's happening is that the sender process specifies the "struct
ucred", which contains a pid, uid and gid in the SCM_CREDENTIALS
control message. When the kernel deals with these, it *checks* that
they are valid (they describe the sending process *OR* the sending
process is privileged and can send what it wants). Only the last of
these SCM_CREDENTIALS messages survives that processing though and the
receiving process then only sees that last one.
Thanks for the review!
–Günther
next prev parent reply other threads:[~2026-10-23 17:09 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 ` [PATCH 2/7] man/man7/unix.7: Multiple same-typed SCM_* messages may be sent in one message Günther Noack
2026-10-22 21:28 ` Alejandro Colomar
2026-10-23 17:09 ` Günther Noack [this message]
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=20261023.23c5bcea7fc6@gnoack.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox