diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2010-01-24 00:06:22 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2010-01-26 22:22:25 -0500 |
commit | 217686e98321a4ff4c1a6cc535e511e37c5d2dbf (patch) | |
tree | 8b68ea06a602d92d52e6c5a9d3c976a8991cccc7 /fs/affs/super.c | |
parent | 29333920a5a46edcc9b728e2cf0134d5a9b516ee (diff) |
fix affs parse_options()
Error handling in that sucker got broken back in 2003. If function
returns 0 on failure, it's not nice to add return -EINVAL into it.
Adding return 1 on other failure exits is also not a good thing (and
yes, original success exits with 1 and some of failure exits with 0
are still there; so's the original logics in callers).
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/affs/super.c')
-rw-r--r-- | fs/affs/super.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/fs/affs/super.c b/fs/affs/super.c index be6a6e8ed7d6..d41e9673cd97 100644 --- a/fs/affs/super.c +++ b/fs/affs/super.c | |||
@@ -203,7 +203,7 @@ parse_options(char *options, uid_t *uid, gid_t *gid, int *mode, int *reserved, s | |||
203 | switch (token) { | 203 | switch (token) { |
204 | case Opt_bs: | 204 | case Opt_bs: |
205 | if (match_int(&args[0], &n)) | 205 | if (match_int(&args[0], &n)) |
206 | return -EINVAL; | 206 | return 0; |
207 | if (n != 512 && n != 1024 && n != 2048 | 207 | if (n != 512 && n != 1024 && n != 2048 |
208 | && n != 4096) { | 208 | && n != 4096) { |
209 | printk ("AFFS: Invalid blocksize (512, 1024, 2048, 4096 allowed)\n"); | 209 | printk ("AFFS: Invalid blocksize (512, 1024, 2048, 4096 allowed)\n"); |
@@ -213,7 +213,7 @@ parse_options(char *options, uid_t *uid, gid_t *gid, int *mode, int *reserved, s | |||
213 | break; | 213 | break; |
214 | case Opt_mode: | 214 | case Opt_mode: |
215 | if (match_octal(&args[0], &option)) | 215 | if (match_octal(&args[0], &option)) |
216 | return 1; | 216 | return 0; |
217 | *mode = option & 0777; | 217 | *mode = option & 0777; |
218 | *mount_opts |= SF_SETMODE; | 218 | *mount_opts |= SF_SETMODE; |
219 | break; | 219 | break; |
@@ -231,21 +231,21 @@ parse_options(char *options, uid_t *uid, gid_t *gid, int *mode, int *reserved, s | |||
231 | break; | 231 | break; |
232 | case Opt_reserved: | 232 | case Opt_reserved: |
233 | if (match_int(&args[0], reserved)) | 233 | if (match_int(&args[0], reserved)) |
234 | return 1; | 234 | return 0; |
235 | break; | 235 | break; |
236 | case Opt_root: | 236 | case Opt_root: |
237 | if (match_int(&args[0], root)) | 237 | if (match_int(&args[0], root)) |
238 | return 1; | 238 | return 0; |
239 | break; | 239 | break; |
240 | case Opt_setgid: | 240 | case Opt_setgid: |
241 | if (match_int(&args[0], &option)) | 241 | if (match_int(&args[0], &option)) |
242 | return 1; | 242 | return 0; |
243 | *gid = option; | 243 | *gid = option; |
244 | *mount_opts |= SF_SETGID; | 244 | *mount_opts |= SF_SETGID; |
245 | break; | 245 | break; |
246 | case Opt_setuid: | 246 | case Opt_setuid: |
247 | if (match_int(&args[0], &option)) | 247 | if (match_int(&args[0], &option)) |
248 | return -EINVAL; | 248 | return 0; |
249 | *uid = option; | 249 | *uid = option; |
250 | *mount_opts |= SF_SETUID; | 250 | *mount_opts |= SF_SETUID; |
251 | break; | 251 | break; |