lkml.org 
[lkml]   [2007]   [Oct]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 12/26] : Fix TCP initial sequence number selection.
    2.6.22-stable review patch.  If anyone has any objections, please let us
    know.

    ------------------
    From: Eric Dumazet <dada1@cosmosbay.com>

    changeset 162f6690a65075b49f242d3c8cdb5caaa959a060 in mainline.

    TCP V4 sequence numbers are 32bits, and RFC 793 assumed a 250 KHz clock.
    In order to follow network speed increase, we can use a faster clock, but
    we should limit this clock so that the delay between two rollovers is
    greater than MSL (TCP Maximum Segment Lifetime : 2 minutes)

    Choosing a 64 nsec clock should be OK, since the rollovers occur every
    274 seconds.

    Problem spotted by Denys Fedoryshchenko

    [ This bug was introduced by f85958151900f9d30fa5ff941b0ce71eaa45a7de ]

    Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/char/random.c | 10 ++++++----
    1 file changed, 6 insertions(+), 4 deletions(-)

    --- a/drivers/char/random.c
    +++ b/drivers/char/random.c
    @@ -1550,11 +1550,13 @@ __u32 secure_tcp_sequence_number(__be32
    * As close as possible to RFC 793, which
    * suggests using a 250 kHz clock.
    * Further reading shows this assumes 2 Mb/s networks.
    - * For 10 Gb/s Ethernet, a 1 GHz clock is appropriate.
    - * That's funny, Linux has one built in! Use it!
    - * (Networks are faster now - should this be increased?)
    + * For 10 Mb/s Ethernet, a 1 MHz clock is appropriate.
    + * For 10 Gb/s Ethernet, a 1 GHz clock should be ok, but
    + * we also need to limit the resolution so that the u32 seq
    + * overlaps less than one time per MSL (2 minutes).
    + * Choosing a clock of 64 ns period is OK. (period of 274 s)
    */
    - seq += ktime_get_real().tv64;
    + seq += ktime_get_real().tv64 >> 6;
    #if 0
    printk("init_seq(%lx, %lx, %d, %d) = %d\n",
    saddr, daddr, sport, dport, seq);
    --
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-10-31 16:31    [W:0.022 / U:32.340 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site