[boot-wrapper PATCH] fix array boundary check in find_logical_id

Mark Rutland mark.rutland at arm.com
Tue Oct 4 08:06:12 PDT 2022


On Tue, May 17, 2022 at 02:43:05PM +0100, Andre Przywara wrote:
> When we are trying to find the array index for a given MPIDR, we check
> that we don't overrun the array boundary, by comparing against NR_CPUS.
> However the resulting conditional branch should also fire when we reach
> the exact number of elements, since it's all 0 based.
> 
> Change the comparison to be '>=' instead of just '>', to only allow
> array indicies 0 .. (NR_CPUS - 1).
> 
> Signed-off-by: Andre Przywara <andre.przywara at arm.com>

Thanks; applied.

Mark.

> ---
>  arch/aarch32/utils.S | 2 +-
>  arch/aarch64/utils.S | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/aarch32/utils.S b/arch/aarch32/utils.S
> index 58279aa..d28ab19 100644
> --- a/arch/aarch32/utils.S
> +++ b/arch/aarch32/utils.S
> @@ -24,7 +24,7 @@ ASM_FUNC(find_logical_id)
>  1:	mov	r3, #NR_CPUS
>  
>  	cmp	r1, r3
> -	bgt	3f
> +	bge	3f
>  	ldr	r3, [r2, r1, lsl #2]
>  	cmp	r3, r0
>  	beq	2f
> diff --git a/arch/aarch64/utils.S b/arch/aarch64/utils.S
> index 32393cc..89aa124 100644
> --- a/arch/aarch64/utils.S
> +++ b/arch/aarch64/utils.S
> @@ -22,7 +22,7 @@ ASM_FUNC(find_logical_id)
>  	mov	x1, xzr
>  1:	mov	x3, #NR_CPUS	// check we haven't walked off the end of the array
>  	cmp	x1, x3
> -	b.gt	3f
> +	b.ge	3f
>  	ldr	x3, [x2, x1, lsl #3]
>  	cmp	x3, x0
>  	b.eq	2f
> -- 
> 2.25.1
> 



More information about the linux-arm-kernel mailing list