]> git.pld-linux.org Git - packages/kernel.git/blob - kernel-small_fixes.patch
- up to 4.1.15
[packages/kernel.git] / kernel-small_fixes.patch
1 --- linux-2.6.33/scripts/mod/modpost.c~ 2010-02-24 19:52:17.000000000 +0100
2 +++ linux-2.6.33/scripts/mod/modpost.c  2010-03-07 14:26:47.242168558 +0100
3 @@ -15,7 +15,8 @@
4  #include <stdio.h>
5  #include <ctype.h>
6  #include "modpost.h"
7 -#include "../../include/generated/autoconf.h"
8 +// PLD architectures don't use CONFIG_SYMBOL_PREFIX
9 +//#include "../../include/generated/autoconf.h"
10  #include "../../include/linux/license.h"
11  
12  /* Some toolchains use a `_' prefix for all user symbols. */
13
14 --- linux-3.0/scripts/kconfig/lxdialog/check-lxdialog.sh~       2011-07-22 04:17:23.000000000 +0200
15 +++ linux-3.0/scripts/kconfig/lxdialog/check-lxdialog.sh        2011-08-25 21:26:04.799150642 +0200
16 @@ -9,6 +9,12 @@
17                         $cc -print-file-name=lib${lib}.${ext} | grep -q /
18                         if [ $? -eq 0 ]; then
19                                 echo "-l${lib}"
20 +                               for libt in tinfow tinfo ; do
21 +                                       $cc -print-file-name=lib${libt}.${ext} | grep -q /
22 +                                       if [ $? -eq 0 ]; then
23 +                                               echo "-l${libt}"
24 +                                       fi
25 +                               done
26                                 exit
27                         fi
28                 done
29
30 From 30927520dbae297182990bb21d08762bcc35ce1d Mon Sep 17 00:00:00 2001
31 From: Eric Dumazet <edumazet@google.com>
32 Date: Wed, 9 Sep 2015 21:55:07 -0700
33 Subject: [PATCH] tcp_cubic: better follow cubic curve after idle period
34
35 Jana Iyengar found an interesting issue on CUBIC :
36
37 The epoch is only updated/reset initially and when experiencing losses.
38 The delta "t" of now - epoch_start can be arbitrary large after app idle
39 as well as the bic_target. Consequentially the slope (inverse of
40 ca->cnt) would be really large, and eventually ca->cnt would be
41 lower-bounded in the end to 2 to have delayed-ACK slow-start behavior.
42
43 This particularly shows up when slow_start_after_idle is disabled
44 as a dangerous cwnd inflation (1.5 x RTT) after few seconds of idle
45 time.
46
47 Jana initial fix was to reset epoch_start if app limited,
48 but Neal pointed out it would ask the CUBIC algorithm to recalculate the
49 curve so that we again start growing steeply upward from where cwnd is
50 now (as CUBIC does just after a loss). Ideally we'd want the cwnd growth
51 curve to be the same shape, just shifted later in time by the amount of
52 the idle period.
53
54 Reported-by: Jana Iyengar <jri@google.com>
55 Signed-off-by: Eric Dumazet <edumazet@google.com>
56 Signed-off-by: Yuchung Cheng <ycheng@google.com>
57 Signed-off-by: Neal Cardwell <ncardwell@google.com>
58 Cc: Stephen Hemminger <stephen@networkplumber.org>
59 Cc: Sangtae Ha <sangtae.ha@gmail.com>
60 Cc: Lawrence Brakmo <lawrence@brakmo.org>
61 Signed-off-by: David S. Miller <davem@davemloft.net>
62 ---
63  net/ipv4/tcp_cubic.c | 16 ++++++++++++++++
64  1 file changed, 16 insertions(+)
65
66 diff --git a/net/ipv4/tcp_cubic.c b/net/ipv4/tcp_cubic.c
67 index 28011fb1..c6ded6b 100644
68 --- a/net/ipv4/tcp_cubic.c
69 +++ b/net/ipv4/tcp_cubic.c
70 @@ -151,6 +151,21 @@ static void bictcp_init(struct sock *sk)
71                 tcp_sk(sk)->snd_ssthresh = initial_ssthresh;
72  }
73  
74 +static void bictcp_cwnd_event(struct sock *sk, enum tcp_ca_event event)
75 +{
76 +       if (event == CA_EVENT_TX_START) {
77 +               s32 delta = tcp_time_stamp - tcp_sk(sk)->lsndtime;
78 +               struct bictcp *ca = inet_csk_ca(sk);
79 +
80 +               /* We were application limited (idle) for a while.
81 +                * Shift epoch_start to keep cwnd growth to cubic curve.
82 +                */
83 +               if (ca->epoch_start && delta > 0)
84 +                       ca->epoch_start += delta;
85 +               return;
86 +       }
87 +}
88 +
89  /* calculate the cubic root of x using a table lookup followed by one
90   * Newton-Raphson iteration.
91   * Avg err ~= 0.195%
92 @@ -450,6 +465,7 @@ static struct tcp_congestion_ops cubictcp __read_mostly = {
93         .cong_avoid     = bictcp_cong_avoid,
94         .set_state      = bictcp_state,
95         .undo_cwnd      = bictcp_undo_cwnd,
96 +       .cwnd_event     = bictcp_cwnd_event,
97         .pkts_acked     = bictcp_acked,
98         .owner          = THIS_MODULE,
99         .name           = "cubic",
100  
101 From 7a29ac474a47eb8cf212b45917683ae89d6fa13b Mon Sep 17 00:00:00 2001
102 From: Chris Mason <clm@fb.com>
103 Date: Tue, 10 Nov 2015 10:10:34 +1100
104 Subject: xfs: give all workqueues rescuer threads
105
106 We're consistently hitting deadlocks here with XFS on recent kernels.
107 After some digging through the crash files, it looks like everyone in
108 the system is waiting for XFS to reclaim memory.
109
110 Something like this:
111
112 PID: 2733434  TASK: ffff8808cd242800  CPU: 19  COMMAND: "java"
113  #0 [ffff880019c53588] __schedule at ffffffff818c4df2
114  #1 [ffff880019c535d8] schedule at ffffffff818c5517
115  #2 [ffff880019c535f8] _xfs_log_force_lsn at ffffffff81316348
116  #3 [ffff880019c53688] xfs_log_force_lsn at ffffffff813164fb
117  #4 [ffff880019c536b8] xfs_iunpin_wait at ffffffff8130835e
118  #5 [ffff880019c53728] xfs_reclaim_inode at ffffffff812fd453
119  #6 [ffff880019c53778] xfs_reclaim_inodes_ag at ffffffff812fd8c7
120  #7 [ffff880019c53928] xfs_reclaim_inodes_nr at ffffffff812fe433
121  #8 [ffff880019c53958] xfs_fs_free_cached_objects at ffffffff8130d3b9
122  #9 [ffff880019c53968] super_cache_scan at ffffffff811a6f73
123 #10 [ffff880019c539c8] shrink_slab at ffffffff811460e6
124 #11 [ffff880019c53aa8] shrink_zone at ffffffff8114a53f
125 #12 [ffff880019c53b48] do_try_to_free_pages at ffffffff8114a8ba
126 #13 [ffff880019c53be8] try_to_free_pages at ffffffff8114ad5a
127 #14 [ffff880019c53c78] __alloc_pages_nodemask at ffffffff8113e1b8
128 #15 [ffff880019c53d88] alloc_kmem_pages_node at ffffffff8113e671
129 #16 [ffff880019c53dd8] copy_process at ffffffff8104f781
130 #17 [ffff880019c53ec8] do_fork at ffffffff8105129c
131 #18 [ffff880019c53f38] sys_clone at ffffffff810515b6
132 #19 [ffff880019c53f48] stub_clone at ffffffff818c8e4d
133
134 xfs_log_force_lsn is waiting for logs to get cleaned, which is waiting
135 for IO, which is waiting for workers to complete the IO which is waiting
136 for worker threads that don't exist yet:
137
138 PID: 2752451  TASK: ffff880bd6bdda00  CPU: 37  COMMAND: "kworker/37:1"
139  #0 [ffff8808d20abbb0] __schedule at ffffffff818c4df2
140  #1 [ffff8808d20abc00] schedule at ffffffff818c5517
141  #2 [ffff8808d20abc20] schedule_timeout at ffffffff818c7c6c
142  #3 [ffff8808d20abcc0] wait_for_completion_killable at ffffffff818c6495
143  #4 [ffff8808d20abd30] kthread_create_on_node at ffffffff8106ec82
144  #5 [ffff8808d20abdf0] create_worker at ffffffff8106752f
145  #6 [ffff8808d20abe40] worker_thread at ffffffff810699be
146  #7 [ffff8808d20abec0] kthread at ffffffff8106ef59
147  #8 [ffff8808d20abf50] ret_from_fork at ffffffff818c8ac8
148
149 I think we should be using WQ_MEM_RECLAIM to make sure this thread
150 pool makes progress when we're not able to allocate new workers.
151
152 [dchinner: make all workqueues WQ_MEM_RECLAIM]
153
154 Signed-off-by: Chris Mason <clm@fb.com>
155 Reviewed-by: Dave Chinner <dchinner@redhat.com>
156 Signed-off-by: Dave Chinner <david@fromorbit.com>
157 ---
158  fs/xfs/xfs_super.c | 7 ++++---
159  1 file changed, 4 insertions(+), 3 deletions(-)
160
161 diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
162 index 29531ec..65fbfb7 100644
163 --- a/fs/xfs/xfs_super.c
164 +++ b/fs/xfs/xfs_super.c
165 @@ -838,17 +838,18 @@ xfs_init_mount_workqueues(
166                 goto out_destroy_unwritten;
167  
168         mp->m_reclaim_workqueue = alloc_workqueue("xfs-reclaim/%s",
169 -                       WQ_FREEZABLE, 0, mp->m_fsname);
170 +                       WQ_MEM_RECLAIM|WQ_FREEZABLE, 0, mp->m_fsname);
171         if (!mp->m_reclaim_workqueue)
172                 goto out_destroy_cil;
173  
174         mp->m_log_workqueue = alloc_workqueue("xfs-log/%s",
175 -                       WQ_FREEZABLE|WQ_HIGHPRI, 0, mp->m_fsname);
176 +                       WQ_MEM_RECLAIM|WQ_FREEZABLE|WQ_HIGHPRI, 0,
177 +                       mp->m_fsname);
178         if (!mp->m_log_workqueue)
179                 goto out_destroy_reclaim;
180  
181         mp->m_eofblocks_workqueue = alloc_workqueue("xfs-eofblocks/%s",
182 -                       WQ_FREEZABLE, 0, mp->m_fsname);
183 +                       WQ_MEM_RECLAIM|WQ_FREEZABLE, 0, mp->m_fsname);
184         if (!mp->m_eofblocks_workqueue)
185                 goto out_destroy_log;
186  
187 -- 
188 cgit v0.11.2
189
190 From 09ccfd238e5a0e670d8178cf50180ea81ae09ae1 Mon Sep 17 00:00:00 2001
191 From: WANG Cong <xiyou.wangcong@gmail.com>
192 Date: Mon, 14 Dec 2015 13:48:36 -0800
193 Subject: pptp: verify sockaddr_len in pptp_bind() and pptp_connect()
194
195 Reported-by: Dmitry Vyukov <dvyukov@gmail.com>
196 Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
197 Signed-off-by: David S. Miller <davem@davemloft.net>
198 ---
199  drivers/net/ppp/pptp.c | 6 ++++++
200  1 file changed, 6 insertions(+)
201
202 diff --git a/drivers/net/ppp/pptp.c b/drivers/net/ppp/pptp.c
203 index fc69e41..597c53e 100644
204 --- a/drivers/net/ppp/pptp.c
205 +++ b/drivers/net/ppp/pptp.c
206 @@ -419,6 +419,9 @@ static int pptp_bind(struct socket *sock, struct sockaddr *uservaddr,
207         struct pptp_opt *opt = &po->proto.pptp;
208         int error = 0;
209  
210 +       if (sockaddr_len < sizeof(struct sockaddr_pppox))
211 +               return -EINVAL;
212 +
213         lock_sock(sk);
214  
215         opt->src_addr = sp->sa_addr.pptp;
216 @@ -440,6 +443,9 @@ static int pptp_connect(struct socket *sock, struct sockaddr *uservaddr,
217         struct flowi4 fl4;
218         int error = 0;
219  
220 +       if (sockaddr_len < sizeof(struct sockaddr_pppox))
221 +               return -EINVAL;
222 +
223         if (sp->sa_protocol != PX_PROTO_PPTP)
224                 return -EINVAL;
225  
226 -- 
227 cgit v0.11.2
228
This page took 0.039169 seconds and 3 git commands to generate.