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
@ -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 do take care of PMTU discovery (RFC1191) special case :
|
||||||
* we can receive locally generated ICMP messages while socket is held.
|
* we can receive locally generated ICMP messages while socket is held.
|
||||||
*/
|
*/
|
||||||
if (sock_owned_by_user(sk) &&
|
if (sock_owned_by_user(sk)) {
|
||||||
type != ICMP_DEST_UNREACH &&
|
if (!(type == ICMP_DEST_UNREACH && code == ICMP_FRAG_NEEDED))
|
||||||
code != ICMP_FRAG_NEEDED)
|
NET_INC_STATS_BH(net, LINUX_MIB_LOCKDROPPEDICMPS);
|
||||||
NET_INC_STATS_BH(net, LINUX_MIB_LOCKDROPPEDICMPS);
|
}
|
||||||
|
|
||||||
if (sk->sk_state == TCP_CLOSE)
|
if (sk->sk_state == TCP_CLOSE)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user