summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Reinauer <reinauer@chromium.org>2011-11-07 12:56:12 -0800
committerPatrick Georgi <patrick@georgi-clan.de>2011-11-08 21:19:22 +0100
commitc6b8b7dcc4cc1c3e4b142d3b5d460b1550ea8a73 (patch)
treecd23becce82d9f7de6b4e7cff1ec4298745d4328
parent2e2b84e42063c2947adbba3781c03c5ec44cc68e (diff)
selfboot: fix bug in valid_area()
valid_area will accept a region as valid for the payload if only a part of coreboot fits in that region. This means if a payload reaches into a neighboring RESERVED region, coreboot would not care and happily overwrite that region, as long as the payload also writes to some RAM. Change-Id: Ie263f83be18009b01a31c71e7285c998747d097f Signed-off-by: Stefan Reinauer <reinauer@google.com> Reviewed-on: http://review.coreboot.org/425 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
-rw-r--r--src/boot/selfboot.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/boot/selfboot.c b/src/boot/selfboot.c
index 573dd5ee5a..ab0bf21c67 100644
--- a/src/boot/selfboot.c
+++ b/src/boot/selfboot.c
@@ -140,10 +140,10 @@ static int valid_area(struct lb_memory *mem, unsigned long buffer,
mtype = mem->map[i].type;
mstart = unpack_lb64(mem->map[i].start);
mend = mstart + unpack_lb64(mem->map[i].size);
- if ((mtype == LB_MEM_RAM) && (start < mend) && (end > mstart)) {
+ if ((mtype == LB_MEM_RAM) && (start >= mstart) && (end < mend)) {
break;
}
- if ((mtype == LB_MEM_TABLE) && (start < mend) && (end > mstart)) {
+ if ((mtype == LB_MEM_TABLE) && (start >= mstart) && (end < mend)) {
printk(BIOS_ERR, "Payload is overwriting coreboot tables.\n");
break;
}