[coreboot-gerrit] New patch to review for coreboot: cbfstool: Don't patch cbfs_file->len, it's already set correctly

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Tue Aug 25 16:01:17 CEST 2015


Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/11322

-gerrit

commit 5897ac4d8aca1131f4165c3a64cfc212aa88c80b
Author: Patrick Georgi <patrick at georgi-clan.de>
Date:   Tue Aug 25 13:00:04 2015 +0200

    cbfstool: Don't patch cbfs_file->len, it's already set correctly
    
    ->len used to be set to the file data length plus the size of the
    padding used for the cbfs_file header. This isn't the case anymore,
    so no patching of this field is necessary anymore.
    
    ->offset still needs to be patched in that case because its final
    value can only be determined when the file's actual location is known.
    
    Change-Id: I1037885f81b4ed3b68898dd7d0e515cf7a9c90a8
    Signed-off-by: Patrick Georgi <patrick at georgi-clan.de>
---
 util/cbfstool/cbfs_image.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/util/cbfstool/cbfs_image.c b/util/cbfstool/cbfs_image.c
index 8662158..a08bb2f 100644
--- a/util/cbfstool/cbfs_image.c
+++ b/util/cbfstool/cbfs_image.c
@@ -487,15 +487,18 @@ static int cbfs_add_entry_at(struct cbfs_image *image,
 		addr = cbfs_get_entry_addr(image, entry);
 	}
 
-	len = size + (content_offset - addr - header_size);
+	len = content_offset - addr - header_size;
 	memcpy(entry, header_data, header_size);
-	if (len != size) {
+	if (len != 0) {
+		/* the header moved backwards a bit to accomodate cbfs_file
+		 * alignment requirements, so patch up ->offset to still point
+		 * to file data.
+		 */
 		DEBUG("|..|header|content|... <use offset to create entry>\n");
 		DEBUG("before: offset=0x%x, len=0x%x\n",
 		      ntohl(entry->offset), ntohl(entry->len));
 		// TODO reset expanded name buffer to 0xFF.
-		entry->offset = htonl(ntohl(entry->offset) + (len - size));
-		entry->len = htonl(size);
+		entry->offset = htonl(ntohl(entry->offset) + len);
 		DEBUG("after: offset=0x%x, len=0x%x\n",
 		      ntohl(entry->offset), ntohl(entry->len));
 	}



More information about the coreboot-gerrit mailing list