Lines Matching +full:entry +full:- +full:method
1 // SPDX-License-Identifier: GPL-2.0-or-later
27 unsigned int method; member
35 write_lock(&sess->chann_lock); in free_channel_list()
36 list_for_each_entry_safe(chann, tmp, &sess->ksmbd_chann_list, in free_channel_list()
38 list_del(&chann->chann_list); in free_channel_list()
41 write_unlock(&sess->chann_lock); in free_channel_list()
45 struct ksmbd_session_rpc *entry) in __session_rpc_close() argument
49 resp = ksmbd_rpc_close(sess, entry->id); in __session_rpc_close()
51 pr_err("Unable to close RPC pipe %d\n", entry->id); in __session_rpc_close()
54 ksmbd_rpc_id_free(entry->id); in __session_rpc_close()
55 kfree(entry); in __session_rpc_close()
60 struct ksmbd_session_rpc *entry; in ksmbd_session_rpc_clear_list() local
62 while (!list_empty(&sess->rpc_handle_list)) { in ksmbd_session_rpc_clear_list()
63 entry = list_entry(sess->rpc_handle_list.next, in ksmbd_session_rpc_clear_list()
67 list_del(&entry->list); in ksmbd_session_rpc_clear_list()
68 __session_rpc_close(sess, entry); in ksmbd_session_rpc_clear_list()
95 struct ksmbd_session_rpc *entry; in ksmbd_session_rpc_open() local
97 int method; in ksmbd_session_rpc_open() local
99 method = __rpc_method(rpc_name); in ksmbd_session_rpc_open()
100 if (!method) in ksmbd_session_rpc_open()
101 return -EINVAL; in ksmbd_session_rpc_open()
103 entry = kzalloc(sizeof(struct ksmbd_session_rpc), GFP_KERNEL); in ksmbd_session_rpc_open()
104 if (!entry) in ksmbd_session_rpc_open()
105 return -EINVAL; in ksmbd_session_rpc_open()
107 list_add(&entry->list, &sess->rpc_handle_list); in ksmbd_session_rpc_open()
108 entry->method = method; in ksmbd_session_rpc_open()
109 entry->id = ksmbd_ipc_id_alloc(); in ksmbd_session_rpc_open()
110 if (entry->id < 0) in ksmbd_session_rpc_open()
113 resp = ksmbd_rpc_open(sess, entry->id); in ksmbd_session_rpc_open()
118 return entry->id; in ksmbd_session_rpc_open()
120 list_del(&entry->list); in ksmbd_session_rpc_open()
121 kfree(entry); in ksmbd_session_rpc_open()
122 return -EINVAL; in ksmbd_session_rpc_open()
127 struct ksmbd_session_rpc *entry; in ksmbd_session_rpc_close() local
129 list_for_each_entry(entry, &sess->rpc_handle_list, list) { in ksmbd_session_rpc_close()
130 if (entry->id == id) { in ksmbd_session_rpc_close()
131 list_del(&entry->list); in ksmbd_session_rpc_close()
132 __session_rpc_close(sess, entry); in ksmbd_session_rpc_close()
140 struct ksmbd_session_rpc *entry; in ksmbd_session_rpc_method() local
142 list_for_each_entry(entry, &sess->rpc_handle_list, list) { in ksmbd_session_rpc_method()
143 if (entry->id == id) in ksmbd_session_rpc_method()
144 return entry->method; in ksmbd_session_rpc_method()
155 hash_del(&sess->hlist); in ksmbd_session_destroy()
158 if (sess->user) in ksmbd_session_destroy()
159 ksmbd_free_user(sess->user); in ksmbd_session_destroy()
162 ksmbd_destroy_file_table(&sess->file_table); in ksmbd_session_destroy()
165 kfree(sess->Preauth_HashValue); in ksmbd_session_destroy()
166 ksmbd_release_id(&session_ida, sess->id); in ksmbd_session_destroy()
175 if (id == sess->id) in __session_lookup()
184 sess->dialect = conn->dialect; in ksmbd_session_register()
185 memcpy(sess->ClientGUID, conn->ClientGUID, SMB2_CLIENT_GUID_SIZE); in ksmbd_session_register()
186 return xa_err(xa_store(&conn->sessions, sess->id, sess, GFP_KERNEL)); in ksmbd_session_register()
193 write_lock(&sess->chann_lock); in ksmbd_chann_del()
194 list_for_each_entry_safe(chann, tmp, &sess->ksmbd_chann_list, in ksmbd_chann_del()
196 if (chann->conn == conn) { in ksmbd_chann_del()
197 list_del(&chann->chann_list); in ksmbd_chann_del()
199 write_unlock(&sess->chann_lock); in ksmbd_chann_del()
203 write_unlock(&sess->chann_lock); in ksmbd_chann_del()
205 return -ENOENT; in ksmbd_chann_del()
212 if (conn->binding) { in ksmbd_sessions_deregister()
226 xa_for_each(&conn->sessions, id, sess) { in ksmbd_sessions_deregister()
235 if (list_empty(&sess->ksmbd_chann_list)) { in ksmbd_sessions_deregister()
236 xa_erase(&conn->sessions, sess->id); in ksmbd_sessions_deregister()
244 return xa_load(&conn->sessions, id); in ksmbd_session_lookup()
264 if (!sess && conn->binding) in ksmbd_session_lookup_all()
266 if (sess && sess->state != SMB2_SESSION_VALID) in ksmbd_session_lookup_all()
280 sess->id = sess_id; in ksmbd_preauth_session_alloc()
281 memcpy(sess->Preauth_HashValue, conn->preauth_info->Preauth_HashValue, in ksmbd_preauth_session_alloc()
283 list_add(&sess->preauth_entry, &conn->preauth_sess_table); in ksmbd_preauth_session_alloc()
291 return sess->id == id; in ksmbd_preauth_session_id_match()
299 list_for_each_entry(sess, &conn->preauth_sess_table, preauth_entry) { in ksmbd_preauth_session_lookup()
311 return -EINVAL; in __init_smb2_session()
312 sess->id = id; in __init_smb2_session()
325 if (ksmbd_init_file_table(&sess->file_table)) in __session_create()
329 xa_init(&sess->tree_conns); in __session_create()
330 INIT_LIST_HEAD(&sess->ksmbd_chann_list); in __session_create()
331 INIT_LIST_HEAD(&sess->rpc_handle_list); in __session_create()
332 sess->sequence_number = 1; in __session_create()
333 rwlock_init(&sess->chann_lock); in __session_create()
340 ret = -EINVAL; in __session_create()
347 ida_init(&sess->tree_conn_ida); in __session_create()
351 hash_add(sessions_table, &sess->hlist, sess->id); in __session_create()
368 int id = -EINVAL; in ksmbd_acquire_tree_conn_id()
371 id = ksmbd_acquire_smb2_tid(&sess->tree_conn_ida); in ksmbd_acquire_tree_conn_id()
379 ksmbd_release_id(&sess->tree_conn_ida, id); in ksmbd_release_tree_conn_id()