diff mbox

[U-Boot] fdt_support.c: Correct linux, initrd-start/end setting

Message ID 1390258045-22112-1-git-send-email-trini@ti.com
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Tom Rini Jan. 20, 2014, 10:47 p.m. UTC
The change to add 64bit initrd support broke 32bit initrd support as it
always set 64bits worth of data into the properties, even on 32bit
systems.  The fix is to use addr_cell_len (which already says how much
data is in 'tmp') to set the property, rather than always setting 8.
Thanks to Stephen Warren for pointing out the fix here.

Reported-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Tom Rini <trini@ti.com>
---
 common/fdt_support.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

fenghua@phytium.com.cn Jan. 21, 2014, 10:09 a.m. UTC | #1
> -----Original Messages-----
> From: "Tom Rini" <trini@ti.com>
> Sent Time: 2014-01-21 06:47:25 (Tuesday)
> To: u-boot@lists.denx.de
> Cc: 
> Subject: [U-Boot] [PATCH] fdt_support.c: Correct linux, initrd-start/end setting
> 
> The change to add 64bit initrd support broke 32bit initrd support as it
> always set 64bits worth of data into the properties, even on 32bit
> systems.  The fix is to use addr_cell_len (which already says how much
> data is in 'tmp') to set the property, rather than always setting 8.
> Thanks to Stephen Warren for pointing out the fix here.
> 
> Reported-by: Otavio Salvador <otavio@ossystems.com.br>
> Signed-off-by: Tom Rini <trini@ti.com>
> ---
>  common/fdt_support.c |    4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/common/fdt_support.c b/common/fdt_support.c
> index b9dce99..f9f358e 100644
> --- a/common/fdt_support.c
> +++ b/common/fdt_support.c
> @@ -204,7 +204,7 @@ int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end, int force)
>  	if ((path == NULL) || force) {
>  		write_cell((u8 *)&tmp, initrd_start, addr_cell_len);
>  		err = fdt_setprop(fdt, nodeoffset,
> -			"linux,initrd-start", &tmp, sizeof(tmp));
> +			"linux,initrd-start", &tmp, addr_cell_len);
>  		if (err < 0) {
>  			printf("WARNING: "
>  				"could not set linux,initrd-start %s.\n",
> @@ -213,7 +213,7 @@ int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end, int force)
>  		}
>  		write_cell((u8 *)&tmp, initrd_end, addr_cell_len);
>  		err = fdt_setprop(fdt, nodeoffset,
> -			"linux,initrd-end", &tmp, sizeof(tmp));
> +			"linux,initrd-end", &tmp, addr_cell_len);
>  		if (err < 0) {
>  			printf("WARNING: could not set linux,initrd-end %s.\n",
>  				fdt_strerror(err));
> -- 
> 1.7.9.5
> 

It should be like this. Acked.
diff mbox

Patch

diff --git a/common/fdt_support.c b/common/fdt_support.c
index b9dce99..f9f358e 100644
--- a/common/fdt_support.c
+++ b/common/fdt_support.c
@@ -204,7 +204,7 @@  int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end, int force)
 	if ((path == NULL) || force) {
 		write_cell((u8 *)&tmp, initrd_start, addr_cell_len);
 		err = fdt_setprop(fdt, nodeoffset,
-			"linux,initrd-start", &tmp, sizeof(tmp));
+			"linux,initrd-start", &tmp, addr_cell_len);
 		if (err < 0) {
 			printf("WARNING: "
 				"could not set linux,initrd-start %s.\n",
@@ -213,7 +213,7 @@  int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end, int force)
 		}
 		write_cell((u8 *)&tmp, initrd_end, addr_cell_len);
 		err = fdt_setprop(fdt, nodeoffset,
-			"linux,initrd-end", &tmp, sizeof(tmp));
+			"linux,initrd-end", &tmp, addr_cell_len);
 		if (err < 0) {
 			printf("WARNING: could not set linux,initrd-end %s.\n",
 				fdt_strerror(err));