summaryrefslogtreecommitdiffstats
path: root/drivers/virtio/virtio_pci.c
diff options
context:
space:
mode:
authorMark McLoughlin <markmc@redhat.com>2009-02-03 04:03:53 +0100
committerLinus Torvalds <torvalds@linux-foundation.org>2009-02-03 04:17:56 +0100
commit3fff0179e33cd7d0a688dab65700c46ad089e934 (patch)
tree34c30ceedb3c5ae5cb6a5fb8d1c62aed7c845054 /drivers/virtio/virtio_pci.c
parentmodules: Use a better scheme for refcounting (diff)
downloadlinux-3fff0179e33cd7d0a688dab65700c46ad089e934.tar.xz
linux-3fff0179e33cd7d0a688dab65700c46ad089e934.zip
virtio-pci: do not oops on config change if driver not loaded
The host really shouldn't be notifying us of config changes before the device status is VIRTIO_CONFIG_S_DRIVER or VIRTIO_CONFIG_S_DRIVER_OK. However, if we do happen to be interrupted while we're not attached to a driver, we really shouldn't oops. Prevent this simply by checking that device->driver is non-NULL before trying to notify the driver of config changes. Problem observed by doing a "set_link virtio.0 down" with QEMU before the net driver had been loaded. Signed-off-by: Mark McLoughlin <markmc@redhat.com> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/virtio/virtio_pci.c')
-rw-r--r--drivers/virtio/virtio_pci.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
index bef6b45e8a5c..330aacbdec1f 100644
--- a/drivers/virtio/virtio_pci.c
+++ b/drivers/virtio/virtio_pci.c
@@ -192,7 +192,7 @@ static irqreturn_t vp_interrupt(int irq, void *opaque)
drv = container_of(vp_dev->vdev.dev.driver,
struct virtio_driver, driver);
- if (drv->config_changed)
+ if (drv && drv->config_changed)
drv->config_changed(&vp_dev->vdev);
}