aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6')
-rw-r--r--net/ipv6/raw.c3
-rw-r--r--net/ipv6/udp.c4
2 files changed, 5 insertions, 2 deletions
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
index 331af3b882ac..204f2e833f04 100644
--- a/net/ipv6/raw.c
+++ b/net/ipv6/raw.c
@@ -383,7 +383,8 @@ static inline int rawv6_rcv_skb(struct sock *sk, struct sk_buff *skb)
383 } 383 }
384 384
385 /* Charge it to the socket. */ 385 /* Charge it to the socket. */
386 if (ip_queue_rcv_skb(sk, skb) < 0) { 386 skb_dst_drop(skb);
387 if (sock_queue_rcv_skb(sk, skb) < 0) {
387 kfree_skb(skb); 388 kfree_skb(skb);
388 return NET_RX_DROP; 389 return NET_RX_DROP;
389 } 390 }
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index 846f4757eb8d..b4a4a15fa96f 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -538,7 +538,9 @@ int udpv6_queue_rcv_skb(struct sock * sk, struct sk_buff *skb)
538 goto drop; 538 goto drop;
539 } 539 }
540 540
541 if ((rc = ip_queue_rcv_skb(sk, skb)) < 0) { 541 skb_dst_drop(skb);
542 rc = sock_queue_rcv_skb(sk, skb);
543 if (rc < 0) {
542 /* Note that an ENOMEM error is charged twice */ 544 /* Note that an ENOMEM error is charged twice */
543 if (rc == -ENOMEM) 545 if (rc == -ENOMEM)
544 UDP6_INC_STATS_BH(sock_net(sk), 546 UDP6_INC_STATS_BH(sock_net(sk),