aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Preißner2021-11-06 02:08:59 +0100
committerSimon Glass2021-12-02 09:15:43 -0700
commitfe67ba7418a1d31341a766b3f01833803dcba4f5 (patch)
treead031cb5a259c4c9ed13363bf839320eeb6bf94e
parentf89615088fba1b1f33713ad26dbe3a3c82b692ec (diff)
drivers: core: lists: fix for loop index type
* 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@preissner-muc.de> Acked-by: Simon Glass <sjg@chromium.org> Tested-by: Simon Glass <sjg@chromium.org>
-rw-r--r--drivers/core/lists.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/core/lists.c b/drivers/core/lists.c
index 5d4f2ea0e3a..d2e9dc5719b 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,