Messages in this thread Patch in this message | | | From | "Srivatsa S. Bhat" <> | Subject | [PATCH] PM / Hibernation: Fix *massive* memory leak at early exits in hibernation | Date | Mon, 21 Nov 2011 23:09:48 +0530 |
| |
At some of the early exit points during hibernation (exiting either due to failure or after a successful hibernation test, the memory pre-allocated for hibernation is not freed up. And this is *very* serious, because, during pre-allocation, it could have allocated upto a few *gigabytes* of memory! And hence, if a hibernation fails or even if we run some hibernation tests using the 'pm_test' framework, the system is rendered unstable due to memory becoming signifantly lower. Fix this bug.
Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com> ---
kernel/power/hibernate.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c index 196c0126..dfe07fd 100644 --- a/kernel/power/hibernate.c +++ b/kernel/power/hibernate.c @@ -346,8 +346,10 @@ int hibernation_snapshot(int platform_mode) goto Close; error = freeze_kernel_threads(); - if (error) + if (error) { + swsusp_free(); goto Close; + } if (hibernation_test(TEST_FREEZER) || hibernation_testmode(HIBERNATION_TESTPROC)) { @@ -357,12 +359,15 @@ int hibernation_snapshot(int platform_mode) * successful freezer test. */ freezer_test_done = true; + swsusp_free(); goto Close; } error = dpm_prepare(PMSG_FREEZE); - if (error) + if (error) { + swsusp_free(); goto Complete_devices; + } suspend_console(); pm_restrict_gfp_mask();
| |