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()
65 handle_unload_ta(sess->ta_handle); in release_session()
66 kfree(sess); in release_session()
77 struct amdtee_session *sess; in amdtee_release() local
79 sess = list_first_entry_or_null(&ctxdata->sess_list, in amdtee_release()
83 if (!sess) in amdtee_release()
86 list_del(&sess->list_node); in amdtee_release()
87 release_session(sess); in amdtee_release()
113 struct amdtee_session *sess; in alloc_session() local
117 list_for_each_entry(sess, &ctxdata->sess_list, list_node) in alloc_session()
118 if (sess->ta_handle == ta_handle) { in alloc_session()
119 kref_get(&sess->refcount); in alloc_session()
120 return sess; in alloc_session()
124 sess = kzalloc(sizeof(*sess), GFP_KERNEL); in alloc_session()
125 if (sess) { in alloc_session()
126 sess->ta_handle = ta_handle; in alloc_session()
127 kref_init(&sess->refcount); in alloc_session()
128 spin_lock_init(&sess->lock); in alloc_session()
129 list_add(&sess->list_node, &ctxdata->sess_list); in alloc_session()
132 return sess; in alloc_session()
141 struct amdtee_session *sess; in find_session() local
146 list_for_each_entry(sess, &ctxdata->sess_list, list_node) in find_session()
147 if (ta_handle == sess->ta_handle && in find_session()
148 test_bit(index, sess->sess_mask)) in find_session()
149 return sess; in find_session()
224 struct amdtee_session *sess = container_of(ref, struct amdtee_session, in destroy_session() local
228 handle_unload_ta(sess->ta_handle); in destroy_session()
230 list_del(&sess->list_node); in destroy_session()
232 kfree(sess); in destroy_session()
240 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()
272 spin_lock(&sess->lock); in amdtee_open_session()
273 i = find_first_zero_bit(sess->sess_mask, TEE_NUM_SESSIONS); in amdtee_open_session()
275 set_bit(i, sess->sess_mask); in amdtee_open_session()
276 spin_unlock(&sess->lock); in amdtee_open_session()
280 kref_put(&sess->refcount, destroy_session); in amdtee_open_session()
289 spin_lock(&sess->lock); in amdtee_open_session()
290 clear_bit(i, sess->sess_mask); in amdtee_open_session()
291 spin_unlock(&sess->lock); in amdtee_open_session()
292 kref_put(&sess->refcount, destroy_session); in amdtee_open_session()
296 sess->session_info[i] = session_info; in amdtee_open_session()
297 set_session_id(sess->ta_handle, i, &arg->session); in amdtee_open_session()
307 struct amdtee_session *sess; in amdtee_close_session() local
316 sess = find_session(ctxdata, session); in amdtee_close_session()
317 if (sess) { in amdtee_close_session()
320 session_info = sess->session_info[i]; in amdtee_close_session()
321 spin_lock(&sess->lock); in amdtee_close_session()
322 clear_bit(i, sess->sess_mask); in amdtee_close_session()
323 spin_unlock(&sess->lock); in amdtee_close_session()
327 if (!sess) in amdtee_close_session()
333 kref_put(&sess->refcount, destroy_session); in amdtee_close_session()
409 struct amdtee_session *sess; in amdtee_invoke_func() local
414 sess = find_session(ctxdata, arg->session); in amdtee_invoke_func()
415 if (sess) { in amdtee_invoke_func()
417 session_info = sess->session_info[i]; in amdtee_invoke_func()
421 if (!sess) in amdtee_invoke_func()