]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
af_unix: Remove put_pid()/put_cred() in copy_peercred().
authorKuniyuki Iwashima <kuniyu@amazon.com>
Thu, 20 Jun 2024 20:56:22 +0000 (13:56 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 Sep 2024 09:06:45 +0000 (11:06 +0200)
[ Upstream commit e4bd881d987121dbf1a288641491955a53d9f8f7 ]

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, the client's sk_peer_pid and sk_peer_cred are always NULL, so
we need not call put_pid() and put_cred() there.

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

index e2ff610d27760200a366324979290f5bd9fcc54d..b7e9c1238516f87558374eac3e313dbdb539dec7 100644 (file)
@@ -603,9 +603,6 @@ static void init_peercred(struct sock *sk)
 
 static void copy_peercred(struct sock *sk, struct sock *peersk)
 {
-       const struct cred *old_cred;
-       struct pid *old_pid;
-
        if (sk < peersk) {
                spin_lock(&sk->sk_peer_lock);
                spin_lock_nested(&peersk->sk_peer_lock, SINGLE_DEPTH_NESTING);
@@ -613,16 +610,12 @@ static void copy_peercred(struct sock *sk, struct sock *peersk)
                spin_lock(&peersk->sk_peer_lock);
                spin_lock_nested(&sk->sk_peer_lock, SINGLE_DEPTH_NESTING);
        }
-       old_pid = sk->sk_peer_pid;
-       old_cred = sk->sk_peer_cred;
+
        sk->sk_peer_pid  = get_pid(peersk->sk_peer_pid);
        sk->sk_peer_cred = get_cred(peersk->sk_peer_cred);
 
        spin_unlock(&sk->sk_peer_lock);
        spin_unlock(&peersk->sk_peer_lock);
-
-       put_pid(old_pid);
-       put_cred(old_cred);
 }
 
 static int unix_listen(struct socket *sock, int backlog)