aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/char/virtio_console.c8
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.