diff -ru linux-orig/net/packet/af_packet.c linux-new/net/packet/af_packet.c --- linux-orig/net/packet/af_packet.c 2005-03-25 14:48:13.597903552 -0500 +++ linux-new/net/packet/af_packet.c 2005-03-25 14:51:05.480773384 -0500 @@ -274,6 +274,10 @@ dst_release(skb->dst); skb->dst = NULL; + /* drop conntrack reference */ + nf_conntrack_put(skb->nfct); + skb->nfct = NULL; + spkt = (struct sockaddr_pkt*)skb->cb; skb_push(skb, skb->data-skb->mac.raw); @@ -517,6 +521,10 @@ dst_release(skb->dst); skb->dst = NULL; + /* drop conntrack reference */ + nf_conntrack_put(skb->nfct); + skb->nfct = NULL; + spin_lock(&sk->sk_receive_queue.lock); po->stats.tp_packets++; __skb_queue_tail(&sk->sk_receive_queue, skb);