All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86: Fix memory leak of init_vdso_vars()
@ 2011-07-05  6:21 wzt
  2011-07-07 13:14 ` Michal Hocko
  2011-07-21 14:33 ` Andy Lutomirski
  0 siblings, 2 replies; 13+ messages in thread
From: wzt @ 2011-07-05  6:21 UTC (permalink / raw)
  To: mingo; +Cc: linux-kernel, x86, ak, tglx, hpa

Fix memory leak of init_vdso_vars().

Signed-off-by: Zhitong Wang <zhitong.wangzt@alibaba-inc.com>

---
 arch/x86/vdso/vma.c |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/arch/x86/vdso/vma.c b/arch/x86/vdso/vma.c
index 4b5d26f..c6b0308 100644
--- a/arch/x86/vdso/vma.c
+++ b/arch/x86/vdso/vma.c
@@ -44,19 +44,19 @@ static int __init init_vdso_vars(void)
 	vdso_size = npages << PAGE_SHIFT;
 	vdso_pages = kmalloc(sizeof(struct page *) * npages, GFP_KERNEL);
 	if (!vdso_pages)
-		goto oom;
+		goto oom1;
 	for (i = 0; i < npages; i++) {
 		struct page *p;
 		p = alloc_page(GFP_KERNEL);
 		if (!p)
-			goto oom;
+			goto oom2;
 		vdso_pages[i] = p;
 		copy_page(page_address(p), vdso_start + i*PAGE_SIZE);
 	}
 
 	vbase = vmap(vdso_pages, npages, 0, PAGE_KERNEL);
 	if (!vbase)
-		goto oom;
+		goto oom2;
 
 	if (memcmp(vbase, "\177ELF", 4)) {
 		printk("VDSO: I'm broken; not ELF\n");
@@ -70,7 +70,13 @@ static int __init init_vdso_vars(void)
 	vunmap(vbase);
 	return 0;
 
- oom:
+oom2:
+	i--;
+	for (; i >= 0; i--)
+		__free_page(vdso_pages[i]);
+	__free_page(vdso_pages);
+
+oom1:
 	printk("Cannot allocate vdso\n");
 	vdso_enabled = 0;
 	return -ENOMEM;
-- 
1.7.4.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2011-07-21 20:52 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-07-05  6:21 [PATCH] x86: Fix memory leak of init_vdso_vars() wzt
2011-07-07 13:14 ` Michal Hocko
2011-07-07 18:33   ` Andi Kleen
2011-07-11  3:23     ` wzt wzt
2011-07-11 10:04       ` Ingo Molnar
2011-07-21 14:33 ` Andy Lutomirski
2011-07-21 17:08   ` Andi Kleen
2011-07-21 17:26     ` Andrew Lutomirski
2011-07-21 18:38       ` Ingo Molnar
2011-07-21 19:39         ` Andrew Lutomirski
2011-07-21 19:43           ` Ingo Molnar
2011-07-21 19:47           ` [PATCH] x86-64: Do not allocate memory for the vDSO Andy Lutomirski
2011-07-21 20:52             ` [tip:x86/vdso] x86-64, vdso: " tip-bot for Andy Lutomirski

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.