Skip to content

Commit a764da4

Browse files
Xiu Jianfengdigetx
authored andcommitted
drm/virtio: Fix memory leak in virtio_gpu_object_create()
The virtio_gpu_object_shmem_init() will alloc memory and save it in @ents, so when virtio_gpu_array_alloc() fails, this memory should be freed, this patch fixes it. Fixes: e7fef09 ("drm/virtio: Simplify error handling of virtio_gpu_object_create()") Signed-off-by: Xiu Jianfeng <[email protected]> Reviewed-by: Dmitry Osipenko <[email protected]> Signed-off-by: Dmitry Osipenko <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent 3b754ed commit a764da4

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

drivers/gpu/drm/virtio/virtgpu_object.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ int virtio_gpu_object_create(struct virtio_gpu_device *vgdev,
184184
struct virtio_gpu_object_array *objs = NULL;
185185
struct drm_gem_shmem_object *shmem_obj;
186186
struct virtio_gpu_object *bo;
187-
struct virtio_gpu_mem_entry *ents;
187+
struct virtio_gpu_mem_entry *ents = NULL;
188188
unsigned int nents;
189189
int ret;
190190

@@ -210,7 +210,7 @@ int virtio_gpu_object_create(struct virtio_gpu_device *vgdev,
210210
ret = -ENOMEM;
211211
objs = virtio_gpu_array_alloc(1);
212212
if (!objs)
213-
goto err_put_id;
213+
goto err_free_entry;
214214
virtio_gpu_array_add_obj(objs, &bo->base.base);
215215

216216
ret = virtio_gpu_array_lock_resv(objs);
@@ -239,6 +239,8 @@ int virtio_gpu_object_create(struct virtio_gpu_device *vgdev,
239239

240240
err_put_objs:
241241
virtio_gpu_array_put_free(objs);
242+
err_free_entry:
243+
kvfree(ents);
242244
err_put_id:
243245
virtio_gpu_resource_id_put(vgdev, bo->hw_res_handle);
244246
err_free_gem:

0 commit comments

Comments
 (0)