]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/gvt: Simplify case switch in intel_vgpu_ioctl
authorJonathan Cavitt <jonathan.cavitt@intel.com>
Thu, 18 Sep 2025 21:45:16 +0000 (21:45 +0000)
committerAndi Shyti <andi.shyti@linux.intel.com>
Thu, 25 Sep 2025 16:27:06 +0000 (18:27 +0200)
We do not need a case switch to check cap_type_id in intel_vgpu_ioctl
for various reasons (it's impossible to hit the default case in the
current code, there's only one valid case to check, the error handling
code overlaps in both cases, etc.).  Simplify the case switch into a
single if statement.  This has the additional effect of simplifying the
error handling code.

Note that it is still currently impossible for
'if (cap_type_id == VFIO_REGION_INFO_CAP_SPARSE_MMAP)'
to fail, but we should still guard against the possibility of this
changing in the future.

Signed-off-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
Cc: Andi Shyti <andi.shyti@linux.intel.com>
Reviewed-by: Zhenyu Wang <zhenyuw.linux@gmail.com>
Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com>
Link: https://lore.kernel.org/r/20250918214515.66926-2-jonathan.cavitt@intel.com
drivers/gpu/drm/i915/gvt/kvmgt.c

index 69830a5c49d3fd8e48e3cf14ada80d5a9e8ede41..70af86d46fe8ea83e05539db178ba731e8159440 100644 (file)
@@ -1279,20 +1279,15 @@ static long intel_vgpu_ioctl(struct vfio_device *vfio_dev, unsigned int cmd,
                }
 
                if ((info.flags & VFIO_REGION_INFO_FLAG_CAPS) && sparse) {
-                       switch (cap_type_id) {
-                       case VFIO_REGION_INFO_CAP_SPARSE_MMAP:
+                       ret = -EINVAL;
+                       if (cap_type_id == VFIO_REGION_INFO_CAP_SPARSE_MMAP)
                                ret = vfio_info_add_capability(&caps,
                                        &sparse->header,
                                        struct_size(sparse, areas,
                                                    sparse->nr_areas));
-                               if (ret) {
-                                       kfree(sparse);
-                                       return ret;
-                               }
-                               break;
-                       default:
+                       if (ret) {
                                kfree(sparse);
-                               return -EINVAL;
+                               return ret;
                        }
                }