[U-Boot] [PATCH] x86: Fix out of bounds irq handlers access

Simon Glass sjg at chromium.org
Tue Jan 13 02:41:49 CET 2015


On 12 January 2015 at 09:17, Sebastien Ronsse <sronsse at gmail.com> wrote:
> Using coreboot-x86_defconfig, the following error occurred prior to this modification:
> CC      arch/x86/lib/interrupts
> arch/x86/lib/interrupts.c: In function ‘do_irqinfo’:
> arch/x86/lib/interrupts.c:134:24: error: iteration 16u invokes undefined behavior [-Werror=aggressive-loop-optimizations]
>    if (irq_handlers[irq].handler != NULL) {
>                         ^
> arch/x86/lib/interrupts.c:133:2: note: containing loop
>   for (irq = 0; irq <= CONFIG_SYS_NUM_IRQS; irq++) {
>   ^
> cc1: all warnings being treated as errors
> scripts/Makefile.build:275: recipe for target 'arch/x86/lib/interrupts.o' failed
> make[1]: *** [arch/x86/lib/interrupts.o] Error 1
> Makefile:1093: recipe for target 'arch/x86/lib' failed
> make: *** [arch/x86/lib] Error 2
>
> Signed-off-by: Sebastien Ronsse <sronsse at gmail.com>
> ---
>  arch/x86/lib/interrupts.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Thanks!

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

Also for reference:

https://chromium-review.googlesource.com/#/c/218562/

>
> diff --git a/arch/x86/lib/interrupts.c b/arch/x86/lib/interrupts.c
> index 6bb22d2..146ad11 100644
> --- a/arch/x86/lib/interrupts.c
> +++ b/arch/x86/lib/interrupts.c
> @@ -130,7 +130,7 @@ int do_irqinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>         printf("Interrupt-Information:\n");
>         printf("Nr  Routine   Arg       Count\n");
>
> -       for (irq = 0; irq <= CONFIG_SYS_NUM_IRQS; irq++) {
> +       for (irq = 0; irq < CONFIG_SYS_NUM_IRQS; irq++) {
>                 if (irq_handlers[irq].handler != NULL) {
>                         printf("%02d  %08lx  %08lx  %d\n",
>                                         irq,
> --
> 2.0.0
>

Regards,
Simon


More information about the U-Boot mailing list