diff options
-rw-r--r-- | net/core/datagram.c | 1 | ||||
-rw-r--r-- | net/ipv4/udp.c | 2 | ||||
-rw-r--r-- | net/ipv6/raw.c | 1 | ||||
-rw-r--r-- | net/ipv6/udp.c | 4 |
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 | ||
1187 | drop: | 1188 | drop: |
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; |
397 | drop: | 397 | drop: |
398 | atomic_inc(&sk->sk_drops); | ||
399 | drop_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; |