From: Anton Kuchin Date: Tue, 7 May 2019 08:12:56 +0000 (+0300) Subject: block: remove bs from lists before closing X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=30c321f97fa5898a5ad71070af6ce271fbdba347;p=qemu.git block: remove bs from lists before closing Close involves flush that can be performed asynchronously and bs must be protected from being referenced before it is deleted. Signed-off-by: Anton Kuchin Signed-off-by: Kevin Wolf --- diff --git a/block.c b/block.c index 5c2c6aa761..6999aad446 100644 --- a/block.c +++ b/block.c @@ -4082,14 +4082,14 @@ static void bdrv_delete(BlockDriverState *bs) assert(bdrv_op_blocker_is_empty(bs)); assert(!bs->refcnt); - bdrv_close(bs); - /* remove from list, if necessary */ if (bs->node_name[0] != '\0') { QTAILQ_REMOVE(&graph_bdrv_states, bs, node_list); } QTAILQ_REMOVE(&all_bdrv_states, bs, bs_list); + bdrv_close(bs); + g_free(bs); }