On Mon, Oct 24, 2022 at 03:33:13PM +0200, Jakub Sitnicki wrote: > On Tue, Oct 18, 2022 at 11:13 AM -07, sdf@xxxxxxxxxx wrote: > > On 10/17, Cong Wang wrote: > >> From: Cong Wang <cong.wang@xxxxxxxxxxxxx> > > > >> Technically we don't need lock the sock in the psock work, but we > >> need to prevent this work running in parallel with sock_map_close(). > > > >> With this, we no longer need to wait for the psock->work synchronously, > >> because when we reach here, either this work is still pending, or > >> blocking on the lock_sock(), or it is completed. We only need to cancel > >> the first case asynchronously, and we need to bail out the second case > >> quickly by checking SK_PSOCK_TX_ENABLED bit. > > > >> Fixes: 799aa7f98d53 ("skmsg: Avoid lock_sock() in sk_psock_backlog()") > >> Reported-by: Stanislav Fomichev <sdf@xxxxxxxxxx> > >> Cc: John Fastabend <john.fastabend@xxxxxxxxx> > >> Cc: Jakub Sitnicki <jakub@xxxxxxxxxxxxxx> > >> Signed-off-by: Cong Wang <cong.wang@xxxxxxxxxxxxx> > > > > This seems to remove the splat for me: > > > > Tested-by: Stanislav Fomichev <sdf@xxxxxxxxxx> > > > > The patch looks good, but I'll leave the review to Jakub/John. > > I can't poke any holes in it either. > > However, it is harder for me to follow than the initial idea [1]. > So I'm wondering if there was anything wrong with it? It caused a warning in sk_stream_kill_queues() when I actually tested it (after posting). > > This seems like a step back when comes to simplifying locking in > sk_psock_backlog() that was done in 799aa7f98d53. Kinda, but it is still true that this sock lock is not for sk_socket (merely for closing this race condition). Thanks.