diff options
Diffstat (limited to 'net/ipv4/tcp_ipv4.c')
| -rw-r--r-- | net/ipv4/tcp_ipv4.c | 6 | 
1 files changed, 6 insertions, 0 deletions
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 70df40980a87..3c23e70885f4 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -60,6 +60,7 @@  #include <linux/jhash.h>  #include <linux/init.h>  #include <linux/times.h> +#include <linux/slab.h>  #include <net/net_namespace.h>  #include <net/icmp.h> @@ -370,6 +371,11 @@ void tcp_v4_err(struct sk_buff *icmp_skb, u32 info)  	if (sk->sk_state == TCP_CLOSE)  		goto out; +	if (unlikely(iph->ttl < inet_sk(sk)->min_ttl)) { +		NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP); +		goto out; +	} +  	icsk = inet_csk(sk);  	tp = tcp_sk(sk);  	seq = ntohl(th->seq);  | 
