diff options
Diffstat (limited to 'net/packet/af_packet.c')
-rw-r--r-- | net/packet/af_packet.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index 0269616e75a1..c9d5980aa4de 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c | |||
@@ -274,6 +274,9 @@ static int packet_rcv_spkt(struct sk_buff *skb, struct net_device *dev, struct | |||
274 | dst_release(skb->dst); | 274 | dst_release(skb->dst); |
275 | skb->dst = NULL; | 275 | skb->dst = NULL; |
276 | 276 | ||
277 | /* drop conntrack reference */ | ||
278 | nf_reset(skb); | ||
279 | |||
277 | spkt = (struct sockaddr_pkt*)skb->cb; | 280 | spkt = (struct sockaddr_pkt*)skb->cb; |
278 | 281 | ||
279 | skb_push(skb, skb->data-skb->mac.raw); | 282 | skb_push(skb, skb->data-skb->mac.raw); |
@@ -517,6 +520,9 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, struct packe | |||
517 | dst_release(skb->dst); | 520 | dst_release(skb->dst); |
518 | skb->dst = NULL; | 521 | skb->dst = NULL; |
519 | 522 | ||
523 | /* drop conntrack reference */ | ||
524 | nf_reset(skb); | ||
525 | |||
520 | spin_lock(&sk->sk_receive_queue.lock); | 526 | spin_lock(&sk->sk_receive_queue.lock); |
521 | po->stats.tp_packets++; | 527 | po->stats.tp_packets++; |
522 | __skb_queue_tail(&sk->sk_receive_queue, skb); | 528 | __skb_queue_tail(&sk->sk_receive_queue, skb); |