]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
mkimage: fit: erase data-size property when importing data
authorQuentin Schulz <quentin.schulz@cherry.de>
Tue, 23 Sep 2025 10:27:22 +0000 (12:27 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 10 Oct 2025 19:28:36 +0000 (13:28 -0600)
When importing data, the data-offset property is removed and the data
content is imported inside the data property of the node.

When mkimage is run twice on the same FIT, data-size property is already
set in the second run, from the first run (via the fit_export_data
function). If we don't remove the data-size property, nothing guarantees
it matches the actual size of data within the data property. To avoid
possible mistakes when handling the data property, let's simply remove
the data-size property as well.

This also fixes an ordering issue of the data-size and data-offset
properties in FIT when comparing the FIT after one run of mkimage and a
second run. This is due to fit_export_data setting data-offset property
first (it doesn't exist so it's added) and then data-size (it doesn't
exist so it's added) for the first run, while it sets data-offset
property first (removed in fit_import_data, so it doesn't exist so it's
added) and then data-size (it exists already from the first run, so it's
simply modified) for the second run.

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
tools/fit_image.c

index d026f6ff9c855ba41f11ab8b9b8bd82247b68927..0306333141efdedcab1b0108468ca559b9ae7e44 100644 (file)
@@ -819,6 +819,14 @@ static int fit_import_data(struct image_tool_params *params, const char *fname)
                        ret = -EINVAL;
                        goto err_munmap;
                }
+
+               ret = fdt_delprop(fdt, node, FIT_DATA_SIZE_PROP);
+               if (ret) {
+                       debug("%s: Failed to erase %s property: %s\n", __func__,
+                             FIT_DATA_SIZE_PROP, fdt_strerror(ret));
+                       ret = -EINVAL;
+                       goto err_munmap;
+               }
        }
 
        confs = fdt_path_offset(fdt, FIT_CONFS_PATH);