Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

vfio/platform: Convert to get_region_info_caps

Remove the duplicate code and change info to a pointer. caps are not used.

Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Mostafa Saleh <smostafa@google.com>
Reviewed-by: Pranjal Shrivastava <praan@google.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/20-v2-2a9e24d62f1b+e10a-vfio_get_region_info_op_jgg@nvidia.com
Signed-off-by: Alex Williamson <alex@shazbot.org>

authored by

Jason Gunthorpe and committed by
Alex Williamson
182c6286 1b0ecb5b

+11 -20
+1 -1
drivers/vfio/platform/vfio_amba.c
··· 115 115 .open_device = vfio_platform_open_device, 116 116 .close_device = vfio_platform_close_device, 117 117 .ioctl = vfio_platform_ioctl, 118 - .get_region_info = vfio_platform_ioctl_get_region_info, 118 + .get_region_info_caps = vfio_platform_ioctl_get_region_info, 119 119 .read = vfio_platform_read, 120 120 .write = vfio_platform_write, 121 121 .mmap = vfio_platform_mmap,
+1 -1
drivers/vfio/platform/vfio_platform.c
··· 101 101 .open_device = vfio_platform_open_device, 102 102 .close_device = vfio_platform_close_device, 103 103 .ioctl = vfio_platform_ioctl, 104 - .get_region_info = vfio_platform_ioctl_get_region_info, 104 + .get_region_info_caps = vfio_platform_ioctl_get_region_info, 105 105 .read = vfio_platform_read, 106 106 .write = vfio_platform_write, 107 107 .mmap = vfio_platform_mmap,
+7 -17
drivers/vfio/platform/vfio_platform_common.c
··· 273 273 EXPORT_SYMBOL_GPL(vfio_platform_open_device); 274 274 275 275 int vfio_platform_ioctl_get_region_info(struct vfio_device *core_vdev, 276 - struct vfio_region_info __user *arg) 276 + struct vfio_region_info *info, 277 + struct vfio_info_cap *caps) 277 278 { 278 279 struct vfio_platform_device *vdev = 279 280 container_of(core_vdev, struct vfio_platform_device, vdev); 280 - struct vfio_region_info info; 281 - unsigned long minsz; 282 281 283 - minsz = offsetofend(struct vfio_region_info, offset); 284 - 285 - if (copy_from_user(&info, arg, minsz)) 286 - return -EFAULT; 287 - 288 - if (info.argsz < minsz) 289 - return -EINVAL; 290 - 291 - if (info.index >= vdev->num_regions) 282 + if (info->index >= vdev->num_regions) 292 283 return -EINVAL; 293 284 294 285 /* map offset to the physical address */ 295 - info.offset = VFIO_PLATFORM_INDEX_TO_OFFSET(info.index); 296 - info.size = vdev->regions[info.index].size; 297 - info.flags = vdev->regions[info.index].flags; 298 - 299 - return copy_to_user(arg, &info, minsz) ? -EFAULT : 0; 286 + info->offset = VFIO_PLATFORM_INDEX_TO_OFFSET(info->index); 287 + info->size = vdev->regions[info->index].size; 288 + info->flags = vdev->regions[info->index].flags; 289 + return 0; 300 290 } 301 291 EXPORT_SYMBOL_GPL(vfio_platform_ioctl_get_region_info); 302 292
+2 -1
drivers/vfio/platform/vfio_platform_private.h
··· 86 86 long vfio_platform_ioctl(struct vfio_device *core_vdev, 87 87 unsigned int cmd, unsigned long arg); 88 88 int vfio_platform_ioctl_get_region_info(struct vfio_device *core_vdev, 89 - struct vfio_region_info __user *arg); 89 + struct vfio_region_info *info, 90 + struct vfio_info_cap *caps); 90 91 ssize_t vfio_platform_read(struct vfio_device *core_vdev, 91 92 char __user *buf, size_t count, 92 93 loff_t *ppos);