Merge branch 'net-sched-act_ctinfo-fixes'
Kevin Darbyshire-Bryant says: ==================== net: sched: act_ctinfo: fixes This is first attempt at sending a small series. Order is important because one bug (policy validation) prevents us from encountering the more important 'OOPS' generating bug in action creation. Fix the OOPS first. Confession time: Until very recently, development of this module has been done on 'net-next' tree to 'clean compile' level with run-time testing on backports to 4.14 & 4.19 kernels under openwrt. It turns out that sched: action: based code has been under more active change than I realised. During the back & forward porting during development & testing, the critical ACT_P_CREATED return code got missed despite being in the 4.14 & 4.19 backports. I have now gone through the init functions, using act_csum as reference with a fine toothed comb and am happy they do the same things. This issue hadn't been caught till now due to another issue caused by new strict nla_parse_nested function failing parsing validation before action creation. Thanks to Marcelo Leitner <marcelo.leitner@gmail.com> for flagging extack deficiency (fixed in 733f0766c3de sched: act_ctinfo: use extack error reporting) which led to b424e432e770 ("netlink: add validation of NLA_F_NESTED flag") and 8cb081746c03 ("netlink: make validation more configurable for future strictness”) which led to the policy validation fix, which then led to the action creation fix both contained in this series. If I ever get to a developer conference please feel free to tar/feather/apply cone of shame. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
43321251e2
@ -141,7 +141,8 @@ out:
|
||||
}
|
||||
|
||||
static const struct nla_policy ctinfo_policy[TCA_CTINFO_MAX + 1] = {
|
||||
[TCA_CTINFO_ACT] = { .len = sizeof(struct
|
||||
[TCA_CTINFO_ACT] = { .type = NLA_EXACT_LEN,
|
||||
.len = sizeof(struct
|
||||
tc_ctinfo) },
|
||||
[TCA_CTINFO_ZONE] = { .type = NLA_U16 },
|
||||
[TCA_CTINFO_PARMS_DSCP_MASK] = { .type = NLA_U32 },
|
||||
@ -213,6 +214,7 @@ static int tcf_ctinfo_init(struct net *net, struct nlattr *nla,
|
||||
tcf_idr_cleanup(tn, actparm->index);
|
||||
return ret;
|
||||
}
|
||||
ret = ACT_P_CREATED;
|
||||
} else if (err > 0) {
|
||||
if (bind) /* don't override defaults */
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user