diff options
author | Mark McLoughlin <markmc@redhat.com> | 2009-02-02 22:03:53 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-02-02 22:17:56 -0500 |
commit | 3fff0179e33cd7d0a688dab65700c46ad089e934 (patch) | |
tree | 34c30ceedb3c5ae5cb6a5fb8d1c62aed7c845054 /drivers/virtio/virtio_pci.c | |
parent | 720eba31f47aeade8ec130ca7f4353223c49170f (diff) |
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.c | 2 |
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) | |||
192 | drv = container_of(vp_dev->vdev.dev.driver, | 192 | drv = container_of(vp_dev->vdev.dev.driver, |
193 | struct virtio_driver, driver); | 193 | struct virtio_driver, driver); |
194 | 194 | ||
195 | if (drv->config_changed) | 195 | if (drv && drv->config_changed) |
196 | drv->config_changed(&vp_dev->vdev); | 196 | drv->config_changed(&vp_dev->vdev); |
197 | } | 197 | } |
198 | 198 | ||