Lines Matching refs:object
55 struct qcomtee_object *object; in qcomtee_qtee_object_alloc() local
57 object = kzalloc(sizeof(*object), GFP_KERNEL); in qcomtee_qtee_object_alloc()
58 if (!object) in qcomtee_qtee_object_alloc()
62 object->name = kasprintf(GFP_KERNEL, "qcomtee-%u", object_id); in qcomtee_qtee_object_alloc()
63 QCOMTEE_OBJECT_SET(object, QCOMTEE_OBJECT_TYPE_TEE, object_id); in qcomtee_qtee_object_alloc()
64 kref_init(&object->refcount); in qcomtee_qtee_object_alloc()
66 object->info.qcomtee_async_ctx = qcomtee->ctx; in qcomtee_qtee_object_alloc()
67 teedev_ctx_get(object->info.qcomtee_async_ctx); in qcomtee_qtee_object_alloc()
69 return object; in qcomtee_qtee_object_alloc()
72 static void qcomtee_qtee_object_free(struct qcomtee_object *object) in qcomtee_qtee_object_free() argument
75 teedev_ctx_put(object->info.qcomtee_async_ctx); in qcomtee_qtee_object_free()
77 kfree(object->name); in qcomtee_qtee_object_free()
78 kfree(object); in qcomtee_qtee_object_free()
83 struct qcomtee_object *object; in qcomtee_do_release_qtee_object() local
90 object = container_of(work, struct qcomtee_object, work); in qcomtee_do_release_qtee_object()
91 qcomtee = tee_get_drvdata(object->info.qcomtee_async_ctx->teedev); in qcomtee_do_release_qtee_object()
93 qcomtee->oic.ctx = object->info.qcomtee_async_ctx; in qcomtee_do_release_qtee_object()
95 ret = qcomtee_object_do_invoke_internal(&qcomtee->oic, object, in qcomtee_do_release_qtee_object()
101 queue_work(qcomtee->wq, &object->work); in qcomtee_do_release_qtee_object()
105 qcomtee_object_name(object), ret, result); in qcomtee_do_release_qtee_object()
106 qcomtee_qtee_object_free(object); in qcomtee_do_release_qtee_object()
110 static void qcomtee_release_qtee_object(struct qcomtee_object *object) in qcomtee_release_qtee_object() argument
113 tee_get_drvdata(object->info.qcomtee_async_ctx->teedev); in qcomtee_release_qtee_object()
115 INIT_WORK(&object->work, qcomtee_do_release_qtee_object); in qcomtee_release_qtee_object()
116 queue_work(qcomtee->wq, &object->work); in qcomtee_release_qtee_object()
121 struct qcomtee_object *object; in qcomtee_object_release() local
124 object = container_of(refcount, struct qcomtee_object, refcount); in qcomtee_object_release()
133 switch (typeof_qcomtee_object(object)) { in qcomtee_object_release()
135 qcomtee_release_qtee_object(object); in qcomtee_object_release()
139 name = object->name; in qcomtee_object_release()
141 if (object->ops->release) in qcomtee_object_release()
142 object->ops->release(object); in qcomtee_object_release()
160 int qcomtee_object_get(struct qcomtee_object *object) in qcomtee_object_get() argument
162 if (object != &qcomtee_primordial_object && in qcomtee_object_get()
163 object != NULL_QCOMTEE_OBJECT && in qcomtee_object_get()
164 object != ROOT_QCOMTEE_OBJECT) in qcomtee_object_get()
165 return kref_get_unless_zero(&object->refcount); in qcomtee_object_get()
174 void qcomtee_object_put(struct qcomtee_object *object) in qcomtee_object_put() argument
176 if (object != &qcomtee_primordial_object && in qcomtee_object_put()
177 object != NULL_QCOMTEE_OBJECT && in qcomtee_object_put()
178 object != ROOT_QCOMTEE_OBJECT) in qcomtee_object_put()
179 kref_put(&object->refcount, qcomtee_object_release); in qcomtee_object_put()
183 struct qcomtee_object *object) in qcomtee_idx_alloc() argument
188 return xa_alloc_cyclic(&qcomtee->xa_local_objects, idx, object, in qcomtee_idx_alloc()
217 struct qcomtee_object *object, in qcomtee_object_id_get() argument
222 switch (typeof_qcomtee_object(object)) { in qcomtee_object_id_get()
224 if (qcomtee_idx_alloc(oic, &idx, object) < 0) in qcomtee_object_id_get()
232 *object_id = object->info.qtee_id; in qcomtee_object_id_get()
268 struct qcomtee_object *object; in qcomtee_local_object_get() local
274 object = xa_load(&qcomtee->xa_local_objects, object_id); in qcomtee_local_object_get()
276 qcomtee_object_get(object); in qcomtee_local_object_get()
278 return object; in qcomtee_local_object_get()
290 int qcomtee_object_user_init(struct qcomtee_object *object, in qcomtee_object_user_init() argument
298 kref_init(&object->refcount); in qcomtee_object_user_init()
299 QCOMTEE_OBJECT_SET(object, QCOMTEE_OBJECT_TYPE_NULL); in qcomtee_object_user_init()
308 object->ops = ops; in qcomtee_object_user_init()
309 if (!object->ops->dispatch) in qcomtee_object_user_init()
313 object->name = kvasprintf_const(GFP_KERNEL, fmt, ap); in qcomtee_object_user_init()
314 QCOMTEE_OBJECT_SET(object, QCOMTEE_OBJECT_TYPE_CB); in qcomtee_object_user_init()
359 struct qcomtee_object **object, in qcomtee_object_qtee_init() argument
366 *object = NULL_QCOMTEE_OBJECT; in qcomtee_object_qtee_init()
370 *object = qcomtee_local_object_get(oic, object_id); in qcomtee_object_qtee_init()
371 if (*object == NULL_QCOMTEE_OBJECT) in qcomtee_object_qtee_init()
377 *object = qcomtee_qtee_object_alloc(oic, object_id); in qcomtee_object_qtee_init()
378 if (*object == NULL_QCOMTEE_OBJECT) in qcomtee_object_qtee_init()
396 struct qcomtee_object *object, u32 op, in qcomtee_prepare_msg() argument
412 if (qcomtee_object_id_get(oic, object, &object_id)) in qcomtee_prepare_msg()
626 struct qcomtee_object *object; in qcomtee_cb_object_invoke() local
635 object = qcomtee_local_object_get(oic, object_id); in qcomtee_cb_object_invoke()
636 if (object == NULL_QCOMTEE_OBJECT) { in qcomtee_cb_object_invoke()
641 oic->object = object; in qcomtee_cb_object_invoke()
649 qcomtee_object_put(object); in qcomtee_cb_object_invoke()
654 qcomtee_object_get(object); in qcomtee_cb_object_invoke()
668 errno = object->ops->dispatch(oic, object, op, oic->u); in qcomtee_cb_object_invoke()
742 struct qcomtee_object *object, u32 op, in qcomtee_object_do_invoke_internal() argument
758 ret = qcomtee_prepare_msg(oic, object, op, u); in qcomtee_object_do_invoke_internal()
780 qto = oic->object; in qcomtee_object_do_invoke_internal()
792 oic->object = NULL_QCOMTEE_OBJECT; in qcomtee_object_do_invoke_internal()
849 struct qcomtee_object *object, u32 op, in qcomtee_object_do_invoke() argument
857 if (typeof_qcomtee_object(object) != QCOMTEE_OBJECT_TYPE_TEE && in qcomtee_object_do_invoke()
858 typeof_qcomtee_object(object) != QCOMTEE_OBJECT_TYPE_ROOT) in qcomtee_object_do_invoke()
866 return qcomtee_object_do_invoke_internal(oic, object, op, u, result); in qcomtee_object_do_invoke()