diff options
-rw-r--r-- | kernel/power/swap.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/kernel/power/swap.c b/kernel/power/swap.c index 160e1006640d..1a2efc07c1d0 100644 --- a/kernel/power/swap.c +++ b/kernel/power/swap.c @@ -36,6 +36,7 @@ #define HIBERNATE_SIG "S1SUSPEND" +static int goldenimage; /* * When reading an {un,}compressed image, we may restore pages in place, * in which case some architectures need these pages cleaning before they @@ -1531,7 +1532,13 @@ int swsusp_check(void) goto put; if (!memcmp(HIBERNATE_SIG, swsusp_header->sig, 10)) { - memcpy(swsusp_header->sig, swsusp_header->orig_sig, 10); + if (!goldenimage) { + pr_debug("PM: corrupt hibernate image header\n"); + memcpy(swsusp_header->sig, + swsusp_header->orig_sig, 10); + } else { + pr_debug("PM: Header corruption avoided\n"); + } /* Reset swap signature now */ error = hib_submit_io(WRITE_SYNC, swsusp_resume_block, swsusp_header, NULL); @@ -1605,3 +1612,10 @@ static int swsusp_header_init(void) } core_initcall(swsusp_header_init); + +static int __init golden_image_setup(char *str) +{ + goldenimage = 1; + return 1; +} +__setup("golden_image", golden_image_setup); |