• Jan Kiszka's avatar
    KVM: x86: Prevent starting PIT timers in the absence of irqchip support · 0924ab2c
    Jan Kiszka authored
    User space may create the PIT and forgets about setting up the irqchips.
    In that case, firing PIT IRQs will crash the host:
    
    BUG: unable to handle kernel NULL pointer dereference at 0000000000000128
    IP: [<ffffffffa10f6280>] kvm_set_irq+0x30/0x170 [kvm]
    ...
    Call Trace:
     [<ffffffffa11228c1>] pit_do_work+0x51/0xd0 [kvm]
     [<ffffffff81071431>] process_one_work+0x111/0x4d0
     [<ffffffff81071bb2>] worker_thread+0x152/0x340
     [<ffffffff81075c8e>] kthread+0x7e/0x90
     [<ffffffff815a4474>] kernel_thread_helper+0x4/0x10
    
    Prevent this by checking the irqchip mode before starting a timer. We
    can't deny creating the PIT if the irqchips aren't set up yet as
    current user land expects this order to work.
    Signed-off-by: default avatarJan Kiszka <jan.kiszka@siemens.com>
    Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
    0924ab2c
i8254.c 19.1 KB