From cc436748a83438cafd471bac280ffdfb70b54ad4 Mon Sep 17 00:00:00 2001 From: Amit Shah Date: Fri, 6 Jan 2012 16:19:08 +0530 Subject: [PATCH] --- yaml --- r: 284248 b: refs/heads/master c: c743d09dbd018dd6345519fb3264b16bdaa41746 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/char/virtio_console.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index a13099f56b33..04bc52c0a05f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2b8f41d846990c3c1c8addbaed2cf53c3ef91d25 +refs/heads/master: c743d09dbd018dd6345519fb3264b16bdaa41746 diff --git a/trunk/drivers/char/virtio_console.c b/trunk/drivers/char/virtio_console.c index 614b84d38d7a..b58b56187065 100644 --- a/trunk/drivers/char/virtio_console.c +++ b/trunk/drivers/char/virtio_console.c @@ -1854,10 +1854,18 @@ static int virtcons_freeze(struct virtio_device *vdev) vdev->config->reset(vdev); + virtqueue_disable_cb(portdev->c_ivq); cancel_work_sync(&portdev->control_work); + /* + * Once more: if control_work_handler() was running, it would + * enable the cb as the last step. + */ + virtqueue_disable_cb(portdev->c_ivq); remove_controlq_data(portdev); list_for_each_entry(port, &portdev->ports, list) { + virtqueue_disable_cb(port->in_vq); + virtqueue_disable_cb(port->out_vq); /* * We'll ask the host later if the new invocation has * the port opened or closed.