|
|
@@ -409,7 +409,7 @@ static void tcp_options(const struct sk_buff *skb,
|
|
|
if (opsize < 2) /* "silly options" */
|
|
|
return;
|
|
|
if (opsize > length)
|
|
|
- break; /* don't parse partial options */
|
|
|
+ return; /* don't parse partial options */
|
|
|
|
|
|
if (opcode == TCPOPT_SACK_PERM
|
|
|
&& opsize == TCPOLEN_SACK_PERM)
|
|
|
@@ -447,7 +447,7 @@ static void tcp_sack(const struct sk_buff *skb, unsigned int dataoff,
|
|
|
BUG_ON(ptr == NULL);
|
|
|
|
|
|
/* Fast path for timestamp-only option */
|
|
|
- if (length == TCPOLEN_TSTAMP_ALIGNED*4
|
|
|
+ if (length == TCPOLEN_TSTAMP_ALIGNED
|
|
|
&& *(__be32 *)ptr == htonl((TCPOPT_NOP << 24)
|
|
|
| (TCPOPT_NOP << 16)
|
|
|
| (TCPOPT_TIMESTAMP << 8)
|
|
|
@@ -469,7 +469,7 @@ static void tcp_sack(const struct sk_buff *skb, unsigned int dataoff,
|
|
|
if (opsize < 2) /* "silly options" */
|
|
|
return;
|
|
|
if (opsize > length)
|
|
|
- break; /* don't parse partial options */
|
|
|
+ return; /* don't parse partial options */
|
|
|
|
|
|
if (opcode == TCPOPT_SACK
|
|
|
&& opsize >= (TCPOLEN_SACK_BASE
|