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

From: Kuniyuki Iwashima
Date: Wed Sep 17 2025 - 14:43:25 EST


From: brian.scott.sampson@xxxxxxxxx
Date: Wed, 17 Sep 2025 09:40:22 -0500
> > Could you test it with this diff and see if 2 or 3 splats are logged
> > in dmesg ? and in that case, please share the stack traces.
> >
> > I expect this won't trigger the black screen and you can check dmesg
> > after resume.
> >
> > Thanks!
> >
> >
> Good morning/afternoon. Applied this patch to the latest mainline, but
> still see the black screen upon trying to resume after suspend. The
> keyboard looks to be unresponsive, as trying to switch to a tty
> terminal or back doesn't result in anything happening(as well as
> numlock/caps not being responsive either). I also tried using the power
> button, as well as closing/reopening the laptop lid to see if I could
> trigger resume.
>
> Checked the systemd journal just in case, but no splats or anything
> else is recorded after the suspend. Finally, attempted following dmesg
> with -Wh to a text file before suspending, but that also doesn't record
> any new input after the suspend.

Thanks for testing the painful scenario.

Could you apply this on top of the previous diff and give it
another shot ?

I think the application hit a race similar to one in 43fb2b30eea7.

---8<---
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
index 6d7c110814ff..b6ff7ad0443a 100644
--- a/net/unix/af_unix.c
+++ b/net/unix/af_unix.c
@@ -815,7 +815,8 @@ static void copy_peercred(struct sock *sk, struct sock *peersk)

static bool unix_may_passcred(const struct sock *sk)
{
- return sk->sk_scm_credentials || sk->sk_scm_pidfd;
+ WARN_ON_ONCE(!sk->sk_scm_credentials && sk->sk_scm_parent_cred);
+ return sk->sk_scm_credentials || sk->sk_scm_pidfd || sk->sk_scm_parent_cred;
}

static int unix_listen(struct socket *sock, int backlog)
---8<---