Rebuild kernel for 7.0.
[packages/centos6/kernel.git] / fix-do_tcp_sendpages.patch
1 --- a/net/ipv4/tcp.c    2014-10-31 14:27:58.000000000 +0200
2 +++ b/net/ipv4/tcp.c    2015-05-19 15:34:22.078802741 +0300
3 @@ -763,8 +763,8 @@ static int tcp_send_mss(struct sock *sk,
4         return mss_now;
5  }
6  
7 -static ssize_t do_tcp_sendpages(struct sock *sk, struct page **pages, int poffset,
8 -                        size_t psize, int flags)
9 +static ssize_t do_tcp_sendpages(struct sock *sk, struct page *page, int offset,
10 +                               size_t size, int flags)
11  {
12         struct tcp_sock *tp = tcp_sk(sk);
13         int mss_now, size_goal;
14 @@ -786,12 +786,9 @@ static ssize_t do_tcp_sendpages(struct s
15         if (sk->sk_err || (sk->sk_shutdown & SEND_SHUTDOWN))
16                 goto out_err;
17  
18 -       while (psize > 0) {
19 +       while (size > 0) {
20                 struct sk_buff *skb = tcp_write_queue_tail(sk);
21 -               struct page *page = pages[poffset / PAGE_SIZE];
22                 int copy, i, can_coalesce;
23 -               int offset = poffset % PAGE_SIZE;
24 -               int size = min_t(size_t, psize, PAGE_SIZE - offset);
25  
26                 if (!tcp_send_head(sk) || (copy = size_goal - skb->len) <= 0) {
27  new_segment:
28 @@ -840,8 +837,8 @@ new_segment:
29                         TCP_SKB_CB(skb)->flags &= ~TCPCB_FLAG_PSH;
30  
31                 copied += copy;
32 -               poffset += copy;
33 -               if (!(psize -= copy))
34 +               offset += copy;
35 +               if (!(size -= copy))
36                         goto out;
37  
38                 if (skb->len < size_goal || (flags & MSG_OOB))
39 @@ -890,7 +887,7 @@ ssize_t tcp_sendpage(struct socket *sock
40  
41         lock_sock(sk);
42         TCP_CHECK_TIMER(sk);
43 -       res = do_tcp_sendpages(sk, &page, offset, size, flags);
44 +       res = do_tcp_sendpages(sk, page, offset, size, flags);
45         TCP_CHECK_TIMER(sk);
46         release_sock(sk);
47         return res;