diff --git a/[refs] b/[refs] index 3024de41c33a..f74034c07d20 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 373a83a6997bfdaf767f6a65fc5cc0054b246984 +refs/heads/master: dd1f4078f0d2de74a308f00a2dffbd550cfba59f diff --git a/trunk/drivers/vhost/net.c b/trunk/drivers/vhost/net.c index cd36f5ff2255..0868569d7124 100644 --- a/trunk/drivers/vhost/net.c +++ b/trunk/drivers/vhost/net.c @@ -519,13 +519,12 @@ static long vhost_net_set_backend(struct vhost_net *n, unsigned index, int fd) /* start polling new socket */ oldsock = vq->private_data; - if (sock == oldsock) - goto done; + if (sock != oldsock){ + vhost_net_disable_vq(n, vq); + rcu_assign_pointer(vq->private_data, sock); + vhost_net_enable_vq(n, vq); + } - vhost_net_disable_vq(n, vq); - rcu_assign_pointer(vq->private_data, sock); - vhost_net_enable_vq(n, vq); -done: if (oldsock) { vhost_net_flush_vq(n, index); fput(oldsock->file);