On Sat, Aug 5, 2017 at 1:48 AM, Xin Long <[email protected]> wrote:
> -static int __tcf_ipt_init(struct tc_action_net *tn, struct nlattr *nla,
> +static int __tcf_ipt_init(struct net *net, struct nlattr *nla,
> struct nlattr *est, struct tc_action **a,
> const struct tc_action_ops *ops, int ovr, int bind)
> {
> + struct tc_action_net *tn = net_generic(net, xt_net_id);
...
> @@ -193,18 +195,14 @@ static int tcf_ipt_init(struct net *net, struct nlattr
> *nla,
> struct nlattr *est, struct tc_action **a, int ovr,
> int bind)
> {
> - struct tc_action_net *tn = net_generic(net, ipt_net_id);
> -
> - return __tcf_ipt_init(tn, nla, est, a, &act_ipt_ops, ovr, bind);
> + return __tcf_ipt_init(net, nla, est, a, &act_ipt_ops, ovr, bind);
> }
>
> static int tcf_xt_init(struct net *net, struct nlattr *nla,
> struct nlattr *est, struct tc_action **a, int ovr,
> int bind)
> {
> - struct tc_action_net *tn = net_generic(net, xt_net_id);
> -
> - return __tcf_ipt_init(tn, nla, est, a, &act_xt_ops, ovr, bind);
> + return __tcf_ipt_init(net, nla, est, a, &act_xt_ops, ovr, bind);
This is not correct.
You miss ipt_net_id != xt_net_id.