]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
cifs: add cruid= mount option
authorJeff Layton <jlayton@redhat.com>
Tue, 11 Jan 2011 15:33:24 +0000 (10:33 -0500)
committerSteve French <sfrench@us.ibm.com>
Fri, 14 Jan 2011 18:51:11 +0000 (18:51 +0000)
In commit 3e4b3e1f we separated the "uid" mount option such that it
no longer determined the owner of the credential cache by default. When
we did this, we added a new option to cifs.upcall (--legacy-uid) to
try to make it so that it would behave the same was as it did before.

This ignored a rather important point -- the kernel has no way to know
what options are being passed to cifs.upcall, so it doesn't know what
uid it should use to determine whether to match an existing krb5 session.

The simplest solution is to simply add a new "cruid=" mount option that
only governs the uid owner of the credential cache for the mount.

Unfortunately, this means that the --legacy-uid option in cifs.upcall was
ill-considered and is now useless, but I don't see a better way to deal
with this.

A patch for the mount.cifs manpage will follow once this patch has been
accepted.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve French <sfrench@us.ibm.com>
fs/cifs/connect.c

index a65d311d163a4909f902b92d24e8f031830852eb..9f59887badd2255457a384feffee95a98a2fb9e7 100644 (file)
@@ -1113,6 +1113,8 @@ cifs_parse_mount_options(char *options, const char *devname,
                } else if (!strnicmp(data, "uid", 3) && value && *value) {
                        vol->linux_uid = simple_strtoul(value, &value, 0);
                        uid_specified = true;
+               } else if (!strnicmp(data, "cruid", 5) && value && *value) {
+                       vol->cred_uid = simple_strtoul(value, &value, 0);
                } else if (!strnicmp(data, "forceuid", 8)) {
                        override_uid = 1;
                } else if (!strnicmp(data, "noforceuid", 10)) {