[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250917184307.999737-1-kuniyu@google.com>
Date: Wed, 17 Sep 2025 18:42:58 +0000
From: Kuniyuki Iwashima <kuniyu@...gle.com>
To: brian.scott.sampson@...il.com
Cc: christian@...sel.eu, davem@...emloft.net, difrost.kernel@...il.com,
dnaim@...hyos.org, edumazet@...gle.com, horms@...nel.org, kuba@...nel.org,
kuni1840@...il.com, kuniyu@...gle.com, linux-kernel@...r.kernel.org,
mario.limonciello@....com, netdev@...r.kernel.org, pabeni@...hat.com,
regressions@...ts.linux.dev
Subject: Re: [REGRESSION] af_unix: Introduce SO_PASSRIGHTS - break OpenGL
From: brian.scott.sampson@...il.com
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<---
Powered by blists - more mailing lists