diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2012-10-31 07:30:09 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2012-10-31 07:30:58 +0000 |
commit | d32349577e7de396337c3d64aff9514d8aa453c8 (patch) | |
tree | 7fc7044d9bb6603c384af760bc3c88e80e17ff69 /main | |
parent | 687fbb1c76df4c66ac6bc6243132cd2113a86e8f (diff) | |
download | aports-d32349577e7de396337c3d64aff9514d8aa453c8.tar.bz2 aports-d32349577e7de396337c3d64aff9514d8aa453c8.tar.xz |
main/linux-grsec: upgrade grsecurity-2.9.1-3.6.4-201210291446
Diffstat (limited to 'main')
-rw-r--r-- | main/linux-grsec/APKBUILD | 8 | ||||
-rw-r--r-- | main/linux-grsec/grsecurity-2.9.1-3.6.4-201210291446.patch (renamed from main/linux-grsec/grsecurity-2.9.1-3.6.3-201210231942.patch) | 337 |
2 files changed, 166 insertions, 179 deletions
diff --git a/main/linux-grsec/APKBUILD b/main/linux-grsec/APKBUILD index 53f7802d6c..a2d9cc1648 100644 --- a/main/linux-grsec/APKBUILD +++ b/main/linux-grsec/APKBUILD @@ -2,7 +2,7 @@ _flavor=grsec pkgname=linux-${_flavor} -pkgver=3.6.3 +pkgver=3.6.4 _kernver=3.6 pkgrel=0 pkgdesc="Linux kernel with grsecurity" @@ -14,7 +14,7 @@ _config=${config:-kernelconfig.${CARCH}} install= source="http://ftp.kernel.org/pub/linux/kernel/v3.x/linux-$_kernver.tar.xz http://ftp.kernel.org/pub/linux/kernel/v3.x/patch-$pkgver.xz - grsecurity-2.9.1-3.6.3-201210231942.patch + grsecurity-2.9.1-3.6.4-201210291446.patch 0004-arp-flush-arp-cache-on-device-change.patch @@ -139,8 +139,8 @@ dev() { } md5sums="1a1760420eac802c541a20ab51a093d1 linux-3.6.tar.xz -96701113d37ef4f9b785206ab8bcc71e patch-3.6.3.xz -854e121b7f805e7a6b862d49d4f7b420 grsecurity-2.9.1-3.6.3-201210231942.patch +d7efab4da2682c44662b684026b059f7 patch-3.6.4.xz +4235328c981070bca82bc61b7f7bc7c1 grsecurity-2.9.1-3.6.4-201210291446.patch 776adeeb5272093574f8836c5037dd7d 0004-arp-flush-arp-cache-on-device-change.patch 80def301b4cf710e0855d4058efe46bb kernelconfig.x86 8eddcd9b36f4c2580e0b2db91eed3366 kernelconfig.x86_64" diff --git a/main/linux-grsec/grsecurity-2.9.1-3.6.3-201210231942.patch b/main/linux-grsec/grsecurity-2.9.1-3.6.4-201210291446.patch index 667fa189ce..08c581d833 100644 --- a/main/linux-grsec/grsecurity-2.9.1-3.6.3-201210231942.patch +++ b/main/linux-grsec/grsecurity-2.9.1-3.6.4-201210291446.patch @@ -251,7 +251,7 @@ index ad7e2e5..199f49e 100644 pcd. [PARIDE] diff --git a/Makefile b/Makefile -index 6cdadf4..02df425 100644 +index dcf132a..db194e3 100644 --- a/Makefile +++ b/Makefile @@ -241,8 +241,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ @@ -5957,7 +5957,7 @@ index 11c6c96..3ec33e8 100644 mm->unmap_area = arch_unmap_area_topdown; } diff --git a/arch/sparc/kernel/syscalls.S b/arch/sparc/kernel/syscalls.S -index 1d7e274..b39c527 100644 +index 7f5f65d..3308382 100644 --- a/arch/sparc/kernel/syscalls.S +++ b/arch/sparc/kernel/syscalls.S @@ -62,7 +62,7 @@ sys32_rt_sigreturn: @@ -5987,24 +5987,15 @@ index 1d7e274..b39c527 100644 bne,pn %icc, linux_syscall_trace ! CTI Group mov %i0, %l5 ! IEU0 2: call %l7 ! CTI Group brk forced -@@ -226,7 +226,7 @@ ret_sys_call: +@@ -218,7 +218,7 @@ ret_sys_call: cmp %o0, -ERESTART_RESTARTBLOCK bgeu,pn %xcc, 1f -- andcc %l0, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT|_TIF_SYSCALL_TRACEPOINT), %l6 -+ andcc %l0, _TIF_WORK_SYSCALL, %l6 - 80: - /* System call success, clear Carry condition code. */ - andn %g3, %g2, %g3 -@@ -241,7 +241,7 @@ ret_sys_call: - /* System call failure, set Carry condition code. - * Also, get abs(errno) to return to the process. - */ -- andcc %l0, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT|_TIF_SYSCALL_TRACEPOINT), %l6 -+ andcc %l0, _TIF_WORK_SYSCALL, %l6 - sub %g0, %o0, %o0 - or %g3, %g2, %g3 - stx %o0, [%sp + PTREGS_OFF + PT_V9_I0] +- andcc %l0, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT|_TIF_SYSCALL_TRACEPOINT), %g0 ++ andcc %l0, _TIF_WORK_SYSCALL, %g0 + ldx [%sp + PTREGS_OFF + PT_V9_TNPC], %l1 ! pc = npc + + 2: diff --git a/arch/sparc/kernel/traps_32.c b/arch/sparc/kernel/traps_32.c index a5785ea..405c5f7 100644 --- a/arch/sparc/kernel/traps_32.c @@ -14972,7 +14963,7 @@ index 9b9f18b..9fcaa04 100644 #include <asm/processor.h> #include <asm/fcntl.h> diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S -index 623f288..8bdd78a 100644 +index 8f8e8ee..3617d6e 100644 --- a/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S @@ -176,13 +176,153 @@ @@ -15659,7 +15650,7 @@ index 623f288..8bdd78a 100644 /* * End of kprobes section */ -@@ -1100,7 +1359,7 @@ BUILD_INTERRUPT3(xen_hvm_callback_vector, XEN_HVM_EVTCHN_CALLBACK, +@@ -1102,7 +1361,7 @@ BUILD_INTERRUPT3(xen_hvm_callback_vector, XEN_HVM_EVTCHN_CALLBACK, ENTRY(mcount) ret @@ -15668,7 +15659,7 @@ index 623f288..8bdd78a 100644 ENTRY(ftrace_caller) cmpl $0, function_trace_stop -@@ -1129,7 +1388,7 @@ ftrace_graph_call: +@@ -1131,7 +1390,7 @@ ftrace_graph_call: .globl ftrace_stub ftrace_stub: ret @@ -15677,7 +15668,7 @@ index 623f288..8bdd78a 100644 #else /* ! CONFIG_DYNAMIC_FTRACE */ -@@ -1165,7 +1424,7 @@ trace: +@@ -1167,7 +1426,7 @@ trace: popl %ecx popl %eax jmp ftrace_stub @@ -15686,7 +15677,7 @@ index 623f288..8bdd78a 100644 #endif /* CONFIG_DYNAMIC_FTRACE */ #endif /* CONFIG_FUNCTION_TRACER */ -@@ -1186,7 +1445,7 @@ ENTRY(ftrace_graph_caller) +@@ -1188,7 +1447,7 @@ ENTRY(ftrace_graph_caller) popl %ecx popl %eax ret @@ -15695,7 +15686,7 @@ index 623f288..8bdd78a 100644 .globl return_to_handler return_to_handler: -@@ -1241,15 +1500,18 @@ error_code: +@@ -1243,15 +1502,18 @@ error_code: movl $-1, PT_ORIG_EAX(%esp) # no syscall to restart REG_TO_PTGS %ecx SET_KERNEL_GS %ecx @@ -15716,7 +15707,7 @@ index 623f288..8bdd78a 100644 /* * Debug traps and NMI can happen at the one SYSENTER instruction -@@ -1291,7 +1553,7 @@ debug_stack_correct: +@@ -1293,7 +1555,7 @@ debug_stack_correct: call do_debug jmp ret_from_exception CFI_ENDPROC @@ -15725,7 +15716,7 @@ index 623f288..8bdd78a 100644 /* * NMI is doubly nasty. It can happen _while_ we're handling -@@ -1328,6 +1590,9 @@ nmi_stack_correct: +@@ -1330,6 +1592,9 @@ nmi_stack_correct: xorl %edx,%edx # zero error code movl %esp,%eax # pt_regs pointer call do_nmi @@ -15735,7 +15726,7 @@ index 623f288..8bdd78a 100644 jmp restore_all_notrace CFI_ENDPROC -@@ -1364,12 +1629,15 @@ nmi_espfix_stack: +@@ -1366,12 +1631,15 @@ nmi_espfix_stack: FIXUP_ESPFIX_STACK # %eax == %esp xorl %edx,%edx # zero error code call do_nmi @@ -15752,7 +15743,7 @@ index 623f288..8bdd78a 100644 ENTRY(int3) RING0_INT_FRAME -@@ -1381,14 +1649,14 @@ ENTRY(int3) +@@ -1383,14 +1651,14 @@ ENTRY(int3) call do_int3 jmp ret_from_exception CFI_ENDPROC @@ -15769,7 +15760,7 @@ index 623f288..8bdd78a 100644 #ifdef CONFIG_KVM_GUEST ENTRY(async_page_fault) -@@ -1396,7 +1664,7 @@ ENTRY(async_page_fault) +@@ -1398,7 +1666,7 @@ ENTRY(async_page_fault) pushl_cfi $do_async_page_fault jmp error_code CFI_ENDPROC @@ -15779,7 +15770,7 @@ index 623f288..8bdd78a 100644 /* diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S -index 69babd8..4270a51 100644 +index dcdd0ea..de0bb2d 100644 --- a/arch/x86/kernel/entry_64.S +++ b/arch/x86/kernel/entry_64.S @@ -57,6 +57,8 @@ @@ -16843,7 +16834,7 @@ index c18f59d..9c0c9f6 100644 #ifdef CONFIG_BLK_DEV_INITRD /* Reserve INITRD */ diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S -index d42ab17..cb1b997 100644 +index d42ab17..87b9555 100644 --- a/arch/x86/kernel/head_32.S +++ b/arch/x86/kernel/head_32.S @@ -26,6 +26,12 @@ @@ -16899,20 +16890,20 @@ index d42ab17..cb1b997 100644 ENTRY(startup_32) movl pa(stack_start),%ecx -@@ -106,6 +121,57 @@ ENTRY(startup_32) +@@ -106,6 +121,59 @@ ENTRY(startup_32) 2: leal -__PAGE_OFFSET(%ecx),%esp +#ifdef CONFIG_SMP + movl $pa(cpu_gdt_table),%edi + movl $__per_cpu_load,%eax -+ movw %ax,__KERNEL_PERCPU + 2(%edi) ++ movw %ax,GDT_ENTRY_PERCPU * 8 + 2(%edi) + rorl $16,%eax -+ movb %al,__KERNEL_PERCPU + 4(%edi) -+ movb %ah,__KERNEL_PERCPU + 7(%edi) ++ movb %al,GDT_ENTRY_PERCPU * 8 + 4(%edi) ++ movb %ah,GDT_ENTRY_PERCPU * 8 + 7(%edi) + movl $__per_cpu_end - 1,%eax + subl $__per_cpu_start,%eax -+ movw %ax,__KERNEL_PERCPU + 0(%edi) ++ movw %ax,GDT_ENTRY_PERCPU * 8 + 0(%edi) +#endif + +#ifdef CONFIG_PAX_MEMORY_UDEREF @@ -16929,10 +16920,10 @@ index d42ab17..cb1b997 100644 +#ifdef CONFIG_PAX_KERNEXEC + movl $pa(boot_gdt),%edi + movl $__LOAD_PHYSICAL_ADDR,%eax -+ movw %ax,__BOOT_CS + 2(%edi) ++ movw %ax,GDT_ENTRY_BOOT_CS * 8 + 2(%edi) + rorl $16,%eax -+ movb %al,__BOOT_CS + 4(%edi) -+ movb %ah,__BOOT_CS + 7(%edi) ++ movb %al,GDT_ENTRY_BOOT_CS * 8 + 4(%edi) ++ movb %ah,GDT_ENTRY_BOOT_CS * 8 + 7(%edi) + rorl $16,%eax + + ljmp $(__BOOT_CS),$1f @@ -16942,13 +16933,15 @@ index d42ab17..cb1b997 100644 + movl $pa(cpu_gdt_table),%edi + addl $__PAGE_OFFSET,%eax +1: -+ movw %ax,__KERNEL_CS + 2(%edi) -+ movw %ax,__KERNEXEC_KERNEL_CS + 2(%edi) ++ movb $0xc0,GDT_ENTRY_KERNEL_CS * 8 + 6(%edi) ++ movb $0xc0,GDT_ENTRY_KERNEXEC_KERNEL_CS * 8 + 6(%edi) ++ movw %ax,GDT_ENTRY_KERNEL_CS * 8 + 2(%edi) ++ movw %ax,GDT_ENTRY_KERNEXEC_KERNEL_CS * 8 + 2(%edi) + rorl $16,%eax -+ movb %al,__KERNEL_CS + 4(%edi) -+ movb %al,__KERNEXEC_KERNEL_CS + 4(%edi) -+ movb %ah,__KERNEL_CS + 7(%edi) -+ movb %ah,__KERNEXEC_KERNEL_CS + 7(%edi) ++ movb %al,GDT_ENTRY_KERNEL_CS * 8 + 4(%edi) ++ movb %al,GDT_ENTRY_KERNEXEC_KERNEL_CS * 8 + 4(%edi) ++ movb %ah,GDT_ENTRY_KERNEL_CS * 8 + 7(%edi) ++ movb %ah,GDT_ENTRY_KERNEXEC_KERNEL_CS * 8 + 7(%edi) + rorl $16,%eax + addl $PAGE_SIZE_asm,%edi + loop 1b @@ -16957,7 +16950,7 @@ index d42ab17..cb1b997 100644 /* * Clear BSS first so that there are no surprises... */ -@@ -196,8 +262,11 @@ ENTRY(startup_32) +@@ -196,8 +264,11 @@ ENTRY(startup_32) movl %eax, pa(max_pfn_mapped) /* Do early initialization of the fixmap area */ @@ -16971,7 +16964,7 @@ index d42ab17..cb1b997 100644 #else /* Not PAE */ page_pde_offset = (__PAGE_OFFSET >> 20); -@@ -227,8 +296,11 @@ page_pde_offset = (__PAGE_OFFSET >> 20); +@@ -227,8 +298,11 @@ page_pde_offset = (__PAGE_OFFSET >> 20); movl %eax, pa(max_pfn_mapped) /* Do early initialization of the fixmap area */ @@ -16985,7 +16978,7 @@ index d42ab17..cb1b997 100644 #endif #ifdef CONFIG_PARAVIRT -@@ -242,9 +314,7 @@ page_pde_offset = (__PAGE_OFFSET >> 20); +@@ -242,9 +316,7 @@ page_pde_offset = (__PAGE_OFFSET >> 20); cmpl $num_subarch_entries, %eax jae bad_subarch @@ -16996,7 +16989,7 @@ index d42ab17..cb1b997 100644 bad_subarch: WEAK(lguest_entry) -@@ -256,10 +326,10 @@ WEAK(xen_entry) +@@ -256,10 +328,10 @@ WEAK(xen_entry) __INITDATA subarch_entries: @@ -17011,7 +17004,7 @@ index d42ab17..cb1b997 100644 num_subarch_entries = (. - subarch_entries) / 4 .previous #else -@@ -310,6 +380,7 @@ default_entry: +@@ -310,6 +382,7 @@ default_entry: orl %edx,%eax movl %eax,%cr4 @@ -17019,7 +17012,7 @@ index d42ab17..cb1b997 100644 testb $X86_CR4_PAE, %al # check if PAE is enabled jz 6f -@@ -338,6 +409,9 @@ default_entry: +@@ -338,6 +411,9 @@ default_entry: /* Make changes effective */ wrmsr @@ -17029,7 +17022,7 @@ index d42ab17..cb1b997 100644 6: /* -@@ -436,14 +510,20 @@ is386: movl $2,%ecx # set MP +@@ -436,14 +512,20 @@ is386: movl $2,%ecx # set MP 1: movl $(__KERNEL_DS),%eax # reload all the segment registers movl %eax,%ss # after changing gdt. @@ -17051,7 +17044,7 @@ index d42ab17..cb1b997 100644 movl %eax,%gs xorl %eax,%eax # Clear LDT -@@ -520,8 +600,11 @@ setup_once: +@@ -520,8 +602,11 @@ setup_once: * relocation. Manually set base address in stack canary * segment descriptor. */ @@ -17064,7 +17057,7 @@ index d42ab17..cb1b997 100644 movw %cx, 8 * GDT_ENTRY_STACK_CANARY + 2(%eax) shrl $16, %ecx movb %cl, 8 * GDT_ENTRY_STACK_CANARY + 4(%eax) -@@ -552,7 +635,7 @@ ENDPROC(early_idt_handlers) +@@ -552,7 +637,7 @@ ENDPROC(early_idt_handlers) /* This is global to keep gas from relaxing the jumps */ ENTRY(early_idt_handler) cld @@ -17073,7 +17066,7 @@ index d42ab17..cb1b997 100644 je hlt_loop incl %ss:early_recursion_flag -@@ -590,8 +673,8 @@ ENTRY(early_idt_handler) +@@ -590,8 +675,8 @@ ENTRY(early_idt_handler) pushl (20+6*4)(%esp) /* trapno */ pushl $fault_msg call printk @@ -17083,7 +17076,7 @@ index d42ab17..cb1b997 100644 hlt_loop: hlt jmp hlt_loop -@@ -610,8 +693,11 @@ ENDPROC(early_idt_handler) +@@ -610,8 +695,11 @@ ENDPROC(early_idt_handler) /* This is the default interrupt "handler" :-) */ ALIGN ignore_int: @@ -17096,7 +17089,7 @@ index d42ab17..cb1b997 100644 pushl %eax pushl %ecx pushl %edx -@@ -620,9 +706,6 @@ ignore_int: +@@ -620,9 +708,6 @@ ignore_int: movl $(__KERNEL_DS),%eax movl %eax,%ds movl %eax,%es @@ -17106,7 +17099,7 @@ index d42ab17..cb1b997 100644 pushl 16(%esp) pushl 24(%esp) pushl 32(%esp) -@@ -656,29 +739,43 @@ ENTRY(setup_once_ref) +@@ -656,29 +741,43 @@ ENTRY(setup_once_ref) /* * BSS section */ @@ -17155,7 +17148,7 @@ index d42ab17..cb1b997 100644 ENTRY(initial_page_table) .long pa(initial_pg_pmd+PGD_IDENT_ATTR),0 /* low identity map */ # if KPMDS == 3 -@@ -697,12 +794,20 @@ ENTRY(initial_page_table) +@@ -697,12 +796,20 @@ ENTRY(initial_page_table) # error "Kernel PMDs should be 1, 2 or 3" # endif .align PAGE_SIZE /* needs to be page-sized too */ @@ -17177,7 +17170,7 @@ index d42ab17..cb1b997 100644 __INITRODATA int_msg: -@@ -730,7 +835,7 @@ fault_msg: +@@ -730,7 +837,7 @@ fault_msg: * segment size, and 32-bit linear address value: */ @@ -17186,7 +17179,7 @@ index d42ab17..cb1b997 100644 .globl boot_gdt_descr .globl idt_descr -@@ -739,7 +844,7 @@ fault_msg: +@@ -739,7 +846,7 @@ fault_msg: .word 0 # 32 bit align gdt_desc.address boot_gdt_descr: .word __BOOT_DS+7 @@ -17195,7 +17188,7 @@ index d42ab17..cb1b997 100644 .word 0 # 32-bit align idt_desc.address idt_descr: -@@ -750,7 +855,7 @@ idt_descr: +@@ -750,7 +857,7 @@ idt_descr: .word 0 # 32 bit align gdt_desc.address ENTRY(early_gdt_descr) .word GDT_ENTRIES*8-1 @@ -17204,7 +17197,7 @@ index d42ab17..cb1b997 100644 /* * The boot_gdt must mirror the equivalent in setup.S and is -@@ -759,5 +864,65 @@ ENTRY(early_gdt_descr) +@@ -759,5 +866,65 @@ ENTRY(early_gdt_descr) .align L1_CACHE_BYTES ENTRY(boot_gdt) .fill GDT_ENTRY_BOOT_CS,8,0 @@ -19020,7 +19013,7 @@ index 7a6f3b3..bed145d7 100644 1: diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c -index f4b9b80..0d05de1 100644 +index 198e774..e880f29 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -440,7 +440,7 @@ static void __init parse_setup_data(void) @@ -24584,7 +24577,7 @@ index b91e485..d00e7c9 100644 } if (mm->get_unmapped_area == arch_get_unmapped_area) diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c -index ab1f6a9..e16d764 100644 +index ab1f6a9..23030ba 100644 --- a/arch/x86/mm/init.c +++ b/arch/x86/mm/init.c @@ -16,6 +16,8 @@ @@ -24644,7 +24637,7 @@ index ab1f6a9..e16d764 100644 if (iomem_is_exclusive(pagenr << PAGE_SHIFT)) return 0; if (!page_is_ram(pagenr)) -@@ -377,8 +406,116 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end) +@@ -377,8 +406,117 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end) #endif } @@ -24698,6 +24691,7 @@ index ab1f6a9..e16d764 100644 + for (cpu = 0; cpu < nr_cpu_ids; cpu++) { + pack_descriptor(&d, get_desc_base(&get_cpu_gdt_table(cpu)[GDT_ENTRY_KERNEL_CS]), limit, 0x9B, 0xC); + write_gdt_entry(get_cpu_gdt_table(cpu), GDT_ENTRY_KERNEL_CS, &d, DESCTYPE_S); ++ write_gdt_entry(get_cpu_gdt_table(cpu), GDT_ENTRY_KERNEXEC_KERNEL_CS, &d, DESCTYPE_S); + } + + /* PaX: make KERNEL_CS read-only */ @@ -30691,7 +30685,7 @@ index 627fe35..c9a7346 100644 return container_of(adapter, struct intel_gmbus, adapter)->force_bit; } diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c -index ff2819e..6b5997b 100644 +index cdf46b5..e785624 100644 --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c @@ -189,7 +189,7 @@ i915_gem_object_set_to_gpu_domain(struct drm_i915_gem_object *obj, @@ -30703,7 +30697,7 @@ index ff2819e..6b5997b 100644 /* The actual obj->write_domain will be updated with * pending_write_domain after we emit the accumulated flush for all -@@ -906,9 +906,9 @@ i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec) +@@ -907,9 +907,9 @@ i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec) static int validate_exec_list(struct drm_i915_gem_exec_object2 *exec, @@ -42807,7 +42801,7 @@ index d146e18..12d1bd1 100644 fd_offset + ex.a_text); if (error != N_DATADDR(ex)) { diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c -index 0225fdd..9f0ef53 100644 +index 0225fdd..08bda99 100644 --- a/fs/binfmt_elf.c +++ b/fs/binfmt_elf.c @@ -32,6 +32,7 @@ @@ -42902,7 +42896,13 @@ index 0225fdd..9f0ef53 100644 return -EFAULT; return 0; } -@@ -378,10 +397,10 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, +@@ -373,15 +392,14 @@ static unsigned long total_mapping_size(struct elf_phdr *cmds, int nr) + an ELF header */ + + static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, +- struct file *interpreter, unsigned long *interp_map_addr, +- unsigned long no_base) ++ struct file *interpreter, unsigned long no_base) { struct elf_phdr *elf_phdata; struct elf_phdr *eppnt; @@ -42915,7 +42915,7 @@ index 0225fdd..9f0ef53 100644 unsigned long total_size; int retval, i, size; -@@ -427,6 +446,11 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, +@@ -427,6 +445,11 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, goto out_close; } @@ -42927,7 +42927,16 @@ index 0225fdd..9f0ef53 100644 eppnt = elf_phdata; for (i = 0; i < interp_elf_ex->e_phnum; i++, eppnt++) { if (eppnt->p_type == PT_LOAD) { -@@ -470,8 +494,8 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, +@@ -450,8 +473,6 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, + map_addr = elf_map(interpreter, load_addr + vaddr, + eppnt, elf_prot, elf_type, total_size); + total_size = 0; +- if (!*interp_map_addr) +- *interp_map_addr = map_addr; + error = map_addr; + if (BAD_ADDR(map_addr)) + goto out_close; +@@ -470,8 +491,8 @@ static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, k = load_addr + eppnt->p_vaddr; if (BAD_ADDR(k) || eppnt->p_filesz > eppnt->p_memsz || @@ -42938,7 +42947,7 @@ index 0225fdd..9f0ef53 100644 error = -ENOMEM; goto out_close; } -@@ -523,6 +547,311 @@ out: +@@ -523,6 +544,311 @@ out: return error; } @@ -43250,7 +43259,7 @@ index 0225fdd..9f0ef53 100644 /* * These are the functions used to load ELF style executables and shared * libraries. There is no binary dependent code anywhere else. -@@ -539,6 +868,11 @@ static unsigned long randomize_stack_top(unsigned long stack_top) +@@ -539,6 +865,11 @@ static unsigned long randomize_stack_top(unsigned long stack_top) { unsigned int random_variable = 0; @@ -43262,7 +43271,7 @@ index 0225fdd..9f0ef53 100644 if ((current->flags & PF_RANDOMIZE) && !(current->personality & ADDR_NO_RANDOMIZE)) { random_variable = get_random_int() & STACK_RND_MASK; -@@ -557,7 +891,7 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs) +@@ -557,7 +888,7 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs) unsigned long load_addr = 0, load_bias = 0; int load_addr_set = 0; char * elf_interpreter = NULL; @@ -43271,7 +43280,7 @@ index 0225fdd..9f0ef53 100644 struct elf_phdr *elf_ppnt, *elf_phdata; unsigned long elf_bss, elf_brk; int retval, i; -@@ -567,11 +901,11 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs) +@@ -567,11 +898,11 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs) unsigned long start_code, end_code, start_data, end_data; unsigned long reloc_func_desc __maybe_unused = 0; int executable_stack = EXSTACK_DEFAULT; @@ -43284,7 +43293,7 @@ index 0225fdd..9f0ef53 100644 loc = kmalloc(sizeof(*loc), GFP_KERNEL); if (!loc) { -@@ -707,11 +1041,81 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs) +@@ -707,11 +1038,81 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs) goto out_free_dentry; /* OK, This is the point of no return */ @@ -43367,7 +43376,7 @@ index 0225fdd..9f0ef53 100644 if (elf_read_implies_exec(loc->elf_ex, executable_stack)) current->personality |= READ_IMPLIES_EXEC; -@@ -802,6 +1206,20 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs) +@@ -802,6 +1203,20 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs) #else load_bias = ELF_PAGESTART(ELF_ET_DYN_BASE - vaddr); #endif @@ -43388,7 +43397,7 @@ index 0225fdd..9f0ef53 100644 } error = elf_map(bprm->file, load_bias + vaddr, elf_ppnt, -@@ -834,9 +1252,9 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs) +@@ -834,9 +1249,9 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs) * allowed task size. Note that p_filesz must always be * <= p_memsz so it is only necessary to check p_memsz. */ @@ -43401,7 +43410,7 @@ index 0225fdd..9f0ef53 100644 /* set_brk can never work. Avoid overflows. */ send_sig(SIGKILL, current, 0); retval = -EINVAL; -@@ -875,11 +1293,41 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs) +@@ -875,17 +1290,44 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs) goto out_free_dentry; } if (likely(elf_bss != elf_brk) && unlikely(padzero(elf_bss))) { @@ -43444,9 +43453,15 @@ index 0225fdd..9f0ef53 100644 +#endif + if (elf_interpreter) { - unsigned long uninitialized_var(interp_map_addr); - -@@ -1107,7 +1555,7 @@ static bool always_dump_vma(struct vm_area_struct *vma) +- unsigned long uninitialized_var(interp_map_addr); +- + elf_entry = load_elf_interp(&loc->interp_elf_ex, + interpreter, +- &interp_map_addr, + load_bias); + if (!IS_ERR((void *)elf_entry)) { + /* +@@ -1107,7 +1549,7 @@ static bool always_dump_vma(struct vm_area_struct *vma) * Decide what to dump of a segment, part, all or none. */ static unsigned long vma_dump_size(struct vm_area_struct *vma, @@ -43455,7 +43470,7 @@ index 0225fdd..9f0ef53 100644 { #define FILTER(type) (mm_flags & (1UL << MMF_DUMP_##type)) -@@ -1144,7 +1592,7 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma, +@@ -1144,7 +1586,7 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma, if (vma->vm_file == NULL) return 0; @@ -43464,7 +43479,7 @@ index 0225fdd..9f0ef53 100644 goto whole; /* -@@ -1366,9 +1814,9 @@ static void fill_auxv_note(struct memelfnote *note, struct mm_struct *mm) +@@ -1366,9 +1808,9 @@ static void fill_auxv_note(struct memelfnote *note, struct mm_struct *mm) { elf_addr_t *auxv = (elf_addr_t *) mm->saved_auxv; int i = 0; @@ -43476,7 +43491,7 @@ index 0225fdd..9f0ef53 100644 fill_note(note, "CORE", NT_AUXV, i * sizeof(elf_addr_t), auxv); } -@@ -1879,14 +2327,14 @@ static void fill_extnum_info(struct elfhdr *elf, struct elf_shdr *shdr4extnum, +@@ -1879,14 +2321,14 @@ static void fill_extnum_info(struct elfhdr *elf, struct elf_shdr *shdr4extnum, } static size_t elf_core_vma_data_size(struct vm_area_struct *gate_vma, @@ -43493,7 +43508,7 @@ index 0225fdd..9f0ef53 100644 return size; } -@@ -1980,7 +2428,7 @@ static int elf_core_dump(struct coredump_params *cprm) +@@ -1980,7 +2422,7 @@ static int elf_core_dump(struct coredump_params *cprm) dataoff = offset = roundup(offset, ELF_EXEC_PAGESIZE); @@ -43502,7 +43517,7 @@ index 0225fdd..9f0ef53 100644 offset += elf_core_extra_data_size(); e_shoff = offset; -@@ -1994,10 +2442,12 @@ static int elf_core_dump(struct coredump_params *cprm) +@@ -1994,10 +2436,12 @@ static int elf_core_dump(struct coredump_params *cprm) offset = dataoff; size += sizeof(*elf); @@ -43515,7 +43530,7 @@ index 0225fdd..9f0ef53 100644 if (size > cprm->limit || !dump_write(cprm->file, phdr4note, sizeof(*phdr4note))) goto end_coredump; -@@ -2011,7 +2461,7 @@ static int elf_core_dump(struct coredump_params *cprm) +@@ -2011,7 +2455,7 @@ static int elf_core_dump(struct coredump_params *cprm) phdr.p_offset = offset; phdr.p_vaddr = vma->vm_start; phdr.p_paddr = 0; @@ -43524,7 +43539,7 @@ index 0225fdd..9f0ef53 100644 phdr.p_memsz = vma->vm_end - vma->vm_start; offset += phdr.p_filesz; phdr.p_flags = vma->vm_flags & VM_READ ? PF_R : 0; -@@ -2022,6 +2472,7 @@ static int elf_core_dump(struct coredump_params *cprm) +@@ -2022,6 +2466,7 @@ static int elf_core_dump(struct coredump_params *cprm) phdr.p_align = ELF_EXEC_PAGESIZE; size += sizeof(phdr); @@ -43532,7 +43547,7 @@ index 0225fdd..9f0ef53 100644 if (size > cprm->limit || !dump_write(cprm->file, &phdr, sizeof(phdr))) goto end_coredump; -@@ -2046,7 +2497,7 @@ static int elf_core_dump(struct coredump_params *cprm) +@@ -2046,7 +2491,7 @@ static int elf_core_dump(struct coredump_params *cprm) unsigned long addr; unsigned long end; @@ -43541,7 +43556,7 @@ index 0225fdd..9f0ef53 100644 for (addr = vma->vm_start; addr < end; addr += PAGE_SIZE) { struct page *page; -@@ -2055,6 +2506,7 @@ static int elf_core_dump(struct coredump_params *cprm) +@@ -2055,6 +2500,7 @@ static int elf_core_dump(struct coredump_params *cprm) page = get_dump_page(addr); if (page) { void *kaddr = kmap(page); @@ -43549,7 +43564,7 @@ index 0225fdd..9f0ef53 100644 stop = ((size += PAGE_SIZE) > cprm->limit) || !dump_write(cprm->file, kaddr, PAGE_SIZE); -@@ -2072,6 +2524,7 @@ static int elf_core_dump(struct coredump_params *cprm) +@@ -2072,6 +2518,7 @@ static int elf_core_dump(struct coredump_params *cprm) if (e_phnum == PN_XNUM) { size += sizeof(*shdr4extnum); @@ -43557,7 +43572,7 @@ index 0225fdd..9f0ef53 100644 if (size > cprm->limit || !dump_write(cprm->file, shdr4extnum, sizeof(*shdr4extnum))) -@@ -2092,6 +2545,97 @@ out: +@@ -2092,6 +2539,97 @@ out: #endif /* CONFIG_ELF_CORE */ @@ -45589,10 +45604,10 @@ index 90d901f..159975f 100644 } return 1; diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c -index 1b50890..e56c5ad 100644 +index cf18217..8f6b9c3 100644 --- a/fs/ext4/balloc.c +++ b/fs/ext4/balloc.c -@@ -500,8 +500,8 @@ static int ext4_has_free_clusters(struct ext4_sb_info *sbi, +@@ -498,8 +498,8 @@ static int ext4_has_free_clusters(struct ext4_sb_info *sbi, /* Hm, nope. Are (enough) root reserved clusters available? */ if (uid_eq(sbi->s_resuid, current_fsuid()) || (!gid_eq(sbi->s_resgid, GLOBAL_ROOT_GID) && in_group_p(sbi->s_resgid)) || @@ -45604,7 +45619,7 @@ index 1b50890..e56c5ad 100644 if (free_clusters >= (nclusters + dirty_clusters)) return 1; diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h -index c3411d4..30e4f1b 100644 +index 5c69f2b..05dec7f 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -1248,19 +1248,19 @@ struct ext4_sb_info { @@ -45638,7 +45653,7 @@ index c3411d4..30e4f1b 100644 /* locality groups */ diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c -index 8eae947..53fc27a 100644 +index b26410c..7383d90 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c @@ -1746,7 +1746,7 @@ void ext4_mb_simple_scan_group(struct ext4_allocation_context *ac, @@ -45695,7 +45710,7 @@ index 8eae947..53fc27a 100644 } free_percpu(sbi->s_locality_groups); -@@ -3052,16 +3052,16 @@ static void ext4_mb_collect_stats(struct ext4_allocation_context *ac) +@@ -3051,16 +3051,16 @@ static void ext4_mb_collect_stats(struct ext4_allocation_context *ac) struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); if (sbi->s_mb_stats && ac->ac_g_ex.fe_len > 1) { @@ -45718,7 +45733,7 @@ index 8eae947..53fc27a 100644 } if (ac->ac_op == EXT4_MB_HISTORY_ALLOC) -@@ -3461,7 +3461,7 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac) +@@ -3460,7 +3460,7 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac) trace_ext4_mb_new_inode_pa(ac, pa); ext4_mb_use_inode_pa(ac, pa); @@ -45727,7 +45742,7 @@ index 8eae947..53fc27a 100644 ei = EXT4_I(ac->ac_inode); grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group); -@@ -3521,7 +3521,7 @@ ext4_mb_new_group_pa(struct ext4_allocation_context *ac) +@@ -3520,7 +3520,7 @@ ext4_mb_new_group_pa(struct ext4_allocation_context *ac) trace_ext4_mb_new_group_pa(ac, pa); ext4_mb_use_group_pa(ac, pa); @@ -45736,7 +45751,7 @@ index 8eae947..53fc27a 100644 grp = ext4_get_group_info(sb, ac->ac_b_ex.fe_group); lg = ac->ac_lg; -@@ -3610,7 +3610,7 @@ ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh, +@@ -3609,7 +3609,7 @@ ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh, * from the bitmap and continue. */ } @@ -45745,7 +45760,7 @@ index 8eae947..53fc27a 100644 return err; } -@@ -3628,7 +3628,7 @@ ext4_mb_release_group_pa(struct ext4_buddy *e4b, +@@ -3627,7 +3627,7 @@ ext4_mb_release_group_pa(struct ext4_buddy *e4b, ext4_get_group_no_and_offset(sb, pa->pa_pstart, &group, &bit); BUG_ON(group != e4b->bd_group && pa->pa_len != 0); mb_free_blocks(pa->pa_inode, e4b, bit, pa->pa_len); @@ -64262,7 +64277,7 @@ index edd0868..f98feee 100644 /* shm_mode upper byte flags */ diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h -index 7632c87..8fd660f 100644 +index f3165d2..2cb3cb7 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -577,7 +577,7 @@ extern bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from, @@ -64274,7 +64289,7 @@ index 7632c87..8fd660f 100644 gfp_t priority) { return __alloc_skb(size, priority, 0, NUMA_NO_NODE); -@@ -690,7 +690,7 @@ static inline struct skb_shared_hwtstamps *skb_hwtstamps(struct sk_buff *skb) +@@ -687,7 +687,7 @@ static inline struct skb_shared_hwtstamps *skb_hwtstamps(struct sk_buff *skb) */ static inline int skb_queue_empty(const struct sk_buff_head *list) { @@ -64283,7 +64298,7 @@ index 7632c87..8fd660f 100644 } /** -@@ -703,7 +703,7 @@ static inline int skb_queue_empty(const struct sk_buff_head *list) +@@ -700,7 +700,7 @@ static inline int skb_queue_empty(const struct sk_buff_head *list) static inline bool skb_queue_is_last(const struct sk_buff_head *list, const struct sk_buff *skb) { @@ -64292,7 +64307,7 @@ index 7632c87..8fd660f 100644 } /** -@@ -716,7 +716,7 @@ static inline bool skb_queue_is_last(const struct sk_buff_head *list, +@@ -713,7 +713,7 @@ static inline bool skb_queue_is_last(const struct sk_buff_head *list, static inline bool skb_queue_is_first(const struct sk_buff_head *list, const struct sk_buff *skb) { @@ -64301,7 +64316,7 @@ index 7632c87..8fd660f 100644 } /** -@@ -1626,7 +1626,7 @@ static inline int pskb_network_may_pull(struct sk_buff *skb, unsigned int len) +@@ -1623,7 +1623,7 @@ static inline int pskb_network_may_pull(struct sk_buff *skb, unsigned int len) * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8) */ #ifndef NET_SKB_PAD @@ -64310,7 +64325,7 @@ index 7632c87..8fd660f 100644 #endif extern int ___pskb_trim(struct sk_buff *skb, unsigned int len); -@@ -2204,7 +2204,7 @@ extern struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, +@@ -2201,7 +2201,7 @@ extern struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, int noblock, int *err); extern unsigned int datagram_poll(struct file *file, struct socket *sock, struct poll_table_struct *wait); @@ -65037,10 +65052,10 @@ index 9e5425b..8136ffc 100644 /* Protects from simultaneous access to first_req list */ spinlock_t info_list_lock; diff --git a/include/net/flow.h b/include/net/flow.h -index e1dd508..2873851 100644 +index 628e11b..4c475df 100644 --- a/include/net/flow.h +++ b/include/net/flow.h -@@ -220,6 +220,6 @@ extern struct flow_cache_object *flow_cache_lookup( +@@ -221,6 +221,6 @@ extern struct flow_cache_object *flow_cache_lookup( extern void flow_cache_flush(void); extern void flow_cache_flush_deferred(void); @@ -66521,10 +66536,10 @@ index 493d972..ea17248 100644 + return ns_capable_nolog(ns, cap) && kuid_has_mapping(ns, inode->i_uid); +} diff --git a/kernel/cgroup.c b/kernel/cgroup.c -index 7981850..370878f 100644 +index ff2bce5..a41e8f9 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c -@@ -5411,7 +5411,7 @@ static int cgroup_css_links_read(struct cgroup *cont, +@@ -5390,7 +5390,7 @@ static int cgroup_css_links_read(struct cgroup *cont, struct css_set *cg = link->cg; struct task_struct *task; int count = 0; @@ -70140,7 +70155,7 @@ index 2095be3..9a5b89d 100644 } EXPORT_SYMBOL_GPL(__srcu_read_unlock); diff --git a/kernel/sys.c b/kernel/sys.c -index 6fab59a..4ad079b 100644 +index 909148a..cd51acf 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -157,6 +157,12 @@ static int set_one_prio(struct task_struct *p, int niceval, int error) @@ -70264,35 +70279,7 @@ index 6fab59a..4ad079b 100644 abort_creds(new); return old_fsgid; -@@ -1265,13 +1301,13 @@ DECLARE_RWSEM(uts_sem); - * Work around broken programs that cannot handle "Linux 3.0". - * Instead we map 3.x to 2.6.40+x, so e.g. 3.0 would be 2.6.40 - */ --static int override_release(char __user *release, int len) -+static int override_release(char __user *release, size_t len) - { - int ret = 0; -- char buf[65]; - - if (current->personality & UNAME26) { -- char *rest = UTS_RELEASE; -+ char buf[65] = { 0 }; -+ const char *rest = UTS_RELEASE; - int ndots = 0; - unsigned v; - -@@ -1283,7 +1319,10 @@ static int override_release(char __user *release, int len) - rest++; - } - v = ((LINUX_VERSION_CODE >> 8) & 0xff) + 40; -+ if (sizeof buf < len) -+ len = sizeof buf; - snprintf(buf, len, "2.6.%u%s", v, rest); -+ buf[len - 1] = 0; - ret = copy_to_user(release, buf, len); - } - return ret; -@@ -1338,19 +1377,19 @@ SYSCALL_DEFINE1(olduname, struct oldold_utsname __user *, name) +@@ -1340,19 +1376,19 @@ SYSCALL_DEFINE1(olduname, struct oldold_utsname __user *, name) return -EFAULT; down_read(&uts_sem); @@ -70317,7 +70304,7 @@ index 6fab59a..4ad079b 100644 __OLD_UTS_LEN); error |= __put_user(0, name->machine + __OLD_UTS_LEN); up_read(&uts_sem); -@@ -2024,7 +2063,7 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3, +@@ -2026,7 +2062,7 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3, error = get_dumpable(me->mm); break; case PR_SET_DUMPABLE: @@ -76384,7 +76371,7 @@ index 0337e2b..47914a0 100644 return err; diff --git a/net/core/dev.c b/net/core/dev.c -index 89e33a5..16d9d25 100644 +index 2fb9f59..d9a07df 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -1138,9 +1138,13 @@ void dev_load(struct net *net, const char *name) @@ -76446,7 +76433,7 @@ index 89e33a5..16d9d25 100644 { struct softnet_data *sd = &__get_cpu_var(softnet_data); -@@ -3328,7 +3332,7 @@ ncls: +@@ -3331,7 +3335,7 @@ ncls: ret = pt_prev->func(skb, skb->dev, pt_prev, orig_dev); } else { drop: @@ -76455,7 +76442,7 @@ index 89e33a5..16d9d25 100644 kfree_skb(skb); /* Jamal, now you will not able to escape explaining * me how you were going to use this. :-) -@@ -3895,7 +3899,7 @@ void netif_napi_del(struct napi_struct *napi) +@@ -3898,7 +3902,7 @@ void netif_napi_del(struct napi_struct *napi) } EXPORT_SYMBOL(netif_napi_del); @@ -76464,7 +76451,7 @@ index 89e33a5..16d9d25 100644 { struct softnet_data *sd = &__get_cpu_var(softnet_data); unsigned long time_limit = jiffies + 2; -@@ -4365,8 +4369,13 @@ static int ptype_seq_show(struct seq_file *seq, void *v) +@@ -4368,8 +4372,13 @@ static int ptype_seq_show(struct seq_file *seq, void *v) else seq_printf(seq, "%04x", ntohs(pt->type)); @@ -76478,7 +76465,7 @@ index 89e33a5..16d9d25 100644 } return 0; -@@ -5919,7 +5928,7 @@ struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev, +@@ -5922,7 +5931,7 @@ struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev, } else { netdev_stats_to_stats64(storage, &dev->stats); } @@ -76754,10 +76741,10 @@ index a55eecc..dd8428c 100644 *lenp = len; diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c -index 8e2b475..7263d89 100644 +index f444ac7..b7bdda9 100644 --- a/net/ipv4/fib_frontend.c +++ b/net/ipv4/fib_frontend.c -@@ -1019,12 +1019,12 @@ static int fib_inetaddr_event(struct notifier_block *this, unsigned long event, +@@ -1020,12 +1020,12 @@ static int fib_inetaddr_event(struct notifier_block *this, unsigned long event, #ifdef CONFIG_IP_ROUTE_MULTIPATH fib_sync_up(dev); #endif @@ -76772,7 +76759,7 @@ index 8e2b475..7263d89 100644 if (ifa->ifa_dev->ifa_list == NULL) { /* Last address was deleted from this interface. * Disable IP. -@@ -1061,7 +1061,7 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo +@@ -1062,7 +1062,7 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo #ifdef CONFIG_IP_ROUTE_MULTIPATH fib_sync_up(dev); #endif @@ -76782,7 +76769,7 @@ index 8e2b475..7263d89 100644 break; case NETDEV_DOWN: diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c -index a747100..c5c8de1 100644 +index 9633661..4e0bc08 100644 --- a/net/ipv4/fib_semantics.c +++ b/net/ipv4/fib_semantics.c @@ -767,7 +767,7 @@ __be32 fib_info_update_nh_saddr(struct net *net, struct fib_nh *nh) @@ -77078,10 +77065,10 @@ index d23c657..cb69cc2 100644 static int raw_seq_show(struct seq_file *seq, void *v) diff --git a/net/ipv4/route.c b/net/ipv4/route.c -index fd9af60..dca4e54 100644 +index 2a1383c..ff99572 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c -@@ -2501,7 +2501,7 @@ static __net_initdata struct pernet_operations sysctl_route_ops = { +@@ -2523,7 +2523,7 @@ static __net_initdata struct pernet_operations sysctl_route_ops = { static __net_init int rt_genid_init(struct net *net) { @@ -77104,7 +77091,7 @@ index d377f48..c2211ed 100644 u32 start, u32 end) { diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c -index 00a748d..e6d546b 100644 +index db7bfad..bfea796 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -90,6 +90,10 @@ int sysctl_tcp_low_latency __read_mostly; @@ -77118,7 +77105,7 @@ index 00a748d..e6d546b 100644 #ifdef CONFIG_TCP_MD5SIG static int tcp_v4_md5_hash_hdr(char *md5_hash, const struct tcp_md5sig_key *key, __be32 daddr, __be32 saddr, const struct tcphdr *th); -@@ -1663,6 +1667,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb) +@@ -1664,6 +1668,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb) return 0; reset: @@ -77128,7 +77115,7 @@ index 00a748d..e6d546b 100644 tcp_v4_send_reset(rsk, skb); discard: kfree_skb(skb); -@@ -1763,12 +1770,19 @@ int tcp_v4_rcv(struct sk_buff *skb) +@@ -1764,12 +1771,19 @@ int tcp_v4_rcv(struct sk_buff *skb) TCP_SKB_CB(skb)->sacked = 0; sk = __inet_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest); @@ -77151,7 +77138,7 @@ index 00a748d..e6d546b 100644 if (unlikely(iph->ttl < inet_sk(sk)->min_ttl)) { NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP); -@@ -1819,6 +1833,10 @@ no_tcp_socket: +@@ -1820,6 +1834,10 @@ no_tcp_socket: bad_packet: TCP_INC_STATS_BH(net, TCP_MIB_INERRS); } else { @@ -77162,7 +77149,7 @@ index 00a748d..e6d546b 100644 tcp_v4_send_reset(NULL, skb); } -@@ -2414,7 +2432,11 @@ static void get_openreq4(const struct sock *sk, const struct request_sock *req, +@@ -2415,7 +2433,11 @@ static void get_openreq4(const struct sock *sk, const struct request_sock *req, 0, /* non standard timer */ 0, /* open_requests have no inode */ atomic_read(&sk->sk_refcnt), @@ -77174,7 +77161,7 @@ index 00a748d..e6d546b 100644 len); } -@@ -2464,7 +2486,12 @@ static void get_tcp4_sock(struct sock *sk, struct seq_file *f, int i, int *len) +@@ -2465,7 +2487,12 @@ static void get_tcp4_sock(struct sock *sk, struct seq_file *f, int i, int *len) sock_i_uid(sk), icsk->icsk_probes_out, sock_i_ino(sk), @@ -77188,7 +77175,7 @@ index 00a748d..e6d546b 100644 jiffies_to_clock_t(icsk->icsk_rto), jiffies_to_clock_t(icsk->icsk_ack.ato), (icsk->icsk_ack.quick << 1) | icsk->icsk_ack.pingpong, -@@ -2492,7 +2519,13 @@ static void get_timewait4_sock(const struct inet_timewait_sock *tw, +@@ -2493,7 +2520,13 @@ static void get_timewait4_sock(const struct inet_timewait_sock *tw, " %02X %08X:%08X %02X:%08lX %08X %5d %8d %d %d %pK%n", i, src, srcp, dest, destp, tw->tw_substate, 0, 0, 3, jiffies_to_clock_t(ttd), 0, 0, 0, 0, @@ -77397,7 +77384,7 @@ index 2814f66..fa2b223 100644 int udp4_seq_show(struct seq_file *seq, void *v) diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c -index ea3e9af..b60262e 100644 +index b10374d..0baa1f9 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -2144,7 +2144,7 @@ int addrconf_set_dstaddr(struct net *net, void __user *arg) @@ -77562,7 +77549,7 @@ index 4a5f78b..3f22ebe 100644 static int raw6_seq_show(struct seq_file *seq, void *v) diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c -index acd32e3..f73f8f7 100644 +index 7e32d42..5d975ba 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -106,6 +106,10 @@ static void inet6_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb) @@ -77576,7 +77563,7 @@ index acd32e3..f73f8f7 100644 static void tcp_v6_hash(struct sock *sk) { if (sk->sk_state != TCP_CLOSE) { -@@ -1510,6 +1514,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) +@@ -1511,6 +1515,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) return 0; reset: @@ -77586,7 +77573,7 @@ index acd32e3..f73f8f7 100644 tcp_v6_send_reset(sk, skb); discard: if (opt_skb) -@@ -1591,12 +1598,20 @@ static int tcp_v6_rcv(struct sk_buff *skb) +@@ -1592,12 +1599,20 @@ static int tcp_v6_rcv(struct sk_buff *skb) TCP_SKB_CB(skb)->sacked = 0; sk = __inet6_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest); @@ -77609,7 +77596,7 @@ index acd32e3..f73f8f7 100644 if (hdr->hop_limit < inet6_sk(sk)->min_hopcount) { NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP); -@@ -1645,6 +1660,10 @@ no_tcp_socket: +@@ -1646,6 +1661,10 @@ no_tcp_socket: bad_packet: TCP_INC_STATS_BH(net, TCP_MIB_INERRS); } else { @@ -77620,7 +77607,7 @@ index acd32e3..f73f8f7 100644 tcp_v6_send_reset(NULL, skb); } -@@ -1856,7 +1875,13 @@ static void get_openreq6(struct seq_file *seq, +@@ -1857,7 +1876,13 @@ static void get_openreq6(struct seq_file *seq, uid, 0, /* non standard timer */ 0, /* open_requests have no inode */ @@ -77635,7 +77622,7 @@ index acd32e3..f73f8f7 100644 } static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i) -@@ -1906,7 +1931,12 @@ static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i) +@@ -1907,7 +1932,12 @@ static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i) sock_i_uid(sp), icsk->icsk_probes_out, sock_i_ino(sp), @@ -77649,7 +77636,7 @@ index acd32e3..f73f8f7 100644 jiffies_to_clock_t(icsk->icsk_rto), jiffies_to_clock_t(icsk->icsk_ack.ato), (icsk->icsk_ack.quick << 1 ) | icsk->icsk_ack.pingpong, -@@ -1941,7 +1971,13 @@ static void get_timewait6_sock(struct seq_file *seq, +@@ -1942,7 +1972,13 @@ static void get_timewait6_sock(struct seq_file *seq, dest->s6_addr32[2], dest->s6_addr32[3], destp, tw->tw_substate, 0, 0, 3, jiffies_to_clock_t(ttd), 0, 0, 0, 0, @@ -78230,10 +78217,10 @@ index effa10c..9058928 100644 cp->old_state = cp->state; /* diff --git a/net/netfilter/ipvs/ip_vs_xmit.c b/net/netfilter/ipvs/ip_vs_xmit.c -index 65b616a..760a66b 100644 +index c3c6291..3376d73 100644 --- a/net/netfilter/ipvs/ip_vs_xmit.c +++ b/net/netfilter/ipvs/ip_vs_xmit.c -@@ -1151,7 +1151,7 @@ ip_vs_icmp_xmit(struct sk_buff *skb, struct ip_vs_conn *cp, +@@ -1157,7 +1157,7 @@ ip_vs_icmp_xmit(struct sk_buff *skb, struct ip_vs_conn *cp, else rc = NF_ACCEPT; /* do not touch skb anymore */ @@ -78242,7 +78229,7 @@ index 65b616a..760a66b 100644 goto out; } -@@ -1272,7 +1272,7 @@ ip_vs_icmp_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp, +@@ -1278,7 +1278,7 @@ ip_vs_icmp_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp, else rc = NF_ACCEPT; /* do not touch skb anymore */ @@ -78392,10 +78379,10 @@ index 4fe4fb4..87a89e5 100644 return 0; } diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c -index 5270238..5d37fbc 100644 +index 9172179..a4035c4 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c -@@ -767,7 +767,7 @@ static void netlink_overrun(struct sock *sk) +@@ -769,7 +769,7 @@ static void netlink_overrun(struct sock *sk) sk->sk_error_report(sk); } } @@ -78404,7 +78391,7 @@ index 5270238..5d37fbc 100644 } static struct sock *netlink_getsockbypid(struct sock *ssk, u32 pid) -@@ -2046,7 +2046,7 @@ static int netlink_seq_show(struct seq_file *seq, void *v) +@@ -2059,7 +2059,7 @@ static int netlink_seq_show(struct seq_file *seq, void *v) sk_wmem_alloc_get(s), nlk->cb, atomic_read(&s->sk_refcnt), |