static void sync_file_free(struct kref *kref) { struct sync_file *sync_file = container_of(kref, struct sync_file, kref); if (test_bit(POLL_ENABLED, &sync_file->fence->flags)) fence_remove_callback(sync_file->fence, &sync_file->cb); fence_put(sync_file->fence); kfree(sync_file); }
static void reservation_cb_cleanup(struct drm_reservation_cb *rcb) { unsigned cb; for (cb = 0; cb < rcb->num_fence_cbs; cb++) { if (rcb->fence_cbs[cb]) { fence_remove_callback(rcb->fence_cbs[cb]->fence, &rcb->fence_cbs[cb]->base); fence_put(rcb->fence_cbs[cb]->fence); kfree(rcb->fence_cbs[cb]); rcb->fence_cbs[cb] = NULL; } } kfree(rcb->fence_cbs); rcb->fence_cbs = NULL; rcb->num_fence_cbs = 0; }