drm/i915/gvt: fix a memory leak in intel_gvt_init_vgpu_types
authorChristoph Hellwig <hch@lst.de>
Fri, 23 Sep 2022 09:26:39 +0000 (11:26 +0200)
committerAlex Williamson <alex.williamson@redhat.com>
Tue, 4 Oct 2022 18:06:58 +0000 (12:06 -0600)
gvt->types needs to be freed on error.

Fixes: bc90d097ae14 ("drm/i915/gvt: define weight according to vGPU type")
Reported-by: Kevin Tian <kevin.tian@intel.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Link: https://lore.kernel.org/r/20220923092652.100656-2-hch@lst.de
[aw: Correct fixes commit ID as reported by Stephen Rothwell]
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
drivers/gpu/drm/i915/gvt/vgpu.c

index 5c533fb..dbb2a97 100644 (file)
@@ -142,7 +142,7 @@ int intel_gvt_init_vgpu_types(struct intel_gvt *gvt)
 
                if (vgpu_types[i].weight < 1 ||
                                        vgpu_types[i].weight > VGPU_MAX_WEIGHT)
-                       return -EINVAL;
+                       goto out_free_types;
 
                gvt->types[i].weight = vgpu_types[i].weight;
                gvt->types[i].resolution = vgpu_types[i].edid;
@@ -167,6 +167,10 @@ int intel_gvt_init_vgpu_types(struct intel_gvt *gvt)
 
        gvt->num_types = i;
        return 0;
+
+out_free_types:
+       kfree(gvt->types);
+       return -EINVAL;
 }
 
 void intel_gvt_clean_vgpu_types(struct intel_gvt *gvt)