[PATCH v5 6/7] ram: stm32: fix strsep failed on read only memory

Patrice CHOTARD patrice.chotard at foss.st.com
Fri Apr 9 11:47:45 CEST 2021


Hi Dillon

On 4/9/21 9:28 AM, dillon.minfei at gmail.com wrote:
> From: dillon min <dillon.minfei at gmail.com>
> 
> strsep will change data from original memory address,
> in case the memory is in non-sdram/sram place, will
> run into a bug(hang at SDRAM: )
> 
> just add a temporary array to store bank_name[] to fix this
> bug.
> 
> Signed-off-by: dillon min <dillon.minfei at gmail.com>
> Reviewed-by: Patrice Chotard <patrice.chotard at foss.st.com>
> ---
> v5: no changes
> 
>  drivers/ram/stm32_sdram.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/ram/stm32_sdram.c b/drivers/ram/stm32_sdram.c
> index 540ad85..3e25cc7 100644
> --- a/drivers/ram/stm32_sdram.c
> +++ b/drivers/ram/stm32_sdram.c
> @@ -268,6 +268,7 @@ static int stm32_fmc_of_to_plat(struct udevice *dev)
>  	u32 swp_fmc;
>  	ofnode bank_node;
>  	char *bank_name;
> +	char _bank_name[128] = {0};
>  	u8 bank = 0;
>  	int ret;
>  
> @@ -300,6 +301,8 @@ static int stm32_fmc_of_to_plat(struct udevice *dev)
>  	dev_for_each_subnode(bank_node, dev) {
>  		/* extract the bank index from DT */
>  		bank_name = (char *)ofnode_get_name(bank_node);
> +		strlcpy(_bank_name, bank_name, sizeof(_bank_name));
> +		bank_name = (char *)_bank_name;
>  		strsep(&bank_name, "@");
>  		if (!bank_name) {
>  			pr_err("missing sdram bank index");
> 

Applied to u-boot-stm/master

Thanks
Patrice


More information about the U-Boot mailing list