Lines Matching refs:ses
107 struct TCP_Server_Info *server = tcon->ses->server; in smb2_query_server_interfaces()
149 struct cifs_ses *ses; in cifs_signal_cifsd_for_reconnect() local
163 list_for_each_entry(ses, &server->smb_ses_list, smb_ses_list) { in cifs_signal_cifsd_for_reconnect()
164 spin_lock(&ses->ses_lock); in cifs_signal_cifsd_for_reconnect()
165 if (ses->ses_status == SES_EXITING) { in cifs_signal_cifsd_for_reconnect()
166 spin_unlock(&ses->ses_lock); in cifs_signal_cifsd_for_reconnect()
169 spin_lock(&ses->chan_lock); in cifs_signal_cifsd_for_reconnect()
170 for (i = 1; i < ses->chan_count; i++) { in cifs_signal_cifsd_for_reconnect()
171 nserver = ses->chans[i].server; in cifs_signal_cifsd_for_reconnect()
177 spin_unlock(&ses->chan_lock); in cifs_signal_cifsd_for_reconnect()
178 spin_unlock(&ses->ses_lock); in cifs_signal_cifsd_for_reconnect()
204 struct cifs_ses *ses, *nses; in cifs_mark_tcp_ses_conns_for_reconnect() local
230 list_for_each_entry_safe(ses, nses, &pserver->smb_ses_list, smb_ses_list) { in cifs_mark_tcp_ses_conns_for_reconnect()
231 spin_lock(&ses->ses_lock); in cifs_mark_tcp_ses_conns_for_reconnect()
232 if (ses->ses_status == SES_EXITING) { in cifs_mark_tcp_ses_conns_for_reconnect()
233 spin_unlock(&ses->ses_lock); in cifs_mark_tcp_ses_conns_for_reconnect()
236 spin_unlock(&ses->ses_lock); in cifs_mark_tcp_ses_conns_for_reconnect()
238 spin_lock(&ses->chan_lock); in cifs_mark_tcp_ses_conns_for_reconnect()
239 if (cifs_ses_get_chan_index(ses, server) == in cifs_mark_tcp_ses_conns_for_reconnect()
241 spin_unlock(&ses->chan_lock); in cifs_mark_tcp_ses_conns_for_reconnect()
245 if (!cifs_chan_is_iface_active(ses, server)) { in cifs_mark_tcp_ses_conns_for_reconnect()
246 spin_unlock(&ses->chan_lock); in cifs_mark_tcp_ses_conns_for_reconnect()
247 cifs_chan_update_iface(ses, server); in cifs_mark_tcp_ses_conns_for_reconnect()
248 spin_lock(&ses->chan_lock); in cifs_mark_tcp_ses_conns_for_reconnect()
251 if (!mark_smb_session && cifs_chan_needs_reconnect(ses, server)) { in cifs_mark_tcp_ses_conns_for_reconnect()
252 spin_unlock(&ses->chan_lock); in cifs_mark_tcp_ses_conns_for_reconnect()
257 CIFS_SET_ALL_CHANS_NEED_RECONNECT(ses); in cifs_mark_tcp_ses_conns_for_reconnect()
259 cifs_chan_set_need_reconnect(ses, server); in cifs_mark_tcp_ses_conns_for_reconnect()
262 __func__, ses->chans_need_reconnect); in cifs_mark_tcp_ses_conns_for_reconnect()
265 if (!mark_smb_session && !CIFS_ALL_CHANS_NEED_RECONNECT(ses)) { in cifs_mark_tcp_ses_conns_for_reconnect()
266 spin_unlock(&ses->chan_lock); in cifs_mark_tcp_ses_conns_for_reconnect()
269 spin_unlock(&ses->chan_lock); in cifs_mark_tcp_ses_conns_for_reconnect()
271 spin_lock(&ses->ses_lock); in cifs_mark_tcp_ses_conns_for_reconnect()
272 ses->ses_status = SES_NEED_RECON; in cifs_mark_tcp_ses_conns_for_reconnect()
273 spin_unlock(&ses->ses_lock); in cifs_mark_tcp_ses_conns_for_reconnect()
275 list_for_each_entry(tcon, &ses->tcon_list, tcon_list) { in cifs_mark_tcp_ses_conns_for_reconnect()
283 if (ses->tcon_ipc) { in cifs_mark_tcp_ses_conns_for_reconnect()
284 ses->tcon_ipc->need_reconnect = true; in cifs_mark_tcp_ses_conns_for_reconnect()
285 spin_lock(&ses->tcon_ipc->tc_lock); in cifs_mark_tcp_ses_conns_for_reconnect()
286 ses->tcon_ipc->status = TID_NEED_RECON; in cifs_mark_tcp_ses_conns_for_reconnect()
287 spin_unlock(&ses->tcon_ipc->tc_lock); in cifs_mark_tcp_ses_conns_for_reconnect()
1933 static int match_session(struct cifs_ses *ses, in match_session() argument
1937 struct TCP_Server_Info *server = ses->server; in match_session()
1940 if (!match_super && ctx->dfs_root_ses != ses->dfs_root_ses) in match_session()
1947 if (ses->chan_max < ctx->max_channels) in match_session()
1951 ses_sec = server->ops->select_sectype(server, ses->sectype); in match_session()
1959 if (!uid_eq(ctx->cred_uid, ses->cred_uid)) in match_session()
1966 if (ses->user_name == NULL) { in match_session()
1973 if (strncmp(ses->user_name, in match_session()
1978 ses->password != NULL) { in match_session()
1986 if (ses->password2 != NULL && ctx->password2 != NULL) { in match_session()
1987 if (!((strncmp(ses->password, ctx->password ? in match_session()
1989 strncmp(ses->password2, ctx->password2, in match_session()
1991 (strncmp(ses->password, ctx->password2, in match_session()
1993 strncmp(ses->password2, ctx->password ? in match_session()
1997 } else if ((ses->password2 == NULL && ctx->password2 != NULL) || in match_session()
1998 (ses->password2 != NULL && ctx->password2 == NULL)) { in match_session()
2002 if (strncmp(ses->password, ctx->password ? in match_session()
2009 if (strcmp(ctx->local_nls->charset, ses->local_nls->charset)) in match_session()
2025 cifs_setup_ipc(struct cifs_ses *ses, struct smb3_fs_context *ctx) in cifs_setup_ipc() argument
2031 struct TCP_Server_Info *server = ses->server; in cifs_setup_ipc()
2057 tcon->ses = ses; in cifs_setup_ipc()
2060 rc = server->ops->tree_connect(xid, ses, unc, tcon, ctx->local_nls); in cifs_setup_ipc()
2074 ses->tcon_ipc = tcon; in cifs_setup_ipc()
2082 struct cifs_ses *ses, *ret = NULL; in cifs_find_smb_ses() local
2085 list_for_each_entry(ses, &server->smb_ses_list, smb_ses_list) { in cifs_find_smb_ses()
2086 spin_lock(&ses->ses_lock); in cifs_find_smb_ses()
2087 if (ses->ses_status == SES_EXITING) { in cifs_find_smb_ses()
2088 spin_unlock(&ses->ses_lock); in cifs_find_smb_ses()
2091 spin_lock(&ses->chan_lock); in cifs_find_smb_ses()
2092 if (match_session(ses, ctx, false)) { in cifs_find_smb_ses()
2093 spin_unlock(&ses->chan_lock); in cifs_find_smb_ses()
2094 spin_unlock(&ses->ses_lock); in cifs_find_smb_ses()
2095 ret = ses; in cifs_find_smb_ses()
2098 spin_unlock(&ses->chan_lock); in cifs_find_smb_ses()
2099 spin_unlock(&ses->ses_lock); in cifs_find_smb_ses()
2107 void __cifs_put_smb_ses(struct cifs_ses *ses) in __cifs_put_smb_ses() argument
2109 struct TCP_Server_Info *server = ses->server; in __cifs_put_smb_ses()
2117 spin_lock(&ses->ses_lock); in __cifs_put_smb_ses()
2119 __func__, ses->Suid, ses->ses_count, ses->ses_status, in __cifs_put_smb_ses()
2120 ses->tcon_ipc ? ses->tcon_ipc->tree_name : "none"); in __cifs_put_smb_ses()
2121 if (ses->ses_status == SES_EXITING || --ses->ses_count > 0) { in __cifs_put_smb_ses()
2122 spin_unlock(&ses->ses_lock); in __cifs_put_smb_ses()
2127 WARN_ON(ses->ses_count < 0); in __cifs_put_smb_ses()
2129 spin_lock(&ses->chan_lock); in __cifs_put_smb_ses()
2130 cifs_chan_clear_need_reconnect(ses, server); in __cifs_put_smb_ses()
2131 spin_unlock(&ses->chan_lock); in __cifs_put_smb_ses()
2133 do_logoff = ses->ses_status == SES_GOOD && server->ops->logoff; in __cifs_put_smb_ses()
2134 ses->ses_status = SES_EXITING; in __cifs_put_smb_ses()
2135 tcon = ses->tcon_ipc; in __cifs_put_smb_ses()
2136 ses->tcon_ipc = NULL; in __cifs_put_smb_ses()
2137 spin_unlock(&ses->ses_lock); in __cifs_put_smb_ses()
2151 rc = server->ops->logoff(xid, ses); in __cifs_put_smb_ses()
2158 list_del_init(&ses->smb_ses_list); in __cifs_put_smb_ses()
2162 for (i = 1; i < ses->chan_count; i++) { in __cifs_put_smb_ses()
2163 if (ses->chans[i].iface) { in __cifs_put_smb_ses()
2164 kref_put(&ses->chans[i].iface->refcount, release_iface); in __cifs_put_smb_ses()
2165 ses->chans[i].iface = NULL; in __cifs_put_smb_ses()
2167 cifs_put_tcp_session(ses->chans[i].server, 0); in __cifs_put_smb_ses()
2168 ses->chans[i].server = NULL; in __cifs_put_smb_ses()
2172 if (ses->chans[0].iface) { in __cifs_put_smb_ses()
2173 kref_put(&ses->chans[0].iface->refcount, release_iface); in __cifs_put_smb_ses()
2174 ses->chans[0].server = NULL; in __cifs_put_smb_ses()
2177 sesInfoFree(ses); in __cifs_put_smb_ses()
2188 cifs_set_cifscreds(struct smb3_fs_context *ctx, struct cifs_ses *ses) in cifs_set_cifscreds() argument
2196 struct TCP_Server_Info *server = ses->server; in cifs_set_cifscreds()
2225 if (!ses->domainName) { in cifs_set_cifscreds()
2232 sprintf(desc, "cifs:d:%s", ses->domainName); in cifs_set_cifscreds()
2302 if (is_domain && ses->domainName) { in cifs_set_cifscreds()
2303 ctx->domainname = kstrdup(ses->domainName, GFP_KERNEL); in cifs_set_cifscreds()
2317 strscpy(ctx->workstation_name, ses->workstation_name, sizeof(ctx->workstation_name)); in cifs_set_cifscreds()
2330 struct cifs_ses *ses __attribute__((unused))) in cifs_set_cifscreds() argument
2350 struct cifs_ses *ses; in cifs_get_smb_ses() local
2358 ses = cifs_find_smb_ses(server, ctx); in cifs_get_smb_ses()
2359 if (ses) { in cifs_get_smb_ses()
2361 ses->ses_status); in cifs_get_smb_ses()
2363 spin_lock(&ses->chan_lock); in cifs_get_smb_ses()
2364 if (cifs_chan_needs_reconnect(ses, server)) { in cifs_get_smb_ses()
2365 spin_unlock(&ses->chan_lock); in cifs_get_smb_ses()
2368 mutex_lock(&ses->session_mutex); in cifs_get_smb_ses()
2371 rc = cifs_negotiate_protocol(xid, ses, server); in cifs_get_smb_ses()
2373 mutex_unlock(&ses->session_mutex); in cifs_get_smb_ses()
2375 cifs_put_smb_ses(ses); in cifs_get_smb_ses()
2380 rc = cifs_setup_session(xid, ses, server, in cifs_get_smb_ses()
2384 (rc == -EKEYREVOKED)) && !retries && ses->password2) { in cifs_get_smb_ses()
2387 swap(ses->password, ses->password2); in cifs_get_smb_ses()
2390 mutex_unlock(&ses->session_mutex); in cifs_get_smb_ses()
2392 cifs_put_smb_ses(ses); in cifs_get_smb_ses()
2396 mutex_unlock(&ses->session_mutex); in cifs_get_smb_ses()
2398 spin_lock(&ses->chan_lock); in cifs_get_smb_ses()
2400 spin_unlock(&ses->chan_lock); in cifs_get_smb_ses()
2405 return ses; in cifs_get_smb_ses()
2411 ses = sesInfoAlloc(); in cifs_get_smb_ses()
2412 if (ses == NULL) in cifs_get_smb_ses()
2416 ses->server = server; in cifs_get_smb_ses()
2418 sprintf(ses->ip_addr, "%pI6", &addr6->sin6_addr); in cifs_get_smb_ses()
2420 sprintf(ses->ip_addr, "%pI4", &addr->sin_addr); in cifs_get_smb_ses()
2423 ses->user_name = kstrdup(ctx->username, GFP_KERNEL); in cifs_get_smb_ses()
2424 if (!ses->user_name) in cifs_get_smb_ses()
2430 ses->password = kstrdup(ctx->password, GFP_KERNEL); in cifs_get_smb_ses()
2431 if (!ses->password) in cifs_get_smb_ses()
2436 ses->password2 = kstrdup(ctx->password2, GFP_KERNEL); in cifs_get_smb_ses()
2437 if (!ses->password2) in cifs_get_smb_ses()
2441 ses->domainName = kstrdup(ctx->domainname, GFP_KERNEL); in cifs_get_smb_ses()
2442 if (!ses->domainName) in cifs_get_smb_ses()
2447 ses->dns_dom = kstrndup(ctx->domainname, in cifs_get_smb_ses()
2449 if (!ses->dns_dom) in cifs_get_smb_ses()
2454 strscpy(ses->workstation_name, ctx->workstation_name, sizeof(ses->workstation_name)); in cifs_get_smb_ses()
2457 ses->domainAuto = ctx->domainauto; in cifs_get_smb_ses()
2458 ses->cred_uid = ctx->cred_uid; in cifs_get_smb_ses()
2459 ses->linux_uid = ctx->linux_uid; in cifs_get_smb_ses()
2461 ses->unicode = ctx->unicode; in cifs_get_smb_ses()
2462 ses->sectype = ctx->sectype; in cifs_get_smb_ses()
2463 ses->sign = ctx->sign; in cifs_get_smb_ses()
2473 ses->upcall_target = UPTARGET_APP; in cifs_get_smb_ses()
2476 ses->upcall_target = UPTARGET_MOUNT; in cifs_get_smb_ses()
2480 ses->upcall_target = UPTARGET_APP; in cifs_get_smb_ses()
2484 ses->local_nls = load_nls(ctx->local_nls->charset); in cifs_get_smb_ses()
2487 spin_lock(&ses->chan_lock); in cifs_get_smb_ses()
2488 ses->chans[0].server = server; in cifs_get_smb_ses()
2489 ses->chan_count = 1; in cifs_get_smb_ses()
2490 ses->chan_max = ctx->multichannel ? ctx->max_channels:1; in cifs_get_smb_ses()
2491 ses->chans_need_reconnect = 1; in cifs_get_smb_ses()
2492 spin_unlock(&ses->chan_lock); in cifs_get_smb_ses()
2495 mutex_lock(&ses->session_mutex); in cifs_get_smb_ses()
2496 rc = cifs_negotiate_protocol(xid, ses, server); in cifs_get_smb_ses()
2498 rc = cifs_setup_session(xid, ses, server, ctx->local_nls); in cifs_get_smb_ses()
2499 mutex_unlock(&ses->session_mutex); in cifs_get_smb_ses()
2502 spin_lock(&ses->chan_lock); in cifs_get_smb_ses()
2503 memcpy(ses->chans[0].signkey, ses->smb3signingkey, in cifs_get_smb_ses()
2504 sizeof(ses->smb3signingkey)); in cifs_get_smb_ses()
2505 spin_unlock(&ses->chan_lock); in cifs_get_smb_ses()
2509 (rc == -EKEYREVOKED)) && !retries && ses->password2) { in cifs_get_smb_ses()
2512 swap(ses->password, ses->password2); in cifs_get_smb_ses()
2524 ses->dfs_root_ses = ctx->dfs_root_ses; in cifs_get_smb_ses()
2525 list_add(&ses->smb_ses_list, &server->smb_ses_list); in cifs_get_smb_ses()
2528 cifs_setup_ipc(ses, ctx); in cifs_get_smb_ses()
2532 return ses; in cifs_get_smb_ses()
2535 sesInfoFree(ses); in cifs_get_smb_ses()
2543 struct TCP_Server_Info *server = tcon->ses->server; in match_tcon()
2573 cifs_find_tcon(struct cifs_ses *ses, struct smb3_fs_context *ctx) in cifs_find_tcon() argument
2578 list_for_each_entry(tcon, &ses->tcon_list, tcon_list) { in cifs_find_tcon()
2599 struct cifs_ses *ses; in cifs_put_tcon() local
2609 ses = tcon->ses; in cifs_put_tcon()
2646 if (ses->server->ops->tree_disconnect) in cifs_put_tcon()
2647 ses->server->ops->tree_disconnect(xid, tcon); in cifs_put_tcon()
2652 cifs_put_smb_ses(ses); in cifs_put_tcon()
2681 cifs_get_tcon(struct cifs_ses *ses, struct smb3_fs_context *ctx) in cifs_get_tcon() argument
2687 tcon = cifs_find_tcon(ses, ctx); in cifs_get_tcon()
2694 cifs_put_smb_ses(ses); in cifs_get_tcon()
2698 if (!ses->server->ops->tree_connect) { in cifs_get_tcon()
2703 if (ses->server->dialect >= SMB20_PROT_ID && in cifs_get_tcon()
2704 (ses->server->capabilities & SMB2_GLOBAL_CAP_DIRECTORY_LEASING)) in cifs_get_tcon()
2716 if (ses->server->vals->protocol_id == 0) { in cifs_get_tcon()
2726 if (ses->server->vals->protocol_id == 0) { in cifs_get_tcon()
2735 tcon->ses = ses; in cifs_get_tcon()
2745 if (ses->server->vals->protocol_id == 0) { in cifs_get_tcon()
2750 } else if (tcon->ses->server->capabilities & in cifs_get_tcon()
2761 if (ses->server->posix_ext_supported) { in cifs_get_tcon()
2764 } else if ((ses->server->vals->protocol_id == SMB311_PROT_ID) || in cifs_get_tcon()
2765 (strcmp(ses->server->vals->version_string, in cifs_get_tcon()
2767 (strcmp(ses->server->vals->version_string, in cifs_get_tcon()
2772 } else if (ses->server->vals->protocol_id == SMB10_PROT_ID) in cifs_get_tcon()
2773 if (cap_unix(ses)) in cifs_get_tcon()
2788 rc = ses->server->ops->tree_connect(xid, ses, ctx->UNC, tcon, in cifs_get_tcon()
2798 if (ses->server->vals->protocol_id == 0) { in cifs_get_tcon()
2803 } else if (ses->server->capabilities & in cifs_get_tcon()
2813 && (ses->server->capabilities & SMB2_GLOBAL_CAP_PERSISTENT_HANDLES) in cifs_get_tcon()
2818 if (ses->server->vals->protocol_id == 0) { in cifs_get_tcon()
2829 if (ses->server->vals->protocol_id >= SMB30_PROT_ID) { in cifs_get_tcon()
2864 if (ses->server->vals->protocol_id == 0) { in cifs_get_tcon()
2886 if (ses->server->dialect >= SMB30_PROT_ID && in cifs_get_tcon()
2887 (ses->server->capabilities & SMB2_GLOBAL_CAP_MULTI_CHANNEL)) { in cifs_get_tcon()
2893 list_add(&tcon->tcon_list, &ses->tcon_list); in cifs_get_tcon()
3005 struct cifs_ses *ses; in cifs_match_super() local
3027 ses = tcon->ses; in cifs_match_super()
3028 tcp_srv = ses->server; in cifs_match_super()
3033 spin_lock(&ses->ses_lock); in cifs_match_super()
3034 spin_lock(&ses->chan_lock); in cifs_match_super()
3037 !match_session(ses, ctx, true) || in cifs_match_super()
3047 spin_unlock(&ses->chan_lock); in cifs_match_super()
3048 spin_unlock(&ses->ses_lock); in cifs_match_super()
3644 else if (mnt_ctx->ses) in cifs_mount_put_conns()
3645 cifs_put_smb_ses(mnt_ctx->ses); in cifs_mount_put_conns()
3648 mnt_ctx->ses = NULL; in cifs_mount_put_conns()
3659 struct cifs_ses *ses = NULL; in cifs_mount_get_session() local
3680 ses = cifs_get_smb_ses(server, ctx); in cifs_mount_get_session()
3681 if (IS_ERR(ses)) { in cifs_mount_get_session()
3682 rc = PTR_ERR(ses); in cifs_mount_get_session()
3683 ses = NULL; in cifs_mount_get_session()
3687 if ((ctx->persistent == true) && (!(ses->server->capabilities & in cifs_mount_get_session()
3696 mnt_ctx->ses = ses; in cifs_mount_get_session()
3710 if (WARN_ON_ONCE(!mnt_ctx || !mnt_ctx->server || !mnt_ctx->ses || !mnt_ctx->fs_ctx || in cifs_mount_get_tcon()
3720 tcon = cifs_get_tcon(mnt_ctx->ses, ctx); in cifs_mount_get_tcon()
3739 if (cap_unix(tcon->ses)) { in cifs_mount_get_tcon()
3745 spin_lock(&tcon->ses->server->srv_lock); in cifs_mount_get_tcon()
3746 if ((tcon->ses->server->tcpStatus == CifsNeedReconnect) && in cifs_mount_get_tcon()
3749 spin_unlock(&tcon->ses->server->srv_lock); in cifs_mount_get_tcon()
3753 spin_unlock(&tcon->ses->server->srv_lock); in cifs_mount_get_tcon()
3786 static int mount_setup_tlink(struct cifs_sb_info *cifs_sb, struct cifs_ses *ses, in mount_setup_tlink() argument
3796 tlink->tl_uid = ses->linux_uid; in mount_setup_tlink()
3938 cifs_try_adding_channels(mnt_ctx.ses); in cifs_mount()
3939 rc = mount_setup_tlink(cifs_sb, mnt_ctx.ses, mnt_ctx.tcon); in cifs_mount()
3968 else if (WARN_ON(!mnt_ctx.ses)) in cifs_mount()
3982 rc = mount_setup_tlink(cifs_sb, mnt_ctx.ses, mnt_ctx.tcon); in cifs_mount()
4000 CIFSTCon(const unsigned int xid, struct cifs_ses *ses, in CIFSTCon() argument
4013 if (ses == NULL) in CIFSTCon()
4025 smb_buffer->Mid = get_next_mid(ses->server); in CIFSTCon()
4026 smb_buffer->Uid = ses->Suid; in CIFSTCon()
4039 if (ses->server->sign) in CIFSTCon()
4042 if (ses->capabilities & CAP_STATUS32) in CIFSTCon()
4045 if (ses->capabilities & CAP_DFS) in CIFSTCon()
4048 if (ses->capabilities & CAP_UNICODE) { in CIFSTCon()
4067 rc = SendReceive(xid, ses, smb_buffer, smb_buffer_response, &length, in CIFSTCon()
4183 cifs_negotiate_protocol(const unsigned int xid, struct cifs_ses *ses, in cifs_negotiate_protocol() argument
4212 rc = server->ops->negotiate(xid, ses, server); in cifs_negotiate_protocol()
4239 cifs_setup_session(const unsigned int xid, struct cifs_ses *ses, in cifs_setup_session() argument
4249 spin_lock(&ses->ses_lock); in cifs_setup_session()
4251 __func__, ses->chans_need_reconnect); in cifs_setup_session()
4253 if (ses->ses_status != SES_GOOD && in cifs_setup_session()
4254 ses->ses_status != SES_NEW && in cifs_setup_session()
4255 ses->ses_status != SES_NEED_RECON) { in cifs_setup_session()
4256 spin_unlock(&ses->ses_lock); in cifs_setup_session()
4261 spin_lock(&ses->chan_lock); in cifs_setup_session()
4262 if (CIFS_ALL_CHANS_GOOD(ses)) { in cifs_setup_session()
4263 if (ses->ses_status == SES_NEED_RECON) in cifs_setup_session()
4264 ses->ses_status = SES_GOOD; in cifs_setup_session()
4265 spin_unlock(&ses->chan_lock); in cifs_setup_session()
4266 spin_unlock(&ses->ses_lock); in cifs_setup_session()
4270 cifs_chan_set_in_reconnect(ses, server); in cifs_setup_session()
4271 is_binding = !CIFS_ALL_CHANS_NEED_RECONNECT(ses); in cifs_setup_session()
4272 spin_unlock(&ses->chan_lock); in cifs_setup_session()
4275 ses->ses_status = SES_IN_SETUP; in cifs_setup_session()
4278 ses->iface_last_update = 0; in cifs_setup_session()
4280 spin_unlock(&ses->ses_lock); in cifs_setup_session()
4285 scnprintf(ses->ip_addr, sizeof(ses->ip_addr), "%pI6", &addr6->sin6_addr); in cifs_setup_session()
4287 scnprintf(ses->ip_addr, sizeof(ses->ip_addr), "%pI4", &addr->sin_addr); in cifs_setup_session()
4291 ses->capabilities = server->capabilities; in cifs_setup_session()
4293 ses->capabilities &= (~server->vals->cap_unix); in cifs_setup_session()
4300 if (ses->unicode == 1 && server->vals->cap_unicode != 0 && in cifs_setup_session()
4304 } else if (ses->unicode == 0 && server->vals->cap_unicode == 0) { in cifs_setup_session()
4307 } else if (ses->unicode == 0) { in cifs_setup_session()
4312 ses->capabilities &= (~server->vals->cap_unicode); in cifs_setup_session()
4315 if (ses->auth_key.response) { in cifs_setup_session()
4317 ses->auth_key.response); in cifs_setup_session()
4318 kfree_sensitive(ses->auth_key.response); in cifs_setup_session()
4319 ses->auth_key.response = NULL; in cifs_setup_session()
4320 ses->auth_key.len = 0; in cifs_setup_session()
4329 rc = server->ops->sess_setup(xid, ses, server, nls_info); in cifs_setup_session()
4336 spin_lock(&ses->ses_lock); in cifs_setup_session()
4337 if (ses->ses_status == SES_IN_SETUP) in cifs_setup_session()
4338 ses->ses_status = SES_NEED_RECON; in cifs_setup_session()
4339 spin_lock(&ses->chan_lock); in cifs_setup_session()
4340 cifs_chan_clear_in_reconnect(ses, server); in cifs_setup_session()
4341 spin_unlock(&ses->chan_lock); in cifs_setup_session()
4342 spin_unlock(&ses->ses_lock); in cifs_setup_session()
4344 spin_lock(&ses->ses_lock); in cifs_setup_session()
4345 if (ses->ses_status == SES_IN_SETUP) in cifs_setup_session()
4346 ses->ses_status = SES_GOOD; in cifs_setup_session()
4347 spin_lock(&ses->chan_lock); in cifs_setup_session()
4348 cifs_chan_clear_in_reconnect(ses, server); in cifs_setup_session()
4349 cifs_chan_clear_need_reconnect(ses, server); in cifs_setup_session()
4350 spin_unlock(&ses->chan_lock); in cifs_setup_session()
4351 spin_unlock(&ses->ses_lock); in cifs_setup_session()
4358 cifs_set_vol_auth(struct smb3_fs_context *ctx, struct cifs_ses *ses) in cifs_set_vol_auth() argument
4360 ctx->sectype = ses->sectype; in cifs_set_vol_auth()
4366 return cifs_set_cifscreds(ctx, ses); in cifs_set_vol_auth()
4374 struct cifs_ses *ses; in cifs_construct_tcon() local
4397 ctx->sectype = master_tcon->ses->sectype; in cifs_construct_tcon()
4398 ctx->sign = master_tcon->ses->sign; in cifs_construct_tcon()
4401 ctx->dfs_root_ses = master_tcon->ses->dfs_root_ses; in cifs_construct_tcon()
4402 ctx->unicode = master_tcon->ses->unicode; in cifs_construct_tcon()
4404 rc = cifs_set_vol_auth(ctx, master_tcon->ses); in cifs_construct_tcon()
4412 ++master_tcon->ses->server->srv_count; in cifs_construct_tcon()
4415 ses = cifs_get_smb_ses(master_tcon->ses->server, ctx); in cifs_construct_tcon()
4416 if (IS_ERR(ses)) { in cifs_construct_tcon()
4417 tcon = ERR_CAST(ses); in cifs_construct_tcon()
4418 cifs_put_tcp_session(master_tcon->ses->server, 0); in cifs_construct_tcon()
4430 cifs_put_smb_ses(ses); in cifs_construct_tcon()
4438 tcon = cifs_get_tcon(ses, ctx); in cifs_construct_tcon()
4440 cifs_put_smb_ses(ses); in cifs_construct_tcon()
4456 if (cap_unix(ses)) in cifs_construct_tcon()
4662 const struct smb_version_operations *ops = tcon->ses->server->ops; in cifs_tree_connect()
4686 rc = ops->tree_connect(xid, tcon->ses, tcon->tree_name, in cifs_tree_connect()
4687 tcon, tcon->ses->local_nls); in cifs_tree_connect()