summaryrefslogtreecommitdiffstats
path: root/src/soc/intel/common/block/crashlog
diff options
context:
space:
mode:
authorPratikkumar Prajapati <pratikkumar.v.prajapati@intel.com>2023-05-30 12:13:48 -0700
committerFelix Held <felix-coreboot@felixheld.de>2023-06-01 13:14:39 +0000
commit385f4bb965cd0f67958d77389d5185a38cb3c9d8 (patch)
tree0035e6a531dc8c69eff6469d0a1b69a91562a892 /src/soc/intel/common/block/crashlog
parent5f3b6545f4ce1f6f0a0a44958c9a924f3639ea71 (diff)
downloadcoreboot-385f4bb965cd0f67958d77389d5185a38cb3c9d8.tar.gz
coreboot-385f4bb965cd0f67958d77389d5185a38cb3c9d8.tar.bz2
coreboot-385f4bb965cd0f67958d77389d5185a38cb3c9d8.zip
soc/intel/common/crashlog: Check cbmem pointer before copying records
Check existence of crashlog records in CBMEM before copying them to BERT, otherwise it can lead to NULL pointer access. Bug=None TEST=Able to build. With Meteor Lake SOC related patch, able to capture and decode crashlog. Change-Id: I4288011866283a3a5fb8ec9e10cd51b794052b4e Signed-off-by: Pratikkumar Prajapati <pratikkumar.v.prajapati@intel.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/75528 Reviewed-by: Subrata Banik <subratabanik@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/soc/intel/common/block/crashlog')
-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 aa2a240ce8d5..4b72599bfd46 100644
--- a/src/soc/intel/common/block/crashlog/crashlog.c
+++ b/src/soc/intel/common/block/crashlog/crashlog.c
@@ -488,6 +488,10 @@ bool cl_fill_cpu_records(void *cl_record)
printk(BIOS_DEBUG, "CPU crash data collection.\n");
cl_src_addr = cbmem_find(CBMEM_ID_CPU_CRASHLOG);
+ if (!cl_src_addr) {
+ printk(BIOS_DEBUG, "CPU crash data, CBMEM not found\n");
+ return false;
+ }
memcpy(cl_record, cl_src_addr, m_cpu_crashLog_size);
return true;
@@ -506,6 +510,10 @@ bool cl_fill_pmc_records(void *cl_record)
printk(BIOS_DEBUG, "PMC crash data collection.\n");
cl_src_addr = cbmem_find(CBMEM_ID_PMC_CRASHLOG);
+ if (!cl_src_addr) {
+ printk(BIOS_DEBUG, "PMC crash data, CBMEM not found\n");
+ return false;
+ }
memcpy(cl_record, cl_src_addr, m_pmc_crashLog_size);
return true;