]> Git Repo - J-u-boot.git/blobdiff - tools/fit_image.c
configs: stm32mp1: Restore boot SPL from sdcard for Engicam i.Core STM32MP1 EDIMM2.2
[J-u-boot.git] / tools / fit_image.c
index 10f36e9342234f9e407b56e60b9787fb0a24e919..0fccfbb4ebda47f6a43f21b6a4e4064797597d13 100644 (file)
@@ -61,7 +61,7 @@ static int fit_add_file_data(struct image_tool_params *params, size_t size_inc,
                ret = fit_set_timestamp(ptr, 0, time);
        }
 
-       if (!ret)
+       if (CONFIG_IS_ENABLED(FIT_SIGNATURE) && !ret)
                ret = fit_pre_load_data(params->keydir, dest_blob, ptr);
 
        if (!ret) {
@@ -137,7 +137,7 @@ static int fdt_property_file(struct image_tool_params *params,
        int ret;
        int fd;
 
-       fd = open(fname, O_RDWR | O_BINARY);
+       fd = open(fname, O_RDONLY | O_BINARY);
        if (fd < 0) {
                fprintf(stderr, "%s: Can't open %s: %s\n",
                        params->cmdname, fname, strerror(errno));
@@ -497,7 +497,7 @@ static int fit_extract_data(struct image_tool_params *params, const char *fname)
 {
        void *buf = NULL;
        int buf_ptr;
-       int fit_size, new_size;
+       int fit_size, unpadded_size, new_size, pad_boundary;
        int fd;
        struct stat sbuf;
        void *fdt;
@@ -564,9 +564,13 @@ static int fit_extract_data(struct image_tool_params *params, const char *fname)
        /* Pack the FDT and place the data after it */
        fdt_pack(fdt);
 
-       new_size = fdt_totalsize(fdt);
-       new_size = ALIGN(new_size, align_size);
+       unpadded_size = fdt_totalsize(fdt);
+       new_size = ALIGN(unpadded_size, align_size);
        fdt_set_totalsize(fdt, new_size);
+       if (unpadded_size < fit_size) {
+               pad_boundary = new_size < fit_size ? new_size : fit_size;
+               memset(fdt + unpadded_size, 0, pad_boundary - unpadded_size);
+       }
        debug("Size reduced from %x to %x\n", fit_size, fdt_totalsize(fdt));
        debug("External data size %x\n", buf_ptr);
        munmap(fdt, sbuf.st_size);
This page took 0.026404 seconds and 4 git commands to generate.