• Kevin Pedretti's avatar
    KVM: Fix local apic timer divide by zero · b33ac88b
    Kevin Pedretti authored
    kvm_lapic_reset() was initializing apic->timer.divide_count to 0,
    which could potentially lead to a divide by zero error in
    apic_get_tmcct().  Any guest that reads the APIC's CCR (current count)
    register before setting DCR (divide configuration) would trigger a divide
    by zero exception in the host kernel, leading to a host-OS crash.
    
    This patch results in apic->timer.divide_count being initialized to
    2 at reset, eliminating the bug (DCR=0 at reset, meaning divide by 2).
    Signed-off-by: default avatarKevin Pedretti <kevin.pedretti@gmail.com>
    Signed-off-by: default avatarAvi Kivity <avi@qumranet.com>
    b33ac88b
lapic.c 24.5 KB