Patch "KVM: x86: flush pending lapic jump label updates on module unload" has been added to the 4.4-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
KVM: x86: flush pending lapic jump label updates on module unload
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
kvm-x86-flush-pending-lapic-jump-label-updates-on-module-unload.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
cef84c302fe051744b983a92764d3fcca933415dMon Sep 17 00:00:00 2001
From: David Matlack <[email protected]>
Date: Fri, 16 Dec 2016 14:30:36 -0800
Subject: KVM: x86: flush pending lapic jump label updates on module unload
From: David Matlack <[email protected]>
commit cef84c302fe051744b983a92764d3fcca933415d upstream.
KVM's lapic emulation uses static_key_deferred (apic_{hw,sw}_disabled). These are implemented with delayed_work structs which can still be pending when the KVM module is unloaded. We've seen this cause kernel panics when the kvm_intel module is quickly reloaded.
Use the new static_key_deferred_flush() API to flush pending updates on module unload.
--- arch/x86/kvm/lapic.c | 6 ++++++ arch/x86/kvm/lapic.h | 1 + arch/x86/kvm/x86.c | 1 + 3 files changed, 8 insertions(+)
arch/x86/kvm/lapic.c +6 -0
@@ -2187,3 +2187,9 @@ void kvm_lapic_init(void)jump_label_rate_limit (&apic_hw_disabled,HZ );jump_label_rate_limit (&apic_sw_disabled,HZ ); } + +void kvm_lapic_exit (void ) +{ +static_key_deferred_flush (&apic_hw_disabled); +static_key_deferred_flush (&apic_sw_disabled); +}
arch/x86/kvm/lapic.h +1 -0
@@ -95,6 +95,7 @@ static inline bool kvm_hv_vapic_assist_pint kvm_lapic_enable_pv_eoi (struct kvm_vcpu *vcpu,u64 data);void kvm_lapic_init (void ); +void kvm_lapic_exit (void );static inline u32 kvm_apic_get_reg (struct kvm_lapic *apic,int reg_off) {
arch/x86/kvm/x86.c +1 -0
@@ -5842,6 +5842,7 @@ out:void kvm_arch_exit (void ) { +kvm_lapic_exit ();perf_unregister_guest_info_callbacks (&kvm_guest_cbs);if (!boot_cpu_has (X86_FEATURE_CONSTANT_TSC ))
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/kvm-x86-flush-pending-lapic-jump-label-updates-on-module-unload.patch