[PATCH] drivers: core: lists: fix for loop index type

Simon Glass sjg at chromium.org
Thu Dec 2 17:12:21 CET 2021


On Sat, 6 Nov 2021 at 09:11, <fpga-garage at preissner-muc.de> wrote:
>
> From: Alexander Preißner <fpga-garage at preissner-muc.de>
>
> * fixes the bug in function bind_drivers_pass that for
> CONFIG_CC_OPTIMIZE_FOR_SIZE=n and no entries in the driver_info list,
> i.e. n_ents == 0, the processor steps into the first loop iteration
> despite the loop condition being false.
> * the Xilinx Zynq-7000 device would eventually hang due to an attempted
> access to an invalid memory address
> * the bug is fixed by changing the type of idx from uint to int
>
> Board: zynq-zybo
> Target: ARM
> Compiler: arm-none-eabi-gcc 9.2.1
>
> Signed-off-by: Alexander Preissner <fpga-garage at preissner-muc.de>
> ---
>  drivers/core/lists.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/core/lists.c b/drivers/core/lists.c
> index 5d4f2ea0e3..d2e9dc5719 100644
> --- a/drivers/core/lists.c
> +++ b/drivers/core/lists.c
> @@ -58,7 +58,7 @@ static int bind_drivers_pass(struct udevice *parent, bool pre_reloc_only)
>         const int n_ents = ll_entry_count(struct driver_info, driver_info);
>         bool missing_parent = false;
>         int result = 0;
> -       uint idx;
> +       int idx;
>
>         /*
>          * Do one iteration through the driver_info records. For of-platdata,
> --
> 2.25.1
>

Acked-by: Simon Glass <sjg at chromium.org>
Tested on sandbox:
Tested-by: Simon Glass <sjg at chromium.org>


More information about the U-Boot mailing list