ipv4: Only compute net once in ip_do_fragment
authorEric W. Biederman <ebiederm@xmission.com>
Wed, 16 Sep 2015 01:03:59 +0000 (20:03 -0500)
committerDavid S. Miller <davem@davemloft.net>
Fri, 18 Sep 2015 00:18:34 +0000 (17:18 -0700)
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/ip_output.c

index 9ee622ad8dfab2802026f8d43dde5ab99710d66a..85b72d450184693a498cc464e971466006087d92 100644 (file)
@@ -531,9 +531,11 @@ int ip_do_fragment(struct sock *sk, struct sk_buff *skb,
        int offset;
        __be16 not_last_frag;
        struct rtable *rt = skb_rtable(skb);
+       struct net *net;
        int err = 0;
 
        dev = rt->dst.dev;
+       net = dev_net(dev);
 
        /*
         *      Point into the IP datagram header.
@@ -626,7 +628,7 @@ int ip_do_fragment(struct sock *sk, struct sk_buff *skb,
                        err = output(sk, skb);
 
                        if (!err)
-                               IP_INC_STATS(dev_net(dev), IPSTATS_MIB_FRAGCREATES);
+                               IP_INC_STATS(net, IPSTATS_MIB_FRAGCREATES);
                        if (err || !frag)
                                break;
 
@@ -636,7 +638,7 @@ int ip_do_fragment(struct sock *sk, struct sk_buff *skb,
                }
 
                if (err == 0) {
-                       IP_INC_STATS(dev_net(dev), IPSTATS_MIB_FRAGOKS);
+                       IP_INC_STATS(net, IPSTATS_MIB_FRAGOKS);
                        return 0;
                }
 
@@ -645,7 +647,7 @@ int ip_do_fragment(struct sock *sk, struct sk_buff *skb,
                        kfree_skb(frag);
                        frag = skb;
                }
-               IP_INC_STATS(dev_net(dev), IPSTATS_MIB_FRAGFAILS);
+               IP_INC_STATS(net, IPSTATS_MIB_FRAGFAILS);
                return err;
 
 slow_path_clean:
@@ -767,15 +769,15 @@ slow_path:
                if (err)
                        goto fail;
 
-               IP_INC_STATS(dev_net(dev), IPSTATS_MIB_FRAGCREATES);
+               IP_INC_STATS(net, IPSTATS_MIB_FRAGCREATES);
        }
        consume_skb(skb);
-       IP_INC_STATS(dev_net(dev), IPSTATS_MIB_FRAGOKS);
+       IP_INC_STATS(net, IPSTATS_MIB_FRAGOKS);
        return err;
 
 fail:
        kfree_skb(skb);
-       IP_INC_STATS(dev_net(dev), IPSTATS_MIB_FRAGFAILS);
+       IP_INC_STATS(net, IPSTATS_MIB_FRAGFAILS);
        return err;
 }
 EXPORT_SYMBOL(ip_do_fragment);