summaryrefslogtreecommitdiffstats
path: root/main/linux-grsec
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2012-10-31 07:30:09 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2012-10-31 07:30:58 +0000
commitd32349577e7de396337c3d64aff9514d8aa453c8 (patch)
tree7fc7044d9bb6603c384af760bc3c88e80e17ff69 /main/linux-grsec
parent687fbb1c76df4c66ac6bc6243132cd2113a86e8f (diff)
downloadaports-d32349577e7de396337c3d64aff9514d8aa453c8.tar.bz2
aports-d32349577e7de396337c3d64aff9514d8aa453c8.tar.xz
main/linux-grsec: upgrade grsecurity-2.9.1-3.6.4-201210291446
Diffstat (limited to 'main/linux-grsec')
-rw-r--r--main/linux-grsec/APKBUILD8
-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 53f7802d6..a2d9cc164 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 667fa189c..08c581d83 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),