]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
block: Free iovec arrays allocated by multiwrite_merge()
authorStefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Wed, 21 Apr 2010 19:35:45 +0000 (20:35 +0100)
committerAurelien Jarno <aurelien@aurel32.net>
Sat, 24 Apr 2010 10:45:03 +0000 (12:45 +0200)
A new iovec array is allocated when creating a merged write request.
This patch ensures that the iovec array is deleted in addition to its
qiov owner.

Reported-by: Leszek Urbanski <tygrys@moo.pl>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
(cherry picked from commit 1e1ea48d42e011b9bdd0d689d184e7cac4617b66)

block.c

diff --git a/block.c b/block.c
index 4f9a48b71a664568a1c0c37a0604345e1910a2e4..7326bfeee3cec98c341b1404284d43461ff84cf8 100644 (file)
--- a/block.c
+++ b/block.c
@@ -1608,6 +1608,9 @@ static void multiwrite_user_cb(MultiwriteCB *mcb)
 
     for (i = 0; i < mcb->num_callbacks; i++) {
         mcb->callbacks[i].cb(mcb->callbacks[i].opaque, mcb->error);
+        if (mcb->callbacks[i].free_qiov) {
+            qemu_iovec_destroy(mcb->callbacks[i].free_qiov);
+        }
         qemu_free(mcb->callbacks[i].free_qiov);
         qemu_vfree(mcb->callbacks[i].free_buf);
     }