aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Emelyanov <xemul@openvz.org>2008-07-16 23:19:08 -0400
committerDavid S. Miller <davem@davemloft.net>2008-07-16 23:19:08 -0400
commit84a3aa000eacbaf841d745b07ef3a3280899056b (patch)
tree013d13bb51e1046f6864ae634edaf0dad30da2e7
parent78ed11a56bd8679aa6d51eb36b448342c59a7824 (diff)
ipv4: prepare net initialization for IP accounting
Some places, that deal with IP statistics already have where to get a struct net from, but use it directly, without declaring a separate variable on the stack. So, save this net on the stack for future IP_XXX_STATS macros. Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/ipv4/inet_connection_sock.c3
-rw-r--r--net/ipv4/ip_fragment.c6
-rw-r--r--net/ipv4/udp.c4
3 files changed, 8 insertions, 5 deletions
diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
index 5bbf00051512..8338e1066654 100644
--- a/net/ipv4/inet_connection_sock.c
+++ b/net/ipv4/inet_connection_sock.c
@@ -338,9 +338,10 @@ struct dst_entry* inet_csk_route_req(struct sock *sk,
338 .uli_u = { .ports = 338 .uli_u = { .ports =
339 { .sport = inet_sk(sk)->sport, 339 { .sport = inet_sk(sk)->sport,
340 .dport = ireq->rmt_port } } }; 340 .dport = ireq->rmt_port } } };
341 struct net *net = sock_net(sk);
341 342
342 security_req_classify_flow(req, &fl); 343 security_req_classify_flow(req, &fl);
343 if (ip_route_output_flow(sock_net(sk), &rt, &fl, sk, 0)) { 344 if (ip_route_output_flow(net, &rt, &fl, sk, 0)) {
344 IP_INC_STATS_BH(IPSTATS_MIB_OUTNOROUTES); 345 IP_INC_STATS_BH(IPSTATS_MIB_OUTNOROUTES);
345 return NULL; 346 return NULL;
346 } 347 }
diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c
index fbd5804b5d83..e23be5b36e1d 100644
--- a/net/ipv4/ip_fragment.c
+++ b/net/ipv4/ip_fragment.c
@@ -187,8 +187,10 @@ static void ip_evictor(struct net *net)
187static void ip_expire(unsigned long arg) 187static void ip_expire(unsigned long arg)
188{ 188{
189 struct ipq *qp; 189 struct ipq *qp;
190 struct net *net;
190 191
191 qp = container_of((struct inet_frag_queue *) arg, struct ipq, q); 192 qp = container_of((struct inet_frag_queue *) arg, struct ipq, q);
193 net = container_of(qp->q.net, struct net, ipv4.frags);
192 194
193 spin_lock(&qp->q.lock); 195 spin_lock(&qp->q.lock);
194 196
@@ -202,9 +204,7 @@ static void ip_expire(unsigned long arg)
202 204
203 if ((qp->q.last_in & INET_FRAG_FIRST_IN) && qp->q.fragments != NULL) { 205 if ((qp->q.last_in & INET_FRAG_FIRST_IN) && qp->q.fragments != NULL) {
204 struct sk_buff *head = qp->q.fragments; 206 struct sk_buff *head = qp->q.fragments;
205 struct net *net;
206 207
207 net = container_of(qp->q.net, struct net, ipv4.frags);
208 /* Send an ICMP "Fragment Reassembly Timeout" message. */ 208 /* Send an ICMP "Fragment Reassembly Timeout" message. */
209 if ((head->dev = dev_get_by_index(net, qp->iif)) != NULL) { 209 if ((head->dev = dev_get_by_index(net, qp->iif)) != NULL) {
210 icmp_send(head, ICMP_TIME_EXCEEDED, ICMP_EXC_FRAGTIME, 0); 210 icmp_send(head, ICMP_TIME_EXCEEDED, ICMP_EXC_FRAGTIME, 0);
@@ -570,9 +570,9 @@ int ip_defrag(struct sk_buff *skb, u32 user)
570 struct ipq *qp; 570 struct ipq *qp;
571 struct net *net; 571 struct net *net;
572 572
573 net = skb->dev ? dev_net(skb->dev) : dev_net(skb->dst->dev);
573 IP_INC_STATS_BH(IPSTATS_MIB_REASMREQDS); 574 IP_INC_STATS_BH(IPSTATS_MIB_REASMREQDS);
574 575
575 net = skb->dev ? dev_net(skb->dev) : dev_net(skb->dst->dev);
576 /* Start by cleaning up the memory. */ 576 /* Start by cleaning up the memory. */
577 if (atomic_read(&net->ipv4.frags.mem) > net->ipv4.frags.high_thresh) 577 if (atomic_read(&net->ipv4.frags.mem) > net->ipv4.frags.high_thresh)
578 ip_evictor(net); 578 ip_evictor(net);
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index fdd4faa1f120..048ef57edc1d 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -656,8 +656,10 @@ int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
656 .uli_u = { .ports = 656 .uli_u = { .ports =
657 { .sport = inet->sport, 657 { .sport = inet->sport,
658 .dport = dport } } }; 658 .dport = dport } } };
659 struct net *net = sock_net(sk);
660
659 security_sk_classify_flow(sk, &fl); 661 security_sk_classify_flow(sk, &fl);
660 err = ip_route_output_flow(sock_net(sk), &rt, &fl, sk, 1); 662 err = ip_route_output_flow(net, &rt, &fl, sk, 1);
661 if (err) { 663 if (err) {
662 if (err == -ENETUNREACH) 664 if (err == -ENETUNREACH)
663 IP_INC_STATS_BH(IPSTATS_MIB_OUTNOROUTES); 665 IP_INC_STATS_BH(IPSTATS_MIB_OUTNOROUTES);