]> git.proxmox.com Git - pve-qemu.git/blob - debian/patches/extra/0011-block-Fix-locking-in-qmp_block_resize.patch
bump version to 5.2.0-11
[pve-qemu.git] / debian / patches / extra / 0011-block-Fix-locking-in-qmp_block_resize.patch
1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2 From: Kevin Wolf <kwolf@redhat.com>
3 Date: Thu, 3 Dec 2020 18:23:10 +0100
4 Subject: [PATCH] block: Fix locking in qmp_block_resize()
5
6 The drain functions assume that we hold the AioContext lock of the
7 drained block node. Make sure to actually take the lock.
8
9 Cc: qemu-stable@nongnu.org
10 Fixes: eb94b81a94bce112e6b206df846c1551aaf6cab6
11 Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12 Message-Id: <20201203172311.68232-3-kwolf@redhat.com>
13 Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
14 Signed-off-by: Kevin Wolf <kwolf@redhat.com>
15 Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
16 ---
17 blockdev.c | 5 ++++-
18 1 file changed, 4 insertions(+), 1 deletion(-)
19
20 diff --git a/blockdev.c b/blockdev.c
21 index fe6fb5dc1d..9a86e9fb4b 100644
22 --- a/blockdev.c
23 +++ b/blockdev.c
24 @@ -2481,14 +2481,17 @@ void coroutine_fn qmp_block_resize(bool has_device, const char *device,
25 goto out;
26 }
27
28 + bdrv_co_lock(bs);
29 bdrv_drained_begin(bs);
30 + bdrv_co_unlock(bs);
31 +
32 old_ctx = bdrv_co_enter(bs);
33 blk_truncate(blk, size, false, PREALLOC_MODE_OFF, 0, errp);
34 bdrv_co_leave(bs, old_ctx);
35 - bdrv_drained_end(bs);
36
37 out:
38 bdrv_co_lock(bs);
39 + bdrv_drained_end(bs);
40 blk_unref(blk);
41 bdrv_co_unlock(bs);
42 }