Lines Matching refs:sess

51 static void release_session(struct amdtee_session *sess)  in release_session()  argument
58 if (!test_bit(i, sess->sess_mask)) in release_session()
61 handle_close_session(sess->ta_handle, sess->session_info[i]); in release_session()
62 handle_unload_ta(sess->ta_handle); in release_session()
65 kfree(sess); in release_session()
76 struct amdtee_session *sess; in amdtee_release() local
78 sess = list_first_entry_or_null(&ctxdata->sess_list, in amdtee_release()
82 if (!sess) in amdtee_release()
85 list_del(&sess->list_node); in amdtee_release()
86 release_session(sess); in amdtee_release()
112 struct amdtee_session *sess; in alloc_session() local
116 list_for_each_entry(sess, &ctxdata->sess_list, list_node) in alloc_session()
117 if (sess->ta_handle == ta_handle) { in alloc_session()
118 kref_get(&sess->refcount); in alloc_session()
119 return sess; in alloc_session()
123 sess = kzalloc(sizeof(*sess), GFP_KERNEL); in alloc_session()
124 if (sess) { in alloc_session()
125 sess->ta_handle = ta_handle; in alloc_session()
126 kref_init(&sess->refcount); in alloc_session()
127 spin_lock_init(&sess->lock); in alloc_session()
128 list_add(&sess->list_node, &ctxdata->sess_list); in alloc_session()
131 return sess; in alloc_session()
140 struct amdtee_session *sess; in find_session() local
145 list_for_each_entry(sess, &ctxdata->sess_list, list_node) in find_session()
146 if (ta_handle == sess->ta_handle && in find_session()
147 test_bit(index, sess->sess_mask)) in find_session()
148 return sess; in find_session()
223 struct amdtee_session *sess = container_of(ref, struct amdtee_session, in destroy_session() local
226 list_del(&sess->list_node); in destroy_session()
228 kfree(sess); in destroy_session()
236 struct amdtee_session *sess = NULL; in amdtee_open_session() local
261 sess = alloc_session(ctxdata, arg->session); in amdtee_open_session()
264 if (!sess) { in amdtee_open_session()
275 kref_put_mutex(&sess->refcount, destroy_session, in amdtee_open_session()
281 spin_lock(&sess->lock); in amdtee_open_session()
282 i = find_first_zero_bit(sess->sess_mask, TEE_NUM_SESSIONS); in amdtee_open_session()
284 sess->session_info[i] = session_info; in amdtee_open_session()
286 set_bit(i, sess->sess_mask); in amdtee_open_session()
288 spin_unlock(&sess->lock); in amdtee_open_session()
294 kref_put_mutex(&sess->refcount, destroy_session, in amdtee_open_session()
309 struct amdtee_session *sess; in amdtee_close_session() local
318 sess = find_session(ctxdata, session); in amdtee_close_session()
319 if (sess) { in amdtee_close_session()
322 session_info = sess->session_info[i]; in amdtee_close_session()
323 spin_lock(&sess->lock); in amdtee_close_session()
324 clear_bit(i, sess->sess_mask); in amdtee_close_session()
325 spin_unlock(&sess->lock); in amdtee_close_session()
329 if (!sess) in amdtee_close_session()
336 kref_put_mutex(&sess->refcount, destroy_session, &session_list_mutex); in amdtee_close_session()
412 struct amdtee_session *sess; in amdtee_invoke_func() local
417 sess = find_session(ctxdata, arg->session); in amdtee_invoke_func()
418 if (sess) { in amdtee_invoke_func()
420 session_info = sess->session_info[i]; in amdtee_invoke_func()
424 if (!sess) in amdtee_invoke_func()