Re: [PATCH v3 net-next 3/8] sctp: Don't call sk->sk_prot->init() in sctp_v[46]_create_accept_sk().
Xin Long <[email protected]>
| Newsgroups | org.kernel.vger.linux-sctp,org.kernel.vger.netdev |
|---|---|
| Message-ID | <CADvbK_dWdj5WNWZ82WWCwie6SWidKoWzqWEpzLinm-186x6Tbw@mail.gmail.com> |
On Thu, Oct 23, 2025 at 7:17 PM Kuniyuki Iwashima <[email protected]> wrote: > > sctp_accept() calls sctp_v[46]_create_accept_sk() to allocate a new > socket and calls sctp_sock_migrate() to copy fields from the parent > socket to the new socket. > > sctp_v[46]_create_accept_sk() calls sctp_init_sock() to initialise > sctp_sock, but most fields are overwritten by sctp_copy_descendant() > called from sctp_sock_migrate(). > > Things done in sctp_init_sock() but not in sctp_sock_migrate() are > the following: > > 1. Copy sk->sk_gso > 2. Copy sk->sk_destruct (sctp_v6_init_sock()) > 3. Allocate sctp_sock.ep > 4. Initialise sctp_sock.pd_lobby > 5. Count sk_sockets_allocated_inc(), sock_prot_inuse_add(), > and SCTP_DBG_OBJCNT_INC() > > Let's do these in sctp_copy_sock() and sctp_sock_migrate() and avoid > calling sk->sk_prot->init() in sctp_v[46]_create_accept_sk(). > > Note that sk->sk_destruct is already copied in sctp_copy_sock(). > > Signed-off-by: Kuniyuki Iwashima <[email protected]> Acked-by: Xin Long <[email protected]>