On 06/05/2014 07:19 AM, Kevin Wolf wrote:
Signed-off-by: Kevin Wolf <kw...@redhat.com>
---
block/rbd.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/block/rbd.c b/block/rbd.c
index 09af484..898fcfe 100644
--- a/block/rbd.c
+++ b/block/rbd.c
@@ -684,13 +684,16 @@ static BlockDriverAIOCB *rbd_start_aio(BlockDriverState
*bs,
}
if (r < 0) {
- goto failed;
+ goto failed_completion;
}
return &acb->common;
+failed_completion:
+ rbd_aio_release(c);
failed:
g_free(rcb);
+ qemu_vfree(acb->bounce);
qemu_aio_release(acb);
return NULL;
}
Reviewed-by: Josh Durgin <josh.dur...@inktank.com>
FWIW this error path can only happen in certain combinations of odd
circumstances, including specific forms of disk corruption of certain
objects in concert with other factors, so it's quite unlikely to occur
in practice.