Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e8e89622 authored by Daniel Vetter's avatar Daniel Vetter Committed by Dave Airlie
Browse files

drm/ttm: fix fence locking in ttm_buffer_object_transfer



Noticed while reviewing the fence locking in the radeon pageflip
handler.

v2: Instead of grabbing the bdev->fence_lock in object_transfer just
move the single callsite of that function a few lines, so that it is
protected by the fence_lock. Suggested by Jerome Glisse.

v3: Fix typo in commit message.

Reviewed-by: default avatarJerome Glisse <jglisse@redhat.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent c75be259
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -654,11 +654,13 @@ int ttm_bo_move_accel_cleanup(struct ttm_buffer_object *bo,
		 */

		set_bit(TTM_BO_PRIV_FLAG_MOVING, &bo->priv_flags);

		/* ttm_buffer_object_transfer accesses bo->sync_obj */
		ret = ttm_buffer_object_transfer(bo, &ghost_obj);
		spin_unlock(&bdev->fence_lock);
		if (tmp_obj)
			driver->sync_obj_unref(&tmp_obj);

		ret = ttm_buffer_object_transfer(bo, &ghost_obj);
		if (ret)
			return ret;