[PATCH v2 1/1] spl: spl_legacy: clean up spl_parse_legacy_validate

Marek Vasut marex at denx.de
Mon Aug 7 17:52:24 CEST 2023


On 7/25/23 10:30, Heinrich Schuchardt wrote:
> Simplify the check for an overlap of the loaded image and SPL.
> 
> Detect all cases of wrap around.
> 
> Use the SPL_TPL_NAME prefix to avoid printing 'SPL' in TPL
> (both spl_parse_legacy_header and spl_parse_legacy_validate).
> 
> Fixes: 77aed22b48ab ("spl: spl_legacy: Add extra address checks")
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
> v2:
> 	consider wrap around
> 	fix TPL prefix
> 
> @Marek:
> 
> You suggested to carve out a function for memory region overlaps.
> A function call for two comparisons would increase code size.

Even if the function is inlined ?

> Introducing LMB for SPL would run into code size limitations and
> is beyond the scope of a simple fix.
> ---
>   common/spl/spl_legacy.c | 16 ++++++++--------
>   1 file changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/common/spl/spl_legacy.c b/common/spl/spl_legacy.c
> index 095443c63d..dd91e1077b 100644
> --- a/common/spl/spl_legacy.c
> +++ b/common/spl/spl_legacy.c
> @@ -22,14 +22,14 @@ static void spl_parse_legacy_validate(uintptr_t start, uintptr_t size)
>   	uintptr_t spl_end = (uintptr_t)_image_binary_end;
>   	uintptr_t end = start + size;
>   
> -	if ((start >= spl_start && start < spl_end) ||
> -	    (end > spl_start && end <= spl_end) ||
> -	    (start < spl_start && end >= spl_end) ||
> -	    (start > end && end > spl_start))
> -		panic("SPL: Image overlaps SPL\n");
> +	if (end > spl_start && start < spl_end)
> +		panic(SPL_TPL_NAME ": Image overlaps SPL\n");
> +
> +	if (start >= end)

Really >= ? start == end means zero-size payload, no ?

Btw the extra string that is being printed here also increases code 
size, which might blow on at91.


More information about the U-Boot mailing list