diff options
-rw-r--r-- | fs/cifs/cifs_spnego.c | 3 | ||||
-rw-r--r-- | fs/cifs/cifsglob.h | 3 | ||||
-rw-r--r-- | fs/cifs/connect.c | 7 |
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 | ||