OSDN Git Service

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 5c1104c..02caa40 100644 (file)
@@ -5,6 +5,7 @@
 
 struct tcf_connmark_info {
        struct tcf_common common;
+       struct net *net;
        u16 zone;
 };
 
index 5019a47..413ac39 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);