linux/kernel/power
Rafael J. Wysocki c9e664f1fd PM / Hibernate: Fix memory corruption related to swap
There is a problem that swap pages allocated before the creation of
a hibernation image can be released and used for storing the contents
of different memory pages while the image is being saved.  Since the
kernel stored in the image doesn't know of that, it causes memory
corruption to occur after resume from hibernation, especially on
systems with relatively small RAM that need to swap often.

This issue can be addressed by keeping the GFP_IOFS bits clear
in gfp_allowed_mask during the entire hibernation, including the
saving of the image, until the system is finally turned off or
the hibernation is aborted.  Unfortunately, for this purpose
it's necessary to rework the way in which the hibernate and
suspend code manipulates gfp_allowed_mask.

This change is based on an earlier patch from Hugh Dickins.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Reported-by: Ondrej Zary <linux@rainbow-software.org>
Acked-by: Hugh Dickins <hughd@google.com>
Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: stable@kernel.org
2010-12-06 23:52:08 +01:00
..
block_io.c block: unify flags for struct bio and struct request 2010-08-07 18:20:39 +02:00
console.c vt: introduce and use vt_kmsg_redirect() function 2009-12-15 08:53:28 -08:00
hibernate.c PM / Hibernate: Fix memory corruption related to swap 2010-12-06 23:52:08 +01:00
Kconfig PM / OPP: Hide OPP configuration when SoCs do not provide an implementation 2010-11-11 01:51:26 +01:00
main.c PM: Add sysfs attr for rechecking dev hash from PM trace 2010-10-17 01:57:50 +02:00
Makefile suspend: Move NVS save/restore code to generic suspend functionality 2010-06-10 11:02:34 -04:00
nvs.c suspend: Move NVS save/restore code to generic suspend functionality 2010-06-10 11:02:34 -04:00
power.h PM / Hibernate: Make default image size depend on total RAM size 2010-10-17 01:57:43 +02:00
poweroff.c Input: sysrq - drop tty argument from sysrq ops handlers 2010-08-19 22:07:06 -07:00
process.c PM: Allow wakeup events to abort freezing of tasks 2010-10-17 01:57:49 +02:00
snapshot.c use clear_page()/copy_page() in favor of memset()/memcpy() on whole pages 2010-10-26 16:52:13 -07:00
suspend.c PM / Hibernate: Fix memory corruption related to swap 2010-12-06 23:52:08 +01:00
suspend_test.c PM: Make warning in suspend_test_finish() less likely to happen 2009-10-22 08:23:45 +09:00
swap.c PM / Hibernate: Use async I/O when reading compressed hibernation image 2010-12-06 23:38:29 +01:00
user.c PM / Hibernate: Fix memory corruption related to swap 2010-12-06 23:52:08 +01:00