block: block_dirty_bitmap_merge(): fix error path
authorVladimir Sementsov-Ogievskiy <vsementsov@openvz.org>
Tue, 17 May 2022 11:12:04 +0000 (14:12 +0300)
committerKevin Wolf <kwolf@redhat.com>
Fri, 24 Jun 2022 15:07:06 +0000 (17:07 +0200)
At the end we ignore failure of bdrv_merge_dirty_bitmap() and report
success. And still set errp. That's wrong.

Signed-off-by: Vladimir Sementsov-Ogievskiy <v.sementsov-og@mail.ru>
Reviewed-by: Nikita Lapshin <nikita.lapshin@virtuozzo.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20220517111206.23585-2-v.sementsov-og@mail.ru>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block/monitor/bitmap-qmp-cmds.c

index 2b677c4a2ff64473a70fb7b34fb7e88d304c5988..bd1046859607cfea4ec7ef05444bc8aeef91909b 100644 (file)
@@ -309,7 +309,10 @@ BdrvDirtyBitmap *block_dirty_bitmap_merge(const char *node, const char *target,
     }
 
     /* Merge into dst; dst is unchanged on failure. */
-    bdrv_merge_dirty_bitmap(dst, anon, backup, errp);
+    if (!bdrv_merge_dirty_bitmap(dst, anon, backup, errp)) {
+        dst = NULL;
+        goto out;
+    }
 
  out:
     bdrv_release_dirty_bitmap(anon);