]> git.baikalelectronics.ru Git - kernel.git/commit
x86 efi: bugfix interrupt disabling sequence
authorBart Kuivenhoven <bemk@redhat.com>
Mon, 23 Sep 2013 09:45:28 +0000 (11:45 +0200)
committerMatt Fleming <matt.fleming@intel.com>
Mon, 30 Sep 2013 09:23:11 +0000 (10:23 +0100)
commit7b32c548f5d8688dc43423f36d1f9ec40f929a73
treeed589e47d86362a651ef1cf7427edc0dbb988480
parent1130936bdb24146695ceae0ebba5156f6ddf1a3c
x86 efi: bugfix interrupt disabling sequence

The problem in efi_main was that the idt was cleared before the
interrupts were disabled.

The UEFI spec states that interrupts aren't used so this shouldn't be
too much of a problem. Peripherals however don't necessarily know about
this and thus might cause interrupts to happen anyway. Even if
ExitBootServices() has been called.

This means there is a risk of an interrupt being triggered while the IDT
register is nullified and the interrupt bit hasn't been cleared,
allowing for a triple fault.

This patch disables the interrupt flag, while leaving the existing IDT
in place. The CPU won't care about the IDT at all as long as the
interrupt bit is off, so it's safe to leave it in place as nothing will
ever happen to it.

[ Removed the now unused 'idt' variable - Matt ]

Signed-off-by: Bart Kuivenhoven <bemk@redhat.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
arch/x86/boot/compressed/eboot.c