aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/core/datagram.c1
-rw-r--r--net/ipv4/udp.c2
-rw-r--r--net/ipv6/raw.c1
-rw-r--r--net/ipv6/udp.c4
4 files changed, 6 insertions, 2 deletions
diff --git a/net/core/datagram.c b/net/core/datagram.c
index 1c6cf3a1a4f6..4d57f5e12b05 100644
--- a/net/core/datagram.c
+++ b/net/core/datagram.c
@@ -262,6 +262,7 @@ int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags)
262 } 262 }
263 263
264 kfree_skb(skb); 264 kfree_skb(skb);
265 atomic_inc(&sk->sk_drops);
265 sk_mem_reclaim_partial(sk); 266 sk_mem_reclaim_partial(sk);
266 267
267 return err; 268 return err;
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index ec5c7a720c0c..4274c1cc78fd 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -867,6 +867,7 @@ static unsigned int first_packet_length(struct sock *sk)
867 udp_lib_checksum_complete(skb)) { 867 udp_lib_checksum_complete(skb)) {
868 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, 868 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS,
869 IS_UDPLITE(sk)); 869 IS_UDPLITE(sk));
870 atomic_inc(&sk->sk_drops);
870 __skb_unlink(skb, rcvq); 871 __skb_unlink(skb, rcvq);
871 __skb_queue_tail(&list_kill, skb); 872 __skb_queue_tail(&list_kill, skb);
872 } 873 }
@@ -1186,6 +1187,7 @@ int udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
1186 1187
1187drop: 1188drop:
1188 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite); 1189 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
1190 atomic_inc(&sk->sk_drops);
1189 kfree_skb(skb); 1191 kfree_skb(skb);
1190 return -1; 1192 return -1;
1191} 1193}
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
index 52ed7d7f9dab..cb834ab7f071 100644
--- a/net/ipv6/raw.c
+++ b/net/ipv6/raw.c
@@ -517,7 +517,6 @@ csum_copy_err:
517 as some normal condition. 517 as some normal condition.
518 */ 518 */
519 err = (flags&MSG_DONTWAIT) ? -EAGAIN : -EHOSTUNREACH; 519 err = (flags&MSG_DONTWAIT) ? -EAGAIN : -EHOSTUNREACH;
520 atomic_inc(&sk->sk_drops);
521 goto out; 520 goto out;
522} 521}
523 522
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index 829d300a6f35..d3b59d73f507 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -390,11 +390,13 @@ int udpv6_queue_rcv_skb(struct sock * sk, struct sk_buff *skb)
390 if (rc == -ENOMEM) 390 if (rc == -ENOMEM)
391 UDP6_INC_STATS_BH(sock_net(sk), 391 UDP6_INC_STATS_BH(sock_net(sk),
392 UDP_MIB_RCVBUFERRORS, is_udplite); 392 UDP_MIB_RCVBUFERRORS, is_udplite);
393 goto drop; 393 goto drop_no_sk_drops_inc;
394 } 394 }
395 395
396 return 0; 396 return 0;
397drop: 397drop:
398 atomic_inc(&sk->sk_drops);
399drop_no_sk_drops_inc:
398 UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite); 400 UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite);
399 kfree_skb(skb); 401 kfree_skb(skb);
400 return -1; 402 return -1;