summaryrefslogtreecommitdiff
path: root/virt
diff options
context:
space:
mode:
authorCarlos López <clopez@suse.de>2026-03-13 13:20:40 +0100
committerSean Christopherson <seanjc@google.com>2026-05-13 11:12:36 -0700
commit40f0f4bb6041b1f520445a4c5f0c8777f7c98f8e (patch)
treeaabf11c2e8c0f81d5ee9f7248773589e0b999cee /virt
parent9a7ff263922e7163d0def5d35948e6b6545449f6 (diff)
downloadlinux-2.6-40f0f4bb6041b1f520445a4c5f0c8777f7c98f8e.tar.gz
linux-2.6-40f0f4bb6041b1f520445a4c5f0c8777f7c98f8e.zip
KVM: VFIO: use mutex guard in kvm_vfio_file_set_spapr_tce()
Use a mutex guard to hold a lock for the entirety of the function, which removes the need for a goto (whose label even has a misleading name since 8152f8201088 ("fdget(), more trivial conversions")) Signed-off-by: Carlos López <clopez@suse.de> Reviewed-by: Alex Williamson <alex@shazbot.org> Link: https://patch.msgid.link/20260313122040.1413091-5-clopez@suse.de Signed-off-by: Sean Christopherson <seanjc@google.com>
Diffstat (limited to 'virt')
-rw-r--r--virt/kvm/vfio.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/virt/kvm/vfio.c b/virt/kvm/vfio.c
index 2c91bad3333b..e0d621567dbf 100644
--- a/virt/kvm/vfio.c
+++ b/virt/kvm/vfio.c
@@ -216,7 +216,6 @@ static int kvm_vfio_file_set_spapr_tce(struct kvm_device *dev,
struct kvm_vfio_spapr_tce param;
struct kvm_vfio *kv = dev->private;
struct kvm_vfio_file *kvf;
- int ret;
if (copy_from_user(&param, arg, sizeof(struct kvm_vfio_spapr_tce)))
return -EFAULT;
@@ -225,9 +224,7 @@ static int kvm_vfio_file_set_spapr_tce(struct kvm_device *dev,
if (fd_empty(f))
return -EBADF;
- ret = -ENOENT;
-
- mutex_lock(&kv->lock);
+ guard(mutex)(&kv->lock);
list_for_each_entry(kvf, &kv->file_list, node) {
if (kvf->file != fd_file(f))
@@ -235,20 +232,15 @@ static int kvm_vfio_file_set_spapr_tce(struct kvm_device *dev,
if (!kvf->iommu_group) {
kvf->iommu_group = kvm_vfio_file_iommu_group(kvf->file);
- if (WARN_ON_ONCE(!kvf->iommu_group)) {
- ret = -EIO;
- goto err_fdput;
- }
+ if (WARN_ON_ONCE(!kvf->iommu_group))
+ return -EIO;
}
- ret = kvm_spapr_tce_attach_iommu_group(dev->kvm, param.tablefd,
- kvf->iommu_group);
- break;
+ return kvm_spapr_tce_attach_iommu_group(dev->kvm, param.tablefd,
+ kvf->iommu_group);
}
-err_fdput:
- mutex_unlock(&kv->lock);
- return ret;
+ return -ENOENT;
}
#endif