summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsjur.brandeland@stericsson.com <sjur.brandeland@stericsson.com>2012-11-16 11:20:19 +1030
committerRusty Russell <rusty@rustcorp.com.au>2012-12-18 15:20:41 +1030
commiteb34f12b509823571e88b791ae2088280943894f (patch)
tree6f20772af6a9560ed3dc4dec3eeaa45247fcc42b
parent800ba5eabf13485fecbf468f6b2999608413d176 (diff)
downloadlinux-eb34f12b509823571e88b791ae2088280943894f.tar.gz
linux-eb34f12b509823571e88b791ae2088280943894f.tar.bz2
linux-eb34f12b509823571e88b791ae2088280943894f.zip
virtio_console: Free buffers from out-queue upon close
Free pending output buffers from the virtio out-queue when host has acknowledged port_close. Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (rebased & cut down)
-rw-r--r--drivers/char/virtio_console.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
index eecb1f9e2e6b..db244b5b6c8a 100644
--- a/drivers/char/virtio_console.c
+++ b/drivers/char/virtio_console.c
@@ -1439,6 +1439,10 @@ static void remove_port_data(struct port *port)
/* Remove buffers we queued up for the Host to send us data in. */
while ((buf = virtqueue_detach_unused_buf(port->in_vq)))
free_buf(buf);
+
+ /* Free pending buffers from the out-queue. */
+ while ((buf = virtqueue_detach_unused_buf(port->out_vq)))
+ free_buf(buf);
}
/*