[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1533163513-10764-1-git-send-email-mikelley@microsoft.com>
Date: Wed, 1 Aug 2018 15:45:13 -0700
From: mhkelley58@...il.com
To: gregkh@...uxfoundation.org, linux-kernel@...r.kernel.org,
devel@...uxdriverproject.org, olaf@...fle.de, apw@...onical.com,
vkuznets@...hat.com, jasowang@...hat.com,
marcelo.cerri@...onical.com, sthemmin@...rosoft.com,
kys@...rosoft.com
Cc: mikelley@...rosoft.com
Subject: [PATCH char-misc 1/1] Drivers: hv: vmbus: Cleanup synic memory free path
From: Michael Kelley <mikelley@...rosoft.com>
clk_evt memory is not being freed when the synic is shutdown
or when there is an allocation error. Add the appropriate
kfree() call, along with a comment to clarify how the memory
gets freed after an allocation error. Make the free path
consistent by removing checks for NULL since kfree() and
free_page() already do the check.
Signed-off-by: Michael Kelley <mikelley@...rosoft.com>
Reported-by: Dan Carpenter <dan.carpenter@...cle.com>
---
drivers/hv/hv.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c
index 8d4fe0e..1fb9a6b 100644
--- a/drivers/hv/hv.c
+++ b/drivers/hv/hv.c
@@ -240,6 +240,10 @@ int hv_synic_alloc(void)
return 0;
err:
+ /*
+ * Any memory allocations that succeeded will be freed when
+ * the caller cleans up by calling hv_synic_free()
+ */
return -ENOMEM;
}
@@ -252,12 +256,10 @@ void hv_synic_free(void)
struct hv_per_cpu_context *hv_cpu
= per_cpu_ptr(hv_context.cpu_context, cpu);
- if (hv_cpu->synic_event_page)
- free_page((unsigned long)hv_cpu->synic_event_page);
- if (hv_cpu->synic_message_page)
- free_page((unsigned long)hv_cpu->synic_message_page);
- if (hv_cpu->post_msg_page)
- free_page((unsigned long)hv_cpu->post_msg_page);
+ kfree(hv_cpu->clk_evt);
+ free_page((unsigned long)hv_cpu->synic_event_page);
+ free_page((unsigned long)hv_cpu->synic_message_page);
+ free_page((unsigned long)hv_cpu->post_msg_page);
}
kfree(hv_context.hv_numa_map);
--
1.8.3.1
Powered by blists - more mailing lists