diff options
author | sjur.brandeland@stericsson.com <sjur.brandeland@stericsson.com> | 2012-11-16 11:20:19 +1030 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2012-12-18 15:20:41 +1030 |
commit | eb34f12b509823571e88b791ae2088280943894f (patch) | |
tree | 6f20772af6a9560ed3dc4dec3eeaa45247fcc42b /drivers/char | |
parent | 800ba5eabf13485fecbf468f6b2999608413d176 (diff) | |
download | linux-eb34f12b509823571e88b791ae2088280943894f.tar.gz linux-eb34f12b509823571e88b791ae2088280943894f.tar.xz |
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)
Diffstat (limited to 'drivers/char')
-rw-r--r-- | drivers/char/virtio_console.c | 4 |
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); } /* |