Selaa lähdekoodia

[PATCH] swsusp: fix memory leaks

My fancy new swsusp IO code had a big memory leak.  It's somewhat invisible
because the whole mem_map[] gets overwritten after resume, but it can cause us
to get low on memory during the actual suspend process.

Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton 18 vuotta sitten
vanhempi
commit
c60099bfe3
1 muutettua tiedostoa jossa 2 lisäystä ja 1 poistoa
  1. 2 1
      kernel/power/swap.c

+ 2 - 1
kernel/power/swap.c

@@ -425,7 +425,8 @@ static int submit(int rw, pgoff_t page_off, struct page *page,
 			bio_set_pages_dirty(bio);
 			bio_set_pages_dirty(bio);
 		bio_put(bio);
 		bio_put(bio);
 	} else {
 	} else {
-		get_page(page);
+		if (rw == READ)
+			get_page(page);	/* These pages are freed later */
 		bio->bi_private = *bio_chain;
 		bio->bi_private = *bio_chain;
 		*bio_chain = bio;
 		*bio_chain = bio;
 		submit_bio(rw | (1 << BIO_RW_SYNC), bio);
 		submit_bio(rw | (1 << BIO_RW_SYNC), bio);