Lines Matching refs:server

334 static int ip_connect(struct TCP_Server_Info *server);
335 static int generic_ip_connect(struct TCP_Server_Info *server);
347 static int reconn_set_ipaddr(struct TCP_Server_Info *server) in reconn_set_ipaddr() argument
353 if (!server->hostname) in reconn_set_ipaddr()
356 len = strlen(server->hostname) + 3; in reconn_set_ipaddr()
363 scnprintf(unc, len, "\\\\%s", server->hostname); in reconn_set_ipaddr()
370 __func__, server->hostname, rc); in reconn_set_ipaddr()
374 rc = cifs_convert_address((struct sockaddr *)&server->dstaddr, ipaddr, in reconn_set_ipaddr()
381 static inline int reconn_set_ipaddr(struct TCP_Server_Info *server) in reconn_set_ipaddr() argument
389 struct TCP_Server_Info *server; member
406 if (tcon->ses->server == d->server) in super_cb()
411 find_super_by_tcp(struct TCP_Server_Info *server) in find_super_by_tcp() argument
414 .server = server, in find_super_by_tcp()
422 static void reconn_inval_dfs_target(struct TCP_Server_Info *server, in reconn_inval_dfs_target() argument
430 !server->nr_targets) in reconn_inval_dfs_target()
445 kfree(server->hostname); in reconn_inval_dfs_target()
447 server->hostname = extract_hostname(name); in reconn_inval_dfs_target()
448 if (IS_ERR(server->hostname)) { in reconn_inval_dfs_target()
451 __func__, PTR_ERR(server->hostname)); in reconn_inval_dfs_target()
474 cifs_reconnect(struct TCP_Server_Info *server) in cifs_reconnect() argument
489 server->nr_targets = 1; in cifs_reconnect()
492 cifs_sb = find_super_by_tcp(server); in cifs_reconnect()
504 server->nr_targets = dfs_cache_get_nr_tgts(&tgt_list); in cifs_reconnect()
508 server->nr_targets); in cifs_reconnect()
511 if (server->tcpStatus == CifsExiting) { in cifs_reconnect()
517 server->tcpStatus = CifsNeedReconnect; in cifs_reconnect()
519 server->maxBuf = 0; in cifs_reconnect()
520 server->max_read = 0; in cifs_reconnect()
523 trace_smb3_reconnect(server->CurrentMid, server->hostname); in cifs_reconnect()
530 list_for_each(tmp, &server->smb_ses_list) { in cifs_reconnect()
544 mutex_lock(&server->srv_mutex); in cifs_reconnect()
545 if (server->ssocket) { in cifs_reconnect()
547 server->ssocket->state, server->ssocket->flags); in cifs_reconnect()
548 kernel_sock_shutdown(server->ssocket, SHUT_WR); in cifs_reconnect()
550 server->ssocket->state, server->ssocket->flags); in cifs_reconnect()
551 sock_release(server->ssocket); in cifs_reconnect()
552 server->ssocket = NULL; in cifs_reconnect()
554 server->sequence_number = 0; in cifs_reconnect()
555 server->session_estab = false; in cifs_reconnect()
556 kfree(server->session_key.response); in cifs_reconnect()
557 server->session_key.response = NULL; in cifs_reconnect()
558 server->session_key.len = 0; in cifs_reconnect()
559 server->lstrp = jiffies; in cifs_reconnect()
565 list_for_each_safe(tmp, tmp2, &server->pending_mid_q) { in cifs_reconnect()
574 mutex_unlock(&server->srv_mutex); in cifs_reconnect()
584 if (cifs_rdma_enabled(server)) { in cifs_reconnect()
585 mutex_lock(&server->srv_mutex); in cifs_reconnect()
586 smbd_destroy(server); in cifs_reconnect()
587 mutex_unlock(&server->srv_mutex); in cifs_reconnect()
593 mutex_lock(&server->srv_mutex); in cifs_reconnect()
599 if (cifs_rdma_enabled(server)) in cifs_reconnect()
600 rc = smbd_reconnect(server); in cifs_reconnect()
602 rc = generic_ip_connect(server); in cifs_reconnect()
606 reconn_inval_dfs_target(server, cifs_sb, &tgt_list, in cifs_reconnect()
609 rc = reconn_set_ipaddr(server); in cifs_reconnect()
614 mutex_unlock(&server->srv_mutex); in cifs_reconnect()
618 set_credits(server, 1); in cifs_reconnect()
620 if (server->tcpStatus != CifsExiting) in cifs_reconnect()
621 server->tcpStatus = CifsNeedNegotiate; in cifs_reconnect()
623 mutex_unlock(&server->srv_mutex); in cifs_reconnect()
625 } while (server->tcpStatus == CifsNeedReconnect); in cifs_reconnect()
635 rc = dfs_cache_update_vol(cifs_sb->origin_fullpath, server); in cifs_reconnect()
643 if (server->tcpStatus == CifsNeedNegotiate) in cifs_reconnect()
644 mod_delayed_work(cifsiod_wq, &server->echo, 0); in cifs_reconnect()
653 struct TCP_Server_Info *server = container_of(work, in cifs_echo_request() local
661 if (server->tcpStatus == CifsNeedNegotiate) in cifs_echo_request()
664 echo_interval = server->echo_interval; in cifs_echo_request()
671 if (server->tcpStatus == CifsNeedReconnect || in cifs_echo_request()
672 server->tcpStatus == CifsExiting || in cifs_echo_request()
673 server->tcpStatus == CifsNew || in cifs_echo_request()
674 (server->ops->can_echo && !server->ops->can_echo(server)) || in cifs_echo_request()
675 time_before(jiffies, server->lstrp + echo_interval - HZ)) in cifs_echo_request()
678 rc = server->ops->echo ? server->ops->echo(server) : -ENOSYS; in cifs_echo_request()
681 server->hostname); in cifs_echo_request()
684 queue_delayed_work(cifsiod_wq, &server->echo, server->echo_interval); in cifs_echo_request()
688 allocate_buffers(struct TCP_Server_Info *server) in allocate_buffers() argument
690 if (!server->bigbuf) { in allocate_buffers()
691 server->bigbuf = (char *)cifs_buf_get(); in allocate_buffers()
692 if (!server->bigbuf) { in allocate_buffers()
698 } else if (server->large_buf) { in allocate_buffers()
700 memset(server->bigbuf, 0, HEADER_SIZE(server)); in allocate_buffers()
703 if (!server->smallbuf) { in allocate_buffers()
704 server->smallbuf = (char *)cifs_small_buf_get(); in allocate_buffers()
705 if (!server->smallbuf) { in allocate_buffers()
714 memset(server->smallbuf, 0, HEADER_SIZE(server)); in allocate_buffers()
721 server_unresponsive(struct TCP_Server_Info *server) in server_unresponsive() argument
734 if ((server->tcpStatus == CifsGood || in server_unresponsive()
735 server->tcpStatus == CifsNeedNegotiate) && in server_unresponsive()
736 time_after(jiffies, server->lstrp + 3 * server->echo_interval)) { in server_unresponsive()
738 (3 * server->echo_interval) / HZ); in server_unresponsive()
739 cifs_reconnect(server); in server_unresponsive()
740 wake_up(&server->response_q); in server_unresponsive()
748 zero_credits(struct TCP_Server_Info *server) in zero_credits() argument
752 spin_lock(&server->req_lock); in zero_credits()
753 val = server->credits + server->echo_credits + server->oplock_credits; in zero_credits()
754 if (server->in_flight == 0 && val == 0) { in zero_credits()
755 spin_unlock(&server->req_lock); in zero_credits()
758 spin_unlock(&server->req_lock); in zero_credits()
763 cifs_readv_from_socket(struct TCP_Server_Info *server, struct msghdr *smb_msg) in cifs_readv_from_socket() argument
775 if (zero_credits(server)) { in cifs_readv_from_socket()
776 cifs_reconnect(server); in cifs_readv_from_socket()
780 if (server_unresponsive(server)) in cifs_readv_from_socket()
782 if (cifs_rdma_enabled(server) && server->smbd_conn) in cifs_readv_from_socket()
783 length = smbd_recv(server->smbd_conn, smb_msg); in cifs_readv_from_socket()
785 length = sock_recvmsg(server->ssocket, smb_msg, 0); in cifs_readv_from_socket()
787 if (server->tcpStatus == CifsExiting) in cifs_readv_from_socket()
790 if (server->tcpStatus == CifsNeedReconnect) { in cifs_readv_from_socket()
791 cifs_reconnect(server); in cifs_readv_from_socket()
810 cifs_reconnect(server); in cifs_readv_from_socket()
818 cifs_read_from_socket(struct TCP_Server_Info *server, char *buf, in cifs_read_from_socket() argument
825 return cifs_readv_from_socket(server, &smb_msg); in cifs_read_from_socket()
829 cifs_read_page_from_socket(struct TCP_Server_Info *server, struct page *page, in cifs_read_page_from_socket() argument
836 return cifs_readv_from_socket(server, &smb_msg); in cifs_read_page_from_socket()
840 is_smb_response(struct TCP_Server_Info *server, unsigned char type) in is_smb_response() argument
871 cifs_set_port((struct sockaddr *)&server->dstaddr, CIFS_PORT); in is_smb_response()
872 cifs_reconnect(server); in is_smb_response()
873 wake_up(&server->response_q); in is_smb_response()
877 cifs_reconnect(server); in is_smb_response()
909 handle_mid(struct mid_q_entry *mid, struct TCP_Server_Info *server, in handle_mid() argument
912 if (server->ops->check_trans2 && in handle_mid()
913 server->ops->check_trans2(mid, server, buf, malformed)) in handle_mid()
916 mid->large_buf = server->large_buf; in handle_mid()
920 if (server->large_buf) in handle_mid()
921 server->bigbuf = NULL; in handle_mid()
923 server->smallbuf = NULL; in handle_mid()
928 static void clean_demultiplex_info(struct TCP_Server_Info *server) in clean_demultiplex_info() argument
934 list_del_init(&server->tcp_ses_list); in clean_demultiplex_info()
938 server->tcpStatus = CifsExiting; in clean_demultiplex_info()
940 wake_up_all(&server->response_q); in clean_demultiplex_info()
943 spin_lock(&server->req_lock); in clean_demultiplex_info()
944 if (server->credits <= 0) in clean_demultiplex_info()
945 server->credits = 1; in clean_demultiplex_info()
946 spin_unlock(&server->req_lock); in clean_demultiplex_info()
954 wake_up_all(&server->request_q); in clean_demultiplex_info()
957 if (cifs_rdma_enabled(server)) in clean_demultiplex_info()
958 smbd_destroy(server); in clean_demultiplex_info()
959 if (server->ssocket) { in clean_demultiplex_info()
960 sock_release(server->ssocket); in clean_demultiplex_info()
961 server->ssocket = NULL; in clean_demultiplex_info()
964 if (!list_empty(&server->pending_mid_q)) { in clean_demultiplex_info()
971 list_for_each_safe(tmp, tmp2, &server->pending_mid_q) { in clean_demultiplex_info()
993 if (!list_empty(&server->pending_mid_q)) { in clean_demultiplex_info()
1010 kfree(server->hostname); in clean_demultiplex_info()
1011 kfree(server); in clean_demultiplex_info()
1019 standard_receive3(struct TCP_Server_Info *server, struct mid_q_entry *mid) in standard_receive3() argument
1022 char *buf = server->smallbuf; in standard_receive3()
1023 unsigned int pdu_length = server->pdu_size; in standard_receive3()
1026 if (pdu_length > CIFSMaxBufSize + MAX_HEADER_SIZE(server) - in standard_receive3()
1027 server->vals->header_preamble_size) { in standard_receive3()
1029 cifs_reconnect(server); in standard_receive3()
1030 wake_up(&server->response_q); in standard_receive3()
1036 server->large_buf = true; in standard_receive3()
1037 memcpy(server->bigbuf, buf, server->total_read); in standard_receive3()
1038 buf = server->bigbuf; in standard_receive3()
1042 length = cifs_read_from_socket(server, buf + HEADER_SIZE(server) - 1, in standard_receive3()
1043 pdu_length - HEADER_SIZE(server) + 1 in standard_receive3()
1044 + server->vals->header_preamble_size); in standard_receive3()
1048 server->total_read += length; in standard_receive3()
1050 dump_smb(buf, server->total_read); in standard_receive3()
1052 return cifs_handle_standard(server, mid); in standard_receive3()
1056 cifs_handle_standard(struct TCP_Server_Info *server, struct mid_q_entry *mid) in cifs_handle_standard() argument
1058 char *buf = server->large_buf ? server->bigbuf : server->smallbuf; in cifs_handle_standard()
1070 length = server->ops->check_message(buf, server->total_read, server); in cifs_handle_standard()
1073 min_t(unsigned int, server->total_read, 48)); in cifs_handle_standard()
1075 if (server->ops->is_session_expired && in cifs_handle_standard()
1076 server->ops->is_session_expired(buf)) { in cifs_handle_standard()
1077 cifs_reconnect(server); in cifs_handle_standard()
1078 wake_up(&server->response_q); in cifs_handle_standard()
1082 if (server->ops->is_status_pending && in cifs_handle_standard()
1083 server->ops->is_status_pending(buf, server)) in cifs_handle_standard()
1089 handle_mid(mid, server, buf, length); in cifs_handle_standard()
1094 smb2_add_credits_from_hdr(char *buffer, struct TCP_Server_Info *server) in smb2_add_credits_from_hdr() argument
1101 if (server->vals->header_preamble_size) in smb2_add_credits_from_hdr()
1105 spin_lock(&server->req_lock); in smb2_add_credits_from_hdr()
1106 server->credits += le16_to_cpu(shdr->CreditRequest); in smb2_add_credits_from_hdr()
1107 spin_unlock(&server->req_lock); in smb2_add_credits_from_hdr()
1108 wake_up(&server->request_q); in smb2_add_credits_from_hdr()
1117 struct TCP_Server_Info *server = p; in cifs_demultiplex_thread() local
1134 while (server->tcpStatus != CifsExiting) { in cifs_demultiplex_thread()
1138 if (!allocate_buffers(server)) in cifs_demultiplex_thread()
1141 server->large_buf = false; in cifs_demultiplex_thread()
1142 buf = server->smallbuf; in cifs_demultiplex_thread()
1145 length = cifs_read_from_socket(server, buf, pdu_length); in cifs_demultiplex_thread()
1149 if (server->vals->header_preamble_size == 0) in cifs_demultiplex_thread()
1150 server->total_read = 0; in cifs_demultiplex_thread()
1152 server->total_read = length; in cifs_demultiplex_thread()
1161 if (!is_smb_response(server, buf[0])) in cifs_demultiplex_thread()
1164 server->pdu_size = pdu_length; in cifs_demultiplex_thread()
1167 if (server->pdu_size < HEADER_SIZE(server) - 1 - in cifs_demultiplex_thread()
1168 server->vals->header_preamble_size) { in cifs_demultiplex_thread()
1170 server->pdu_size); in cifs_demultiplex_thread()
1171 cifs_reconnect(server); in cifs_demultiplex_thread()
1172 wake_up(&server->response_q); in cifs_demultiplex_thread()
1177 length = cifs_read_from_socket(server, in cifs_demultiplex_thread()
1178 buf + server->vals->header_preamble_size, in cifs_demultiplex_thread()
1179 HEADER_SIZE(server) - 1 in cifs_demultiplex_thread()
1180 - server->vals->header_preamble_size); in cifs_demultiplex_thread()
1183 server->total_read += length; in cifs_demultiplex_thread()
1185 if (server->ops->next_header) { in cifs_demultiplex_thread()
1186 next_offset = server->ops->next_header(buf); in cifs_demultiplex_thread()
1188 server->pdu_size = next_offset; in cifs_demultiplex_thread()
1195 if (server->ops->is_transform_hdr && in cifs_demultiplex_thread()
1196 server->ops->receive_transform && in cifs_demultiplex_thread()
1197 server->ops->is_transform_hdr(buf)) { in cifs_demultiplex_thread()
1198 length = server->ops->receive_transform(server, in cifs_demultiplex_thread()
1203 mids[0] = server->ops->find_mid(server, buf); in cifs_demultiplex_thread()
1208 length = standard_receive3(server, mids[0]); in cifs_demultiplex_thread()
1210 length = mids[0]->receive(server, mids[0]); in cifs_demultiplex_thread()
1220 server->lstrp = jiffies; in cifs_demultiplex_thread()
1224 mids[i]->resp_buf_size = server->pdu_size; in cifs_demultiplex_thread()
1227 server->ops->handle_cancelled_mid) in cifs_demultiplex_thread()
1228 server->ops->handle_cancelled_mid( in cifs_demultiplex_thread()
1230 server); in cifs_demultiplex_thread()
1236 } else if (server->ops->is_oplock_break && in cifs_demultiplex_thread()
1237 server->ops->is_oplock_break(bufs[i], in cifs_demultiplex_thread()
1238 server)) { in cifs_demultiplex_thread()
1239 smb2_add_credits_from_hdr(bufs[i], server); in cifs_demultiplex_thread()
1246 HEADER_SIZE(server)); in cifs_demultiplex_thread()
1247 smb2_add_credits_from_hdr(bufs[i], server); in cifs_demultiplex_thread()
1249 if (server->ops->dump_detail) in cifs_demultiplex_thread()
1250 server->ops->dump_detail(bufs[i], in cifs_demultiplex_thread()
1251 server); in cifs_demultiplex_thread()
1252 cifs_dump_mids(server); in cifs_demultiplex_thread()
1257 if (pdu_length > server->pdu_size) { in cifs_demultiplex_thread()
1258 if (!allocate_buffers(server)) in cifs_demultiplex_thread()
1260 pdu_length -= server->pdu_size; in cifs_demultiplex_thread()
1261 server->total_read = 0; in cifs_demultiplex_thread()
1262 server->large_buf = false; in cifs_demultiplex_thread()
1263 buf = server->smallbuf; in cifs_demultiplex_thread()
1269 cifs_buf_release(server->bigbuf); in cifs_demultiplex_thread()
1270 if (server->smallbuf) /* no sense logging a debug message if NULL */ in cifs_demultiplex_thread()
1271 cifs_small_buf_release(server->smallbuf); in cifs_demultiplex_thread()
1273 task_to_wake = xchg(&server->tsk, NULL); in cifs_demultiplex_thread()
1274 clean_demultiplex_info(server); in cifs_demultiplex_thread()
2513 match_port(struct TCP_Server_Info *server, struct sockaddr *addr) in match_port() argument
2518 if (server->rdma) in match_port()
2523 sport = &((struct sockaddr_in *) &server->dstaddr)->sin_port; in match_port()
2527 sport = &((struct sockaddr_in6 *) &server->dstaddr)->sin6_port; in match_port()
2547 match_address(struct TCP_Server_Info *server, struct sockaddr *addr, in match_address() argument
2554 (struct sockaddr_in *)&server->dstaddr; in match_address()
2563 (struct sockaddr_in6 *)&server->dstaddr; in match_address()
2577 if (!srcip_matches(srcaddr, (struct sockaddr *)&server->srcaddr)) in match_address()
2584 match_security(struct TCP_Server_Info *server, struct smb_vol *vol) in match_security() argument
2591 if (server->ops->select_sectype(server, vol->sectype) in match_security()
2600 if (vol->sign && !server->sign) in match_security()
2606 static int match_server(struct TCP_Server_Info *server, struct smb_vol *vol) in match_server() argument
2615 if (server->vals->protocol_id < SMB30_PROT_ID) in match_server()
2619 if (server->vals->protocol_id < SMB21_PROT_ID) in match_server()
2621 } else if ((server->vals != vol->vals) || (server->ops != vol->ops)) in match_server()
2624 if (!net_eq(cifs_net_ns(server), current->nsproxy->net_ns)) in match_server()
2627 if (!match_address(server, addr, in match_server()
2631 if (!match_port(server, addr)) in match_server()
2634 if (!match_security(server, vol)) in match_server()
2637 if (server->echo_interval != vol->echo_interval * HZ) in match_server()
2640 if (server->rdma != vol->rdma) in match_server()
2643 if (server->ignore_signature != vol->ignore_signature) in match_server()
2646 if (server->min_offload != vol->min_offload) in match_server()
2655 struct TCP_Server_Info *server; in cifs_find_tcp_session() local
2658 list_for_each_entry(server, &cifs_tcp_ses_list, tcp_ses_list) { in cifs_find_tcp_session()
2659 if (!match_server(server, vol)) in cifs_find_tcp_session()
2662 ++server->srv_count; in cifs_find_tcp_session()
2665 return server; in cifs_find_tcp_session()
2672 cifs_put_tcp_session(struct TCP_Server_Info *server, int from_reconnect) in cifs_put_tcp_session() argument
2677 if (--server->srv_count > 0) { in cifs_put_tcp_session()
2682 put_net(cifs_net_ns(server)); in cifs_put_tcp_session()
2684 list_del_init(&server->tcp_ses_list); in cifs_put_tcp_session()
2687 cancel_delayed_work_sync(&server->echo); in cifs_put_tcp_session()
2696 cancel_delayed_work(&server->reconnect); in cifs_put_tcp_session()
2698 cancel_delayed_work_sync(&server->reconnect); in cifs_put_tcp_session()
2701 server->tcpStatus = CifsExiting; in cifs_put_tcp_session()
2704 cifs_crypto_secmech_release(server); in cifs_put_tcp_session()
2705 cifs_fscache_release_client_cookie(server); in cifs_put_tcp_session()
2707 kfree(server->session_key.response); in cifs_put_tcp_session()
2708 server->session_key.response = NULL; in cifs_put_tcp_session()
2709 server->session_key.len = 0; in cifs_put_tcp_session()
2711 task = xchg(&server->tsk, NULL); in cifs_put_tcp_session()
2906 struct TCP_Server_Info *server = ses->server; in cifs_setup_ipc() local
2913 if (server->capabilities & SMB2_GLOBAL_CAP_ENCRYPTION) in cifs_setup_ipc()
2926 scnprintf(unc, sizeof(unc), "\\\\%s\\IPC$", server->hostname); in cifs_setup_ipc()
2935 rc = server->ops->tree_connect(xid, ses, unc, tcon, nls_codepage); in cifs_setup_ipc()
2966 if (ses->server->ops->tree_disconnect) { in cifs_free_ipc()
2968 rc = ses->server->ops->tree_disconnect(xid, tcon); in cifs_free_ipc()
2981 cifs_find_smb_ses(struct TCP_Server_Info *server, struct smb_vol *vol) in cifs_find_smb_ses() argument
2986 list_for_each_entry(ses, &server->smb_ses_list, smb_ses_list) { in cifs_find_smb_ses()
3002 struct TCP_Server_Info *server = ses->server; in cifs_put_smb_ses() local
3021 if (ses->status == CifsExiting && server->ops->logoff) { in cifs_put_smb_ses()
3023 rc = server->ops->logoff(xid, ses); in cifs_put_smb_ses()
3035 cifs_put_tcp_session(server, 0); in cifs_put_smb_ses()
3053 struct TCP_Server_Info *server = ses->server; in cifs_set_cifscreds() local
3063 switch (server->dstaddr.ss_family) { in cifs_set_cifscreds()
3065 sa = (struct sockaddr_in *)&server->dstaddr; in cifs_set_cifscreds()
3069 sa6 = (struct sockaddr_in6 *)&server->dstaddr; in cifs_set_cifscreds()
3074 server->dstaddr.ss_family); in cifs_set_cifscreds()
3199 cifs_get_smb_ses(struct TCP_Server_Info *server, struct smb_vol *volume_info) in cifs_get_smb_ses() argument
3204 struct sockaddr_in *addr = (struct sockaddr_in *)&server->dstaddr; in cifs_get_smb_ses()
3205 struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)&server->dstaddr; in cifs_get_smb_ses()
3209 ses = cifs_find_smb_ses(server, volume_info); in cifs_get_smb_ses()
3238 cifs_put_tcp_session(server, 0); in cifs_get_smb_ses()
3249 ses->server = server; in cifs_get_smb_ses()
3250 if (server->dstaddr.ss_family == AF_INET6) in cifs_get_smb_ses()
3289 list_add(&ses->smb_ses_list, &server->smb_ses_list); in cifs_get_smb_ses()
3365 if (ses->server->ops->tree_disconnect) in cifs_put_tcon()
3366 ses->server->ops->tree_disconnect(xid, tcon); in cifs_put_tcon()
3411 if (!ses->server->ops->tree_connect) { in cifs_get_tcon()
3423 if (ses->server->vals->protocol_id == 0) { in cifs_get_tcon()
3433 if (ses->server->vals->protocol_id == 0) { in cifs_get_tcon()
3452 if (ses->server->vals->protocol_id == 0) { in cifs_get_tcon()
3457 } else if (tcon->ses->server->capabilities & in cifs_get_tcon()
3468 if (ses->server->posix_ext_supported) { in cifs_get_tcon()
3484 rc = ses->server->ops->tree_connect(xid, ses, volume_info->UNC, tcon, in cifs_get_tcon()
3494 if (ses->server->vals->protocol_id == 0) { in cifs_get_tcon()
3499 } else if (ses->server->capabilities & in cifs_get_tcon()
3509 && (ses->server->capabilities & SMB2_GLOBAL_CAP_PERSISTENT_HANDLES) in cifs_get_tcon()
3514 if (ses->server->vals->protocol_id == 0) { in cifs_get_tcon()
3654 tcp_srv = ses->server; in cifs_match_super()
3721 bind_socket(struct TCP_Server_Info *server) in bind_socket() argument
3724 if (server->srcaddr.ss_family != AF_UNSPEC) { in bind_socket()
3726 struct socket *socket = server->ssocket; in bind_socket()
3728 (struct sockaddr *) &server->srcaddr, in bind_socket()
3729 sizeof(server->srcaddr)); in bind_socket()
3733 saddr4 = (struct sockaddr_in *)&server->srcaddr; in bind_socket()
3734 saddr6 = (struct sockaddr_in6 *)&server->srcaddr; in bind_socket()
3747 ip_rfc1001_connect(struct TCP_Server_Info *server) in ip_rfc1001_connect() argument
3762 if (server->server_RFC1001_name[0] != 0) in ip_rfc1001_connect()
3765 server->server_RFC1001_name, in ip_rfc1001_connect()
3779 if (server->workstation_RFC1001_name[0] != 0) in ip_rfc1001_connect()
3782 server->workstation_RFC1001_name, in ip_rfc1001_connect()
3796 rc = smb_send(server, smb_buf, 0x44); in ip_rfc1001_connect()
3819 generic_ip_connect(struct TCP_Server_Info *server) in generic_ip_connect() argument
3824 struct socket *socket = server->ssocket; in generic_ip_connect()
3827 saddr = (struct sockaddr *) &server->dstaddr; in generic_ip_connect()
3829 if (server->dstaddr.ss_family == AF_INET6) { in generic_ip_connect()
3840 rc = __sock_create(cifs_net_ns(server), sfamily, SOCK_STREAM, in generic_ip_connect()
3844 server->ssocket = NULL; in generic_ip_connect()
3850 server->ssocket = socket; in generic_ip_connect()
3858 rc = bind_socket(server); in generic_ip_connect()
3871 if (server->noautotune) { in generic_ip_connect()
3878 if (server->tcp_nodelay) { in generic_ip_connect()
3892 server->noblockcnt ? O_NONBLOCK : 0); in generic_ip_connect()
3898 if (server->noblockcnt && rc == -EINPROGRESS) in generic_ip_connect()
3903 server->ssocket = NULL; in generic_ip_connect()
3908 rc = ip_rfc1001_connect(server); in generic_ip_connect()
3914 ip_connect(struct TCP_Server_Info *server) in ip_connect() argument
3917 struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)&server->dstaddr; in ip_connect()
3918 struct sockaddr_in *addr = (struct sockaddr_in *)&server->dstaddr; in ip_connect()
3920 if (server->dstaddr.ss_family == AF_INET6) in ip_connect()
3931 rc = generic_ip_connect(server); in ip_connect()
3939 return generic_ip_connect(server); in ip_connect()
4186 struct TCP_Server_Info *server, in mount_put_conns() argument
4195 else if (server) in mount_put_conns()
4196 cifs_put_tcp_session(server, 0); in mount_put_conns()
4208 struct TCP_Server_Info *server; in mount_get_conns() local
4219 server = cifs_get_tcp_session(vol); in mount_get_conns()
4220 if (IS_ERR(server)) { in mount_get_conns()
4221 rc = PTR_ERR(server); in mount_get_conns()
4225 *nserver = server; in mount_get_conns()
4228 server->max_credits = SMB2_MAX_CREDITS_AVAILABLE; in mount_get_conns()
4230 server->max_credits = vol->max_credits; in mount_get_conns()
4233 ses = cifs_get_smb_ses(server, vol); in mount_get_conns()
4241 if ((vol->persistent == true) && (!(ses->server->capabilities & in mount_get_conns()
4267 if ((tcon->ses->server->tcpStatus == CifsNeedReconnect) && in mount_get_conns()
4275 if (!tcon->pipe && server->ops->qfs_tcon) { in mount_get_conns()
4276 server->ops->qfs_tcon(*xid, tcon); in mount_get_conns()
4288 cifs_sb->wsize = server->ops->negotiate_wsize(tcon, vol); in mount_get_conns()
4289 cifs_sb->rsize = server->ops->negotiate_rsize(tcon, vol); in mount_get_conns()
4453 struct TCP_Server_Info **server, in setup_dfs_tgt_conn() argument
4489 mount_put_conns(cifs_sb, *xid, *server, *ses, *tcon); in setup_dfs_tgt_conn()
4490 rc = mount_get_conns(&fake_vol, cifs_sb, xid, server, ses, in setup_dfs_tgt_conn()
4509 struct TCP_Server_Info **server, in mount_do_dfs_failover() argument
4530 rc = setup_dfs_tgt_conn(path, tgt_it, cifs_sb, vol, xid, server, in mount_do_dfs_failover()
4609 cifs_are_all_path_components_accessible(struct TCP_Server_Info *server, in cifs_are_all_path_components_accessible() argument
4624 rc = server->ops->is_path_accessible(xid, tcon, cifs_sb, ""); in cifs_are_all_path_components_accessible()
4648 rc = server->ops->is_path_accessible(xid, tcon, cifs_sb, in cifs_are_all_path_components_accessible()
4661 struct TCP_Server_Info *server, in is_path_remote() argument
4667 if (!server->ops->is_path_accessible) in is_path_remote()
4680 rc = server->ops->is_path_accessible(xid, tcon, cifs_sb, in is_path_remote()
4688 rc = cifs_are_all_path_components_accessible(server, xid, tcon, in is_path_remote()
4710 struct TCP_Server_Info *server; in cifs_mount() local
4715 rc = mount_get_conns(vol, cifs_sb, &xid, &server, &ses, &tcon); in cifs_mount()
4722 rc = is_path_remote(cifs_sb, vol, xid, server, tcon); in cifs_mount()
4781 mount_put_conns(cifs_sb, xid, server, ses, tcon); in cifs_mount()
4782 rc = mount_get_conns(vol, cifs_sb, &xid, &server, &ses, &tcon); in cifs_mount()
4789 &xid, &server, &ses, &tcon); in cifs_mount()
4819 rc = is_path_remote(cifs_sb, vol, xid, server, tcon); in cifs_mount()
4849 mount_put_conns(cifs_sb, xid, server, ses, tcon); in cifs_mount()
4850 rc = mount_get_conns(vol, cifs_sb, &xid, &server, &ses, in cifs_mount()
4859 &server, &ses, &tcon); in cifs_mount()
4860 if (rc == -EACCES || rc == -EOPNOTSUPP || !server || in cifs_mount()
4906 mount_put_conns(cifs_sb, xid, server, ses, tcon); in cifs_mount()
4916 struct TCP_Server_Info *server; in cifs_mount() local
4918 rc = mount_get_conns(vol, cifs_sb, &xid, &server, &ses, &tcon); in cifs_mount()
4923 rc = is_path_remote(cifs_sb, vol, xid, server, tcon); in cifs_mount()
4935 mount_put_conns(cifs_sb, xid, server, ses, tcon); in cifs_mount()
4969 smb_buffer->Mid = get_next_mid(ses->server); in CIFSTCon()
4977 if (tcon->pipe || (ses->server->sec_mode & SECMODE_USER)) { in CIFSTCon()
4993 calc_lanman_hash(tcon->password, ses->server->cryptkey, in CIFSTCon()
4994 ses->server->sec_mode & in CIFSTCon()
4999 rc = SMBNTencrypt(tcon->password, ses->server->cryptkey, in CIFSTCon()
5016 if (ses->server->sign) in CIFSTCon()
5145 struct TCP_Server_Info *server = ses->server; in cifs_negotiate_protocol() local
5147 if (!server->ops->need_neg || !server->ops->negotiate) in cifs_negotiate_protocol()
5151 if (!server->ops->need_neg(server)) in cifs_negotiate_protocol()
5154 rc = server->ops->negotiate(xid, ses); in cifs_negotiate_protocol()
5157 if (server->tcpStatus == CifsNeedNegotiate) in cifs_negotiate_protocol()
5158 server->tcpStatus = CifsGood; in cifs_negotiate_protocol()
5172 struct TCP_Server_Info *server = ses->server; in cifs_setup_session() local
5174 ses->capabilities = server->capabilities; in cifs_setup_session()
5176 ses->capabilities &= (~server->vals->cap_unix); in cifs_setup_session()
5179 server->sec_mode, server->capabilities, server->timeAdj); in cifs_setup_session()
5189 if (server->ops->sess_setup) in cifs_setup_session()
5190 rc = server->ops->sess_setup(xid, ses, nls_info); in cifs_setup_session()
5243 ++master_tcon->ses->server->srv_count; in cifs_construct_tcon()
5246 ses = cifs_get_smb_ses(master_tcon->ses->server, vol_info); in cifs_construct_tcon()
5249 cifs_put_tcp_session(master_tcon->ses->server, 0); in cifs_construct_tcon()