During manufacturing it is useful to be able to verify integrity of
secondary fit image by just running
`./fit_check_sign -f /dev/mtdblock? -k ...`
This was unfortunately failing as fstat(fd, sbuf) was setting
sbuf->st_size to zero, which caused mmap to fail later on.

Signed-off-by: Radek Dostál <[email protected]>
Reviewed-by: Vladimir Koutny <[email protected]>
---
 tools/fit_common.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/tools/fit_common.c b/tools/fit_common.c
index d96085e..2c917d3 100644
--- a/tools/fit_common.c
+++ b/tools/fit_common.c
@@ -22,6 +22,8 @@
 #include "fit_common.h"
 #include <image.h>
 #include <u-boot/crc.h>
+#include <sys/ioctl.h>
+#include <linux/fs.h>
 
 int fit_verify_header(unsigned char *ptr, int image_size,
                        struct image_tool_params *params)
@@ -58,6 +60,14 @@ int mmap_fdt(const char *cmdname, const char *fname, size_t 
size_inc,
                goto err;
        }
 
+       if (sbuf->st_size == 0 && S_ISBLK(sbuf->st_mode)) {
+               if (ioctl(fd, BLKGETSIZE64, &sbuf->st_size) < 0) {
+                       fprintf(stderr, "%s: Can't determine size of %s: %s\n",
+                               cmdname, fname, strerror(errno));
+                       goto err;
+               }
+       }
+
        if (size_inc) {
                sbuf->st_size += size_inc;
                if (ftruncate(fd, sbuf->st_size)) {
-- 
2.7.4

_______________________________________________
U-Boot mailing list
[email protected]
https://lists.denx.de/listinfo/u-boot

Reply via email to