diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c
index 91a324cc22982510bbb27420fdefd6bbd95dc37c..ad37da2b6cb5bba78ac91664d93088f7ec2fb59c 100644
--- a/drivers/vhost/net.c
+++ b/drivers/vhost/net.c
@@ -114,8 +114,12 @@ static void handle_tx(struct vhost_net *net)
 		return;
 
 	wmem = atomic_read(&sock->sk->sk_wmem_alloc);
-	if (wmem >= sock->sk->sk_sndbuf)
+	if (wmem >= sock->sk->sk_sndbuf) {
+		mutex_lock(&vq->mutex);
+		tx_poll_start(net, sock);
+		mutex_unlock(&vq->mutex);
 		return;
+	}
 
 	use_mm(net->dev.mm);
 	mutex_lock(&vq->mutex);