[PATCH 0/2] KVM: x86: never write to memory from kvm_vcpu_check_block

From: Paolo Bonzini
Date: Wed Apr 27 2022 - 13:38:09 EST


Maxim reported the following backtrace:

[ 1355.807187] kvm_vcpu_map+0x159/0x190 [kvm]
[ 1355.807628] nested_svm_vmexit+0x4c/0x7f0 [kvm_amd]
[ 1355.808036] ? kvm_vcpu_block+0x54/0xa0 [kvm]
[ 1355.808450] svm_check_nested_events+0x97/0x390 [kvm_amd]
[ 1355.808920] kvm_check_nested_events+0x1c/0x40 [kvm]
[ 1355.809396] kvm_arch_vcpu_runnable+0x4e/0x190 [kvm]
[ 1355.809892] kvm_vcpu_check_block+0x4f/0x100 [kvm]
[ 1355.811259] kvm_vcpu_block+0x6b/0xa0 [kvm]

due to kmap being called in non-sleepable (!TASK_RUNNING) context.
Fix it by extending kvm_x86_ops->nested_ops.hv_timer_pending and
getting rid of one annoying instance of kvm_check_nested_events.

Paolo