]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
sctp: Don't copy sk_sndbuf and sk_rcvbuf in sctp_sock_migrate().
authorKuniyuki Iwashima <kuniyu@google.com>
Thu, 23 Oct 2025 23:16:51 +0000 (23:16 +0000)
committerJakub Kicinski <kuba@kernel.org>
Tue, 28 Oct 2025 01:04:57 +0000 (18:04 -0700)
sctp_sock_migrate() is called from 2 places.

1) sctp_accept() calls sp->pf->create_accept_sk() before
   sctp_sock_migrate(), and sp->pf->create_accept_sk() calls
   sctp_copy_sock().

2) sctp_do_peeloff() also calls sctp_copy_sock() before
   sctp_sock_migrate().

sctp_copy_sock() copies sk_sndbuf and sk_rcvbuf from the
parent socket.

Let's not copy the two fields in sctp_sock_migrate().

Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
Acked-by: Xin Long <lucien.xin@gmail.com>
Link: https://patch.msgid.link/20251023231751.4168390-3-kuniyu@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/sctp/socket.c

index d190e75e46454ad85e912a822ebc14b5224a3156..735b1222af955888760f827e6257866fe30906da 100644 (file)
@@ -9523,12 +9523,9 @@ static int sctp_sock_migrate(struct sock *oldsk, struct sock *newsk,
        struct sctp_bind_hashbucket *head;
        int err;
 
-       /* Migrate socket buffer sizes and all the socket level options to the
-        * new socket.
+       /* Migrate all the socket level options to the new socket.
+        * Brute force copy old sctp opt.
         */
-       newsk->sk_sndbuf = oldsk->sk_sndbuf;
-       newsk->sk_rcvbuf = oldsk->sk_rcvbuf;
-       /* Brute force copy old sctp opt. */
        sctp_copy_descendant(newsk, oldsk);
 
        /* Restore the ep value that was overwritten with the above structure