]> www.infradead.org Git - users/dwmw2/linux.git/commit
af_unix: Don't use spin_lock_nested() in copy_peercred().
authorKuniyuki Iwashima <kuniyu@amazon.com>
Thu, 20 Jun 2024 20:56:23 +0000 (13:56 -0700)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 25 Jun 2024 09:10:19 +0000 (11:10 +0200)
commit22e5751b0524fedd4f345412d8d3394387471ab7
tree1fb44e4934b36a9e237bb5da8f98fe2d61869d6f
parente4bd881d987121dbf1a288641491955a53d9f8f7
af_unix: Don't use spin_lock_nested() in copy_peercred().

When (AF_UNIX, SOCK_STREAM) socket connect()s to a listening socket,
the listener's sk_peer_pid/sk_peer_cred are copied to the client in
copy_peercred().

Then, two sk_peer_locks are held there; one is client's and another
is listener's.

However, the latter is not needed because we hold the listner's
unix_state_lock() there and unix_listen() cannot update the cred
concurrently.

Let's drop the unnecessary spin_lock() and use the bare spin_lock()
for the client to protect concurrent read by getsockopt(SO_PEERCRED).

Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
net/unix/af_unix.c