From: Lorenz Bauer <lmb@xxxxxxxxxxxxx> Date: Wed, 9 Aug 2023 17:55:02 +0100 > On Wed, Aug 9, 2023 at 4:56 PM Kuniyuki Iwashima <kuniyu@xxxxxxxxxx> wrote: > > > > > Things we could do if necessary: > > > 1. Reset the flag in inet_csk_clone_lock like we do for SOCK_RCU_FREE > > > > I think we can't do this as sk_reuseport is inherited to twsk and used > > in inet_bind_conflict(). > > Ok, so what kind of state does reuseport carry in the various states then? > > TCP_LISTEN: sk_reuseport && sk_reuseport_cb > TCP_ESTABLISHED: sk_reuseport && !sk_reuseport_cb > TCP_TIME_WAIT: sk_reuseport && !sk_reuseport_cb > > Where is sk_reuseport_cb cleared? On clone? Or not at all? sk_clone_lock() does when cloning sk from listener, and we cannot check sk_reuseport_cb for twsk as it doesn't have the member. > > > > 2. Duplicate the cb check into inet[6]_steal_sock > > > > or 3. Add sk_fullsock() test ? > > I guess this would be in addition to the convoluted series of checks > I've removed in this patch? Yes.