mirror of
https://github.com/torvalds/linux.git
synced 2024-11-14 08:02:07 +00:00
kvm: fix schedule in atomic in kvm_steal_time_set_preempted()
kvm_steal_time_set_preempted() isn't disabling the pagefaults before calling __copy_to_user and the kernel debug notices. Signed-off-by: Andrea Arcangeli <aarcange@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
3f5ad8be37
commit
931f261b42
@ -2844,7 +2844,17 @@ static void kvm_steal_time_set_preempted(struct kvm_vcpu *vcpu)
|
||||
|
||||
void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
/*
|
||||
* Disable page faults because we're in atomic context here.
|
||||
* kvm_write_guest_offset_cached() would call might_fault()
|
||||
* that relies on pagefault_disable() to tell if there's a
|
||||
* bug. NOTE: the write to guest memory may not go through if
|
||||
* during postcopy live migration or if there's heavy guest
|
||||
* paging.
|
||||
*/
|
||||
pagefault_disable();
|
||||
kvm_steal_time_set_preempted(vcpu);
|
||||
pagefault_enable();
|
||||
kvm_x86_ops->vcpu_put(vcpu);
|
||||
kvm_put_guest_fpu(vcpu);
|
||||
vcpu->arch.last_host_tsc = rdtsc();
|
||||
|
Loading…
Reference in New Issue
Block a user