]> Pileus Git - ~andy/linux/commitdiff
virtio: don't crash when device is buggy
authorMichael S. Tsirkin <mst@redhat.com>
Fri, 28 Sep 2012 05:35:16 +0000 (15:05 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Fri, 28 Sep 2012 05:35:16 +0000 (15:05 +0930)
Because of a sanity check in virtio_dev_remove, a buggy device can crash
kernel.  And in case of rproc it's userspace so it's not a good idea.
We are unloading a driver so how bad can it be?
Be less aggressive in handling this error: if it's a driver bug,
warning once should be enough.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
drivers/virtio/virtio.c

index c3b3f7f0d9d197ec0fd6e56aa99cd8b50e616cfa..1e8659ca27ef4228d55e97ec5cbafc99d861b22a 100644 (file)
@@ -159,7 +159,7 @@ static int virtio_dev_remove(struct device *_d)
        drv->remove(dev);
 
        /* Driver should have reset device. */
-       BUG_ON(dev->config->get_status(dev));
+       WARN_ON_ONCE(dev->config->get_status(dev));
 
        /* Acknowledge the device's existence again. */
        add_status(dev, VIRTIO_CONFIG_S_ACKNOWLEDGE);