Patchwork [U-Boot] arm: fix bd pointer dereference prior initialization

login
register
mail settings
Submitter Igor Grinberg
Date July 28, 2011, 9:04 a.m.
Message ID <1311843846-27336-1-git-send-email-grinberg@compulab.co.il>
Download mbox | patch
Permalink /patch/107215/
State Superseded
Delegated to: Albert ARIBAUD
Headers show

Comments

Igor Grinberg - July 28, 2011, 9:04 a.m.
gd->bd pointer has been used prior been initialized.
Move the relevant code after the initialization.

Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
---
 arch/arm/lib/board.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)
Chander Kashyap - July 29, 2011, 3:53 a.m.
On 28 July 2011 14:34, Igor Grinberg <grinberg@compulab.co.il> wrote:
> gd->bd pointer has been used prior been initialized.
> Move the relevant code after the initialization.
>
> Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
tested-by: Chander Kashyap <chander.kashyap@linaro.org>
> ---
>  arch/arm/lib/board.c |    8 ++++----
>  1 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c
> index bcbf697..52e90db 100644
> --- a/arch/arm/lib/board.c
> +++ b/arch/arm/lib/board.c
> @@ -281,10 +281,6 @@ void board_init_f (ulong bootflag)
>
>        gd->mon_len = _bss_end_ofs;
>
> -#ifdef CONFIG_MACH_TYPE
> -       gd->bd->bi_arch_number = CONFIG_MACH_TYPE; /* board id for Linux */
> -#endif
> -
>        for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
>                if ((*init_fnc_ptr)() != 0) {
>                        hang ();
> @@ -409,6 +405,10 @@ void board_init_f (ulong bootflag)
>        post_run (NULL, POST_ROM | post_bootmode_get(0));
>  #endif
>
> +#ifdef CONFIG_MACH_TYPE
> +       gd->bd->bi_arch_number = CONFIG_MACH_TYPE; /* board id for Linux */
> +#endif
> +
>        gd->bd->bi_baudrate = gd->baudrate;
>        /* Ram ist board specific, so move it to board code ... */
>        dram_init_banksize();
> --
> 1.7.3.4
>
>
Albert ARIBAUD - Aug. 12, 2011, 9:20 a.m.
Hi Igor,

On 28/07/2011 11:04, Igor Grinberg wrote:
> gd->bd pointer has been used prior been initialized.
> Move the relevant code after the initialization.
>
> Signed-off-by: Igor Grinberg<grinberg@compulab.co.il>
> ---
>   arch/arm/lib/board.c |    8 ++++----
>   1 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c
> index bcbf697..52e90db 100644
> --- a/arch/arm/lib/board.c
> +++ b/arch/arm/lib/board.c
> @@ -281,10 +281,6 @@ void board_init_f (ulong bootflag)
>
>   	gd->mon_len = _bss_end_ofs;
>
> -#ifdef CONFIG_MACH_TYPE
> -	gd->bd->bi_arch_number = CONFIG_MACH_TYPE; /* board id for Linux */
> -#endif
> -
>   	for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
>   		if ((*init_fnc_ptr)() != 0) {
>   			hang ();
> @@ -409,6 +405,10 @@ void board_init_f (ulong bootflag)
>   	post_run (NULL, POST_ROM | post_bootmode_get(0));
>   #endif
>
> +#ifdef CONFIG_MACH_TYPE
> +	gd->bd->bi_arch_number = CONFIG_MACH_TYPE; /* board id for Linux */
> +#endif
> +
>   	gd->bd->bi_baudrate = gd->baudrate;
>   	/* Ram ist board specific, so move it to board code ... */
>   	dram_init_banksize();

As a bugfix, I'd like to pull this patch in now. However, it does not 
apply cleanly to current u-boot-arm/master, and besides, I'd rather have 
the bi_arch_number initialized as soon as bd is set up, i.e. just after 
the assignment to gd->bd.

Amicalement,
Igor Grinberg - Aug. 17, 2011, 9:43 a.m.
Hi Albert,

Sorry for the poor responsiveness - I was out of office for about 2 weeks.


On 08/12/11 12:20, Albert ARIBAUD wrote:
> Hi Igor,
>
> On 28/07/2011 11:04, Igor Grinberg wrote:
>> gd->bd pointer has been used prior been initialized.
>> Move the relevant code after the initialization.
>>
>> Signed-off-by: Igor Grinberg<grinberg@compulab.co.il>
>> ---
>>   arch/arm/lib/board.c |    8 ++++----
>>   1 files changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c
>> index bcbf697..52e90db 100644
>> --- a/arch/arm/lib/board.c
>> +++ b/arch/arm/lib/board.c
>> @@ -281,10 +281,6 @@ void board_init_f (ulong bootflag)
>>
>>       gd->mon_len = _bss_end_ofs;
>>
>> -#ifdef CONFIG_MACH_TYPE
>> -    gd->bd->bi_arch_number = CONFIG_MACH_TYPE; /* board id for Linux */
>> -#endif
>> -
>>       for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
>>           if ((*init_fnc_ptr)() != 0) {
>>               hang ();
>> @@ -409,6 +405,10 @@ void board_init_f (ulong bootflag)
>>       post_run (NULL, POST_ROM | post_bootmode_get(0));
>>   #endif
>>
>> +#ifdef CONFIG_MACH_TYPE
>> +    gd->bd->bi_arch_number = CONFIG_MACH_TYPE; /* board id for Linux */
>> +#endif
>> +
>>       gd->bd->bi_baudrate = gd->baudrate;
>>       /* Ram ist board specific, so move it to board code ... */
>>       dram_init_banksize();
>
> As a bugfix, I'd like to pull this patch in now. However, it does not apply cleanly to current u-boot-arm/master, and besides, I'd rather have the bi_arch_number initialized as soon as bd is set up, i.e. just after the assignment to gd->bd.

Well, it applied cleanly for me...
Nevertheless, I'm sending a v2 rebased on top of the most recent u-boot-arm/master
with your requested change.

Patch

diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c
index bcbf697..52e90db 100644
--- a/arch/arm/lib/board.c
+++ b/arch/arm/lib/board.c
@@ -281,10 +281,6 @@  void board_init_f (ulong bootflag)
 
 	gd->mon_len = _bss_end_ofs;
 
-#ifdef CONFIG_MACH_TYPE
-	gd->bd->bi_arch_number = CONFIG_MACH_TYPE; /* board id for Linux */
-#endif
-
 	for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
 		if ((*init_fnc_ptr)() != 0) {
 			hang ();
@@ -409,6 +405,10 @@  void board_init_f (ulong bootflag)
 	post_run (NULL, POST_ROM | post_bootmode_get(0));
 #endif
 
+#ifdef CONFIG_MACH_TYPE
+	gd->bd->bi_arch_number = CONFIG_MACH_TYPE; /* board id for Linux */
+#endif
+
 	gd->bd->bi_baudrate = gd->baudrate;
 	/* Ram ist board specific, so move it to board code ... */
 	dram_init_banksize();