
On Fri, Jun 30, 2023 at 11:23 AM Fabio Estevam festevam@gmail.com wrote:
diff --git a/common/spl/spl_legacy.c b/common/spl/spl_legacy.c index d34bc5492e8d..095443c63d8d 100644 --- a/common/spl/spl_legacy.c +++ b/common/spl/spl_legacy.c @@ -19,7 +19,7 @@ static void spl_parse_legacy_validate(uintptr_t start, uintptr_t size) { uintptr_t spl_start = (uintptr_t)_start;
uintptr_t spl_end = (uintptr_t)__bss_end;
uintptr_t spl_end = (uintptr_t)_image_binary_end; uintptr_t end = start + size;
I have been thinking more about this and it seems we need to take CONFIG_SPL_SEPARATE_BSS into account.
Should we do this instead?
--- a/common/spl/spl_legacy.c +++ b/common/spl/spl_legacy.c @@ -19,9 +19,14 @@ static void spl_parse_legacy_validate(uintptr_t start, uintptr_t size) { uintptr_t spl_start = (uintptr_t)_start; - uintptr_t spl_end = (uintptr_t)__bss_end; + uintptr_t spl_end; uintptr_t end = start + size;
+ if (IS_ENABLED(CONFIG_SPL_SEPARATE_BSS)) + spl_end = (uintptr_t)_image_binary_end; + else + spl_end = (uintptr_t)__bss_end; + if ((start >= spl_start && start < spl_end) || (end > spl_start && end <= spl_end) || (start < spl_start && end >= spl_end) ||