Fix the -S to modify the totalsize properly.
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 <vanbaren@cideas.com>
This commit is contained in:
committed by
Jon Loeliger
parent
86c01ee6df
commit
7ea144f4c0
29
flattree.c
29
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)
|
||||
@@ -370,6 +371,19 @@ void dt_to_blob(FILE *f, struct boot_info *bi, int version,
|
||||
make_bph(&bph, vi, reservebuf.len, dtbuf.len, strbuf.len,
|
||||
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,
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user