On 2018/8/11 14:49, Tiezhu Yang wrote: > match_strdup() returns NULL when kmalloc failed, so the caller > function f2fs_set_qf_name() should return -ENOMEM in this case; > match_int() returns -ENOMEM, -EINVAL, or -ERANGE on failure, > so the caller function parse_options() should not always return > -EINVAL in this case. > > Signed-off-by: Tiezhu Yang <kernelpa...@126.com> > --- > fs/f2fs/super.c | 60 > +++++++++++++++++++++++++++++++++++++++------------------ > 1 file changed, 41 insertions(+), 19 deletions(-) > > diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c > index 53d70b6..bf6505e 100644 > --- a/fs/f2fs/super.c > +++ b/fs/f2fs/super.c > @@ -269,7 +269,7 @@ static int f2fs_set_qf_name(struct super_block *sb, int > qtype, > if (!qname) { > f2fs_msg(sb, KERN_ERR, > "Not enough memory for storing quotafile name"); > - return -EINVAL; > + return -ENOMEM; > } > if (F2FS_OPTION(sbi).s_qf_names[qtype]) { > if (strcmp(F2FS_OPTION(sbi).s_qf_names[qtype], qname) == 0) > @@ -366,9 +366,7 @@ static int parse_options(struct super_block *sb, char > *options) > int arg = 0; > kuid_t uid; > kgid_t gid; > -#ifdef CONFIG_QUOTA > int ret; > -#endif > > if (!options) > return 0; > @@ -452,8 +450,11 @@ static int parse_options(struct super_block *sb, char > *options) > clear_opt(sbi, INLINE_XATTR); > break; > case Opt_inline_xattr_size: > - if (args->from && match_int(args, &arg)) > - return -EINVAL; > + if (args->from) { > + ret = match_int(args, &arg); > + if (ret) > + return ret;> + }
if (args->from) return -EINVAL; ret = match_init(); if (ret) return ret; The same as below. Thanks, > set_opt(sbi, INLINE_XATTR_SIZE); > F2FS_OPTION(sbi).inline_xattr_size = arg; > break; > @@ -491,8 +492,11 @@ static int parse_options(struct super_block *sb, char > *options) > break; > #endif > case Opt_active_logs: > - if (args->from && match_int(args, &arg)) > - return -EINVAL; > + if (args->from) { > + ret = match_int(args, &arg); > + if (ret) > + return ret; > + } > if (arg != 2 && arg != 4 && arg != NR_CURSEG_TYPE) > return -EINVAL; > F2FS_OPTION(sbi).active_logs = arg; > @@ -534,8 +538,11 @@ static int parse_options(struct super_block *sb, char > *options) > set_opt(sbi, DATA_FLUSH); > break; > case Opt_reserve_root: > - if (args->from && match_int(args, &arg)) > - return -EINVAL; > + if (args->from) { > + ret = match_int(args, &arg); > + if (ret) > + return ret; > + } > if (test_opt(sbi, RESERVE_ROOT)) { > f2fs_msg(sb, KERN_INFO, > "Preserve previous reserve_root=%u", > @@ -546,8 +553,11 @@ static int parse_options(struct super_block *sb, char > *options) > } > break; > case Opt_resuid: > - if (args->from && match_int(args, &arg)) > - return -EINVAL; > + if (args->from) { > + ret = match_int(args, &arg); > + if (ret) > + return ret; > + } > uid = make_kuid(current_user_ns(), arg); > if (!uid_valid(uid)) { > f2fs_msg(sb, KERN_ERR, > @@ -557,8 +567,11 @@ static int parse_options(struct super_block *sb, char > *options) > F2FS_OPTION(sbi).s_resuid = uid; > break; > case Opt_resgid: > - if (args->from && match_int(args, &arg)) > - return -EINVAL; > + if (args->from) { > + ret = match_int(args, &arg); > + if (ret) > + return ret; > + } > gid = make_kgid(current_user_ns(), arg); > if (!gid_valid(gid)) { > f2fs_msg(sb, KERN_ERR, > @@ -592,8 +605,11 @@ static int parse_options(struct super_block *sb, char > *options) > kfree(name); > break; > case Opt_io_size_bits: > - if (args->from && match_int(args, &arg)) > - return -EINVAL; > + if (args->from) { > + ret = match_int(args, &arg); > + if (ret) > + return ret; > + } > if (arg > __ilog2_u32(BIO_MAX_PAGES)) { > f2fs_msg(sb, KERN_WARNING, > "Not support %d, larger than %d", > @@ -603,8 +619,11 @@ static int parse_options(struct super_block *sb, char > *options) > F2FS_OPTION(sbi).write_io_size_bits = arg; > break; > case Opt_fault_injection: > - if (args->from && match_int(args, &arg)) > - return -EINVAL; > + if (args->from) { > + ret = match_int(args, &arg); > + if (ret) > + return ret; > + } > #ifdef CONFIG_F2FS_FAULT_INJECTION > f2fs_build_fault_attr(sbi, arg, F2FS_ALL_FAULT_TYPE); > set_opt(sbi, FAULT_INJECTION); > @@ -614,8 +633,11 @@ static int parse_options(struct super_block *sb, char > *options) > #endif > break; > case Opt_fault_type: > - if (args->from && match_int(args, &arg)) > - return -EINVAL; > + if (args->from) { > + ret = match_int(args, &arg); > + if (ret) > + return ret; > + } > #ifdef CONFIG_F2FS_FAULT_INJECTION > f2fs_build_fault_attr(sbi, 0, arg); > set_opt(sbi, FAULT_INJECTION); > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel