|
@@ -803,6 +803,10 @@ cifs_parse_mount_options(char *options, const char *devname,
|
|
|
char *data;
|
|
|
unsigned int temp_len, i, j;
|
|
|
char separator[2];
|
|
|
+ short int override_uid = -1;
|
|
|
+ short int override_gid = -1;
|
|
|
+ bool uid_specified = false;
|
|
|
+ bool gid_specified = false;
|
|
|
|
|
|
separator[0] = ',';
|
|
|
separator[1] = 0;
|
|
@@ -1093,18 +1097,20 @@ cifs_parse_mount_options(char *options, const char *devname,
|
|
|
"too long.\n");
|
|
|
return 1;
|
|
|
}
|
|
|
- } else if (strnicmp(data, "uid", 3) == 0) {
|
|
|
- if (value && *value)
|
|
|
- vol->linux_uid =
|
|
|
- simple_strtoul(value, &value, 0);
|
|
|
- } else if (strnicmp(data, "forceuid", 8) == 0) {
|
|
|
- vol->override_uid = 1;
|
|
|
- } else if (strnicmp(data, "gid", 3) == 0) {
|
|
|
- if (value && *value)
|
|
|
- vol->linux_gid =
|
|
|
- simple_strtoul(value, &value, 0);
|
|
|
- } else if (strnicmp(data, "forcegid", 8) == 0) {
|
|
|
- vol->override_gid = 1;
|
|
|
+ } else if (!strnicmp(data, "uid", 3) && value && *value) {
|
|
|
+ vol->linux_uid = simple_strtoul(value, &value, 0);
|
|
|
+ uid_specified = true;
|
|
|
+ } else if (!strnicmp(data, "forceuid", 8)) {
|
|
|
+ override_uid = 1;
|
|
|
+ } else if (!strnicmp(data, "noforceuid", 10)) {
|
|
|
+ override_uid = 0;
|
|
|
+ } else if (!strnicmp(data, "gid", 3) && value && *value) {
|
|
|
+ vol->linux_gid = simple_strtoul(value, &value, 0);
|
|
|
+ gid_specified = true;
|
|
|
+ } else if (!strnicmp(data, "forcegid", 8)) {
|
|
|
+ override_gid = 1;
|
|
|
+ } else if (!strnicmp(data, "noforcegid", 10)) {
|
|
|
+ override_gid = 0;
|
|
|
} else if (strnicmp(data, "file_mode", 4) == 0) {
|
|
|
if (value && *value) {
|
|
|
vol->file_mode =
|
|
@@ -1355,6 +1361,18 @@ cifs_parse_mount_options(char *options, const char *devname,
|
|
|
if (vol->UNCip == NULL)
|
|
|
vol->UNCip = &vol->UNC[2];
|
|
|
|
|
|
+ if (uid_specified)
|
|
|
+ vol->override_uid = override_uid;
|
|
|
+ else if (override_uid == 1)
|
|
|
+ printk(KERN_NOTICE "CIFS: ignoring forceuid mount option "
|
|
|
+ "specified with no uid= option.\n");
|
|
|
+
|
|
|
+ if (gid_specified)
|
|
|
+ vol->override_gid = override_gid;
|
|
|
+ else if (override_gid == 1)
|
|
|
+ printk(KERN_NOTICE "CIFS: ignoring forcegid mount option "
|
|
|
+ "specified with no gid= option.\n");
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|