• Rafael J. Wysocki's avatar
    PM / Hibernate: Fix memory corruption related to swap · c9e664f1
    Rafael J. Wysocki authored
    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: default avatarRafael J. Wysocki <rjw@sisk.pl>
    Reported-by: default avatarOndrej Zary <linux@rainbow-software.org>
    Acked-by: default avatarHugh Dickins <hughd@google.com>
    Reviewed-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: stable@kernel.org
    c9e664f1
hibernate.c 23.1 KB