]> err.no Git - linux-2.6/blobdiff - net/ipv4/ip_fragment.c
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
[linux-2.6] / net / ipv4 / ip_fragment.c
index 928259dbc0f8b89d34e2302eb7cc5bec4cd21e02..2143bf30597a84b528e0cced57bc657dbe577417 100644 (file)
@@ -128,20 +128,6 @@ static unsigned int ip4_hashfn(struct inet_frag_queue *q)
        return ipqhashfn(ipq->id, ipq->saddr, ipq->daddr, ipq->protocol);
 }
 
-static int ip4_frag_equal(struct inet_frag_queue *q1,
-               struct inet_frag_queue *q2)
-{
-       struct ipq *qp1, *qp2;
-
-       qp1 = container_of(q1, struct ipq, q);
-       qp2 = container_of(q2, struct ipq, q);
-       return (qp1->id == qp2->id &&
-                       qp1->saddr == qp2->saddr &&
-                       qp1->daddr == qp2->daddr &&
-                       qp1->protocol == qp2->protocol &&
-                       qp1->user == qp2->user);
-}
-
 static int ip4_frag_match(struct inet_frag_queue *q, void *a)
 {
        struct ipq *qp;
@@ -185,7 +171,6 @@ static __inline__ void ip4_frag_free(struct inet_frag_queue *q)
        qp = container_of(q, struct ipq, q);
        if (qp->peer)
                inet_putpeer(qp->peer);
-       kfree(qp);
 }
 
 
@@ -501,7 +486,6 @@ static int ip_frag_reasm(struct ipq *qp, struct sk_buff *prev,
        if (prev) {
                head = prev->next;
                fp = skb_clone(head, GFP_ATOMIC);
-
                if (!fp)
                        goto out_nomem;
 
@@ -527,7 +511,6 @@ static int ip_frag_reasm(struct ipq *qp, struct sk_buff *prev,
                goto out_oversize;
 
        /* Head of list must not be cloned. */
-       err = -ENOMEM;
        if (skb_cloned(head) && pskb_expand_head(head, 0, 0, GFP_ATOMIC))
                goto out_nomem;
 
@@ -583,6 +566,7 @@ static int ip_frag_reasm(struct ipq *qp, struct sk_buff *prev,
 out_nomem:
        LIMIT_NETDEBUG(KERN_ERR "IP: queue_glue: no memory for gluing "
                              "queue %p\n", qp);
+       err = -ENOMEM;
        goto out_fail;
 out_oversize:
        if (net_ratelimit())
@@ -631,7 +615,6 @@ void __init ipfrag_init(void)
        ip4_frags.destructor = ip4_frag_free;
        ip4_frags.skb_free = NULL;
        ip4_frags.qsize = sizeof(struct ipq);
-       ip4_frags.equal = ip4_frag_equal;
        ip4_frags.match = ip4_frag_match;
        ip4_frags.frag_expire = ip_expire;
        inet_frags_init(&ip4_frags);