diff options
Diffstat (limited to 'net/tipc/socket.c')
-rw-r--r-- | net/tipc/socket.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/net/tipc/socket.c b/net/tipc/socket.c index 07559ce4b8ba..732ec894f69f 100644 --- a/net/tipc/socket.c +++ b/net/tipc/socket.c | |||
@@ -2122,8 +2122,10 @@ static void tipc_sk_filter_rcv(struct sock *sk, struct sk_buff *skb, | |||
2122 | (!sk_conn && msg_connected(hdr)) || | 2122 | (!sk_conn && msg_connected(hdr)) || |
2123 | (!grp && msg_in_group(hdr))) | 2123 | (!grp && msg_in_group(hdr))) |
2124 | err = TIPC_ERR_NO_PORT; | 2124 | err = TIPC_ERR_NO_PORT; |
2125 | else if (sk_rmem_alloc_get(sk) + skb->truesize >= limit) | 2125 | else if (sk_rmem_alloc_get(sk) + skb->truesize >= limit) { |
2126 | atomic_inc(&sk->sk_drops); | ||
2126 | err = TIPC_ERR_OVERLOAD; | 2127 | err = TIPC_ERR_OVERLOAD; |
2128 | } | ||
2127 | 2129 | ||
2128 | if (unlikely(err)) { | 2130 | if (unlikely(err)) { |
2129 | tipc_skb_reject(net, err, skb, xmitq); | 2131 | tipc_skb_reject(net, err, skb, xmitq); |
@@ -2202,6 +2204,7 @@ static void tipc_sk_enqueue(struct sk_buff_head *inputq, struct sock *sk, | |||
2202 | 2204 | ||
2203 | /* Overload => reject message back to sender */ | 2205 | /* Overload => reject message back to sender */ |
2204 | onode = tipc_own_addr(sock_net(sk)); | 2206 | onode = tipc_own_addr(sock_net(sk)); |
2207 | atomic_inc(&sk->sk_drops); | ||
2205 | if (tipc_msg_reverse(onode, &skb, TIPC_ERR_OVERLOAD)) | 2208 | if (tipc_msg_reverse(onode, &skb, TIPC_ERR_OVERLOAD)) |
2206 | __skb_queue_tail(xmitq, skb); | 2209 | __skb_queue_tail(xmitq, skb); |
2207 | break; | 2210 | break; |
@@ -3293,7 +3296,9 @@ int tipc_sk_fill_sock_diag(struct sk_buff *skb, struct tipc_sock *tsk, | |||
3293 | if (nla_put_u32(skb, TIPC_NLA_SOCK_STAT_RCVQ, | 3296 | if (nla_put_u32(skb, TIPC_NLA_SOCK_STAT_RCVQ, |
3294 | skb_queue_len(&sk->sk_receive_queue)) || | 3297 | skb_queue_len(&sk->sk_receive_queue)) || |
3295 | nla_put_u32(skb, TIPC_NLA_SOCK_STAT_SENDQ, | 3298 | nla_put_u32(skb, TIPC_NLA_SOCK_STAT_SENDQ, |
3296 | skb_queue_len(&sk->sk_write_queue))) | 3299 | skb_queue_len(&sk->sk_write_queue)) || |
3300 | nla_put_u32(skb, TIPC_NLA_SOCK_STAT_DROP, | ||
3301 | atomic_read(&sk->sk_drops))) | ||
3297 | goto stat_msg_cancel; | 3302 | goto stat_msg_cancel; |
3298 | 3303 | ||
3299 | if (tsk->cong_link_cnt && | 3304 | if (tsk->cong_link_cnt && |