Lines Matching refs:sess
50 static void release_session(struct amdtee_session *sess) in release_session() argument
57 if (!test_bit(i, sess->sess_mask)) in release_session()
60 handle_close_session(sess->ta_handle, sess->session_info[i]); in release_session()
61 handle_unload_ta(sess->ta_handle); in release_session()
64 kfree(sess); in release_session()
75 struct amdtee_session *sess; in amdtee_release() local
77 sess = list_first_entry_or_null(&ctxdata->sess_list, in amdtee_release()
81 if (!sess) in amdtee_release()
84 list_del(&sess->list_node); in amdtee_release()
85 release_session(sess); in amdtee_release()
111 struct amdtee_session *sess; in alloc_session() local
115 list_for_each_entry(sess, &ctxdata->sess_list, list_node) in alloc_session()
116 if (sess->ta_handle == ta_handle) { in alloc_session()
117 kref_get(&sess->refcount); in alloc_session()
118 return sess; in alloc_session()
122 sess = kzalloc(sizeof(*sess), GFP_KERNEL); in alloc_session()
123 if (sess) { in alloc_session()
124 sess->ta_handle = ta_handle; in alloc_session()
125 kref_init(&sess->refcount); in alloc_session()
126 spin_lock_init(&sess->lock); in alloc_session()
127 list_add(&sess->list_node, &ctxdata->sess_list); in alloc_session()
130 return sess; in alloc_session()
139 struct amdtee_session *sess; in find_session() local
144 list_for_each_entry(sess, &ctxdata->sess_list, list_node) in find_session()
145 if (ta_handle == sess->ta_handle && in find_session()
146 test_bit(index, sess->sess_mask)) in find_session()
147 return sess; in find_session()
222 struct amdtee_session *sess = container_of(ref, struct amdtee_session, in destroy_session() local
225 list_del(&sess->list_node); in destroy_session()
227 kfree(sess); in destroy_session()
235 struct amdtee_session *sess = NULL; in amdtee_open_session() local
260 sess = alloc_session(ctxdata, arg->session); in amdtee_open_session()
263 if (!sess) { in amdtee_open_session()
274 kref_put_mutex(&sess->refcount, destroy_session, in amdtee_open_session()
280 spin_lock(&sess->lock); in amdtee_open_session()
281 i = find_first_zero_bit(sess->sess_mask, TEE_NUM_SESSIONS); in amdtee_open_session()
283 sess->session_info[i] = session_info; in amdtee_open_session()
285 set_bit(i, sess->sess_mask); in amdtee_open_session()
287 spin_unlock(&sess->lock); in amdtee_open_session()
293 kref_put_mutex(&sess->refcount, destroy_session, in amdtee_open_session()
308 struct amdtee_session *sess; in amdtee_close_session() local
317 sess = find_session(ctxdata, session); in amdtee_close_session()
318 if (sess) { in amdtee_close_session()
321 session_info = sess->session_info[i]; in amdtee_close_session()
322 spin_lock(&sess->lock); in amdtee_close_session()
323 clear_bit(i, sess->sess_mask); in amdtee_close_session()
324 spin_unlock(&sess->lock); in amdtee_close_session()
328 if (!sess) in amdtee_close_session()
335 kref_put_mutex(&sess->refcount, destroy_session, &session_list_mutex); in amdtee_close_session()
411 struct amdtee_session *sess; in amdtee_invoke_func() local
416 sess = find_session(ctxdata, arg->session); in amdtee_invoke_func()
417 if (sess) { in amdtee_invoke_func()
419 session_info = sess->session_info[i]; in amdtee_invoke_func()
423 if (!sess) in amdtee_invoke_func()