fat: ix mount option parsing
authorJan Kara <jack@suse.cz>
Tue, 18 Dec 2012 00:02:59 +0000 (16:02 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 18 Dec 2012 01:15:22 +0000 (17:15 -0800)
parse_options() is supposed to return value < 0 on error however we
returned 0 (success) in a lot of cases.  This actually was not a problem
in practice because match_token() used by parse_options() is clever and
catches most of the problems for us.

Signed-off-by: Jan Kara <jack@suse.cz>
Cc: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/fat/inode.c

index 59ac83be2d5b52bb69777e2a0b31b1c615220e16..3b733a730952dcc23439afa8a5e5189c93414313 100644 (file)
@@ -972,41 +972,41 @@ static int parse_options(struct super_block *sb, char *options, int is_vfat,
                        break;
                case Opt_uid:
                        if (match_int(&args[0], &option))
-                               return 0;
+                               return -EINVAL;
                        opts->fs_uid = make_kuid(current_user_ns(), option);
                        if (!uid_valid(opts->fs_uid))
-                               return 0;
+                               return -EINVAL;
                        break;
                case Opt_gid:
                        if (match_int(&args[0], &option))
-                               return 0;
+                               return -EINVAL;
                        opts->fs_gid = make_kgid(current_user_ns(), option);
                        if (!gid_valid(opts->fs_gid))
-                               return 0;
+                               return -EINVAL;
                        break;
                case Opt_umask:
                        if (match_octal(&args[0], &option))
-                               return 0;
+                               return -EINVAL;
                        opts->fs_fmask = opts->fs_dmask = option;
                        break;
                case Opt_dmask:
                        if (match_octal(&args[0], &option))
-                               return 0;
+                               return -EINVAL;
                        opts->fs_dmask = option;
                        break;
                case Opt_fmask:
                        if (match_octal(&args[0], &option))
-                               return 0;
+                               return -EINVAL;
                        opts->fs_fmask = option;
                        break;
                case Opt_allow_utime:
                        if (match_octal(&args[0], &option))
-                               return 0;
+                               return -EINVAL;
                        opts->allow_utime = option & (S_IWGRP | S_IWOTH);
                        break;
                case Opt_codepage:
                        if (match_int(&args[0], &option))
-                               return 0;
+                               return -EINVAL;
                        opts->codepage = option;
                        break;
                case Opt_flush:
@@ -1014,9 +1014,9 @@ static int parse_options(struct super_block *sb, char *options, int is_vfat,
                        break;
                case Opt_time_offset:
                        if (match_int(&args[0], &option))
-                               return 0;
+                               return -EINVAL;
                        if (option < -12 * 60 || option > 12 * 60)
-                               return 0;
+                               return -EINVAL;
                        opts->tz_set = 1;
                        opts->time_offset = option;
                        break;