tcp: limit payload size of sacked skbs
[pandora-kernel.git] / net / ipv4 / tcp.c
index 80a9a97..a803bfc 100644 (file)
@@ -2106,6 +2106,10 @@ int tcp_disconnect(struct sock *sk, int flags)
        tcp_set_ca_state(sk, TCP_CA_Open);
        tcp_clear_retrans(tp);
        inet_csk_delack_init(sk);
+       /* Initialize rcv_mss to TCP_MIN_MSS to avoid division by 0
+        * issue in __tcp_select_window()
+        */
+       icsk->icsk_ack.rcv_mss = TCP_MIN_MSS;
        tcp_init_send_head(sk);
        memset(&tp->rx_opt, 0, sizeof(tp->rx_opt));
        __sk_dst_reset(sk);
@@ -3159,6 +3163,7 @@ void __init tcp_init(void)
        int i, max_rshare, max_wshare, cnt;
        unsigned long jiffy = jiffies;
 
+       BUILD_BUG_ON(TCP_MIN_SND_MSS <= MAX_TCP_OPTION_SPACE);
        BUILD_BUG_ON(sizeof(struct tcp_skb_cb) > sizeof(skb->cb));
 
        percpu_counter_init(&tcp_sockets_allocated, 0);