Lines Matching +full:entry +full:- +full:method

1 // SPDX-License-Identifier: GPL-2.0-or-later
27 unsigned int method; member
35 list_for_each_entry_safe(chann, tmp, &sess->ksmbd_chann_list, in free_channel_list()
37 list_del(&chann->chann_list); in free_channel_list()
43 struct ksmbd_session_rpc *entry) in __session_rpc_close() argument
47 resp = ksmbd_rpc_close(sess, entry->id); in __session_rpc_close()
49 pr_err("Unable to close RPC pipe %d\n", entry->id); in __session_rpc_close()
52 ksmbd_rpc_id_free(entry->id); in __session_rpc_close()
53 kfree(entry); in __session_rpc_close()
58 struct ksmbd_session_rpc *entry; in ksmbd_session_rpc_clear_list() local
60 while (!list_empty(&sess->rpc_handle_list)) { in ksmbd_session_rpc_clear_list()
61 entry = list_entry(sess->rpc_handle_list.next, in ksmbd_session_rpc_clear_list()
65 list_del(&entry->list); in ksmbd_session_rpc_clear_list()
66 __session_rpc_close(sess, entry); in ksmbd_session_rpc_clear_list()
93 struct ksmbd_session_rpc *entry; in ksmbd_session_rpc_open() local
95 int method; in ksmbd_session_rpc_open() local
97 method = __rpc_method(rpc_name); in ksmbd_session_rpc_open()
98 if (!method) in ksmbd_session_rpc_open()
99 return -EINVAL; in ksmbd_session_rpc_open()
101 entry = kzalloc(sizeof(struct ksmbd_session_rpc), GFP_KERNEL); in ksmbd_session_rpc_open()
102 if (!entry) in ksmbd_session_rpc_open()
103 return -EINVAL; in ksmbd_session_rpc_open()
105 list_add(&entry->list, &sess->rpc_handle_list); in ksmbd_session_rpc_open()
106 entry->method = method; in ksmbd_session_rpc_open()
107 entry->id = ksmbd_ipc_id_alloc(); in ksmbd_session_rpc_open()
108 if (entry->id < 0) in ksmbd_session_rpc_open()
111 resp = ksmbd_rpc_open(sess, entry->id); in ksmbd_session_rpc_open()
116 return entry->id; in ksmbd_session_rpc_open()
118 list_del(&entry->list); in ksmbd_session_rpc_open()
119 kfree(entry); in ksmbd_session_rpc_open()
120 return -EINVAL; in ksmbd_session_rpc_open()
125 struct ksmbd_session_rpc *entry; in ksmbd_session_rpc_close() local
127 list_for_each_entry(entry, &sess->rpc_handle_list, list) { in ksmbd_session_rpc_close()
128 if (entry->id == id) { in ksmbd_session_rpc_close()
129 list_del(&entry->list); in ksmbd_session_rpc_close()
130 __session_rpc_close(sess, entry); in ksmbd_session_rpc_close()
138 struct ksmbd_session_rpc *entry; in ksmbd_session_rpc_method() local
140 list_for_each_entry(entry, &sess->rpc_handle_list, list) { in ksmbd_session_rpc_method()
141 if (entry->id == id) in ksmbd_session_rpc_method()
142 return entry->method; in ksmbd_session_rpc_method()
152 if (!atomic_dec_and_test(&sess->refcnt)) in ksmbd_session_destroy()
155 list_del(&sess->sessions_entry); in ksmbd_session_destroy()
158 hash_del(&sess->hlist); in ksmbd_session_destroy()
161 if (sess->user) in ksmbd_session_destroy()
162 ksmbd_free_user(sess->user); in ksmbd_session_destroy()
165 ksmbd_destroy_file_table(&sess->file_table); in ksmbd_session_destroy()
168 kfree(sess->Preauth_HashValue); in ksmbd_session_destroy()
169 ksmbd_release_id(&session_ida, sess->id); in ksmbd_session_destroy()
178 if (id == sess->id) in __session_lookup()
187 sess->conn = conn; in ksmbd_session_register()
188 list_add(&sess->sessions_entry, &conn->sessions); in ksmbd_session_register()
195 while (!list_empty(&conn->sessions)) { in ksmbd_sessions_deregister()
196 sess = list_entry(conn->sessions.next, in ksmbd_sessions_deregister()
207 return sess->id == id; in ksmbd_session_id_match()
215 list_for_each_entry(sess, &conn->sessions, sessions_entry) { in ksmbd_session_lookup()
224 return atomic_inc_not_zero(&sess->refcnt); in get_session()
229 if (atomic_dec_and_test(&sess->refcnt)) in put_session()
254 if (!sess && conn->binding) in ksmbd_session_lookup_all()
268 sess->id = sess_id; in ksmbd_preauth_session_alloc()
269 memcpy(sess->Preauth_HashValue, conn->preauth_info->Preauth_HashValue, in ksmbd_preauth_session_alloc()
271 list_add(&sess->preauth_entry, &conn->preauth_sess_table); in ksmbd_preauth_session_alloc()
279 return sess->id == id; in ksmbd_preauth_session_id_match()
287 list_for_each_entry(sess, &conn->preauth_sess_table, preauth_entry) { in ksmbd_preauth_session_lookup()
299 return -EINVAL; in __init_smb2_session()
300 sess->id = id; in __init_smb2_session()
313 if (ksmbd_init_file_table(&sess->file_table)) in __session_create()
317 INIT_LIST_HEAD(&sess->sessions_entry); in __session_create()
318 xa_init(&sess->tree_conns); in __session_create()
319 INIT_LIST_HEAD(&sess->ksmbd_chann_list); in __session_create()
320 INIT_LIST_HEAD(&sess->rpc_handle_list); in __session_create()
321 sess->sequence_number = 1; in __session_create()
322 atomic_set(&sess->refcnt, 1); in __session_create()
329 ret = -EINVAL; in __session_create()
336 ida_init(&sess->tree_conn_ida); in __session_create()
340 hash_add(sessions_table, &sess->hlist, sess->id); in __session_create()
357 int id = -EINVAL; in ksmbd_acquire_tree_conn_id()
360 id = ksmbd_acquire_smb2_tid(&sess->tree_conn_ida); in ksmbd_acquire_tree_conn_id()
368 ksmbd_release_id(&sess->tree_conn_ida, id); in ksmbd_release_tree_conn_id()