diff options
Diffstat (limited to 'net/ipv4/udp.c')
-rw-r--r-- | net/ipv4/udp.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index b4c3582a991f..2814f66dac64 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c | |||
@@ -758,7 +758,7 @@ static int udp_send_skb(struct sk_buff *skb, struct flowi4 *fl4) | |||
758 | uh->check = CSUM_MANGLED_0; | 758 | uh->check = CSUM_MANGLED_0; |
759 | 759 | ||
760 | send: | 760 | send: |
761 | err = ip_send_skb(skb); | 761 | err = ip_send_skb(sock_net(sk), skb); |
762 | if (err) { | 762 | if (err) { |
763 | if (err == -ENOBUFS && !inet->recverr) { | 763 | if (err == -ENOBUFS && !inet->recverr) { |
764 | UDP_INC_STATS_USER(sock_net(sk), | 764 | UDP_INC_STATS_USER(sock_net(sk), |
@@ -1226,6 +1226,11 @@ try_again: | |||
1226 | 1226 | ||
1227 | if (unlikely(err)) { | 1227 | if (unlikely(err)) { |
1228 | trace_kfree_skb(skb, udp_recvmsg); | 1228 | trace_kfree_skb(skb, udp_recvmsg); |
1229 | if (!peeked) { | ||
1230 | atomic_inc(&sk->sk_drops); | ||
1231 | UDP_INC_STATS_USER(sock_net(sk), | ||
1232 | UDP_MIB_INERRORS, is_udplite); | ||
1233 | } | ||
1229 | goto out_free; | 1234 | goto out_free; |
1230 | } | 1235 | } |
1231 | 1236 | ||