summaryrefslogtreecommitdiff
path: root/drivers/ram
diff options
context:
space:
mode:
authordillon min <dillon.minfei@gmail.com>2021-04-09 10:28:45 +0300
committerPatrice Chotard <patrice.chotard@foss.st.com>2021-04-09 12:53:00 +0300
commit1f0305e0d00e5b72d0ce4e279ec680ee8161e319 (patch)
treeb534163a44ebf48a4063d91806bc4d3c9f76c8c6 /drivers/ram
parentf132c4967e416b6670d7a531c6a293f835177f82 (diff)
downloadu-boot-1f0305e0d00e5b72d0ce4e279ec680ee8161e319.tar.xz
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>
Diffstat (limited to 'drivers/ram')
-rw-r--r--drivers/ram/stm32_sdram.c3
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");