[PATCH] Fix the -S to modify the totalsize properly.
From: Jerry Van Baren <hidden>
Date: 2007-04-20 02:22:38
Subsystem:
the rest · Maintainer:
Linus Torvalds
With the last improvement to pad out the blob, I broke the blob header totalsize adjustment. The adjustment was moved up in the code before the memory image of the blob is created. Signed-off-by: Gerald Van Baren <redacted> --- Hi Jon, This fixes my header totalsize screwup. Until this is applied, the -S adds padding but is not effective. My apologies, gvb flattree.c | 29 +++++++++++++++++------------ 1 files changed, 17 insertions(+), 12 deletions(-)
diff --git a/flattree.c b/flattree.c
index 913b02f..b54f7ef 100644
--- a/flattree.c
+++ b/flattree.c@@ -353,6 +353,7 @@ void dt_to_blob(FILE *f, struct boot_info *bi, int version, struct data dtbuf = empty_data; struct data strbuf = empty_data; struct boot_param_header bph; + int padlen; for (i = 0; i < ARRAY_SIZE(version_table); i++) { if (version_table[i].version == version)
@@ -371,6 +372,19 @@ void dt_to_blob(FILE *f, struct boot_info *bi, int version, boot_cpuid_phys); /* + * If the user asked for more space than is used, adjust the totalsize. + */ + padlen = minsize - be32_to_cpu(bph.totalsize); + if (padlen > 0) { + bph.totalsize = cpu_to_be32(minsize); + } else { + if ((minsize > 0) && (quiet < 1)) + fprintf(stderr, + "Warning: blob size %d >= minimum size %d\n", + be32_to_cpu(bph.totalsize), minsize); + } + + /* * Assemble the blob: start with the header, add with alignment * the reserve buffer, add the reserve map terminating zeroes, * the device tree itself, and finally the strings.
@@ -385,18 +399,9 @@ void dt_to_blob(FILE *f, struct boot_info *bi, int version, /* * If the user asked for more space than is used, pad out the blob. */ - if (minsize > 0) { - int padlen = minsize - be32_to_cpu(bph.totalsize); - - if (padlen > 0) { - blob = data_append_zeroes(blob, padlen); - bph.totalsize = cpu_to_be32(minsize); - } else { - if (quiet < 1) - fprintf(stderr, - "Warning: blob size %d >= minimum size %d\n", - be32_to_cpu(bph.totalsize), minsize); - } + if (padlen > 0) { + blob = data_append_zeroes(blob, padlen); + bph.totalsize = cpu_to_be32(minsize); } fwrite(blob.val, blob.len, 1, f);
--
1.4.4.4