Jakub Sitnicki wrote: > There is no need to clear psock->sk_proto when restoring socket protocol > callbacks in sk->sk_prot. The psock is about to get detached from the sock > and eventually destroyed. At worst we will restore the protocol callbacks > and the write callback twice. > > This makes reasoning about psock state easier. Once psock is initialized, > we can count on psock->sk_proto always being set. > > Signed-off-by: Jakub Sitnicki <jakub@xxxxxxxxxxxxxx> > --- > include/linux/skmsg.h | 8 +------- > 1 file changed, 1 insertion(+), 7 deletions(-) > > diff --git a/include/linux/skmsg.h b/include/linux/skmsg.h > index 8605947d6c08..d90ef61712a1 100644 > --- a/include/linux/skmsg.h > +++ b/include/linux/skmsg.h > @@ -359,13 +359,7 @@ static inline void sk_psock_restore_proto(struct sock *sk, > struct sk_psock *psock) > { > sk->sk_prot->unhash = psock->saved_unhash; > - > - if (psock->sk_proto) { > - tcp_update_ulp(sk, psock->sk_proto, psock->saved_write_space); > - psock->sk_proto = NULL; > - } else { > - sk->sk_write_space = psock->saved_write_space; > - } > + tcp_update_ulp(sk, psock->sk_proto, psock->saved_write_space); > } > > static inline void sk_psock_set_state(struct sk_psock *psock, > -- > 2.24.1 > Agreed, also the next line in sk_psock_drop is to NULL user data so the psock will no longer be attached as far as the sock is concerned. Acked-by: John Fastabend <john.fastabend@xxxxxxxxx>