diff options
author | Alex Iacobucci <alexiacobucci@google.com> | 2023-05-23 17:58:53 +0000 |
---|---|---|
committer | Alex Iacobucci <alexiacobucci@google.com> | 2023-07-07 16:34:42 +0000 |
commit | c87114bfb3d500520036aabccc3568367e239a5e (patch) | |
tree | 3a33518a8f31511a344729b3789777a8e6ee589c | |
parent | b77479e731fad288563b7125e6889fec66a2b191 (diff) | |
download | aoc-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.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -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; |