af_unix: Move !sunaddr case in unix_dgram_sendmsg().

When other is NULL in unix_dgram_sendmsg(), we check if sunaddr
is NULL before looking up a receiver socket.

There are three paths going through the check, but it's always
false for 2 out of the 3 paths: the first socket lookup and the
second 'goto restart'.

The condition can be true for the first 'goto restart' only when
SOCK_DEAD is flagged for the socket found with msg->msg_name.

Let's move the check to the single appropriate path.

Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
Kuniyuki Iwashima 2024-12-13 20:08:44 +09:00 committed by Paolo Abeni
parent 001a25088c
commit f4dd63165b

View File

@ -2046,11 +2046,6 @@ static int unix_dgram_sendmsg(struct socket *sock, struct msghdr *msg,
restart:
if (!other) {
if (!sunaddr) {
err = -ECONNRESET;
goto out_free;
}
other = unix_find_other(sock_net(sk), sunaddr, msg->msg_namelen,
sk->sk_type);
if (IS_ERR(other)) {
@ -2105,6 +2100,9 @@ restart_locked:
err = -ECONNREFUSED;
} else {
unix_state_unlock(sk);
if (!sunaddr)
err = -ECONNRESET;
}
other = NULL;