1 |
commit: f48ab9b7eb98c814a6a82fb5203ee7660f67a5dd |
2 |
Author: Anthony G. Basile <blueness <AT> gentoo <DOT> org> |
3 |
AuthorDate: Thu Jun 25 14:49:00 2015 +0000 |
4 |
Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org> |
5 |
CommitDate: Thu Jun 25 14:49:00 2015 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/hardened-patchset.git/commit/?id=f48ab9b7 |
7 |
|
8 |
Grsec/PaX: 3.1-{3.2.69,3.14.45,4.0.6}-201506232104 |
9 |
|
10 |
{3.14.44 => 3.14.45}/0000_README | 2 +- |
11 |
.../4420_grsecurity-3.1-3.14.45-201506232103.patch | 364 ++++++++++----- |
12 |
{4.0.5 => 3.14.45}/4425_grsec_remove_EI_PAX.patch | 0 |
13 |
.../4427_force_XATTR_PAX_tmpfs.patch | 0 |
14 |
.../4430_grsec-remove-localversion-grsec.patch | 0 |
15 |
.../4435_grsec-mute-warnings.patch | 0 |
16 |
.../4440_grsec-remove-protected-paths.patch | 0 |
17 |
.../4450_grsec-kconfig-default-gids.patch | 0 |
18 |
.../4465_selinux-avc_audit-log-curr_ip.patch | 0 |
19 |
.../4470_disable-compat_vdso.patch | 0 |
20 |
{4.0.5 => 3.14.45}/4475_emutramp_default_on.patch | 0 |
21 |
3.2.69/0000_README | 2 +- |
22 |
... 4420_grsecurity-3.1-3.2.69-201506232100.patch} | 56 ++- |
23 |
{4.0.5 => 4.0.6}/0000_README | 2 +- |
24 |
.../4420_grsecurity-3.1-4.0.6-201506232104.patch | 491 ++++++++++++++------- |
25 |
{3.14.44 => 4.0.6}/4425_grsec_remove_EI_PAX.patch | 0 |
26 |
{4.0.5 => 4.0.6}/4427_force_XATTR_PAX_tmpfs.patch | 0 |
27 |
.../4430_grsec-remove-localversion-grsec.patch | 0 |
28 |
{4.0.5 => 4.0.6}/4435_grsec-mute-warnings.patch | 0 |
29 |
.../4440_grsec-remove-protected-paths.patch | 0 |
30 |
.../4450_grsec-kconfig-default-gids.patch | 0 |
31 |
.../4465_selinux-avc_audit-log-curr_ip.patch | 0 |
32 |
{4.0.5 => 4.0.6}/4470_disable-compat_vdso.patch | 0 |
33 |
{3.14.44 => 4.0.6}/4475_emutramp_default_on.patch | 0 |
34 |
24 files changed, 639 insertions(+), 278 deletions(-) |
35 |
|
36 |
diff --git a/3.14.44/0000_README b/3.14.45/0000_README |
37 |
similarity index 96% |
38 |
rename from 3.14.44/0000_README |
39 |
rename to 3.14.45/0000_README |
40 |
index 2105f07..53a1411 100644 |
41 |
--- a/3.14.44/0000_README |
42 |
+++ b/3.14.45/0000_README |
43 |
@@ -2,7 +2,7 @@ README |
44 |
----------------------------------------------------------------------------- |
45 |
Individual Patch Descriptions: |
46 |
----------------------------------------------------------------------------- |
47 |
-Patch: 4420_grsecurity-3.1-3.14.44-201506082249.patch |
48 |
+Patch: 4420_grsecurity-3.1-3.14.45-201506232103.patch |
49 |
From: http://www.grsecurity.net |
50 |
Desc: hardened-sources base patch from upstream grsecurity |
51 |
|
52 |
|
53 |
diff --git a/3.14.44/4420_grsecurity-3.1-3.14.44-201506082249.patch b/3.14.45/4420_grsecurity-3.1-3.14.45-201506232103.patch |
54 |
similarity index 99% |
55 |
rename from 3.14.44/4420_grsecurity-3.1-3.14.44-201506082249.patch |
56 |
rename to 3.14.45/4420_grsecurity-3.1-3.14.45-201506232103.patch |
57 |
index 3556faf..fe15fa1 100644 |
58 |
--- a/3.14.44/4420_grsecurity-3.1-3.14.44-201506082249.patch |
59 |
+++ b/3.14.45/4420_grsecurity-3.1-3.14.45-201506232103.patch |
60 |
@@ -295,7 +295,7 @@ index 5d91ba1..ef1d374 100644 |
61 |
|
62 |
pcd. [PARIDE] |
63 |
diff --git a/Makefile b/Makefile |
64 |
-index 9f2471c..0adedd5 100644 |
65 |
+index c92186c..a387fb0 100644 |
66 |
--- a/Makefile |
67 |
+++ b/Makefile |
68 |
@@ -244,8 +244,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ |
69 |
@@ -6940,7 +6940,7 @@ index 44a1f79..2bd6aa3 100644 |
70 |
|
71 |
void __init gt641xx_irq_init(void) |
72 |
diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c |
73 |
-index d1fea7a..2e591b0 100644 |
74 |
+index 7479d8d..5c37e62 100644 |
75 |
--- a/arch/mips/kernel/irq.c |
76 |
+++ b/arch/mips/kernel/irq.c |
77 |
@@ -77,17 +77,17 @@ void ack_bad_irq(unsigned int irq) |
78 |
@@ -6964,18 +6964,16 @@ index d1fea7a..2e591b0 100644 |
79 |
} |
80 |
|
81 |
void __init init_IRQ(void) |
82 |
-@@ -110,7 +110,10 @@ void __init init_IRQ(void) |
83 |
- #endif |
84 |
+@@ -111,6 +111,8 @@ void __init init_IRQ(void) |
85 |
} |
86 |
|
87 |
+ #ifdef CONFIG_DEBUG_STACKOVERFLOW |
88 |
+ |
89 |
- #ifdef DEBUG_STACKOVERFLOW |
90 |
+extern void gr_handle_kernel_exploit(void); |
91 |
-+ |
92 |
static inline void check_stack_overflow(void) |
93 |
{ |
94 |
unsigned long sp; |
95 |
-@@ -126,6 +129,7 @@ static inline void check_stack_overflow(void) |
96 |
+@@ -126,6 +128,7 @@ static inline void check_stack_overflow(void) |
97 |
printk("do_IRQ: stack overflow: %ld\n", |
98 |
sp - sizeof(struct thread_info)); |
99 |
dump_stack(); |
100 |
@@ -18901,7 +18899,7 @@ index cad82c9..2e5c5c1 100644 |
101 |
|
102 |
#endif /* __KERNEL__ */ |
103 |
diff --git a/arch/x86/include/asm/segment.h b/arch/x86/include/asm/segment.h |
104 |
-index 6f1c3a8..7744f19 100644 |
105 |
+index bcc9a2f..2d6e37b 100644 |
106 |
--- a/arch/x86/include/asm/segment.h |
107 |
+++ b/arch/x86/include/asm/segment.h |
108 |
@@ -64,10 +64,15 @@ |
109 |
@@ -18987,7 +18985,7 @@ index 6f1c3a8..7744f19 100644 |
110 |
#define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS*8+3) |
111 |
#define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS*8+3) |
112 |
#ifndef CONFIG_PARAVIRT |
113 |
-@@ -268,7 +287,7 @@ static inline unsigned long get_limit(unsigned long segment) |
114 |
+@@ -279,7 +298,7 @@ static inline unsigned long get_limit(unsigned long segment) |
115 |
{ |
116 |
unsigned long __limit; |
117 |
asm("lsll %1,%0" : "=r" (__limit) : "r" (segment)); |
118 |
@@ -24558,7 +24556,7 @@ index 1ffc32d..e52c745 100644 |
119 |
} |
120 |
|
121 |
diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c |
122 |
-index 85126cc..1bbce17 100644 |
123 |
+index 5fc4ac7..90be4e1 100644 |
124 |
--- a/arch/x86/kernel/head64.c |
125 |
+++ b/arch/x86/kernel/head64.c |
126 |
@@ -67,12 +67,12 @@ again: |
127 |
@@ -24611,7 +24609,7 @@ index 85126cc..1bbce17 100644 |
128 |
init_level4_pgt[511] = early_level4_pgt[511]; |
129 |
|
130 |
diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S |
131 |
-index f36bd42..0ab4474 100644 |
132 |
+index 30a2aa3..d62e1dd 100644 |
133 |
--- a/arch/x86/kernel/head_32.S |
134 |
+++ b/arch/x86/kernel/head_32.S |
135 |
@@ -26,6 +26,12 @@ |
136 |
@@ -24821,7 +24819,7 @@ index f36bd42..0ab4474 100644 |
137 |
movl %eax,%gs |
138 |
|
139 |
xorl %eax,%eax # Clear LDT |
140 |
-@@ -512,8 +594,11 @@ setup_once: |
141 |
+@@ -513,8 +595,11 @@ setup_once: |
142 |
* relocation. Manually set base address in stack canary |
143 |
* segment descriptor. |
144 |
*/ |
145 |
@@ -24834,7 +24832,7 @@ index f36bd42..0ab4474 100644 |
146 |
movw %cx, 8 * GDT_ENTRY_STACK_CANARY + 2(%eax) |
147 |
shrl $16, %ecx |
148 |
movb %cl, 8 * GDT_ENTRY_STACK_CANARY + 4(%eax) |
149 |
-@@ -548,7 +633,7 @@ ENTRY(early_idt_handler) |
150 |
+@@ -551,7 +636,7 @@ early_idt_handler_common: |
151 |
cmpl $2,(%esp) # X86_TRAP_NMI |
152 |
je is_nmi # Ignore NMI |
153 |
|
154 |
@@ -24843,7 +24841,7 @@ index f36bd42..0ab4474 100644 |
155 |
je hlt_loop |
156 |
incl %ss:early_recursion_flag |
157 |
|
158 |
-@@ -586,8 +671,8 @@ ENTRY(early_idt_handler) |
159 |
+@@ -589,8 +674,8 @@ early_idt_handler_common: |
160 |
pushl (20+6*4)(%esp) /* trapno */ |
161 |
pushl $fault_msg |
162 |
call printk |
163 |
@@ -24853,7 +24851,7 @@ index f36bd42..0ab4474 100644 |
164 |
hlt_loop: |
165 |
hlt |
166 |
jmp hlt_loop |
167 |
-@@ -607,8 +692,11 @@ ENDPROC(early_idt_handler) |
168 |
+@@ -610,8 +695,11 @@ ENDPROC(early_idt_handler_common) |
169 |
/* This is the default interrupt "handler" :-) */ |
170 |
ALIGN |
171 |
ignore_int: |
172 |
@@ -24866,7 +24864,7 @@ index f36bd42..0ab4474 100644 |
173 |
pushl %eax |
174 |
pushl %ecx |
175 |
pushl %edx |
176 |
-@@ -617,9 +705,6 @@ ignore_int: |
177 |
+@@ -620,9 +708,6 @@ ignore_int: |
178 |
movl $(__KERNEL_DS),%eax |
179 |
movl %eax,%ds |
180 |
movl %eax,%es |
181 |
@@ -24876,7 +24874,7 @@ index f36bd42..0ab4474 100644 |
182 |
pushl 16(%esp) |
183 |
pushl 24(%esp) |
184 |
pushl 32(%esp) |
185 |
-@@ -653,29 +738,34 @@ ENTRY(setup_once_ref) |
186 |
+@@ -656,29 +741,34 @@ ENTRY(setup_once_ref) |
187 |
/* |
188 |
* BSS section |
189 |
*/ |
190 |
@@ -24916,7 +24914,7 @@ index f36bd42..0ab4474 100644 |
191 |
ENTRY(initial_page_table) |
192 |
.long pa(initial_pg_pmd+PGD_IDENT_ATTR),0 /* low identity map */ |
193 |
# if KPMDS == 3 |
194 |
-@@ -694,12 +784,20 @@ ENTRY(initial_page_table) |
195 |
+@@ -697,12 +787,20 @@ ENTRY(initial_page_table) |
196 |
# error "Kernel PMDs should be 1, 2 or 3" |
197 |
# endif |
198 |
.align PAGE_SIZE /* needs to be page-sized too */ |
199 |
@@ -24938,7 +24936,7 @@ index f36bd42..0ab4474 100644 |
200 |
|
201 |
__INITRODATA |
202 |
int_msg: |
203 |
-@@ -727,7 +825,7 @@ fault_msg: |
204 |
+@@ -730,7 +828,7 @@ fault_msg: |
205 |
* segment size, and 32-bit linear address value: |
206 |
*/ |
207 |
|
208 |
@@ -24947,7 +24945,7 @@ index f36bd42..0ab4474 100644 |
209 |
.globl boot_gdt_descr |
210 |
.globl idt_descr |
211 |
|
212 |
-@@ -736,7 +834,7 @@ fault_msg: |
213 |
+@@ -739,7 +837,7 @@ fault_msg: |
214 |
.word 0 # 32 bit align gdt_desc.address |
215 |
boot_gdt_descr: |
216 |
.word __BOOT_DS+7 |
217 |
@@ -24956,7 +24954,7 @@ index f36bd42..0ab4474 100644 |
218 |
|
219 |
.word 0 # 32-bit align idt_desc.address |
220 |
idt_descr: |
221 |
-@@ -747,7 +845,7 @@ idt_descr: |
222 |
+@@ -750,7 +848,7 @@ idt_descr: |
223 |
.word 0 # 32 bit align gdt_desc.address |
224 |
ENTRY(early_gdt_descr) |
225 |
.word GDT_ENTRIES*8-1 |
226 |
@@ -24965,7 +24963,7 @@ index f36bd42..0ab4474 100644 |
227 |
|
228 |
/* |
229 |
* The boot_gdt must mirror the equivalent in setup.S and is |
230 |
-@@ -756,5 +854,65 @@ ENTRY(early_gdt_descr) |
231 |
+@@ -759,5 +857,65 @@ ENTRY(early_gdt_descr) |
232 |
.align L1_CACHE_BYTES |
233 |
ENTRY(boot_gdt) |
234 |
.fill GDT_ENTRY_BOOT_CS,8,0 |
235 |
@@ -25034,7 +25032,7 @@ index f36bd42..0ab4474 100644 |
236 |
+ .fill PAGE_SIZE_asm - GDT_SIZE,1,0 |
237 |
+ .endr |
238 |
diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S |
239 |
-index a468c0a..05f3865 100644 |
240 |
+index a2dc0ad..f3f397d 100644 |
241 |
--- a/arch/x86/kernel/head_64.S |
242 |
+++ b/arch/x86/kernel/head_64.S |
243 |
@@ -20,6 +20,8 @@ |
244 |
@@ -25143,7 +25141,7 @@ index a468c0a..05f3865 100644 |
245 |
.word 0 |
246 |
__FINITDATA |
247 |
|
248 |
-@@ -391,7 +427,7 @@ ENTRY(early_idt_handler) |
249 |
+@@ -393,7 +429,7 @@ early_idt_handler_common: |
250 |
call dump_stack |
251 |
#ifdef CONFIG_KALLSYMS |
252 |
leaq early_idt_ripmsg(%rip),%rdi |
253 |
@@ -25152,7 +25150,7 @@ index a468c0a..05f3865 100644 |
254 |
call __print_symbol |
255 |
#endif |
256 |
#endif /* EARLY_PRINTK */ |
257 |
-@@ -420,6 +456,7 @@ ENDPROC(early_idt_handler) |
258 |
+@@ -422,6 +458,7 @@ ENDPROC(early_idt_handler_common) |
259 |
early_recursion_flag: |
260 |
.long 0 |
261 |
|
262 |
@@ -25160,7 +25158,7 @@ index a468c0a..05f3865 100644 |
263 |
#ifdef CONFIG_EARLY_PRINTK |
264 |
early_idt_msg: |
265 |
.asciz "PANIC: early exception %02lx rip %lx:%lx error %lx cr2 %lx\n" |
266 |
-@@ -447,29 +484,52 @@ NEXT_PAGE(early_level4_pgt) |
267 |
+@@ -449,29 +486,52 @@ NEXT_PAGE(early_level4_pgt) |
268 |
NEXT_PAGE(early_dynamic_pgts) |
269 |
.fill 512*EARLY_DYNAMIC_PAGE_TABLES,8,0 |
270 |
|
271 |
@@ -25222,7 +25220,7 @@ index a468c0a..05f3865 100644 |
272 |
|
273 |
NEXT_PAGE(level3_kernel_pgt) |
274 |
.fill L3_START_KERNEL,8,0 |
275 |
-@@ -477,6 +537,9 @@ NEXT_PAGE(level3_kernel_pgt) |
276 |
+@@ -479,6 +539,9 @@ NEXT_PAGE(level3_kernel_pgt) |
277 |
.quad level2_kernel_pgt - __START_KERNEL_map + _KERNPG_TABLE |
278 |
.quad level2_fixmap_pgt - __START_KERNEL_map + _PAGE_TABLE |
279 |
|
280 |
@@ -25232,7 +25230,7 @@ index a468c0a..05f3865 100644 |
281 |
NEXT_PAGE(level2_kernel_pgt) |
282 |
/* |
283 |
* 512 MB kernel mapping. We spend a full page on this pagetable |
284 |
-@@ -492,30 +555,68 @@ NEXT_PAGE(level2_kernel_pgt) |
285 |
+@@ -494,30 +557,68 @@ NEXT_PAGE(level2_kernel_pgt) |
286 |
KERNEL_IMAGE_SIZE/PMD_SIZE) |
287 |
|
288 |
NEXT_PAGE(level2_fixmap_pgt) |
289 |
@@ -28855,6 +28853,19 @@ index 453e5fb..214168f 100644 |
290 |
|
291 |
#define APIC_LVT_NUM 6 |
292 |
/* 14 is the version for Xeon and Pentium 8.4.8*/ |
293 |
+diff --git a/arch/x86/kvm/lapic.h b/arch/x86/kvm/lapic.h |
294 |
+index 6a11845..7205173 100644 |
295 |
+--- a/arch/x86/kvm/lapic.h |
296 |
++++ b/arch/x86/kvm/lapic.h |
297 |
+@@ -165,7 +165,7 @@ static inline u16 apic_logical_id(struct kvm_apic_map *map, u32 ldr) |
298 |
+ |
299 |
+ static inline bool kvm_apic_has_events(struct kvm_vcpu *vcpu) |
300 |
+ { |
301 |
+- return vcpu->arch.apic->pending_events; |
302 |
++ return kvm_vcpu_has_lapic(vcpu) && vcpu->arch.apic->pending_events; |
303 |
+ } |
304 |
+ |
305 |
+ bool kvm_apic_pending_eoi(struct kvm_vcpu *vcpu, int vector); |
306 |
diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h |
307 |
index cba218a..1cc1bed 100644 |
308 |
--- a/arch/x86/kvm/paging_tmpl.h |
309 |
@@ -34427,7 +34438,7 @@ index 0149575..f746de8 100644 |
310 |
+ pax_force_retaddr |
311 |
ret |
312 |
diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c |
313 |
-index af2d431..c405730 100644 |
314 |
+index 1fed139..842a14e 100644 |
315 |
--- a/arch/x86/net/bpf_jit_comp.c |
316 |
+++ b/arch/x86/net/bpf_jit_comp.c |
317 |
@@ -50,13 +50,102 @@ static inline u8 *emit_code(u8 *ptr, u32 bytes, unsigned int len) |
318 |
@@ -34661,7 +34672,7 @@ index af2d431..c405730 100644 |
319 |
addrs[i] = proglen; |
320 |
} |
321 |
cleanup_addr = proglen; /* epilogue address */ |
322 |
-@@ -285,6 +394,10 @@ void bpf_jit_compile(struct sk_filter *fp) |
323 |
+@@ -290,6 +399,10 @@ void bpf_jit_compile(struct sk_filter *fp) |
324 |
for (i = 0; i < flen; i++) { |
325 |
unsigned int K = filter[i].k; |
326 |
|
327 |
@@ -34672,7 +34683,7 @@ index af2d431..c405730 100644 |
328 |
switch (filter[i].code) { |
329 |
case BPF_S_ALU_ADD_X: /* A += X; */ |
330 |
seen |= SEEN_XREG; |
331 |
-@@ -317,10 +430,8 @@ void bpf_jit_compile(struct sk_filter *fp) |
332 |
+@@ -322,10 +435,8 @@ void bpf_jit_compile(struct sk_filter *fp) |
333 |
case BPF_S_ALU_MUL_K: /* A *= K */ |
334 |
if (is_imm8(K)) |
335 |
EMIT3(0x6b, 0xc0, K); /* imul imm8,%eax,%eax */ |
336 |
@@ -34685,7 +34696,7 @@ index af2d431..c405730 100644 |
337 |
break; |
338 |
case BPF_S_ALU_DIV_X: /* A /= X; */ |
339 |
seen |= SEEN_XREG; |
340 |
-@@ -333,7 +444,7 @@ void bpf_jit_compile(struct sk_filter *fp) |
341 |
+@@ -338,7 +449,7 @@ void bpf_jit_compile(struct sk_filter *fp) |
342 |
EMIT_COND_JMP(X86_JE, addrs[pc_ret0 - 1] - |
343 |
(addrs[i] - 4)); |
344 |
} else { |
345 |
@@ -34694,7 +34705,7 @@ index af2d431..c405730 100644 |
346 |
CLEAR_A(); |
347 |
EMIT1_off32(0xe9, cleanup_addr - (addrs[i] - 4)); /* jmp .+off32 */ |
348 |
} |
349 |
-@@ -364,7 +475,11 @@ void bpf_jit_compile(struct sk_filter *fp) |
350 |
+@@ -369,7 +480,11 @@ void bpf_jit_compile(struct sk_filter *fp) |
351 |
break; |
352 |
} |
353 |
EMIT2(0x31, 0xd2); /* xor %edx,%edx */ |
354 |
@@ -34706,7 +34717,7 @@ index af2d431..c405730 100644 |
355 |
EMIT2(0xf7, 0xf1); /* div %ecx */ |
356 |
EMIT2(0x89, 0xd0); /* mov %edx,%eax */ |
357 |
break; |
358 |
-@@ -372,7 +487,11 @@ void bpf_jit_compile(struct sk_filter *fp) |
359 |
+@@ -377,7 +492,11 @@ void bpf_jit_compile(struct sk_filter *fp) |
360 |
if (K == 1) |
361 |
break; |
362 |
EMIT2(0x31, 0xd2); /* xor %edx,%edx */ |
363 |
@@ -34718,7 +34729,7 @@ index af2d431..c405730 100644 |
364 |
EMIT2(0xf7, 0xf1); /* div %ecx */ |
365 |
break; |
366 |
case BPF_S_ALU_AND_X: |
367 |
-@@ -643,8 +762,7 @@ common_load_ind: seen |= SEEN_DATAREF | SEEN_XREG; |
368 |
+@@ -648,8 +767,7 @@ common_load_ind: seen |= SEEN_DATAREF | SEEN_XREG; |
369 |
if (is_imm8(K)) { |
370 |
EMIT3(0x8d, 0x73, K); /* lea imm8(%rbx), %esi */ |
371 |
} else { |
372 |
@@ -34728,7 +34739,7 @@ index af2d431..c405730 100644 |
373 |
} |
374 |
} else { |
375 |
EMIT2(0x89,0xde); /* mov %ebx,%esi */ |
376 |
-@@ -717,7 +835,7 @@ cond_branch: f_offset = addrs[i + filter[i].jf] - addrs[i]; |
377 |
+@@ -722,7 +840,7 @@ cond_branch: f_offset = addrs[i + filter[i].jf] - addrs[i]; |
378 |
} |
379 |
if (filter[i].jt != 0) { |
380 |
if (filter[i].jf && f_offset) |
381 |
@@ -34737,7 +34748,7 @@ index af2d431..c405730 100644 |
382 |
EMIT_COND_JMP(t_op, t_offset); |
383 |
if (filter[i].jf) |
384 |
EMIT_JMP(f_offset); |
385 |
-@@ -734,10 +852,12 @@ cond_branch: f_offset = addrs[i + filter[i].jf] - addrs[i]; |
386 |
+@@ -739,10 +857,12 @@ cond_branch: f_offset = addrs[i + filter[i].jf] - addrs[i]; |
387 |
if (unlikely(proglen + ilen > oldproglen)) { |
388 |
pr_err("bpb_jit_compile fatal error\n"); |
389 |
kfree(addrs); |
390 |
@@ -34751,7 +34762,7 @@ index af2d431..c405730 100644 |
391 |
} |
392 |
proglen += ilen; |
393 |
addrs[i] = proglen; |
394 |
-@@ -770,7 +890,6 @@ cond_branch: f_offset = addrs[i + filter[i].jf] - addrs[i]; |
395 |
+@@ -775,7 +895,6 @@ cond_branch: f_offset = addrs[i + filter[i].jf] - addrs[i]; |
396 |
|
397 |
if (image) { |
398 |
bpf_flush_icache(header, image + proglen); |
399 |
@@ -34759,7 +34770,7 @@ index af2d431..c405730 100644 |
400 |
fp->bpf_func = (void *)image; |
401 |
} |
402 |
out: |
403 |
-@@ -782,10 +901,8 @@ static void bpf_jit_free_deferred(struct work_struct *work) |
404 |
+@@ -787,10 +906,8 @@ static void bpf_jit_free_deferred(struct work_struct *work) |
405 |
{ |
406 |
struct sk_filter *fp = container_of(work, struct sk_filter, work); |
407 |
unsigned long addr = (unsigned long)fp->bpf_func & PAGE_MASK; |
408 |
@@ -36762,7 +36773,7 @@ index a0926a6..b2b14b2 100644 |
409 |
err = -EFAULT; |
410 |
goto out; |
411 |
diff --git a/block/genhd.c b/block/genhd.c |
412 |
-index a8d586a..d9910b1 100644 |
413 |
+index 9316f5f..16b4af2 100644 |
414 |
--- a/block/genhd.c |
415 |
+++ b/block/genhd.c |
416 |
@@ -469,21 +469,24 @@ static char *bdevt_str(dev_t devt, char *buf) |
417 |
@@ -40615,6 +40626,33 @@ index dcaae4c..80cd4dd 100644 |
418 |
.attrs = cpuidle_default_attrs, |
419 |
.name = "cpuidle", |
420 |
}; |
421 |
+diff --git a/drivers/crypto/caam/caamhash.c b/drivers/crypto/caam/caamhash.c |
422 |
+index d97a03d..acf64bb 100644 |
423 |
+--- a/drivers/crypto/caam/caamhash.c |
424 |
++++ b/drivers/crypto/caam/caamhash.c |
425 |
+@@ -1469,6 +1469,9 @@ static int ahash_init(struct ahash_request *req) |
426 |
+ state->final = ahash_final_no_ctx; |
427 |
+ |
428 |
+ state->current_buf = 0; |
429 |
++ state->buf_dma = 0; |
430 |
++ state->buflen_0 = 0; |
431 |
++ state->buflen_1 = 0; |
432 |
+ |
433 |
+ return 0; |
434 |
+ } |
435 |
+diff --git a/drivers/crypto/caam/caamrng.c b/drivers/crypto/caam/caamrng.c |
436 |
+index 28486b1..ae6dae8 100644 |
437 |
+--- a/drivers/crypto/caam/caamrng.c |
438 |
++++ b/drivers/crypto/caam/caamrng.c |
439 |
+@@ -56,7 +56,7 @@ |
440 |
+ |
441 |
+ /* Buffer, its dma address and lock */ |
442 |
+ struct buf_data { |
443 |
+- u8 buf[RN_BUF_SIZE]; |
444 |
++ u8 buf[RN_BUF_SIZE] ____cacheline_aligned; |
445 |
+ dma_addr_t addr; |
446 |
+ struct completion filled; |
447 |
+ u32 hw_desc[DESC_JOB_O_LEN]; |
448 |
diff --git a/drivers/crypto/hifn_795x.c b/drivers/crypto/hifn_795x.c |
449 |
index 12fea3e2..1e28f47 100644 |
450 |
--- a/drivers/crypto/hifn_795x.c |
451 |
@@ -42285,7 +42323,7 @@ index 4a85bb6..aaea819 100644 |
452 |
if (regcomp |
453 |
(&mask_rex, "(0x[0-9a-fA-F]*) *([_a-zA-Z0-9]*)", REG_EXTENDED)) { |
454 |
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c |
455 |
-index e39026c..b32e98e 100644 |
456 |
+index 129915e..af52907 100644 |
457 |
--- a/drivers/gpu/drm/radeon/radeon_device.c |
458 |
+++ b/drivers/gpu/drm/radeon/radeon_device.c |
459 |
@@ -1128,7 +1128,7 @@ static bool radeon_switcheroo_can_switch(struct pci_dev *pdev) |
460 |
@@ -53865,7 +53903,7 @@ index 5bfd807..337352af 100644 |
461 |
|
462 |
dlci->modem_rx = 0; |
463 |
diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c |
464 |
-index 8ab46ad..b8db1e2 100644 |
465 |
+index 8195190..46537ed 100644 |
466 |
--- a/drivers/tty/n_tty.c |
467 |
+++ b/drivers/tty/n_tty.c |
468 |
@@ -115,7 +115,7 @@ struct n_tty_data { |
469 |
@@ -53877,7 +53915,7 @@ index 8ab46ad..b8db1e2 100644 |
470 |
size_t line_start; |
471 |
|
472 |
/* protected by output lock */ |
473 |
-@@ -2578,6 +2578,7 @@ void n_tty_inherit_ops(struct tty_ldisc_ops *ops) |
474 |
+@@ -2589,6 +2589,7 @@ void n_tty_inherit_ops(struct tty_ldisc_ops *ops) |
475 |
{ |
476 |
*ops = tty_ldisc_N_TTY; |
477 |
ops->owner = NULL; |
478 |
@@ -66883,7 +66921,7 @@ index f70119f..ab5894d 100644 |
479 |
spin_lock_init(&delayed_root->lock); |
480 |
init_waitqueue_head(&delayed_root->wait); |
481 |
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c |
482 |
-index d04db81..96e54f1 100644 |
483 |
+index 92cbfbf..0ca1d83 100644 |
484 |
--- a/fs/btrfs/super.c |
485 |
+++ b/fs/btrfs/super.c |
486 |
@@ -268,7 +268,7 @@ void __btrfs_abort_transaction(struct btrfs_trans_handle *trans, |
487 |
@@ -103186,6 +103224,40 @@ index c6646a5..574b47c 100644 |
488 |
static void __add_event_to_tracers(struct ftrace_event_call *call); |
489 |
|
490 |
/* Add an additional event_call dynamically */ |
491 |
+diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c |
492 |
+index 8a86319..32ef21b 100644 |
493 |
+--- a/kernel/trace/trace_events_filter.c |
494 |
++++ b/kernel/trace/trace_events_filter.c |
495 |
+@@ -1399,19 +1399,27 @@ static int check_preds(struct filter_parse_state *ps) |
496 |
+ { |
497 |
+ int n_normal_preds = 0, n_logical_preds = 0; |
498 |
+ struct postfix_elt *elt; |
499 |
++ int cnt = 0; |
500 |
+ |
501 |
+ list_for_each_entry(elt, &ps->postfix, list) { |
502 |
+- if (elt->op == OP_NONE) |
503 |
++ if (elt->op == OP_NONE) { |
504 |
++ cnt++; |
505 |
+ continue; |
506 |
++ } |
507 |
+ |
508 |
+ if (elt->op == OP_AND || elt->op == OP_OR) { |
509 |
+ n_logical_preds++; |
510 |
++ cnt--; |
511 |
+ continue; |
512 |
+ } |
513 |
++ // OP_NOT is not supported in this kernel, will get |
514 |
++ // a reject here when it's backported |
515 |
++ cnt--; |
516 |
+ n_normal_preds++; |
517 |
++ WARN_ON_ONCE(cnt < 0); |
518 |
+ } |
519 |
+ |
520 |
+- if (!n_normal_preds || n_logical_preds >= n_normal_preds) { |
521 |
++ if (cnt != 1 || !n_normal_preds || n_logical_preds >= n_normal_preds) { |
522 |
+ parse_error(ps, FILT_ERR_INVALID_FILTER, 0); |
523 |
+ return -EINVAL; |
524 |
+ } |
525 |
diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c |
526 |
index 0b99120..881174f 100644 |
527 |
--- a/kernel/trace/trace_functions_graph.c |
528 |
@@ -104074,6 +104146,28 @@ index f07a40d..0a445a7 100644 |
529 |
retval = 1; |
530 |
} |
531 |
spin_unlock(&lockref->lock); |
532 |
+diff --git a/lib/mpi/longlong.h b/lib/mpi/longlong.h |
533 |
+index aac5114..a89d041 100644 |
534 |
+--- a/lib/mpi/longlong.h |
535 |
++++ b/lib/mpi/longlong.h |
536 |
+@@ -639,7 +639,7 @@ do { \ |
537 |
+ ************** MIPS ***************** |
538 |
+ ***************************************/ |
539 |
+ #if defined(__mips__) && W_TYPE_SIZE == 32 |
540 |
+-#if __GNUC__ >= 4 && __GNUC_MINOR__ >= 4 |
541 |
++#if (__GNUC__ >= 5) || (__GNUC__ >= 4 && __GNUC_MINOR__ >= 4) |
542 |
+ #define umul_ppmm(w1, w0, u, v) \ |
543 |
+ do { \ |
544 |
+ UDItype __ll = (UDItype)(u) * (v); \ |
545 |
+@@ -671,7 +671,7 @@ do { \ |
546 |
+ ************** MIPS/64 ************** |
547 |
+ ***************************************/ |
548 |
+ #if (defined(__mips) && __mips >= 3) && W_TYPE_SIZE == 64 |
549 |
+-#if __GNUC__ >= 4 && __GNUC_MINOR__ >= 4 |
550 |
++#if (__GNUC__ >= 5) || (__GNUC__ >= 4 && __GNUC_MINOR__ >= 4) |
551 |
+ #define umul_ppmm(w1, w0, u, v) \ |
552 |
+ do { \ |
553 |
+ typedef unsigned int __ll_UTItype __attribute__((mode(TI))); \ |
554 |
diff --git a/lib/nlattr.c b/lib/nlattr.c |
555 |
index 10ad042d..25b47b5 100644 |
556 |
--- a/lib/nlattr.c |
557 |
@@ -110398,7 +110492,7 @@ index a16ed7b..eb44d17 100644 |
558 |
|
559 |
return err; |
560 |
diff --git a/net/core/dev.c b/net/core/dev.c |
561 |
-index 73abbd7..1bae4ad 100644 |
562 |
+index 1b9e700..047273c 100644 |
563 |
--- a/net/core/dev.c |
564 |
+++ b/net/core/dev.c |
565 |
@@ -1695,14 +1695,14 @@ int dev_forward_skb(struct net_device *dev, struct sk_buff *skb) |
566 |
@@ -110649,10 +110743,51 @@ index 26dc006..89e838e 100644 |
567 |
|
568 |
m->msg_iov = iov; |
569 |
diff --git a/net/core/neighbour.c b/net/core/neighbour.c |
570 |
-index 7d95f69..a6065de 100644 |
571 |
+index 7d95f69..1d316b1 100644 |
572 |
--- a/net/core/neighbour.c |
573 |
+++ b/net/core/neighbour.c |
574 |
-@@ -2824,7 +2824,7 @@ static int proc_unres_qlen(struct ctl_table *ctl, int write, |
575 |
+@@ -976,6 +976,8 @@ int __neigh_event_send(struct neighbour *neigh, struct sk_buff *skb) |
576 |
+ rc = 0; |
577 |
+ if (neigh->nud_state & (NUD_CONNECTED | NUD_DELAY | NUD_PROBE)) |
578 |
+ goto out_unlock_bh; |
579 |
++ if (neigh->dead) |
580 |
++ goto out_dead; |
581 |
+ |
582 |
+ if (!(neigh->nud_state & (NUD_STALE | NUD_INCOMPLETE))) { |
583 |
+ if (NEIGH_VAR(neigh->parms, MCAST_PROBES) + |
584 |
+@@ -1032,6 +1034,13 @@ out_unlock_bh: |
585 |
+ write_unlock(&neigh->lock); |
586 |
+ local_bh_enable(); |
587 |
+ return rc; |
588 |
++ |
589 |
++out_dead: |
590 |
++ if (neigh->nud_state & NUD_STALE) |
591 |
++ goto out_unlock_bh; |
592 |
++ write_unlock_bh(&neigh->lock); |
593 |
++ kfree_skb(skb); |
594 |
++ return 1; |
595 |
+ } |
596 |
+ EXPORT_SYMBOL(__neigh_event_send); |
597 |
+ |
598 |
+@@ -1095,6 +1104,8 @@ int neigh_update(struct neighbour *neigh, const u8 *lladdr, u8 new, |
599 |
+ if (!(flags & NEIGH_UPDATE_F_ADMIN) && |
600 |
+ (old & (NUD_NOARP | NUD_PERMANENT))) |
601 |
+ goto out; |
602 |
++ if (neigh->dead) |
603 |
++ goto out; |
604 |
+ |
605 |
+ if (!(new & NUD_VALID)) { |
606 |
+ neigh_del_timer(neigh); |
607 |
+@@ -1244,6 +1255,8 @@ EXPORT_SYMBOL(neigh_update); |
608 |
+ */ |
609 |
+ void __neigh_set_probe_once(struct neighbour *neigh) |
610 |
+ { |
611 |
++ if (neigh->dead) |
612 |
++ return; |
613 |
+ neigh->updated = jiffies; |
614 |
+ if (!(neigh->nud_state & NUD_FAILED)) |
615 |
+ return; |
616 |
+@@ -2824,7 +2837,7 @@ static int proc_unres_qlen(struct ctl_table *ctl, int write, |
617 |
void __user *buffer, size_t *lenp, loff_t *ppos) |
618 |
{ |
619 |
int size, ret; |
620 |
@@ -110661,7 +110796,7 @@ index 7d95f69..a6065de 100644 |
621 |
|
622 |
tmp.extra1 = &zero; |
623 |
tmp.extra2 = &unres_qlen_max; |
624 |
-@@ -2886,7 +2886,7 @@ static int neigh_proc_dointvec_zero_intmax(struct ctl_table *ctl, int write, |
625 |
+@@ -2886,7 +2899,7 @@ static int neigh_proc_dointvec_zero_intmax(struct ctl_table *ctl, int write, |
626 |
void __user *buffer, |
627 |
size_t *lenp, loff_t *ppos) |
628 |
{ |
629 |
@@ -110670,7 +110805,7 @@ index 7d95f69..a6065de 100644 |
630 |
int ret; |
631 |
|
632 |
tmp.extra1 = &zero; |
633 |
-@@ -3058,11 +3058,12 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p, |
634 |
+@@ -3058,11 +3071,12 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p, |
635 |
memset(&t->neigh_vars[NEIGH_VAR_GC_INTERVAL], 0, |
636 |
sizeof(t->neigh_vars[NEIGH_VAR_GC_INTERVAL])); |
637 |
} else { |
638 |
@@ -112042,7 +112177,7 @@ index 11c8d81..d67116b 100644 |
639 |
|
640 |
static int raw_seq_show(struct seq_file *seq, void *v) |
641 |
diff --git a/net/ipv4/route.c b/net/ipv4/route.c |
642 |
-index b64330f..31268ca 100644 |
643 |
+index 625615c..b88eefd 100644 |
644 |
--- a/net/ipv4/route.c |
645 |
+++ b/net/ipv4/route.c |
646 |
@@ -234,7 +234,7 @@ static const struct seq_operations rt_cache_seq_ops = { |
647 |
@@ -112095,7 +112230,7 @@ index b64330f..31268ca 100644 |
648 |
} |
649 |
EXPORT_SYMBOL(ip_idents_reserve); |
650 |
|
651 |
-@@ -2632,34 +2632,34 @@ static struct ctl_table ipv4_route_flush_table[] = { |
652 |
+@@ -2636,34 +2636,34 @@ static struct ctl_table ipv4_route_flush_table[] = { |
653 |
.maxlen = sizeof(int), |
654 |
.mode = 0200, |
655 |
.proc_handler = ipv4_sysctl_rtcache_flush, |
656 |
@@ -112138,7 +112273,7 @@ index b64330f..31268ca 100644 |
657 |
err_dup: |
658 |
return -ENOMEM; |
659 |
} |
660 |
-@@ -2682,8 +2682,8 @@ static __net_initdata struct pernet_operations sysctl_route_ops = { |
661 |
+@@ -2686,8 +2686,8 @@ static __net_initdata struct pernet_operations sysctl_route_ops = { |
662 |
|
663 |
static __net_init int rt_genid_init(struct net *net) |
664 |
{ |
665 |
@@ -112149,7 +112284,7 @@ index b64330f..31268ca 100644 |
666 |
get_random_bytes(&net->ipv4.dev_addr_genid, |
667 |
sizeof(net->ipv4.dev_addr_genid)); |
668 |
return 0; |
669 |
-@@ -2726,11 +2726,7 @@ int __init ip_rt_init(void) |
670 |
+@@ -2730,11 +2730,7 @@ int __init ip_rt_init(void) |
671 |
{ |
672 |
int rc = 0; |
673 |
|
674 |
@@ -112390,7 +112525,7 @@ index e2f8bd0..6c664ad 100644 |
675 |
} |
676 |
|
677 |
diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c |
678 |
-index 7a436c5..84279ef 100644 |
679 |
+index 9128d0a..5ea9226 100644 |
680 |
--- a/net/ipv4/tcp_minisocks.c |
681 |
+++ b/net/ipv4/tcp_minisocks.c |
682 |
@@ -27,6 +27,10 @@ |
683 |
@@ -112407,7 +112542,7 @@ index 7a436c5..84279ef 100644 |
684 |
@@ -298,7 +302,7 @@ void tcp_time_wait(struct sock *sk, int state, int timeo) |
685 |
tw->tw_v6_rcv_saddr = sk->sk_v6_rcv_saddr; |
686 |
tw->tw_tclass = np->tclass; |
687 |
- tw->tw_flowlabel = np->flow_label >> 12; |
688 |
+ tw->tw_flowlabel = be32_to_cpu(np->flow_label & IPV6_FLOWLABEL_MASK); |
689 |
- tw->tw_ipv6only = np->ipv6only; |
690 |
+ tw->tw_ipv6only = sk->sk_ipv6only; |
691 |
} |
692 |
@@ -112468,7 +112603,7 @@ index 64f0354..a81b39d 100644 |
693 |
syn_set ? 0 : icsk->icsk_user_timeout, syn_set)) { |
694 |
/* Has it gone just too far? */ |
695 |
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c |
696 |
-index b25e852..f578c52 100644 |
697 |
+index 21a3a9e..4a9ef62 100644 |
698 |
--- a/net/ipv4/udp.c |
699 |
+++ b/net/ipv4/udp.c |
700 |
@@ -87,6 +87,7 @@ |
701 |
@@ -112479,7 +112614,7 @@ index b25e852..f578c52 100644 |
702 |
#include <linux/socket.h> |
703 |
#include <linux/sockios.h> |
704 |
#include <linux/igmp.h> |
705 |
-@@ -113,6 +114,10 @@ |
706 |
+@@ -114,6 +115,10 @@ |
707 |
#include <net/busy_poll.h> |
708 |
#include "udp_impl.h" |
709 |
|
710 |
@@ -112490,7 +112625,7 @@ index b25e852..f578c52 100644 |
711 |
struct udp_table udp_table __read_mostly; |
712 |
EXPORT_SYMBOL(udp_table); |
713 |
|
714 |
-@@ -615,6 +620,9 @@ found: |
715 |
+@@ -616,6 +621,9 @@ found: |
716 |
return s; |
717 |
} |
718 |
|
719 |
@@ -112500,7 +112635,7 @@ index b25e852..f578c52 100644 |
720 |
/* |
721 |
* This routine is called by the ICMP module when it gets some |
722 |
* sort of error condition. If err < 0 then the socket should |
723 |
-@@ -914,9 +922,18 @@ int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, |
724 |
+@@ -915,9 +923,18 @@ int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, |
725 |
dport = usin->sin_port; |
726 |
if (dport == 0) |
727 |
return -EINVAL; |
728 |
@@ -112519,7 +112654,7 @@ index b25e852..f578c52 100644 |
729 |
daddr = inet->inet_daddr; |
730 |
dport = inet->inet_dport; |
731 |
/* Open fast path for connected socket. |
732 |
-@@ -1163,7 +1180,7 @@ static unsigned int first_packet_length(struct sock *sk) |
733 |
+@@ -1164,7 +1181,7 @@ static unsigned int first_packet_length(struct sock *sk) |
734 |
IS_UDPLITE(sk)); |
735 |
UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, |
736 |
IS_UDPLITE(sk)); |
737 |
@@ -112528,7 +112663,7 @@ index b25e852..f578c52 100644 |
738 |
__skb_unlink(skb, rcvq); |
739 |
__skb_queue_tail(&list_kill, skb); |
740 |
} |
741 |
-@@ -1243,6 +1260,10 @@ try_again: |
742 |
+@@ -1244,6 +1261,10 @@ try_again: |
743 |
if (!skb) |
744 |
goto out; |
745 |
|
746 |
@@ -112539,7 +112674,7 @@ index b25e852..f578c52 100644 |
747 |
ulen = skb->len - sizeof(struct udphdr); |
748 |
copied = len; |
749 |
if (copied > ulen) |
750 |
-@@ -1276,7 +1297,7 @@ try_again: |
751 |
+@@ -1277,7 +1298,7 @@ try_again: |
752 |
if (unlikely(err)) { |
753 |
trace_kfree_skb(skb, udp_recvmsg); |
754 |
if (!peeked) { |
755 |
@@ -112548,20 +112683,7 @@ index b25e852..f578c52 100644 |
756 |
UDP_INC_STATS_USER(sock_net(sk), |
757 |
UDP_MIB_INERRORS, is_udplite); |
758 |
} |
759 |
-@@ -1317,10 +1338,8 @@ csum_copy_err: |
760 |
- } |
761 |
- unlock_sock_fast(sk, slow); |
762 |
- |
763 |
-- if (noblock) |
764 |
-- return -EAGAIN; |
765 |
-- |
766 |
-- /* starting over for a new packet */ |
767 |
-+ /* starting over for a new packet, but check if we need to yield */ |
768 |
-+ cond_resched(); |
769 |
- msg->msg_flags &= ~MSG_TRUNC; |
770 |
- goto try_again; |
771 |
- } |
772 |
-@@ -1566,7 +1585,7 @@ csum_error: |
773 |
+@@ -1565,7 +1586,7 @@ csum_error: |
774 |
UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite); |
775 |
drop: |
776 |
UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite); |
777 |
@@ -112570,7 +112692,7 @@ index b25e852..f578c52 100644 |
778 |
kfree_skb(skb); |
779 |
return -1; |
780 |
} |
781 |
-@@ -1585,7 +1604,7 @@ static void flush_stack(struct sock **stack, unsigned int count, |
782 |
+@@ -1584,7 +1605,7 @@ static void flush_stack(struct sock **stack, unsigned int count, |
783 |
skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC); |
784 |
|
785 |
if (!skb1) { |
786 |
@@ -112579,7 +112701,7 @@ index b25e852..f578c52 100644 |
787 |
UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS, |
788 |
IS_UDPLITE(sk)); |
789 |
UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, |
790 |
-@@ -1786,6 +1805,9 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, |
791 |
+@@ -1785,6 +1806,9 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, |
792 |
goto csum_error; |
793 |
|
794 |
UDP_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE); |
795 |
@@ -112589,7 +112711,7 @@ index b25e852..f578c52 100644 |
796 |
icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0); |
797 |
|
798 |
/* |
799 |
-@@ -2354,7 +2376,7 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f, |
800 |
+@@ -2364,7 +2388,7 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f, |
801 |
from_kuid_munged(seq_user_ns(f), sock_i_uid(sp)), |
802 |
0, sock_i_ino(sp), |
803 |
atomic_read(&sp->sk_refcnt), sp, |
804 |
@@ -113386,7 +113508,7 @@ index 7f405a1..eabef92 100644 |
805 |
struct ctl_table *ipv6_icmp_table; |
806 |
int err; |
807 |
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c |
808 |
-index 9d4332d..4292595 100644 |
809 |
+index b50ae29..568a06f 100644 |
810 |
--- a/net/ipv6/tcp_ipv6.c |
811 |
+++ b/net/ipv6/tcp_ipv6.c |
812 |
@@ -104,6 +104,10 @@ static void inet6_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb) |
813 |
@@ -113445,7 +113567,7 @@ index 9d4332d..4292595 100644 |
814 |
} |
815 |
|
816 |
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c |
817 |
-index 20b63d2..9f371ac 100644 |
818 |
+index 38625a9..9f371ac 100644 |
819 |
--- a/net/ipv6/udp.c |
820 |
+++ b/net/ipv6/udp.c |
821 |
@@ -76,10 +76,13 @@ static unsigned int udp6_ehashfn(struct net *net, |
822 |
@@ -113481,20 +113603,7 @@ index 20b63d2..9f371ac 100644 |
823 |
if (is_udp4) |
824 |
UDP_INC_STATS_USER(sock_net(sk), |
825 |
UDP_MIB_INERRORS, |
826 |
-@@ -515,10 +518,8 @@ csum_copy_err: |
827 |
- } |
828 |
- unlock_sock_fast(sk, slow); |
829 |
- |
830 |
-- if (noblock) |
831 |
-- return -EAGAIN; |
832 |
-- |
833 |
-- /* starting over for a new packet */ |
834 |
-+ /* starting over for a new packet, but check if we need to yield */ |
835 |
-+ cond_resched(); |
836 |
- msg->msg_flags &= ~MSG_TRUNC; |
837 |
- goto try_again; |
838 |
- } |
839 |
-@@ -690,7 +691,7 @@ csum_error: |
840 |
+@@ -688,7 +691,7 @@ csum_error: |
841 |
UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite); |
842 |
drop: |
843 |
UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite); |
844 |
@@ -113503,7 +113612,7 @@ index 20b63d2..9f371ac 100644 |
845 |
kfree_skb(skb); |
846 |
return -1; |
847 |
} |
848 |
-@@ -747,7 +748,7 @@ static void flush_stack(struct sock **stack, unsigned int count, |
849 |
+@@ -745,7 +748,7 @@ static void flush_stack(struct sock **stack, unsigned int count, |
850 |
if (likely(skb1 == NULL)) |
851 |
skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC); |
852 |
if (!skb1) { |
853 |
@@ -113512,7 +113621,7 @@ index 20b63d2..9f371ac 100644 |
854 |
UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS, |
855 |
IS_UDPLITE(sk)); |
856 |
UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, |
857 |
-@@ -886,6 +887,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, |
858 |
+@@ -884,6 +887,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, |
859 |
goto csum_error; |
860 |
|
861 |
UDP6_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE); |
862 |
@@ -114778,10 +114887,43 @@ index 270b77d..0a9d0981 100644 |
863 |
/* Queue all of the segments. */ |
864 |
skb = segs; |
865 |
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c |
866 |
-index 48b1817..d2c096b 100644 |
867 |
+index 48b1817..3b2192f 100644 |
868 |
--- a/net/packet/af_packet.c |
869 |
+++ b/net/packet/af_packet.c |
870 |
-@@ -1846,7 +1846,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, |
871 |
+@@ -1264,16 +1264,6 @@ static void packet_sock_destruct(struct sock *sk) |
872 |
+ sk_refcnt_debug_dec(sk); |
873 |
+ } |
874 |
+ |
875 |
+-static int fanout_rr_next(struct packet_fanout *f, unsigned int num) |
876 |
+-{ |
877 |
+- int x = atomic_read(&f->rr_cur) + 1; |
878 |
+- |
879 |
+- if (x >= num) |
880 |
+- x = 0; |
881 |
+- |
882 |
+- return x; |
883 |
+-} |
884 |
+- |
885 |
+ static unsigned int fanout_demux_hash(struct packet_fanout *f, |
886 |
+ struct sk_buff *skb, |
887 |
+ unsigned int num) |
888 |
+@@ -1285,13 +1275,9 @@ static unsigned int fanout_demux_lb(struct packet_fanout *f, |
889 |
+ struct sk_buff *skb, |
890 |
+ unsigned int num) |
891 |
+ { |
892 |
+- int cur, old; |
893 |
++ unsigned int val = atomic_inc_return(&f->rr_cur); |
894 |
+ |
895 |
+- cur = atomic_read(&f->rr_cur); |
896 |
+- while ((old = atomic_cmpxchg(&f->rr_cur, cur, |
897 |
+- fanout_rr_next(f, num))) != cur) |
898 |
+- cur = old; |
899 |
+- return cur; |
900 |
++ return val % num; |
901 |
+ } |
902 |
+ |
903 |
+ static unsigned int fanout_demux_cpu(struct packet_fanout *f, |
904 |
+@@ -1846,7 +1832,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, |
905 |
|
906 |
spin_lock(&sk->sk_receive_queue.lock); |
907 |
po->stats.stats1.tp_packets++; |
908 |
@@ -114790,7 +114932,7 @@ index 48b1817..d2c096b 100644 |
909 |
__skb_queue_tail(&sk->sk_receive_queue, skb); |
910 |
spin_unlock(&sk->sk_receive_queue.lock); |
911 |
sk->sk_data_ready(sk, skb->len); |
912 |
-@@ -1855,7 +1855,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, |
913 |
+@@ -1855,7 +1841,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, |
914 |
drop_n_acct: |
915 |
spin_lock(&sk->sk_receive_queue.lock); |
916 |
po->stats.stats1.tp_drops++; |
917 |
@@ -114799,7 +114941,7 @@ index 48b1817..d2c096b 100644 |
918 |
spin_unlock(&sk->sk_receive_queue.lock); |
919 |
|
920 |
drop_n_restore: |
921 |
-@@ -3462,7 +3462,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, |
922 |
+@@ -3462,7 +3448,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, |
923 |
case PACKET_HDRLEN: |
924 |
if (len > sizeof(int)) |
925 |
len = sizeof(int); |
926 |
@@ -114808,7 +114950,7 @@ index 48b1817..d2c096b 100644 |
927 |
return -EFAULT; |
928 |
switch (val) { |
929 |
case TPACKET_V1: |
930 |
-@@ -3508,7 +3508,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, |
931 |
+@@ -3508,7 +3494,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, |
932 |
len = lv; |
933 |
if (put_user(len, optlen)) |
934 |
return -EFAULT; |
935 |
@@ -116416,7 +116558,7 @@ index 6424372..afd36e9 100644 |
936 |
sub->evt.event = htohl(event, sub->swap); |
937 |
sub->evt.found_lower = htohl(found_lower, sub->swap); |
938 |
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c |
939 |
-index 94404f1..ac544a1 100644 |
940 |
+index 4757f1c..11b32ee 100644 |
941 |
--- a/net/unix/af_unix.c |
942 |
+++ b/net/unix/af_unix.c |
943 |
@@ -791,6 +791,12 @@ static struct sock *unix_find_other(struct net *net, |
944 |
@@ -116465,7 +116607,7 @@ index 94404f1..ac544a1 100644 |
945 |
done_path_create(&path, dentry); |
946 |
return err; |
947 |
} |
948 |
-@@ -2243,11 +2262,14 @@ static unsigned int unix_dgram_poll(struct file *file, struct socket *sock, |
949 |
+@@ -2251,11 +2270,14 @@ static unsigned int unix_dgram_poll(struct file *file, struct socket *sock, |
950 |
writable = unix_writable(sk); |
951 |
other = unix_peer_get(sk); |
952 |
if (other) { |
953 |
@@ -116482,7 +116624,7 @@ index 94404f1..ac544a1 100644 |
954 |
sock_put(other); |
955 |
} |
956 |
|
957 |
-@@ -2344,9 +2366,13 @@ static int unix_seq_show(struct seq_file *seq, void *v) |
958 |
+@@ -2352,9 +2374,13 @@ static int unix_seq_show(struct seq_file *seq, void *v) |
959 |
seq_puts(seq, "Num RefCount Protocol Flags Type St " |
960 |
"Inode Path\n"); |
961 |
else { |
962 |
@@ -116497,7 +116639,7 @@ index 94404f1..ac544a1 100644 |
963 |
|
964 |
seq_printf(seq, "%pK: %08X %08X %08X %04X %02X %5lu", |
965 |
s, |
966 |
-@@ -2371,10 +2397,29 @@ static int unix_seq_show(struct seq_file *seq, void *v) |
967 |
+@@ -2379,10 +2405,29 @@ static int unix_seq_show(struct seq_file *seq, void *v) |
968 |
seq_putc(seq, '@'); |
969 |
i++; |
970 |
} |
971 |
@@ -128115,10 +128257,10 @@ index 0000000..4378111 |
972 |
+} |
973 |
diff --git a/tools/gcc/size_overflow_plugin/size_overflow_hash.data b/tools/gcc/size_overflow_plugin/size_overflow_hash.data |
974 |
new file mode 100644 |
975 |
-index 0000000..038e79d |
976 |
+index 0000000..51560ee |
977 |
--- /dev/null |
978 |
+++ b/tools/gcc/size_overflow_plugin/size_overflow_hash.data |
979 |
-@@ -0,0 +1,6059 @@ |
980 |
+@@ -0,0 +1,6061 @@ |
981 |
+intel_fake_agp_alloc_by_type_1 intel_fake_agp_alloc_by_type 1 1 NULL |
982 |
+ocfs2_get_refcount_tree_3 ocfs2_get_refcount_tree 0 3 NULL |
983 |
+storvsc_connect_to_vsp_22 storvsc_connect_to_vsp 2 22 NULL |
984 |
@@ -131510,7 +131652,8 @@ index 0000000..038e79d |
985 |
+vxge_config_vpaths_36636 vxge_config_vpaths 0 36636 NULL |
986 |
+convert_extent_item_v0_36645 convert_extent_item_v0 4 36645 NULL |
987 |
+ced_ioctl_36647 ced_ioctl 2 36647 NULL |
988 |
-+lpfc_idiag_extacc_alloc_get_36648 lpfc_idiag_extacc_alloc_get 0-3 36648 NULL |
989 |
++lpfc_idiag_extacc_alloc_get_36648 lpfc_idiag_extacc_alloc_get 0-3 36648 NULL nohasharray |
990 |
++tty_copy_to_user_36648 tty_copy_to_user 4 36648 &lpfc_idiag_extacc_alloc_get_36648 |
991 |
+osd_req_list_collection_objects_36664 osd_req_list_collection_objects 5 36664 NULL |
992 |
+iscsi_host_alloc_36671 iscsi_host_alloc 2 36671 NULL |
993 |
+xillybus_read_36678 xillybus_read 3 36678 NULL |
994 |
@@ -131577,7 +131720,8 @@ index 0000000..038e79d |
995 |
+xfs_iomap_write_allocate_37336 xfs_iomap_write_allocate 0 37336 NULL |
996 |
+security_inode_getsecurity_37354 security_inode_getsecurity 0 37354 NULL |
997 |
+hci_sock_sendmsg_37420 hci_sock_sendmsg 4 37420 NULL |
998 |
-+acpi_os_allocate_zeroed_37422 acpi_os_allocate_zeroed 1 37422 NULL |
999 |
++acpi_os_allocate_zeroed_37422 acpi_os_allocate_zeroed 1 37422 NULL nohasharray |
1000 |
++find_next_bit_37422 find_next_bit 0 37422 &acpi_os_allocate_zeroed_37422 |
1001 |
+tty_insert_flip_string_fixed_flag_37428 tty_insert_flip_string_fixed_flag 4-0 37428 NULL |
1002 |
+iwl_print_last_event_logs_37433 iwl_print_last_event_logs 0-7-9 37433 NULL |
1003 |
+fru_alloc_37442 fru_alloc 1 37442 NULL |
1004 |
|
1005 |
diff --git a/4.0.5/4425_grsec_remove_EI_PAX.patch b/3.14.45/4425_grsec_remove_EI_PAX.patch |
1006 |
similarity index 100% |
1007 |
rename from 4.0.5/4425_grsec_remove_EI_PAX.patch |
1008 |
rename to 3.14.45/4425_grsec_remove_EI_PAX.patch |
1009 |
|
1010 |
diff --git a/3.14.44/4427_force_XATTR_PAX_tmpfs.patch b/3.14.45/4427_force_XATTR_PAX_tmpfs.patch |
1011 |
similarity index 100% |
1012 |
rename from 3.14.44/4427_force_XATTR_PAX_tmpfs.patch |
1013 |
rename to 3.14.45/4427_force_XATTR_PAX_tmpfs.patch |
1014 |
|
1015 |
diff --git a/4.0.5/4430_grsec-remove-localversion-grsec.patch b/3.14.45/4430_grsec-remove-localversion-grsec.patch |
1016 |
similarity index 100% |
1017 |
rename from 4.0.5/4430_grsec-remove-localversion-grsec.patch |
1018 |
rename to 3.14.45/4430_grsec-remove-localversion-grsec.patch |
1019 |
|
1020 |
diff --git a/3.14.44/4435_grsec-mute-warnings.patch b/3.14.45/4435_grsec-mute-warnings.patch |
1021 |
similarity index 100% |
1022 |
rename from 3.14.44/4435_grsec-mute-warnings.patch |
1023 |
rename to 3.14.45/4435_grsec-mute-warnings.patch |
1024 |
|
1025 |
diff --git a/4.0.5/4440_grsec-remove-protected-paths.patch b/3.14.45/4440_grsec-remove-protected-paths.patch |
1026 |
similarity index 100% |
1027 |
rename from 4.0.5/4440_grsec-remove-protected-paths.patch |
1028 |
rename to 3.14.45/4440_grsec-remove-protected-paths.patch |
1029 |
|
1030 |
diff --git a/3.14.44/4450_grsec-kconfig-default-gids.patch b/3.14.45/4450_grsec-kconfig-default-gids.patch |
1031 |
similarity index 100% |
1032 |
rename from 3.14.44/4450_grsec-kconfig-default-gids.patch |
1033 |
rename to 3.14.45/4450_grsec-kconfig-default-gids.patch |
1034 |
|
1035 |
diff --git a/3.14.44/4465_selinux-avc_audit-log-curr_ip.patch b/3.14.45/4465_selinux-avc_audit-log-curr_ip.patch |
1036 |
similarity index 100% |
1037 |
rename from 3.14.44/4465_selinux-avc_audit-log-curr_ip.patch |
1038 |
rename to 3.14.45/4465_selinux-avc_audit-log-curr_ip.patch |
1039 |
|
1040 |
diff --git a/3.14.44/4470_disable-compat_vdso.patch b/3.14.45/4470_disable-compat_vdso.patch |
1041 |
similarity index 100% |
1042 |
rename from 3.14.44/4470_disable-compat_vdso.patch |
1043 |
rename to 3.14.45/4470_disable-compat_vdso.patch |
1044 |
|
1045 |
diff --git a/4.0.5/4475_emutramp_default_on.patch b/3.14.45/4475_emutramp_default_on.patch |
1046 |
similarity index 100% |
1047 |
rename from 4.0.5/4475_emutramp_default_on.patch |
1048 |
rename to 3.14.45/4475_emutramp_default_on.patch |
1049 |
|
1050 |
diff --git a/3.2.69/0000_README b/3.2.69/0000_README |
1051 |
index c5e335b..1521b73 100644 |
1052 |
--- a/3.2.69/0000_README |
1053 |
+++ b/3.2.69/0000_README |
1054 |
@@ -194,7 +194,7 @@ Patch: 1068_linux-3.2.69.patch |
1055 |
From: http://www.kernel.org |
1056 |
Desc: Linux 3.2.69 |
1057 |
|
1058 |
-Patch: 4420_grsecurity-3.1-3.2.69-201506082246.patch |
1059 |
+Patch: 4420_grsecurity-3.1-3.2.69-201506232100.patch |
1060 |
From: http://www.grsecurity.net |
1061 |
Desc: hardened-sources base patch from upstream grsecurity |
1062 |
|
1063 |
|
1064 |
diff --git a/3.2.69/4420_grsecurity-3.1-3.2.69-201506082246.patch b/3.2.69/4420_grsecurity-3.1-3.2.69-201506232100.patch |
1065 |
similarity index 99% |
1066 |
rename from 3.2.69/4420_grsecurity-3.1-3.2.69-201506082246.patch |
1067 |
rename to 3.2.69/4420_grsecurity-3.1-3.2.69-201506232100.patch |
1068 |
index 35a63ac..873b401 100644 |
1069 |
--- a/3.2.69/4420_grsecurity-3.1-3.2.69-201506082246.patch |
1070 |
+++ b/3.2.69/4420_grsecurity-3.1-3.2.69-201506232100.patch |
1071 |
@@ -37854,7 +37854,7 @@ index e47e73b..348e0bd 100644 |
1072 |
PCI_VEND_DEV(AMD, FE_GATE_700C), PCI_ANY_ID, PCI_ANY_ID, 0, 0, |
1073 |
AMD762}, |
1074 |
diff --git a/drivers/edac/e752x_edac.c b/drivers/edac/e752x_edac.c |
1075 |
-index 1af531a..3a8ff27 100644 |
1076 |
+index 1af531a1..3a8ff27 100644 |
1077 |
--- a/drivers/edac/e752x_edac.c |
1078 |
+++ b/drivers/edac/e752x_edac.c |
1079 |
@@ -1380,7 +1380,7 @@ static void __devexit e752x_remove_one(struct pci_dev *pdev) |
1080 |
@@ -96019,6 +96019,40 @@ index 875fed4..7a76cbb 100644 |
1081 |
} |
1082 |
} |
1083 |
|
1084 |
+diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c |
1085 |
+index b0996c1..7e5c12f 100644 |
1086 |
+--- a/kernel/trace/trace_events_filter.c |
1087 |
++++ b/kernel/trace/trace_events_filter.c |
1088 |
+@@ -1343,19 +1343,27 @@ static int check_preds(struct filter_parse_state *ps) |
1089 |
+ { |
1090 |
+ int n_normal_preds = 0, n_logical_preds = 0; |
1091 |
+ struct postfix_elt *elt; |
1092 |
++ int cnt = 0; |
1093 |
+ |
1094 |
+ list_for_each_entry(elt, &ps->postfix, list) { |
1095 |
+- if (elt->op == OP_NONE) |
1096 |
++ if (elt->op == OP_NONE) { |
1097 |
++ cnt++; |
1098 |
+ continue; |
1099 |
++ } |
1100 |
+ |
1101 |
+ if (elt->op == OP_AND || elt->op == OP_OR) { |
1102 |
+ n_logical_preds++; |
1103 |
++ cnt--; |
1104 |
+ continue; |
1105 |
+ } |
1106 |
++ // OP_NOT is not supported in this kernel, will get |
1107 |
++ // a reject here when it's backported |
1108 |
++ cnt--; |
1109 |
+ n_normal_preds++; |
1110 |
++ WARN_ON_ONCE(cnt < 0); |
1111 |
+ } |
1112 |
+ |
1113 |
+- if (!n_normal_preds || n_logical_preds >= n_normal_preds) { |
1114 |
++ if (cnt != 1 || !n_normal_preds || n_logical_preds >= n_normal_preds) { |
1115 |
+ parse_error(ps, FILT_ERR_INVALID_FILTER, 0); |
1116 |
+ return -EINVAL; |
1117 |
+ } |
1118 |
diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c |
1119 |
index a7d2a4c..b034c76 100644 |
1120 |
--- a/kernel/trace/trace_functions_graph.c |
1121 |
@@ -104143,7 +104177,7 @@ index 68bbf9f..5ef0d12 100644 |
1122 |
|
1123 |
return err; |
1124 |
diff --git a/net/core/dev.c b/net/core/dev.c |
1125 |
-index 1c0d862..6117f53 100644 |
1126 |
+index 1c0d862..d4946e6 100644 |
1127 |
--- a/net/core/dev.c |
1128 |
+++ b/net/core/dev.c |
1129 |
@@ -1142,10 +1142,14 @@ void dev_load(struct net *net, const char *name) |
1130 |
@@ -104179,6 +104213,24 @@ index 1c0d862..6117f53 100644 |
1131 |
kfree_skb(skb); |
1132 |
return NET_RX_DROP; |
1133 |
} |
1134 |
+@@ -1961,13 +1965,13 @@ struct sk_buff *skb_gso_segment(struct sk_buff *skb, u32 features) |
1135 |
+ |
1136 |
+ if (unlikely(skb->ip_summed != CHECKSUM_PARTIAL)) { |
1137 |
+ struct net_device *dev = skb->dev; |
1138 |
+- struct ethtool_drvinfo info = {}; |
1139 |
++ const char *driver = ""; |
1140 |
+ |
1141 |
+- if (dev && dev->ethtool_ops && dev->ethtool_ops->get_drvinfo) |
1142 |
+- dev->ethtool_ops->get_drvinfo(dev, &info); |
1143 |
++ if (dev && dev->dev.parent) |
1144 |
++ driver = dev_driver_string(dev->dev.parent); |
1145 |
+ |
1146 |
+ WARN(1, "%s: caps=(0x%lx, 0x%lx) len=%d data_len=%d ip_summed=%d\n", |
1147 |
+- info.driver, dev ? dev->features : 0L, |
1148 |
++ driver, dev ? dev->features : 0L, |
1149 |
+ skb->sk ? skb->sk->sk_route_caps : 0L, |
1150 |
+ skb->len, skb->data_len, skb->ip_summed); |
1151 |
+ |
1152 |
@@ -2048,7 +2052,7 @@ static int illegal_highdma(struct net_device *dev, struct sk_buff *skb) |
1153 |
|
1154 |
struct dev_gso_cb { |
1155 |
|
1156 |
diff --git a/4.0.5/0000_README b/4.0.6/0000_README |
1157 |
similarity index 96% |
1158 |
rename from 4.0.5/0000_README |
1159 |
rename to 4.0.6/0000_README |
1160 |
index 0e406e4..62fb720 100644 |
1161 |
--- a/4.0.5/0000_README |
1162 |
+++ b/4.0.6/0000_README |
1163 |
@@ -2,7 +2,7 @@ README |
1164 |
----------------------------------------------------------------------------- |
1165 |
Individual Patch Descriptions: |
1166 |
----------------------------------------------------------------------------- |
1167 |
-Patch: 4420_grsecurity-3.1-4.0.5-201506171322.patch |
1168 |
+Patch: 4420_grsecurity-3.1-4.0.6-201506232104.patch |
1169 |
From: http://www.grsecurity.net |
1170 |
Desc: hardened-sources base patch from upstream grsecurity |
1171 |
|
1172 |
|
1173 |
diff --git a/4.0.5/4420_grsecurity-3.1-4.0.5-201506171322.patch b/4.0.6/4420_grsecurity-3.1-4.0.6-201506232104.patch |
1174 |
similarity index 99% |
1175 |
rename from 4.0.5/4420_grsecurity-3.1-4.0.5-201506171322.patch |
1176 |
rename to 4.0.6/4420_grsecurity-3.1-4.0.6-201506232104.patch |
1177 |
index 97c48de..91512cb 100644 |
1178 |
--- a/4.0.5/4420_grsecurity-3.1-4.0.5-201506171322.patch |
1179 |
+++ b/4.0.6/4420_grsecurity-3.1-4.0.6-201506232104.patch |
1180 |
@@ -373,7 +373,7 @@ index 4d68ec8..9546b75 100644 |
1181 |
|
1182 |
pcd. [PARIDE] |
1183 |
diff --git a/Makefile b/Makefile |
1184 |
-index 1880cf7..a141b1e 100644 |
1185 |
+index af6da04..22820aa 100644 |
1186 |
--- a/Makefile |
1187 |
+++ b/Makefile |
1188 |
@@ -298,7 +298,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ |
1189 |
@@ -6660,7 +6660,7 @@ index 44a1f79..2bd6aa3 100644 |
1190 |
|
1191 |
void __init gt641xx_irq_init(void) |
1192 |
diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c |
1193 |
-index d2bfbc2..a8eacd2 100644 |
1194 |
+index be15e52..a089cc4 100644 |
1195 |
--- a/arch/mips/kernel/irq.c |
1196 |
+++ b/arch/mips/kernel/irq.c |
1197 |
@@ -76,17 +76,17 @@ void ack_bad_irq(unsigned int irq) |
1198 |
@@ -6684,18 +6684,16 @@ index d2bfbc2..a8eacd2 100644 |
1199 |
} |
1200 |
|
1201 |
void __init init_IRQ(void) |
1202 |
-@@ -109,7 +109,10 @@ void __init init_IRQ(void) |
1203 |
- #endif |
1204 |
+@@ -110,6 +110,8 @@ void __init init_IRQ(void) |
1205 |
} |
1206 |
|
1207 |
+ #ifdef CONFIG_DEBUG_STACKOVERFLOW |
1208 |
+ |
1209 |
- #ifdef DEBUG_STACKOVERFLOW |
1210 |
+extern void gr_handle_kernel_exploit(void); |
1211 |
-+ |
1212 |
static inline void check_stack_overflow(void) |
1213 |
{ |
1214 |
unsigned long sp; |
1215 |
-@@ -125,6 +128,7 @@ static inline void check_stack_overflow(void) |
1216 |
+@@ -125,6 +127,7 @@ static inline void check_stack_overflow(void) |
1217 |
printk("do_IRQ: stack overflow: %ld\n", |
1218 |
sp - sizeof(struct thread_info)); |
1219 |
dump_stack(); |
1220 |
@@ -7186,7 +7184,7 @@ index 4ce7a01..449202a 100644 |
1221 |
|
1222 |
#endif /* __ASM_OPENRISC_CACHE_H */ |
1223 |
diff --git a/arch/parisc/include/asm/atomic.h b/arch/parisc/include/asm/atomic.h |
1224 |
-index 226f8ca..9d9b87d 100644 |
1225 |
+index 226f8ca9..9d9b87d 100644 |
1226 |
--- a/arch/parisc/include/asm/atomic.h |
1227 |
+++ b/arch/parisc/include/asm/atomic.h |
1228 |
@@ -273,6 +273,16 @@ static inline long atomic64_dec_if_positive(atomic64_t *v) |
1229 |
@@ -18987,7 +18985,7 @@ index cad82c9..2e5c5c1 100644 |
1230 |
|
1231 |
#endif /* __KERNEL__ */ |
1232 |
diff --git a/arch/x86/include/asm/segment.h b/arch/x86/include/asm/segment.h |
1233 |
-index db257a5..b91bc77 100644 |
1234 |
+index e657b7b..81fefb444 100644 |
1235 |
--- a/arch/x86/include/asm/segment.h |
1236 |
+++ b/arch/x86/include/asm/segment.h |
1237 |
@@ -73,10 +73,15 @@ |
1238 |
@@ -19073,7 +19071,7 @@ index db257a5..b91bc77 100644 |
1239 |
#define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS*8+3) |
1240 |
#define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS*8+3) |
1241 |
#ifndef CONFIG_PARAVIRT |
1242 |
-@@ -256,7 +275,7 @@ static inline unsigned long get_limit(unsigned long segment) |
1243 |
+@@ -267,7 +286,7 @@ static inline unsigned long get_limit(unsigned long segment) |
1244 |
{ |
1245 |
unsigned long __limit; |
1246 |
asm("lsll %1,%0" : "=r" (__limit) : "r" (segment)); |
1247 |
@@ -24301,7 +24299,7 @@ index 8b7b0a5..2395f29 100644 |
1248 |
|
1249 |
/* Make sure it is what we expect it to be */ |
1250 |
diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c |
1251 |
-index c4f8d46..2d63ae2 100644 |
1252 |
+index b111ab5..3d419ea 100644 |
1253 |
--- a/arch/x86/kernel/head64.c |
1254 |
+++ b/arch/x86/kernel/head64.c |
1255 |
@@ -68,12 +68,12 @@ again: |
1256 |
@@ -24354,7 +24352,7 @@ index c4f8d46..2d63ae2 100644 |
1257 |
init_level4_pgt[511] = early_level4_pgt[511]; |
1258 |
|
1259 |
diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S |
1260 |
-index f36bd42..0ab4474 100644 |
1261 |
+index 30a2aa3..d62e1dd 100644 |
1262 |
--- a/arch/x86/kernel/head_32.S |
1263 |
+++ b/arch/x86/kernel/head_32.S |
1264 |
@@ -26,6 +26,12 @@ |
1265 |
@@ -24564,7 +24562,7 @@ index f36bd42..0ab4474 100644 |
1266 |
movl %eax,%gs |
1267 |
|
1268 |
xorl %eax,%eax # Clear LDT |
1269 |
-@@ -512,8 +594,11 @@ setup_once: |
1270 |
+@@ -513,8 +595,11 @@ setup_once: |
1271 |
* relocation. Manually set base address in stack canary |
1272 |
* segment descriptor. |
1273 |
*/ |
1274 |
@@ -24577,7 +24575,7 @@ index f36bd42..0ab4474 100644 |
1275 |
movw %cx, 8 * GDT_ENTRY_STACK_CANARY + 2(%eax) |
1276 |
shrl $16, %ecx |
1277 |
movb %cl, 8 * GDT_ENTRY_STACK_CANARY + 4(%eax) |
1278 |
-@@ -548,7 +633,7 @@ ENTRY(early_idt_handler) |
1279 |
+@@ -551,7 +636,7 @@ early_idt_handler_common: |
1280 |
cmpl $2,(%esp) # X86_TRAP_NMI |
1281 |
je is_nmi # Ignore NMI |
1282 |
|
1283 |
@@ -24586,7 +24584,7 @@ index f36bd42..0ab4474 100644 |
1284 |
je hlt_loop |
1285 |
incl %ss:early_recursion_flag |
1286 |
|
1287 |
-@@ -586,8 +671,8 @@ ENTRY(early_idt_handler) |
1288 |
+@@ -589,8 +674,8 @@ early_idt_handler_common: |
1289 |
pushl (20+6*4)(%esp) /* trapno */ |
1290 |
pushl $fault_msg |
1291 |
call printk |
1292 |
@@ -24596,7 +24594,7 @@ index f36bd42..0ab4474 100644 |
1293 |
hlt_loop: |
1294 |
hlt |
1295 |
jmp hlt_loop |
1296 |
-@@ -607,8 +692,11 @@ ENDPROC(early_idt_handler) |
1297 |
+@@ -610,8 +695,11 @@ ENDPROC(early_idt_handler_common) |
1298 |
/* This is the default interrupt "handler" :-) */ |
1299 |
ALIGN |
1300 |
ignore_int: |
1301 |
@@ -24609,7 +24607,7 @@ index f36bd42..0ab4474 100644 |
1302 |
pushl %eax |
1303 |
pushl %ecx |
1304 |
pushl %edx |
1305 |
-@@ -617,9 +705,6 @@ ignore_int: |
1306 |
+@@ -620,9 +708,6 @@ ignore_int: |
1307 |
movl $(__KERNEL_DS),%eax |
1308 |
movl %eax,%ds |
1309 |
movl %eax,%es |
1310 |
@@ -24619,7 +24617,7 @@ index f36bd42..0ab4474 100644 |
1311 |
pushl 16(%esp) |
1312 |
pushl 24(%esp) |
1313 |
pushl 32(%esp) |
1314 |
-@@ -653,29 +738,34 @@ ENTRY(setup_once_ref) |
1315 |
+@@ -656,29 +741,34 @@ ENTRY(setup_once_ref) |
1316 |
/* |
1317 |
* BSS section |
1318 |
*/ |
1319 |
@@ -24659,7 +24657,7 @@ index f36bd42..0ab4474 100644 |
1320 |
ENTRY(initial_page_table) |
1321 |
.long pa(initial_pg_pmd+PGD_IDENT_ATTR),0 /* low identity map */ |
1322 |
# if KPMDS == 3 |
1323 |
-@@ -694,12 +784,20 @@ ENTRY(initial_page_table) |
1324 |
+@@ -697,12 +787,20 @@ ENTRY(initial_page_table) |
1325 |
# error "Kernel PMDs should be 1, 2 or 3" |
1326 |
# endif |
1327 |
.align PAGE_SIZE /* needs to be page-sized too */ |
1328 |
@@ -24681,7 +24679,7 @@ index f36bd42..0ab4474 100644 |
1329 |
|
1330 |
__INITRODATA |
1331 |
int_msg: |
1332 |
-@@ -727,7 +825,7 @@ fault_msg: |
1333 |
+@@ -730,7 +828,7 @@ fault_msg: |
1334 |
* segment size, and 32-bit linear address value: |
1335 |
*/ |
1336 |
|
1337 |
@@ -24690,7 +24688,7 @@ index f36bd42..0ab4474 100644 |
1338 |
.globl boot_gdt_descr |
1339 |
.globl idt_descr |
1340 |
|
1341 |
-@@ -736,7 +834,7 @@ fault_msg: |
1342 |
+@@ -739,7 +837,7 @@ fault_msg: |
1343 |
.word 0 # 32 bit align gdt_desc.address |
1344 |
boot_gdt_descr: |
1345 |
.word __BOOT_DS+7 |
1346 |
@@ -24699,7 +24697,7 @@ index f36bd42..0ab4474 100644 |
1347 |
|
1348 |
.word 0 # 32-bit align idt_desc.address |
1349 |
idt_descr: |
1350 |
-@@ -747,7 +845,7 @@ idt_descr: |
1351 |
+@@ -750,7 +848,7 @@ idt_descr: |
1352 |
.word 0 # 32 bit align gdt_desc.address |
1353 |
ENTRY(early_gdt_descr) |
1354 |
.word GDT_ENTRIES*8-1 |
1355 |
@@ -24708,7 +24706,7 @@ index f36bd42..0ab4474 100644 |
1356 |
|
1357 |
/* |
1358 |
* The boot_gdt must mirror the equivalent in setup.S and is |
1359 |
-@@ -756,5 +854,65 @@ ENTRY(early_gdt_descr) |
1360 |
+@@ -759,5 +857,65 @@ ENTRY(early_gdt_descr) |
1361 |
.align L1_CACHE_BYTES |
1362 |
ENTRY(boot_gdt) |
1363 |
.fill GDT_ENTRY_BOOT_CS,8,0 |
1364 |
@@ -24777,7 +24775,7 @@ index f36bd42..0ab4474 100644 |
1365 |
+ .fill PAGE_SIZE_asm - GDT_SIZE,1,0 |
1366 |
+ .endr |
1367 |
diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S |
1368 |
-index 6fd514d9..320367e 100644 |
1369 |
+index f8a8406..ad6d014 100644 |
1370 |
--- a/arch/x86/kernel/head_64.S |
1371 |
+++ b/arch/x86/kernel/head_64.S |
1372 |
@@ -20,6 +20,8 @@ |
1373 |
@@ -24886,7 +24884,7 @@ index 6fd514d9..320367e 100644 |
1374 |
.word 0 |
1375 |
__FINITDATA |
1376 |
|
1377 |
-@@ -391,7 +427,7 @@ ENTRY(early_idt_handler) |
1378 |
+@@ -393,7 +429,7 @@ early_idt_handler_common: |
1379 |
call dump_stack |
1380 |
#ifdef CONFIG_KALLSYMS |
1381 |
leaq early_idt_ripmsg(%rip),%rdi |
1382 |
@@ -24895,7 +24893,7 @@ index 6fd514d9..320367e 100644 |
1383 |
call __print_symbol |
1384 |
#endif |
1385 |
#endif /* EARLY_PRINTK */ |
1386 |
-@@ -420,6 +456,7 @@ ENDPROC(early_idt_handler) |
1387 |
+@@ -422,6 +458,7 @@ ENDPROC(early_idt_handler_common) |
1388 |
early_recursion_flag: |
1389 |
.long 0 |
1390 |
|
1391 |
@@ -24903,7 +24901,7 @@ index 6fd514d9..320367e 100644 |
1392 |
#ifdef CONFIG_EARLY_PRINTK |
1393 |
early_idt_msg: |
1394 |
.asciz "PANIC: early exception %02lx rip %lx:%lx error %lx cr2 %lx\n" |
1395 |
-@@ -447,29 +484,52 @@ NEXT_PAGE(early_level4_pgt) |
1396 |
+@@ -449,29 +486,52 @@ NEXT_PAGE(early_level4_pgt) |
1397 |
NEXT_PAGE(early_dynamic_pgts) |
1398 |
.fill 512*EARLY_DYNAMIC_PAGE_TABLES,8,0 |
1399 |
|
1400 |
@@ -24965,7 +24963,7 @@ index 6fd514d9..320367e 100644 |
1401 |
|
1402 |
NEXT_PAGE(level3_kernel_pgt) |
1403 |
.fill L3_START_KERNEL,8,0 |
1404 |
-@@ -477,6 +537,9 @@ NEXT_PAGE(level3_kernel_pgt) |
1405 |
+@@ -479,6 +539,9 @@ NEXT_PAGE(level3_kernel_pgt) |
1406 |
.quad level2_kernel_pgt - __START_KERNEL_map + _KERNPG_TABLE |
1407 |
.quad level2_fixmap_pgt - __START_KERNEL_map + _PAGE_TABLE |
1408 |
|
1409 |
@@ -24975,7 +24973,7 @@ index 6fd514d9..320367e 100644 |
1410 |
NEXT_PAGE(level2_kernel_pgt) |
1411 |
/* |
1412 |
* 512 MB kernel mapping. We spend a full page on this pagetable |
1413 |
-@@ -492,23 +555,61 @@ NEXT_PAGE(level2_kernel_pgt) |
1414 |
+@@ -494,23 +557,61 @@ NEXT_PAGE(level2_kernel_pgt) |
1415 |
KERNEL_IMAGE_SIZE/PMD_SIZE) |
1416 |
|
1417 |
NEXT_PAGE(level2_fixmap_pgt) |
1418 |
@@ -25043,7 +25041,7 @@ index 6fd514d9..320367e 100644 |
1419 |
|
1420 |
ENTRY(phys_base) |
1421 |
/* This must match the first entry in level2_kernel_pgt */ |
1422 |
-@@ -532,8 +633,8 @@ NEXT_PAGE(kasan_zero_pud) |
1423 |
+@@ -534,8 +635,8 @@ NEXT_PAGE(kasan_zero_pud) |
1424 |
|
1425 |
|
1426 |
#include "../../x86/xen/xen-head.S" |
1427 |
@@ -28723,7 +28721,7 @@ index 106c015..2db7161 100644 |
1428 |
0, 0, 0, /* CR3 checked later */ |
1429 |
CR4_RESERVED_BITS, |
1430 |
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c |
1431 |
-index 4ee827d..a14eff9 100644 |
1432 |
+index 4ee827d..83c8e31 100644 |
1433 |
--- a/arch/x86/kvm/lapic.c |
1434 |
+++ b/arch/x86/kvm/lapic.c |
1435 |
@@ -56,7 +56,7 @@ |
1436 |
@@ -28735,6 +28733,85 @@ index 4ee827d..a14eff9 100644 |
1437 |
|
1438 |
#define APIC_LVT_NUM 6 |
1439 |
/* 14 is the version for Xeon and Pentium 8.4.8*/ |
1440 |
+@@ -1064,6 +1064,17 @@ static void update_divide_count(struct kvm_lapic *apic) |
1441 |
+ apic->divide_count); |
1442 |
+ } |
1443 |
+ |
1444 |
++static void apic_update_lvtt(struct kvm_lapic *apic) |
1445 |
++{ |
1446 |
++ u32 timer_mode = kvm_apic_get_reg(apic, APIC_LVTT) & |
1447 |
++ apic->lapic_timer.timer_mode_mask; |
1448 |
++ |
1449 |
++ if (apic->lapic_timer.timer_mode != timer_mode) { |
1450 |
++ apic->lapic_timer.timer_mode = timer_mode; |
1451 |
++ hrtimer_cancel(&apic->lapic_timer.timer); |
1452 |
++ } |
1453 |
++} |
1454 |
++ |
1455 |
+ static void apic_timer_expired(struct kvm_lapic *apic) |
1456 |
+ { |
1457 |
+ struct kvm_vcpu *vcpu = apic->vcpu; |
1458 |
+@@ -1272,6 +1283,7 @@ static int apic_reg_write(struct kvm_lapic *apic, u32 reg, u32 val) |
1459 |
+ apic_set_reg(apic, APIC_LVTT + 0x10 * i, |
1460 |
+ lvt_val | APIC_LVT_MASKED); |
1461 |
+ } |
1462 |
++ apic_update_lvtt(apic); |
1463 |
+ atomic_set(&apic->lapic_timer.pending, 0); |
1464 |
+ |
1465 |
+ } |
1466 |
+@@ -1304,20 +1316,13 @@ static int apic_reg_write(struct kvm_lapic *apic, u32 reg, u32 val) |
1467 |
+ |
1468 |
+ break; |
1469 |
+ |
1470 |
+- case APIC_LVTT: { |
1471 |
+- u32 timer_mode = val & apic->lapic_timer.timer_mode_mask; |
1472 |
+- |
1473 |
+- if (apic->lapic_timer.timer_mode != timer_mode) { |
1474 |
+- apic->lapic_timer.timer_mode = timer_mode; |
1475 |
+- hrtimer_cancel(&apic->lapic_timer.timer); |
1476 |
+- } |
1477 |
+- |
1478 |
++ case APIC_LVTT: |
1479 |
+ if (!kvm_apic_sw_enabled(apic)) |
1480 |
+ val |= APIC_LVT_MASKED; |
1481 |
+ val &= (apic_lvt_mask[0] | apic->lapic_timer.timer_mode_mask); |
1482 |
+ apic_set_reg(apic, APIC_LVTT, val); |
1483 |
++ apic_update_lvtt(apic); |
1484 |
+ break; |
1485 |
+- } |
1486 |
+ |
1487 |
+ case APIC_TMICT: |
1488 |
+ if (apic_lvtt_tscdeadline(apic)) |
1489 |
+@@ -1552,7 +1557,7 @@ void kvm_lapic_reset(struct kvm_vcpu *vcpu) |
1490 |
+ |
1491 |
+ for (i = 0; i < APIC_LVT_NUM; i++) |
1492 |
+ apic_set_reg(apic, APIC_LVTT + 0x10 * i, APIC_LVT_MASKED); |
1493 |
+- apic->lapic_timer.timer_mode = 0; |
1494 |
++ apic_update_lvtt(apic); |
1495 |
+ apic_set_reg(apic, APIC_LVT0, |
1496 |
+ SET_APIC_DELIVERY_MODE(0, APIC_MODE_EXTINT)); |
1497 |
+ |
1498 |
+@@ -1778,6 +1783,7 @@ void kvm_apic_post_state_restore(struct kvm_vcpu *vcpu, |
1499 |
+ |
1500 |
+ apic_update_ppr(apic); |
1501 |
+ hrtimer_cancel(&apic->lapic_timer.timer); |
1502 |
++ apic_update_lvtt(apic); |
1503 |
+ update_divide_count(apic); |
1504 |
+ start_apic_timer(apic); |
1505 |
+ apic->irr_pending = true; |
1506 |
+diff --git a/arch/x86/kvm/lapic.h b/arch/x86/kvm/lapic.h |
1507 |
+index 0bc6c65..ca4f92d 100644 |
1508 |
+--- a/arch/x86/kvm/lapic.h |
1509 |
++++ b/arch/x86/kvm/lapic.h |
1510 |
+@@ -165,7 +165,7 @@ static inline u16 apic_logical_id(struct kvm_apic_map *map, u32 ldr) |
1511 |
+ |
1512 |
+ static inline bool kvm_apic_has_events(struct kvm_vcpu *vcpu) |
1513 |
+ { |
1514 |
+- return vcpu->arch.apic->pending_events; |
1515 |
++ return kvm_vcpu_has_lapic(vcpu) && vcpu->arch.apic->pending_events; |
1516 |
+ } |
1517 |
+ |
1518 |
+ bool kvm_apic_pending_eoi(struct kvm_vcpu *vcpu, int vector); |
1519 |
diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h |
1520 |
index 6e6d115..43fecbf 100644 |
1521 |
--- a/arch/x86/kvm/paging_tmpl.h |
1522 |
@@ -34270,7 +34347,7 @@ index 6440221..f84b5c7 100644 |
1523 |
+ pax_force_retaddr |
1524 |
ret |
1525 |
diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c |
1526 |
-index 9875143..36776ae 100644 |
1527 |
+index ddeff48..877ead6 100644 |
1528 |
--- a/arch/x86/net/bpf_jit_comp.c |
1529 |
+++ b/arch/x86/net/bpf_jit_comp.c |
1530 |
@@ -13,7 +13,11 @@ |
1531 |
@@ -34295,49 +34372,7 @@ index 9875143..36776ae 100644 |
1532 |
} |
1533 |
|
1534 |
struct jit_context { |
1535 |
-@@ -559,6 +565,13 @@ static int do_jit(struct bpf_prog *bpf_prog, int *addrs, u8 *image, |
1536 |
- if (is_ereg(dst_reg)) |
1537 |
- EMIT1(0x41); |
1538 |
- EMIT3(0xC1, add_1reg(0xC8, dst_reg), 8); |
1539 |
-+ |
1540 |
-+ /* emit 'movzwl eax, ax' */ |
1541 |
-+ if (is_ereg(dst_reg)) |
1542 |
-+ EMIT3(0x45, 0x0F, 0xB7); |
1543 |
-+ else |
1544 |
-+ EMIT2(0x0F, 0xB7); |
1545 |
-+ EMIT1(add_2reg(0xC0, dst_reg, dst_reg)); |
1546 |
- break; |
1547 |
- case 32: |
1548 |
- /* emit 'bswap eax' to swap lower 4 bytes */ |
1549 |
-@@ -577,6 +590,27 @@ static int do_jit(struct bpf_prog *bpf_prog, int *addrs, u8 *image, |
1550 |
- break; |
1551 |
- |
1552 |
- case BPF_ALU | BPF_END | BPF_FROM_LE: |
1553 |
-+ switch (imm32) { |
1554 |
-+ case 16: |
1555 |
-+ /* emit 'movzwl eax, ax' to zero extend 16-bit |
1556 |
-+ * into 64 bit |
1557 |
-+ */ |
1558 |
-+ if (is_ereg(dst_reg)) |
1559 |
-+ EMIT3(0x45, 0x0F, 0xB7); |
1560 |
-+ else |
1561 |
-+ EMIT2(0x0F, 0xB7); |
1562 |
-+ EMIT1(add_2reg(0xC0, dst_reg, dst_reg)); |
1563 |
-+ break; |
1564 |
-+ case 32: |
1565 |
-+ /* emit 'mov eax, eax' to clear upper 32-bits */ |
1566 |
-+ if (is_ereg(dst_reg)) |
1567 |
-+ EMIT1(0x45); |
1568 |
-+ EMIT2(0x89, add_2reg(0xC0, dst_reg, dst_reg)); |
1569 |
-+ break; |
1570 |
-+ case 64: |
1571 |
-+ /* nop */ |
1572 |
-+ break; |
1573 |
-+ } |
1574 |
- break; |
1575 |
- |
1576 |
- /* ST: *(u8*)(dst_reg + off) = imm */ |
1577 |
-@@ -896,7 +930,9 @@ common_load: |
1578 |
+@@ -924,7 +930,9 @@ common_load: |
1579 |
pr_err("bpf_jit_compile fatal error\n"); |
1580 |
return -EFAULT; |
1581 |
} |
1582 |
@@ -34347,7 +34382,7 @@ index 9875143..36776ae 100644 |
1583 |
} |
1584 |
proglen += ilen; |
1585 |
addrs[i] = proglen; |
1586 |
-@@ -968,7 +1004,6 @@ void bpf_int_jit_compile(struct bpf_prog *prog) |
1587 |
+@@ -1001,7 +1009,6 @@ void bpf_int_jit_compile(struct bpf_prog *prog) |
1588 |
|
1589 |
if (image) { |
1590 |
bpf_flush_icache(header, image + proglen); |
1591 |
@@ -34355,7 +34390,7 @@ index 9875143..36776ae 100644 |
1592 |
prog->bpf_func = (void *)image; |
1593 |
prog->jited = true; |
1594 |
} |
1595 |
-@@ -981,12 +1016,8 @@ void bpf_jit_free(struct bpf_prog *fp) |
1596 |
+@@ -1014,12 +1021,8 @@ void bpf_jit_free(struct bpf_prog *fp) |
1597 |
unsigned long addr = (unsigned long)fp->bpf_func & PAGE_MASK; |
1598 |
struct bpf_binary_header *header = (void *)addr; |
1599 |
|
1600 |
@@ -35633,7 +35668,7 @@ index 80ffa5b..a33bd15 100644 |
1601 |
|
1602 |
return 0; |
1603 |
diff --git a/arch/x86/vdso/Makefile b/arch/x86/vdso/Makefile |
1604 |
-index 7b9be98..39bb57f 100644 |
1605 |
+index 8533c96..ff98c52 100644 |
1606 |
--- a/arch/x86/vdso/Makefile |
1607 |
+++ b/arch/x86/vdso/Makefile |
1608 |
@@ -175,7 +175,7 @@ quiet_cmd_vdso = VDSO $@ |
1609 |
@@ -36263,7 +36298,7 @@ index f678c73..f35aa18 100644 |
1610 |
err = -EFAULT; |
1611 |
goto out; |
1612 |
diff --git a/block/genhd.c b/block/genhd.c |
1613 |
-index 0a536dc..b8f7aca 100644 |
1614 |
+index ea982ea..86e0f9e 100644 |
1615 |
--- a/block/genhd.c |
1616 |
+++ b/block/genhd.c |
1617 |
@@ -469,21 +469,24 @@ static char *bdevt_str(dev_t devt, char *buf) |
1618 |
@@ -40163,6 +40198,32 @@ index 832a2c3..1794080 100644 |
1619 |
.attrs = cpuidle_default_attrs, |
1620 |
.name = "cpuidle", |
1621 |
}; |
1622 |
+diff --git a/drivers/crypto/caam/caamhash.c b/drivers/crypto/caam/caamhash.c |
1623 |
+index f347ab7..08b0da2 100644 |
1624 |
+--- a/drivers/crypto/caam/caamhash.c |
1625 |
++++ b/drivers/crypto/caam/caamhash.c |
1626 |
+@@ -1543,6 +1543,8 @@ static int ahash_init(struct ahash_request *req) |
1627 |
+ |
1628 |
+ state->current_buf = 0; |
1629 |
+ state->buf_dma = 0; |
1630 |
++ state->buflen_0 = 0; |
1631 |
++ state->buflen_1 = 0; |
1632 |
+ |
1633 |
+ return 0; |
1634 |
+ } |
1635 |
+diff --git a/drivers/crypto/caam/caamrng.c b/drivers/crypto/caam/caamrng.c |
1636 |
+index ae31e55..a48dc25 100644 |
1637 |
+--- a/drivers/crypto/caam/caamrng.c |
1638 |
++++ b/drivers/crypto/caam/caamrng.c |
1639 |
+@@ -56,7 +56,7 @@ |
1640 |
+ |
1641 |
+ /* Buffer, its dma address and lock */ |
1642 |
+ struct buf_data { |
1643 |
+- u8 buf[RN_BUF_SIZE]; |
1644 |
++ u8 buf[RN_BUF_SIZE] ____cacheline_aligned; |
1645 |
+ dma_addr_t addr; |
1646 |
+ struct completion filled; |
1647 |
+ u32 hw_desc[DESC_JOB_O_LEN]; |
1648 |
diff --git a/drivers/crypto/hifn_795x.c b/drivers/crypto/hifn_795x.c |
1649 |
index 8d2a772..33826c9 100644 |
1650 |
--- a/drivers/crypto/hifn_795x.c |
1651 |
@@ -41973,7 +42034,7 @@ index b928c17..e5d9400 100644 |
1652 |
if (regcomp |
1653 |
(&mask_rex, "(0x[0-9a-fA-F]*) *([_a-zA-Z0-9]*)", REG_EXTENDED)) { |
1654 |
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c |
1655 |
-index bd7519f..e1c2cd95 100644 |
1656 |
+index aa232fd..7e5f6e1 100644 |
1657 |
--- a/drivers/gpu/drm/radeon/radeon_device.c |
1658 |
+++ b/drivers/gpu/drm/radeon/radeon_device.c |
1659 |
@@ -1247,7 +1247,7 @@ static bool radeon_switcheroo_can_switch(struct pci_dev *pdev) |
1660 |
@@ -45671,7 +45732,7 @@ index 9b4e30a..83c927d 100644 |
1661 |
|
1662 |
void dm_uevent_add(struct mapped_device *md, struct list_head *elist) |
1663 |
diff --git a/drivers/md/md.c b/drivers/md/md.c |
1664 |
-index 907534b..8b3554e 100644 |
1665 |
+index b7bf8ee..ee17152 100644 |
1666 |
--- a/drivers/md/md.c |
1667 |
+++ b/drivers/md/md.c |
1668 |
@@ -191,10 +191,10 @@ EXPORT_SYMBOL_GPL(bio_clone_mddev); |
1669 |
@@ -45743,7 +45804,7 @@ index 907534b..8b3554e 100644 |
1670 |
|
1671 |
INIT_LIST_HEAD(&rdev->same_set); |
1672 |
init_waitqueue_head(&rdev->blocked_wait); |
1673 |
-@@ -7085,7 +7085,7 @@ static int md_seq_show(struct seq_file *seq, void *v) |
1674 |
+@@ -7086,7 +7086,7 @@ static int md_seq_show(struct seq_file *seq, void *v) |
1675 |
|
1676 |
spin_unlock(&pers_lock); |
1677 |
seq_printf(seq, "\n"); |
1678 |
@@ -45752,7 +45813,7 @@ index 907534b..8b3554e 100644 |
1679 |
return 0; |
1680 |
} |
1681 |
if (v == (void*)2) { |
1682 |
-@@ -7188,7 +7188,7 @@ static int md_seq_open(struct inode *inode, struct file *file) |
1683 |
+@@ -7189,7 +7189,7 @@ static int md_seq_open(struct inode *inode, struct file *file) |
1684 |
return error; |
1685 |
|
1686 |
seq = file->private_data; |
1687 |
@@ -45761,7 +45822,7 @@ index 907534b..8b3554e 100644 |
1688 |
return error; |
1689 |
} |
1690 |
|
1691 |
-@@ -7205,7 +7205,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait) |
1692 |
+@@ -7206,7 +7206,7 @@ static unsigned int mdstat_poll(struct file *filp, poll_table *wait) |
1693 |
/* always allow read */ |
1694 |
mask = POLLIN | POLLRDNORM; |
1695 |
|
1696 |
@@ -45770,7 +45831,7 @@ index 907534b..8b3554e 100644 |
1697 |
mask |= POLLERR | POLLPRI; |
1698 |
return mask; |
1699 |
} |
1700 |
-@@ -7252,7 +7252,7 @@ static int is_mddev_idle(struct mddev *mddev, int init) |
1701 |
+@@ -7253,7 +7253,7 @@ static int is_mddev_idle(struct mddev *mddev, int init) |
1702 |
struct gendisk *disk = rdev->bdev->bd_contains->bd_disk; |
1703 |
curr_events = (int)part_stat_read(&disk->part0, sectors[0]) + |
1704 |
(int)part_stat_read(&disk->part0, sectors[1]) - |
1705 |
@@ -49007,7 +49068,7 @@ index badff18..e15c4ec 100644 |
1706 |
break; |
1707 |
} |
1708 |
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c |
1709 |
-index e6b790f..051ba2d 100644 |
1710 |
+index 893753f..3b5d790 100644 |
1711 |
--- a/drivers/net/ethernet/emulex/benet/be_main.c |
1712 |
+++ b/drivers/net/ethernet/emulex/benet/be_main.c |
1713 |
@@ -536,7 +536,7 @@ static void accumulate_16bit_val(u32 *acc, u16 val) |
1714 |
@@ -54305,7 +54366,7 @@ index bce16e4..1120a85 100644 |
1715 |
|
1716 |
dlci->modem_rx = 0; |
1717 |
diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c |
1718 |
-index cc57a3a..b39622b 100644 |
1719 |
+index eee40b5..796fb03 100644 |
1720 |
--- a/drivers/tty/n_tty.c |
1721 |
+++ b/drivers/tty/n_tty.c |
1722 |
@@ -116,7 +116,7 @@ struct n_tty_data { |
1723 |
@@ -54317,7 +54378,7 @@ index cc57a3a..b39622b 100644 |
1724 |
size_t line_start; |
1725 |
|
1726 |
/* protected by output lock */ |
1727 |
-@@ -2561,6 +2561,7 @@ void n_tty_inherit_ops(struct tty_ldisc_ops *ops) |
1728 |
+@@ -2572,6 +2572,7 @@ void n_tty_inherit_ops(struct tty_ldisc_ops *ops) |
1729 |
{ |
1730 |
*ops = tty_ldisc_N_TTY; |
1731 |
ops->owner = NULL; |
1732 |
@@ -66081,10 +66142,10 @@ index 8a1d38e..300a14e 100644 |
1733 |
&data); |
1734 |
if (!inode) { |
1735 |
diff --git a/fs/aio.c b/fs/aio.c |
1736 |
-index a793f70..46f45af 100644 |
1737 |
+index a1736e9..c80a8ac 100644 |
1738 |
--- a/fs/aio.c |
1739 |
+++ b/fs/aio.c |
1740 |
-@@ -404,7 +404,7 @@ static int aio_setup_ring(struct kioctx *ctx) |
1741 |
+@@ -409,7 +409,7 @@ static int aio_setup_ring(struct kioctx *ctx) |
1742 |
size += sizeof(struct io_event) * nr_events; |
1743 |
|
1744 |
nr_pages = PFN_UP(size); |
1745 |
@@ -67264,7 +67325,7 @@ index f70119f..ab5894d 100644 |
1746 |
spin_lock_init(&delayed_root->lock); |
1747 |
init_waitqueue_head(&delayed_root->wait); |
1748 |
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c |
1749 |
-index 05fef19..f3774b8 100644 |
1750 |
+index e477ed6..480c0db 100644 |
1751 |
--- a/fs/btrfs/super.c |
1752 |
+++ b/fs/btrfs/super.c |
1753 |
@@ -271,7 +271,7 @@ void __btrfs_abort_transaction(struct btrfs_trans_handle *trans, |
1754 |
@@ -94712,7 +94773,7 @@ index 0f712c0..cd762c4 100644 |
1755 |
return; |
1756 |
} |
1757 |
diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h |
1758 |
-index 5976bde..3a81660 100644 |
1759 |
+index 9fe865c..43735aa 100644 |
1760 |
--- a/include/net/inet_connection_sock.h |
1761 |
+++ b/include/net/inet_connection_sock.h |
1762 |
@@ -63,7 +63,7 @@ struct inet_connection_sock_af_ops { |
1763 |
@@ -101387,7 +101448,7 @@ index f4da2cb..e44587b 100644 |
1764 |
#else |
1765 |
static void register_sched_domain_sysctl(void) |
1766 |
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c |
1767 |
-index 241213b..6a64c91 100644 |
1768 |
+index 486d00c..62f3f6e 100644 |
1769 |
--- a/kernel/sched/fair.c |
1770 |
+++ b/kernel/sched/fair.c |
1771 |
@@ -2092,7 +2092,7 @@ void task_numa_fault(int last_cpupid, int mem_node, int pages, int flags) |
1772 |
@@ -102956,6 +103017,39 @@ index a9c10a3..1864f6b 100644 |
1773 |
static void __add_event_to_tracers(struct ftrace_event_call *call); |
1774 |
|
1775 |
/* Add an additional event_call dynamically */ |
1776 |
+diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c |
1777 |
+index ced69da..7f2e97c 100644 |
1778 |
+--- a/kernel/trace/trace_events_filter.c |
1779 |
++++ b/kernel/trace/trace_events_filter.c |
1780 |
+@@ -1369,19 +1369,26 @@ static int check_preds(struct filter_parse_state *ps) |
1781 |
+ { |
1782 |
+ int n_normal_preds = 0, n_logical_preds = 0; |
1783 |
+ struct postfix_elt *elt; |
1784 |
++ int cnt = 0; |
1785 |
+ |
1786 |
+ list_for_each_entry(elt, &ps->postfix, list) { |
1787 |
+- if (elt->op == OP_NONE) |
1788 |
++ if (elt->op == OP_NONE) { |
1789 |
++ cnt++; |
1790 |
+ continue; |
1791 |
++ } |
1792 |
+ |
1793 |
+ if (elt->op == OP_AND || elt->op == OP_OR) { |
1794 |
+ n_logical_preds++; |
1795 |
++ cnt--; |
1796 |
+ continue; |
1797 |
+ } |
1798 |
++ if (elt->op != OP_NOT) |
1799 |
++ cnt--; |
1800 |
+ n_normal_preds++; |
1801 |
++ WARN_ON_ONCE(cnt < 0); |
1802 |
+ } |
1803 |
+ |
1804 |
+- if (!n_normal_preds || n_logical_preds >= n_normal_preds) { |
1805 |
++ if (cnt != 1 || !n_normal_preds || n_logical_preds >= n_normal_preds) { |
1806 |
+ parse_error(ps, FILT_ERR_INVALID_FILTER, 0); |
1807 |
+ return -EINVAL; |
1808 |
+ } |
1809 |
diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c |
1810 |
index b6fce36..d9f11a3 100644 |
1811 |
--- a/kernel/trace/trace_functions_graph.c |
1812 |
@@ -103826,6 +103920,28 @@ index ecb9a66..a044fc5 100644 |
1813 |
retval = 1; |
1814 |
} |
1815 |
spin_unlock(&lockref->lock); |
1816 |
+diff --git a/lib/mpi/longlong.h b/lib/mpi/longlong.h |
1817 |
+index aac5114..a89d041 100644 |
1818 |
+--- a/lib/mpi/longlong.h |
1819 |
++++ b/lib/mpi/longlong.h |
1820 |
+@@ -639,7 +639,7 @@ do { \ |
1821 |
+ ************** MIPS ***************** |
1822 |
+ ***************************************/ |
1823 |
+ #if defined(__mips__) && W_TYPE_SIZE == 32 |
1824 |
+-#if __GNUC__ >= 4 && __GNUC_MINOR__ >= 4 |
1825 |
++#if (__GNUC__ >= 5) || (__GNUC__ >= 4 && __GNUC_MINOR__ >= 4) |
1826 |
+ #define umul_ppmm(w1, w0, u, v) \ |
1827 |
+ do { \ |
1828 |
+ UDItype __ll = (UDItype)(u) * (v); \ |
1829 |
+@@ -671,7 +671,7 @@ do { \ |
1830 |
+ ************** MIPS/64 ************** |
1831 |
+ ***************************************/ |
1832 |
+ #if (defined(__mips) && __mips >= 3) && W_TYPE_SIZE == 64 |
1833 |
+-#if __GNUC__ >= 4 && __GNUC_MINOR__ >= 4 |
1834 |
++#if (__GNUC__ >= 5) || (__GNUC__ >= 4 && __GNUC_MINOR__ >= 4) |
1835 |
+ #define umul_ppmm(w1, w0, u, v) \ |
1836 |
+ do { \ |
1837 |
+ typedef unsigned int __ll_UTItype __attribute__((mode(TI))); \ |
1838 |
diff --git a/lib/nlattr.c b/lib/nlattr.c |
1839 |
index f5907d2..36072be 100644 |
1840 |
--- a/lib/nlattr.c |
1841 |
@@ -104173,7 +104289,7 @@ index 957d3da..1d34e20 100644 |
1842 |
depends on !KMEMCHECK |
1843 |
select PAGE_EXTENSION |
1844 |
diff --git a/mm/backing-dev.c b/mm/backing-dev.c |
1845 |
-index 6dc4580..e031ec1 100644 |
1846 |
+index 000e7b3..aad2605 100644 |
1847 |
--- a/mm/backing-dev.c |
1848 |
+++ b/mm/backing-dev.c |
1849 |
@@ -12,7 +12,7 @@ |
1850 |
@@ -104185,7 +104301,7 @@ index 6dc4580..e031ec1 100644 |
1851 |
|
1852 |
struct backing_dev_info noop_backing_dev_info = { |
1853 |
.name = "noop", |
1854 |
-@@ -474,7 +474,7 @@ int bdi_setup_and_register(struct backing_dev_info *bdi, char *name) |
1855 |
+@@ -458,7 +458,7 @@ int bdi_setup_and_register(struct backing_dev_info *bdi, char *name) |
1856 |
return err; |
1857 |
|
1858 |
err = bdi_register(bdi, NULL, "%.28s-%ld", name, |
1859 |
@@ -107141,7 +107257,7 @@ index 2dc44b1..caa1819 100644 |
1860 |
out: |
1861 |
if (ret & ~PAGE_MASK) |
1862 |
diff --git a/mm/nommu.c b/mm/nommu.c |
1863 |
-index 3fba2dc..fdad748 100644 |
1864 |
+index 3fba2dc9..fdad748 100644 |
1865 |
--- a/mm/nommu.c |
1866 |
+++ b/mm/nommu.c |
1867 |
@@ -72,7 +72,6 @@ int sysctl_max_map_count = DEFAULT_MAX_MAP_COUNT; |
1868 |
@@ -110160,7 +110276,7 @@ index df493d6..1145766 100644 |
1869 |
|
1870 |
return err; |
1871 |
diff --git a/net/core/dev.c b/net/core/dev.c |
1872 |
-index 22a53ac..1d19af7 100644 |
1873 |
+index e977e15..74b19b0 100644 |
1874 |
--- a/net/core/dev.c |
1875 |
+++ b/net/core/dev.c |
1876 |
@@ -1681,14 +1681,14 @@ int __dev_forward_skb(struct net_device *dev, struct sk_buff *skb) |
1877 |
@@ -110322,10 +110438,51 @@ index 1033725..340f65d 100644 |
1878 |
fle->object = flo; |
1879 |
else |
1880 |
diff --git a/net/core/neighbour.c b/net/core/neighbour.c |
1881 |
-index 70fe9e1..926784c 100644 |
1882 |
+index 70fe9e1..c55e69d 100644 |
1883 |
--- a/net/core/neighbour.c |
1884 |
+++ b/net/core/neighbour.c |
1885 |
-@@ -2806,7 +2806,7 @@ static int proc_unres_qlen(struct ctl_table *ctl, int write, |
1886 |
+@@ -971,6 +971,8 @@ int __neigh_event_send(struct neighbour *neigh, struct sk_buff *skb) |
1887 |
+ rc = 0; |
1888 |
+ if (neigh->nud_state & (NUD_CONNECTED | NUD_DELAY | NUD_PROBE)) |
1889 |
+ goto out_unlock_bh; |
1890 |
++ if (neigh->dead) |
1891 |
++ goto out_dead; |
1892 |
+ |
1893 |
+ if (!(neigh->nud_state & (NUD_STALE | NUD_INCOMPLETE))) { |
1894 |
+ if (NEIGH_VAR(neigh->parms, MCAST_PROBES) + |
1895 |
+@@ -1027,6 +1029,13 @@ out_unlock_bh: |
1896 |
+ write_unlock(&neigh->lock); |
1897 |
+ local_bh_enable(); |
1898 |
+ return rc; |
1899 |
++ |
1900 |
++out_dead: |
1901 |
++ if (neigh->nud_state & NUD_STALE) |
1902 |
++ goto out_unlock_bh; |
1903 |
++ write_unlock_bh(&neigh->lock); |
1904 |
++ kfree_skb(skb); |
1905 |
++ return 1; |
1906 |
+ } |
1907 |
+ EXPORT_SYMBOL(__neigh_event_send); |
1908 |
+ |
1909 |
+@@ -1090,6 +1099,8 @@ int neigh_update(struct neighbour *neigh, const u8 *lladdr, u8 new, |
1910 |
+ if (!(flags & NEIGH_UPDATE_F_ADMIN) && |
1911 |
+ (old & (NUD_NOARP | NUD_PERMANENT))) |
1912 |
+ goto out; |
1913 |
++ if (neigh->dead) |
1914 |
++ goto out; |
1915 |
+ |
1916 |
+ if (!(new & NUD_VALID)) { |
1917 |
+ neigh_del_timer(neigh); |
1918 |
+@@ -1239,6 +1250,8 @@ EXPORT_SYMBOL(neigh_update); |
1919 |
+ */ |
1920 |
+ void __neigh_set_probe_once(struct neighbour *neigh) |
1921 |
+ { |
1922 |
++ if (neigh->dead) |
1923 |
++ return; |
1924 |
+ neigh->updated = jiffies; |
1925 |
+ if (!(neigh->nud_state & NUD_FAILED)) |
1926 |
+ return; |
1927 |
+@@ -2806,7 +2819,7 @@ static int proc_unres_qlen(struct ctl_table *ctl, int write, |
1928 |
void __user *buffer, size_t *lenp, loff_t *ppos) |
1929 |
{ |
1930 |
int size, ret; |
1931 |
@@ -110334,7 +110491,7 @@ index 70fe9e1..926784c 100644 |
1932 |
|
1933 |
tmp.extra1 = &zero; |
1934 |
tmp.extra2 = &unres_qlen_max; |
1935 |
-@@ -2868,7 +2868,7 @@ static int neigh_proc_dointvec_zero_intmax(struct ctl_table *ctl, int write, |
1936 |
+@@ -2868,7 +2881,7 @@ static int neigh_proc_dointvec_zero_intmax(struct ctl_table *ctl, int write, |
1937 |
void __user *buffer, |
1938 |
size_t *lenp, loff_t *ppos) |
1939 |
{ |
1940 |
@@ -110483,7 +110640,7 @@ index 508155b..fad080f 100644 |
1941 |
pr_warn("cannot create /proc/net/%s\n", PG_PROC_DIR); |
1942 |
return -ENODEV; |
1943 |
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c |
1944 |
-index 7ebed55..378bf34 100644 |
1945 |
+index a2b90e1..7882f75 100644 |
1946 |
--- a/net/core/rtnetlink.c |
1947 |
+++ b/net/core/rtnetlink.c |
1948 |
@@ -61,7 +61,7 @@ struct rtnl_link { |
1949 |
@@ -111639,7 +111796,7 @@ index f027a70..2e64edc 100644 |
1950 |
|
1951 |
static int raw_seq_show(struct seq_file *seq, void *v) |
1952 |
diff --git a/net/ipv4/route.c b/net/ipv4/route.c |
1953 |
-index 20fc020..3ba426f 100644 |
1954 |
+index e262a08..d1fc3be 100644 |
1955 |
--- a/net/ipv4/route.c |
1956 |
+++ b/net/ipv4/route.c |
1957 |
@@ -228,7 +228,7 @@ static const struct seq_operations rt_cache_seq_ops = { |
1958 |
@@ -111692,7 +111849,7 @@ index 20fc020..3ba426f 100644 |
1959 |
} |
1960 |
EXPORT_SYMBOL(ip_idents_reserve); |
1961 |
|
1962 |
-@@ -2639,34 +2639,34 @@ static struct ctl_table ipv4_route_flush_table[] = { |
1963 |
+@@ -2643,34 +2643,34 @@ static struct ctl_table ipv4_route_flush_table[] = { |
1964 |
.maxlen = sizeof(int), |
1965 |
.mode = 0200, |
1966 |
.proc_handler = ipv4_sysctl_rtcache_flush, |
1967 |
@@ -111735,7 +111892,7 @@ index 20fc020..3ba426f 100644 |
1968 |
err_dup: |
1969 |
return -ENOMEM; |
1970 |
} |
1971 |
-@@ -2689,8 +2689,8 @@ static __net_initdata struct pernet_operations sysctl_route_ops = { |
1972 |
+@@ -2693,8 +2693,8 @@ static __net_initdata struct pernet_operations sysctl_route_ops = { |
1973 |
|
1974 |
static __net_init int rt_genid_init(struct net *net) |
1975 |
{ |
1976 |
@@ -111746,7 +111903,7 @@ index 20fc020..3ba426f 100644 |
1977 |
get_random_bytes(&net->ipv4.dev_addr_genid, |
1978 |
sizeof(net->ipv4.dev_addr_genid)); |
1979 |
return 0; |
1980 |
-@@ -2734,11 +2734,7 @@ int __init ip_rt_init(void) |
1981 |
+@@ -2738,11 +2738,7 @@ int __init ip_rt_init(void) |
1982 |
int rc = 0; |
1983 |
int cpu; |
1984 |
|
1985 |
@@ -111977,7 +112134,7 @@ index f1756ee..8908cb0 100644 |
1986 |
} |
1987 |
|
1988 |
diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c |
1989 |
-index dd11ac7..c0872da 100644 |
1990 |
+index 50277af..defe393 100644 |
1991 |
--- a/net/ipv4/tcp_minisocks.c |
1992 |
+++ b/net/ipv4/tcp_minisocks.c |
1993 |
@@ -27,6 +27,10 @@ |
1994 |
@@ -111991,7 +112148,7 @@ index dd11ac7..c0872da 100644 |
1995 |
int sysctl_tcp_syncookies __read_mostly = 1; |
1996 |
EXPORT_SYMBOL(sysctl_tcp_syncookies); |
1997 |
|
1998 |
-@@ -785,7 +789,10 @@ embryonic_reset: |
1999 |
+@@ -788,7 +792,10 @@ embryonic_reset: |
2000 |
* avoid becoming vulnerable to outside attack aiming at |
2001 |
* resetting legit local connections. |
2002 |
*/ |
2003 |
@@ -112046,7 +112203,7 @@ index 0732b78..a82bdc6 100644 |
2004 |
syn_set ? 0 : icsk->icsk_user_timeout, syn_set)) { |
2005 |
/* Has it gone just too far? */ |
2006 |
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c |
2007 |
-index 97ef1f8b..abeb965 100644 |
2008 |
+index 51f1745..4bc0427 100644 |
2009 |
--- a/net/ipv4/udp.c |
2010 |
+++ b/net/ipv4/udp.c |
2011 |
@@ -87,6 +87,7 @@ |
2012 |
@@ -112057,7 +112214,7 @@ index 97ef1f8b..abeb965 100644 |
2013 |
#include <linux/socket.h> |
2014 |
#include <linux/sockios.h> |
2015 |
#include <linux/igmp.h> |
2016 |
-@@ -114,6 +115,10 @@ |
2017 |
+@@ -115,6 +116,10 @@ |
2018 |
#include <net/busy_poll.h> |
2019 |
#include "udp_impl.h" |
2020 |
|
2021 |
@@ -112068,7 +112225,7 @@ index 97ef1f8b..abeb965 100644 |
2022 |
struct udp_table udp_table __read_mostly; |
2023 |
EXPORT_SYMBOL(udp_table); |
2024 |
|
2025 |
-@@ -608,6 +613,9 @@ static inline bool __udp_is_mcast_sock(struct net *net, struct sock *sk, |
2026 |
+@@ -609,6 +614,9 @@ static inline bool __udp_is_mcast_sock(struct net *net, struct sock *sk, |
2027 |
return true; |
2028 |
} |
2029 |
|
2030 |
@@ -112078,7 +112235,7 @@ index 97ef1f8b..abeb965 100644 |
2031 |
/* |
2032 |
* This routine is called by the ICMP module when it gets some |
2033 |
* sort of error condition. If err < 0 then the socket should |
2034 |
-@@ -945,9 +953,18 @@ int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, |
2035 |
+@@ -946,9 +954,18 @@ int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, |
2036 |
dport = usin->sin_port; |
2037 |
if (dport == 0) |
2038 |
return -EINVAL; |
2039 |
@@ -112097,7 +112254,7 @@ index 97ef1f8b..abeb965 100644 |
2040 |
daddr = inet->inet_daddr; |
2041 |
dport = inet->inet_dport; |
2042 |
/* Open fast path for connected socket. |
2043 |
-@@ -1195,7 +1212,7 @@ static unsigned int first_packet_length(struct sock *sk) |
2044 |
+@@ -1196,7 +1213,7 @@ static unsigned int first_packet_length(struct sock *sk) |
2045 |
IS_UDPLITE(sk)); |
2046 |
UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, |
2047 |
IS_UDPLITE(sk)); |
2048 |
@@ -112106,7 +112263,7 @@ index 97ef1f8b..abeb965 100644 |
2049 |
__skb_unlink(skb, rcvq); |
2050 |
__skb_queue_tail(&list_kill, skb); |
2051 |
} |
2052 |
-@@ -1275,6 +1292,10 @@ try_again: |
2053 |
+@@ -1276,6 +1293,10 @@ try_again: |
2054 |
if (!skb) |
2055 |
goto out; |
2056 |
|
2057 |
@@ -112117,7 +112274,7 @@ index 97ef1f8b..abeb965 100644 |
2058 |
ulen = skb->len - sizeof(struct udphdr); |
2059 |
copied = len; |
2060 |
if (copied > ulen) |
2061 |
-@@ -1307,7 +1328,7 @@ try_again: |
2062 |
+@@ -1308,7 +1329,7 @@ try_again: |
2063 |
if (unlikely(err)) { |
2064 |
trace_kfree_skb(skb, udp_recvmsg); |
2065 |
if (!peeked) { |
2066 |
@@ -112126,20 +112283,7 @@ index 97ef1f8b..abeb965 100644 |
2067 |
UDP_INC_STATS_USER(sock_net(sk), |
2068 |
UDP_MIB_INERRORS, is_udplite); |
2069 |
} |
2070 |
-@@ -1348,10 +1369,8 @@ csum_copy_err: |
2071 |
- } |
2072 |
- unlock_sock_fast(sk, slow); |
2073 |
- |
2074 |
-- if (noblock) |
2075 |
-- return -EAGAIN; |
2076 |
-- |
2077 |
-- /* starting over for a new packet */ |
2078 |
-+ /* starting over for a new packet, but check if we need to yield */ |
2079 |
-+ cond_resched(); |
2080 |
- msg->msg_flags &= ~MSG_TRUNC; |
2081 |
- goto try_again; |
2082 |
- } |
2083 |
-@@ -1605,7 +1624,7 @@ csum_error: |
2084 |
+@@ -1604,7 +1625,7 @@ csum_error: |
2085 |
UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite); |
2086 |
drop: |
2087 |
UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite); |
2088 |
@@ -112148,7 +112292,7 @@ index 97ef1f8b..abeb965 100644 |
2089 |
kfree_skb(skb); |
2090 |
return -1; |
2091 |
} |
2092 |
-@@ -1624,7 +1643,7 @@ static void flush_stack(struct sock **stack, unsigned int count, |
2093 |
+@@ -1623,7 +1644,7 @@ static void flush_stack(struct sock **stack, unsigned int count, |
2094 |
skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC); |
2095 |
|
2096 |
if (!skb1) { |
2097 |
@@ -112157,7 +112301,7 @@ index 97ef1f8b..abeb965 100644 |
2098 |
UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS, |
2099 |
IS_UDPLITE(sk)); |
2100 |
UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, |
2101 |
-@@ -1830,6 +1849,9 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, |
2102 |
+@@ -1829,6 +1850,9 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, |
2103 |
goto csum_error; |
2104 |
|
2105 |
UDP_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE); |
2106 |
@@ -112167,7 +112311,7 @@ index 97ef1f8b..abeb965 100644 |
2107 |
icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0); |
2108 |
|
2109 |
/* |
2110 |
-@@ -2416,7 +2438,7 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f, |
2111 |
+@@ -2426,7 +2450,7 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f, |
2112 |
from_kuid_munged(seq_user_ns(f), sock_i_uid(sp)), |
2113 |
0, sock_i_ino(sp), |
2114 |
atomic_read(&sp->sk_refcnt), sp, |
2115 |
@@ -112849,7 +112993,7 @@ index c5c10fa..2577d51 100644 |
2116 |
struct ctl_table *ipv6_icmp_table; |
2117 |
int err; |
2118 |
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c |
2119 |
-index 1f5e622..8387d90 100644 |
2120 |
+index 5ca3bc8..8c53c81 100644 |
2121 |
--- a/net/ipv6/tcp_ipv6.c |
2122 |
+++ b/net/ipv6/tcp_ipv6.c |
2123 |
@@ -104,6 +104,10 @@ static void inet6_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb) |
2124 |
@@ -112908,7 +113052,7 @@ index 1f5e622..8387d90 100644 |
2125 |
} |
2126 |
|
2127 |
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c |
2128 |
-index d048d46..cacb4d2 100644 |
2129 |
+index 1c9512a..786b8d6 100644 |
2130 |
--- a/net/ipv6/udp.c |
2131 |
+++ b/net/ipv6/udp.c |
2132 |
@@ -76,6 +76,10 @@ static unsigned int udp6_ehashfn(struct net *net, |
2133 |
@@ -112931,20 +113075,7 @@ index d048d46..cacb4d2 100644 |
2134 |
if (is_udp4) |
2135 |
UDP_INC_STATS_USER(sock_net(sk), |
2136 |
UDP_MIB_INERRORS, |
2137 |
-@@ -528,10 +532,8 @@ csum_copy_err: |
2138 |
- } |
2139 |
- unlock_sock_fast(sk, slow); |
2140 |
- |
2141 |
-- if (noblock) |
2142 |
-- return -EAGAIN; |
2143 |
-- |
2144 |
-- /* starting over for a new packet */ |
2145 |
-+ /* starting over for a new packet, but check if we need to yield */ |
2146 |
-+ cond_resched(); |
2147 |
- msg->msg_flags &= ~MSG_TRUNC; |
2148 |
- goto try_again; |
2149 |
- } |
2150 |
-@@ -714,7 +716,7 @@ csum_error: |
2151 |
+@@ -712,7 +716,7 @@ csum_error: |
2152 |
UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_CSUMERRORS, is_udplite); |
2153 |
drop: |
2154 |
UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, is_udplite); |
2155 |
@@ -112953,7 +113084,7 @@ index d048d46..cacb4d2 100644 |
2156 |
kfree_skb(skb); |
2157 |
return -1; |
2158 |
} |
2159 |
-@@ -753,7 +755,7 @@ static void flush_stack(struct sock **stack, unsigned int count, |
2160 |
+@@ -753,7 +757,7 @@ static void flush_stack(struct sock **stack, unsigned int count, |
2161 |
if (likely(skb1 == NULL)) |
2162 |
skb1 = (i == final) ? skb : skb_clone(skb, GFP_ATOMIC); |
2163 |
if (!skb1) { |
2164 |
@@ -112962,7 +113093,7 @@ index d048d46..cacb4d2 100644 |
2165 |
UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS, |
2166 |
IS_UDPLITE(sk)); |
2167 |
UDP6_INC_STATS_BH(sock_net(sk), UDP_MIB_INERRORS, |
2168 |
-@@ -937,6 +939,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, |
2169 |
+@@ -937,6 +941,9 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable, |
2170 |
goto csum_error; |
2171 |
|
2172 |
UDP6_INC_STATS_BH(net, UDP_MIB_NOPORTS, proto == IPPROTO_UDPLITE); |
2173 |
@@ -114083,7 +114214,7 @@ index 11de55e..f25e448 100644 |
2174 |
return 0; |
2175 |
} |
2176 |
diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c |
2177 |
-index d1d7a81..b45b03d 100644 |
2178 |
+index 0e9c28d..d99773f 100644 |
2179 |
--- a/net/netlink/af_netlink.c |
2180 |
+++ b/net/netlink/af_netlink.c |
2181 |
@@ -260,7 +260,7 @@ static void netlink_overrun(struct sock *sk) |
2182 |
@@ -114095,7 +114226,7 @@ index d1d7a81..b45b03d 100644 |
2183 |
} |
2184 |
|
2185 |
static void netlink_rcv_wake(struct sock *sk) |
2186 |
-@@ -3002,7 +3002,7 @@ static int netlink_seq_show(struct seq_file *seq, void *v) |
2187 |
+@@ -3005,7 +3005,7 @@ static int netlink_seq_show(struct seq_file *seq, void *v) |
2188 |
sk_wmem_alloc_get(s), |
2189 |
nlk->cb_running, |
2190 |
atomic_read(&s->sk_refcnt), |
2191 |
@@ -114180,7 +114311,7 @@ index bc85331..0d3dce0 100644 |
2192 |
/** |
2193 |
* struct vport_portids - array of netlink portids of a vport. |
2194 |
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c |
2195 |
-index f8db706..2b4631e 100644 |
2196 |
+index f8db706..0e29f8f 100644 |
2197 |
--- a/net/packet/af_packet.c |
2198 |
+++ b/net/packet/af_packet.c |
2199 |
@@ -269,7 +269,7 @@ static int packet_direct_xmit(struct sk_buff *skb) |
2200 |
@@ -114192,7 +114323,40 @@ index f8db706..2b4631e 100644 |
2201 |
kfree_skb(skb); |
2202 |
return NET_XMIT_DROP; |
2203 |
} |
2204 |
-@@ -1847,7 +1847,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, |
2205 |
+@@ -1266,16 +1266,6 @@ static void packet_sock_destruct(struct sock *sk) |
2206 |
+ sk_refcnt_debug_dec(sk); |
2207 |
+ } |
2208 |
+ |
2209 |
+-static int fanout_rr_next(struct packet_fanout *f, unsigned int num) |
2210 |
+-{ |
2211 |
+- int x = atomic_read(&f->rr_cur) + 1; |
2212 |
+- |
2213 |
+- if (x >= num) |
2214 |
+- x = 0; |
2215 |
+- |
2216 |
+- return x; |
2217 |
+-} |
2218 |
+- |
2219 |
+ static unsigned int fanout_demux_hash(struct packet_fanout *f, |
2220 |
+ struct sk_buff *skb, |
2221 |
+ unsigned int num) |
2222 |
+@@ -1287,13 +1277,9 @@ static unsigned int fanout_demux_lb(struct packet_fanout *f, |
2223 |
+ struct sk_buff *skb, |
2224 |
+ unsigned int num) |
2225 |
+ { |
2226 |
+- int cur, old; |
2227 |
++ unsigned int val = atomic_inc_return(&f->rr_cur); |
2228 |
+ |
2229 |
+- cur = atomic_read(&f->rr_cur); |
2230 |
+- while ((old = atomic_cmpxchg(&f->rr_cur, cur, |
2231 |
+- fanout_rr_next(f, num))) != cur) |
2232 |
+- cur = old; |
2233 |
+- return cur; |
2234 |
++ return val % num; |
2235 |
+ } |
2236 |
+ |
2237 |
+ static unsigned int fanout_demux_cpu(struct packet_fanout *f, |
2238 |
+@@ -1847,7 +1833,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, |
2239 |
|
2240 |
spin_lock(&sk->sk_receive_queue.lock); |
2241 |
po->stats.stats1.tp_packets++; |
2242 |
@@ -114201,7 +114365,7 @@ index f8db706..2b4631e 100644 |
2243 |
__skb_queue_tail(&sk->sk_receive_queue, skb); |
2244 |
spin_unlock(&sk->sk_receive_queue.lock); |
2245 |
sk->sk_data_ready(sk); |
2246 |
-@@ -1856,7 +1856,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, |
2247 |
+@@ -1856,7 +1842,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev, |
2248 |
drop_n_acct: |
2249 |
spin_lock(&sk->sk_receive_queue.lock); |
2250 |
po->stats.stats1.tp_drops++; |
2251 |
@@ -114210,7 +114374,7 @@ index f8db706..2b4631e 100644 |
2252 |
spin_unlock(&sk->sk_receive_queue.lock); |
2253 |
|
2254 |
drop_n_restore: |
2255 |
-@@ -3499,7 +3499,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, |
2256 |
+@@ -3499,7 +3485,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, |
2257 |
case PACKET_HDRLEN: |
2258 |
if (len > sizeof(int)) |
2259 |
len = sizeof(int); |
2260 |
@@ -114219,7 +114383,7 @@ index f8db706..2b4631e 100644 |
2261 |
return -EFAULT; |
2262 |
switch (val) { |
2263 |
case TPACKET_V1: |
2264 |
-@@ -3545,7 +3545,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, |
2265 |
+@@ -3545,7 +3531,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, |
2266 |
len = lv; |
2267 |
if (put_user(len, optlen)) |
2268 |
return -EFAULT; |
2269 |
@@ -115710,7 +115874,7 @@ index 72c339e..a93593a 100644 |
2270 |
sub->evt.event = htohl(event, sub->swap); |
2271 |
sub->evt.found_lower = htohl(found_lower, sub->swap); |
2272 |
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c |
2273 |
-index 526b6ed..ec20275 100644 |
2274 |
+index 146881f..9441ed2 100644 |
2275 |
--- a/net/unix/af_unix.c |
2276 |
+++ b/net/unix/af_unix.c |
2277 |
@@ -791,6 +791,12 @@ static struct sock *unix_find_other(struct net *net, |
2278 |
@@ -115759,7 +115923,7 @@ index 526b6ed..ec20275 100644 |
2279 |
done_path_create(&path, dentry); |
2280 |
return err; |
2281 |
} |
2282 |
-@@ -2233,11 +2252,14 @@ static unsigned int unix_dgram_poll(struct file *file, struct socket *sock, |
2283 |
+@@ -2241,11 +2260,14 @@ static unsigned int unix_dgram_poll(struct file *file, struct socket *sock, |
2284 |
writable = unix_writable(sk); |
2285 |
other = unix_peer_get(sk); |
2286 |
if (other) { |
2287 |
@@ -115776,7 +115940,7 @@ index 526b6ed..ec20275 100644 |
2288 |
sock_put(other); |
2289 |
} |
2290 |
|
2291 |
-@@ -2334,9 +2356,13 @@ static int unix_seq_show(struct seq_file *seq, void *v) |
2292 |
+@@ -2342,9 +2364,13 @@ static int unix_seq_show(struct seq_file *seq, void *v) |
2293 |
seq_puts(seq, "Num RefCount Protocol Flags Type St " |
2294 |
"Inode Path\n"); |
2295 |
else { |
2296 |
@@ -115791,7 +115955,7 @@ index 526b6ed..ec20275 100644 |
2297 |
|
2298 |
seq_printf(seq, "%pK: %08X %08X %08X %04X %02X %5lu", |
2299 |
s, |
2300 |
-@@ -2361,10 +2387,29 @@ static int unix_seq_show(struct seq_file *seq, void *v) |
2301 |
+@@ -2369,10 +2395,29 @@ static int unix_seq_show(struct seq_file *seq, void *v) |
2302 |
seq_putc(seq, '@'); |
2303 |
i++; |
2304 |
} |
2305 |
@@ -126174,10 +126338,10 @@ index 0000000..b8e7188 |
2306 |
+} |
2307 |
diff --git a/tools/gcc/size_overflow_plugin/size_overflow_hash.data b/tools/gcc/size_overflow_plugin/size_overflow_hash.data |
2308 |
new file mode 100644 |
2309 |
-index 0000000..19e2901 |
2310 |
+index 0000000..89e8e68 |
2311 |
--- /dev/null |
2312 |
+++ b/tools/gcc/size_overflow_plugin/size_overflow_hash.data |
2313 |
-@@ -0,0 +1,27981 @@ |
2314 |
+@@ -0,0 +1,27982 @@ |
2315 |
+intel_fake_agp_alloc_by_type_1 intel_fake_agp_alloc_by_type 1 1 NULL nohasharray |
2316 |
+iwl_set_tx_power_1 iwl_set_tx_power 0 1 &intel_fake_agp_alloc_by_type_1 |
2317 |
+ocfs2_get_refcount_tree_3 ocfs2_get_refcount_tree 0 3 NULL |
2318 |
@@ -141936,7 +142100,8 @@ index 0000000..19e2901 |
2319 |
+cyapa_gen5_bl_exit_36644 cyapa_gen5_bl_exit 0 36644 &ov2640_write_array_36644 |
2320 |
+m66592_udc_start_36646 m66592_udc_start 0 36646 NULL |
2321 |
+mem_cgroup_do_precharge_36647 mem_cgroup_do_precharge 0 36647 NULL |
2322 |
-+lpfc_idiag_extacc_alloc_get_36648 lpfc_idiag_extacc_alloc_get 0-3 36648 NULL |
2323 |
++lpfc_idiag_extacc_alloc_get_36648 lpfc_idiag_extacc_alloc_get 0-3 36648 NULL nohasharray |
2324 |
++tty_copy_to_user_36648 tty_copy_to_user 4 36648 &lpfc_idiag_extacc_alloc_get_36648 |
2325 |
+add_dev_support_show_36650 add_dev_support_show 0 36650 NULL |
2326 |
+hfsplus_osx_listxattr_36654 hfsplus_osx_listxattr 0-5 36654 NULL nohasharray |
2327 |
+interface_show_36654 interface_show 0 36654 &hfsplus_osx_listxattr_36654 |
2328 |
|
2329 |
diff --git a/3.14.44/4425_grsec_remove_EI_PAX.patch b/4.0.6/4425_grsec_remove_EI_PAX.patch |
2330 |
similarity index 100% |
2331 |
rename from 3.14.44/4425_grsec_remove_EI_PAX.patch |
2332 |
rename to 4.0.6/4425_grsec_remove_EI_PAX.patch |
2333 |
|
2334 |
diff --git a/4.0.5/4427_force_XATTR_PAX_tmpfs.patch b/4.0.6/4427_force_XATTR_PAX_tmpfs.patch |
2335 |
similarity index 100% |
2336 |
rename from 4.0.5/4427_force_XATTR_PAX_tmpfs.patch |
2337 |
rename to 4.0.6/4427_force_XATTR_PAX_tmpfs.patch |
2338 |
|
2339 |
diff --git a/3.14.44/4430_grsec-remove-localversion-grsec.patch b/4.0.6/4430_grsec-remove-localversion-grsec.patch |
2340 |
similarity index 100% |
2341 |
rename from 3.14.44/4430_grsec-remove-localversion-grsec.patch |
2342 |
rename to 4.0.6/4430_grsec-remove-localversion-grsec.patch |
2343 |
|
2344 |
diff --git a/4.0.5/4435_grsec-mute-warnings.patch b/4.0.6/4435_grsec-mute-warnings.patch |
2345 |
similarity index 100% |
2346 |
rename from 4.0.5/4435_grsec-mute-warnings.patch |
2347 |
rename to 4.0.6/4435_grsec-mute-warnings.patch |
2348 |
|
2349 |
diff --git a/3.14.44/4440_grsec-remove-protected-paths.patch b/4.0.6/4440_grsec-remove-protected-paths.patch |
2350 |
similarity index 100% |
2351 |
rename from 3.14.44/4440_grsec-remove-protected-paths.patch |
2352 |
rename to 4.0.6/4440_grsec-remove-protected-paths.patch |
2353 |
|
2354 |
diff --git a/4.0.5/4450_grsec-kconfig-default-gids.patch b/4.0.6/4450_grsec-kconfig-default-gids.patch |
2355 |
similarity index 100% |
2356 |
rename from 4.0.5/4450_grsec-kconfig-default-gids.patch |
2357 |
rename to 4.0.6/4450_grsec-kconfig-default-gids.patch |
2358 |
|
2359 |
diff --git a/4.0.5/4465_selinux-avc_audit-log-curr_ip.patch b/4.0.6/4465_selinux-avc_audit-log-curr_ip.patch |
2360 |
similarity index 100% |
2361 |
rename from 4.0.5/4465_selinux-avc_audit-log-curr_ip.patch |
2362 |
rename to 4.0.6/4465_selinux-avc_audit-log-curr_ip.patch |
2363 |
|
2364 |
diff --git a/4.0.5/4470_disable-compat_vdso.patch b/4.0.6/4470_disable-compat_vdso.patch |
2365 |
similarity index 100% |
2366 |
rename from 4.0.5/4470_disable-compat_vdso.patch |
2367 |
rename to 4.0.6/4470_disable-compat_vdso.patch |
2368 |
|
2369 |
diff --git a/3.14.44/4475_emutramp_default_on.patch b/4.0.6/4475_emutramp_default_on.patch |
2370 |
similarity index 100% |
2371 |
rename from 3.14.44/4475_emutramp_default_on.patch |
2372 |
rename to 4.0.6/4475_emutramp_default_on.patch |