diff mbox

[U-Boot] fdt: Check if the FDT address is configured

Message ID 1346826884-12829-1-git-send-email-marex@denx.de
State Accepted
Commit e02c9458748a59e5d80649deb5e40f96ed992bb5
Delegated to: Jerry Van Baren
Headers show

Commit Message

Marek Vasut Sept. 5, 2012, 6:34 a.m. UTC
In case the "fdt addr" command wasn't ran yet and any other "fdt"
subcommand was issued, the system crashed due to NULL pointer being
used.

This is caused by "fdt addr" command setting up a pointer to the
FDT memory location. Prior issuing "fdt addr", the pointer is NULL
so calling any other subcommands crashed the u-boot.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Simon Glass <sjg@chromium.org>
---
 common/cmd_fdt.c |   13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

Note: Damn, I'm falling asleep already :-( I hope the text above at
      least makes sense though.

Comments

Jerry Van Baren Sept. 13, 2012, 1:48 a.m. UTC | #1
Hi Marek,

I'll queue this up this weekend.

The merge window for v2012.10 closed September 18.  Unless there is an
overriding urgency, the patch will go into the following release.

On 09/05/2012 02:34 AM, Marek Vasut wrote:
> In case the "fdt addr" command wasn't ran yet and any other "fdt"
> subcommand was issued, the system crashed due to NULL pointer being
> used.
> 
> This is caused by "fdt addr" command setting up a pointer to the
> FDT memory location. Prior issuing "fdt addr", the pointer is NULL
> so calling any other subcommands crashed the u-boot.
> 
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Simon Glass <sjg@chromium.org>
> ---
>  common/cmd_fdt.c |   13 ++++++++++++-
>  1 file changed, 12 insertions(+), 1 deletion(-)
> 
> Note: Damn, I'm falling asleep already :-( I hope the text above at
>       least makes sense though.
> 
> diff --git a/common/cmd_fdt.c b/common/cmd_fdt.c
> index 9a5c53e..e2225c4 100644
> --- a/common/cmd_fdt.c
> +++ b/common/cmd_fdt.c
> @@ -114,10 +114,21 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
>  			}
>  		}
>  
> +		return CMD_RET_SUCCESS;
> +	}
> +
> +	if (!working_fdt) {
> +		puts(
> +			"No FDT memory address configured. Please configure\n"
> +			"the FDT address via \"fdt addr <address>\" command.\n"
> +			"Aborting!\n");
> +		return CMD_RET_FAILURE;
> +	}
> +
>  	/*
>  	 * Move the working_fdt
>  	 */
> -	} else if (strncmp(argv[1], "mo", 2) == 0) {
> +	if (strncmp(argv[1], "mo", 2) == 0) {
>  		struct fdt_header *newaddr;
>  		int  len;
>  		int  err;
> 

Thanks,
gvb
Marek Vasut Sept. 13, 2012, 8:30 a.m. UTC | #2
Dear Jerry Van Baren,

> Hi Marek,
> 
> I'll queue this up this weekend.
> 
> The merge window for v2012.10 closed September 18.  Unless there is an
> overriding urgency, the patch will go into the following release.

It's a fix, I'd say queue it for current release. Only fixes go into current 
release after MW closed.

Thanks Jerry!

> On 09/05/2012 02:34 AM, Marek Vasut wrote:
> > In case the "fdt addr" command wasn't ran yet and any other "fdt"
> > subcommand was issued, the system crashed due to NULL pointer being
> > used.
> > 
> > This is caused by "fdt addr" command setting up a pointer to the
> > FDT memory location. Prior issuing "fdt addr", the pointer is NULL
> > so calling any other subcommands crashed the u-boot.
> > 
> > Signed-off-by: Marek Vasut <marex@denx.de>
> > Cc: Simon Glass <sjg@chromium.org>
> > ---
> > 
> >  common/cmd_fdt.c |   13 ++++++++++++-
> >  1 file changed, 12 insertions(+), 1 deletion(-)
> > 
> > Note: Damn, I'm falling asleep already :-( I hope the text above at
> > 
> >       least makes sense though.
> > 
> > diff --git a/common/cmd_fdt.c b/common/cmd_fdt.c
> > index 9a5c53e..e2225c4 100644
> > --- a/common/cmd_fdt.c
> > +++ b/common/cmd_fdt.c
> > @@ -114,10 +114,21 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc,
> > char * const argv[])
> > 
> >  			}
> >  		
> >  		}
> > 
> > +		return CMD_RET_SUCCESS;
> > +	}
> > +
> > +	if (!working_fdt) {
> > +		puts(
> > +			"No FDT memory address configured. Please configure\n"
> > +			"the FDT address via \"fdt addr <address>\" command.\n"
> > +			"Aborting!\n");
> > +		return CMD_RET_FAILURE;
> > +	}
> > +
> > 
> >  	/*
> >  	
> >  	 * Move the working_fdt
> >  	 */
> > 
> > -	} else if (strncmp(argv[1], "mo", 2) == 0) {
> > +	if (strncmp(argv[1], "mo", 2) == 0) {
> > 
> >  		struct fdt_header *newaddr;
> >  		int  len;
> >  		int  err;
> 
> Thanks,
> gvb

Best regards,
Marek Vasut
Tom Rini Sept. 13, 2012, 5:37 p.m. UTC | #3
On Thu, Sep 13, 2012 at 10:30:29AM +0200, Marek Vasut wrote:
> Dear Jerry Van Baren,
> 
> > Hi Marek,
> > 
> > I'll queue this up this weekend.
> > 
> > The merge window for v2012.10 closed September 18.  Unless there is an
> > overriding urgency, the patch will go into the following release.
> 
> It's a fix, I'd say queue it for current release. Only fixes go into current 
> release after MW closed.

I second what Marek says, this is a bugfix, so lets get it into the
release.  Thanks!
Jerry Van Baren Sept. 13, 2012, 10:16 p.m. UTC | #4
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 09/13/2012 01:37 PM, Tom Rini wrote:
> On Thu, Sep 13, 2012 at 10:30:29AM +0200, Marek Vasut wrote:
>> Dear Jerry Van Baren,
>> 
>>> Hi Marek,
>>> 
>>> I'll queue this up this weekend.
>>> 
>>> The merge window for v2012.10 closed September 18.  Unless
>>> there is an overriding urgency, the patch will go into the
>>> following release.
>> 
>> It's a fix, I'd say queue it for current release. Only fixes go
>> into current release after MW closed.
> 
> I second what Marek says, this is a bugfix, so lets get it into
> the release.  Thanks!

OK, will do.

Thanks,
gvb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://www.enigmail.net/

iQEcBAEBAgAGBQJQUlsqAAoJEGOcKeGailWqg5QH/1MaQYApeanym3uyMEC4Mjm8
Yc+Tjozb6l3UbnptMLdsH5WT+BexrcyVn8YsgkSCELtTByKPDZIHIQH7KFfttCd5
ZzU/roLZbE0fJmlzaTcSI9fL4+I4ZhgSGhRneQH6zsejOhWuxM0Jv7k43cTk3g0K
75ItdSHc9g7QB1zd0r6HMw7cEKOni4nbzv/ZimHvFgJDo1pUCr1Myee6o7DucqcO
3fMEx8HDH7VW3HFepJb1yN3LI1FIeNc3BBD5rbaVOyTmg5qnbmNa9kEiOGXxmuDA
tAoOo8IraN63XULYXCEpgIrxJ6pb8c7ULdkHyPw2YfEDvgGixDW8HbAa0aqfm9A=
=mvwF
-----END PGP SIGNATURE-----
Jerry Van Baren Sept. 15, 2012, 1:41 p.m. UTC | #5
On 09/05/2012 02:34 AM, Marek Vasut wrote:
> In case the "fdt addr" command wasn't ran yet and any other "fdt"
> subcommand was issued, the system crashed due to NULL pointer being
> used.
> 
> This is caused by "fdt addr" command setting up a pointer to the
> FDT memory location. Prior issuing "fdt addr", the pointer is NULL
> so calling any other subcommands crashed the u-boot.
> 
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Simon Glass <sjg@chromium.org>

Applied and sent a pull request to Tom Rini.

Thanks,
gvb
diff mbox

Patch

diff --git a/common/cmd_fdt.c b/common/cmd_fdt.c
index 9a5c53e..e2225c4 100644
--- a/common/cmd_fdt.c
+++ b/common/cmd_fdt.c
@@ -114,10 +114,21 @@  int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
 			}
 		}
 
+		return CMD_RET_SUCCESS;
+	}
+
+	if (!working_fdt) {
+		puts(
+			"No FDT memory address configured. Please configure\n"
+			"the FDT address via \"fdt addr <address>\" command.\n"
+			"Aborting!\n");
+		return CMD_RET_FAILURE;
+	}
+
 	/*
 	 * Move the working_fdt
 	 */
-	} else if (strncmp(argv[1], "mo", 2) == 0) {
+	if (strncmp(argv[1], "mo", 2) == 0) {
 		struct fdt_header *newaddr;
 		int  len;
 		int  err;