dm verity: fix verity_parse_opt_args parsing
Commitdf326e7a06
("dm verity: allow optional args to alter primary args handling") introduced a bug where verity_parse_opt_args() wouldn't properly shift past an optional argument's additional params (by ignoring them). Fix this by avoiding returning with error if an unknown argument is encountered when @only_modifier_opts=true is passed to verity_parse_opt_args(). In practice this regressed the cryptsetup testsuite's FEC testing because unknown optional arguments were encountered, wherey short-circuiting ever testing FEC mode. With this fix all of the cryptsetup testsuite's verity FEC tests pass. Fixes:df326e7a06
("dm verity: allow optional args to alter primary args handling") Reported-by: Milan Broz <gmazyland@gmail.com>> Signed-off-by: Mike Snitzer <snitzer@kernel.org>
This commit is contained in:
parent
8c22816dbc
commit
f876df9f12
|
@ -1052,7 +1052,7 @@ static int verity_parse_opt_args(struct dm_arg_set *as, struct dm_verity *v,
|
|||
struct dm_verity_sig_opts *verify_args,
|
||||
bool only_modifier_opts)
|
||||
{
|
||||
int r;
|
||||
int r = 0;
|
||||
unsigned argc;
|
||||
struct dm_target *ti = v->ti;
|
||||
const char *arg_name;
|
||||
|
@ -1122,8 +1122,18 @@ static int verity_parse_opt_args(struct dm_arg_set *as, struct dm_verity *v,
|
|||
if (r)
|
||||
return r;
|
||||
continue;
|
||||
|
||||
} else if (only_modifier_opts) {
|
||||
/*
|
||||
* Ignore unrecognized opt, could easily be an extra
|
||||
* argument to an option whose parsing was skipped.
|
||||
* Normal parsing (@only_modifier_opts=false) will
|
||||
* properly parse all options (and their extra args).
|
||||
*/
|
||||
continue;
|
||||
}
|
||||
|
||||
DMERR("Unrecognized verity feature request: %s", arg_name);
|
||||
ti->error = "Unrecognized verity feature request";
|
||||
return -EINVAL;
|
||||
} while (argc && !r);
|
||||
|
|
Loading…
Reference in New Issue