ttm_tt_destroy(bo->ttm);
        atomic_dec(&bo->glob->bo_count);
        dma_fence_put(bo->moving);
-       if (bo->resv == &bo->ttm_resv)
-               reservation_object_fini(&bo->ttm_resv);
+       reservation_object_fini(&bo->ttm_resv);
        mutex_destroy(&bo->wu_mutex);
        if (bo->destroy)
                bo->destroy(bo);
        if (bo->resv == &bo->ttm_resv)
                return 0;
 
-       reservation_object_init(&bo->ttm_resv);
        BUG_ON(!reservation_object_trylock(&bo->ttm_resv));
 
        r = reservation_object_copy_fences(&bo->ttm_resv, bo->resv);
-       if (r) {
+       if (r)
                reservation_object_unlock(&bo->ttm_resv);
-               reservation_object_fini(&bo->ttm_resv);
-       }
 
        return r;
 }
                if (reservation_object_test_signaled_rcu(&bo->ttm_resv, true)) {
                        ttm_bo_del_from_lru(bo);
                        spin_unlock(&glob->lru_lock);
-                       if (bo->resv != &bo->ttm_resv) {
+                       if (bo->resv != &bo->ttm_resv)
                                reservation_object_unlock(&bo->ttm_resv);
-                               reservation_object_fini(&bo->ttm_resv);
-                       }
 
                        ttm_bo_cleanup_memtype_use(bo);
                        return;
        }
 
        ttm_bo_del_from_lru(bo);
-       if (!list_empty(&bo->ddestroy) && (bo->resv != &bo->ttm_resv))
-               reservation_object_fini(&bo->ttm_resv);
        list_del_init(&bo->ddestroy);
        kref_put(&bo->list_kref, ttm_bo_ref_bug);
 
                lockdep_assert_held(&bo->resv->lock.base);
        } else {
                bo->resv = &bo->ttm_resv;
-               reservation_object_init(&bo->ttm_resv);
        }
+       reservation_object_init(&bo->ttm_resv);
        atomic_inc(&bo->glob->bo_count);
        drm_vma_node_reset(&bo->vma_node);
        bo->priority = 0;