On 13/06/2018 00:52, Junaid Shahid wrote: > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > index aa7da1d8ece2..e4ee76bee3dd 100644 > --- a/virt/kvm/kvm_main.c > +++ b/virt/kvm/kvm_main.c > @@ -2122,16 +2122,22 @@ static void shrink_halt_poll_ns(struct kvm_vcpu *vcpu) > > static int kvm_vcpu_check_block(struct kvm_vcpu *vcpu) > { > + int ret = -EINTR; > + int idx = srcu_read_lock(&vcpu->kvm->srcu); > + > if (kvm_arch_vcpu_runnable(vcpu)) { > kvm_make_request(KVM_REQ_UNHALT, vcpu); > - return -EINTR; > + goto out; > } > if (kvm_cpu_has_pending_timer(vcpu)) > - return -EINTR; > + goto out; > if (signal_pending(current)) > - return -EINTR; > + goto out; > > - return 0; > + ret = 0; > +out: > + srcu_read_unlock(&vcpu->kvm->srcu, idx); > + return ret; > } What needs kvm->srcu here? Thanks, Paolo