diff options
author | Amit Shah <amit.shah@redhat.com> | 2010-09-02 08:41:41 -0400 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2010-10-21 03:13:59 -0400 |
commit | 96eb872b2a041b1536ccc6ae2fa87eb28f6e2bb2 (patch) | |
tree | d15cd8d2a0b0d9a5076eeb49735b0b9150e90676 | |
parent | 02238959944ce031f066f21e541a14933aca6575 (diff) |
virtio: console: Remove control vq data only if using multiport support
If a portdev isn't using multiport support, it won't have any control vq
data to remove.
Signed-off-by: Amit Shah <amit.shah@redhat.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-rw-r--r-- | drivers/char/virtio_console.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c index 076d0358cf0e..e15dbe72edbf 100644 --- a/drivers/char/virtio_console.c +++ b/drivers/char/virtio_console.c | |||
@@ -1600,8 +1600,6 @@ static void virtcons_remove(struct virtio_device *vdev) | |||
1600 | { | 1600 | { |
1601 | struct ports_device *portdev; | 1601 | struct ports_device *portdev; |
1602 | struct port *port, *port2; | 1602 | struct port *port, *port2; |
1603 | struct port_buffer *buf; | ||
1604 | unsigned int len; | ||
1605 | 1603 | ||
1606 | portdev = vdev->priv; | 1604 | portdev = vdev->priv; |
1607 | 1605 | ||
@@ -1615,11 +1613,16 @@ static void virtcons_remove(struct virtio_device *vdev) | |||
1615 | 1613 | ||
1616 | unregister_chrdev(portdev->chr_major, "virtio-portsdev"); | 1614 | unregister_chrdev(portdev->chr_major, "virtio-portsdev"); |
1617 | 1615 | ||
1618 | while ((buf = virtqueue_get_buf(portdev->c_ivq, &len))) | 1616 | if (use_multiport(portdev)) { |
1619 | free_buf(buf); | 1617 | struct port_buffer *buf; |
1618 | unsigned int len; | ||
1620 | 1619 | ||
1621 | while ((buf = virtqueue_detach_unused_buf(portdev->c_ivq))) | 1620 | while ((buf = virtqueue_get_buf(portdev->c_ivq, &len))) |
1622 | free_buf(buf); | 1621 | free_buf(buf); |
1622 | |||
1623 | while ((buf = virtqueue_detach_unused_buf(portdev->c_ivq))) | ||
1624 | free_buf(buf); | ||
1625 | } | ||
1623 | 1626 | ||
1624 | vdev->config->del_vqs(vdev); | 1627 | vdev->config->del_vqs(vdev); |
1625 | kfree(portdev->in_vqs); | 1628 | kfree(portdev->in_vqs); |