tcp: fix incorrect LOCKDROPPEDICMPS counter
commit 563d34d057
(tcp: dont drop MTU reduction indications)
added an error leading to incorrect accounting of
LINUX_MIB_LOCKDROPPEDICMPS
If socket is owned by the user, we want to increment
this SNMP counter, unless the message is a
(ICMP_DEST_UNREACH,ICMP_FRAG_NEEDED) one.
Reported-by: Maciej Żenczykowski <maze@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Acked-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
9a4c831ebb
commit
b74aa930ef
1 changed files with 4 additions and 5 deletions
|
@ -369,11 +369,10 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info)
|
|||
* We do take care of PMTU discovery (RFC1191) special case :
|
||||
* we can receive locally generated ICMP messages while socket is held.
|
||||
*/
|
||||
if (sock_owned_by_user(sk) &&
|
||||
type != ICMP_DEST_UNREACH &&
|
||||
code != ICMP_FRAG_NEEDED)
|
||||
NET_INC_STATS_BH(net, LINUX_MIB_LOCKDROPPEDICMPS);
|
||||
|
||||
if (sock_owned_by_user(sk)) {
|
||||
if (!(type == ICMP_DEST_UNREACH && code == ICMP_FRAG_NEEDED))
|
||||
NET_INC_STATS_BH(net, LINUX_MIB_LOCKDROPPEDICMPS);
|
||||
}
|
||||
if (sk->sk_state == TCP_CLOSE)
|
||||
goto out;
|
||||
|
||||
|
|
Loading…
Reference in a new issue