OSDN Git Service

virtio_net: don't crash if virtqueue is broken.
authorRusty Russell <rusty@rustcorp.com.au>
Thu, 13 Mar 2014 00:53:39 +0000 (11:23 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Thu, 13 Mar 2014 00:57:55 +0000 (11:27 +1030)
A bad implementation of virtio might cause us to mark the virtqueue
broken: we'll dev_err() in that case, and the device is useless, but
let's not BUG_ON().

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
drivers/net/virtio_net.c

index 5632a99..274e997 100644 (file)
@@ -938,7 +938,7 @@ static bool virtnet_send_command(struct virtnet_info *vi, u8 class, u8 cmd,
        sgs[out_num] = &stat;
 
        BUG_ON(out_num + 1 > ARRAY_SIZE(sgs));
-       BUG_ON(virtqueue_add_sgs(vi->cvq, sgs, out_num, 1, vi, GFP_ATOMIC) < 0);
+       virtqueue_add_sgs(vi->cvq, sgs, out_num, 1, vi, GFP_ATOMIC);
 
        if (unlikely(!virtqueue_kick(vi->cvq)))
                return status == VIRTIO_NET_OK;