mirror of
https://github.com/torvalds/linux.git
synced 2024-11-04 11:04:38 +00:00
KVM: Drop user return notifier when disabling virtualization on a cpu
This way, we don't leave a dangling notifier on cpu hotunplug or module unload. In particular, module unload leaves the notifier pointing into freed memory. Signed-off-by: Avi Kivity <avi@redhat.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
This commit is contained in:
parent
046d87103a
commit
3548bab501
@ -201,6 +201,14 @@ void kvm_set_shared_msr(unsigned slot, u64 value)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(kvm_set_shared_msr);
|
EXPORT_SYMBOL_GPL(kvm_set_shared_msr);
|
||||||
|
|
||||||
|
static void drop_user_return_notifiers(void *ignore)
|
||||||
|
{
|
||||||
|
struct kvm_shared_msrs *smsr = &__get_cpu_var(shared_msrs);
|
||||||
|
|
||||||
|
if (smsr->registered)
|
||||||
|
kvm_on_user_return(&smsr->urn);
|
||||||
|
}
|
||||||
|
|
||||||
unsigned long segment_base(u16 selector)
|
unsigned long segment_base(u16 selector)
|
||||||
{
|
{
|
||||||
struct descriptor_table gdt;
|
struct descriptor_table gdt;
|
||||||
@ -5004,6 +5012,7 @@ int kvm_arch_hardware_enable(void *garbage)
|
|||||||
void kvm_arch_hardware_disable(void *garbage)
|
void kvm_arch_hardware_disable(void *garbage)
|
||||||
{
|
{
|
||||||
kvm_x86_ops->hardware_disable(garbage);
|
kvm_x86_ops->hardware_disable(garbage);
|
||||||
|
drop_user_return_notifiers(garbage);
|
||||||
}
|
}
|
||||||
|
|
||||||
int kvm_arch_hardware_setup(void)
|
int kvm_arch_hardware_setup(void)
|
||||||
|
Loading…
Reference in New Issue
Block a user