summaryrefslogtreecommitdiff
path: root/src/soc/intel/common/block/crashlog/crashlog.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/intel/common/block/crashlog/crashlog.c')
-rw-r--r--src/soc/intel/common/block/crashlog/crashlog.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/soc/intel/common/block/crashlog/crashlog.c b/src/soc/intel/common/block/crashlog/crashlog.c
index daa5b763cf..aa2a240ce8 100644
--- a/src/soc/intel/common/block/crashlog/crashlog.c
+++ b/src/soc/intel/common/block/crashlog/crashlog.c
@@ -271,6 +271,14 @@ bool cl_copy_data_from_sram(u32 src_bar,
u32 src_addr = src_bar + offset;
u32 data = read32((u32 *)src_addr);
+
+ /* First 32bits of the record must not be 0xdeadbeef */
+ if (data == INVALID_CRASHLOG_RECORD) {
+ printk(BIOS_DEBUG, "Invalid data 0x%x at offset 0x%x from addr 0x%x\n",
+ data, offset, src_bar);
+ return false;
+ }
+
/* PMC: copy if 1st DWORD in buffer is not zero and its 31st bit is not set */
if (pmc_sram && !(data && !(data & BIT(31)))) {
printk(BIOS_DEBUG, "Invalid data 0x%x at offset 0x%x from addr 0x%x"