]> Git Repo - linux.git/commitdiff
af_unix: Reuse out_pipe label in unix_stream_sendmsg().
authorKuniyuki Iwashima <[email protected]>
Thu, 16 Jan 2025 05:34:41 +0000 (14:34 +0900)
committerJakub Kicinski <[email protected]>
Mon, 20 Jan 2025 19:27:42 +0000 (11:27 -0800)
This is a follow-up of commit d460b04bc452 ("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 <[email protected]>
Signed-off-by: Kuniyuki Iwashima <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Jakub Kicinski <[email protected]>
net/unix/af_unix.c

index 5e1b408c19daf6868d36dc52508cdef9e9b5d982..43a45cf06f2e8b40f832e9dcb35ac51d467b4871 100644 (file)
@@ -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;
This page took 0.063897 seconds and 4 git commands to generate.