Message ID | 20230314202448.603841-2-pctammela@mojatatu.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net/sched: act_pedit: minor improvements | expand |
On Tue, Mar 14, 2023 at 05:24:45PM -0300, Pedro Tammela wrote: > We have extack available when parsing 'ex' keys, so pass it to > tcf_pedit_keys_ex_parse and add more detailed error messages. > While at it, remove redundant code from the 'err_out' label code path. > > Reviewed-by: Jamal Hadi Salim <jhs@mojatatu.com> > Signed-off-by: Pedro Tammela <pctammela@mojatatu.com> > --- > net/sched/act_pedit.c | 22 +++++++++++----------- > 1 file changed, 11 insertions(+), 11 deletions(-) > > diff --git a/net/sched/act_pedit.c b/net/sched/act_pedit.c > index 4559a1507ea5..be9e7e565551 100644 > --- a/net/sched/act_pedit.c > +++ b/net/sched/act_pedit.c > @@ -35,7 +35,7 @@ static const struct nla_policy pedit_key_ex_policy[TCA_PEDIT_KEY_EX_MAX + 1] = { > }; > > static struct tcf_pedit_key_ex *tcf_pedit_keys_ex_parse(struct nlattr *nla, > - u8 n) > + u8 n, struct netlink_ext_ack *extack) > { > struct tcf_pedit_key_ex *keys_ex; > struct tcf_pedit_key_ex *k; > @@ -56,25 +56,25 @@ static struct tcf_pedit_key_ex *tcf_pedit_keys_ex_parse(struct nlattr *nla, > struct nlattr *tb[TCA_PEDIT_KEY_EX_MAX + 1]; > > if (!n) { > - err = -EINVAL; > + NL_SET_ERR_MSG_MOD(extack, "Can't parse more extended keys than requested"); > goto err_out; > } > + > n--; > > if (nla_type(ka) != TCA_PEDIT_KEY_EX) { > - err = -EINVAL; > + NL_SET_ERR_MSG_MOD(extack, "Unknown attribute, expected extended key"); > goto err_out; > } > > - err = nla_parse_nested_deprecated(tb, TCA_PEDIT_KEY_EX_MAX, > - ka, pedit_key_ex_policy, > - NULL); > + err = nla_parse_nested_deprecated(tb, TCA_PEDIT_KEY_EX_MAX, ka, > + pedit_key_ex_policy, extack); > if (err) > goto err_out; err_out will return ERR_PTR(-EINVAL). I.e. the value of is not propagated. Are you sure it is always -EINVAL? > > if (!tb[TCA_PEDIT_KEY_EX_HTYPE] || > !tb[TCA_PEDIT_KEY_EX_CMD]) { > - err = -EINVAL; > + NL_SET_ERR_MSG_MOD(extack, "Extended Pedit missing required attributes"); > goto err_out; > } > > @@ -83,7 +83,7 @@ static struct tcf_pedit_key_ex *tcf_pedit_keys_ex_parse(struct nlattr *nla, > > if (k->htype > TCA_PEDIT_HDR_TYPE_MAX || > k->cmd > TCA_PEDIT_CMD_MAX) { > - err = -EINVAL; > + NL_SET_ERR_MSG_MOD(extack, "Extended Pedit key is malformed"); > goto err_out; > } > > @@ -91,7 +91,7 @@ static struct tcf_pedit_key_ex *tcf_pedit_keys_ex_parse(struct nlattr *nla, > } > > if (n) { > - err = -EINVAL; > + NL_SET_ERR_MSG_MOD(extack, "Not enough extended keys to parse"); > goto err_out; > } > > @@ -99,7 +99,7 @@ static struct tcf_pedit_key_ex *tcf_pedit_keys_ex_parse(struct nlattr *nla, > > err_out: > kfree(keys_ex); > - return ERR_PTR(err); > + return ERR_PTR(-EINVAL); > } > > static int tcf_pedit_key_ex_dump(struct sk_buff *skb, > @@ -222,7 +222,7 @@ static int tcf_pedit_init(struct net *net, struct nlattr *nla, > } > > nparms->tcfp_keys_ex = > - tcf_pedit_keys_ex_parse(tb[TCA_PEDIT_KEYS_EX], parm->nkeys); > + tcf_pedit_keys_ex_parse(tb[TCA_PEDIT_KEYS_EX], parm->nkeys, extack); > if (IS_ERR(nparms->tcfp_keys_ex)) { > ret = PTR_ERR(nparms->tcfp_keys_ex); > goto out_free; > -- > 2.34.1 >
On 15/03/2023 12:51, Simon Horman wrote: > On Tue, Mar 14, 2023 at 05:24:45PM -0300, Pedro Tammela wrote: >> We have extack available when parsing 'ex' keys, so pass it to >> tcf_pedit_keys_ex_parse and add more detailed error messages. >> While at it, remove redundant code from the 'err_out' label code path. >> >> Reviewed-by: Jamal Hadi Salim <jhs@mojatatu.com> >> Signed-off-by: Pedro Tammela <pctammela@mojatatu.com> >> --- >> net/sched/act_pedit.c | 22 +++++++++++----------- >> 1 file changed, 11 insertions(+), 11 deletions(-) >> >> diff --git a/net/sched/act_pedit.c b/net/sched/act_pedit.c >> index 4559a1507ea5..be9e7e565551 100644 >> --- a/net/sched/act_pedit.c >> +++ b/net/sched/act_pedit.c >> @@ -35,7 +35,7 @@ static const struct nla_policy pedit_key_ex_policy[TCA_PEDIT_KEY_EX_MAX + 1] = { >> }; >> >> static struct tcf_pedit_key_ex *tcf_pedit_keys_ex_parse(struct nlattr *nla, >> - u8 n) >> + u8 n, struct netlink_ext_ack *extack) >> { >> struct tcf_pedit_key_ex *keys_ex; >> struct tcf_pedit_key_ex *k; >> @@ -56,25 +56,25 @@ static struct tcf_pedit_key_ex *tcf_pedit_keys_ex_parse(struct nlattr *nla, >> struct nlattr *tb[TCA_PEDIT_KEY_EX_MAX + 1]; >> >> if (!n) { >> - err = -EINVAL; >> + NL_SET_ERR_MSG_MOD(extack, "Can't parse more extended keys than requested"); >> goto err_out; >> } >> + >> n--; >> >> if (nla_type(ka) != TCA_PEDIT_KEY_EX) { >> - err = -EINVAL; >> + NL_SET_ERR_MSG_MOD(extack, "Unknown attribute, expected extended key"); >> goto err_out; >> } >> >> - err = nla_parse_nested_deprecated(tb, TCA_PEDIT_KEY_EX_MAX, >> - ka, pedit_key_ex_policy, >> - NULL); >> + err = nla_parse_nested_deprecated(tb, TCA_PEDIT_KEY_EX_MAX, ka, >> + pedit_key_ex_policy, extack); >> if (err) >> goto err_out; > > err_out will return ERR_PTR(-EINVAL). > I.e. the value of is not propagated. > Are you sure it is always -EINVAL? Good catch, I will propagate the error. > >> >> if (!tb[TCA_PEDIT_KEY_EX_HTYPE] || >> !tb[TCA_PEDIT_KEY_EX_CMD]) { >> - err = -EINVAL; >> + NL_SET_ERR_MSG_MOD(extack, "Extended Pedit missing required attributes"); >> goto err_out; >> } >> >> @@ -83,7 +83,7 @@ static struct tcf_pedit_key_ex *tcf_pedit_keys_ex_parse(struct nlattr *nla, >> >> if (k->htype > TCA_PEDIT_HDR_TYPE_MAX || >> k->cmd > TCA_PEDIT_CMD_MAX) { >> - err = -EINVAL; >> + NL_SET_ERR_MSG_MOD(extack, "Extended Pedit key is malformed"); >> goto err_out; >> } >> >> @@ -91,7 +91,7 @@ static struct tcf_pedit_key_ex *tcf_pedit_keys_ex_parse(struct nlattr *nla, >> } >> >> if (n) { >> - err = -EINVAL; >> + NL_SET_ERR_MSG_MOD(extack, "Not enough extended keys to parse"); >> goto err_out; >> } >> >> @@ -99,7 +99,7 @@ static struct tcf_pedit_key_ex *tcf_pedit_keys_ex_parse(struct nlattr *nla, >> >> err_out: >> kfree(keys_ex); >> - return ERR_PTR(err); >> + return ERR_PTR(-EINVAL); >> } >> >> static int tcf_pedit_key_ex_dump(struct sk_buff *skb, >> @@ -222,7 +222,7 @@ static int tcf_pedit_init(struct net *net, struct nlattr *nla, >> } >> >> nparms->tcfp_keys_ex = >> - tcf_pedit_keys_ex_parse(tb[TCA_PEDIT_KEYS_EX], parm->nkeys); >> + tcf_pedit_keys_ex_parse(tb[TCA_PEDIT_KEYS_EX], parm->nkeys, extack); >> if (IS_ERR(nparms->tcfp_keys_ex)) { >> ret = PTR_ERR(nparms->tcfp_keys_ex); >> goto out_free; >> -- >> 2.34.1 >>
diff --git a/net/sched/act_pedit.c b/net/sched/act_pedit.c index 4559a1507ea5..be9e7e565551 100644 --- a/net/sched/act_pedit.c +++ b/net/sched/act_pedit.c @@ -35,7 +35,7 @@ static const struct nla_policy pedit_key_ex_policy[TCA_PEDIT_KEY_EX_MAX + 1] = { }; static struct tcf_pedit_key_ex *tcf_pedit_keys_ex_parse(struct nlattr *nla, - u8 n) + u8 n, struct netlink_ext_ack *extack) { struct tcf_pedit_key_ex *keys_ex; struct tcf_pedit_key_ex *k; @@ -56,25 +56,25 @@ static struct tcf_pedit_key_ex *tcf_pedit_keys_ex_parse(struct nlattr *nla, struct nlattr *tb[TCA_PEDIT_KEY_EX_MAX + 1]; if (!n) { - err = -EINVAL; + NL_SET_ERR_MSG_MOD(extack, "Can't parse more extended keys than requested"); goto err_out; } + n--; if (nla_type(ka) != TCA_PEDIT_KEY_EX) { - err = -EINVAL; + NL_SET_ERR_MSG_MOD(extack, "Unknown attribute, expected extended key"); goto err_out; } - err = nla_parse_nested_deprecated(tb, TCA_PEDIT_KEY_EX_MAX, - ka, pedit_key_ex_policy, - NULL); + err = nla_parse_nested_deprecated(tb, TCA_PEDIT_KEY_EX_MAX, ka, + pedit_key_ex_policy, extack); if (err) goto err_out; if (!tb[TCA_PEDIT_KEY_EX_HTYPE] || !tb[TCA_PEDIT_KEY_EX_CMD]) { - err = -EINVAL; + NL_SET_ERR_MSG_MOD(extack, "Extended Pedit missing required attributes"); goto err_out; } @@ -83,7 +83,7 @@ static struct tcf_pedit_key_ex *tcf_pedit_keys_ex_parse(struct nlattr *nla, if (k->htype > TCA_PEDIT_HDR_TYPE_MAX || k->cmd > TCA_PEDIT_CMD_MAX) { - err = -EINVAL; + NL_SET_ERR_MSG_MOD(extack, "Extended Pedit key is malformed"); goto err_out; } @@ -91,7 +91,7 @@ static struct tcf_pedit_key_ex *tcf_pedit_keys_ex_parse(struct nlattr *nla, } if (n) { - err = -EINVAL; + NL_SET_ERR_MSG_MOD(extack, "Not enough extended keys to parse"); goto err_out; } @@ -99,7 +99,7 @@ static struct tcf_pedit_key_ex *tcf_pedit_keys_ex_parse(struct nlattr *nla, err_out: kfree(keys_ex); - return ERR_PTR(err); + return ERR_PTR(-EINVAL); } static int tcf_pedit_key_ex_dump(struct sk_buff *skb, @@ -222,7 +222,7 @@ static int tcf_pedit_init(struct net *net, struct nlattr *nla, } nparms->tcfp_keys_ex = - tcf_pedit_keys_ex_parse(tb[TCA_PEDIT_KEYS_EX], parm->nkeys); + tcf_pedit_keys_ex_parse(tb[TCA_PEDIT_KEYS_EX], parm->nkeys, extack); if (IS_ERR(nparms->tcfp_keys_ex)) { ret = PTR_ERR(nparms->tcfp_keys_ex); goto out_free;