[coreboot-gerrit] New patch to review for coreboot: fsp 1.0 systems: Check for NULL when saving HobListPtr

Martin Roth (martinroth@google.com) gerrit at coreboot.org
Tue Jan 10 19:15:34 CET 2017


Martin Roth (martinroth at google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/18092

-gerrit

commit b53c052da631547a586daa3c83e5ef8f2e430f87
Author: Martin Roth <martinroth at google.com>
Date:   Tue Jan 10 11:15:13 2017 -0700

    fsp 1.0 systems: Check for NULL when saving HobListPtr
    
    Die if cbmem_add can't allocate memory for the hob pointer.  This
    shouldn't ever happen, but it's a reasonable check.
    
    - fsp_broadwell_de already had a check, but it returned to someplace
    inside the FSP.  Just die instead.
    
    Change-Id: Ieef8d6ab81aab0ec3d52b729e34566bb34ee0623
    Found-by: Coverity Scan #1291162
    Signed-off-by: Martin Roth <martinroth at google.com>
---
 src/mainboard/intel/cougar_canyon2/romstage.c      | 4 +++-
 src/soc/intel/fsp_baytrail/romstage/romstage.c     | 5 ++++-
 src/soc/intel/fsp_broadwell_de/romstage/romstage.c | 8 +++-----
 src/southbridge/intel/fsp_i89xx/romstage.c         | 4 +++-
 src/southbridge/intel/fsp_rangeley/romstage.c      | 4 +++-
 5 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/src/mainboard/intel/cougar_canyon2/romstage.c b/src/mainboard/intel/cougar_canyon2/romstage.c
index 998528d..bf5b738 100644
--- a/src/mainboard/intel/cougar_canyon2/romstage.c
+++ b/src/mainboard/intel/cougar_canyon2/romstage.c
@@ -298,7 +298,9 @@ void romstage_main_continue(EFI_STATUS status, VOID *HobListPtr) {
 	}
 
 	/* Save the HOB pointer in CBMEM to be used in ramstage. */
-	cbmem_hob_ptr = cbmem_add (CBMEM_ID_HOB_POINTER, sizeof(*HobListPtr));
+	cbmem_hob_ptr = cbmem_add(CBMEM_ID_HOB_POINTER, sizeof(*HobListPtr));
+	if (cbmem_hob_ptr == NULL)
+		die("Could not allocate cbmem for HOB pointer");
 	*(u32*)cbmem_hob_ptr = (u32)HobListPtr;
 	post_code(0x4f);
 
diff --git a/src/soc/intel/fsp_baytrail/romstage/romstage.c b/src/soc/intel/fsp_baytrail/romstage/romstage.c
index 9d204d1..7f624fc 100644
--- a/src/soc/intel/fsp_baytrail/romstage/romstage.c
+++ b/src/soc/intel/fsp_baytrail/romstage/romstage.c
@@ -252,7 +252,10 @@ void romstage_main_continue(EFI_STATUS status, void *hob_list_ptr)
 	cbmem_was_initted = !cbmem_recovery(prev_sleep_state == ACPI_S3);
 
 	/* Save the HOB pointer in CBMEM to be used in ramstage*/
-	cbmem_hob_ptr = cbmem_add (CBMEM_ID_HOB_POINTER, sizeof(*hob_list_ptr));
+	cbmem_hob_ptr = cbmem_add(CBMEM_ID_HOB_POINTER, sizeof(*hob_list_ptr));
+	if (cbmem_hob_ptr == NULL)
+		die("Could not allocate cbmem for HOB pointer");
+
 	*(u32*)cbmem_hob_ptr = (u32)hob_list_ptr;
 	post_code(0x4e);
 
diff --git a/src/soc/intel/fsp_broadwell_de/romstage/romstage.c b/src/soc/intel/fsp_broadwell_de/romstage/romstage.c
index 49d9a94..5754ec0 100644
--- a/src/soc/intel/fsp_broadwell_de/romstage/romstage.c
+++ b/src/soc/intel/fsp_broadwell_de/romstage/romstage.c
@@ -106,11 +106,9 @@ void romstage_main_continue(EFI_STATUS status, void *hob_list_ptr)
 	cbmem_was_initted = !cbmem_recovery(0);
 
 	/* Save the HOB pointer in CBMEM to be used in ramstage*/
-	cbmem_hob_ptr = cbmem_add (CBMEM_ID_HOB_POINTER, sizeof(*hob_list_ptr));
-	if (cbmem_hob_ptr == NULL) {
-	   printk(BIOS_DEBUG, "Failed to save HOB pointer in CBMEM.\n");
-	   return;
-	}
+	cbmem_hob_ptr = cbmem_add(CBMEM_ID_HOB_POINTER, sizeof(*hob_list_ptr));
+	if (cbmem_hob_ptr == NULL)
+		die("Could not allocate cbmem for HOB pointer");
 	*(u32 *)cbmem_hob_ptr = (u32)hob_list_ptr;
 
 	/* Load the ramstage. */
diff --git a/src/southbridge/intel/fsp_i89xx/romstage.c b/src/southbridge/intel/fsp_i89xx/romstage.c
index 09cce59..c2b5221 100644
--- a/src/southbridge/intel/fsp_i89xx/romstage.c
+++ b/src/southbridge/intel/fsp_i89xx/romstage.c
@@ -208,7 +208,9 @@ void romstage_main_continue(EFI_STATUS status, VOID *HobListPtr) {
 	}
 
 	/* Save the HOB pointer in CBMEM to be used in ramstage. */
-	cbmem_hob_ptr = cbmem_add (CBMEM_ID_HOB_POINTER, sizeof(HobListPtr));
+	cbmem_hob_ptr = cbmem_add(CBMEM_ID_HOB_POINTER, sizeof(HobListPtr));
+	if (cbmem_hob_ptr == NULL)
+		die("Could not allocate cbmem for HOB pointer");
 	*(uint32_t*)cbmem_hob_ptr = (uint32_t)HobListPtr;
 	post_code(0x4f);
 
diff --git a/src/southbridge/intel/fsp_rangeley/romstage.c b/src/southbridge/intel/fsp_rangeley/romstage.c
index 042aaf9..74df691 100644
--- a/src/southbridge/intel/fsp_rangeley/romstage.c
+++ b/src/southbridge/intel/fsp_rangeley/romstage.c
@@ -122,7 +122,9 @@ void romstage_main_continue(EFI_STATUS status, void *hob_list_ptr) {
 	cbmem_was_initted = !cbmem_recovery(0);
 
 	/* Save the HOB pointer in CBMEM to be used in ramstage*/
-	cbmem_hob_ptr = cbmem_add (CBMEM_ID_HOB_POINTER, sizeof(*hob_list_ptr));
+	cbmem_hob_ptr = cbmem_add(CBMEM_ID_HOB_POINTER, sizeof(*hob_list_ptr));
+	if (cbmem_hob_ptr == NULL)
+		die("Could not allocate cbmem for HOB pointer");
 	*(u32*)cbmem_hob_ptr = (u32)hob_list_ptr;
 	post_code(0x4e);
 



More information about the coreboot-gerrit mailing list