aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/ip_fragment.c
diff options
context:
space:
mode:
authorPavel Emelyanov <xemul@openvz.org>2007-10-15 05:37:18 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-10-15 15:26:41 -0400
commit277e650ddfc6944ef5f5466fd898b8da7f06cd82 (patch)
tree39afdd22384c402e08287a3911455a2bbce721b1 /net/ipv4/ip_fragment.c
parent04128f233f2b344f3438cde09723e9946463a573 (diff)
[INET]: Consolidate the xxx_frag_kill
Since now all the xxx_frag_kill functions now work with the generic inet_frag_queue data type, this can be moved into a common place. The xxx_unlink() code is moved as well. Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/ip_fragment.c')
-rw-r--r--net/ipv4/ip_fragment.c23
1 files changed, 1 insertions, 22 deletions
diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c
index 0dd9a31df212..7416c05dd334 100644
--- a/net/ipv4/ip_fragment.c
+++ b/net/ipv4/ip_fragment.c
@@ -108,20 +108,6 @@ int ip_frag_mem(void)
108static int ip_frag_reasm(struct ipq *qp, struct sk_buff *prev, 108static int ip_frag_reasm(struct ipq *qp, struct sk_buff *prev,
109 struct net_device *dev); 109 struct net_device *dev);
110 110
111static __inline__ void __ipq_unlink(struct ipq *qp)
112{
113 hlist_del(&qp->q.list);
114 list_del(&qp->q.lru_list);
115 ip4_frags.nqueues--;
116}
117
118static __inline__ void ipq_unlink(struct ipq *ipq)
119{
120 write_lock(&ip4_frags.lock);
121 __ipq_unlink(ipq);
122 write_unlock(&ip4_frags.lock);
123}
124
125static unsigned int ipqhashfn(__be16 id, __be32 saddr, __be32 daddr, u8 prot) 111static unsigned int ipqhashfn(__be16 id, __be32 saddr, __be32 daddr, u8 prot)
126{ 112{
127 return jhash_3words((__force u32)id << 16 | prot, 113 return jhash_3words((__force u32)id << 16 | prot,
@@ -222,14 +208,7 @@ static __inline__ void ipq_put(struct ipq *ipq, int *work)
222 */ 208 */
223static void ipq_kill(struct ipq *ipq) 209static void ipq_kill(struct ipq *ipq)
224{ 210{
225 if (del_timer(&ipq->q.timer)) 211 inet_frag_kill(&ipq->q, &ip4_frags);
226 atomic_dec(&ipq->q.refcnt);
227
228 if (!(ipq->q.last_in & COMPLETE)) {
229 ipq_unlink(ipq);
230 atomic_dec(&ipq->q.refcnt);
231 ipq->q.last_in |= COMPLETE;
232 }
233} 212}
234 213
235/* Memory limiting on fragments. Evictor trashes the oldest 214/* Memory limiting on fragments. Evictor trashes the oldest