tcp: fix tso_should_defer in 64bit
authorIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
Sat, 6 Dec 2008 06:49:37 +0000 (22:49 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sat, 6 Dec 2008 06:56:07 +0000 (22:56 -0800)
Since jiffies is unsigned long, the types get expanded into
that and after long enough time the difference will therefore
always be > 1 (and that probably happens near boot as well as
iirc the first jiffies wrap is scheduler close after boot to
find out problems related to that early).

This was originally noted by Bill Fink in Dec'07 but nobody
never ended fixing it.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_output.c

index e65c114feea237cc8b8ce148bd3b82827e13ea8f..dda42f0bd7a3b986d23be16b6f44c87333af0844 100644 (file)
@@ -1334,7 +1334,7 @@ static int tcp_tso_should_defer(struct sock *sk, struct sk_buff *skb)
 
        /* Defer for less than two clock ticks. */
        if (tp->tso_deferred &&
-           ((jiffies << 1) >> 1) - (tp->tso_deferred >> 1) > 1)
+           (((u32)jiffies << 1) >> 1) - (tp->tso_deferred >> 1) > 1)
                goto send_now;
 
        in_flight = tcp_packets_in_flight(tp);