aboutsummaryrefslogtreecommitdiffstats
path: root/fs/cifs/connect.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/cifs/connect.c')
-rw-r--r--fs/cifs/connect.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index b24e4cea4e3c..b2063ce113ec 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -1644,17 +1644,27 @@ out_err:
1644} 1644}
1645 1645
1646static struct cifsSesInfo * 1646static struct cifsSesInfo *
1647cifs_find_smb_ses(struct TCP_Server_Info *server, char *username) 1647cifs_find_smb_ses(struct TCP_Server_Info *server, struct smb_vol *vol)
1648{ 1648{
1649 struct list_head *tmp;
1650 struct cifsSesInfo *ses; 1649 struct cifsSesInfo *ses;
1651 1650
1652 write_lock(&cifs_tcp_ses_lock); 1651 write_lock(&cifs_tcp_ses_lock);
1653 list_for_each(tmp, &server->smb_ses_list) { 1652 list_for_each_entry(ses, &server->smb_ses_list, smb_ses_list) {
1654 ses = list_entry(tmp, struct cifsSesInfo, smb_ses_list); 1653 switch (server->secType) {
1655 if (strncmp(ses->userName, username, MAX_USERNAME_SIZE)) 1654 case Kerberos:
1656 continue; 1655 if (vol->linux_uid != ses->linux_uid)
1657 1656 continue;
1657 break;
1658 default:
1659 /* anything else takes username/password */
1660 if (strncmp(ses->userName, vol->username,
1661 MAX_USERNAME_SIZE))
1662 continue;
1663 if (strlen(vol->username) != 0 &&
1664 strncmp(ses->password, vol->password,
1665 MAX_PASSWORD_SIZE))
1666 continue;
1667 }
1658 ++ses->ses_count; 1668 ++ses->ses_count;
1659 write_unlock(&cifs_tcp_ses_lock); 1669 write_unlock(&cifs_tcp_ses_lock);
1660 return ses; 1670 return ses;
@@ -1696,7 +1706,7 @@ cifs_get_smb_ses(struct TCP_Server_Info *server, struct smb_vol *volume_info)
1696 1706
1697 xid = GetXid(); 1707 xid = GetXid();
1698 1708
1699 ses = cifs_find_smb_ses(server, volume_info->username); 1709 ses = cifs_find_smb_ses(server, volume_info);
1700 if (ses) { 1710 if (ses) {
1701 cFYI(1, "Existing smb sess found (status=%d)", ses->status); 1711 cFYI(1, "Existing smb sess found (status=%d)", ses->status);
1702 1712