Lines Matching refs:sess
53 static void release_session(struct amdtee_session *sess) in release_session() argument
60 if (!test_bit(i, sess->sess_mask)) in release_session()
63 handle_close_session(sess->ta_handle, sess->session_info[i]); in release_session()
64 handle_unload_ta(sess->ta_handle); in release_session()
67 kfree(sess); in release_session()
78 struct amdtee_session *sess; in amdtee_release() local
80 sess = list_first_entry_or_null(&ctxdata->sess_list, in amdtee_release()
84 if (!sess) in amdtee_release()
87 list_del(&sess->list_node); in amdtee_release()
88 release_session(sess); in amdtee_release()
114 struct amdtee_session *sess; in alloc_session() local
118 list_for_each_entry(sess, &ctxdata->sess_list, list_node) in alloc_session()
119 if (sess->ta_handle == ta_handle) { in alloc_session()
120 kref_get(&sess->refcount); in alloc_session()
121 return sess; in alloc_session()
125 sess = kzalloc(sizeof(*sess), GFP_KERNEL); in alloc_session()
126 if (sess) { in alloc_session()
127 sess->ta_handle = ta_handle; in alloc_session()
128 kref_init(&sess->refcount); in alloc_session()
129 spin_lock_init(&sess->lock); in alloc_session()
130 list_add(&sess->list_node, &ctxdata->sess_list); in alloc_session()
133 return sess; in alloc_session()
142 struct amdtee_session *sess; in find_session() local
147 list_for_each_entry(sess, &ctxdata->sess_list, list_node) in find_session()
148 if (ta_handle == sess->ta_handle && in find_session()
149 test_bit(index, sess->sess_mask)) in find_session()
150 return sess; in find_session()
225 struct amdtee_session *sess = container_of(ref, struct amdtee_session, in destroy_session() local
228 list_del(&sess->list_node); in destroy_session()
230 kfree(sess); in destroy_session()
238 struct amdtee_session *sess = NULL; in amdtee_open_session() local
263 sess = alloc_session(ctxdata, arg->session); in amdtee_open_session()
266 if (!sess) { in amdtee_open_session()
277 kref_put_mutex(&sess->refcount, destroy_session, in amdtee_open_session()
283 spin_lock(&sess->lock); in amdtee_open_session()
284 i = find_first_zero_bit(sess->sess_mask, TEE_NUM_SESSIONS); in amdtee_open_session()
286 sess->session_info[i] = session_info; in amdtee_open_session()
288 set_bit(i, sess->sess_mask); in amdtee_open_session()
290 spin_unlock(&sess->lock); in amdtee_open_session()
296 kref_put_mutex(&sess->refcount, destroy_session, in amdtee_open_session()
311 struct amdtee_session *sess; in amdtee_close_session() local
320 sess = find_session(ctxdata, session); in amdtee_close_session()
321 if (sess) { in amdtee_close_session()
324 session_info = sess->session_info[i]; in amdtee_close_session()
325 spin_lock(&sess->lock); in amdtee_close_session()
326 clear_bit(i, sess->sess_mask); in amdtee_close_session()
327 spin_unlock(&sess->lock); in amdtee_close_session()
331 if (!sess) in amdtee_close_session()
338 kref_put_mutex(&sess->refcount, destroy_session, &session_list_mutex); in amdtee_close_session()
414 struct amdtee_session *sess; in amdtee_invoke_func() local
419 sess = find_session(ctxdata, arg->session); in amdtee_invoke_func()
420 if (sess) { in amdtee_invoke_func()
422 session_info = sess->session_info[i]; in amdtee_invoke_func()
426 if (!sess) in amdtee_invoke_func()