net: sched: act_ctinfo: fix action creation
Use correct return value on action creation: ACT_P_CREATED. The use of incorrect return value could result in a situation where the system thought a ctinfo module was listening but actually wasn't instantiated correctly leading to an OOPS in tcf_generic_walker(). 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. 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. Bonus, no more OOPSes. I managed to also miss this issue till now due to the new strict nla_parse_nested function failing validation before action creation. As an inexperienced developer I've learned that copy/pasting/backporting/forward porting code correctly is hard. If I ever get to a developer conference I shall don the cone of shame. Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
098eadce3c
commit
a658c2e49f
@ -213,6 +213,7 @@ static int tcf_ctinfo_init(struct net *net, struct nlattr *nla,
|
|||||||
tcf_idr_cleanup(tn, actparm->index);
|
tcf_idr_cleanup(tn, actparm->index);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
ret = ACT_P_CREATED;
|
||||||
} else if (err > 0) {
|
} else if (err > 0) {
|
||||||
if (bind) /* don't override defaults */
|
if (bind) /* don't override defaults */
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user