TCP SYNs broken in 2.3.41

Russell King rmk en arm.linux.org.uk
Dom Ene 30 14:57:35 CST 2000


Hi,

I've just been investigating why TCP SYNs from an ARM box running 2.3.41
seem to be corrupted.  Some bytes in the packet seem to be offset by 3,
others by 2.

Only TCP SYNs are affected by this.  The reason appears to be caused by
a skb_reserve in tcp_output.c:tcp_connect() causing the skbuff data pointer
to become unaligned.  The following patch clears this up, allow the TCP
header to be aligned again:

--- linux/net/ipv4/tcp_output.c	Sat Jan 29 23:45:46 2000
+++ linux-ebsa285/net/ipv4/tcp_output.c	Sun Jan 30 16:25:42 2000
@@ -1005,7 +1005,7 @@
 	struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp);
 
 	/* Reserve space for headers. */
-	skb_reserve(buff, MAX_TCP_HEADER + 15);
+	skb_reserve(buff, MAX_TCP_HEADER);
 
 	/* We'll fix this up when we get a response from the other end.
 	 * See tcp_input.c:tcp_rcv_state_process case TCP_SYN_SENT.

Why is this '+ 15' here anyway?  Can someone shed some enlightenment on it?
Also, can this go into the kernel for 2.3.42 please?
   _____
  |_____| ------------------------------------------------- ---+---+-
  |   |         Russell King        rmk en arm.linux.org.uk      --- ---
  | | | |   http://www.arm.linux.org.uk/~rmk/aboutme.html    /  /  |
  | +-+-+                                                     --- -+-
  /   |               THE developer of ARM Linux              |+| /|\
 /  | | |                                                     ---  |
    +-+-+ -------------------------------------------------  /\\\  |

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo en vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



Más información sobre la lista de distribución Ayuda