set_drity_tracking() was assuming that the errno value set by bdrv_create_dirty_bitmap() would not be corrupted by either blk_get_aio_context() or aio_context_release(). Rather than audit whether this assumption is safe, rewrite the code to just grab the value of errno sooner.
CC: qemu-sta...@nongnu.org Signed-off-by: Eric Blake <ebl...@redhat.com> --- migration/block.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/migration/block.c b/migration/block.c index 18d50ff..9a9c214 100644 --- a/migration/block.c +++ b/migration/block.c @@ -350,9 +350,9 @@ static int set_dirty_tracking(void) aio_context_acquire(blk_get_aio_context(bmds->blk)); bmds->dirty_bitmap = bdrv_create_dirty_bitmap(blk_bs(bmds->blk), BLOCK_SIZE, NULL, NULL); + ret = -errno; aio_context_release(blk_get_aio_context(bmds->blk)); if (!bmds->dirty_bitmap) { - ret = -errno; goto fail; } } -- 2.9.3