1 |
commit: 94139e45a98575a57447fac3045d8f74b6108422 |
2 |
Author: Anthony G. Basile <blueness <AT> gentoo <DOT> org> |
3 |
AuthorDate: Tue Jul 8 20:15:22 2014 +0000 |
4 |
Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org> |
5 |
CommitDate: Tue Jul 8 20:15:22 2014 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/hardened-patchset.git;a=commit;h=94139e45 |
7 |
|
8 |
Grsec/PaX: 3.0-{3.2.60,3.14.11,3.15.4}-201407072046 |
9 |
|
10 |
--- |
11 |
{3.14.10 => 3.14.11}/0000_README | 2 +- |
12 |
.../4420_grsecurity-3.0-3.14.11-201407072045.patch | 178 +++++++----------- |
13 |
.../4425_grsec_remove_EI_PAX.patch | 0 |
14 |
.../4427_force_XATTR_PAX_tmpfs.patch | 0 |
15 |
.../4430_grsec-remove-localversion-grsec.patch | 0 |
16 |
.../4435_grsec-mute-warnings.patch | 0 |
17 |
.../4440_grsec-remove-protected-paths.patch | 0 |
18 |
.../4450_grsec-kconfig-default-gids.patch | 0 |
19 |
.../4465_selinux-avc_audit-log-curr_ip.patch | 0 |
20 |
.../4470_disable-compat_vdso.patch | 0 |
21 |
.../4475_emutramp_default_on.patch | 0 |
22 |
{3.15.3 => 3.15.4}/0000_README | 0 |
23 |
.../4420_grsecurity-3.0-3.15.4-201407072046.patch | 207 +++++++++------------ |
24 |
{3.15.3 => 3.15.4}/4425_grsec_remove_EI_PAX.patch | 0 |
25 |
.../4427_force_XATTR_PAX_tmpfs.patch | 0 |
26 |
.../4430_grsec-remove-localversion-grsec.patch | 0 |
27 |
{3.15.3 => 3.15.4}/4435_grsec-mute-warnings.patch | 0 |
28 |
.../4440_grsec-remove-protected-paths.patch | 0 |
29 |
.../4450_grsec-kconfig-default-gids.patch | 0 |
30 |
.../4465_selinux-avc_audit-log-curr_ip.patch | 0 |
31 |
{3.15.3 => 3.15.4}/4470_disable-compat_vdso.patch | 0 |
32 |
{3.15.3 => 3.15.4}/4475_emutramp_default_on.patch | 0 |
33 |
3.2.60/0000_README | 2 +- |
34 |
... 4420_grsecurity-3.0-3.2.60-201407072042.patch} | 51 +++-- |
35 |
24 files changed, 197 insertions(+), 243 deletions(-) |
36 |
|
37 |
diff --git a/3.14.10/0000_README b/3.14.11/0000_README |
38 |
similarity index 96% |
39 |
rename from 3.14.10/0000_README |
40 |
rename to 3.14.11/0000_README |
41 |
index 7edf2bb..4a9468b 100644 |
42 |
--- a/3.14.10/0000_README |
43 |
+++ b/3.14.11/0000_README |
44 |
@@ -2,7 +2,7 @@ README |
45 |
----------------------------------------------------------------------------- |
46 |
Individual Patch Descriptions: |
47 |
----------------------------------------------------------------------------- |
48 |
-Patch: 4420_grsecurity-3.0-3.14.10-201407052031.patch |
49 |
+Patch: 4420_grsecurity-3.0-3.14.11-201407072045.patch |
50 |
From: http://www.grsecurity.net |
51 |
Desc: hardened-sources base patch from upstream grsecurity |
52 |
|
53 |
|
54 |
diff --git a/3.14.10/4420_grsecurity-3.0-3.14.10-201407052031.patch b/3.14.11/4420_grsecurity-3.0-3.14.11-201407072045.patch |
55 |
similarity index 99% |
56 |
rename from 3.14.10/4420_grsecurity-3.0-3.14.10-201407052031.patch |
57 |
rename to 3.14.11/4420_grsecurity-3.0-3.14.11-201407072045.patch |
58 |
index 5cd674b..a883f75 100644 |
59 |
--- a/3.14.10/4420_grsecurity-3.0-3.14.10-201407052031.patch |
60 |
+++ b/3.14.11/4420_grsecurity-3.0-3.14.11-201407072045.patch |
61 |
@@ -287,7 +287,7 @@ index 7116fda..d8ed6e8 100644 |
62 |
|
63 |
pcd. [PARIDE] |
64 |
diff --git a/Makefile b/Makefile |
65 |
-index bd5d673..00eaa40 100644 |
66 |
+index f1bbec5..d78810b 100644 |
67 |
--- a/Makefile |
68 |
+++ b/Makefile |
69 |
@@ -244,8 +244,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ |
70 |
@@ -16136,7 +16136,7 @@ index 69bbb48..32517fe 100644 |
71 |
|
72 |
#define smp_load_acquire(p) \ |
73 |
diff --git a/arch/x86/include/asm/bitops.h b/arch/x86/include/asm/bitops.h |
74 |
-index 9fc1af7..fc71228 100644 |
75 |
+index 9fc1af7..776d75a 100644 |
76 |
--- a/arch/x86/include/asm/bitops.h |
77 |
+++ b/arch/x86/include/asm/bitops.h |
78 |
@@ -49,7 +49,7 @@ |
79 |
@@ -16216,7 +16216,7 @@ index 9fc1af7..fc71228 100644 |
80 |
*/ |
81 |
#ifdef CONFIG_X86_64 |
82 |
-static __always_inline int fls64(__u64 x) |
83 |
-+static __always_inline long fls64(__u64 x) |
84 |
++static __always_inline __intentional_overflow(-1) int fls64(__u64 x) |
85 |
{ |
86 |
int bitpos = -1; |
87 |
/* |
88 |
@@ -18734,7 +18734,7 @@ index fdedd38..95c02c2 100644 |
89 |
void df_debug(struct pt_regs *regs, long error_code); |
90 |
#endif /* _ASM_X86_PROCESSOR_H */ |
91 |
diff --git a/arch/x86/include/asm/ptrace.h b/arch/x86/include/asm/ptrace.h |
92 |
-index 14fd6fd..b31a4a4 100644 |
93 |
+index 6205f0c..b31a4a4 100644 |
94 |
--- a/arch/x86/include/asm/ptrace.h |
95 |
+++ b/arch/x86/include/asm/ptrace.h |
96 |
@@ -84,28 +84,29 @@ static inline unsigned long regs_return_value(struct pt_regs *regs) |
97 |
@@ -18807,29 +18807,6 @@ index 14fd6fd..b31a4a4 100644 |
98 |
#endif |
99 |
return *(unsigned long *)((unsigned long)regs + offset); |
100 |
} |
101 |
-@@ -231,6 +235,22 @@ static inline unsigned long regs_get_kernel_stack_nth(struct pt_regs *regs, |
102 |
- |
103 |
- #define ARCH_HAS_USER_SINGLE_STEP_INFO |
104 |
- |
105 |
-+/* |
106 |
-+ * When hitting ptrace_stop(), we cannot return using SYSRET because |
107 |
-+ * that does not restore the full CPU state, only a minimal set. The |
108 |
-+ * ptracer can change arbitrary register values, which is usually okay |
109 |
-+ * because the usual ptrace stops run off the signal delivery path which |
110 |
-+ * forces IRET; however, ptrace_event() stops happen in arbitrary places |
111 |
-+ * in the kernel and don't force IRET path. |
112 |
-+ * |
113 |
-+ * So force IRET path after a ptrace stop. |
114 |
-+ */ |
115 |
-+#define arch_ptrace_stop_needed(code, info) \ |
116 |
-+({ \ |
117 |
-+ set_thread_flag(TIF_NOTIFY_RESUME); \ |
118 |
-+ false; \ |
119 |
-+}) |
120 |
-+ |
121 |
- struct user_desc; |
122 |
- extern int do_get_thread_area(struct task_struct *p, int idx, |
123 |
- struct user_desc __user *info); |
124 |
diff --git a/arch/x86/include/asm/realmode.h b/arch/x86/include/asm/realmode.h |
125 |
index 9c6b890..5305f53 100644 |
126 |
--- a/arch/x86/include/asm/realmode.h |
127 |
@@ -26887,7 +26864,7 @@ index 9c0280f..5bbb1c0 100644 |
128 |
ip = *(u64 *)(fp+8); |
129 |
if (!in_sched_functions(ip)) |
130 |
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c |
131 |
-index 7461f50..1334029 100644 |
132 |
+index 7461f50..01d0b9c 100644 |
133 |
--- a/arch/x86/kernel/ptrace.c |
134 |
+++ b/arch/x86/kernel/ptrace.c |
135 |
@@ -184,14 +184,13 @@ unsigned long kernel_stack_pointer(struct pt_regs *regs) |
136 |
@@ -26909,7 +26886,28 @@ index 7461f50..1334029 100644 |
137 |
|
138 |
return (unsigned long)regs; |
139 |
} |
140 |
-@@ -588,7 +587,7 @@ static void ptrace_triggered(struct perf_event *bp, |
141 |
+@@ -452,6 +451,20 @@ static int putreg(struct task_struct *child, |
142 |
+ if (child->thread.gs != value) |
143 |
+ return do_arch_prctl(child, ARCH_SET_GS, value); |
144 |
+ return 0; |
145 |
++ |
146 |
++ case offsetof(struct user_regs_struct,ip): |
147 |
++ /* |
148 |
++ * Protect against any attempt to set ip to an |
149 |
++ * impossible address. There are dragons lurking if the |
150 |
++ * address is noncanonical. (This explicitly allows |
151 |
++ * setting ip to TASK_SIZE_MAX, because user code can do |
152 |
++ * that all by itself by running off the end of its |
153 |
++ * address space. |
154 |
++ */ |
155 |
++ if (value > TASK_SIZE_MAX) |
156 |
++ return -EIO; |
157 |
++ break; |
158 |
++ |
159 |
+ #endif |
160 |
+ } |
161 |
+ |
162 |
+@@ -588,7 +601,7 @@ static void ptrace_triggered(struct perf_event *bp, |
163 |
static unsigned long ptrace_get_dr7(struct perf_event *bp[]) |
164 |
{ |
165 |
int i; |
166 |
@@ -26918,7 +26916,7 @@ index 7461f50..1334029 100644 |
167 |
struct arch_hw_breakpoint *info; |
168 |
|
169 |
for (i = 0; i < HBP_NUM; i++) { |
170 |
-@@ -822,7 +821,7 @@ long arch_ptrace(struct task_struct *child, long request, |
171 |
+@@ -822,7 +835,7 @@ long arch_ptrace(struct task_struct *child, long request, |
172 |
unsigned long addr, unsigned long data) |
173 |
{ |
174 |
int ret; |
175 |
@@ -26927,7 +26925,7 @@ index 7461f50..1334029 100644 |
176 |
|
177 |
switch (request) { |
178 |
/* read the word at location addr in the USER area. */ |
179 |
-@@ -907,14 +906,14 @@ long arch_ptrace(struct task_struct *child, long request, |
180 |
+@@ -907,14 +920,14 @@ long arch_ptrace(struct task_struct *child, long request, |
181 |
if ((int) addr < 0) |
182 |
return -EIO; |
183 |
ret = do_get_thread_area(child, addr, |
184 |
@@ -26944,7 +26942,7 @@ index 7461f50..1334029 100644 |
185 |
break; |
186 |
#endif |
187 |
|
188 |
-@@ -1292,7 +1291,7 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request, |
189 |
+@@ -1292,7 +1305,7 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request, |
190 |
|
191 |
#ifdef CONFIG_X86_64 |
192 |
|
193 |
@@ -26953,7 +26951,7 @@ index 7461f50..1334029 100644 |
194 |
[REGSET_GENERAL] = { |
195 |
.core_note_type = NT_PRSTATUS, |
196 |
.n = sizeof(struct user_regs_struct) / sizeof(long), |
197 |
-@@ -1333,7 +1332,7 @@ static const struct user_regset_view user_x86_64_view = { |
198 |
+@@ -1333,7 +1346,7 @@ static const struct user_regset_view user_x86_64_view = { |
199 |
#endif /* CONFIG_X86_64 */ |
200 |
|
201 |
#if defined CONFIG_X86_32 || defined CONFIG_IA32_EMULATION |
202 |
@@ -26962,7 +26960,7 @@ index 7461f50..1334029 100644 |
203 |
[REGSET_GENERAL] = { |
204 |
.core_note_type = NT_PRSTATUS, |
205 |
.n = sizeof(struct user_regs_struct32) / sizeof(u32), |
206 |
-@@ -1386,7 +1385,7 @@ static const struct user_regset_view user_x86_32_view = { |
207 |
+@@ -1386,7 +1399,7 @@ static const struct user_regset_view user_x86_32_view = { |
208 |
*/ |
209 |
u64 xstate_fx_sw_bytes[USER_XSTATE_FX_SW_WORDS]; |
210 |
|
211 |
@@ -26971,7 +26969,7 @@ index 7461f50..1334029 100644 |
212 |
{ |
213 |
#ifdef CONFIG_X86_64 |
214 |
x86_64_regsets[REGSET_XSTATE].n = size / sizeof(u64); |
215 |
-@@ -1421,7 +1420,7 @@ static void fill_sigtrap_info(struct task_struct *tsk, |
216 |
+@@ -1421,7 +1434,7 @@ static void fill_sigtrap_info(struct task_struct *tsk, |
217 |
memset(info, 0, sizeof(*info)); |
218 |
info->si_signo = SIGTRAP; |
219 |
info->si_code = si_code; |
220 |
@@ -26980,7 +26978,7 @@ index 7461f50..1334029 100644 |
221 |
} |
222 |
|
223 |
void user_single_step_siginfo(struct task_struct *tsk, |
224 |
-@@ -1450,6 +1449,10 @@ void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs, |
225 |
+@@ -1450,6 +1463,10 @@ void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs, |
226 |
# define IS_IA32 0 |
227 |
#endif |
228 |
|
229 |
@@ -26991,7 +26989,7 @@ index 7461f50..1334029 100644 |
230 |
/* |
231 |
* We must return the syscall number to actually look up in the table. |
232 |
* This can be -1L to skip running any syscall at all. |
233 |
-@@ -1460,6 +1463,11 @@ long syscall_trace_enter(struct pt_regs *regs) |
234 |
+@@ -1460,6 +1477,11 @@ long syscall_trace_enter(struct pt_regs *regs) |
235 |
|
236 |
user_exit(); |
237 |
|
238 |
@@ -27003,7 +27001,7 @@ index 7461f50..1334029 100644 |
239 |
/* |
240 |
* If we stepped into a sysenter/syscall insn, it trapped in |
241 |
* kernel mode; do_debug() cleared TF and set TIF_SINGLESTEP. |
242 |
-@@ -1515,6 +1523,11 @@ void syscall_trace_leave(struct pt_regs *regs) |
243 |
+@@ -1515,6 +1537,11 @@ void syscall_trace_leave(struct pt_regs *regs) |
244 |
*/ |
245 |
user_exit(); |
246 |
|
247 |
@@ -47099,6 +47097,19 @@ index a2515887..6d13233 100644 |
248 |
dev->net->dev_addr[ETH_ALEN-1] = ifacenum; |
249 |
|
250 |
/* we will have to manufacture ethernet headers, prepare template */ |
251 |
+diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c |
252 |
+index 841b608..198a8b7 100644 |
253 |
+--- a/drivers/net/virtio_net.c |
254 |
++++ b/drivers/net/virtio_net.c |
255 |
+@@ -47,7 +47,7 @@ module_param(gso, bool, 0444); |
256 |
+ #define RECEIVE_AVG_WEIGHT 64 |
257 |
+ |
258 |
+ /* Minimum alignment for mergeable packet buffers. */ |
259 |
+-#define MERGEABLE_BUFFER_ALIGN max(L1_CACHE_BYTES, 256) |
260 |
++#define MERGEABLE_BUFFER_ALIGN max(L1_CACHE_BYTES, 256UL) |
261 |
+ |
262 |
+ #define VIRTNET_DRIVER_VERSION "1.0.0" |
263 |
+ |
264 |
diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c |
265 |
index 40ad25d..8703023 100644 |
266 |
--- a/drivers/net/vxlan.c |
267 |
@@ -50909,10 +50920,10 @@ index 24884ca..26c8220 100644 |
268 |
login->tgt_agt = sbp_target_agent_register(login); |
269 |
if (IS_ERR(login->tgt_agt)) { |
270 |
diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c |
271 |
-index 26416c1..e796a3d 100644 |
272 |
+index 6ea95d2..88607b4 100644 |
273 |
--- a/drivers/target/target_core_device.c |
274 |
+++ b/drivers/target/target_core_device.c |
275 |
-@@ -1524,7 +1524,7 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name) |
276 |
+@@ -1525,7 +1525,7 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name) |
277 |
spin_lock_init(&dev->se_tmr_lock); |
278 |
spin_lock_init(&dev->qf_cmd_lock); |
279 |
sema_init(&dev->caw_sem, 1); |
280 |
@@ -62806,7 +62817,7 @@ index f4ccfe6..a5cf064 100644 |
281 |
static struct callback_op callback_ops[]; |
282 |
|
283 |
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c |
284 |
-index 360114a..ac6e265 100644 |
285 |
+index 15f9d98..082c625 100644 |
286 |
--- a/fs/nfs/inode.c |
287 |
+++ b/fs/nfs/inode.c |
288 |
@@ -1189,16 +1189,16 @@ static int nfs_size_need_update(const struct inode *inode, const struct nfs_fatt |
289 |
@@ -62843,7 +62854,7 @@ index 9a914e8..e89c0ea 100644 |
290 |
static struct nfsd4_operation nfsd4_ops[]; |
291 |
|
292 |
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c |
293 |
-index 16e8fa7..b0803f6 100644 |
294 |
+index bc11bf6..324b058 100644 |
295 |
--- a/fs/nfsd/nfs4xdr.c |
296 |
+++ b/fs/nfsd/nfs4xdr.c |
297 |
@@ -1531,7 +1531,7 @@ nfsd4_decode_notsupp(struct nfsd4_compoundargs *argp, void *p) |
298 |
@@ -82100,20 +82111,6 @@ index 34a1e10..70f6bde 100644 |
299 |
|
300 |
struct proc_ns { |
301 |
void *ns; |
302 |
-diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h |
303 |
-index 077904c..cc79eff 100644 |
304 |
---- a/include/linux/ptrace.h |
305 |
-+++ b/include/linux/ptrace.h |
306 |
-@@ -334,6 +334,9 @@ static inline void user_single_step_siginfo(struct task_struct *tsk, |
307 |
- * calling arch_ptrace_stop() when it would be superfluous. For example, |
308 |
- * if the thread has not been back to user mode since the last stop, the |
309 |
- * thread state might indicate that nothing needs to be done. |
310 |
-+ * |
311 |
-+ * This is guaranteed to be invoked once before a task stops for ptrace and |
312 |
-+ * may include arch-specific operations necessary prior to a ptrace stop. |
313 |
- */ |
314 |
- #define arch_ptrace_stop_needed(code, info) (0) |
315 |
- #endif |
316 |
diff --git a/include/linux/quota.h b/include/linux/quota.h |
317 |
index cc7494a..1e27036 100644 |
318 |
--- a/include/linux/quota.h |
319 |
@@ -86755,7 +86752,7 @@ index 81b3d67..ef189a4 100644 |
320 |
{ |
321 |
struct signal_struct *sig = current->signal; |
322 |
diff --git a/kernel/fork.c b/kernel/fork.c |
323 |
-index 45da005c..6581b2b 100644 |
324 |
+index c44bff8..a3c5876 100644 |
325 |
--- a/kernel/fork.c |
326 |
+++ b/kernel/fork.c |
327 |
@@ -180,6 +180,48 @@ void thread_info_cache_init(void) |
328 |
@@ -87137,7 +87134,7 @@ index 45da005c..6581b2b 100644 |
329 |
if (likely(p->pid)) { |
330 |
ptrace_init_task(p, (clone_flags & CLONE_PTRACE) || trace); |
331 |
|
332 |
-@@ -1537,6 +1647,8 @@ bad_fork_cleanup_count: |
333 |
+@@ -1539,6 +1649,8 @@ bad_fork_cleanup_count: |
334 |
bad_fork_free: |
335 |
free_task(p); |
336 |
fork_out: |
337 |
@@ -87146,7 +87143,7 @@ index 45da005c..6581b2b 100644 |
338 |
return ERR_PTR(retval); |
339 |
} |
340 |
|
341 |
-@@ -1598,6 +1710,7 @@ long do_fork(unsigned long clone_flags, |
342 |
+@@ -1600,6 +1712,7 @@ long do_fork(unsigned long clone_flags, |
343 |
|
344 |
p = copy_process(clone_flags, stack_start, stack_size, |
345 |
child_tidptr, NULL, trace); |
346 |
@@ -87154,7 +87151,7 @@ index 45da005c..6581b2b 100644 |
347 |
/* |
348 |
* Do this prior waking up the new thread - the thread pointer |
349 |
* might get invalid after that point, if the thread exits quickly. |
350 |
-@@ -1614,6 +1727,8 @@ long do_fork(unsigned long clone_flags, |
351 |
+@@ -1616,6 +1729,8 @@ long do_fork(unsigned long clone_flags, |
352 |
if (clone_flags & CLONE_PARENT_SETTID) |
353 |
put_user(nr, parent_tidptr); |
354 |
|
355 |
@@ -87163,7 +87160,7 @@ index 45da005c..6581b2b 100644 |
356 |
if (clone_flags & CLONE_VFORK) { |
357 |
p->vfork_done = &vfork; |
358 |
init_completion(&vfork); |
359 |
-@@ -1732,7 +1847,7 @@ void __init proc_caches_init(void) |
360 |
+@@ -1734,7 +1849,7 @@ void __init proc_caches_init(void) |
361 |
mm_cachep = kmem_cache_create("mm_struct", |
362 |
sizeof(struct mm_struct), ARCH_MIN_MMSTRUCT_ALIGN, |
363 |
SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_NOTRACK, NULL); |
364 |
@@ -87172,7 +87169,7 @@ index 45da005c..6581b2b 100644 |
365 |
mmap_init(); |
366 |
nsproxy_cache_init(); |
367 |
} |
368 |
-@@ -1772,7 +1887,7 @@ static int unshare_fs(unsigned long unshare_flags, struct fs_struct **new_fsp) |
369 |
+@@ -1774,7 +1889,7 @@ static int unshare_fs(unsigned long unshare_flags, struct fs_struct **new_fsp) |
370 |
return 0; |
371 |
|
372 |
/* don't need lock here; in the worst case we'll do useless copy */ |
373 |
@@ -87181,7 +87178,7 @@ index 45da005c..6581b2b 100644 |
374 |
return 0; |
375 |
|
376 |
*new_fsp = copy_fs_struct(fs); |
377 |
-@@ -1879,7 +1994,8 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags) |
378 |
+@@ -1881,7 +1996,8 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags) |
379 |
fs = current->fs; |
380 |
spin_lock(&fs->lock); |
381 |
current->fs = new_fs; |
382 |
@@ -91701,10 +91698,10 @@ index fc4da2d..f3e800b 100644 |
383 |
*data_page = bpage; |
384 |
|
385 |
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c |
386 |
-index 24c1f23..781fd73f 100644 |
387 |
+index f0831c22..4b19cb3 100644 |
388 |
--- a/kernel/trace/trace.c |
389 |
+++ b/kernel/trace/trace.c |
390 |
-@@ -3399,7 +3399,7 @@ int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set) |
391 |
+@@ -3400,7 +3400,7 @@ int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set) |
392 |
return 0; |
393 |
} |
394 |
|
395 |
@@ -91894,7 +91891,7 @@ index 4f69f9a..7c6f8f8 100644 |
396 |
memcpy(&uts_table, table, sizeof(uts_table)); |
397 |
uts_table.data = get_uts(table, write); |
398 |
diff --git a/kernel/watchdog.c b/kernel/watchdog.c |
399 |
-index 4431610..4265616 100644 |
400 |
+index c9b6f01..37781d9 100644 |
401 |
--- a/kernel/watchdog.c |
402 |
+++ b/kernel/watchdog.c |
403 |
@@ -475,7 +475,7 @@ static int watchdog_nmi_enable(unsigned int cpu) { return 0; } |
404 |
@@ -92442,37 +92439,6 @@ index c24c2f7..f0296f4 100644 |
405 |
+ pax_close_kernel(); |
406 |
+} |
407 |
+EXPORT_SYMBOL(pax_list_del_rcu); |
408 |
-diff --git a/lib/lz4/lz4_decompress.c b/lib/lz4/lz4_decompress.c |
409 |
-index b74da44..7a85967 100644 |
410 |
---- a/lib/lz4/lz4_decompress.c |
411 |
-+++ b/lib/lz4/lz4_decompress.c |
412 |
-@@ -192,6 +192,8 @@ static int lz4_uncompress_unknownoutputsize(const char *source, char *dest, |
413 |
- int s = 255; |
414 |
- while ((ip < iend) && (s == 255)) { |
415 |
- s = *ip++; |
416 |
-+ if (unlikely(length > (size_t)(length + s))) |
417 |
-+ goto _output_error; |
418 |
- length += s; |
419 |
- } |
420 |
- } |
421 |
-@@ -232,6 +234,8 @@ static int lz4_uncompress_unknownoutputsize(const char *source, char *dest, |
422 |
- if (length == ML_MASK) { |
423 |
- while (ip < iend) { |
424 |
- int s = *ip++; |
425 |
-+ if (unlikely(length > (size_t)(length + s))) |
426 |
-+ goto _output_error; |
427 |
- length += s; |
428 |
- if (s == 255) |
429 |
- continue; |
430 |
-@@ -284,7 +288,7 @@ static int lz4_uncompress_unknownoutputsize(const char *source, char *dest, |
431 |
- |
432 |
- /* write overflow error detected */ |
433 |
- _output_error: |
434 |
-- return (int) (-(((char *) ip) - source)); |
435 |
-+ return -1; |
436 |
- } |
437 |
- |
438 |
- int lz4_decompress(const unsigned char *src, size_t *src_len, |
439 |
diff --git a/lib/percpu-refcount.c b/lib/percpu-refcount.c |
440 |
index 963b703..438bc51 100644 |
441 |
--- a/lib/percpu-refcount.c |
442 |
@@ -101804,7 +101770,7 @@ index a8eb0a8..86f2de4 100644 |
443 |
|
444 |
if (!todrop_rate[i]) return 0; |
445 |
diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c |
446 |
-index 4f26ee4..6a9d7c3 100644 |
447 |
+index 3d2d2c8..c87e4d3 100644 |
448 |
--- a/net/netfilter/ipvs/ip_vs_core.c |
449 |
+++ b/net/netfilter/ipvs/ip_vs_core.c |
450 |
@@ -567,7 +567,7 @@ int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb, |
451 |
@@ -101816,7 +101782,7 @@ index 4f26ee4..6a9d7c3 100644 |
452 |
ip_vs_conn_put(cp); |
453 |
return ret; |
454 |
} |
455 |
-@@ -1706,7 +1706,7 @@ ip_vs_in(unsigned int hooknum, struct sk_buff *skb, int af) |
456 |
+@@ -1711,7 +1711,7 @@ ip_vs_in(unsigned int hooknum, struct sk_buff *skb, int af) |
457 |
if (cp->flags & IP_VS_CONN_F_ONE_PACKET) |
458 |
pkts = sysctl_sync_threshold(ipvs); |
459 |
else |
460 |
@@ -101994,7 +101960,7 @@ index a4b5e2a..13b1de3 100644 |
461 |
table = kmemdup(acct_sysctl_table, sizeof(acct_sysctl_table), |
462 |
GFP_KERNEL); |
463 |
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c |
464 |
-index 356bef5..99932cb 100644 |
465 |
+index 356bef5..163b56a 100644 |
466 |
--- a/net/netfilter/nf_conntrack_core.c |
467 |
+++ b/net/netfilter/nf_conntrack_core.c |
468 |
@@ -1627,6 +1627,10 @@ void nf_conntrack_init_end(void) |
469 |
@@ -102013,7 +101979,7 @@ index 356bef5..99932cb 100644 |
470 |
} |
471 |
|
472 |
+#ifdef CONFIG_GRKERNSEC_HIDESYM |
473 |
-+ net->ct.slabname = kasprintf(GFP_KERNEL, "nf_conntrack_%08lx", atomic_inc_return_unchecked(&conntrack_cache_id)); |
474 |
++ net->ct.slabname = kasprintf(GFP_KERNEL, "nf_conntrack_%08x", atomic_inc_return_unchecked(&conntrack_cache_id)); |
475 |
+#else |
476 |
net->ct.slabname = kasprintf(GFP_KERNEL, "nf_conntrack_%p", net); |
477 |
+#endif |
478 |
@@ -114733,7 +114699,7 @@ index 0000000..4378111 |
479 |
+} |
480 |
diff --git a/tools/gcc/size_overflow_plugin/size_overflow_hash.data b/tools/gcc/size_overflow_plugin/size_overflow_hash.data |
481 |
new file mode 100644 |
482 |
-index 0000000..8972f81 |
483 |
+index 0000000..4077712 |
484 |
--- /dev/null |
485 |
+++ b/tools/gcc/size_overflow_plugin/size_overflow_hash.data |
486 |
@@ -0,0 +1,5988 @@ |
487 |
@@ -116547,8 +116513,8 @@ index 0000000..8972f81 |
488 |
+attach_hdlc_protocol_19986 attach_hdlc_protocol 3 19986 NULL |
489 |
+rtw_set_wps_probe_resp_19989 rtw_set_wps_probe_resp 3 19989 NULL |
490 |
+diva_um_idi_read_20003 diva_um_idi_read 0 20003 NULL |
491 |
-+lov_stripe_md_size_20009 lov_stripe_md_size 0-1 20009 NULL nohasharray |
492 |
-+event_trigger_write_20009 event_trigger_write 3 20009 &lov_stripe_md_size_20009 |
493 |
++event_trigger_write_20009 event_trigger_write 3 20009 NULL nohasharray |
494 |
++lov_stripe_md_size_20009 lov_stripe_md_size 0-1 20009 &event_trigger_write_20009 |
495 |
+tree_mod_log_eb_move_20011 tree_mod_log_eb_move 5 20011 NULL |
496 |
+SYSC_fgetxattr_20027 SYSC_fgetxattr 4 20027 NULL |
497 |
+split_scan_timeout_read_20029 split_scan_timeout_read 3 20029 NULL |
498 |
@@ -116915,8 +116881,8 @@ index 0000000..8972f81 |
499 |
+bin_to_hex_dup_23853 bin_to_hex_dup 2 23853 NULL |
500 |
+ocfs2_xattr_get_clusters_23857 ocfs2_xattr_get_clusters 0 23857 NULL |
501 |
+ieee80211_if_read_dot11MeshMaxPeerLinks_23878 ieee80211_if_read_dot11MeshMaxPeerLinks 3 23878 NULL |
502 |
-+nouveau_clock_create__23881 nouveau_clock_create_ 5 23881 NULL nohasharray |
503 |
-+writeback_single_inode_23881 writeback_single_inode 0 23881 &nouveau_clock_create__23881 |
504 |
++writeback_single_inode_23881 writeback_single_inode 0 23881 NULL nohasharray |
505 |
++nouveau_clock_create__23881 nouveau_clock_create_ 5 23881 &writeback_single_inode_23881 |
506 |
+tipc_snprintf_23893 tipc_snprintf 2-0 23893 NULL |
507 |
+add_new_gdb_meta_bg_23911 add_new_gdb_meta_bg 3 23911 NULL nohasharray |
508 |
+ieee80211_if_read_hw_queues_23911 ieee80211_if_read_hw_queues 3 23911 &add_new_gdb_meta_bg_23911 |
509 |
|
510 |
diff --git a/3.14.10/4425_grsec_remove_EI_PAX.patch b/3.14.11/4425_grsec_remove_EI_PAX.patch |
511 |
similarity index 100% |
512 |
rename from 3.14.10/4425_grsec_remove_EI_PAX.patch |
513 |
rename to 3.14.11/4425_grsec_remove_EI_PAX.patch |
514 |
|
515 |
diff --git a/3.14.10/4427_force_XATTR_PAX_tmpfs.patch b/3.14.11/4427_force_XATTR_PAX_tmpfs.patch |
516 |
similarity index 100% |
517 |
rename from 3.14.10/4427_force_XATTR_PAX_tmpfs.patch |
518 |
rename to 3.14.11/4427_force_XATTR_PAX_tmpfs.patch |
519 |
|
520 |
diff --git a/3.14.10/4430_grsec-remove-localversion-grsec.patch b/3.14.11/4430_grsec-remove-localversion-grsec.patch |
521 |
similarity index 100% |
522 |
rename from 3.14.10/4430_grsec-remove-localversion-grsec.patch |
523 |
rename to 3.14.11/4430_grsec-remove-localversion-grsec.patch |
524 |
|
525 |
diff --git a/3.14.10/4435_grsec-mute-warnings.patch b/3.14.11/4435_grsec-mute-warnings.patch |
526 |
similarity index 100% |
527 |
rename from 3.14.10/4435_grsec-mute-warnings.patch |
528 |
rename to 3.14.11/4435_grsec-mute-warnings.patch |
529 |
|
530 |
diff --git a/3.14.10/4440_grsec-remove-protected-paths.patch b/3.14.11/4440_grsec-remove-protected-paths.patch |
531 |
similarity index 100% |
532 |
rename from 3.14.10/4440_grsec-remove-protected-paths.patch |
533 |
rename to 3.14.11/4440_grsec-remove-protected-paths.patch |
534 |
|
535 |
diff --git a/3.14.10/4450_grsec-kconfig-default-gids.patch b/3.14.11/4450_grsec-kconfig-default-gids.patch |
536 |
similarity index 100% |
537 |
rename from 3.14.10/4450_grsec-kconfig-default-gids.patch |
538 |
rename to 3.14.11/4450_grsec-kconfig-default-gids.patch |
539 |
|
540 |
diff --git a/3.14.10/4465_selinux-avc_audit-log-curr_ip.patch b/3.14.11/4465_selinux-avc_audit-log-curr_ip.patch |
541 |
similarity index 100% |
542 |
rename from 3.14.10/4465_selinux-avc_audit-log-curr_ip.patch |
543 |
rename to 3.14.11/4465_selinux-avc_audit-log-curr_ip.patch |
544 |
|
545 |
diff --git a/3.14.10/4470_disable-compat_vdso.patch b/3.14.11/4470_disable-compat_vdso.patch |
546 |
similarity index 100% |
547 |
rename from 3.14.10/4470_disable-compat_vdso.patch |
548 |
rename to 3.14.11/4470_disable-compat_vdso.patch |
549 |
|
550 |
diff --git a/3.14.10/4475_emutramp_default_on.patch b/3.14.11/4475_emutramp_default_on.patch |
551 |
similarity index 100% |
552 |
rename from 3.14.10/4475_emutramp_default_on.patch |
553 |
rename to 3.14.11/4475_emutramp_default_on.patch |
554 |
|
555 |
diff --git a/3.15.3/0000_README b/3.15.4/0000_README |
556 |
similarity index 100% |
557 |
rename from 3.15.3/0000_README |
558 |
rename to 3.15.4/0000_README |
559 |
|
560 |
diff --git a/3.15.3/4420_grsecurity-3.0-3.15.3-201407060933.patch b/3.15.4/4420_grsecurity-3.0-3.15.4-201407072046.patch |
561 |
similarity index 99% |
562 |
rename from 3.15.3/4420_grsecurity-3.0-3.15.3-201407060933.patch |
563 |
rename to 3.15.4/4420_grsecurity-3.0-3.15.4-201407072046.patch |
564 |
index 8f5bdcd..0dbb183 100644 |
565 |
--- a/3.15.3/4420_grsecurity-3.0-3.15.3-201407060933.patch |
566 |
+++ b/3.15.4/4420_grsecurity-3.0-3.15.4-201407072046.patch |
567 |
@@ -287,7 +287,7 @@ index 30a8ad0d..2ed9efd 100644 |
568 |
|
569 |
pcd. [PARIDE] |
570 |
diff --git a/Makefile b/Makefile |
571 |
-index 2e37d8b..3904d75 100644 |
572 |
+index 25ecc1d..184bee9 100644 |
573 |
--- a/Makefile |
574 |
+++ b/Makefile |
575 |
@@ -246,7 +246,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ |
576 |
@@ -15755,7 +15755,7 @@ index 69bbb48..32517fe 100644 |
577 |
|
578 |
#define smp_load_acquire(p) \ |
579 |
diff --git a/arch/x86/include/asm/bitops.h b/arch/x86/include/asm/bitops.h |
580 |
-index 9fc1af7..fc71228 100644 |
581 |
+index 9fc1af7..776d75a 100644 |
582 |
--- a/arch/x86/include/asm/bitops.h |
583 |
+++ b/arch/x86/include/asm/bitops.h |
584 |
@@ -49,7 +49,7 @@ |
585 |
@@ -15835,7 +15835,7 @@ index 9fc1af7..fc71228 100644 |
586 |
*/ |
587 |
#ifdef CONFIG_X86_64 |
588 |
-static __always_inline int fls64(__u64 x) |
589 |
-+static __always_inline long fls64(__u64 x) |
590 |
++static __always_inline __intentional_overflow(-1) int fls64(__u64 x) |
591 |
{ |
592 |
int bitpos = -1; |
593 |
/* |
594 |
@@ -18365,7 +18365,7 @@ index a4ea023..33aa874 100644 |
595 |
void df_debug(struct pt_regs *regs, long error_code); |
596 |
#endif /* _ASM_X86_PROCESSOR_H */ |
597 |
diff --git a/arch/x86/include/asm/ptrace.h b/arch/x86/include/asm/ptrace.h |
598 |
-index 14fd6fd..b31a4a4 100644 |
599 |
+index 6205f0c..b31a4a4 100644 |
600 |
--- a/arch/x86/include/asm/ptrace.h |
601 |
+++ b/arch/x86/include/asm/ptrace.h |
602 |
@@ -84,28 +84,29 @@ static inline unsigned long regs_return_value(struct pt_regs *regs) |
603 |
@@ -18438,29 +18438,6 @@ index 14fd6fd..b31a4a4 100644 |
604 |
#endif |
605 |
return *(unsigned long *)((unsigned long)regs + offset); |
606 |
} |
607 |
-@@ -231,6 +235,22 @@ static inline unsigned long regs_get_kernel_stack_nth(struct pt_regs *regs, |
608 |
- |
609 |
- #define ARCH_HAS_USER_SINGLE_STEP_INFO |
610 |
- |
611 |
-+/* |
612 |
-+ * When hitting ptrace_stop(), we cannot return using SYSRET because |
613 |
-+ * that does not restore the full CPU state, only a minimal set. The |
614 |
-+ * ptracer can change arbitrary register values, which is usually okay |
615 |
-+ * because the usual ptrace stops run off the signal delivery path which |
616 |
-+ * forces IRET; however, ptrace_event() stops happen in arbitrary places |
617 |
-+ * in the kernel and don't force IRET path. |
618 |
-+ * |
619 |
-+ * So force IRET path after a ptrace stop. |
620 |
-+ */ |
621 |
-+#define arch_ptrace_stop_needed(code, info) \ |
622 |
-+({ \ |
623 |
-+ set_thread_flag(TIF_NOTIFY_RESUME); \ |
624 |
-+ false; \ |
625 |
-+}) |
626 |
-+ |
627 |
- struct user_desc; |
628 |
- extern int do_get_thread_area(struct task_struct *p, int idx, |
629 |
- struct user_desc __user *info); |
630 |
diff --git a/arch/x86/include/asm/realmode.h b/arch/x86/include/asm/realmode.h |
631 |
index 9c6b890..5305f53 100644 |
632 |
--- a/arch/x86/include/asm/realmode.h |
633 |
@@ -26431,7 +26408,7 @@ index 898d077..4c458ff 100644 |
634 |
ip = *(u64 *)(fp+8); |
635 |
if (!in_sched_functions(ip)) |
636 |
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c |
637 |
-index 678c0ad..d309ccb 100644 |
638 |
+index 678c0ad..2fc2a7b 100644 |
639 |
--- a/arch/x86/kernel/ptrace.c |
640 |
+++ b/arch/x86/kernel/ptrace.c |
641 |
@@ -186,10 +186,10 @@ unsigned long kernel_stack_pointer(struct pt_regs *regs) |
642 |
@@ -26447,7 +26424,28 @@ index 678c0ad..d309ccb 100644 |
643 |
if (prev_esp) |
644 |
return (unsigned long)prev_esp; |
645 |
|
646 |
-@@ -588,7 +588,7 @@ static void ptrace_triggered(struct perf_event *bp, |
647 |
+@@ -452,6 +452,20 @@ static int putreg(struct task_struct *child, |
648 |
+ if (child->thread.gs != value) |
649 |
+ return do_arch_prctl(child, ARCH_SET_GS, value); |
650 |
+ return 0; |
651 |
++ |
652 |
++ case offsetof(struct user_regs_struct,ip): |
653 |
++ /* |
654 |
++ * Protect against any attempt to set ip to an |
655 |
++ * impossible address. There are dragons lurking if the |
656 |
++ * address is noncanonical. (This explicitly allows |
657 |
++ * setting ip to TASK_SIZE_MAX, because user code can do |
658 |
++ * that all by itself by running off the end of its |
659 |
++ * address space. |
660 |
++ */ |
661 |
++ if (value > TASK_SIZE_MAX) |
662 |
++ return -EIO; |
663 |
++ break; |
664 |
++ |
665 |
+ #endif |
666 |
+ } |
667 |
+ |
668 |
+@@ -588,7 +602,7 @@ static void ptrace_triggered(struct perf_event *bp, |
669 |
static unsigned long ptrace_get_dr7(struct perf_event *bp[]) |
670 |
{ |
671 |
int i; |
672 |
@@ -26456,7 +26454,7 @@ index 678c0ad..d309ccb 100644 |
673 |
struct arch_hw_breakpoint *info; |
674 |
|
675 |
for (i = 0; i < HBP_NUM; i++) { |
676 |
-@@ -822,7 +822,7 @@ long arch_ptrace(struct task_struct *child, long request, |
677 |
+@@ -822,7 +836,7 @@ long arch_ptrace(struct task_struct *child, long request, |
678 |
unsigned long addr, unsigned long data) |
679 |
{ |
680 |
int ret; |
681 |
@@ -26465,7 +26463,7 @@ index 678c0ad..d309ccb 100644 |
682 |
|
683 |
switch (request) { |
684 |
/* read the word at location addr in the USER area. */ |
685 |
-@@ -907,14 +907,14 @@ long arch_ptrace(struct task_struct *child, long request, |
686 |
+@@ -907,14 +921,14 @@ long arch_ptrace(struct task_struct *child, long request, |
687 |
if ((int) addr < 0) |
688 |
return -EIO; |
689 |
ret = do_get_thread_area(child, addr, |
690 |
@@ -26482,7 +26480,7 @@ index 678c0ad..d309ccb 100644 |
691 |
break; |
692 |
#endif |
693 |
|
694 |
-@@ -1292,7 +1292,7 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request, |
695 |
+@@ -1292,7 +1306,7 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request, |
696 |
|
697 |
#ifdef CONFIG_X86_64 |
698 |
|
699 |
@@ -26491,7 +26489,7 @@ index 678c0ad..d309ccb 100644 |
700 |
[REGSET_GENERAL] = { |
701 |
.core_note_type = NT_PRSTATUS, |
702 |
.n = sizeof(struct user_regs_struct) / sizeof(long), |
703 |
-@@ -1333,7 +1333,7 @@ static const struct user_regset_view user_x86_64_view = { |
704 |
+@@ -1333,7 +1347,7 @@ static const struct user_regset_view user_x86_64_view = { |
705 |
#endif /* CONFIG_X86_64 */ |
706 |
|
707 |
#if defined CONFIG_X86_32 || defined CONFIG_IA32_EMULATION |
708 |
@@ -26500,7 +26498,7 @@ index 678c0ad..d309ccb 100644 |
709 |
[REGSET_GENERAL] = { |
710 |
.core_note_type = NT_PRSTATUS, |
711 |
.n = sizeof(struct user_regs_struct32) / sizeof(u32), |
712 |
-@@ -1386,7 +1386,7 @@ static const struct user_regset_view user_x86_32_view = { |
713 |
+@@ -1386,7 +1400,7 @@ static const struct user_regset_view user_x86_32_view = { |
714 |
*/ |
715 |
u64 xstate_fx_sw_bytes[USER_XSTATE_FX_SW_WORDS]; |
716 |
|
717 |
@@ -26509,7 +26507,7 @@ index 678c0ad..d309ccb 100644 |
718 |
{ |
719 |
#ifdef CONFIG_X86_64 |
720 |
x86_64_regsets[REGSET_XSTATE].n = size / sizeof(u64); |
721 |
-@@ -1421,7 +1421,7 @@ static void fill_sigtrap_info(struct task_struct *tsk, |
722 |
+@@ -1421,7 +1435,7 @@ static void fill_sigtrap_info(struct task_struct *tsk, |
723 |
memset(info, 0, sizeof(*info)); |
724 |
info->si_signo = SIGTRAP; |
725 |
info->si_code = si_code; |
726 |
@@ -26518,7 +26516,7 @@ index 678c0ad..d309ccb 100644 |
727 |
} |
728 |
|
729 |
void user_single_step_siginfo(struct task_struct *tsk, |
730 |
-@@ -1450,6 +1450,10 @@ void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs, |
731 |
+@@ -1450,6 +1464,10 @@ void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs, |
732 |
# define IS_IA32 0 |
733 |
#endif |
734 |
|
735 |
@@ -26529,7 +26527,7 @@ index 678c0ad..d309ccb 100644 |
736 |
/* |
737 |
* We must return the syscall number to actually look up in the table. |
738 |
* This can be -1L to skip running any syscall at all. |
739 |
-@@ -1460,6 +1464,11 @@ long syscall_trace_enter(struct pt_regs *regs) |
740 |
+@@ -1460,6 +1478,11 @@ long syscall_trace_enter(struct pt_regs *regs) |
741 |
|
742 |
user_exit(); |
743 |
|
744 |
@@ -26541,7 +26539,7 @@ index 678c0ad..d309ccb 100644 |
745 |
/* |
746 |
* If we stepped into a sysenter/syscall insn, it trapped in |
747 |
* kernel mode; do_debug() cleared TF and set TIF_SINGLESTEP. |
748 |
-@@ -1515,6 +1524,11 @@ void syscall_trace_leave(struct pt_regs *regs) |
749 |
+@@ -1515,6 +1538,11 @@ void syscall_trace_leave(struct pt_regs *regs) |
750 |
*/ |
751 |
user_exit(); |
752 |
|
753 |
@@ -39039,7 +39037,7 @@ index 000e4e0..4770351 100644 |
754 |
cpu_notifier_register_begin(); |
755 |
|
756 |
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c |
757 |
-index abda660..f1d1de0 100644 |
758 |
+index 558224c..55e3b57 100644 |
759 |
--- a/drivers/cpufreq/cpufreq.c |
760 |
+++ b/drivers/cpufreq/cpufreq.c |
761 |
@@ -2022,7 +2022,7 @@ void cpufreq_unregister_governor(struct cpufreq_governor *governor) |
762 |
@@ -39051,7 +39049,7 @@ index abda660..f1d1de0 100644 |
763 |
mutex_unlock(&cpufreq_governor_mutex); |
764 |
return; |
765 |
} |
766 |
-@@ -2240,7 +2240,7 @@ static int cpufreq_cpu_callback(struct notifier_block *nfb, |
767 |
+@@ -2238,7 +2238,7 @@ static int cpufreq_cpu_callback(struct notifier_block *nfb, |
768 |
return NOTIFY_OK; |
769 |
} |
770 |
|
771 |
@@ -39060,7 +39058,7 @@ index abda660..f1d1de0 100644 |
772 |
.notifier_call = cpufreq_cpu_callback, |
773 |
}; |
774 |
|
775 |
-@@ -2280,13 +2280,17 @@ int cpufreq_boost_trigger_state(int state) |
776 |
+@@ -2278,13 +2278,17 @@ int cpufreq_boost_trigger_state(int state) |
777 |
return 0; |
778 |
|
779 |
write_lock_irqsave(&cpufreq_driver_lock, flags); |
780 |
@@ -39080,7 +39078,7 @@ index abda660..f1d1de0 100644 |
781 |
write_unlock_irqrestore(&cpufreq_driver_lock, flags); |
782 |
|
783 |
pr_err("%s: Cannot %s BOOST\n", |
784 |
-@@ -2342,8 +2346,11 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data) |
785 |
+@@ -2340,8 +2344,11 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data) |
786 |
|
787 |
pr_debug("trying to register driver %s\n", driver_data->name); |
788 |
|
789 |
@@ -39094,7 +39092,7 @@ index abda660..f1d1de0 100644 |
790 |
|
791 |
write_lock_irqsave(&cpufreq_driver_lock, flags); |
792 |
if (cpufreq_driver) { |
793 |
-@@ -2358,8 +2365,11 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data) |
794 |
+@@ -2356,8 +2363,11 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data) |
795 |
* Check if driver provides function to enable boost - |
796 |
* if not, use cpufreq_boost_set_sw as default |
797 |
*/ |
798 |
@@ -46464,6 +46462,19 @@ index a2515887..6d13233 100644 |
799 |
dev->net->dev_addr[ETH_ALEN-1] = ifacenum; |
800 |
|
801 |
/* we will have to manufacture ethernet headers, prepare template */ |
802 |
+diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c |
803 |
+index 8a852b5..668a4b6 100644 |
804 |
+--- a/drivers/net/virtio_net.c |
805 |
++++ b/drivers/net/virtio_net.c |
806 |
+@@ -47,7 +47,7 @@ module_param(gso, bool, 0444); |
807 |
+ #define RECEIVE_AVG_WEIGHT 64 |
808 |
+ |
809 |
+ /* Minimum alignment for mergeable packet buffers. */ |
810 |
+-#define MERGEABLE_BUFFER_ALIGN max(L1_CACHE_BYTES, 256) |
811 |
++#define MERGEABLE_BUFFER_ALIGN max(L1_CACHE_BYTES, 256UL) |
812 |
+ |
813 |
+ #define VIRTNET_DRIVER_VERSION "1.0.0" |
814 |
+ |
815 |
diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c |
816 |
index 77dcf92..549924a 100644 |
817 |
--- a/drivers/net/vxlan.c |
818 |
@@ -48745,10 +48756,10 @@ index 3cbb57a..95e47a3 100644 |
819 |
|
820 |
/* These three are default values which can be overridden */ |
821 |
diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c |
822 |
-index 9a6e4a2..27843b6 100644 |
823 |
+index fda6cf1..7a6b5d8 100644 |
824 |
--- a/drivers/scsi/hpsa.c |
825 |
+++ b/drivers/scsi/hpsa.c |
826 |
-@@ -687,10 +687,10 @@ static inline u32 next_command(struct ctlr_info *h, u8 q) |
827 |
+@@ -699,10 +699,10 @@ static inline u32 next_command(struct ctlr_info *h, u8 q) |
828 |
unsigned long flags; |
829 |
|
830 |
if (h->transMethod & CFGTBL_Trans_io_accel1) |
831 |
@@ -48761,7 +48772,7 @@ index 9a6e4a2..27843b6 100644 |
832 |
|
833 |
if ((rq->head[rq->current_entry] & 1) == rq->wraparound) { |
834 |
a = rq->head[rq->current_entry]; |
835 |
-@@ -5448,7 +5448,7 @@ static void start_io(struct ctlr_info *h) |
836 |
+@@ -5460,7 +5460,7 @@ static void start_io(struct ctlr_info *h) |
837 |
while (!list_empty(&h->reqQ)) { |
838 |
c = list_entry(h->reqQ.next, struct CommandList, list); |
839 |
/* can't do anything if fifo is full */ |
840 |
@@ -48770,7 +48781,7 @@ index 9a6e4a2..27843b6 100644 |
841 |
h->fifo_recently_full = 1; |
842 |
dev_warn(&h->pdev->dev, "fifo full\n"); |
843 |
break; |
844 |
-@@ -5472,7 +5472,7 @@ static void start_io(struct ctlr_info *h) |
845 |
+@@ -5484,7 +5484,7 @@ static void start_io(struct ctlr_info *h) |
846 |
|
847 |
/* Tell the controller execute command */ |
848 |
spin_unlock_irqrestore(&h->lock, flags); |
849 |
@@ -48779,7 +48790,7 @@ index 9a6e4a2..27843b6 100644 |
850 |
spin_lock_irqsave(&h->lock, flags); |
851 |
} |
852 |
spin_unlock_irqrestore(&h->lock, flags); |
853 |
-@@ -5480,17 +5480,17 @@ static void start_io(struct ctlr_info *h) |
854 |
+@@ -5492,17 +5492,17 @@ static void start_io(struct ctlr_info *h) |
855 |
|
856 |
static inline unsigned long get_next_completion(struct ctlr_info *h, u8 q) |
857 |
{ |
858 |
@@ -48800,7 +48811,7 @@ index 9a6e4a2..27843b6 100644 |
859 |
(h->interrupts_enabled == 0); |
860 |
} |
861 |
|
862 |
-@@ -6444,7 +6444,7 @@ static int hpsa_pci_init(struct ctlr_info *h) |
863 |
+@@ -6456,7 +6456,7 @@ static int hpsa_pci_init(struct ctlr_info *h) |
864 |
if (prod_index < 0) |
865 |
return -ENODEV; |
866 |
h->product_name = products[prod_index].product_name; |
867 |
@@ -48809,7 +48820,7 @@ index 9a6e4a2..27843b6 100644 |
868 |
|
869 |
pci_disable_link_state(h->pdev, PCIE_LINK_STATE_L0S | |
870 |
PCIE_LINK_STATE_L1 | PCIE_LINK_STATE_CLKPM); |
871 |
-@@ -6723,7 +6723,7 @@ static void controller_lockup_detected(struct ctlr_info *h) |
872 |
+@@ -6735,7 +6735,7 @@ static void controller_lockup_detected(struct ctlr_info *h) |
873 |
{ |
874 |
unsigned long flags; |
875 |
|
876 |
@@ -48818,7 +48829,7 @@ index 9a6e4a2..27843b6 100644 |
877 |
spin_lock_irqsave(&h->lock, flags); |
878 |
h->lockup_detected = readl(h->vaddr + SA5_SCRATCHPAD_OFFSET); |
879 |
spin_unlock_irqrestore(&h->lock, flags); |
880 |
-@@ -6951,7 +6951,7 @@ reinit_after_soft_reset: |
881 |
+@@ -6963,7 +6963,7 @@ reinit_after_soft_reset: |
882 |
} |
883 |
|
884 |
/* make sure the board interrupts are off */ |
885 |
@@ -48827,7 +48838,7 @@ index 9a6e4a2..27843b6 100644 |
886 |
|
887 |
if (hpsa_request_irq(h, do_hpsa_intr_msi, do_hpsa_intr_intx)) |
888 |
goto clean2; |
889 |
-@@ -6986,7 +6986,7 @@ reinit_after_soft_reset: |
890 |
+@@ -6998,7 +6998,7 @@ reinit_after_soft_reset: |
891 |
* fake ones to scoop up any residual completions. |
892 |
*/ |
893 |
spin_lock_irqsave(&h->lock, flags); |
894 |
@@ -48836,7 +48847,7 @@ index 9a6e4a2..27843b6 100644 |
895 |
spin_unlock_irqrestore(&h->lock, flags); |
896 |
free_irqs(h); |
897 |
rc = hpsa_request_irq(h, hpsa_msix_discard_completions, |
898 |
-@@ -7005,9 +7005,9 @@ reinit_after_soft_reset: |
899 |
+@@ -7017,9 +7017,9 @@ reinit_after_soft_reset: |
900 |
dev_info(&h->pdev->dev, "Board READY.\n"); |
901 |
dev_info(&h->pdev->dev, |
902 |
"Waiting for stale completions to drain.\n"); |
903 |
@@ -48848,7 +48859,7 @@ index 9a6e4a2..27843b6 100644 |
904 |
|
905 |
rc = controller_reset_failed(h->cfgtable); |
906 |
if (rc) |
907 |
-@@ -7033,7 +7033,7 @@ reinit_after_soft_reset: |
908 |
+@@ -7045,7 +7045,7 @@ reinit_after_soft_reset: |
909 |
h->drv_req_rescan = 0; |
910 |
|
911 |
/* Turn the interrupts on so we can service requests */ |
912 |
@@ -48857,7 +48868,7 @@ index 9a6e4a2..27843b6 100644 |
913 |
|
914 |
hpsa_hba_inquiry(h); |
915 |
hpsa_register_scsi(h); /* hook ourselves into SCSI subsystem */ |
916 |
-@@ -7102,7 +7102,7 @@ static void hpsa_shutdown(struct pci_dev *pdev) |
917 |
+@@ -7114,7 +7114,7 @@ static void hpsa_shutdown(struct pci_dev *pdev) |
918 |
* To write all data in the battery backed cache to disks |
919 |
*/ |
920 |
hpsa_flush_cache(h); |
921 |
@@ -48866,7 +48877,7 @@ index 9a6e4a2..27843b6 100644 |
922 |
hpsa_free_irqs_and_disable_msix(h); |
923 |
} |
924 |
|
925 |
-@@ -7220,7 +7220,7 @@ static void hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support) |
926 |
+@@ -7232,7 +7232,7 @@ static void hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support) |
927 |
CFGTBL_Trans_enable_directed_msix | |
928 |
(trans_support & (CFGTBL_Trans_io_accel1 | |
929 |
CFGTBL_Trans_io_accel2)); |
930 |
@@ -48875,7 +48886,7 @@ index 9a6e4a2..27843b6 100644 |
931 |
|
932 |
/* This is a bit complicated. There are 8 registers on |
933 |
* the controller which we write to to tell it 8 different |
934 |
-@@ -7285,12 +7285,12 @@ static void hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support) |
935 |
+@@ -7297,12 +7297,12 @@ static void hpsa_enter_performant_mode(struct ctlr_info *h, u32 trans_support) |
936 |
* enable outbound interrupt coalescing in accelerator mode; |
937 |
*/ |
938 |
if (trans_support & CFGTBL_Trans_io_accel1) { |
939 |
@@ -50293,10 +50304,10 @@ index e7e9372..161f530 100644 |
940 |
login->tgt_agt = sbp_target_agent_register(login); |
941 |
if (IS_ERR(login->tgt_agt)) { |
942 |
diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c |
943 |
-index 26416c1..e796a3d 100644 |
944 |
+index 6ea95d2..88607b4 100644 |
945 |
--- a/drivers/target/target_core_device.c |
946 |
+++ b/drivers/target/target_core_device.c |
947 |
-@@ -1524,7 +1524,7 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name) |
948 |
+@@ -1525,7 +1525,7 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name) |
949 |
spin_lock_init(&dev->se_tmr_lock); |
950 |
spin_lock_init(&dev->qf_cmd_lock); |
951 |
sema_init(&dev->caw_sem, 1); |
952 |
@@ -62226,7 +62237,7 @@ index f4ccfe6..a5cf064 100644 |
953 |
static struct callback_op callback_ops[]; |
954 |
|
955 |
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c |
956 |
-index 0c43897..0949f08 100644 |
957 |
+index c79f3e7..d61d671 100644 |
958 |
--- a/fs/nfs/inode.c |
959 |
+++ b/fs/nfs/inode.c |
960 |
@@ -1209,16 +1209,16 @@ static int nfs_size_need_update(const struct inode *inode, const struct nfs_fatt |
961 |
@@ -62263,7 +62274,7 @@ index d543222..2cfa2a2 100644 |
962 |
static struct nfsd4_operation nfsd4_ops[]; |
963 |
|
964 |
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c |
965 |
-index 18881f3..40e5bef 100644 |
966 |
+index b4c4958..04687ad 100644 |
967 |
--- a/fs/nfsd/nfs4xdr.c |
968 |
+++ b/fs/nfsd/nfs4xdr.c |
969 |
@@ -1530,7 +1530,7 @@ nfsd4_decode_notsupp(struct nfsd4_compoundargs *argp, void *p) |
970 |
@@ -81571,20 +81582,6 @@ index 34a1e10..70f6bde 100644 |
971 |
|
972 |
struct proc_ns { |
973 |
void *ns; |
974 |
-diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h |
975 |
-index 077904c..cc79eff 100644 |
976 |
---- a/include/linux/ptrace.h |
977 |
-+++ b/include/linux/ptrace.h |
978 |
-@@ -334,6 +334,9 @@ static inline void user_single_step_siginfo(struct task_struct *tsk, |
979 |
- * calling arch_ptrace_stop() when it would be superfluous. For example, |
980 |
- * if the thread has not been back to user mode since the last stop, the |
981 |
- * thread state might indicate that nothing needs to be done. |
982 |
-+ * |
983 |
-+ * This is guaranteed to be invoked once before a task stops for ptrace and |
984 |
-+ * may include arch-specific operations necessary prior to a ptrace stop. |
985 |
- */ |
986 |
- #define arch_ptrace_stop_needed(code, info) (0) |
987 |
- #endif |
988 |
diff --git a/include/linux/quota.h b/include/linux/quota.h |
989 |
index cc7494a..1e27036 100644 |
990 |
--- a/include/linux/quota.h |
991 |
@@ -86219,7 +86216,7 @@ index 6ed6a1d..edecb0e 100644 |
992 |
{ |
993 |
struct signal_struct *sig = current->signal; |
994 |
diff --git a/kernel/fork.c b/kernel/fork.c |
995 |
-index 1429043..9d95f16 100644 |
996 |
+index 68b9226..0700bf6 100644 |
997 |
--- a/kernel/fork.c |
998 |
+++ b/kernel/fork.c |
999 |
@@ -183,6 +183,48 @@ void thread_info_cache_init(void) |
1000 |
@@ -86601,7 +86598,7 @@ index 1429043..9d95f16 100644 |
1001 |
if (likely(p->pid)) { |
1002 |
ptrace_init_task(p, (clone_flags & CLONE_PTRACE) || trace); |
1003 |
|
1004 |
-@@ -1539,6 +1649,8 @@ bad_fork_cleanup_count: |
1005 |
+@@ -1541,6 +1651,8 @@ bad_fork_cleanup_count: |
1006 |
bad_fork_free: |
1007 |
free_task(p); |
1008 |
fork_out: |
1009 |
@@ -86610,7 +86607,7 @@ index 1429043..9d95f16 100644 |
1010 |
return ERR_PTR(retval); |
1011 |
} |
1012 |
|
1013 |
-@@ -1600,6 +1712,7 @@ long do_fork(unsigned long clone_flags, |
1014 |
+@@ -1602,6 +1714,7 @@ long do_fork(unsigned long clone_flags, |
1015 |
|
1016 |
p = copy_process(clone_flags, stack_start, stack_size, |
1017 |
child_tidptr, NULL, trace); |
1018 |
@@ -86618,7 +86615,7 @@ index 1429043..9d95f16 100644 |
1019 |
/* |
1020 |
* Do this prior waking up the new thread - the thread pointer |
1021 |
* might get invalid after that point, if the thread exits quickly. |
1022 |
-@@ -1616,6 +1729,8 @@ long do_fork(unsigned long clone_flags, |
1023 |
+@@ -1618,6 +1731,8 @@ long do_fork(unsigned long clone_flags, |
1024 |
if (clone_flags & CLONE_PARENT_SETTID) |
1025 |
put_user(nr, parent_tidptr); |
1026 |
|
1027 |
@@ -86627,7 +86624,7 @@ index 1429043..9d95f16 100644 |
1028 |
if (clone_flags & CLONE_VFORK) { |
1029 |
p->vfork_done = &vfork; |
1030 |
init_completion(&vfork); |
1031 |
-@@ -1734,7 +1849,7 @@ void __init proc_caches_init(void) |
1032 |
+@@ -1736,7 +1851,7 @@ void __init proc_caches_init(void) |
1033 |
mm_cachep = kmem_cache_create("mm_struct", |
1034 |
sizeof(struct mm_struct), ARCH_MIN_MMSTRUCT_ALIGN, |
1035 |
SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_NOTRACK, NULL); |
1036 |
@@ -86636,7 +86633,7 @@ index 1429043..9d95f16 100644 |
1037 |
mmap_init(); |
1038 |
nsproxy_cache_init(); |
1039 |
} |
1040 |
-@@ -1774,7 +1889,7 @@ static int unshare_fs(unsigned long unshare_flags, struct fs_struct **new_fsp) |
1041 |
+@@ -1776,7 +1891,7 @@ static int unshare_fs(unsigned long unshare_flags, struct fs_struct **new_fsp) |
1042 |
return 0; |
1043 |
|
1044 |
/* don't need lock here; in the worst case we'll do useless copy */ |
1045 |
@@ -86645,7 +86642,7 @@ index 1429043..9d95f16 100644 |
1046 |
return 0; |
1047 |
|
1048 |
*new_fsp = copy_fs_struct(fs); |
1049 |
-@@ -1881,7 +1996,8 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags) |
1050 |
+@@ -1883,7 +1998,8 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags) |
1051 |
fs = current->fs; |
1052 |
spin_lock(&fs->lock); |
1053 |
current->fs = new_fs; |
1054 |
@@ -91252,10 +91249,10 @@ index c634868..00d0d19 100644 |
1055 |
*data_page = bpage; |
1056 |
|
1057 |
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c |
1058 |
-index 737b0ef..bd21ea6 100644 |
1059 |
+index e916972..e87f285 100644 |
1060 |
--- a/kernel/trace/trace.c |
1061 |
+++ b/kernel/trace/trace.c |
1062 |
-@@ -3448,7 +3448,7 @@ int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set) |
1063 |
+@@ -3449,7 +3449,7 @@ int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set) |
1064 |
return 0; |
1065 |
} |
1066 |
|
1067 |
@@ -91445,7 +91442,7 @@ index 4f69f9a..7c6f8f8 100644 |
1068 |
memcpy(&uts_table, table, sizeof(uts_table)); |
1069 |
uts_table.data = get_uts(table, write); |
1070 |
diff --git a/kernel/watchdog.c b/kernel/watchdog.c |
1071 |
-index 516203e..ecc58d1 100644 |
1072 |
+index 30e4822..dd2b854 100644 |
1073 |
--- a/kernel/watchdog.c |
1074 |
+++ b/kernel/watchdog.c |
1075 |
@@ -479,7 +479,7 @@ static int watchdog_nmi_enable(unsigned int cpu) { return 0; } |
1076 |
@@ -91971,37 +91968,6 @@ index c24c2f7..f0296f4 100644 |
1077 |
+ pax_close_kernel(); |
1078 |
+} |
1079 |
+EXPORT_SYMBOL(pax_list_del_rcu); |
1080 |
-diff --git a/lib/lz4/lz4_decompress.c b/lib/lz4/lz4_decompress.c |
1081 |
-index b74da44..7a85967 100644 |
1082 |
---- a/lib/lz4/lz4_decompress.c |
1083 |
-+++ b/lib/lz4/lz4_decompress.c |
1084 |
-@@ -192,6 +192,8 @@ static int lz4_uncompress_unknownoutputsize(const char *source, char *dest, |
1085 |
- int s = 255; |
1086 |
- while ((ip < iend) && (s == 255)) { |
1087 |
- s = *ip++; |
1088 |
-+ if (unlikely(length > (size_t)(length + s))) |
1089 |
-+ goto _output_error; |
1090 |
- length += s; |
1091 |
- } |
1092 |
- } |
1093 |
-@@ -232,6 +234,8 @@ static int lz4_uncompress_unknownoutputsize(const char *source, char *dest, |
1094 |
- if (length == ML_MASK) { |
1095 |
- while (ip < iend) { |
1096 |
- int s = *ip++; |
1097 |
-+ if (unlikely(length > (size_t)(length + s))) |
1098 |
-+ goto _output_error; |
1099 |
- length += s; |
1100 |
- if (s == 255) |
1101 |
- continue; |
1102 |
-@@ -284,7 +288,7 @@ static int lz4_uncompress_unknownoutputsize(const char *source, char *dest, |
1103 |
- |
1104 |
- /* write overflow error detected */ |
1105 |
- _output_error: |
1106 |
-- return (int) (-(((char *) ip) - source)); |
1107 |
-+ return -1; |
1108 |
- } |
1109 |
- |
1110 |
- int lz4_decompress(const unsigned char *src, size_t *src_len, |
1111 |
diff --git a/lib/percpu-refcount.c b/lib/percpu-refcount.c |
1112 |
index 963b703..438bc51 100644 |
1113 |
--- a/lib/percpu-refcount.c |
1114 |
@@ -101773,7 +101739,7 @@ index a4b5e2a..13b1de3 100644 |
1115 |
table = kmemdup(acct_sysctl_table, sizeof(acct_sysctl_table), |
1116 |
GFP_KERNEL); |
1117 |
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c |
1118 |
-index 75421f2..054c1fc 100644 |
1119 |
+index 75421f2..0e69621 100644 |
1120 |
--- a/net/netfilter/nf_conntrack_core.c |
1121 |
+++ b/net/netfilter/nf_conntrack_core.c |
1122 |
@@ -1789,6 +1789,10 @@ void nf_conntrack_init_end(void) |
1123 |
@@ -101792,7 +101758,7 @@ index 75421f2..054c1fc 100644 |
1124 |
goto err_pcpu_lists; |
1125 |
|
1126 |
+#ifdef CONFIG_GRKERNSEC_HIDESYM |
1127 |
-+ net->ct.slabname = kasprintf(GFP_KERNEL, "nf_conntrack_%08lx", atomic_inc_return_unchecked(&conntrack_cache_id)); |
1128 |
++ net->ct.slabname = kasprintf(GFP_KERNEL, "nf_conntrack_%08x", atomic_inc_return_unchecked(&conntrack_cache_id)); |
1129 |
+#else |
1130 |
net->ct.slabname = kasprintf(GFP_KERNEL, "nf_conntrack_%p", net); |
1131 |
+#endif |
1132 |
@@ -114525,10 +114491,10 @@ index 0000000..4378111 |
1133 |
+} |
1134 |
diff --git a/tools/gcc/size_overflow_plugin/size_overflow_hash.data b/tools/gcc/size_overflow_plugin/size_overflow_hash.data |
1135 |
new file mode 100644 |
1136 |
-index 0000000..2393acc |
1137 |
+index 0000000..386f2d1 |
1138 |
--- /dev/null |
1139 |
+++ b/tools/gcc/size_overflow_plugin/size_overflow_hash.data |
1140 |
-@@ -0,0 +1,5800 @@ |
1141 |
+@@ -0,0 +1,5801 @@ |
1142 |
+intel_fake_agp_alloc_by_type_1 intel_fake_agp_alloc_by_type 1 1 NULL |
1143 |
+storvsc_connect_to_vsp_22 storvsc_connect_to_vsp 2 22 NULL |
1144 |
+compat_sock_setsockopt_23 compat_sock_setsockopt 5 23 NULL |
1145 |
@@ -119795,6 +119761,7 @@ index 0000000..2393acc |
1146 |
+btrfs_insert_dir_item_59304 btrfs_insert_dir_item 4 59304 NULL |
1147 |
+fd_copyout_59323 fd_copyout 3 59323 NULL |
1148 |
+read_9287_modal_eeprom_59327 read_9287_modal_eeprom 3 59327 NULL |
1149 |
++set_state_private_59336 set_state_private 0 59336 NULL |
1150 |
+rx_defrag_in_process_called_read_59338 rx_defrag_in_process_called_read 3 59338 NULL |
1151 |
+xfs_attrmulti_attr_set_59346 xfs_attrmulti_attr_set 4 59346 NULL |
1152 |
+f2fs_fallocate_59377 f2fs_fallocate 4-3 59377 NULL |
1153 |
|
1154 |
diff --git a/3.15.3/4425_grsec_remove_EI_PAX.patch b/3.15.4/4425_grsec_remove_EI_PAX.patch |
1155 |
similarity index 100% |
1156 |
rename from 3.15.3/4425_grsec_remove_EI_PAX.patch |
1157 |
rename to 3.15.4/4425_grsec_remove_EI_PAX.patch |
1158 |
|
1159 |
diff --git a/3.15.3/4427_force_XATTR_PAX_tmpfs.patch b/3.15.4/4427_force_XATTR_PAX_tmpfs.patch |
1160 |
similarity index 100% |
1161 |
rename from 3.15.3/4427_force_XATTR_PAX_tmpfs.patch |
1162 |
rename to 3.15.4/4427_force_XATTR_PAX_tmpfs.patch |
1163 |
|
1164 |
diff --git a/3.15.3/4430_grsec-remove-localversion-grsec.patch b/3.15.4/4430_grsec-remove-localversion-grsec.patch |
1165 |
similarity index 100% |
1166 |
rename from 3.15.3/4430_grsec-remove-localversion-grsec.patch |
1167 |
rename to 3.15.4/4430_grsec-remove-localversion-grsec.patch |
1168 |
|
1169 |
diff --git a/3.15.3/4435_grsec-mute-warnings.patch b/3.15.4/4435_grsec-mute-warnings.patch |
1170 |
similarity index 100% |
1171 |
rename from 3.15.3/4435_grsec-mute-warnings.patch |
1172 |
rename to 3.15.4/4435_grsec-mute-warnings.patch |
1173 |
|
1174 |
diff --git a/3.15.3/4440_grsec-remove-protected-paths.patch b/3.15.4/4440_grsec-remove-protected-paths.patch |
1175 |
similarity index 100% |
1176 |
rename from 3.15.3/4440_grsec-remove-protected-paths.patch |
1177 |
rename to 3.15.4/4440_grsec-remove-protected-paths.patch |
1178 |
|
1179 |
diff --git a/3.15.3/4450_grsec-kconfig-default-gids.patch b/3.15.4/4450_grsec-kconfig-default-gids.patch |
1180 |
similarity index 100% |
1181 |
rename from 3.15.3/4450_grsec-kconfig-default-gids.patch |
1182 |
rename to 3.15.4/4450_grsec-kconfig-default-gids.patch |
1183 |
|
1184 |
diff --git a/3.15.3/4465_selinux-avc_audit-log-curr_ip.patch b/3.15.4/4465_selinux-avc_audit-log-curr_ip.patch |
1185 |
similarity index 100% |
1186 |
rename from 3.15.3/4465_selinux-avc_audit-log-curr_ip.patch |
1187 |
rename to 3.15.4/4465_selinux-avc_audit-log-curr_ip.patch |
1188 |
|
1189 |
diff --git a/3.15.3/4470_disable-compat_vdso.patch b/3.15.4/4470_disable-compat_vdso.patch |
1190 |
similarity index 100% |
1191 |
rename from 3.15.3/4470_disable-compat_vdso.patch |
1192 |
rename to 3.15.4/4470_disable-compat_vdso.patch |
1193 |
|
1194 |
diff --git a/3.15.3/4475_emutramp_default_on.patch b/3.15.4/4475_emutramp_default_on.patch |
1195 |
similarity index 100% |
1196 |
rename from 3.15.3/4475_emutramp_default_on.patch |
1197 |
rename to 3.15.4/4475_emutramp_default_on.patch |
1198 |
|
1199 |
diff --git a/3.2.60/0000_README b/3.2.60/0000_README |
1200 |
index ee22cb5..f6a6bee 100644 |
1201 |
--- a/3.2.60/0000_README |
1202 |
+++ b/3.2.60/0000_README |
1203 |
@@ -158,7 +158,7 @@ Patch: 1059_linux-3.2.60.patch |
1204 |
From: http://www.kernel.org |
1205 |
Desc: Linux 3.2.60 |
1206 |
|
1207 |
-Patch: 4420_grsecurity-3.0-3.2.60-201407052028.patch |
1208 |
+Patch: 4420_grsecurity-3.0-3.2.60-201407072042.patch |
1209 |
From: http://www.grsecurity.net |
1210 |
Desc: hardened-sources base patch from upstream grsecurity |
1211 |
|
1212 |
|
1213 |
diff --git a/3.2.60/4420_grsecurity-3.0-3.2.60-201407052028.patch b/3.2.60/4420_grsecurity-3.0-3.2.60-201407072042.patch |
1214 |
similarity index 99% |
1215 |
rename from 3.2.60/4420_grsecurity-3.0-3.2.60-201407052028.patch |
1216 |
rename to 3.2.60/4420_grsecurity-3.0-3.2.60-201407072042.patch |
1217 |
index 2ddb90d..b3267bc 100644 |
1218 |
--- a/3.2.60/4420_grsecurity-3.0-3.2.60-201407052028.patch |
1219 |
+++ b/3.2.60/4420_grsecurity-3.0-3.2.60-201407072042.patch |
1220 |
@@ -22643,7 +22643,7 @@ index 6a364a6..b147d11 100644 |
1221 |
ip = *(u64 *)(fp+8); |
1222 |
if (!in_sched_functions(ip)) |
1223 |
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c |
1224 |
-index 2dc4121..60e1086 100644 |
1225 |
+index 2dc4121..c7c8aac 100644 |
1226 |
--- a/arch/x86/kernel/ptrace.c |
1227 |
+++ b/arch/x86/kernel/ptrace.c |
1228 |
@@ -181,14 +181,13 @@ unsigned long kernel_stack_pointer(struct pt_regs *regs) |
1229 |
@@ -22665,7 +22665,28 @@ index 2dc4121..60e1086 100644 |
1230 |
|
1231 |
return (unsigned long)regs; |
1232 |
} |
1233 |
-@@ -585,7 +584,7 @@ static void ptrace_triggered(struct perf_event *bp, |
1234 |
+@@ -449,6 +448,20 @@ static int putreg(struct task_struct *child, |
1235 |
+ if (child->thread.gs != value) |
1236 |
+ return do_arch_prctl(child, ARCH_SET_GS, value); |
1237 |
+ return 0; |
1238 |
++ |
1239 |
++ case offsetof(struct user_regs_struct,ip): |
1240 |
++ /* |
1241 |
++ * Protect against any attempt to set ip to an |
1242 |
++ * impossible address. There are dragons lurking if the |
1243 |
++ * address is noncanonical. (This explicitly allows |
1244 |
++ * setting ip to TASK_SIZE_MAX, because user code can do |
1245 |
++ * that all by itself by running off the end of its |
1246 |
++ * address space. |
1247 |
++ */ |
1248 |
++ if (value > TASK_SIZE_MAX) |
1249 |
++ return -EIO; |
1250 |
++ break; |
1251 |
++ |
1252 |
+ #endif |
1253 |
+ } |
1254 |
+ |
1255 |
+@@ -585,7 +598,7 @@ static void ptrace_triggered(struct perf_event *bp, |
1256 |
static unsigned long ptrace_get_dr7(struct perf_event *bp[]) |
1257 |
{ |
1258 |
int i; |
1259 |
@@ -22674,7 +22695,7 @@ index 2dc4121..60e1086 100644 |
1260 |
struct arch_hw_breakpoint *info; |
1261 |
|
1262 |
for (i = 0; i < HBP_NUM; i++) { |
1263 |
-@@ -852,7 +851,7 @@ long arch_ptrace(struct task_struct *child, long request, |
1264 |
+@@ -852,7 +865,7 @@ long arch_ptrace(struct task_struct *child, long request, |
1265 |
unsigned long addr, unsigned long data) |
1266 |
{ |
1267 |
int ret; |
1268 |
@@ -22683,7 +22704,7 @@ index 2dc4121..60e1086 100644 |
1269 |
|
1270 |
switch (request) { |
1271 |
/* read the word at location addr in the USER area. */ |
1272 |
-@@ -937,14 +936,14 @@ long arch_ptrace(struct task_struct *child, long request, |
1273 |
+@@ -937,14 +950,14 @@ long arch_ptrace(struct task_struct *child, long request, |
1274 |
if ((int) addr < 0) |
1275 |
return -EIO; |
1276 |
ret = do_get_thread_area(child, addr, |
1277 |
@@ -22700,7 +22721,7 @@ index 2dc4121..60e1086 100644 |
1278 |
break; |
1279 |
#endif |
1280 |
|
1281 |
-@@ -1229,7 +1228,7 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request, |
1282 |
+@@ -1229,7 +1242,7 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request, |
1283 |
|
1284 |
#ifdef CONFIG_X86_64 |
1285 |
|
1286 |
@@ -22709,7 +22730,7 @@ index 2dc4121..60e1086 100644 |
1287 |
[REGSET_GENERAL] = { |
1288 |
.core_note_type = NT_PRSTATUS, |
1289 |
.n = sizeof(struct user_regs_struct) / sizeof(long), |
1290 |
-@@ -1273,7 +1272,7 @@ static const struct user_regset_view user_x86_64_view = { |
1291 |
+@@ -1273,7 +1286,7 @@ static const struct user_regset_view user_x86_64_view = { |
1292 |
#endif /* CONFIG_X86_64 */ |
1293 |
|
1294 |
#if defined CONFIG_X86_32 || defined CONFIG_IA32_EMULATION |
1295 |
@@ -22718,7 +22739,7 @@ index 2dc4121..60e1086 100644 |
1296 |
[REGSET_GENERAL] = { |
1297 |
.core_note_type = NT_PRSTATUS, |
1298 |
.n = sizeof(struct user_regs_struct32) / sizeof(u32), |
1299 |
-@@ -1326,7 +1325,7 @@ static const struct user_regset_view user_x86_32_view = { |
1300 |
+@@ -1326,7 +1339,7 @@ static const struct user_regset_view user_x86_32_view = { |
1301 |
*/ |
1302 |
u64 xstate_fx_sw_bytes[USER_XSTATE_FX_SW_WORDS]; |
1303 |
|
1304 |
@@ -22727,7 +22748,7 @@ index 2dc4121..60e1086 100644 |
1305 |
{ |
1306 |
#ifdef CONFIG_X86_64 |
1307 |
x86_64_regsets[REGSET_XSTATE].n = size / sizeof(u64); |
1308 |
-@@ -1361,7 +1360,7 @@ static void fill_sigtrap_info(struct task_struct *tsk, |
1309 |
+@@ -1361,7 +1374,7 @@ static void fill_sigtrap_info(struct task_struct *tsk, |
1310 |
memset(info, 0, sizeof(*info)); |
1311 |
info->si_signo = SIGTRAP; |
1312 |
info->si_code = si_code; |
1313 |
@@ -22736,7 +22757,7 @@ index 2dc4121..60e1086 100644 |
1314 |
} |
1315 |
|
1316 |
void user_single_step_siginfo(struct task_struct *tsk, |
1317 |
-@@ -1390,6 +1389,10 @@ void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs, |
1318 |
+@@ -1390,6 +1403,10 @@ void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs, |
1319 |
# define IS_IA32 0 |
1320 |
#endif |
1321 |
|
1322 |
@@ -22747,7 +22768,7 @@ index 2dc4121..60e1086 100644 |
1323 |
/* |
1324 |
* We must return the syscall number to actually look up in the table. |
1325 |
* This can be -1L to skip running any syscall at all. |
1326 |
-@@ -1398,6 +1401,11 @@ long syscall_trace_enter(struct pt_regs *regs) |
1327 |
+@@ -1398,6 +1415,11 @@ long syscall_trace_enter(struct pt_regs *regs) |
1328 |
{ |
1329 |
long ret = 0; |
1330 |
|
1331 |
@@ -22759,7 +22780,7 @@ index 2dc4121..60e1086 100644 |
1332 |
/* |
1333 |
* If we stepped into a sysenter/syscall insn, it trapped in |
1334 |
* kernel mode; do_debug() cleared TF and set TIF_SINGLESTEP. |
1335 |
-@@ -1409,7 +1417,11 @@ long syscall_trace_enter(struct pt_regs *regs) |
1336 |
+@@ -1409,7 +1431,11 @@ long syscall_trace_enter(struct pt_regs *regs) |
1337 |
regs->flags |= X86_EFLAGS_TF; |
1338 |
|
1339 |
/* do the secure computing check first */ |
1340 |
@@ -22772,7 +22793,7 @@ index 2dc4121..60e1086 100644 |
1341 |
|
1342 |
if (unlikely(test_thread_flag(TIF_SYSCALL_EMU))) |
1343 |
ret = -1L; |
1344 |
-@@ -1436,6 +1448,7 @@ long syscall_trace_enter(struct pt_regs *regs) |
1345 |
+@@ -1436,6 +1462,7 @@ long syscall_trace_enter(struct pt_regs *regs) |
1346 |
#endif |
1347 |
} |
1348 |
|
1349 |
@@ -22780,7 +22801,7 @@ index 2dc4121..60e1086 100644 |
1350 |
return ret ?: regs->orig_ax; |
1351 |
} |
1352 |
|
1353 |
-@@ -1443,6 +1456,11 @@ void syscall_trace_leave(struct pt_regs *regs) |
1354 |
+@@ -1443,6 +1470,11 @@ void syscall_trace_leave(struct pt_regs *regs) |
1355 |
{ |
1356 |
bool step; |
1357 |
|
1358 |
@@ -104860,7 +104881,7 @@ index 369df3f..b660190 100644 |
1359 |
table = kmemdup(acct_sysctl_table, sizeof(acct_sysctl_table), |
1360 |
GFP_KERNEL); |
1361 |
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c |
1362 |
-index 7489bd3..5f4df88 100644 |
1363 |
+index 7489bd3..b7a282c 100644 |
1364 |
--- a/net/netfilter/nf_conntrack_core.c |
1365 |
+++ b/net/netfilter/nf_conntrack_core.c |
1366 |
@@ -1491,6 +1491,10 @@ err_proto: |
1367 |
@@ -104879,7 +104900,7 @@ index 7489bd3..5f4df88 100644 |
1368 |
} |
1369 |
|
1370 |
+#ifdef CONFIG_GRKERNSEC_HIDESYM |
1371 |
-+ net->ct.slabname = kasprintf(GFP_KERNEL, "nf_conntrack_%08lx", atomic_inc_return_unchecked(&conntrack_cache_id)); |
1372 |
++ net->ct.slabname = kasprintf(GFP_KERNEL, "nf_conntrack_%08x", atomic_inc_return_unchecked(&conntrack_cache_id)); |
1373 |
+#else |
1374 |
net->ct.slabname = kasprintf(GFP_KERNEL, "nf_conntrack_%p", net); |
1375 |
+#endif |