Felix Held has submitted this change. ( https://review.coreboot.org/c/coreboot/+/75528?usp=email )
Change subject: soc/intel/common/crashlog: Check cbmem pointer before copying records ......................................................................
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 --- M src/soc/intel/common/block/crashlog/crashlog.c 1 file changed, 8 insertions(+), 0 deletions(-)
Approvals: Subrata Banik: Looks good to me, approved build bot (Jenkins): Verified
diff --git a/src/soc/intel/common/block/crashlog/crashlog.c b/src/soc/intel/common/block/crashlog/crashlog.c index aa2a240..4b72599 100644 --- a/src/soc/intel/common/block/crashlog/crashlog.c +++ b/src/soc/intel/common/block/crashlog/crashlog.c @@ -488,6 +488,10 @@
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 @@
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;