[PATCH] xilinx: zynqmp: Do not use null as spl bss start address

Michal Simek michal.simek at xilinx.com
Wed Jun 1 14:59:25 CEST 2022



On 6/1/22 14:27, Stefan Herbrechtsmeier wrote:
> Hi,
> 
> Am 01.06.2022 um 13:59 schrieb Michal Simek:
>> Hi,
>>
>> first of all subject is not accurate. We are not using null as start but 
>> address 0.
> 
> I will replace null with 0.
> 
>>
>> On 6/1/22 12:55, Stefan Herbrechtsmeier wrote:
>>> [CAUTION: External Email]
>>>
>>> From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier at weidmueller.com>
>>>
>>> Do not use null as address for memory because of the special meaning for
>>> pointers. Change the spl bss start address to the second page.
>>>
>>> Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier at weidmueller.com>
>>>
>>> ---
>>> The problem was discovered with a static char array initialized with an
>>> empty string.
>>
>> It means your code is doing wrong pointer arithmeticians which pointed to BSS 
>> section and overwrites there something. What is that code doing?
> 
> I like to call the zynqmp_get_silicon_idcode_name function from my board code 
> and therefore rework the function to return static memory to avoid a memory 
> allocation on each call.
> 
> -    char name[ZYNQMP_VERSION_SIZE];
> +    static char name[ZYNQMP_VERSION_SIZE] = "";

Try to remove = "".
Undefined variables should be placed to bss section.

> 
> +    if (name[0])
> +        return name;
> 
> -    return strdup(name);
> +    return name;
> 
> The name variable gets the address 0 which means that snprintf and strncat do 
> nothing because the dest pointer and NULL are equal.

Ok. I see. It become the first variable in bss section.

Thanks,
Michal


More information about the U-Boot mailing list