[U-Boot] [PATCH] spl: fix the new position of gd and stack

If we enable CONFIG_SPL_SYS_MALLOC_SIMPLE and set CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN, the new gd and stack will inside malloc area,so there is a overwrite risk.
We can place the new position of gd and stack under the malloc area to fix this issue.
Signed-off-by: Peng Donglin dolinux.peng@gmail.com --- common/spl/spl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/common/spl/spl.c b/common/spl/spl.c index 292e659c9a..e85a153869 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -628,7 +628,7 @@ ulong spl_relocate_stack_gd(void) } #endif /* Get stack position: use 8-byte alignment for ABI compliance */ - ptr = CONFIG_SPL_STACK_R_ADDR - roundup(sizeof(gd_t),16); + ptr -= roundup(sizeof(gd_t), 16); new_gd = (gd_t *)ptr; memcpy(new_gd, (void *)gd, sizeof(gd_t)); #if CONFIG_IS_ENABLED(DM)

On Tue, Oct 30, 2018 at 4:20 PM Peng Donglin dolinux.peng@gmail.com wrote:
If we enable CONFIG_SPL_SYS_MALLOC_SIMPLE and set CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN, the new gd and stack will inside malloc area,so there is a overwrite risk.
We can place the new position of gd and stack under the malloc area to fix this issue.
Signed-off-by: Peng Donglin dolinux.peng@gmail.com
common/spl/spl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/common/spl/spl.c b/common/spl/spl.c index 292e659c9a..e85a153869 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -628,7 +628,7 @@ ulong spl_relocate_stack_gd(void) } #endif /* Get stack position: use 8-byte alignment for ABI compliance */
ptr = CONFIG_SPL_STACK_R_ADDR - roundup(sizeof(gd_t),16);
ptr -= roundup(sizeof(gd_t), 16); new_gd = (gd_t *)ptr; memcpy(new_gd, (void *)gd, sizeof(gd_t));
#if CONFIG_IS_ENABLED(DM)
2.17.1
any suggestion?
participants (2)
-
Donglin Peng
-
Peng Donglin