act_connmark: Remember the struct net instead of guessing it.
authorEric W. Biederman <ebiederm@xmission.com>
Fri, 18 Sep 2015 19:33:03 +0000 (14:33 -0500)
committerPablo Neira Ayuso <pablo@netfilter.org>
Fri, 18 Sep 2015 19:59:31 +0000 (21:59 +0200)
Stop guessing the struct net instead of remember it.  Guessing is just
silly and will be problematic in the future when I implement routes
between network namespaces.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
include/net/tc_act/tc_connmark.h
net/sched/act_connmark.c

index 5c1104c2e24f655c08916d72e8ee6388127ac5a2..02caa406611b496e6e830c9fb85b467c55875732 100644 (file)
@@ -5,6 +5,7 @@
 
 struct tcf_connmark_info {
        struct tcf_common common;
+       struct net *net;
        u16 zone;
 };
 
index 5019a47b9270e758f65c346631becc99e933b0c6..413ac39147d819a9582a5d5e2f77fd53975815fe 100644 (file)
@@ -74,7 +74,7 @@ static int tcf_connmark(struct sk_buff *skb, const struct tc_action *a,
        zone.id = ca->zone;
        zone.dir = NF_CT_DEFAULT_ZONE_DIR;
 
-       thash = nf_conntrack_find_get(dev_net(skb->dev), &zone, &tuple);
+       thash = nf_conntrack_find_get(ca->net, &zone, &tuple);
        if (!thash)
                goto out;
 
@@ -119,6 +119,7 @@ static int tcf_connmark_init(struct net *net, struct nlattr *nla,
 
                ci = to_connmark(a);
                ci->tcf_action = parm->action;
+               ci->net = net;
                ci->zone = parm->zone;
 
                tcf_hash_insert(a);