]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
drm/i915/kvmgt: Use struct_size() helper
authorGustavo A. R. Silva <gustavo@embeddedor.com>
Fri, 24 May 2019 17:14:21 +0000 (12:14 -0500)
committerZhenyu Wang <zhenyuw@linux.intel.com>
Fri, 9 Aug 2019 08:15:00 +0000 (16:15 +0800)
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: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
drivers/gpu/drm/i915/gvt/kvmgt.c

index 144301b778df275e1327217de3eb497ac5317252..9674738b89df9fdb4ebb2e9d9c3d96c8174d93c6 100644 (file)
@@ -1306,7 +1306,6 @@ static long intel_vgpu_ioctl(struct mdev_device *mdev, unsigned int cmd,
                unsigned int i;
                int ret;
                struct vfio_region_info_cap_sparse_mmap *sparse = NULL;
-               size_t size;
                int nr_areas = 1;
                int cap_type_id;
 
@@ -1349,9 +1348,8 @@ static long intel_vgpu_ioctl(struct mdev_device *mdev, unsigned int cmd,
                                        VFIO_REGION_INFO_FLAG_WRITE;
                        info.size = gvt_aperture_sz(vgpu->gvt);
 
-                       size = sizeof(*sparse) +
-                                       (nr_areas * sizeof(*sparse->areas));
-                       sparse = kzalloc(size, GFP_KERNEL);
+                       sparse = kzalloc(struct_size(sparse, areas, nr_areas),
+                                        GFP_KERNEL);
                        if (!sparse)
                                return -ENOMEM;
 
@@ -1416,9 +1414,9 @@ static long intel_vgpu_ioctl(struct mdev_device *mdev, unsigned int cmd,
                        switch (cap_type_id) {
                        case VFIO_REGION_INFO_CAP_SPARSE_MMAP:
                                ret = vfio_info_add_capability(&caps,
-                                       &sparse->header, sizeof(*sparse) +
-                                       (sparse->nr_areas *
-                                               sizeof(*sparse->areas)));
+                                       &sparse->header,
+                                       struct_size(sparse, areas,
+                                                   sparse->nr_areas));
                                if (ret) {
                                        kfree(sparse);
                                        return ret;