]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - net/ipv4/tcp_output.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit...
[mv-sheeva.git] / net / ipv4 / tcp_output.c
index 4a1605d3f909666321b6b6c1684354bbc58a22f6..0dda86e72ad8b6d60e24d62128ccadf7ae65a0fe 100644 (file)
@@ -37,6 +37,7 @@
 #include <net/tcp.h>
 
 #include <linux/compiler.h>
+#include <linux/gfp.h>
 #include <linux/module.h>
 
 /* People can turn this off for buggy TCP's found in printers etc. */
@@ -2395,13 +2396,17 @@ struct sk_buff *tcp_make_synack(struct sock *sk, struct dst_entry *dst,
        struct tcp_extend_values *xvp = tcp_xv(rvp);
        struct inet_request_sock *ireq = inet_rsk(req);
        struct tcp_sock *tp = tcp_sk(sk);
+       const struct tcp_cookie_values *cvp = tp->cookie_values;
        struct tcphdr *th;
        struct sk_buff *skb;
        struct tcp_md5sig_key *md5;
        int tcp_header_size;
        int mss;
+       int s_data_desired = 0;
 
-       skb = sock_wmalloc(sk, MAX_TCP_HEADER + 15, 1, GFP_ATOMIC);
+       if (cvp != NULL && cvp->s_data_constant && cvp->s_data_desired)
+               s_data_desired = cvp->s_data_desired;
+       skb = sock_wmalloc(sk, MAX_TCP_HEADER + 15 + s_data_desired, 1, GFP_ATOMIC);
        if (skb == NULL)
                return NULL;
 
@@ -2457,16 +2462,12 @@ struct sk_buff *tcp_make_synack(struct sock *sk, struct dst_entry *dst,
                             TCPCB_FLAG_SYN | TCPCB_FLAG_ACK);
 
        if (OPTION_COOKIE_EXTENSION & opts.options) {
-               const struct tcp_cookie_values *cvp = tp->cookie_values;
-
-               if (cvp != NULL &&
-                   cvp->s_data_constant &&
-                   cvp->s_data_desired > 0) {
-                       u8 *buf = skb_put(skb, cvp->s_data_desired);
+               if (s_data_desired) {
+                       u8 *buf = skb_put(skb, s_data_desired);
 
                        /* copy data directly from the listening socket. */
-                       memcpy(buf, cvp->s_data_payload, cvp->s_data_desired);
-                       TCP_SKB_CB(skb)->end_seq += cvp->s_data_desired;
+                       memcpy(buf, cvp->s_data_payload, s_data_desired);
+                       TCP_SKB_CB(skb)->end_seq += s_data_desired;
                }
 
                if (opts.hash_size > 0) {