]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - queue-5.0/vmw_balloon-release-lock-on-error-in-vmballoon_reset.patch
Linux 4.19.31
[thirdparty/kernel/stable-queue.git] / queue-5.0 / vmw_balloon-release-lock-on-error-in-vmballoon_reset.patch
1 From d04071a5d6413b65f17f7bd6e2bdb22e22e4ace7 Mon Sep 17 00:00:00 2001
2 From: Dan Carpenter <dan.carpenter@oracle.com>
3 Date: Mon, 11 Feb 2019 21:45:45 +0300
4 Subject: vmw_balloon: release lock on error in vmballoon_reset()
5
6 From: Dan Carpenter <dan.carpenter@oracle.com>
7
8 commit d04071a5d6413b65f17f7bd6e2bdb22e22e4ace7 upstream.
9
10 We added some locking to this function but forgot to drop the lock on
11 these two error paths. This bug would lead to an immediate deadlock.
12
13 Fixes: c7b3690fb152 ("vmw_balloon: stats rework")
14 Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
15 Cc: stable@vger.kernel.org
16 Reviewed-by: Nadav Amit <namit@vmware.com>
17 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
18
19 ---
20 drivers/misc/vmw_balloon.c | 5 +++--
21 1 file changed, 3 insertions(+), 2 deletions(-)
22
23 --- a/drivers/misc/vmw_balloon.c
24 +++ b/drivers/misc/vmw_balloon.c
25 @@ -1287,7 +1287,7 @@ static void vmballoon_reset(struct vmbal
26 vmballoon_pop(b);
27
28 if (vmballoon_send_start(b, VMW_BALLOON_CAPABILITIES))
29 - return;
30 + goto unlock;
31
32 if ((b->capabilities & VMW_BALLOON_BATCHED_CMDS) != 0) {
33 if (vmballoon_init_batching(b)) {
34 @@ -1298,7 +1298,7 @@ static void vmballoon_reset(struct vmbal
35 * The guest will retry in one second.
36 */
37 vmballoon_send_start(b, 0);
38 - return;
39 + goto unlock;
40 }
41 } else if ((b->capabilities & VMW_BALLOON_BASIC_CMDS) != 0) {
42 vmballoon_deinit_batching(b);
43 @@ -1314,6 +1314,7 @@ static void vmballoon_reset(struct vmbal
44 if (vmballoon_send_guest_id(b))
45 pr_err("failed to send guest ID to the host\n");
46
47 +unlock:
48 up_write(&b->conf_sem);
49 }
50