diff options
author | Dave Airlie <airlied@redhat.com> | 2015-10-13 16:55:48 +1000 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2015-10-16 10:44:01 +0200 |
commit | 7552ed8a1a810552e16664d7020d61d2b01b9199 (patch) | |
tree | 31c05a1b128915fce283615a0259a69b9edb08bb /drivers | |
parent | 6d41533433e2eff26005ee39d103948fa65dd891 (diff) | |
download | op-kernel-dev-7552ed8a1a810552e16664d7020d61d2b01b9199.zip op-kernel-dev-7552ed8a1a810552e16664d7020d61d2b01b9199.tar.gz |
virtio-gpu: don't free things on ttm_bo_init failure
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>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/virtio/virtgpu_object.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/drivers/gpu/drm/virtio/virtgpu_object.c b/drivers/gpu/drm/virtio/virtgpu_object.c index 2c624c7..f300eba 100644 --- a/drivers/gpu/drm/virtio/virtgpu_object.c +++ b/drivers/gpu/drm/virtio/virtgpu_object.c @@ -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) |