diff --git a/vm-virtio/src/vsock/csm/connection.rs b/vm-virtio/src/vsock/csm/connection.rs index 0c143318c..4735b4b27 100644 --- a/vm-virtio/src/vsock/csm/connection.rs +++ b/vm-virtio/src/vsock/csm/connection.rs @@ -454,7 +454,13 @@ where "vsock: error flushing TX buf for (lp={}, pp={}): {:?}", self.local_port, self.peer_port, err ); - self.kill(); + match err { + Error::TxBufFlush(inner) if inner.kind() == ErrorKind::WouldBlock => { + // This should never happen (EWOULDBLOCK after EPOLLOUT), but + // it does, so let's absorb it. + } + _ => self.kill(), + }; 0 }); self.fwd_cnt += Wrapping(flushed as u32);