Skip to main content

double_fault_handler

Function double_fault_handler 

Source
extern "x86-interrupt" fn double_fault_handler(
    stack_frame: InterruptStackFrame,
    error_code: u64,
) -> !
Expand description

Performs the double fault handler operation.

Uses IST stack so the handler always runs on a known-good stack, even when RSP0 is corrupt. We must still do swapgs if the fault originated from Ring 3 (or from Ring 0 code that already did swapgs, e.g. the iretq path in elf_ring3_trampoline).

ยงNote on divergent handler

This handler is -> !, so SwapGsGuard::drop will never run. That is fine because we never return to the interrupted context.