• Seunghun Han's avatar
    x86/acpi: Prevent out of bound access caused by broken ACPI tables · dad5ab0d
    Seunghun Han authored
    The bus_irq argument of mp_override_legacy_irq() is used as the index into
    the isa_irq_to_gsi[] array. The bus_irq argument originates from
    ACPI_MADT_TYPE_IO_APIC and ACPI_MADT_TYPE_INTERRUPT items in the ACPI
    tables, but is nowhere sanity checked.
    
    That allows broken or malicious ACPI tables to overwrite memory, which
    might cause malfunction, panic or arbitrary code execution.
    
    Add a sanity check and emit a warning when that triggers.
    
    [ tglx: Added warning and rewrote changelog ]
    Signed-off-by: default avatarSeunghun Han <kkamagui@gmail.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: security@kernel.org
    Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    dad5ab0d
boot.c 41.8 KB