Commit 3fff0179 authored by Mark McLoughlin's avatar Mark McLoughlin Committed by Linus Torvalds

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: default avatarMark McLoughlin <markmc@redhat.com>
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 720eba31
...@@ -192,7 +192,7 @@ static irqreturn_t vp_interrupt(int irq, void *opaque) ...@@ -192,7 +192,7 @@ static irqreturn_t vp_interrupt(int irq, void *opaque)
drv = container_of(vp_dev->vdev.dev.driver, drv = container_of(vp_dev->vdev.dev.driver,
struct virtio_driver, driver); struct virtio_driver, driver);
if (drv->config_changed) if (drv && drv->config_changed)
drv->config_changed(&vp_dev->vdev); drv->config_changed(&vp_dev->vdev);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment