From da64643ef6f62b1bcb17ba0f777feaea210c67be Mon Sep 17 00:00:00 2001 From: Amit Shah Date: Thu, 2 Sep 2010 18:11:41 +0530 Subject: [PATCH] --- yaml --- r: 211643 b: refs/heads/master c: 96eb872b2a041b1536ccc6ae2fa87eb28f6e2bb2 h: refs/heads/master i: 211641: 1d22aec97f9d404047df82142b0d745227b5a91d 211639: ad7ff58bf3a62c0671cd42324baf8f21ad8b699b v: v3 --- [refs] | 2 +- trunk/drivers/char/virtio_console.c | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 30910610a427..e4f4642e307a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 02238959944ce031f066f21e541a14933aca6575 +refs/heads/master: 96eb872b2a041b1536ccc6ae2fa87eb28f6e2bb2 diff --git a/trunk/drivers/char/virtio_console.c b/trunk/drivers/char/virtio_console.c index 076d0358cf0e..e15dbe72edbf 100644 --- a/trunk/drivers/char/virtio_console.c +++ b/trunk/drivers/char/virtio_console.c @@ -1600,8 +1600,6 @@ static void virtcons_remove(struct virtio_device *vdev) { struct ports_device *portdev; struct port *port, *port2; - struct port_buffer *buf; - unsigned int len; portdev = vdev->priv; @@ -1615,11 +1613,16 @@ static void virtcons_remove(struct virtio_device *vdev) unregister_chrdev(portdev->chr_major, "virtio-portsdev"); - while ((buf = virtqueue_get_buf(portdev->c_ivq, &len))) - free_buf(buf); + if (use_multiport(portdev)) { + struct port_buffer *buf; + unsigned int len; - while ((buf = virtqueue_detach_unused_buf(portdev->c_ivq))) - free_buf(buf); + while ((buf = virtqueue_get_buf(portdev->c_ivq, &len))) + free_buf(buf); + + while ((buf = virtqueue_detach_unused_buf(portdev->c_ivq))) + free_buf(buf); + } vdev->config->del_vqs(vdev); kfree(portdev->in_vqs);