libpayload: Fix reading x86 CBFS images from RAM
Three issues: 1. the hardcoded dereferenced pointer at 0xfffffffc 2. "RAM media" has no idea about ROM relative addresses 3. off-by-one in RAM media: it's legal to request 4 bytes from 0xfffffffc Change-Id: I671ac12d412c71dc8e8e6114f2ea13f58dd99c1d Signed-off-by: Patrick Georgi <patrick@georgi-clan.de> Reviewed-on: http://review.coreboot.org/2624 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Hung-Te Lin <hungte@chromium.org>
This commit is contained in:
@ -43,7 +43,11 @@ static int ram_open(struct cbfs_media *media) {
|
||||
|
||||
static void *ram_map(struct cbfs_media *media, size_t offset, size_t count) {
|
||||
struct ram_media *m = (struct ram_media*)media->context;
|
||||
if (offset + count >= m->size) {
|
||||
/* assume addressing from top of image in this case */
|
||||
if (offset > 0xf0000000) {
|
||||
offset = m->size + offset;
|
||||
}
|
||||
if (offset + count > m->size) {
|
||||
printf("ERROR: ram_map: request out of range (0x%x+0x%x)\n",
|
||||
offset, count);
|
||||
return NULL;
|
||||
|
Reference in New Issue
Block a user