]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
drm/ttm: fix fence locking in ttm_buffer_object_transfer
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 18 Dec 2012 21:25:11 +0000 (22:25 +0100)
committerDave Airlie <airlied@redhat.com>
Tue, 8 Jan 2013 08:35:31 +0000 (18:35 +1000)
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: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/ttm/ttm_bo_util.c

index 9e9c5d2a5c748a910fcd29a856c128d25a4f8ae0..d73d6e3e17b2927c6215213e872e155a3badbfab 100644 (file)
@@ -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;