mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
af_unix: Reuse out_pipe label in unix_stream_sendmsg().
This is a follow-up of commit d460b04bc4 ("af_unix: Clean up
error paths in unix_stream_sendmsg().").
If we initialise skb with NULL in unix_stream_sendmsg(), we can
reuse the existing out_pipe label for the SEND_SHUTDOWN check.
Let's rename it and adjust the existing label as out_pipe_lock.
While at it, size and data_len are moved to the while loop scope.
Suggested-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link: https://patch.msgid.link/20250116053441.5758-9-kuniyu@amazon.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
b3e365bbf4
commit
3b2d40dc13
@@ -2238,13 +2238,11 @@ static int unix_stream_sendmsg(struct socket *sock, struct msghdr *msg,
|
||||
size_t len)
|
||||
{
|
||||
struct sock *sk = sock->sk;
|
||||
struct sk_buff *skb = NULL;
|
||||
struct sock *other = NULL;
|
||||
int err, size;
|
||||
struct sk_buff *skb;
|
||||
int sent = 0;
|
||||
struct scm_cookie scm;
|
||||
bool fds_sent = false;
|
||||
int data_len;
|
||||
int err, sent = 0;
|
||||
|
||||
err = scm_send(sock, msg, &scm, false);
|
||||
if (err < 0)
|
||||
@@ -2273,16 +2271,12 @@ static int unix_stream_sendmsg(struct socket *sock, struct msghdr *msg,
|
||||
}
|
||||
}
|
||||
|
||||
if (READ_ONCE(sk->sk_shutdown) & SEND_SHUTDOWN) {
|
||||
if (!(msg->msg_flags & MSG_NOSIGNAL))
|
||||
send_sig(SIGPIPE, current, 0);
|
||||
|
||||
err = -EPIPE;
|
||||
goto out_err;
|
||||
}
|
||||
if (READ_ONCE(sk->sk_shutdown) & SEND_SHUTDOWN)
|
||||
goto out_pipe;
|
||||
|
||||
while (sent < len) {
|
||||
size = len - sent;
|
||||
int size = len - sent;
|
||||
int data_len;
|
||||
|
||||
if (unlikely(msg->msg_flags & MSG_SPLICE_PAGES)) {
|
||||
skb = sock_alloc_send_pskb(sk, 0, 0,
|
||||
@@ -2335,7 +2329,7 @@ static int unix_stream_sendmsg(struct socket *sock, struct msghdr *msg,
|
||||
|
||||
if (sock_flag(other, SOCK_DEAD) ||
|
||||
(other->sk_shutdown & RCV_SHUTDOWN))
|
||||
goto out_pipe;
|
||||
goto out_pipe_unlock;
|
||||
|
||||
maybe_add_creds(skb, sock, other);
|
||||
scm_stat_add(other, skb);
|
||||
@@ -2358,8 +2352,9 @@ static int unix_stream_sendmsg(struct socket *sock, struct msghdr *msg,
|
||||
|
||||
return sent;
|
||||
|
||||
out_pipe:
|
||||
out_pipe_unlock:
|
||||
unix_state_unlock(other);
|
||||
out_pipe:
|
||||
if (!sent && !(msg->msg_flags & MSG_NOSIGNAL))
|
||||
send_sig(SIGPIPE, current, 0);
|
||||
err = -EPIPE;
|
||||
|
||||
Reference in New Issue
Block a user