]>
Commit | Line | Data |
---|---|---|
dfac4f35 FE |
1 | From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
2 | From: Kevin Wolf <kwolf@redhat.com> | |
3 | Date: Fri, 8 Dec 2023 13:43:52 +0100 | |
4 | Subject: [PATCH] block: Fix AioContext locking in qmp_block_resize() | |
5 | ||
6 | The AioContext must be unlocked before calling blk_co_unref(), because | |
7 | it takes the AioContext lock internally in blk_unref_bh(), which is | |
8 | scheduled in the main thread. If we don't unlock, the AioContext is | |
9 | locked twice and nested event loops such as in bdrv_graph_wrlock() will | |
10 | deadlock. | |
11 | ||
12 | Cc: qemu-stable@nongnu.org | |
13 | Fixes: https://issues.redhat.com/browse/RHEL-15965 | |
14 | Fixes: 0c7d204f50c382c6baac8c94bd57af4a022b3888 | |
15 | Signed-off-by: Kevin Wolf <kwolf@redhat.com> | |
16 | (picked up from https://lists.nongnu.org/archive/html/qemu-devel/2023-12/msg01102.html) | |
17 | Signed-off-by: Fiona Ebner <f.ebner@proxmox.com> | |
18 | --- | |
19 | blockdev.c | 3 ++- | |
20 | 1 file changed, 2 insertions(+), 1 deletion(-) | |
21 | ||
22 | diff --git a/blockdev.c b/blockdev.c | |
23 | index e6eba61484..c28462a633 100644 | |
24 | --- a/blockdev.c | |
25 | +++ b/blockdev.c | |
26 | @@ -2361,8 +2361,9 @@ void coroutine_fn qmp_block_resize(const char *device, const char *node_name, | |
27 | ||
28 | bdrv_co_lock(bs); | |
29 | bdrv_drained_end(bs); | |
30 | - blk_co_unref(blk); | |
31 | bdrv_co_unlock(bs); | |
32 | + | |
33 | + blk_co_unref(blk); | |
34 | } | |
35 | ||
36 | void qmp_block_stream(const char *job_id, const char *device, |