diff mbox

[U-Boot,01/12] sunxi: mksunxiboot: Fix loading of files with a size which is not a multiple of 4

Message ID 1401440772-7462-2-git-send-email-hdegoede@redhat.com
State Superseded
Delegated to: Ian Campbell
Headers show

Commit Message

Hans de Goede May 30, 2014, 9:06 a.m. UTC
We should not be aligning the amount of bytes which we try to read from the
disk, this leads to trying to read more bytes then there are which fails.

file_size is already aligned to BLOCK_SIZE before being stored in
img.header.length, so there is no need for load_size at all.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 tools/mksunxiboot.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

Comments

Ian Campbell May 30, 2014, 9:19 a.m. UTC | #1
On Fri, 2014-05-30 at 11:06 +0200, Hans de Goede wrote:
> We should not be aligning the amount of bytes which we try to read from the
> disk, this leads to trying to read more bytes then there are which fails.
> 
> file_size is already aligned to BLOCK_SIZE before being stored in
> img.header.length, so there is no need for load_size at all.
> 
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Acked-by: Ian Campbell <ijc@hellion.org.uk>
Siarhei Siamashka July 23, 2014, 5:29 p.m. UTC | #2
On Fri, 30 May 2014 10:19:16 +0100
Ian Campbell <ijc@hellion.org.uk> wrote:

> On Fri, 2014-05-30 at 11:06 +0200, Hans de Goede wrote:
> > We should not be aligning the amount of bytes which we try to read from the
> > disk, this leads to trying to read more bytes then there are which fails.
> > 
> > file_size is already aligned to BLOCK_SIZE before being stored in
> > img.header.length, so there is no need for load_size at all.
> > 
> > Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> 
> Acked-by: Ian Campbell <ijc@hellion.org.uk>

Acked-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>

Was there any valid reason why this important bugfix has not been
nominated for v2014.07?
Ian Campbell July 23, 2014, 5:40 p.m. UTC | #3
On Wed, 2014-07-23 at 20:29 +0300, Siarhei Siamashka wrote:
> On Fri, 30 May 2014 10:19:16 +0100
> Ian Campbell <ijc@hellion.org.uk> wrote:
> 
> > On Fri, 2014-05-30 at 11:06 +0200, Hans de Goede wrote:
> > > We should not be aligning the amount of bytes which we try to read from the
> > > disk, this leads to trying to read more bytes then there are which fails.
> > > 
> > > file_size is already aligned to BLOCK_SIZE before being stored in
> > > img.header.length, so there is no need for load_size at all.
> > > 
> > > Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> > 
> > Acked-by: Ian Campbell <ijc@hellion.org.uk>
> 
> Acked-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
> 
> Was there any valid reason why this important bugfix has not been
> nominated for v2014.07?

Not sure what you mean, it is part of the PR at
http://patchwork.ozlabs.org/patch/371704/

Ian.
Ian Campbell July 23, 2014, 6:30 p.m. UTC | #4
On Wed, 2014-07-23 at 18:40 +0100, Ian Campbell wrote:
> On Wed, 2014-07-23 at 20:29 +0300, Siarhei Siamashka wrote:
> > On Fri, 30 May 2014 10:19:16 +0100
> > Ian Campbell <ijc@hellion.org.uk> wrote:
> > 
> > > On Fri, 2014-05-30 at 11:06 +0200, Hans de Goede wrote:
> > > > We should not be aligning the amount of bytes which we try to read from the
> > > > disk, this leads to trying to read more bytes then there are which fails.
> > > > 
> > > > file_size is already aligned to BLOCK_SIZE before being stored in
> > > > img.header.length, so there is no need for load_size at all.
> > > > 
> > > > Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> > > 
> > > Acked-by: Ian Campbell <ijc@hellion.org.uk>
> > 
> > Acked-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
> > 
> > Was there any valid reason why this important bugfix has not been
> > nominated for v2014.07?
> 
> Not sure what you mean, it is part of the PR at
> http://patchwork.ozlabs.org/patch/371704/

Oh, you said .07 which was the last one.

There was no particular reason, it just didn't make it. We were still
figuring out the upstream work flow at the time.

Ian.
diff mbox

Patch

diff --git a/tools/mksunxiboot.c b/tools/mksunxiboot.c
index da7c9f0..1f0fbae 100644
--- a/tools/mksunxiboot.c
+++ b/tools/mksunxiboot.c
@@ -77,7 +77,7 @@  int main(int argc, char *argv[])
 {
 	int fd_in, fd_out;
 	struct boot_img img;
-	unsigned file_size, load_size;
+	unsigned file_size;
 	int count;
 
 	if (argc < 2) {
@@ -101,8 +101,6 @@  int main(int argc, char *argv[])
 	if (file_size > SRAM_LOAD_MAX_SIZE) {
 		fprintf(stderr, "ERROR: File too large!\n");
 		return EXIT_FAILURE;
-	} else {
-		load_size = ALIGN(file_size, sizeof(int));
 	}
 
 	fd_out = open(argv[2], O_WRONLY | O_CREAT, 0666);
@@ -113,8 +111,8 @@  int main(int argc, char *argv[])
 
 	/* read file to buffer to calculate checksum */
 	lseek(fd_in, 0, SEEK_SET);
-	count = read(fd_in, img.code, load_size);
-	if (count != load_size) {
+	count = read(fd_in, img.code, file_size);
+	if (count != file_size) {
 		perror("Reading input image");
 		return EXIT_FAILURE;
 	}
@@ -126,7 +124,7 @@  int main(int argc, char *argv[])
 		 & 0x00FFFFFF);
 	memcpy(img.header.magic, BOOT0_MAGIC, 8);	/* no '0' termination */
 	img.header.length =
-		ALIGN(load_size + sizeof(struct boot_file_head), BLOCK_SIZE);
+		ALIGN(file_size + sizeof(struct boot_file_head), BLOCK_SIZE);
 	gen_check_sum(&img.header);
 
 	count = write(fd_out, &img, img.header.length);