summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Iacobucci <alexiacobucci@google.com>2023-05-23 17:58:53 +0000
committerAlex Iacobucci <alexiacobucci@google.com>2023-07-07 16:34:42 +0000
commitc87114bfb3d500520036aabccc3568367e239a5e (patch)
tree3a33518a8f31511a344729b3789777a8e6ee589c
parentb77479e731fad288563b7125e6889fec66a2b191 (diff)
downloadaoc-c87114bfb3d500520036aabccc3568367e239a5e.tar.gz
aoc: don't overwrite crash reason on invalid magic
Bug: 286990893 Test: tested on device Change-Id: I4bc8acd5a004091be187606ed0260120e96be6ea Signed-off-by: Alex Iacobucci <alexiacobucci@google.com>
-rw-r--r--aoc.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/aoc.c b/aoc.c
index 83bcfef..155ad5b 100644
--- a/aoc.c
+++ b/aoc.c
@@ -2593,7 +2593,7 @@ static void aoc_watchdog(struct work_struct *work)
int sscd_rc;
char crash_info[RAMDUMP_SECTION_CRASH_INFO_SIZE];
int restart_rc;
- bool ap_reset = false;
+ bool ap_reset = false, invalid_magic;
struct aoc_section_header *crash_info_section =
find_ramdump_section(ramdump_header, SECTION_TYPE_CRASH_INFO);
@@ -2669,7 +2669,8 @@ static void aoc_watchdog(struct work_struct *work)
}
}
- if (ramdump_header->valid && memcmp(ramdump_header, RAMDUMP_MAGIC, sizeof(RAMDUMP_MAGIC))) {
+ invalid_magic = memcmp(ramdump_header, RAMDUMP_MAGIC, sizeof(RAMDUMP_MAGIC));
+ if (ramdump_header->valid && invalid_magic) {
dev_err(prvdata->dev,
"aoc coredump failed: invalid magic (corruption or incompatible firmware?)\n");
strscpy(crash_info, "AoC Watchdog : coredump corrupt",
@@ -2693,7 +2694,7 @@ static void aoc_watchdog(struct work_struct *work)
goto err_vmap;
}
- if (ramdump_header->valid) {
+ if (ramdump_header->valid && !invalid_magic) {
if (crash_info_section && crash_info_section->flags & RAMDUMP_FLAG_VALID) {
const char *crash_reason = (const char *)ramdump_header +
crash_info_section->offset;