Re: [REGRESSION] af_unix: Introduce SO_PASSRIGHTS - break OpenGL

From: Christian Heusel
Date: Wed Jun 11 2025 - 13:17:03 EST


On 25/06/11 09:42AM, Kuniyuki Iwashima wrote:
> From: Christian Heusel <christian@xxxxxxxxx>
> Date: Wed, 11 Jun 2025 13:46:01 +0200
> > On 25/06/10 09:22PM, Jacek Łuczak wrote:
> > > Hi,
> >
> > Hey,
> >
> > > Bisection points to:
> > > [3f84d577b79d2fce8221244f2509734940609ca6] af_unix: Inherit sk_flags
> > > at connect().
> >
> > I'm also suffering from an issue that I have bisected to the same commit,
> > although in a totally different environment and with other reproduction
> > steps: For me the Xorg server crashes as soon as I re-plug my laptops
> > power chord and afterwards I can only switch to a TTY to debug. No
> > errors are logged in the dmesg.
> >
> > I can also confirm that reverting the patch on top of 6.16-rc1 fixes the
> > issue for me (thanks for coming up with the revert to Naim from the
> > CachyOS team!).
> >
> > My xorg version is 21.1.16-1 on Arch Linux and I have attached the
> > revert, my xorg log from the crash and bisection log to this mail!
> >
> > I'll also CC a few of the netdev people that might have further insights
> > for this issue!
> >
> > > Reverting entire SO_PASSRIGHTS fixes the issue.
>
> Thanks for the report.
>
> Could you test the diff below ?

It seems like the patch you posted has fixed the issue for me, thanks
for the lightning-fast answer!

> look like some programs start listen()ing before setting
> SO_PASSCRED or SO_PASSPIDFD and there's a small race window.
>
> ---8<---
> diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
> index fd6b5e17f6c4..87439d7f965d 100644
> --- a/net/unix/af_unix.c
> +++ b/net/unix/af_unix.c
> @@ -1971,7 +1971,8 @@ static void unix_maybe_add_creds(struct sk_buff *skb, const struct sock *sk,
> if (UNIXCB(skb).pid)
> return;
>
> - if (unix_may_passcred(sk) || unix_may_passcred(other)) {
> + if (unix_may_passcred(sk) || unix_may_passcred(other) ||
> + !other->sk_socket) {
> UNIXCB(skb).pid = get_pid(task_tgid(current));
> current_uid_gid(&UNIXCB(skb).uid, &UNIXCB(skb).gid);
> }
> ---8<---

Have a great week everyone!
Chris

Attachment: signature.asc
Description: PGP signature