Skip to content

Commit

Permalink
virtio-gpu: don't free things on ttm_bo_init failure
Browse files Browse the repository at this point in the history
ttm_bo_init will call the destroy callback which will do all
this, this was causing a double free.

Signed-off-by: Dave Airlie <airlied@redhat.com>
  • Loading branch information
Dave Airlie authored and Gerd Hoffmann committed Oct 16, 2015
1 parent 6d41533 commit 7552ed8
Showing 1 changed file with 3 additions and 8 deletions.
11 changes: 3 additions & 8 deletions drivers/gpu/drm/virtio/virtgpu_object.c
Original file line number Diff line number Diff line change
Expand Up @@ -82,24 +82,19 @@ int virtio_gpu_object_create(struct virtio_gpu_device *vgdev,
size = roundup(size, PAGE_SIZE);
ret = drm_gem_object_init(vgdev->ddev, &bo->gem_base, size);
if (ret != 0)
goto err_gem_init;
return ret;
bo->dumb = false;
virtio_gpu_init_ttm_placement(bo, pinned);

ret = ttm_bo_init(&vgdev->mman.bdev, &bo->tbo, size, type,
&bo->placement, 0, !kernel, NULL, acc_size,
NULL, NULL, &virtio_gpu_ttm_bo_destroy);
/* ttm_bo_init failure will call the destroy */
if (ret != 0)
goto err_ttm_init;
return ret;

*bo_ptr = bo;
return 0;

err_ttm_init:
drm_gem_object_release(&bo->gem_base);
err_gem_init:
kfree(bo);
return ret;
}

int virtio_gpu_object_kmap(struct virtio_gpu_object *bo, void **ptr)
Expand Down

0 comments on commit 7552ed8

Please sign in to comment.