diff options
author | Venkata Rao Kakani <vkakani@codeaurora.org> | 2018-11-22 10:40:14 +0530 |
---|---|---|
committer | Venkata Rao Kakani <vkakani@codeaurora.org> | 2018-11-22 15:07:57 +0530 |
commit | 98f28a19f7ae1bcbbe341553fab067fcee40b6bc (patch) | |
tree | 3df9bd8e6015a3fa4190b395e4c93dab4f31b36a /kernel | |
parent | 84da71b286d535c81a57346f12d94dadf4b55cbe (diff) |
hibernation: msm: arm64: avoid swap image header corruption
Avoid swap image header corruption based on golden_image boot
argument.
Change-Id: If15408b79cf4ff1d04af9a0abb9bfac603a3e569
Signed-off-by: Venkata Rao Kakani <vkakani@codeaurora.org>
Diffstat (limited to 'kernel')
-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); |