drm/ttm: Fix an oops and sync object leak.
The code was potentially dereferencig a NULL sync object pointer. At the same time a sync object reference was potentially leaked. Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
committed by
Dave Airlie
parent
7a50f01a4a
commit
4677f15c60
@@ -509,8 +509,8 @@ int ttm_bo_move_accel_cleanup(struct ttm_buffer_object *bo,
|
|||||||
if (evict) {
|
if (evict) {
|
||||||
ret = ttm_bo_wait(bo, false, false, false);
|
ret = ttm_bo_wait(bo, false, false, false);
|
||||||
spin_unlock(&bo->lock);
|
spin_unlock(&bo->lock);
|
||||||
driver->sync_obj_unref(&bo->sync_obj);
|
if (tmp_obj)
|
||||||
|
driver->sync_obj_unref(&tmp_obj);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
@@ -532,6 +532,8 @@ int ttm_bo_move_accel_cleanup(struct ttm_buffer_object *bo,
|
|||||||
|
|
||||||
set_bit(TTM_BO_PRIV_FLAG_MOVING, &bo->priv_flags);
|
set_bit(TTM_BO_PRIV_FLAG_MOVING, &bo->priv_flags);
|
||||||
spin_unlock(&bo->lock);
|
spin_unlock(&bo->lock);
|
||||||
|
if (tmp_obj)
|
||||||
|
driver->sync_obj_unref(&tmp_obj);
|
||||||
|
|
||||||
ret = ttm_buffer_object_transfer(bo, &ghost_obj);
|
ret = ttm_buffer_object_transfer(bo, &ghost_obj);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
Reference in New Issue
Block a user