diff options
author | dillon min <dillon.minfei@gmail.com> | 2021-04-09 15:28:45 +0800 |
---|---|---|
committer | Patrice Chotard <patrice.chotard@foss.st.com> | 2021-04-09 11:53:00 +0200 |
commit | 1f0305e0d00e5b72d0ce4e279ec680ee8161e319 (patch) | |
tree | b534163a44ebf48a4063d91806bc4d3c9f76c8c6 | |
parent | f132c4967e416b6670d7a531c6a293f835177f82 (diff) | |
download | u-boot-1f0305e0d00e5b72d0ce4e279ec680ee8161e319.tar.gz |
ram: stm32: fix strsep failed on read only memory
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@gmail.com>
Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
-rw-r--r-- | drivers/ram/stm32_sdram.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/ram/stm32_sdram.c b/drivers/ram/stm32_sdram.c index 540ad85138..3e25cc7a01 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"); |