> On Dec 8, 2016, at 6:12 PM, Peng Tao <bergwolf@xxxxxxxxx> wrote: > > Otherwise we'll leave the packets queued until releasing vsock device. > E.g., if guest is slow to start up, resulting ETIMEDOUT on connect, guest > will get the connect requests from failed host sockets. > > Reviewed-by: Stefan Hajnoczi <stefanha@xxxxxxxxxx> > Signed-off-by: Peng Tao <bergwolf@xxxxxxxxx> > --- > net/vmw_vsock/af_vsock.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c > index 8a398b3..c73b03a 100644 > --- a/net/vmw_vsock/af_vsock.c > +++ b/net/vmw_vsock/af_vsock.c > @@ -1101,10 +1101,19 @@ static const struct proto_ops vsock_dgram_ops = { > .sendpage = sock_no_sendpage, > }; > > +static int vsock_transport_cancel_pkt(struct vsock_sock *vsk) > +{ > + if (!transport->cancel_pkt) > + return -EOPNOTSUPP; > + > + return transport->cancel_pkt(vsk); > +} > + > static void vsock_connect_timeout(struct work_struct *work) > { > struct sock *sk; > struct vsock_sock *vsk; > + int cancel = 0; > > vsk = container_of(work, struct vsock_sock, dwork.work); > sk = sk_vsock(vsk); > @@ -1115,8 +1124,11 @@ static void vsock_connect_timeout(struct work_struct *work) > sk->sk_state = SS_UNCONNECTED; > sk->sk_err = ETIMEDOUT; > sk->sk_error_report(sk); > + cancel = 1; > } > release_sock(sk); > + if (cancel) > + vsock_transport_cancel_pkt(vsk); > > sock_put(sk); > } > @@ -1223,11 +1235,13 @@ static int vsock_stream_connect(struct socket *sock, struct sockaddr *addr, > err = sock_intr_errno(timeout); > sk->sk_state = SS_UNCONNECTED; > sock->state = SS_UNCONNECTED; > + vsock_transport_cancel_pkt(vsk); > goto out_wait; > } else if (timeout == 0) { > err = -ETIMEDOUT; > sk->sk_state = SS_UNCONNECTED; > sock->state = SS_UNCONNECTED; > + vsock_transport_cancel_pkt(vsk); > goto out_wait; > } > > -- > 2.7.4 > This looks fine to me: Reviewed-by: Jorgen Hansen <jhansen@xxxxxxxxxx> _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization