From: Andrew Morton 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" Cc: Pavel Machek Signed-off-by: Andrew Morton --- kernel/power/swap.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff -puN kernel/power/swap.c~swsusp-fix-memory-leaks kernel/power/swap.c --- a/kernel/power/swap.c~swsusp-fix-memory-leaks +++ a/kernel/power/swap.c @@ -425,7 +425,8 @@ static int submit(int rw, pgoff_t page_o bio_set_pages_dirty(bio); bio_put(bio); } else { - get_page(page); + if (rw == READ) + get_page(page); /* These pages are freed later */ bio->bi_private = *bio_chain; *bio_chain = bio; submit_bio(rw | (1 << BIO_RW_SYNC), bio); _