diff options
Diffstat (limited to 'drivers/char')
-rw-r--r-- | drivers/char/virtio_console.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c index 614b84d38d7a..b58b56187065 100644 --- a/drivers/char/virtio_console.c +++ b/drivers/char/virtio_console.c | |||
@@ -1854,10 +1854,18 @@ static int virtcons_freeze(struct virtio_device *vdev) | |||
1854 | 1854 | ||
1855 | vdev->config->reset(vdev); | 1855 | vdev->config->reset(vdev); |
1856 | 1856 | ||
1857 | virtqueue_disable_cb(portdev->c_ivq); | ||
1857 | cancel_work_sync(&portdev->control_work); | 1858 | cancel_work_sync(&portdev->control_work); |
1859 | /* | ||
1860 | * Once more: if control_work_handler() was running, it would | ||
1861 | * enable the cb as the last step. | ||
1862 | */ | ||
1863 | virtqueue_disable_cb(portdev->c_ivq); | ||
1858 | remove_controlq_data(portdev); | 1864 | remove_controlq_data(portdev); |
1859 | 1865 | ||
1860 | list_for_each_entry(port, &portdev->ports, list) { | 1866 | list_for_each_entry(port, &portdev->ports, list) { |
1867 | virtqueue_disable_cb(port->in_vq); | ||
1868 | virtqueue_disable_cb(port->out_vq); | ||
1861 | /* | 1869 | /* |
1862 | * We'll ask the host later if the new invocation has | 1870 | * We'll ask the host later if the new invocation has |
1863 | * the port opened or closed. | 1871 | * the port opened or closed. |