vhost_net: zerocopy: fix possible NULL pointer dereference of vq->bufs
authorJason Wang <jasowang@redhat.com>
Wed, 2 May 2012 03:42:23 +0000 (11:42 +0800)
committerMichael S. Tsirkin <mst@redhat.com>
Wed, 2 May 2012 15:22:22 +0000 (18:22 +0300)
When we want to disable vhost_net backend while there's a tx work, a possible
NULL pointer defernece may happen we we try to deference the vq->bufs after
vhost_net_set_backend() assign a NULL to it.

As suggested by Michael, fix this by checking the vq->bufs instead of
vhost_sock_zcopy().

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
drivers/vhost/net.c

index 1f21d2a..35abe90 100644 (file)
@@ -166,7 +166,7 @@ static void handle_tx(struct vhost_net *net)
        if (wmem < sock->sk->sk_sndbuf / 2)
                tx_poll_stop(net);
        hdr_size = vq->vhost_hlen;
-       zcopy = vhost_sock_zcopy(sock);
+       zcopy = vq->ubufs;
 
        for (;;) {
                /* Release DMAs done buffers first */