[PATCH 1/3] fixup! scripts: imx-image: Fix writing image with IVT offset = 0

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When data.header_gap == 0, like on i.MX6, we seek to the start of the
file after writing the barebox header there and proceed to overwrite
it again.

Therefore we can no longer detect the filetype and affected images
can't be booted/flashed directly on < i.MX8 anymore. Fix this up:

- on i.MX8, there is nothing at the start, so it's ok to write there
- on i.MX6, we overwrite buf[0..sizeof_bb_header-1], but that's the way
  it was before

Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx>
---
 scripts/imx/imx-image.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/scripts/imx/imx-image.c b/scripts/imx/imx-image.c
index 64be682417e0..de04962b09d1 100644
--- a/scripts/imx/imx-image.c
+++ b/scripts/imx/imx-image.c
@@ -978,10 +978,7 @@ int main(int argc, char *argv[])
 	}
 
 	if (data.cpu_type == IMX_CPU_IMX35) {
-		xwrite(outfd, add_barebox_header ? bb_header : buf,
-		       sizeof_bb_header);
-		xwrite(outfd, buf + sizeof_bb_header,
-		       header_len - sizeof_bb_header);
+		xwrite(outfd, buf, header_len);
 		xwrite(outfd, buf, header_len);
 	} else {
 		if (add_barebox_header &&
@@ -990,9 +987,6 @@ int main(int argc, char *argv[])
 			exit(1);
 		}
 
-		xwrite(outfd, add_barebox_header ? bb_header : buf,
-		       sizeof_bb_header);
-
 		if (lseek(outfd, data.header_gap, SEEK_SET) < 0) {
 			perror("lseek");
 			exit(1);
@@ -1001,6 +995,9 @@ int main(int argc, char *argv[])
 		xwrite(outfd, buf, header_len);
 	}
 
+	if (add_barebox_header)
+		pwrite(outfd, bb_header, sizeof_bb_header, 0);
+
 	xwrite(outfd, infile, insize);
 
 	/* pad until next 4k boundary */
-- 
2.27.0


_______________________________________________
barebox mailing list
barebox@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/barebox



[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux