diff options
| -rw-r--r-- | drivers/gpu/drm/i915/gvt/kvmgt.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/gvt/kvmgt.c b/drivers/gpu/drm/i915/gvt/kvmgt.c index cd218b07c6f6..1ea3eb270de8 100644 --- a/drivers/gpu/drm/i915/gvt/kvmgt.c +++ b/drivers/gpu/drm/i915/gvt/kvmgt.c | |||
| @@ -1424,7 +1424,7 @@ static int kvmgt_rw_gpa(unsigned long handle, unsigned long gpa, | |||
| 1424 | { | 1424 | { |
| 1425 | struct kvmgt_guest_info *info; | 1425 | struct kvmgt_guest_info *info; |
| 1426 | struct kvm *kvm; | 1426 | struct kvm *kvm; |
| 1427 | int ret; | 1427 | int idx, ret; |
| 1428 | bool kthread = current->mm == NULL; | 1428 | bool kthread = current->mm == NULL; |
| 1429 | 1429 | ||
| 1430 | if (!handle_valid(handle)) | 1430 | if (!handle_valid(handle)) |
| @@ -1436,8 +1436,10 @@ static int kvmgt_rw_gpa(unsigned long handle, unsigned long gpa, | |||
| 1436 | if (kthread) | 1436 | if (kthread) |
| 1437 | use_mm(kvm->mm); | 1437 | use_mm(kvm->mm); |
| 1438 | 1438 | ||
| 1439 | idx = srcu_read_lock(&kvm->srcu); | ||
| 1439 | ret = write ? kvm_write_guest(kvm, gpa, buf, len) : | 1440 | ret = write ? kvm_write_guest(kvm, gpa, buf, len) : |
| 1440 | kvm_read_guest(kvm, gpa, buf, len); | 1441 | kvm_read_guest(kvm, gpa, buf, len); |
| 1442 | srcu_read_unlock(&kvm->srcu, idx); | ||
| 1441 | 1443 | ||
| 1442 | if (kthread) | 1444 | if (kthread) |
| 1443 | unuse_mm(kvm->mm); | 1445 | unuse_mm(kvm->mm); |
