Jakub Kicinski wrote: > Commit 8a59f9d1e3d4 ("sock: Introduce sk->sk_prot->psock_update_sk_prot()") > has moved the inet_csk_has_ulp(sk) check from sk_psock_init() to > the new tcp_bpf_update_proto() function. I'm guessing that this > was done to allow creating psocks for non-inet sockets. > > Unfortunately the destruction path for psock includes the ULP > unwind, so we need to fail the sk_psock_init() itself. > Otherwise if ULP is already present we'll notice that later, > and call tcp_update_ulp() with the sk_proto of the ULP > itself, which will most likely result in the ULP looping > its callbacks. > > Fixes: 8a59f9d1e3d4 ("sock: Introduce sk->sk_prot->psock_update_sk_prot()") > Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx> > --- > CC: john.fastabend@xxxxxxxxx > CC: jakub@xxxxxxxxxxxxxx > CC: yoshfuji@xxxxxxxxxxxxxx > CC: dsahern@xxxxxxxxxx > CC: ast@xxxxxxxxxx > CC: daniel@xxxxxxxxxxxxx > CC: andrii@xxxxxxxxxx > CC: kafai@xxxxxx > CC: songliubraving@xxxxxx > CC: yhs@xxxxxx > CC: kpsingh@xxxxxxxxxx > CC: borisp@xxxxxxxxxx > CC: cong.wang@xxxxxxxxxxxxx > CC: bpf@xxxxxxxxxxxxxxx > --- > include/net/inet_sock.h | 5 +++++ > net/core/skmsg.c | 5 +++++ > net/ipv4/tcp_bpf.c | 3 --- > net/tls/tls_main.c | 2 ++ > 4 files changed, 12 insertions(+), 3 deletions(-) Thanks Jakub this looks correct to me. I can't remember at the moment or dig up in the email or git why it was originally moved into the update logic. Maybe Cong can comment seeing it was his original patch? I seemed to have missed the error path on original review :( >From my side though, Reviewed-by: John Fastabend <john.fastabend@xxxxxxxxx>