Linux Manual Pages development
 help / color / mirror / Atom feed
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

  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