Commit cd3e0583 authored by Gustavo A. R. Silva's avatar Gustavo A. R. Silva Committed by Zhenyu Wang

drm/i915/kvmgt: Use struct_size() helper

Make use of the struct_size() helper instead of an open-coded version
in order to avoid any potential type mistakes, in particular in the
context in which this code is being used.

So, replace the following form:

sizeof(*sparse) + (nr_areas * sizeof(*sparse->areas)

with:

struct_size(sparse, areas, sparse->nr_areas)

and so on...

Also, notice that variable size is unnecessary, hence it is removed.

This code was detected with the help of Coccinelle.
Signed-off-by: default avatarGustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
parent e0e712fe
...@@ -1306,7 +1306,6 @@ static long intel_vgpu_ioctl(struct mdev_device *mdev, unsigned int cmd, ...@@ -1306,7 +1306,6 @@ static long intel_vgpu_ioctl(struct mdev_device *mdev, unsigned int cmd,
unsigned int i; unsigned int i;
int ret; int ret;
struct vfio_region_info_cap_sparse_mmap *sparse = NULL; struct vfio_region_info_cap_sparse_mmap *sparse = NULL;
size_t size;
int nr_areas = 1; int nr_areas = 1;
int cap_type_id; int cap_type_id;
...@@ -1349,9 +1348,8 @@ static long intel_vgpu_ioctl(struct mdev_device *mdev, unsigned int cmd, ...@@ -1349,9 +1348,8 @@ static long intel_vgpu_ioctl(struct mdev_device *mdev, unsigned int cmd,
VFIO_REGION_INFO_FLAG_WRITE; VFIO_REGION_INFO_FLAG_WRITE;
info.size = gvt_aperture_sz(vgpu->gvt); info.size = gvt_aperture_sz(vgpu->gvt);
size = sizeof(*sparse) + sparse = kzalloc(struct_size(sparse, areas, nr_areas),
(nr_areas * sizeof(*sparse->areas)); GFP_KERNEL);
sparse = kzalloc(size, GFP_KERNEL);
if (!sparse) if (!sparse)
return -ENOMEM; return -ENOMEM;
...@@ -1416,9 +1414,9 @@ static long intel_vgpu_ioctl(struct mdev_device *mdev, unsigned int cmd, ...@@ -1416,9 +1414,9 @@ static long intel_vgpu_ioctl(struct mdev_device *mdev, unsigned int cmd,
switch (cap_type_id) { switch (cap_type_id) {
case VFIO_REGION_INFO_CAP_SPARSE_MMAP: case VFIO_REGION_INFO_CAP_SPARSE_MMAP:
ret = vfio_info_add_capability(&caps, ret = vfio_info_add_capability(&caps,
&sparse->header, sizeof(*sparse) + &sparse->header,
(sparse->nr_areas * struct_size(sparse, areas,
sizeof(*sparse->areas))); sparse->nr_areas));
if (ret) { if (ret) {
kfree(sparse); kfree(sparse);
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment