[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