Re: Fix memory leak in swsusp

From: Herbert Xu
Date: Fri Jun 11 2004 - 05:18:05 EST


On Fri, Jun 11, 2004 at 11:48:44AM +0200, Pavel Machek wrote:
>
> > Thanks, but my question remains: why do we need the memset? The
> > area allocated is either thrown away because it collides or is
> > overwritten with the pagedir stuff straight away.
>
> You are right, it should not be needed.

Great. Here's the patch that removes the memset calls from both
pmdisk and swsusp. It depends on the previous patches in this
thread.

Cheers,
--
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <herbert@xxxxxxxxxxxxxxxxxxx>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
diff -Nru a/kernel/power/pmdisk.c b/kernel/power/pmdisk.c
--- a/kernel/power/pmdisk.c 2004-06-11 20:14:54 +10:00
+++ b/kernel/power/pmdisk.c 2004-06-11 20:14:54 +10:00
@@ -806,7 +806,6 @@

err = -ENOMEM;
while ((m = (void *) __get_free_pages(GFP_ATOMIC, pagedir_order))) {
- memset(m, 0, PAGE_SIZE);
if (!does_collide_order(old_pagedir, (unsigned long)m,
pagedir_order)) {
pm_pagedir_nosave = new_pagedir = m;
--- linux-2.5/kernel/power/swsusp.c.orig 2004-06-11 20:14:02.000000000 +1000
+++ linux-2.5/kernel/power/swsusp.c 2004-06-11 20:14:07.000000000 +1000
@@ -936,7 +936,6 @@
}

while ((m = (void *) __get_free_pages(GFP_ATOMIC, pagedir_order))) {
- memset(m, 0, PAGE_SIZE);
if (!does_collide_order(old_pagedir, (unsigned long)m, pagedir_order))
break;
eaten_memory = m;