diff options
Diffstat (limited to 'fs/cifs')
-rw-r--r-- | fs/cifs/connect.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index 3d72218bd962..980815426ac6 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c | |||
@@ -88,7 +88,7 @@ enum { | |||
88 | Opt_sign, Opt_seal, Opt_direct, | 88 | Opt_sign, Opt_seal, Opt_direct, |
89 | Opt_strictcache, Opt_noac, | 89 | Opt_strictcache, Opt_noac, |
90 | Opt_fsc, Opt_mfsymlinks, | 90 | Opt_fsc, Opt_mfsymlinks, |
91 | Opt_multiuser, | 91 | Opt_multiuser, Opt_sloppy, |
92 | 92 | ||
93 | /* Mount options which take numeric value */ | 93 | /* Mount options which take numeric value */ |
94 | Opt_backupuid, Opt_backupgid, Opt_uid, | 94 | Opt_backupuid, Opt_backupgid, Opt_uid, |
@@ -167,6 +167,7 @@ static const match_table_t cifs_mount_option_tokens = { | |||
167 | { Opt_fsc, "fsc" }, | 167 | { Opt_fsc, "fsc" }, |
168 | { Opt_mfsymlinks, "mfsymlinks" }, | 168 | { Opt_mfsymlinks, "mfsymlinks" }, |
169 | { Opt_multiuser, "multiuser" }, | 169 | { Opt_multiuser, "multiuser" }, |
170 | { Opt_sloppy, "sloppy" }, | ||
170 | 171 | ||
171 | { Opt_backupuid, "backupuid=%s" }, | 172 | { Opt_backupuid, "backupuid=%s" }, |
172 | { Opt_backupgid, "backupgid=%s" }, | 173 | { Opt_backupgid, "backupgid=%s" }, |
@@ -1186,6 +1187,8 @@ cifs_parse_mount_options(const char *mountdata, const char *devname, | |||
1186 | short int override_gid = -1; | 1187 | short int override_gid = -1; |
1187 | bool uid_specified = false; | 1188 | bool uid_specified = false; |
1188 | bool gid_specified = false; | 1189 | bool gid_specified = false; |
1190 | bool sloppy = false; | ||
1191 | char *invalid = NULL; | ||
1189 | char *nodename = utsname()->nodename; | 1192 | char *nodename = utsname()->nodename; |
1190 | char *string = NULL; | 1193 | char *string = NULL; |
1191 | char *tmp_end, *value; | 1194 | char *tmp_end, *value; |
@@ -1423,6 +1426,9 @@ cifs_parse_mount_options(const char *mountdata, const char *devname, | |||
1423 | case Opt_multiuser: | 1426 | case Opt_multiuser: |
1424 | vol->multiuser = true; | 1427 | vol->multiuser = true; |
1425 | break; | 1428 | break; |
1429 | case Opt_sloppy: | ||
1430 | sloppy = true; | ||
1431 | break; | ||
1426 | 1432 | ||
1427 | /* Numeric Values */ | 1433 | /* Numeric Values */ |
1428 | case Opt_backupuid: | 1434 | case Opt_backupuid: |
@@ -1870,8 +1876,12 @@ cifs_parse_mount_options(const char *mountdata, const char *devname, | |||
1870 | goto cifs_parse_mount_err; | 1876 | goto cifs_parse_mount_err; |
1871 | break; | 1877 | break; |
1872 | default: | 1878 | default: |
1873 | printk(KERN_WARNING "CIFS: Unknown mount option %s\n", | 1879 | /* |
1874 | data); | 1880 | * An option we don't recognize. Save it off for later |
1881 | * if we haven't already found one | ||
1882 | */ | ||
1883 | if (!invalid) | ||
1884 | invalid = data; | ||
1875 | break; | 1885 | break; |
1876 | } | 1886 | } |
1877 | /* Free up any allocated string */ | 1887 | /* Free up any allocated string */ |
@@ -1879,6 +1889,11 @@ cifs_parse_mount_options(const char *mountdata, const char *devname, | |||
1879 | string = NULL; | 1889 | string = NULL; |
1880 | } | 1890 | } |
1881 | 1891 | ||
1892 | if (!sloppy && invalid) { | ||
1893 | printk(KERN_ERR "CIFS: Unknown mount option \"%s\"\n", invalid); | ||
1894 | goto cifs_parse_mount_err; | ||
1895 | } | ||
1896 | |||
1882 | #ifndef CONFIG_KEYS | 1897 | #ifndef CONFIG_KEYS |
1883 | /* Muliuser mounts require CONFIG_KEYS support */ | 1898 | /* Muliuser mounts require CONFIG_KEYS support */ |
1884 | if (vol->multiuser) { | 1899 | if (vol->multiuser) { |