Re: [PATCH] Evict tmp variable from the stack in ip6_evictor

2007-10-10 Thread Patrick McHardy

Pavel Emelyanov wrote:

The list_head *tmp is used to help getting the first entry in
the ip6_frag_lru_list list. There is a simpler way to do it



The exact same code exists in ip_fragment.c and nf_conntrack_reasm.c,
please also change it there.
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Evict tmp variable from the stack in ip6_evictor

2007-10-10 Thread Pavel Emelyanov
Patrick McHardy wrote:
 Pavel Emelyanov wrote:
 The list_head *tmp is used to help getting the first entry in
 the ip6_frag_lru_list list. There is a simpler way to do it
 
 
 The exact same code exists in ip_fragment.c and nf_conntrack_reasm.c,
 please also change it there.

Hm, indeed. But I see that the structs frag_queue in reassembly.c, ipq 
in ip_fragment.c and nf_ct_frag6_queue in nf code looks VERY similar 
and very much of code (like link/unlink or evict) looks the same too.

Maybe it's worth creating something like struct skb_fragment and
consolidate all the common stuff into some net/core/lib_frag.c? Or
is there some hidden reason for keeping this code splitted?

Thanks, 
Pavel
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] Evict tmp variable from the stack in ip6_evictor

2007-10-10 Thread Pavel Emelyanov
The list_head *tmp is used to help getting the first entry in
the ip6_frag_lru_list list. There is a simpler way to do it.

Signed-off-by: Pavel Emelyanov [EMAIL PROTECTED]

---

diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c
index 31601c9..8fad98b 100644
--- a/net/ipv6/reassembly.c
+++ b/net/ipv6/reassembly.c
@@ -261,7 +261,6 @@ static __inline__ void fq_kill(struct fr
 static void ip6_evictor(struct inet6_dev *idev)
 {
struct frag_queue *fq;
-   struct list_head *tmp;
int work;
 
work = atomic_read(ip6_frag_mem) - sysctl_ip6frag_low_thresh;
@@ -274,8 +273,9 @@ static void ip6_evictor(struct inet6_dev
read_unlock(ip6_frag_lock);
return;
}
-   tmp = ip6_frag_lru_list.next;
-   fq = list_entry(tmp, struct frag_queue, lru_list);
+
+   fq = list_first_entry(ip6_frag_lru_list,
+   struct frag_queue, lru_list);
atomic_inc(fq-refcnt);
read_unlock(ip6_frag_lock);
 

-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Evict tmp variable from the stack in ip6_evictor

2007-10-10 Thread Patrick McHardy

Pavel Emelyanov wrote:

Patrick McHardy wrote:

Pavel Emelyanov wrote:

The list_head *tmp is used to help getting the first entry in
the ip6_frag_lru_list list. There is a simpler way to do it


The exact same code exists in ip_fragment.c and nf_conntrack_reasm.c,
please also change it there.


Hm, indeed. But I see that the structs frag_queue in reassembly.c, ipq 
in ip_fragment.c and nf_ct_frag6_queue in nf code looks VERY similar 
and very much of code (like link/unlink or evict) looks the same too.


Maybe it's worth creating something like struct skb_fragment and
consolidate all the common stuff into some net/core/lib_frag.c? Or
is there some hidden reason for keeping this code splitted?



I'm not sure if its possible between IPv4 and IPv6, but sharing code
between IPv6 reassembly and netfilter/ipv6 would be nice.
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Evict tmp variable from the stack in ip6_evictor

2007-10-10 Thread David Miller
From: Patrick McHardy [EMAIL PROTECTED]
Date: Wed, 10 Oct 2007 17:06:07 +0200

 Pavel Emelyanov wrote:
  Patrick McHardy wrote:
  Pavel Emelyanov wrote:
  The list_head *tmp is used to help getting the first entry in
  the ip6_frag_lru_list list. There is a simpler way to do it
 
  The exact same code exists in ip_fragment.c and nf_conntrack_reasm.c,
  please also change it there.
  
  Hm, indeed. But I see that the structs frag_queue in reassembly.c, ipq 
  in ip_fragment.c and nf_ct_frag6_queue in nf code looks VERY similar 
  and very much of code (like link/unlink or evict) looks the same too.
  
  Maybe it's worth creating something like struct skb_fragment and
  consolidate all the common stuff into some net/core/lib_frag.c? Or
  is there some hidden reason for keeping this code splitted?
 
 I'm not sure if its possible between IPv4 and IPv6, but sharing code
 between IPv6 reassembly and netfilter/ipv6 would be nice.

And besides I think it's an independant change to this tmp
variable removal, so let's just do that first.
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html