Commit 17173c82 authored by Chengguang Xu's avatar Chengguang Xu Committed by Ilya Dryomov
Browse files

libceph: stop parsing when a bad int arg is detected



There is no reason to continue option parsing after detecting
bad option.

[ Return match_int() errors from ceph_parse_options() to match the
  behaviour of parse_rbd_opts_token() and parse_fsopt_token(). ]

Signed-off-by: default avatarChengguang Xu <cgxu519@gmx.com>
Reviewed-by: default avatarIlya Dryomov <idryomov@gmail.com>
Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
parent c9ed51c9
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -379,7 +379,7 @@ ceph_parse_options(char *options, const char *dev_name,

	/* parse mount options */
	while ((c = strsep(&options, ",")) != NULL) {
		int token, intval, ret;
		int token, intval;
		if (!*c)
			continue;
		err = -EINVAL;
@@ -394,11 +394,11 @@ ceph_parse_options(char *options, const char *dev_name,
			continue;
		}
		if (token < Opt_last_int) {
			ret = match_int(&argstr[0], &intval);
			if (ret < 0) {
			err = match_int(&argstr[0], &intval);
			if (err < 0) {
				pr_err("bad mount option arg (not int) "
				       "at '%s'\n", c);
				continue;
				goto out;
			}
			dout("got int token %d val %d\n", token, intval);
		} else if (token > Opt_last_int && token < Opt_last_string) {