[coreboot-gerrit] Change in coreboot[master]: intelmetool: handle failures to mmap MEI memory

Paul Wise (Debian) (Code Review) gerrit at coreboot.org
Thu May 4 08:15:07 CEST 2017


Paul Wise (Debian) has uploaded a new change for review. ( https://review.coreboot.org/19562 )

Change subject: intelmetool: handle failures to mmap MEI memory
......................................................................

intelmetool: handle failures to mmap MEI memory

Fixes crashes when there is an error mapping memory.

    Error mapping physical memory 0x0000004275159040 [0x4000] ERRNO=1
    Segmentation fault (core dumped)

Change-Id: I5becc0c2870dd97297c4e8d1b101b95b31792ca7
Signed-off-by: Paul Wise <pabs3 at bonedaddy.net>
---
M util/intelmetool/intelmetool.c
M util/intelmetool/me.c
2 files changed, 14 insertions(+), 0 deletions(-)


  git pull ssh://review.coreboot.org:29418/coreboot refs/changes/62/19562/1

diff --git a/util/intelmetool/intelmetool.c b/util/intelmetool/intelmetool.c
index 62dc4d9..11c2120 100644
--- a/util/intelmetool/intelmetool.c
+++ b/util/intelmetool/intelmetool.c
@@ -83,6 +83,10 @@
 	uint8_t *dump;
 
 	dump = map_physical_exact((off_t)me_clone, (void *)me_clone, 0x2000000);
+	if (dump == NULL) {
+		printf("Could not map ME memory\n");
+		return;
+	}
 	zeroit(dump, 0x2000000);
 	printf("Send magic command for memory clone\n");
 
@@ -210,6 +214,12 @@
 
 	rcba_phys = pci_read_long(sb, 0xf0) & 0xfffffffe;
 	rcba = map_physical((off_t)rcba_phys, size);
+	if (rcba == NULL) {
+		printf("Could not map MEI PCI device memory\n");
+		pci_free_dev(sb);
+		pci_cleanup(pacc);
+		return 1;
+	}
 
 	//printf("RCBA at 0x%08" PRIx32 "\n", (uint32_t)rcba_phys);
 	fd2 = *(uint32_t *)(rcba + FD2);
diff --git a/util/intelmetool/me.c b/util/intelmetool/me.c
index da5fb716..8c703a3 100644
--- a/util/intelmetool/me.c
+++ b/util/intelmetool/me.c
@@ -581,6 +581,10 @@
 	mei_base_address = dev->base_addr[0] & ~0xf;
 	pagerounded = mei_base_address & ~0xfff;
 	mei_mmap = map_physical(pagerounded, 0x2000) + mei_base_address - pagerounded;
+	if (mei_mmap == NULL) {
+		printf("Could not map ME setup memory\n");
+		return 1;
+	}
 
 	/* Ensure Memory and Bus Master bits are set */
 	reg32 = pci_read_long(dev, PCI_COMMAND);

-- 
To view, visit https://review.coreboot.org/19562
To unsubscribe, visit https://review.coreboot.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5becc0c2870dd97297c4e8d1b101b95b31792ca7
Gerrit-PatchSet: 1
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Owner: Paul Wise (Debian) <pabs at debian.org>



More information about the coreboot-gerrit mailing list