On Mon, Jun 28, 2021 at 01:04:12PM +0300, Arseny Krasnov wrote: >Add special callback for SEQPACKET socket which is called when >we need to drop current in-progress record: part of record was >copied successfully, reader wait rest of record, but signal >interrupts it and reader leaves it's loop, leaving packets of >current record still in queue. So to avoid copy of "orphaned" >record, we tell transport to drop every packet until EOR will >be found. > >Signed-off-by: Arseny Krasnov <arseny.krasnov@xxxxxxxxxxxxx> >--- > include/net/af_vsock.h | 1 + > net/vmw_vsock/af_vsock.c | 1 + > 2 files changed, 2 insertions(+) And also for this change, I think you can merge with patches 12, 13, 14, 15, otherwise if we bisect and we build at this patch, the seqpacket_drop pointer is not valid. Thanks, Stefano > >diff --git a/include/net/af_vsock.h b/include/net/af_vsock.h >index 1747c0b564ef..356878aabbd4 100644 >--- a/include/net/af_vsock.h >+++ b/include/net/af_vsock.h >@@ -141,6 +141,7 @@ struct vsock_transport { > int (*seqpacket_enqueue)(struct vsock_sock *vsk, struct msghdr *msg, > size_t len); > bool (*seqpacket_allow)(u32 remote_cid); >+ void (*seqpacket_drop)(struct vsock_sock *vsk); > > /* Notification. */ > int (*notify_poll_in)(struct vsock_sock *, size_t, bool *); >diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c >index ec54e4222cbf..27fa38090e13 100644 >--- a/net/vmw_vsock/af_vsock.c >+++ b/net/vmw_vsock/af_vsock.c >@@ -2024,6 +2024,7 @@ static int __vsock_seqpacket_recvmsg(struct sock *sk, struct msghdr *msg, > intr_err = vsock_connectible_wait_data(sk, &wait, timeout, NULL, 0); > if (intr_err <= 0) { > err = intr_err; >+ transport->seqpacket_drop(vsk); > break; > } > >-- >2.25.1 >