diff options
| author | Kuniyuki Iwashima <[email protected]> | 2025-06-11 20:27:35 +0000 |
|---|---|---|
| committer | Jakub Kicinski <[email protected]> | 2025-06-12 15:13:06 +0000 |
| commit | 43fb2b30eea7cfc40214484935b026ec29838a91 (patch) | |
| tree | 54b31f4aa6315d9bfea2f50786829dddfdb55c80 /drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c | |
| parent | ipv6: Move fib6_config_validate() to ip6_route_add(). (diff) | |
| download | kernel-43fb2b30eea7cfc40214484935b026ec29838a91.tar.gz kernel-43fb2b30eea7cfc40214484935b026ec29838a91.zip | |
af_unix: Allow passing cred for embryo without SO_PASSCRED/SO_PASSPIDFD.
Before the cited commit, the kernel unconditionally embedded SCM
credentials to skb for embryo sockets even when both the sender
and listener disabled SO_PASSCRED and SO_PASSPIDFD.
Now, the credentials are added to skb only when configured by the
sender or the listener.
However, as reported in the link below, it caused a regression for
some programs that assume credentials are included in every skb,
but sometimes not now.
The only problematic scenario would be that a socket starts listening
before setting the option. Then, there will be 2 types of non-small
race window, where a client can send skb without credentials, which
the peer receives as an "invalid" message (and aborts the connection
it seems ?):
Client Server
------ ------
s1.listen() <-- No SO_PASS{CRED,PIDFD}
s2.connect()
s2.send() <-- w/o cred
s1.setsockopt(SO_PASS{CRED,PIDFD})
s2.send() <-- w/ cred
or
Client Server
------ ------
s1.listen() <-- No SO_PASS{CRED,PIDFD}
s2.connect()
s2.send() <-- w/o cred
s3, _ = s1.accept() <-- Inherit cred options
s2.send() <-- w/o cred but not set yet
s3.setsockopt(SO_PASS{CRED,PIDFD})
s2.send() <-- w/ cred
It's unfortunate that buggy programs depend on the behaviour,
but let's restore the previous behaviour.
Fixes: 3f84d577b79d ("af_unix: Inherit sk_flags at connect().")
Reported-by: Jacek Łuczak <[email protected]>
Closes: https://lore.kernel.org/all/[email protected]/
Signed-off-by: Kuniyuki Iwashima <[email protected]>
Tested-by: Christian Heusel <[email protected]>
Tested-by: André Almeida <[email protected]>
Tested-by: Jacek Łuczak <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Jakub Kicinski <[email protected]>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c')
0 files changed, 0 insertions, 0 deletions
