|
@@ -1833,6 +1833,8 @@ static bool kvmgt_is_valid_gfn(unsigned long handle, unsigned long gfn)
|
|
{
|
|
{
|
|
struct kvmgt_guest_info *info;
|
|
struct kvmgt_guest_info *info;
|
|
struct kvm *kvm;
|
|
struct kvm *kvm;
|
|
|
|
+ int idx;
|
|
|
|
+ bool ret;
|
|
|
|
|
|
if (!handle_valid(handle))
|
|
if (!handle_valid(handle))
|
|
return false;
|
|
return false;
|
|
@@ -1840,8 +1842,11 @@ static bool kvmgt_is_valid_gfn(unsigned long handle, unsigned long gfn)
|
|
info = (struct kvmgt_guest_info *)handle;
|
|
info = (struct kvmgt_guest_info *)handle;
|
|
kvm = info->kvm;
|
|
kvm = info->kvm;
|
|
|
|
|
|
- return kvm_is_visible_gfn(kvm, gfn);
|
|
|
|
|
|
+ idx = srcu_read_lock(&kvm->srcu);
|
|
|
|
+ ret = kvm_is_visible_gfn(kvm, gfn);
|
|
|
|
+ srcu_read_unlock(&kvm->srcu, idx);
|
|
|
|
|
|
|
|
+ return ret;
|
|
}
|
|
}
|
|
|
|
|
|
struct intel_gvt_mpt kvmgt_mpt = {
|
|
struct intel_gvt_mpt kvmgt_mpt = {
|