From mboxrd@z Thu Jan 1 00:00:00 1970 From: Patrice CHOTARD Date: Thu, 8 Apr 2021 15:48:59 +0200 Subject: [PATCH v4 6/7] ram: stm32: fix strsep failed on read only memory In-Reply-To: <1617352961-20550-7-git-send-email-dillon.minfei@gmail.com> References: <1617352961-20550-1-git-send-email-dillon.minfei@gmail.com> <1617352961-20550-7-git-send-email-dillon.minfei@gmail.com> Message-ID: <1529e81a-dad9-83aa-165c-a54539677893@foss.st.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Dillon On 4/2/21 10:42 AM, dillon.minfei at gmail.com wrote: > From: dillon min > > 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 > --- > v4: use strlcpy suggested by Patrice CHOTARD > > 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"); > Reviewed-by: Patrice Chotard Thanks Patrice