aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/cifs/cifs_spnego.c3
-rw-r--r--fs/cifs/cifsglob.h3
-rw-r--r--fs/cifs/connect.c7
3 files changed, 10 insertions, 3 deletions
diff --git a/fs/cifs/cifs_spnego.c b/fs/cifs/cifs_spnego.c
index 379bd7d9c05f..6effccff85a5 100644
--- a/fs/cifs/cifs_spnego.c
+++ b/fs/cifs/cifs_spnego.c
@@ -144,6 +144,9 @@ cifs_get_spnego_key(struct cifsSesInfo *sesInfo)
144 sprintf(dp, ";uid=0x%x", sesInfo->linux_uid); 144 sprintf(dp, ";uid=0x%x", sesInfo->linux_uid);
145 145
146 dp = description + strlen(description); 146 dp = description + strlen(description);
147 sprintf(dp, ";creduid=0x%x", sesInfo->cred_uid);
148
149 dp = description + strlen(description);
147 sprintf(dp, ";user=%s", sesInfo->userName); 150 sprintf(dp, ";user=%s", sesInfo->userName);
148 151
149 dp = description + strlen(description); 152 dp = description + strlen(description);
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
index 9b7cf9aa3a00..59906146ad36 100644
--- a/fs/cifs/cifsglob.h
+++ b/fs/cifs/cifsglob.h
@@ -214,7 +214,8 @@ struct cifsSesInfo {
214 char *serverNOS; /* name of network operating system of server */ 214 char *serverNOS; /* name of network operating system of server */
215 char *serverDomain; /* security realm of server */ 215 char *serverDomain; /* security realm of server */
216 int Suid; /* remote smb uid */ 216 int Suid; /* remote smb uid */
217 uid_t linux_uid; /* local Linux uid */ 217 uid_t linux_uid; /* overriding owner of files on the mount */
218 uid_t cred_uid; /* owner of credentials */
218 int capabilities; 219 int capabilities;
219 char serverName[SERVER_NAME_LEN_WITH_NULL * 2]; /* BB make bigger for 220 char serverName[SERVER_NAME_LEN_WITH_NULL * 2]; /* BB make bigger for
220 TCP names - will ipv6 and sctp addresses fit? */ 221 TCP names - will ipv6 and sctp addresses fit? */
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 399b60129b74..52a7646cc7af 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -67,6 +67,7 @@ struct smb_vol {
67 char *iocharset; /* local code page for mapping to and from Unicode */ 67 char *iocharset; /* local code page for mapping to and from Unicode */
68 char source_rfc1001_name[16]; /* netbios name of client */ 68 char source_rfc1001_name[16]; /* netbios name of client */
69 char target_rfc1001_name[16]; /* netbios name of server for Win9x/ME */ 69 char target_rfc1001_name[16]; /* netbios name of server for Win9x/ME */
70 uid_t cred_uid;
70 uid_t linux_uid; 71 uid_t linux_uid;
71 gid_t linux_gid; 72 gid_t linux_gid;
72 mode_t file_mode; 73 mode_t file_mode;
@@ -832,7 +833,8 @@ cifs_parse_mount_options(char *options, const char *devname,
832 /* null target name indicates to use *SMBSERVR default called name 833 /* null target name indicates to use *SMBSERVR default called name
833 if we end up sending RFC1001 session initialize */ 834 if we end up sending RFC1001 session initialize */
834 vol->target_rfc1001_name[0] = 0; 835 vol->target_rfc1001_name[0] = 0;
835 vol->linux_uid = current_uid(); /* use current_euid() instead? */ 836 vol->cred_uid = current_uid();
837 vol->linux_uid = current_uid();
836 vol->linux_gid = current_gid(); 838 vol->linux_gid = current_gid();
837 839
838 /* default to only allowing write access to owner of the mount */ 840 /* default to only allowing write access to owner of the mount */
@@ -1658,7 +1660,7 @@ cifs_find_smb_ses(struct TCP_Server_Info *server, struct smb_vol *vol)
1658 list_for_each_entry(ses, &server->smb_ses_list, smb_ses_list) { 1660 list_for_each_entry(ses, &server->smb_ses_list, smb_ses_list) {
1659 switch (server->secType) { 1661 switch (server->secType) {
1660 case Kerberos: 1662 case Kerberos:
1661 if (vol->linux_uid != ses->linux_uid) 1663 if (vol->cred_uid != ses->cred_uid)
1662 continue; 1664 continue;
1663 break; 1665 break;
1664 default: 1666 default:
@@ -1775,6 +1777,7 @@ cifs_get_smb_ses(struct TCP_Server_Info *server, struct smb_vol *volume_info)
1775 if (ses->domainName) 1777 if (ses->domainName)
1776 strcpy(ses->domainName, volume_info->domainname); 1778 strcpy(ses->domainName, volume_info->domainname);
1777 } 1779 }
1780 ses->cred_uid = volume_info->cred_uid;
1778 ses->linux_uid = volume_info->linux_uid; 1781 ses->linux_uid = volume_info->linux_uid;
1779 ses->overrideSecFlg = volume_info->secFlg; 1782 ses->overrideSecFlg = volume_info->secFlg;
1780 1783