[PATCH 4/4] ram: stm32: fix strsep failed on read only memory
Patrice CHOTARD
patrice.chotard at foss.st.com
Thu Mar 25 16:17:40 CET 2021
Hi Dillon
On 3/11/21 7:44 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.
>
> Fixes: f303aaf ("ram: stm32: add second SDRAM bank management")
> Signed-off-by: dillon min <dillon.minfei at gmail.com>
> ---
> 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..da27677 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);
> + strcpy(_bank_name, bank_name);
> + bank_name = _bank_name;
> strsep(&bank_name, "@");
> if (!bank_name) {
> pr_err("missing sdram bank index");
>
Reviewed-by: Patrice Chotard <patrice.chotard at foss.st.com>
Thanks
Patrice
More information about the U-Boot
mailing list