aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2013-01-22 14:06:18 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2013-01-22 14:06:18 +0000
commit89f3ffa762b6e2612964336dd98ff7716280b2fb (patch)
tree2b727dbe3321f4b072c9dcee302a7f5442114474
parent3317df2fee671d71e4507ea0a0b656000f833835 (diff)
downloadalpine_aports-89f3ffa762b6e2612964336dd98ff7716280b2fb.tar.bz2
alpine_aports-89f3ffa762b6e2612964336dd98ff7716280b2fb.tar.xz
alpine_aports-89f3ffa762b6e2612964336dd98ff7716280b2fb.zip
main/linux-grsec: upgrade to 3.4.27 kernel
-rw-r--r--main/linux-grsec/0001-r8169-avoid-NAPI-scheduling-delay.patch52
-rw-r--r--main/linux-grsec/0001-r8169-remove-the-obsolete-and-incorrect-AMD-workarou.patch58
-rw-r--r--main/linux-grsec/APKBUILD12
-rw-r--r--main/linux-grsec/grsecurity-2.9.1-3.4.27-0.patch (renamed from main/linux-grsec/grsecurity-2.9.1-3.4.24-0.patch)355
-rw-r--r--main/linux-grsec/xsa40.patch56
5 files changed, 235 insertions, 298 deletions
diff --git a/main/linux-grsec/0001-r8169-avoid-NAPI-scheduling-delay.patch b/main/linux-grsec/0001-r8169-avoid-NAPI-scheduling-delay.patch
deleted file mode 100644
index a06c4c03f1..0000000000
--- a/main/linux-grsec/0001-r8169-avoid-NAPI-scheduling-delay.patch
+++ /dev/null
@@ -1,52 +0,0 @@
1From 7dbb491878a2c51d372a8890fa45a8ff80358af1 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?fran=C3=A7ois=20romieu?= <romieu@fr.zoreil.com>
3Date: Sat, 9 Jun 2012 10:53:16 +0000
4Subject: [PATCH] r8169: avoid NAPI scheduling delay.
5
6While reworking the r8169 driver a few months ago to perform the
7smallest amount of work in the irq handler, I took care of avoiding
8any irq mask register operation in the slow work dedicated user
9context thread. The slow work thread scheduled an extra round of NAPI
10work which would ultimately set the irq mask register as required,
11thus keeping such irq mask operations in the NAPI handler.
12It would eventually race with the irq handler and delay NAPI execution
13for - assuming no further irq - a whole ksoftirqd period. Mildly a
14problem for rare link changes or corner case PCI events.
15
16The race was always lost after the last bh disabling lock had been
17removed from the work thread and people started wondering where those
18pesky "NOHZ: local_softirq_pending 08" messages came from.
19
20Actually the irq mask register _can_ be set up directly in the slow
21work thread.
22
23Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
24Reported-by: Dave Jones <davej@redhat.com>
25Tested-by: Marc Dionne <marc.c.dionne@gmail.com>
26Cc: Thomas Gleixner <tglx@linutronix.de>
27Cc: Hayes Wang <hayeswang@realtek.com>
28Signed-off-by: David S. Miller <davem@davemloft.net>
29---
30 drivers/net/ethernet/realtek/r8169.c | 6 +-----
31 1 file changed, 1 insertion(+), 5 deletions(-)
32
33diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
34index 9757ce3..7260aa7 100644
35--- a/drivers/net/ethernet/realtek/r8169.c
36+++ b/drivers/net/ethernet/realtek/r8169.c
37@@ -5889,11 +5889,7 @@ static void rtl_slow_event_work(struct rtl8169_private *tp)
38 if (status & LinkChg)
39 __rtl8169_check_link_status(dev, tp, tp->mmio_addr, true);
40
41- napi_disable(&tp->napi);
42- rtl_irq_disable(tp);
43-
44- napi_enable(&tp->napi);
45- napi_schedule(&tp->napi);
46+ rtl_irq_enable_all(tp);
47 }
48
49 static void rtl_task(struct work_struct *work)
50--
511.8.1
52
diff --git a/main/linux-grsec/0001-r8169-remove-the-obsolete-and-incorrect-AMD-workarou.patch b/main/linux-grsec/0001-r8169-remove-the-obsolete-and-incorrect-AMD-workarou.patch
new file mode 100644
index 0000000000..dc7e84df4e
--- /dev/null
+++ b/main/linux-grsec/0001-r8169-remove-the-obsolete-and-incorrect-AMD-workarou.patch
@@ -0,0 +1,58 @@
1From f5829ee75361832b9b52e7230f57ecadc1db0125 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
3Date: Tue, 22 Jan 2013 10:39:08 +0200
4Subject: [PATCH] r8169: remove the obsolete and incorrect AMD workaround
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9This was introduced in commit 6dccd16 "r8169: merge with version
106.001.00 of Realtek's r8169 driver". I did not find the version
116.001.00 online, but in 6.002.00 or any later r8169 from Realtek
12this hunk is no longer present.
13
14Also commit 05af214 "r8169: fix Ethernet Hangup for RTL8110SC
15rev d" claims to have fixed this issue otherwise.
16
17The magic compare mask of 0xfffe000 is dubious as it masks
18parts of the Reserved part, and parts of the VLAN tag. But this
19does not make much sense as the VLAN tag parts are perfectly
20valid there. In matter of fact this seems to be triggered with
21any VLAN tagged packet as RxVlanTag bit is matched. I would
22suspect 0xfffe0000 was intended to test reserved part only.
23
24Finally, this hunk is evil as it can cause more packets to be
25handled than what was NAPI quota causing net/core/dev.c:
26net_rx_action(): WARN_ON_ONCE(work > weight) to trigger, and
27mess up the NAPI state causing device to hang.
28
29As result, any system using VLANs and having high receive
30traffic (so that NAPI poll budget limits rtl_rx) would result
31in device hang.
32
33Signed-off-by: Timo Teräs <timo.teras@iki.fi>
34---
35 drivers/net/ethernet/realtek/r8169.c | 7 -------
36 1 file changed, 7 deletions(-)
37
38diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
39index 9cc0215..3fbb0ca 100644
40--- a/drivers/net/ethernet/realtek/r8169.c
41+++ b/drivers/net/ethernet/realtek/r8169.c
42@@ -5450,13 +5450,6 @@ process_pkt:
43 tp->rx_stats.bytes += pkt_size;
44 u64_stats_update_end(&tp->rx_stats.syncp);
45 }
46-
47- /* Work around for AMD plateform. */
48- if ((desc->opts2 & cpu_to_le32(0xfffe000)) &&
49- (tp->mac_version == RTL_GIGA_MAC_VER_05)) {
50- desc->opts2 = 0;
51- cur_rx++;
52- }
53 }
54
55 count = cur_rx - tp->cur_rx;
56--
571.8.1.1
58
diff --git a/main/linux-grsec/APKBUILD b/main/linux-grsec/APKBUILD
index f796f5fa81..9a9580ada4 100644
--- a/main/linux-grsec/APKBUILD
+++ b/main/linux-grsec/APKBUILD
@@ -2,7 +2,7 @@
2 2
3_flavor=grsec 3_flavor=grsec
4pkgname=linux-${_flavor} 4pkgname=linux-${_flavor}
5pkgver=3.4.24 5pkgver=3.4.27
6_kernver=3.4 6_kernver=3.4
7pkgrel=3 7pkgrel=3
8pkgdesc="Linux kernel with grsecurity" 8pkgdesc="Linux kernel with grsecurity"
@@ -20,9 +20,8 @@ source="http://ftp.kernel.org/pub/linux/kernel/v3.x/linux-$_kernver.tar.xz
20 0001-Revert-ipv4-Don-t-use-the-cached-pmtu-informations-f.patch 20 0001-Revert-ipv4-Don-t-use-the-cached-pmtu-informations-f.patch
21 intel_idle.patch 21 intel_idle.patch
22 22
23 0001-r8169-avoid-NAPI-scheduling-delay.patch
24 r8169-num-rx-desc.patch 23 r8169-num-rx-desc.patch
25 xsa40.patch 24 0001-r8169-remove-the-obsolete-and-incorrect-AMD-workarou.patch
26 25
27 kernelconfig.x86 26 kernelconfig.x86
28 kernelconfig.x86_64 27 kernelconfig.x86_64
@@ -145,13 +144,12 @@ dev() {
145} 144}
146 145
147md5sums="967f72983655e2479f951195953e8480 linux-3.4.tar.xz 146md5sums="967f72983655e2479f951195953e8480 linux-3.4.tar.xz
148429bd5732ce4511fde2706e359cd4c9c patch-3.4.24.xz 1477ce968758159f77ce96a11aea20c6cf7 patch-3.4.27.xz
149f23a2fcf6562f3219e43385c787cff23 grsecurity-2.9.1-3.4.24-0.patch 14839f631bed428b974f72576e77c4832af grsecurity-2.9.1-3.4.27-0.patch
150776adeeb5272093574f8836c5037dd7d 0004-arp-flush-arp-cache-on-device-change.patch 149776adeeb5272093574f8836c5037dd7d 0004-arp-flush-arp-cache-on-device-change.patch
151cb6fcd6e966e73c87a839c4c0183f81f 0001-Revert-ipv4-Don-t-use-the-cached-pmtu-informations-f.patch 150cb6fcd6e966e73c87a839c4c0183f81f 0001-Revert-ipv4-Don-t-use-the-cached-pmtu-informations-f.patch
152d2f7ba780ff7567c21381428264d7fdd intel_idle.patch 151d2f7ba780ff7567c21381428264d7fdd intel_idle.patch
1538e5611c6bf3dfb0008d4e58051a8b0ff 0001-r8169-avoid-NAPI-scheduling-delay.patch
154daf2cbb558588c49c138fe9ca2482b64 r8169-num-rx-desc.patch 152daf2cbb558588c49c138fe9ca2482b64 r8169-num-rx-desc.patch
155d9de28f8a74fe0347866705b4bd6db85 xsa40.patch 15363468b44e34fa19237e0a2a1f6737b14 0001-r8169-remove-the-obsolete-and-incorrect-AMD-workarou.patch
15650a13359236dbd676fa355f0b4fd27ff kernelconfig.x86 15450a13359236dbd676fa355f0b4fd27ff kernelconfig.x86
157c402f52babc729d1280c1677075aa0d7 kernelconfig.x86_64" 155c402f52babc729d1280c1677075aa0d7 kernelconfig.x86_64"
diff --git a/main/linux-grsec/grsecurity-2.9.1-3.4.24-0.patch b/main/linux-grsec/grsecurity-2.9.1-3.4.27-0.patch
index 66fffd1aad..272540aaab 100644
--- a/main/linux-grsec/grsecurity-2.9.1-3.4.24-0.patch
+++ b/main/linux-grsec/grsecurity-2.9.1-3.4.27-0.patch
@@ -269,7 +269,7 @@ index 88fd7f5..b318a78 100644
269 ============================================================== 269 ==============================================================
270 270
271diff --git a/Makefile b/Makefile 271diff --git a/Makefile b/Makefile
272index a3e12e6..1825c04 100644 272index f139ce7..1d2319f 100644
273--- a/Makefile 273--- a/Makefile
274+++ b/Makefile 274+++ b/Makefile
275@@ -245,8 +245,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ 275@@ -245,8 +245,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
@@ -3015,10 +3015,10 @@ index ff44823..97f8906 100644
3015 3015
3016 /* 3016 /*
3017diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c 3017diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
3018index e9a5fd7..378809a 100644 3018index 69b17a9..9db82f9 100644
3019--- a/arch/mips/kernel/process.c 3019--- a/arch/mips/kernel/process.c
3020+++ b/arch/mips/kernel/process.c 3020+++ b/arch/mips/kernel/process.c
3021@@ -480,15 +480,3 @@ unsigned long get_wchan(struct task_struct *task) 3021@@ -478,15 +478,3 @@ unsigned long get_wchan(struct task_struct *task)
3022 out: 3022 out:
3023 return pc; 3023 return pc;
3024 } 3024 }
@@ -14256,10 +14256,10 @@ index 6ab6aa2..8f71507 100644
14256 obj-y += proc.o capflags.o powerflags.o common.o 14256 obj-y += proc.o capflags.o powerflags.o common.o
14257 obj-y += vmware.o hypervisor.o sched.o mshyperv.o 14257 obj-y += vmware.o hypervisor.o sched.o mshyperv.o
14258diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c 14258diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
14259index 146bb62..ac9c74a 100644 14259index a9c8a46..c7d3c55 100644
14260--- a/arch/x86/kernel/cpu/amd.c 14260--- a/arch/x86/kernel/cpu/amd.c
14261+++ b/arch/x86/kernel/cpu/amd.c 14261+++ b/arch/x86/kernel/cpu/amd.c
14262@@ -691,7 +691,7 @@ static unsigned int __cpuinit amd_size_cache(struct cpuinfo_x86 *c, 14262@@ -719,7 +719,7 @@ static unsigned int __cpuinit amd_size_cache(struct cpuinfo_x86 *c,
14263 unsigned int size) 14263 unsigned int size)
14264 { 14264 {
14265 /* AMD errata T13 (order #21922) */ 14265 /* AMD errata T13 (order #21922) */
@@ -15077,7 +15077,7 @@ index 9b9f18b..9fcaa04 100644
15077 #include <asm/processor.h> 15077 #include <asm/processor.h>
15078 #include <asm/fcntl.h> 15078 #include <asm/fcntl.h>
15079diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S 15079diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
15080index 6d4f7ba..437381b 100644 15080index 2af4ccd..e8f893a 100644
15081--- a/arch/x86/kernel/entry_32.S 15081--- a/arch/x86/kernel/entry_32.S
15082+++ b/arch/x86/kernel/entry_32.S 15082+++ b/arch/x86/kernel/entry_32.S
15083@@ -179,13 +179,146 @@ 15083@@ -179,13 +179,146 @@
@@ -15734,7 +15734,7 @@ index 6d4f7ba..437381b 100644
15734 /* 15734 /*
15735 * End of kprobes section 15735 * End of kprobes section
15736 */ 15736 */
15737@@ -1114,7 +1361,7 @@ BUILD_INTERRUPT3(xen_hvm_callback_vector, XEN_HVM_EVTCHN_CALLBACK, 15737@@ -1113,7 +1360,7 @@ BUILD_INTERRUPT3(xen_hvm_callback_vector, XEN_HVM_EVTCHN_CALLBACK,
15738 15738
15739 ENTRY(mcount) 15739 ENTRY(mcount)
15740 ret 15740 ret
@@ -15743,7 +15743,7 @@ index 6d4f7ba..437381b 100644
15743 15743
15744 ENTRY(ftrace_caller) 15744 ENTRY(ftrace_caller)
15745 cmpl $0, function_trace_stop 15745 cmpl $0, function_trace_stop
15746@@ -1143,7 +1390,7 @@ ftrace_graph_call: 15746@@ -1142,7 +1389,7 @@ ftrace_graph_call:
15747 .globl ftrace_stub 15747 .globl ftrace_stub
15748 ftrace_stub: 15748 ftrace_stub:
15749 ret 15749 ret
@@ -15752,7 +15752,7 @@ index 6d4f7ba..437381b 100644
15752 15752
15753 #else /* ! CONFIG_DYNAMIC_FTRACE */ 15753 #else /* ! CONFIG_DYNAMIC_FTRACE */
15754 15754
15755@@ -1179,7 +1426,7 @@ trace: 15755@@ -1178,7 +1425,7 @@ trace:
15756 popl %ecx 15756 popl %ecx
15757 popl %eax 15757 popl %eax
15758 jmp ftrace_stub 15758 jmp ftrace_stub
@@ -15761,7 +15761,7 @@ index 6d4f7ba..437381b 100644
15761 #endif /* CONFIG_DYNAMIC_FTRACE */ 15761 #endif /* CONFIG_DYNAMIC_FTRACE */
15762 #endif /* CONFIG_FUNCTION_TRACER */ 15762 #endif /* CONFIG_FUNCTION_TRACER */
15763 15763
15764@@ -1200,7 +1447,7 @@ ENTRY(ftrace_graph_caller) 15764@@ -1199,7 +1446,7 @@ ENTRY(ftrace_graph_caller)
15765 popl %ecx 15765 popl %ecx
15766 popl %eax 15766 popl %eax
15767 ret 15767 ret
@@ -15770,7 +15770,7 @@ index 6d4f7ba..437381b 100644
15770 15770
15771 .globl return_to_handler 15771 .globl return_to_handler
15772 return_to_handler: 15772 return_to_handler:
15773@@ -1255,15 +1502,18 @@ error_code: 15773@@ -1254,15 +1501,18 @@ error_code:
15774 movl $-1, PT_ORIG_EAX(%esp) # no syscall to restart 15774 movl $-1, PT_ORIG_EAX(%esp) # no syscall to restart
15775 REG_TO_PTGS %ecx 15775 REG_TO_PTGS %ecx
15776 SET_KERNEL_GS %ecx 15776 SET_KERNEL_GS %ecx
@@ -15791,7 +15791,7 @@ index 6d4f7ba..437381b 100644
15791 15791
15792 /* 15792 /*
15793 * Debug traps and NMI can happen at the one SYSENTER instruction 15793 * Debug traps and NMI can happen at the one SYSENTER instruction
15794@@ -1305,7 +1555,7 @@ debug_stack_correct: 15794@@ -1304,7 +1554,7 @@ debug_stack_correct:
15795 call do_debug 15795 call do_debug
15796 jmp ret_from_exception 15796 jmp ret_from_exception
15797 CFI_ENDPROC 15797 CFI_ENDPROC
@@ -15800,7 +15800,7 @@ index 6d4f7ba..437381b 100644
15800 15800
15801 /* 15801 /*
15802 * NMI is doubly nasty. It can happen _while_ we're handling 15802 * NMI is doubly nasty. It can happen _while_ we're handling
15803@@ -1342,6 +1592,9 @@ nmi_stack_correct: 15803@@ -1341,6 +1591,9 @@ nmi_stack_correct:
15804 xorl %edx,%edx # zero error code 15804 xorl %edx,%edx # zero error code
15805 movl %esp,%eax # pt_regs pointer 15805 movl %esp,%eax # pt_regs pointer
15806 call do_nmi 15806 call do_nmi
@@ -15810,7 +15810,7 @@ index 6d4f7ba..437381b 100644
15810 jmp restore_all_notrace 15810 jmp restore_all_notrace
15811 CFI_ENDPROC 15811 CFI_ENDPROC
15812 15812
15813@@ -1378,12 +1631,15 @@ nmi_espfix_stack: 15813@@ -1377,12 +1630,15 @@ nmi_espfix_stack:
15814 FIXUP_ESPFIX_STACK # %eax == %esp 15814 FIXUP_ESPFIX_STACK # %eax == %esp
15815 xorl %edx,%edx # zero error code 15815 xorl %edx,%edx # zero error code
15816 call do_nmi 15816 call do_nmi
@@ -15827,7 +15827,7 @@ index 6d4f7ba..437381b 100644
15827 15827
15828 ENTRY(int3) 15828 ENTRY(int3)
15829 RING0_INT_FRAME 15829 RING0_INT_FRAME
15830@@ -1395,14 +1651,14 @@ ENTRY(int3) 15830@@ -1394,14 +1650,14 @@ ENTRY(int3)
15831 call do_int3 15831 call do_int3
15832 jmp ret_from_exception 15832 jmp ret_from_exception
15833 CFI_ENDPROC 15833 CFI_ENDPROC
@@ -15844,7 +15844,7 @@ index 6d4f7ba..437381b 100644
15844 15844
15845 #ifdef CONFIG_KVM_GUEST 15845 #ifdef CONFIG_KVM_GUEST
15846 ENTRY(async_page_fault) 15846 ENTRY(async_page_fault)
15847@@ -1410,7 +1666,7 @@ ENTRY(async_page_fault) 15847@@ -1409,7 +1665,7 @@ ENTRY(async_page_fault)
15848 pushl_cfi $do_async_page_fault 15848 pushl_cfi $do_async_page_fault
15849 jmp error_code 15849 jmp error_code
15850 CFI_ENDPROC 15850 CFI_ENDPROC
@@ -19307,7 +19307,7 @@ index 7a6f3b3..bed145d7 100644
19307 19307
19308 1: 19308 1:
19309diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c 19309diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
19310index ae98dbb..9f69d99 100644 19310index d289ee7..f8fe68a 100644
19311--- a/arch/x86/kernel/setup.c 19311--- a/arch/x86/kernel/setup.c
19312+++ b/arch/x86/kernel/setup.c 19312+++ b/arch/x86/kernel/setup.c
19313@@ -447,7 +447,7 @@ static void __init parse_setup_data(void) 19313@@ -447,7 +447,7 @@ static void __init parse_setup_data(void)
@@ -19319,16 +19319,16 @@ index ae98dbb..9f69d99 100644
19319 break; 19319 break;
19320 case SETUP_DTB: 19320 case SETUP_DTB:
19321 add_dtb(pa_data); 19321 add_dtb(pa_data);
19322@@ -639,7 +639,7 @@ static void __init trim_bios_range(void) 19322@@ -714,7 +714,7 @@ static void __init trim_bios_range(void)
19323 * area (640->1Mb) as ram even though it is not. 19323 * area (640->1Mb) as ram even though it is not.
19324 * take them out. 19324 * take them out.
19325 */ 19325 */
19326- e820_remove_range(BIOS_BEGIN, BIOS_END - BIOS_BEGIN, E820_RAM, 1); 19326- e820_remove_range(BIOS_BEGIN, BIOS_END - BIOS_BEGIN, E820_RAM, 1);
19327+ e820_remove_range(ISA_START_ADDRESS, ISA_END_ADDRESS - ISA_START_ADDRESS, E820_RAM, 1); 19327+ e820_remove_range(ISA_START_ADDRESS, ISA_END_ADDRESS - ISA_START_ADDRESS, E820_RAM, 1);
19328
19328 sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map); 19329 sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map);
19329 } 19330 }
19330 19331@@ -839,14 +839,14 @@ void __init setup_arch(char **cmdline_p)
19331@@ -763,14 +763,14 @@ void __init setup_arch(char **cmdline_p)
19332 19332
19333 if (!boot_params.hdr.root_flags) 19333 if (!boot_params.hdr.root_flags)
19334 root_mountflags &= ~MS_RDONLY; 19334 root_mountflags &= ~MS_RDONLY;
@@ -28060,10 +28060,10 @@ index 4a2c131..5a69017 100644
28060 /* 28060 /*
28061 * Buggy BIOS check 28061 * Buggy BIOS check
28062diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c 28062diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
28063index cf4837f..37996a1 100644 28063index 4b4caa3..4a03455 100644
28064--- a/drivers/ata/libata-core.c 28064--- a/drivers/ata/libata-core.c
28065+++ b/drivers/ata/libata-core.c 28065+++ b/drivers/ata/libata-core.c
28066@@ -4743,7 +4743,7 @@ void ata_qc_free(struct ata_queued_cmd *qc) 28066@@ -4744,7 +4744,7 @@ void ata_qc_free(struct ata_queued_cmd *qc)
28067 struct ata_port *ap; 28067 struct ata_port *ap;
28068 unsigned int tag; 28068 unsigned int tag;
28069 28069
@@ -28072,7 +28072,7 @@ index cf4837f..37996a1 100644
28072 ap = qc->ap; 28072 ap = qc->ap;
28073 28073
28074 qc->flags = 0; 28074 qc->flags = 0;
28075@@ -4759,7 +4759,7 @@ void __ata_qc_complete(struct ata_queued_cmd *qc) 28075@@ -4760,7 +4760,7 @@ void __ata_qc_complete(struct ata_queued_cmd *qc)
28076 struct ata_port *ap; 28076 struct ata_port *ap;
28077 struct ata_link *link; 28077 struct ata_link *link;
28078 28078
@@ -28081,7 +28081,7 @@ index cf4837f..37996a1 100644
28081 WARN_ON_ONCE(!(qc->flags & ATA_QCFLAG_ACTIVE)); 28081 WARN_ON_ONCE(!(qc->flags & ATA_QCFLAG_ACTIVE));
28082 ap = qc->ap; 28082 ap = qc->ap;
28083 link = qc->dev->link; 28083 link = qc->dev->link;
28084@@ -5823,6 +5823,7 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops) 28084@@ -5824,6 +5824,7 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops)
28085 return; 28085 return;
28086 28086
28087 spin_lock(&lock); 28087 spin_lock(&lock);
@@ -28089,7 +28089,7 @@ index cf4837f..37996a1 100644
28089 28089
28090 for (cur = ops->inherits; cur; cur = cur->inherits) { 28090 for (cur = ops->inherits; cur; cur = cur->inherits) {
28091 void **inherit = (void **)cur; 28091 void **inherit = (void **)cur;
28092@@ -5836,8 +5837,9 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops) 28092@@ -5837,8 +5838,9 @@ static void ata_finalize_port_ops(struct ata_port_operations *ops)
28093 if (IS_ERR(*pp)) 28093 if (IS_ERR(*pp))
28094 *pp = NULL; 28094 *pp = NULL;
28095 28095
@@ -29005,7 +29005,7 @@ index 1c70c45..300718d 100644
29005 } 29005 }
29006 29006
29007diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c 29007diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c
29008index 9851093..adb2b1e 100644 29008index 1853a45..cf2426d 100644
29009--- a/drivers/atm/solos-pci.c 29009--- a/drivers/atm/solos-pci.c
29010+++ b/drivers/atm/solos-pci.c 29010+++ b/drivers/atm/solos-pci.c
29011@@ -714,7 +714,7 @@ void solos_bh(unsigned long card_arg) 29011@@ -714,7 +714,7 @@ void solos_bh(unsigned long card_arg)
@@ -29017,7 +29017,7 @@ index 9851093..adb2b1e 100644
29017 break; 29017 break;
29018 29018
29019 case PKT_STATUS: 29019 case PKT_STATUS:
29020@@ -1009,7 +1009,7 @@ static uint32_t fpga_tx(struct solos_card *card) 29020@@ -1010,7 +1010,7 @@ static uint32_t fpga_tx(struct solos_card *card)
29021 vcc = SKB_CB(oldskb)->vcc; 29021 vcc = SKB_CB(oldskb)->vcc;
29022 29022
29023 if (vcc) { 29023 if (vcc) {
@@ -30752,7 +30752,7 @@ index ba60f3c..e2dff7f 100644
30752 return can_switch; 30752 return can_switch;
30753 } 30753 }
30754diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h 30754diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
30755index 5fabc6c..0b08aa1 100644 30755index 45c5cf8..15f4a12 100644
30756--- a/drivers/gpu/drm/i915/i915_drv.h 30756--- a/drivers/gpu/drm/i915/i915_drv.h
30757+++ b/drivers/gpu/drm/i915/i915_drv.h 30757+++ b/drivers/gpu/drm/i915/i915_drv.h
30758@@ -240,7 +240,7 @@ struct drm_i915_display_funcs { 30758@@ -240,7 +240,7 @@ struct drm_i915_display_funcs {
@@ -30764,7 +30764,7 @@ index 5fabc6c..0b08aa1 100644
30764 30764
30765 struct intel_device_info { 30765 struct intel_device_info {
30766 u8 gen; 30766 u8 gen;
30767@@ -350,7 +350,7 @@ typedef struct drm_i915_private { 30767@@ -351,7 +351,7 @@ typedef struct drm_i915_private {
30768 int current_page; 30768 int current_page;
30769 int page_flipping; 30769 int page_flipping;
30770 30770
@@ -30773,7 +30773,7 @@ index 5fabc6c..0b08aa1 100644
30773 30773
30774 /* protects the irq masks */ 30774 /* protects the irq masks */
30775 spinlock_t irq_lock; 30775 spinlock_t irq_lock;
30776@@ -937,7 +937,7 @@ struct drm_i915_gem_object { 30776@@ -940,7 +940,7 @@ struct drm_i915_gem_object {
30777 * will be page flipped away on the next vblank. When it 30777 * will be page flipped away on the next vblank. When it
30778 * reaches 0, dev_priv->pending_flip_queue will be woken up. 30778 * reaches 0, dev_priv->pending_flip_queue will be woken up.
30779 */ 30779 */
@@ -30782,7 +30782,7 @@ index 5fabc6c..0b08aa1 100644
30782 }; 30782 };
30783 30783
30784 #define to_intel_bo(x) container_of(x, struct drm_i915_gem_object, base) 30784 #define to_intel_bo(x) container_of(x, struct drm_i915_gem_object, base)
30785@@ -1359,7 +1359,7 @@ extern int intel_setup_gmbus(struct drm_device *dev); 30785@@ -1364,7 +1364,7 @@ extern int intel_setup_gmbus(struct drm_device *dev);
30786 extern void intel_teardown_gmbus(struct drm_device *dev); 30786 extern void intel_teardown_gmbus(struct drm_device *dev);
30787 extern void intel_gmbus_set_speed(struct i2c_adapter *adapter, int speed); 30787 extern void intel_gmbus_set_speed(struct i2c_adapter *adapter, int speed);
30788 extern void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit); 30788 extern void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit);
@@ -30817,7 +30817,7 @@ index de43194..a14c4cc 100644
30817 for (i = 0; i < count; i++) { 30817 for (i = 0; i < count; i++) {
30818 char __user *ptr = (char __user *)(uintptr_t)exec[i].relocs_ptr; 30818 char __user *ptr = (char __user *)(uintptr_t)exec[i].relocs_ptr;
30819diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c 30819diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
30820index 26c67a7..8d4cbcb 100644 30820index 8bca2d2..dd597bd 100644
30821--- a/drivers/gpu/drm/i915/i915_irq.c 30821--- a/drivers/gpu/drm/i915/i915_irq.c
30822+++ b/drivers/gpu/drm/i915/i915_irq.c 30822+++ b/drivers/gpu/drm/i915/i915_irq.c
30823@@ -496,7 +496,7 @@ static irqreturn_t ivybridge_irq_handler(DRM_IRQ_ARGS) 30823@@ -496,7 +496,7 @@ static irqreturn_t ivybridge_irq_handler(DRM_IRQ_ARGS)
@@ -30866,10 +30866,10 @@ index 26c67a7..8d4cbcb 100644
30866 INIT_WORK(&dev_priv->hotplug_work, i915_hotplug_work_func); 30866 INIT_WORK(&dev_priv->hotplug_work, i915_hotplug_work_func);
30867 INIT_WORK(&dev_priv->error_work, i915_error_work_func); 30867 INIT_WORK(&dev_priv->error_work, i915_error_work_func);
30868diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c 30868diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
30869index dd3e7e4..85fbec5 100644 30869index 8e95c94..9aa605a 100644
30870--- a/drivers/gpu/drm/i915/intel_display.c 30870--- a/drivers/gpu/drm/i915/intel_display.c
30871+++ b/drivers/gpu/drm/i915/intel_display.c 30871+++ b/drivers/gpu/drm/i915/intel_display.c
30872@@ -2254,7 +2254,7 @@ intel_finish_fb(struct drm_framebuffer *old_fb) 30872@@ -2272,7 +2272,7 @@ intel_finish_fb(struct drm_framebuffer *old_fb)
30873 30873
30874 wait_event(dev_priv->pending_flip_queue, 30874 wait_event(dev_priv->pending_flip_queue,
30875 atomic_read(&dev_priv->mm.wedged) || 30875 atomic_read(&dev_priv->mm.wedged) ||
@@ -30878,28 +30878,17 @@ index dd3e7e4..85fbec5 100644
30878 30878
30879 /* Big Hammer, we also need to ensure that any pending 30879 /* Big Hammer, we also need to ensure that any pending
30880 * MI_WAIT_FOR_EVENT inside a user batch buffer on the 30880 * MI_WAIT_FOR_EVENT inside a user batch buffer on the
30881@@ -2919,7 +2919,7 @@ static void intel_crtc_wait_for_pending_flips(struct drm_crtc *crtc) 30881@@ -7277,8 +7277,7 @@ static void do_intel_finish_page_flip(struct drm_device *dev,
30882 obj = to_intel_framebuffer(crtc->fb)->obj;
30883 dev_priv = crtc->dev->dev_private;
30884 wait_event(dev_priv->pending_flip_queue,
30885- atomic_read(&obj->pending_flip) == 0);
30886+ atomic_read_unchecked(&obj->pending_flip) == 0);
30887 }
30888
30889 static bool intel_crtc_driving_pch(struct drm_crtc *crtc)
30890@@ -7284,9 +7284,8 @@ static void do_intel_finish_page_flip(struct drm_device *dev,
30891 30882
30892 obj = work->old_fb_obj; 30883 obj = work->old_fb_obj;
30893 30884
30894- atomic_clear_mask(1 << intel_crtc->plane, 30885- atomic_clear_mask(1 << intel_crtc->plane,
30895- &obj->pending_flip.counter); 30886- &obj->pending_flip.counter);
30896- if (atomic_read(&obj->pending_flip) == 0)
30897+ atomic_clear_mask_unchecked(1 << intel_crtc->plane, &obj->pending_flip); 30887+ atomic_clear_mask_unchecked(1 << intel_crtc->plane, &obj->pending_flip);
30898+ if (atomic_read_unchecked(&obj->pending_flip) == 0)
30899 wake_up(&dev_priv->pending_flip_queue);
30900 30888
30889 wake_up(&dev_priv->pending_flip_queue);
30901 schedule_work(&work->work); 30890 schedule_work(&work->work);
30902@@ -7582,7 +7581,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc, 30891@@ -7611,7 +7610,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
30903 /* Block clients from rendering to the new back buffer until 30892 /* Block clients from rendering to the new back buffer until
30904 * the flip occurs and the object is no longer visible. 30893 * the flip occurs and the object is no longer visible.
30905 */ 30894 */
@@ -30908,7 +30897,7 @@ index dd3e7e4..85fbec5 100644
30908 30897
30909 ret = dev_priv->display.queue_flip(dev, crtc, fb, obj); 30898 ret = dev_priv->display.queue_flip(dev, crtc, fb, obj);
30910 if (ret) 30899 if (ret)
30911@@ -7596,7 +7595,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc, 30900@@ -7625,7 +7624,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
30912 return 0; 30901 return 0;
30913 30902
30914 cleanup_pending: 30903 cleanup_pending:
@@ -31605,10 +31594,10 @@ index 8a8725c..afed796 100644
31605 marker = list_first_entry(&queue->head, 31594 marker = list_first_entry(&queue->head,
31606 struct vmw_marker, head); 31595 struct vmw_marker, head);
31607diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c 31596diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
31608index 41d4437..631c2e5 100644 31597index 1a92a27..8d93eb7 100644
31609--- a/drivers/hid/hid-core.c 31598--- a/drivers/hid/hid-core.c
31610+++ b/drivers/hid/hid-core.c 31599+++ b/drivers/hid/hid-core.c
31611@@ -2073,7 +2073,7 @@ static bool hid_ignore(struct hid_device *hdev) 31600@@ -2074,7 +2074,7 @@ static bool hid_ignore(struct hid_device *hdev)
31612 31601
31613 int hid_add_device(struct hid_device *hdev) 31602 int hid_add_device(struct hid_device *hdev)
31614 { 31603 {
@@ -31617,7 +31606,7 @@ index 41d4437..631c2e5 100644
31617 int ret; 31606 int ret;
31618 31607
31619 if (WARN_ON(hdev->status & HID_STAT_ADDED)) 31608 if (WARN_ON(hdev->status & HID_STAT_ADDED))
31620@@ -2088,7 +2088,7 @@ int hid_add_device(struct hid_device *hdev) 31609@@ -2089,7 +2089,7 @@ int hid_add_device(struct hid_device *hdev)
31621 /* XXX hack, any other cleaner solution after the driver core 31610 /* XXX hack, any other cleaner solution after the driver core
31622 * is converted to allow more than 20 bytes as the device name? */ 31611 * is converted to allow more than 20 bytes as the device name? */
31623 dev_set_name(&hdev->dev, "%04X:%04X:%04X.%04X", hdev->bus, 31612 dev_set_name(&hdev->dev, "%04X:%04X:%04X.%04X", hdev->bus,
@@ -32668,7 +32657,7 @@ index 7140199..da60063 100644
32668 /* Free the control structures */ 32657 /* Free the control structures */
32669 32658
32670diff --git a/drivers/infiniband/hw/nes/nes.h b/drivers/infiniband/hw/nes/nes.h 32659diff --git a/drivers/infiniband/hw/nes/nes.h b/drivers/infiniband/hw/nes/nes.h
32671index c438e46..ca30356 100644 32660index 3f41d9f..69cfea7 100644
32672--- a/drivers/infiniband/hw/nes/nes.h 32661--- a/drivers/infiniband/hw/nes/nes.h
32673+++ b/drivers/infiniband/hw/nes/nes.h 32662+++ b/drivers/infiniband/hw/nes/nes.h
32674@@ -178,17 +178,17 @@ extern unsigned int nes_debug_level; 32663@@ -178,17 +178,17 @@ extern unsigned int nes_debug_level;
@@ -33024,7 +33013,7 @@ index f3a3ecf..57d311d 100644
33024 33013
33025 /** 33014 /**
33026diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c 33015diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c
33027index 8b8812d..a5e1133 100644 33016index da84ea3..f159bbe 100644
33028--- a/drivers/infiniband/hw/nes/nes_verbs.c 33017--- a/drivers/infiniband/hw/nes/nes_verbs.c
33029+++ b/drivers/infiniband/hw/nes/nes_verbs.c 33018+++ b/drivers/infiniband/hw/nes/nes_verbs.c
33030@@ -46,9 +46,9 @@ 33019@@ -46,9 +46,9 @@
@@ -33049,7 +33038,7 @@ index 8b8812d..a5e1133 100644
33049 switch (init_attr->qp_type) { 33038 switch (init_attr->qp_type) {
33050 case IB_QPT_RC: 33039 case IB_QPT_RC:
33051 if (nes_drv_opt & NES_DRV_OPT_NO_INLINE_DATA) { 33040 if (nes_drv_opt & NES_DRV_OPT_NO_INLINE_DATA) {
33052@@ -1460,7 +1460,7 @@ static int nes_destroy_qp(struct ib_qp *ibqp) 33041@@ -1462,7 +1462,7 @@ static int nes_destroy_qp(struct ib_qp *ibqp)
33053 struct iw_cm_event cm_event; 33042 struct iw_cm_event cm_event;
33054 int ret = 0; 33043 int ret = 0;
33055 33044
@@ -33462,10 +33451,10 @@ index 17e2b47..bcbeec4 100644
33462 33451
33463 seq_printf(seq, "\n"); 33452 seq_printf(seq, "\n");
33464diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c 33453diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c
33465index a1a3e6d..1918bfc 100644 33454index f011d4b..3888bd4 100644
33466--- a/drivers/md/dm-ioctl.c 33455--- a/drivers/md/dm-ioctl.c
33467+++ b/drivers/md/dm-ioctl.c 33456+++ b/drivers/md/dm-ioctl.c
33468@@ -1590,7 +1590,7 @@ static int validate_params(uint cmd, struct dm_ioctl *param) 33457@@ -1598,7 +1598,7 @@ static int validate_params(uint cmd, struct dm_ioctl *param)
33469 cmd == DM_LIST_VERSIONS_CMD) 33458 cmd == DM_LIST_VERSIONS_CMD)
33470 return 0; 33459 return 0;
33471 33460
@@ -34794,10 +34783,10 @@ index b94d5f7..7f494c5 100644
34794 extern int xpc_disengage_timedout; 34783 extern int xpc_disengage_timedout;
34795 extern int xpc_activate_IRQ_rcvd; 34784 extern int xpc_activate_IRQ_rcvd;
34796diff --git a/drivers/misc/sgi-xp/xpc_main.c b/drivers/misc/sgi-xp/xpc_main.c 34785diff --git a/drivers/misc/sgi-xp/xpc_main.c b/drivers/misc/sgi-xp/xpc_main.c
34797index 8d082b4..aa749ae 100644 34786index d971817..3805cce 100644
34798--- a/drivers/misc/sgi-xp/xpc_main.c 34787--- a/drivers/misc/sgi-xp/xpc_main.c
34799+++ b/drivers/misc/sgi-xp/xpc_main.c 34788+++ b/drivers/misc/sgi-xp/xpc_main.c
34800@@ -162,7 +162,7 @@ static struct notifier_block xpc_die_notifier = { 34789@@ -166,7 +166,7 @@ static struct notifier_block xpc_die_notifier = {
34801 .notifier_call = xpc_system_die, 34790 .notifier_call = xpc_system_die,
34802 }; 34791 };
34803 34792
@@ -35365,7 +35354,7 @@ index 4a518a3..936b334 100644
35365 #define VXGE_HW_VIRTUAL_PATH_HANDLE(vpath) \ 35354 #define VXGE_HW_VIRTUAL_PATH_HANDLE(vpath) \
35366 ((struct __vxge_hw_vpath_handle *)(vpath)->vpath_handles.next) 35355 ((struct __vxge_hw_vpath_handle *)(vpath)->vpath_handles.next)
35367diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c 35356diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
35368index 0dc70c2..9cc0215 100644 35357index 06ee243..6f4b6b4 100644
35369--- a/drivers/net/ethernet/realtek/r8169.c 35358--- a/drivers/net/ethernet/realtek/r8169.c
35370+++ b/drivers/net/ethernet/realtek/r8169.c 35359+++ b/drivers/net/ethernet/realtek/r8169.c
35371@@ -710,17 +710,17 @@ struct rtl8169_private { 35360@@ -710,17 +710,17 @@ struct rtl8169_private {
@@ -37546,10 +37535,10 @@ index 2bc0362..a858ebe 100644
37546 disposition = scsi_decide_disposition(cmd); 37535 disposition = scsi_decide_disposition(cmd);
37547 if (disposition != SUCCESS && 37536 if (disposition != SUCCESS &&
37548diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c 37537diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
37549index 08d48a3..2be990d 100644 37538index 72ca515..708d627 100644
37550--- a/drivers/scsi/scsi_sysfs.c 37539--- a/drivers/scsi/scsi_sysfs.c
37551+++ b/drivers/scsi/scsi_sysfs.c 37540+++ b/drivers/scsi/scsi_sysfs.c
37552@@ -660,7 +660,7 @@ show_iostat_##field(struct device *dev, struct device_attribute *attr, \ 37541@@ -657,7 +657,7 @@ show_iostat_##field(struct device *dev, struct device_attribute *attr, \
37553 char *buf) \ 37542 char *buf) \
37554 { \ 37543 { \
37555 struct scsi_device *sdev = to_scsi_device(dev); \ 37544 struct scsi_device *sdev = to_scsi_device(dev); \
@@ -37994,10 +37983,10 @@ index 4a5c6d7..5ad76fe 100644
37994 (cmd->transport_state & CMD_T_STOP) != 0, 37983 (cmd->transport_state & CMD_T_STOP) != 0,
37995 (cmd->transport_state & CMD_T_SENT) != 0); 37984 (cmd->transport_state & CMD_T_SENT) != 0);
37996diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c 37985diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
37997index 69f3f7d..8d190b5 100644 37986index f687892..9acf944 100644
37998--- a/drivers/target/target_core_transport.c 37987--- a/drivers/target/target_core_transport.c
37999+++ b/drivers/target/target_core_transport.c 37988+++ b/drivers/target/target_core_transport.c
38000@@ -1355,7 +1355,7 @@ struct se_device *transport_add_device_to_core_hba( 37989@@ -1356,7 +1356,7 @@ struct se_device *transport_add_device_to_core_hba(
38001 spin_lock_init(&dev->se_port_lock); 37990 spin_lock_init(&dev->se_port_lock);
38002 spin_lock_init(&dev->se_tmr_lock); 37991 spin_lock_init(&dev->se_tmr_lock);
38003 spin_lock_init(&dev->qf_cmd_lock); 37992 spin_lock_init(&dev->qf_cmd_lock);
@@ -38006,7 +37995,7 @@ index 69f3f7d..8d190b5 100644
38006 37995
38007 se_dev_set_default_attribs(dev, dev_limits); 37996 se_dev_set_default_attribs(dev, dev_limits);
38008 37997
38009@@ -1542,7 +1542,7 @@ static int transport_check_alloc_task_attr(struct se_cmd *cmd) 37998@@ -1543,7 +1543,7 @@ static int transport_check_alloc_task_attr(struct se_cmd *cmd)
38010 * Used to determine when ORDERED commands should go from 37999 * Used to determine when ORDERED commands should go from
38011 * Dormant to Active status. 38000 * Dormant to Active status.
38012 */ 38001 */
@@ -38015,7 +38004,7 @@ index 69f3f7d..8d190b5 100644
38015 smp_mb__after_atomic_inc(); 38004 smp_mb__after_atomic_inc();
38016 pr_debug("Allocated se_ordered_id: %u for Task Attr: 0x%02x on %s\n", 38005 pr_debug("Allocated se_ordered_id: %u for Task Attr: 0x%02x on %s\n",
38017 cmd->se_ordered_id, cmd->sam_task_attr, 38006 cmd->se_ordered_id, cmd->sam_task_attr,
38018@@ -1955,7 +1955,7 @@ void transport_generic_request_failure(struct se_cmd *cmd) 38007@@ -1958,7 +1958,7 @@ void transport_generic_request_failure(struct se_cmd *cmd)
38019 " CMD_T_ACTIVE: %d CMD_T_STOP: %d CMD_T_SENT: %d\n", 38008 " CMD_T_ACTIVE: %d CMD_T_STOP: %d CMD_T_SENT: %d\n",
38020 cmd->t_task_list_num, 38009 cmd->t_task_list_num,
38021 atomic_read(&cmd->t_task_cdbs_left), 38010 atomic_read(&cmd->t_task_cdbs_left),
@@ -38024,7 +38013,7 @@ index 69f3f7d..8d190b5 100644
38024 atomic_read(&cmd->t_task_cdbs_ex_left), 38013 atomic_read(&cmd->t_task_cdbs_ex_left),
38025 (cmd->transport_state & CMD_T_ACTIVE) != 0, 38014 (cmd->transport_state & CMD_T_ACTIVE) != 0,
38026 (cmd->transport_state & CMD_T_STOP) != 0, 38015 (cmd->transport_state & CMD_T_STOP) != 0,
38027@@ -2216,9 +2216,9 @@ check_depth: 38016@@ -2219,9 +2219,9 @@ check_depth:
38028 cmd = task->task_se_cmd; 38017 cmd = task->task_se_cmd;
38029 spin_lock_irqsave(&cmd->t_state_lock, flags); 38018 spin_lock_irqsave(&cmd->t_state_lock, flags);
38030 task->task_flags |= (TF_ACTIVE | TF_SENT); 38019 task->task_flags |= (TF_ACTIVE | TF_SENT);
@@ -44120,7 +44109,7 @@ index b2a34a1..162fa69 100644
44120 return rc; 44109 return rc;
44121 } 44110 }
44122diff --git a/fs/exec.c b/fs/exec.c 44111diff --git a/fs/exec.c b/fs/exec.c
44123index 6c4791d..2ae58c1 100644 44112index 51d8629..d99eb7d 100644
44124--- a/fs/exec.c 44113--- a/fs/exec.c
44125+++ b/fs/exec.c 44114+++ b/fs/exec.c
44126@@ -55,6 +55,15 @@ 44115@@ -55,6 +55,15 @@
@@ -44390,7 +44379,7 @@ index 6c4791d..2ae58c1 100644
44390 set_fs(old_fs); 44379 set_fs(old_fs);
44391 return result; 44380 return result;
44392 } 44381 }
44393@@ -1255,7 +1294,7 @@ static int check_unsafe_exec(struct linux_binprm *bprm) 44382@@ -1270,7 +1309,7 @@ static int check_unsafe_exec(struct linux_binprm *bprm)
44394 } 44383 }
44395 rcu_read_unlock(); 44384 rcu_read_unlock();
44396 44385
@@ -44399,7 +44388,7 @@ index 6c4791d..2ae58c1 100644
44399 bprm->unsafe |= LSM_UNSAFE_SHARE; 44388 bprm->unsafe |= LSM_UNSAFE_SHARE;
44400 } else { 44389 } else {
44401 res = -EAGAIN; 44390 res = -EAGAIN;
44402@@ -1452,6 +1491,28 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs) 44391@@ -1467,6 +1506,28 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs)
44403 44392
44404 EXPORT_SYMBOL(search_binary_handler); 44393 EXPORT_SYMBOL(search_binary_handler);
44405 44394
@@ -44428,7 +44417,7 @@ index 6c4791d..2ae58c1 100644
44428 /* 44417 /*
44429 * sys_execve() executes a new program. 44418 * sys_execve() executes a new program.
44430 */ 44419 */
44431@@ -1460,6 +1521,11 @@ static int do_execve_common(const char *filename, 44420@@ -1475,6 +1536,11 @@ static int do_execve_common(const char *filename,
44432 struct user_arg_ptr envp, 44421 struct user_arg_ptr envp,
44433 struct pt_regs *regs) 44422 struct pt_regs *regs)
44434 { 44423 {
@@ -44440,7 +44429,7 @@ index 6c4791d..2ae58c1 100644
44440 struct linux_binprm *bprm; 44429 struct linux_binprm *bprm;
44441 struct file *file; 44430 struct file *file;
44442 struct files_struct *displaced; 44431 struct files_struct *displaced;
44443@@ -1467,6 +1533,8 @@ static int do_execve_common(const char *filename, 44432@@ -1482,6 +1548,8 @@ static int do_execve_common(const char *filename,
44444 int retval; 44433 int retval;
44445 const struct cred *cred = current_cred(); 44434 const struct cred *cred = current_cred();
44446 44435
@@ -44449,7 +44438,7 @@ index 6c4791d..2ae58c1 100644
44449 /* 44438 /*
44450 * We move the actual failure in case of RLIMIT_NPROC excess from 44439 * We move the actual failure in case of RLIMIT_NPROC excess from
44451 * set*uid() to execve() because too many poorly written programs 44440 * set*uid() to execve() because too many poorly written programs
44452@@ -1507,12 +1575,27 @@ static int do_execve_common(const char *filename, 44441@@ -1522,12 +1590,27 @@ static int do_execve_common(const char *filename,
44453 if (IS_ERR(file)) 44442 if (IS_ERR(file))
44454 goto out_unmark; 44443 goto out_unmark;
44455 44444
@@ -44477,7 +44466,7 @@ index 6c4791d..2ae58c1 100644
44477 retval = bprm_mm_init(bprm); 44466 retval = bprm_mm_init(bprm);
44478 if (retval) 44467 if (retval)
44479 goto out_file; 44468 goto out_file;
44480@@ -1529,24 +1612,65 @@ static int do_execve_common(const char *filename, 44469@@ -1544,24 +1627,65 @@ static int do_execve_common(const char *filename,
44481 if (retval < 0) 44470 if (retval < 0)
44482 goto out; 44471 goto out;
44483 44472
@@ -44547,7 +44536,7 @@ index 6c4791d..2ae58c1 100644
44547 current->fs->in_exec = 0; 44536 current->fs->in_exec = 0;
44548 current->in_execve = 0; 44537 current->in_execve = 0;
44549 acct_update_integrals(current); 44538 acct_update_integrals(current);
44550@@ -1555,6 +1679,14 @@ static int do_execve_common(const char *filename, 44539@@ -1570,6 +1694,14 @@ static int do_execve_common(const char *filename,
44551 put_files_struct(displaced); 44540 put_files_struct(displaced);
44552 return retval; 44541 return retval;
44553 44542
@@ -44562,7 +44551,7 @@ index 6c4791d..2ae58c1 100644
44562 out: 44551 out:
44563 if (bprm->mm) { 44552 if (bprm->mm) {
44564 acct_arg_size(bprm, 0); 44553 acct_arg_size(bprm, 0);
44565@@ -1628,7 +1760,7 @@ static int expand_corename(struct core_name *cn) 44554@@ -1643,7 +1775,7 @@ static int expand_corename(struct core_name *cn)
44566 { 44555 {
44567 char *old_corename = cn->corename; 44556 char *old_corename = cn->corename;
44568 44557
@@ -44571,7 +44560,7 @@ index 6c4791d..2ae58c1 100644
44571 cn->corename = krealloc(old_corename, cn->size, GFP_KERNEL); 44560 cn->corename = krealloc(old_corename, cn->size, GFP_KERNEL);
44572 44561
44573 if (!cn->corename) { 44562 if (!cn->corename) {
44574@@ -1725,7 +1857,7 @@ static int format_corename(struct core_name *cn, long signr) 44563@@ -1740,7 +1872,7 @@ static int format_corename(struct core_name *cn, long signr)
44575 int pid_in_pattern = 0; 44564 int pid_in_pattern = 0;
44576 int err = 0; 44565 int err = 0;
44577 44566
@@ -44580,7 +44569,7 @@ index 6c4791d..2ae58c1 100644
44580 cn->corename = kmalloc(cn->size, GFP_KERNEL); 44569 cn->corename = kmalloc(cn->size, GFP_KERNEL);
44581 cn->used = 0; 44570 cn->used = 0;
44582 44571
44583@@ -1822,6 +1954,250 @@ out: 44572@@ -1837,6 +1969,250 @@ out:
44584 return ispipe; 44573 return ispipe;
44585 } 44574 }
44586 44575
@@ -44831,7 +44820,7 @@ index 6c4791d..2ae58c1 100644
44831 static int zap_process(struct task_struct *start, int exit_code) 44820 static int zap_process(struct task_struct *start, int exit_code)
44832 { 44821 {
44833 struct task_struct *t; 44822 struct task_struct *t;
44834@@ -1981,17 +2357,17 @@ static void coredump_finish(struct mm_struct *mm) 44823@@ -1996,17 +2372,17 @@ static void coredump_finish(struct mm_struct *mm)
44835 void set_dumpable(struct mm_struct *mm, int value) 44824 void set_dumpable(struct mm_struct *mm, int value)
44836 { 44825 {
44837 switch (value) { 44826 switch (value) {
@@ -44852,7 +44841,7 @@ index 6c4791d..2ae58c1 100644
44852 set_bit(MMF_DUMP_SECURELY, &mm->flags); 44841 set_bit(MMF_DUMP_SECURELY, &mm->flags);
44853 smp_wmb(); 44842 smp_wmb();
44854 set_bit(MMF_DUMPABLE, &mm->flags); 44843 set_bit(MMF_DUMPABLE, &mm->flags);
44855@@ -2004,7 +2380,7 @@ static int __get_dumpable(unsigned long mm_flags) 44844@@ -2019,7 +2395,7 @@ static int __get_dumpable(unsigned long mm_flags)
44856 int ret; 44845 int ret;
44857 44846
44858 ret = mm_flags & MMF_DUMPABLE_MASK; 44847 ret = mm_flags & MMF_DUMPABLE_MASK;
@@ -44861,7 +44850,7 @@ index 6c4791d..2ae58c1 100644
44861 } 44850 }
44862 44851
44863 int get_dumpable(struct mm_struct *mm) 44852 int get_dumpable(struct mm_struct *mm)
44864@@ -2019,17 +2395,17 @@ static void wait_for_dump_helpers(struct file *file) 44853@@ -2034,17 +2410,17 @@ static void wait_for_dump_helpers(struct file *file)
44865 pipe = file->f_path.dentry->d_inode->i_pipe; 44854 pipe = file->f_path.dentry->d_inode->i_pipe;
44866 44855
44867 pipe_lock(pipe); 44856 pipe_lock(pipe);
@@ -44884,7 +44873,7 @@ index 6c4791d..2ae58c1 100644
44884 pipe_unlock(pipe); 44873 pipe_unlock(pipe);
44885 44874
44886 } 44875 }
44887@@ -2090,7 +2466,8 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs) 44876@@ -2105,7 +2481,8 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
44888 int retval = 0; 44877 int retval = 0;
44889 int flag = 0; 44878 int flag = 0;
44890 int ispipe; 44879 int ispipe;
@@ -44894,7 +44883,7 @@ index 6c4791d..2ae58c1 100644
44894 struct coredump_params cprm = { 44883 struct coredump_params cprm = {
44895 .signr = signr, 44884 .signr = signr,
44896 .regs = regs, 44885 .regs = regs,
44897@@ -2105,6 +2482,9 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs) 44886@@ -2120,6 +2497,9 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
44898 44887
44899 audit_core_dumps(signr); 44888 audit_core_dumps(signr);
44900 44889
@@ -44904,7 +44893,7 @@ index 6c4791d..2ae58c1 100644
44904 binfmt = mm->binfmt; 44893 binfmt = mm->binfmt;
44905 if (!binfmt || !binfmt->core_dump) 44894 if (!binfmt || !binfmt->core_dump)
44906 goto fail; 44895 goto fail;
44907@@ -2115,14 +2495,16 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs) 44896@@ -2130,14 +2510,16 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
44908 if (!cred) 44897 if (!cred)
44909 goto fail; 44898 goto fail;
44910 /* 44899 /*
@@ -44925,7 +44914,7 @@ index 6c4791d..2ae58c1 100644
44925 } 44914 }
44926 44915
44927 retval = coredump_wait(exit_code, &core_state); 44916 retval = coredump_wait(exit_code, &core_state);
44928@@ -2172,7 +2554,7 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs) 44917@@ -2187,7 +2569,7 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
44929 } 44918 }
44930 cprm.limit = RLIM_INFINITY; 44919 cprm.limit = RLIM_INFINITY;
44931 44920
@@ -44934,7 +44923,7 @@ index 6c4791d..2ae58c1 100644
44934 if (core_pipe_limit && (core_pipe_limit < dump_count)) { 44923 if (core_pipe_limit && (core_pipe_limit < dump_count)) {
44935 printk(KERN_WARNING "Pid %d(%s) over core_pipe_limit\n", 44924 printk(KERN_WARNING "Pid %d(%s) over core_pipe_limit\n",
44936 task_tgid_vnr(current), current->comm); 44925 task_tgid_vnr(current), current->comm);
44937@@ -2199,9 +2581,19 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs) 44926@@ -2214,9 +2596,19 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
44938 } else { 44927 } else {
44939 struct inode *inode; 44928 struct inode *inode;
44940 44929
@@ -44954,7 +44943,7 @@ index 6c4791d..2ae58c1 100644
44954 cprm.file = filp_open(cn.corename, 44943 cprm.file = filp_open(cn.corename,
44955 O_CREAT | 2 | O_NOFOLLOW | O_LARGEFILE | flag, 44944 O_CREAT | 2 | O_NOFOLLOW | O_LARGEFILE | flag,
44956 0600); 44945 0600);
44957@@ -2242,7 +2634,7 @@ close_fail: 44946@@ -2257,7 +2649,7 @@ close_fail:
44958 filp_close(cprm.file, NULL); 44947 filp_close(cprm.file, NULL);
44959 fail_dropcount: 44948 fail_dropcount:
44960 if (ispipe) 44949 if (ispipe)
@@ -44963,7 +44952,7 @@ index 6c4791d..2ae58c1 100644
44963 fail_unlock: 44952 fail_unlock:
44964 kfree(cn.corename); 44953 kfree(cn.corename);
44965 fail_corename: 44954 fail_corename:
44966@@ -2261,7 +2653,7 @@ fail: 44955@@ -2276,7 +2668,7 @@ fail:
44967 */ 44956 */
44968 int dump_write(struct file *file, const void *addr, int nr) 44957 int dump_write(struct file *file, const void *addr, int nr)
44969 { 44958 {
@@ -47581,7 +47570,7 @@ index edf4119..88dc13c 100644
47581 47570
47582 void nfs_fattr_init(struct nfs_fattr *fattr) 47571 void nfs_fattr_init(struct nfs_fattr *fattr)
47583diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c 47572diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
47584index 5686661..80a9a3a 100644 47573index f031601..ec57a19 100644
47585--- a/fs/nfsd/vfs.c 47574--- a/fs/nfsd/vfs.c
47586+++ b/fs/nfsd/vfs.c 47575+++ b/fs/nfsd/vfs.c
47587@@ -933,7 +933,7 @@ nfsd_vfs_read(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file, 47576@@ -933,7 +933,7 @@ nfsd_vfs_read(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
@@ -47602,7 +47591,7 @@ index 5686661..80a9a3a 100644
47602 set_fs(oldfs); 47591 set_fs(oldfs);
47603 if (host_err < 0) 47592 if (host_err < 0)
47604 goto out_nfserr; 47593 goto out_nfserr;
47605@@ -1573,7 +1573,7 @@ nfsd_readlink(struct svc_rqst *rqstp, struct svc_fh *fhp, char *buf, int *lenp) 47594@@ -1579,7 +1579,7 @@ nfsd_readlink(struct svc_rqst *rqstp, struct svc_fh *fhp, char *buf, int *lenp)
47606 */ 47595 */
47607 47596
47608 oldfs = get_fs(); set_fs(KERNEL_DS); 47597 oldfs = get_fs(); set_fs(KERNEL_DS);
@@ -49692,7 +49681,7 @@ index 0cbd049..64e705c 100644
49692 49681
49693 if (op) { 49682 if (op) {
49694diff --git a/fs/splice.c b/fs/splice.c 49683diff --git a/fs/splice.c b/fs/splice.c
49695index 5cac690..f833a99 100644 49684index bed6a3c..94272e0 100644
49696--- a/fs/splice.c 49685--- a/fs/splice.c
49697+++ b/fs/splice.c 49686+++ b/fs/splice.c
49698@@ -194,7 +194,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe, 49687@@ -194,7 +194,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
@@ -49743,7 +49732,7 @@ index 5cac690..f833a99 100644
49743 vec[i].iov_len = this_len; 49732 vec[i].iov_len = this_len;
49744 spd.pages[i] = page; 49733 spd.pages[i] = page;
49745 spd.nr_pages++; 49734 spd.nr_pages++;
49746@@ -849,10 +849,10 @@ EXPORT_SYMBOL(splice_from_pipe_feed); 49735@@ -851,10 +851,10 @@ EXPORT_SYMBOL(splice_from_pipe_feed);
49747 int splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd) 49736 int splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd)
49748 { 49737 {
49749 while (!pipe->nrbufs) { 49738 while (!pipe->nrbufs) {
@@ -49756,7 +49745,7 @@ index 5cac690..f833a99 100644
49756 return 0; 49745 return 0;
49757 49746
49758 if (sd->flags & SPLICE_F_NONBLOCK) 49747 if (sd->flags & SPLICE_F_NONBLOCK)
49759@@ -1185,7 +1185,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd, 49748@@ -1187,7 +1187,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd,
49760 * out of the pipe right after the splice_to_pipe(). So set 49749 * out of the pipe right after the splice_to_pipe(). So set
49761 * PIPE_READERS appropriately. 49750 * PIPE_READERS appropriately.
49762 */ 49751 */
@@ -49765,7 +49754,7 @@ index 5cac690..f833a99 100644
49765 49754
49766 current->splice_pipe = pipe; 49755 current->splice_pipe = pipe;
49767 } 49756 }
49768@@ -1738,9 +1738,9 @@ static int ipipe_prep(struct pipe_inode_info *pipe, unsigned int flags) 49757@@ -1740,9 +1740,9 @@ static int ipipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
49769 ret = -ERESTARTSYS; 49758 ret = -ERESTARTSYS;
49770 break; 49759 break;
49771 } 49760 }
@@ -49777,7 +49766,7 @@ index 5cac690..f833a99 100644
49777 if (flags & SPLICE_F_NONBLOCK) { 49766 if (flags & SPLICE_F_NONBLOCK) {
49778 ret = -EAGAIN; 49767 ret = -EAGAIN;
49779 break; 49768 break;
49780@@ -1772,7 +1772,7 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags) 49769@@ -1774,7 +1774,7 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
49781 pipe_lock(pipe); 49770 pipe_lock(pipe);
49782 49771
49783 while (pipe->nrbufs >= pipe->buffers) { 49772 while (pipe->nrbufs >= pipe->buffers) {
@@ -49786,7 +49775,7 @@ index 5cac690..f833a99 100644
49786 send_sig(SIGPIPE, current, 0); 49775 send_sig(SIGPIPE, current, 0);
49787 ret = -EPIPE; 49776 ret = -EPIPE;
49788 break; 49777 break;
49789@@ -1785,9 +1785,9 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags) 49778@@ -1787,9 +1787,9 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
49790 ret = -ERESTARTSYS; 49779 ret = -ERESTARTSYS;
49791 break; 49780 break;
49792 } 49781 }
@@ -49798,7 +49787,7 @@ index 5cac690..f833a99 100644
49798 } 49787 }
49799 49788
49800 pipe_unlock(pipe); 49789 pipe_unlock(pipe);
49801@@ -1823,14 +1823,14 @@ retry: 49790@@ -1825,14 +1825,14 @@ retry:
49802 pipe_double_lock(ipipe, opipe); 49791 pipe_double_lock(ipipe, opipe);
49803 49792
49804 do { 49793 do {
@@ -49815,7 +49804,7 @@ index 5cac690..f833a99 100644
49815 break; 49804 break;
49816 49805
49817 /* 49806 /*
49818@@ -1927,7 +1927,7 @@ static int link_pipe(struct pipe_inode_info *ipipe, 49807@@ -1929,7 +1929,7 @@ static int link_pipe(struct pipe_inode_info *ipipe,
49819 pipe_double_lock(ipipe, opipe); 49808 pipe_double_lock(ipipe, opipe);
49820 49809
49821 do { 49810 do {
@@ -49824,7 +49813,7 @@ index 5cac690..f833a99 100644
49824 send_sig(SIGPIPE, current, 0); 49813 send_sig(SIGPIPE, current, 0);
49825 if (!ret) 49814 if (!ret)
49826 ret = -EPIPE; 49815 ret = -EPIPE;
49827@@ -1972,7 +1972,7 @@ static int link_pipe(struct pipe_inode_info *ipipe, 49816@@ -1974,7 +1974,7 @@ static int link_pipe(struct pipe_inode_info *ipipe,
49828 * return EAGAIN if we have the potential of some data in the 49817 * return EAGAIN if we have the potential of some data in the
49829 * future, otherwise just return 0 49818 * future, otherwise just return 0
49830 */ 49819 */
@@ -60600,7 +60589,7 @@ index 06fd4bb..1caec0d 100644
60600 #undef __HANDLE_ITEM 60589 #undef __HANDLE_ITEM
60601 }; 60590 };
60602diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h 60591diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h
60603index 366422b..1fa7f84 100644 60592index eb53e15..660c63b 100644
60604--- a/include/linux/binfmts.h 60593--- a/include/linux/binfmts.h
60605+++ b/include/linux/binfmts.h 60594+++ b/include/linux/binfmts.h
60606@@ -89,6 +89,7 @@ struct linux_binfmt { 60595@@ -89,6 +89,7 @@ struct linux_binfmt {
@@ -64900,10 +64889,10 @@ index 5878118..f40622b 100644
64900 static inline struct page *sk_stream_alloc_page(struct sock *sk) 64889 static inline struct page *sk_stream_alloc_page(struct sock *sk)
64901 { 64890 {
64902diff --git a/include/net/tcp.h b/include/net/tcp.h 64891diff --git a/include/net/tcp.h b/include/net/tcp.h
64903index f75a04d..e8f5101 100644 64892index 2757a11..39b0464 100644
64904--- a/include/net/tcp.h 64893--- a/include/net/tcp.h
64905+++ b/include/net/tcp.h 64894+++ b/include/net/tcp.h
64906@@ -478,7 +478,7 @@ extern void tcp_retransmit_timer(struct sock *sk); 64895@@ -479,7 +479,7 @@ extern void tcp_retransmit_timer(struct sock *sk);
64907 extern void tcp_xmit_retransmit_queue(struct sock *); 64896 extern void tcp_xmit_retransmit_queue(struct sock *);
64908 extern void tcp_simple_retransmit(struct sock *); 64897 extern void tcp_simple_retransmit(struct sock *);
64909 extern int tcp_trim_head(struct sock *, struct sk_buff *, u32); 64898 extern int tcp_trim_head(struct sock *, struct sk_buff *, u32);
@@ -64912,7 +64901,7 @@ index f75a04d..e8f5101 100644
64912 64901
64913 extern void tcp_send_probe0(struct sock *); 64902 extern void tcp_send_probe0(struct sock *);
64914 extern void tcp_send_partial(struct sock *); 64903 extern void tcp_send_partial(struct sock *);
64915@@ -641,8 +641,8 @@ struct tcp_skb_cb { 64904@@ -642,8 +642,8 @@ struct tcp_skb_cb {
64916 struct inet6_skb_parm h6; 64905 struct inet6_skb_parm h6;
64917 #endif 64906 #endif
64918 } header; /* For incoming frames */ 64907 } header; /* For incoming frames */
@@ -64923,7 +64912,7 @@ index f75a04d..e8f5101 100644
64923 __u32 when; /* used to compute rtt's */ 64912 __u32 when; /* used to compute rtt's */
64924 __u8 tcp_flags; /* TCP header flags. (tcp[13]) */ 64913 __u8 tcp_flags; /* TCP header flags. (tcp[13]) */
64925 __u8 sacked; /* State flags for SACK/FACK. */ 64914 __u8 sacked; /* State flags for SACK/FACK. */
64926@@ -655,7 +655,7 @@ struct tcp_skb_cb { 64915@@ -656,7 +656,7 @@ struct tcp_skb_cb {
64927 #define TCPCB_EVER_RETRANS 0x80 /* Ever retransmitted frame */ 64916 #define TCPCB_EVER_RETRANS 0x80 /* Ever retransmitted frame */
64928 #define TCPCB_RETRANS (TCPCB_SACKED_RETRANS|TCPCB_EVER_RETRANS) 64917 #define TCPCB_RETRANS (TCPCB_SACKED_RETRANS|TCPCB_EVER_RETRANS)
64929 64918
@@ -64932,7 +64921,7 @@ index f75a04d..e8f5101 100644
64932 }; 64921 };
64933 64922
64934 #define TCP_SKB_CB(__skb) ((struct tcp_skb_cb *)&((__skb)->cb[0])) 64923 #define TCP_SKB_CB(__skb) ((struct tcp_skb_cb *)&((__skb)->cb[0]))
64935@@ -1425,7 +1425,7 @@ struct tcp_seq_afinfo { 64924@@ -1426,7 +1426,7 @@ struct tcp_seq_afinfo {
64936 char *name; 64925 char *name;
64937 sa_family_t family; 64926 sa_family_t family;
64938 const struct file_operations *seq_fops; 64927 const struct file_operations *seq_fops;
@@ -65131,7 +65120,7 @@ index 4119966..1a4671c 100644
65131 const struct firmware *dsp_microcode; 65120 const struct firmware *dsp_microcode;
65132 const struct firmware *controller_microcode; 65121 const struct firmware *controller_microcode;
65133diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h 65122diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h
65134index 3ad5b33..1fa86f4 100644 65123index 569c282..d92c717 100644
65135--- a/include/target/target_core_base.h 65124--- a/include/target/target_core_base.h
65136+++ b/include/target/target_core_base.h 65125+++ b/include/target/target_core_base.h
65137@@ -448,7 +448,7 @@ struct t10_reservation_ops { 65126@@ -448,7 +448,7 @@ struct t10_reservation_ops {
@@ -65152,7 +65141,7 @@ index 3ad5b33..1fa86f4 100644
65152 unsigned int transport_state; 65141 unsigned int transport_state;
65153 #define CMD_T_ABORTED (1 << 0) 65142 #define CMD_T_ABORTED (1 << 0)
65154 #define CMD_T_ACTIVE (1 << 1) 65143 #define CMD_T_ACTIVE (1 << 1)
65155@@ -803,7 +803,7 @@ struct se_device { 65144@@ -805,7 +805,7 @@ struct se_device {
65156 spinlock_t stats_lock; 65145 spinlock_t stats_lock;
65157 /* Active commands on this virtual SE device */ 65146 /* Active commands on this virtual SE device */
65158 atomic_t simple_cmds; 65147 atomic_t simple_cmds;
@@ -70385,7 +70374,7 @@ index 100b7fd..0d26b2f 100644
70385 struct ftrace_func_probe *entry; 70374 struct ftrace_func_probe *entry;
70386 struct ftrace_page *pg; 70375 struct ftrace_page *pg;
70387diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c 70376diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
70388index cf8d11e..a0e2ba8 100644 70377index 2866783..4cc30cf 100644
70389--- a/kernel/trace/ring_buffer.c 70378--- a/kernel/trace/ring_buffer.c
70390+++ b/kernel/trace/ring_buffer.c 70379+++ b/kernel/trace/ring_buffer.c
70391@@ -344,9 +344,9 @@ struct buffer_data_page { 70380@@ -344,9 +344,9 @@ struct buffer_data_page {
@@ -70568,7 +70557,7 @@ index cf8d11e..a0e2ba8 100644
70568 } 70557 }
70569 70558
70570 /** 70559 /**
70571@@ -2782,7 +2782,7 @@ unsigned long ring_buffer_overrun_cpu(struct ring_buffer *buffer, int cpu) 70560@@ -2783,7 +2783,7 @@ unsigned long ring_buffer_overrun_cpu(struct ring_buffer *buffer, int cpu)
70572 return 0; 70561 return 0;
70573 70562
70574 cpu_buffer = buffer->buffers[cpu]; 70563 cpu_buffer = buffer->buffers[cpu];
@@ -70577,7 +70566,7 @@ index cf8d11e..a0e2ba8 100644
70577 70566
70578 return ret; 70567 return ret;
70579 } 70568 }
70580@@ -2803,7 +2803,7 @@ ring_buffer_commit_overrun_cpu(struct ring_buffer *buffer, int cpu) 70569@@ -2804,7 +2804,7 @@ ring_buffer_commit_overrun_cpu(struct ring_buffer *buffer, int cpu)
70581 return 0; 70570 return 0;
70582 70571
70583 cpu_buffer = buffer->buffers[cpu]; 70572 cpu_buffer = buffer->buffers[cpu];
@@ -70586,7 +70575,7 @@ index cf8d11e..a0e2ba8 100644
70586 70575
70587 return ret; 70576 return ret;
70588 } 70577 }
70589@@ -2848,7 +2848,7 @@ unsigned long ring_buffer_overruns(struct ring_buffer *buffer) 70578@@ -2849,7 +2849,7 @@ unsigned long ring_buffer_overruns(struct ring_buffer *buffer)
70590 /* if you care about this being correct, lock the buffer */ 70579 /* if you care about this being correct, lock the buffer */
70591 for_each_buffer_cpu(buffer, cpu) { 70580 for_each_buffer_cpu(buffer, cpu) {
70592 cpu_buffer = buffer->buffers[cpu]; 70581 cpu_buffer = buffer->buffers[cpu];
@@ -70595,7 +70584,7 @@ index cf8d11e..a0e2ba8 100644
70595 } 70584 }
70596 70585
70597 return overruns; 70586 return overruns;
70598@@ -3020,8 +3020,8 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer) 70587@@ -3021,8 +3021,8 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
70599 /* 70588 /*
70600 * Reset the reader page to size zero. 70589 * Reset the reader page to size zero.
70601 */ 70590 */
@@ -70606,7 +70595,7 @@ index cf8d11e..a0e2ba8 100644
70606 local_set(&cpu_buffer->reader_page->page->commit, 0); 70595 local_set(&cpu_buffer->reader_page->page->commit, 0);
70607 cpu_buffer->reader_page->real_end = 0; 70596 cpu_buffer->reader_page->real_end = 0;
70608 70597
70609@@ -3053,7 +3053,7 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer) 70598@@ -3056,7 +3056,7 @@ rb_get_reader_page(struct ring_buffer_per_cpu *cpu_buffer)
70610 * want to compare with the last_overrun. 70599 * want to compare with the last_overrun.
70611 */ 70600 */
70612 smp_mb(); 70601 smp_mb();
@@ -70615,7 +70604,7 @@ index cf8d11e..a0e2ba8 100644
70615 70604
70616 /* 70605 /*
70617 * Here's the tricky part. 70606 * Here's the tricky part.
70618@@ -3601,8 +3601,8 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer) 70607@@ -3604,8 +3604,8 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer)
70619 70608
70620 cpu_buffer->head_page 70609 cpu_buffer->head_page
70621 = list_entry(cpu_buffer->pages, struct buffer_page, list); 70610 = list_entry(cpu_buffer->pages, struct buffer_page, list);
@@ -70626,7 +70615,7 @@ index cf8d11e..a0e2ba8 100644
70626 local_set(&cpu_buffer->head_page->page->commit, 0); 70615 local_set(&cpu_buffer->head_page->page->commit, 0);
70627 70616
70628 cpu_buffer->head_page->read = 0; 70617 cpu_buffer->head_page->read = 0;
70629@@ -3611,14 +3611,14 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer) 70618@@ -3614,14 +3614,14 @@ rb_reset_cpu(struct ring_buffer_per_cpu *cpu_buffer)
70630 cpu_buffer->commit_page = cpu_buffer->head_page; 70619 cpu_buffer->commit_page = cpu_buffer->head_page;
70631 70620
70632 INIT_LIST_HEAD(&cpu_buffer->reader_page->list); 70621 INIT_LIST_HEAD(&cpu_buffer->reader_page->list);
@@ -70645,7 +70634,7 @@ index cf8d11e..a0e2ba8 100644
70645 local_set(&cpu_buffer->entries, 0); 70634 local_set(&cpu_buffer->entries, 0);
70646 local_set(&cpu_buffer->committing, 0); 70635 local_set(&cpu_buffer->committing, 0);
70647 local_set(&cpu_buffer->commits, 0); 70636 local_set(&cpu_buffer->commits, 0);
70648@@ -4016,8 +4016,8 @@ int ring_buffer_read_page(struct ring_buffer *buffer, 70637@@ -4019,8 +4019,8 @@ int ring_buffer_read_page(struct ring_buffer *buffer,
70649 rb_init_page(bpage); 70638 rb_init_page(bpage);
70650 bpage = reader->page; 70639 bpage = reader->page;
70651 reader->page = *data_page; 70640 reader->page = *data_page;
@@ -71344,7 +71333,7 @@ index 57d82c6..e9e0552 100644
71344 set_page_address(page, (void *)vaddr); 71333 set_page_address(page, (void *)vaddr);
71345 71334
71346diff --git a/mm/huge_memory.c b/mm/huge_memory.c 71335diff --git a/mm/huge_memory.c b/mm/huge_memory.c
71347index f0e5306..cb9398e 100644 71336index caf15b6..5bdade4 100644
71348--- a/mm/huge_memory.c 71337--- a/mm/huge_memory.c
71349+++ b/mm/huge_memory.c 71338+++ b/mm/huge_memory.c
71350@@ -733,7 +733,7 @@ out: 71339@@ -733,7 +733,7 @@ out:
@@ -71662,10 +71651,10 @@ index d86fb20..f7698e8 100644
71662 /* keep elevated page count for bad page */ 71651 /* keep elevated page count for bad page */
71663 return ret; 71652 return ret;
71664diff --git a/mm/memory.c b/mm/memory.c 71653diff --git a/mm/memory.c b/mm/memory.c
71665index 6105f47..3363489 100644 71654index 2f42aab..1200730 100644
71666--- a/mm/memory.c 71655--- a/mm/memory.c
71667+++ b/mm/memory.c 71656+++ b/mm/memory.c
71668@@ -434,8 +434,12 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud, 71657@@ -439,8 +439,12 @@ static inline void free_pmd_range(struct mmu_gather *tlb, pud_t *pud,
71669 return; 71658 return;
71670 71659
71671 pmd = pmd_offset(pud, start); 71660 pmd = pmd_offset(pud, start);
@@ -71678,7 +71667,7 @@ index 6105f47..3363489 100644
71678 } 71667 }
71679 71668
71680 static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd, 71669 static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd,
71681@@ -466,9 +470,12 @@ static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd, 71670@@ -471,9 +475,12 @@ static inline void free_pud_range(struct mmu_gather *tlb, pgd_t *pgd,
71682 if (end - 1 > ceiling - 1) 71671 if (end - 1 > ceiling - 1)
71683 return; 71672 return;
71684 71673
@@ -71691,7 +71680,7 @@ index 6105f47..3363489 100644
71691 } 71680 }
71692 71681
71693 /* 71682 /*
71694@@ -1597,12 +1604,6 @@ no_page_table: 71683@@ -1602,12 +1609,6 @@ no_page_table:
71695 return page; 71684 return page;
71696 } 71685 }
71697 71686
@@ -71704,7 +71693,7 @@ index 6105f47..3363489 100644
71704 /** 71693 /**
71705 * __get_user_pages() - pin user pages in memory 71694 * __get_user_pages() - pin user pages in memory
71706 * @tsk: task_struct of target task 71695 * @tsk: task_struct of target task
71707@@ -1675,10 +1676,10 @@ int __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, 71696@@ -1680,10 +1681,10 @@ int __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
71708 (VM_MAYREAD | VM_MAYWRITE) : (VM_READ | VM_WRITE); 71697 (VM_MAYREAD | VM_MAYWRITE) : (VM_READ | VM_WRITE);
71709 i = 0; 71698 i = 0;
71710 71699
@@ -71717,7 +71706,7 @@ index 6105f47..3363489 100644
71717 if (!vma && in_gate_area(mm, start)) { 71706 if (!vma && in_gate_area(mm, start)) {
71718 unsigned long pg = start & PAGE_MASK; 71707 unsigned long pg = start & PAGE_MASK;
71719 pgd_t *pgd; 71708 pgd_t *pgd;
71720@@ -1726,7 +1727,7 @@ int __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, 71709@@ -1731,7 +1732,7 @@ int __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
71721 goto next_page; 71710 goto next_page;
71722 } 71711 }
71723 71712
@@ -71726,7 +71715,7 @@ index 6105f47..3363489 100644
71726 (vma->vm_flags & (VM_IO | VM_PFNMAP)) || 71715 (vma->vm_flags & (VM_IO | VM_PFNMAP)) ||
71727 !(vm_flags & vma->vm_flags)) 71716 !(vm_flags & vma->vm_flags))
71728 return i ? : -EFAULT; 71717 return i ? : -EFAULT;
71729@@ -1753,11 +1754,6 @@ int __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, 71718@@ -1758,11 +1759,6 @@ int __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
71730 int ret; 71719 int ret;
71731 unsigned int fault_flags = 0; 71720 unsigned int fault_flags = 0;
71732 71721
@@ -71738,7 +71727,7 @@ index 6105f47..3363489 100644
71738 if (foll_flags & FOLL_WRITE) 71727 if (foll_flags & FOLL_WRITE)
71739 fault_flags |= FAULT_FLAG_WRITE; 71728 fault_flags |= FAULT_FLAG_WRITE;
71740 if (nonblocking) 71729 if (nonblocking)
71741@@ -1831,7 +1827,7 @@ next_page: 71730@@ -1836,7 +1832,7 @@ next_page:
71742 start += PAGE_SIZE; 71731 start += PAGE_SIZE;
71743 nr_pages--; 71732 nr_pages--;
71744 } while (nr_pages && start < vma->vm_end); 71733 } while (nr_pages && start < vma->vm_end);
@@ -71747,7 +71736,7 @@ index 6105f47..3363489 100644
71747 return i; 71736 return i;
71748 } 71737 }
71749 EXPORT_SYMBOL(__get_user_pages); 71738 EXPORT_SYMBOL(__get_user_pages);
71750@@ -2038,6 +2034,10 @@ static int insert_page(struct vm_area_struct *vma, unsigned long addr, 71739@@ -2043,6 +2039,10 @@ static int insert_page(struct vm_area_struct *vma, unsigned long addr,
71751 page_add_file_rmap(page); 71740 page_add_file_rmap(page);
71752 set_pte_at(mm, addr, pte, mk_pte(page, prot)); 71741 set_pte_at(mm, addr, pte, mk_pte(page, prot));
71753 71742
@@ -71758,7 +71747,7 @@ index 6105f47..3363489 100644
71758 retval = 0; 71747 retval = 0;
71759 pte_unmap_unlock(pte, ptl); 71748 pte_unmap_unlock(pte, ptl);
71760 return retval; 71749 return retval;
71761@@ -2072,10 +2072,22 @@ out: 71750@@ -2077,10 +2077,22 @@ out:
71762 int vm_insert_page(struct vm_area_struct *vma, unsigned long addr, 71751 int vm_insert_page(struct vm_area_struct *vma, unsigned long addr,
71763 struct page *page) 71752 struct page *page)
71764 { 71753 {
@@ -71781,7 +71770,7 @@ index 6105f47..3363489 100644
71781 vma->vm_flags |= VM_INSERTPAGE; 71770 vma->vm_flags |= VM_INSERTPAGE;
71782 return insert_page(vma, addr, page, vma->vm_page_prot); 71771 return insert_page(vma, addr, page, vma->vm_page_prot);
71783 } 71772 }
71784@@ -2161,6 +2173,7 @@ int vm_insert_mixed(struct vm_area_struct *vma, unsigned long addr, 71773@@ -2166,6 +2178,7 @@ int vm_insert_mixed(struct vm_area_struct *vma, unsigned long addr,
71785 unsigned long pfn) 71774 unsigned long pfn)
71786 { 71775 {
71787 BUG_ON(!(vma->vm_flags & VM_MIXEDMAP)); 71776 BUG_ON(!(vma->vm_flags & VM_MIXEDMAP));
@@ -71789,7 +71778,7 @@ index 6105f47..3363489 100644
71789 71778
71790 if (addr < vma->vm_start || addr >= vma->vm_end) 71779 if (addr < vma->vm_start || addr >= vma->vm_end)
71791 return -EFAULT; 71780 return -EFAULT;
71792@@ -2368,7 +2381,9 @@ static int apply_to_pmd_range(struct mm_struct *mm, pud_t *pud, 71781@@ -2373,7 +2386,9 @@ static int apply_to_pmd_range(struct mm_struct *mm, pud_t *pud,
71793 71782
71794 BUG_ON(pud_huge(*pud)); 71783 BUG_ON(pud_huge(*pud));
71795 71784
@@ -71800,7 +71789,7 @@ index 6105f47..3363489 100644
71800 if (!pmd) 71789 if (!pmd)
71801 return -ENOMEM; 71790 return -ENOMEM;
71802 do { 71791 do {
71803@@ -2388,7 +2403,9 @@ static int apply_to_pud_range(struct mm_struct *mm, pgd_t *pgd, 71792@@ -2393,7 +2408,9 @@ static int apply_to_pud_range(struct mm_struct *mm, pgd_t *pgd,
71804 unsigned long next; 71793 unsigned long next;
71805 int err; 71794 int err;
71806 71795
@@ -71811,7 +71800,7 @@ index 6105f47..3363489 100644
71811 if (!pud) 71800 if (!pud)
71812 return -ENOMEM; 71801 return -ENOMEM;
71813 do { 71802 do {
71814@@ -2476,6 +2493,186 @@ static inline void cow_user_page(struct page *dst, struct page *src, unsigned lo 71803@@ -2481,6 +2498,186 @@ static inline void cow_user_page(struct page *dst, struct page *src, unsigned lo
71815 copy_user_highpage(dst, src, va, vma); 71804 copy_user_highpage(dst, src, va, vma);
71816 } 71805 }
71817 71806
@@ -71998,7 +71987,7 @@ index 6105f47..3363489 100644
71998 /* 71987 /*
71999 * This routine handles present pages, when users try to write 71988 * This routine handles present pages, when users try to write
72000 * to a shared page. It is done by copying the page to a new address 71989 * to a shared page. It is done by copying the page to a new address
72001@@ -2687,6 +2884,12 @@ gotten: 71990@@ -2692,6 +2889,12 @@ gotten:
72002 */ 71991 */
72003 page_table = pte_offset_map_lock(mm, pmd, address, &ptl); 71992 page_table = pte_offset_map_lock(mm, pmd, address, &ptl);
72004 if (likely(pte_same(*page_table, orig_pte))) { 71993 if (likely(pte_same(*page_table, orig_pte))) {
@@ -72011,7 +72000,7 @@ index 6105f47..3363489 100644
72011 if (old_page) { 72000 if (old_page) {
72012 if (!PageAnon(old_page)) { 72001 if (!PageAnon(old_page)) {
72013 dec_mm_counter_fast(mm, MM_FILEPAGES); 72002 dec_mm_counter_fast(mm, MM_FILEPAGES);
72014@@ -2738,6 +2941,10 @@ gotten: 72003@@ -2743,6 +2946,10 @@ gotten:
72015 page_remove_rmap(old_page); 72004 page_remove_rmap(old_page);
72016 } 72005 }
72017 72006
@@ -72022,7 +72011,7 @@ index 6105f47..3363489 100644
72022 /* Free the old page.. */ 72011 /* Free the old page.. */
72023 new_page = old_page; 72012 new_page = old_page;
72024 ret |= VM_FAULT_WRITE; 72013 ret |= VM_FAULT_WRITE;
72025@@ -3017,6 +3224,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma, 72014@@ -3022,6 +3229,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma,
72026 swap_free(entry); 72015 swap_free(entry);
72027 if (vm_swap_full() || (vma->vm_flags & VM_LOCKED) || PageMlocked(page)) 72016 if (vm_swap_full() || (vma->vm_flags & VM_LOCKED) || PageMlocked(page))
72028 try_to_free_swap(page); 72017 try_to_free_swap(page);
@@ -72034,7 +72023,7 @@ index 6105f47..3363489 100644
72034 unlock_page(page); 72023 unlock_page(page);
72035 if (swapcache) { 72024 if (swapcache) {
72036 /* 72025 /*
72037@@ -3040,6 +3252,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma, 72026@@ -3045,6 +3257,11 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma,
72038 72027
72039 /* No need to invalidate - it was non-present before */ 72028 /* No need to invalidate - it was non-present before */
72040 update_mmu_cache(vma, address, page_table); 72029 update_mmu_cache(vma, address, page_table);
@@ -72046,7 +72035,7 @@ index 6105f47..3363489 100644
72046 unlock: 72035 unlock:
72047 pte_unmap_unlock(page_table, ptl); 72036 pte_unmap_unlock(page_table, ptl);
72048 out: 72037 out:
72049@@ -3059,40 +3276,6 @@ out_release: 72038@@ -3064,40 +3281,6 @@ out_release:
72050 } 72039 }
72051 72040
72052 /* 72041 /*
@@ -72087,7 +72076,7 @@ index 6105f47..3363489 100644
72087 * We enter with non-exclusive mmap_sem (to exclude vma changes, 72076 * We enter with non-exclusive mmap_sem (to exclude vma changes,
72088 * but allow concurrent faults), and pte mapped but not yet locked. 72077 * but allow concurrent faults), and pte mapped but not yet locked.
72089 * We return with mmap_sem still held, but pte unmapped and unlocked. 72078 * We return with mmap_sem still held, but pte unmapped and unlocked.
72090@@ -3101,27 +3284,23 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, 72079@@ -3106,27 +3289,23 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma,
72091 unsigned long address, pte_t *page_table, pmd_t *pmd, 72080 unsigned long address, pte_t *page_table, pmd_t *pmd,
72092 unsigned int flags) 72081 unsigned int flags)
72093 { 72082 {
@@ -72120,7 +72109,7 @@ index 6105f47..3363489 100644
72120 if (unlikely(anon_vma_prepare(vma))) 72109 if (unlikely(anon_vma_prepare(vma)))
72121 goto oom; 72110 goto oom;
72122 page = alloc_zeroed_user_highpage_movable(vma, address); 72111 page = alloc_zeroed_user_highpage_movable(vma, address);
72123@@ -3140,6 +3319,11 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, 72112@@ -3145,6 +3324,11 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma,
72124 if (!pte_none(*page_table)) 72113 if (!pte_none(*page_table))
72125 goto release; 72114 goto release;
72126 72115
@@ -72132,7 +72121,7 @@ index 6105f47..3363489 100644
72132 inc_mm_counter_fast(mm, MM_ANONPAGES); 72121 inc_mm_counter_fast(mm, MM_ANONPAGES);
72133 page_add_new_anon_rmap(page, vma, address); 72122 page_add_new_anon_rmap(page, vma, address);
72134 setpte: 72123 setpte:
72135@@ -3147,6 +3331,12 @@ setpte: 72124@@ -3152,6 +3336,12 @@ setpte:
72136 72125
72137 /* No need to invalidate - it was non-present before */ 72126 /* No need to invalidate - it was non-present before */
72138 update_mmu_cache(vma, address, page_table); 72127 update_mmu_cache(vma, address, page_table);
@@ -72145,7 +72134,7 @@ index 6105f47..3363489 100644
72145 unlock: 72134 unlock:
72146 pte_unmap_unlock(page_table, ptl); 72135 pte_unmap_unlock(page_table, ptl);
72147 return 0; 72136 return 0;
72148@@ -3290,6 +3480,12 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma, 72137@@ -3295,6 +3485,12 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma,
72149 */ 72138 */
72150 /* Only go through if we didn't race with anybody else... */ 72139 /* Only go through if we didn't race with anybody else... */
72151 if (likely(pte_same(*page_table, orig_pte))) { 72140 if (likely(pte_same(*page_table, orig_pte))) {
@@ -72158,7 +72147,7 @@ index 6105f47..3363489 100644
72158 flush_icache_page(vma, page); 72147 flush_icache_page(vma, page);
72159 entry = mk_pte(page, vma->vm_page_prot); 72148 entry = mk_pte(page, vma->vm_page_prot);
72160 if (flags & FAULT_FLAG_WRITE) 72149 if (flags & FAULT_FLAG_WRITE)
72161@@ -3309,6 +3505,14 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma, 72150@@ -3314,6 +3510,14 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma,
72162 72151
72163 /* no need to invalidate: a not-present page won't be cached */ 72152 /* no need to invalidate: a not-present page won't be cached */
72164 update_mmu_cache(vma, address, page_table); 72153 update_mmu_cache(vma, address, page_table);
@@ -72173,7 +72162,7 @@ index 6105f47..3363489 100644
72173 } else { 72162 } else {
72174 if (cow_page) 72163 if (cow_page)
72175 mem_cgroup_uncharge_page(cow_page); 72164 mem_cgroup_uncharge_page(cow_page);
72176@@ -3462,6 +3666,12 @@ int handle_pte_fault(struct mm_struct *mm, 72165@@ -3467,6 +3671,12 @@ int handle_pte_fault(struct mm_struct *mm,
72177 if (flags & FAULT_FLAG_WRITE) 72166 if (flags & FAULT_FLAG_WRITE)
72178 flush_tlb_fix_spurious_fault(vma, address); 72167 flush_tlb_fix_spurious_fault(vma, address);
72179 } 72168 }
@@ -72186,7 +72175,7 @@ index 6105f47..3363489 100644
72186 unlock: 72175 unlock:
72187 pte_unmap_unlock(pte, ptl); 72176 pte_unmap_unlock(pte, ptl);
72188 return 0; 72177 return 0;
72189@@ -3478,6 +3688,10 @@ int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma, 72178@@ -3483,6 +3693,10 @@ int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma,
72190 pmd_t *pmd; 72179 pmd_t *pmd;
72191 pte_t *pte; 72180 pte_t *pte;
72192 72181
@@ -72197,7 +72186,7 @@ index 6105f47..3363489 100644
72197 __set_current_state(TASK_RUNNING); 72186 __set_current_state(TASK_RUNNING);
72198 72187
72199 count_vm_event(PGFAULT); 72188 count_vm_event(PGFAULT);
72200@@ -3489,6 +3703,34 @@ int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma, 72189@@ -3494,6 +3708,34 @@ int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma,
72201 if (unlikely(is_vm_hugetlb_page(vma))) 72190 if (unlikely(is_vm_hugetlb_page(vma)))
72202 return hugetlb_fault(mm, vma, address, flags); 72191 return hugetlb_fault(mm, vma, address, flags);
72203 72192
@@ -72229,10 +72218,10 @@ index 6105f47..3363489 100644
72229+ } 72218+ }
72230+#endif 72219+#endif
72231+ 72220+
72221 retry:
72232 pgd = pgd_offset(mm, address); 72222 pgd = pgd_offset(mm, address);
72233 pud = pud_alloc(mm, pgd, address); 72223 pud = pud_alloc(mm, pgd, address);
72234 if (!pud) 72224@@ -3535,7 +3777,7 @@ retry:
72235@@ -3518,7 +3760,7 @@ int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma,
72236 * run pte_offset_map on the pmd, if an huge pmd could 72225 * run pte_offset_map on the pmd, if an huge pmd could
72237 * materialize from under us from a different thread. 72226 * materialize from under us from a different thread.
72238 */ 72227 */
@@ -72241,7 +72230,7 @@ index 6105f47..3363489 100644
72241 return VM_FAULT_OOM; 72230 return VM_FAULT_OOM;
72242 /* if an huge pmd materialized from under us just retry later */ 72231 /* if an huge pmd materialized from under us just retry later */
72243 if (unlikely(pmd_trans_huge(*pmd))) 72232 if (unlikely(pmd_trans_huge(*pmd)))
72244@@ -3555,6 +3797,23 @@ int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) 72233@@ -3572,6 +3814,23 @@ int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address)
72245 spin_unlock(&mm->page_table_lock); 72234 spin_unlock(&mm->page_table_lock);
72246 return 0; 72235 return 0;
72247 } 72236 }
@@ -72265,7 +72254,7 @@ index 6105f47..3363489 100644
72265 #endif /* __PAGETABLE_PUD_FOLDED */ 72254 #endif /* __PAGETABLE_PUD_FOLDED */
72266 72255
72267 #ifndef __PAGETABLE_PMD_FOLDED 72256 #ifndef __PAGETABLE_PMD_FOLDED
72268@@ -3585,6 +3844,30 @@ int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address) 72257@@ -3602,6 +3861,30 @@ int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address)
72269 spin_unlock(&mm->page_table_lock); 72258 spin_unlock(&mm->page_table_lock);
72270 return 0; 72259 return 0;
72271 } 72260 }
@@ -72296,7 +72285,7 @@ index 6105f47..3363489 100644
72296 #endif /* __PAGETABLE_PMD_FOLDED */ 72285 #endif /* __PAGETABLE_PMD_FOLDED */
72297 72286
72298 int make_pages_present(unsigned long addr, unsigned long end) 72287 int make_pages_present(unsigned long addr, unsigned long end)
72299@@ -3622,7 +3905,7 @@ static int __init gate_vma_init(void) 72288@@ -3639,7 +3922,7 @@ static int __init gate_vma_init(void)
72300 gate_vma.vm_start = FIXADDR_USER_START; 72289 gate_vma.vm_start = FIXADDR_USER_START;
72301 gate_vma.vm_end = FIXADDR_USER_END; 72290 gate_vma.vm_end = FIXADDR_USER_END;
72302 gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC; 72291 gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC;
@@ -72306,7 +72295,7 @@ index 6105f47..3363489 100644
72306 return 0; 72295 return 0;
72307 } 72296 }
72308diff --git a/mm/mempolicy.c b/mm/mempolicy.c 72297diff --git a/mm/mempolicy.c b/mm/mempolicy.c
72309index 458dede..b9d786e 100644 72298index 82f1b02..5eb68b7 100644
72310--- a/mm/mempolicy.c 72299--- a/mm/mempolicy.c
72311+++ b/mm/mempolicy.c 72300+++ b/mm/mempolicy.c
72312@@ -655,6 +655,10 @@ static int mbind_range(struct mm_struct *mm, unsigned long start, 72301@@ -655,6 +655,10 @@ static int mbind_range(struct mm_struct *mm, unsigned long start,
@@ -74103,7 +74092,7 @@ index bb8f4f0..40d3e02 100644
74103 new->vm_region = region; 74092 new->vm_region = region;
74104 74093
74105diff --git a/mm/page_alloc.c b/mm/page_alloc.c 74094diff --git a/mm/page_alloc.c b/mm/page_alloc.c
74106index 88a6d87..ae1c51c 100644 74095index 691b8ec..c158be3 100644
74107--- a/mm/page_alloc.c 74096--- a/mm/page_alloc.c
74108+++ b/mm/page_alloc.c 74097+++ b/mm/page_alloc.c
74109@@ -335,7 +335,7 @@ out: 74098@@ -335,7 +335,7 @@ out:
@@ -74379,7 +74368,7 @@ index a409bd8..1e695db 100644
74379 return -ENOMEM; 74368 return -ENOMEM;
74380 74369
74381diff --git a/mm/slab.c b/mm/slab.c 74370diff --git a/mm/slab.c b/mm/slab.c
74382index da2bb68..e5ae5e71 100644 74371index da2bb68..cc35e70 100644
74383--- a/mm/slab.c 74372--- a/mm/slab.c
74384+++ b/mm/slab.c 74373+++ b/mm/slab.c
74385@@ -153,7 +153,7 @@ 74374@@ -153,7 +153,7 @@
@@ -74552,7 +74541,7 @@ index da2bb68..e5ae5e71 100644
74552+ if (!PageSlab(page)) 74541+ if (!PageSlab(page))
74553+ return false; 74542+ return false;
74554+ 74543+
74555+ cachep = page->slab_cache; 74544+ cachep = page_get_cache(page);
74556+ return cachep->flags & SLAB_USERCOPY; 74545+ return cachep->flags & SLAB_USERCOPY;
74557+} 74546+}
74558+ 74547+
@@ -74576,7 +74565,7 @@ index da2bb68..e5ae5e71 100644
74576+ if (!PageSlab(page)) 74565+ if (!PageSlab(page))
74577+ return NULL; 74566+ return NULL;
74578+ 74567+
74579+ cachep = page->slab_cache; 74568+ cachep = page_get_cache(page);
74580+ if (!(cachep->flags & SLAB_USERCOPY)) 74569+ if (!(cachep->flags & SLAB_USERCOPY))
74581+ return cachep->name; 74570+ return cachep->name;
74582+ 74571+
@@ -75735,7 +75724,7 @@ index 23f45ce..c748f1a 100644
75735 #undef __HANDLE_ITEM 75724 #undef __HANDLE_ITEM
75736 } 75725 }
75737diff --git a/net/batman-adv/bat_iv_ogm.c b/net/batman-adv/bat_iv_ogm.c 75726diff --git a/net/batman-adv/bat_iv_ogm.c b/net/batman-adv/bat_iv_ogm.c
75738index a6d5d63..1cc6c2b 100644 75727index fa701b6..8b9762a 100644
75739--- a/net/batman-adv/bat_iv_ogm.c 75728--- a/net/batman-adv/bat_iv_ogm.c
75740+++ b/net/batman-adv/bat_iv_ogm.c 75729+++ b/net/batman-adv/bat_iv_ogm.c
75741@@ -539,7 +539,7 @@ static void bat_iv_ogm_schedule(struct hard_iface *hard_iface, 75730@@ -539,7 +539,7 @@ static void bat_iv_ogm_schedule(struct hard_iface *hard_iface,
@@ -75934,7 +75923,7 @@ index 4a26348..a018d15 100644
75934 err = -EFAULT; 75923 err = -EFAULT;
75935 break; 75924 break;
75936diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c 75925diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c
75937index 717c43a..d7f68b7 100644 75926index 8d1edd7..c63b363 100644
75938--- a/net/bluetooth/rfcomm/sock.c 75927--- a/net/bluetooth/rfcomm/sock.c
75939+++ b/net/bluetooth/rfcomm/sock.c 75928+++ b/net/bluetooth/rfcomm/sock.c
75940@@ -685,7 +685,7 @@ static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, c 75929@@ -685,7 +685,7 @@ static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, c
@@ -76672,7 +76661,7 @@ index dfba343..c827d50 100644
76672 secure_ip_id(daddr->addr.a4) : 76661 secure_ip_id(daddr->addr.a4) :
76673 secure_ipv6_id(daddr->addr.a6)); 76662 secure_ipv6_id(daddr->addr.a6));
76674diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c 76663diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c
76675index 3727e23..517f5df 100644 76664index b7bf6e3..7325e1d 100644
76676--- a/net/ipv4/ip_fragment.c 76665--- a/net/ipv4/ip_fragment.c
76677+++ b/net/ipv4/ip_fragment.c 76666+++ b/net/ipv4/ip_fragment.c
76678@@ -318,7 +318,7 @@ static inline int ip_frag_too_far(struct ipq *qp) 76667@@ -318,7 +318,7 @@ static inline int ip_frag_too_far(struct ipq *qp)
@@ -76942,10 +76931,10 @@ index 167ea10..4b15883 100644
76942 ts = peer->tcp_ts; 76931 ts = peer->tcp_ts;
76943 tsage = get_seconds() - peer->tcp_ts_stamp; 76932 tsage = get_seconds() - peer->tcp_ts_stamp;
76944diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c 76933diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
76945index 3acebbd..3fa7572 100644 76934index 0e0b6d0..53656c6 100644
76946--- a/net/ipv4/tcp_input.c 76935--- a/net/ipv4/tcp_input.c
76947+++ b/net/ipv4/tcp_input.c 76936+++ b/net/ipv4/tcp_input.c
76948@@ -4725,7 +4725,7 @@ static struct sk_buff *tcp_collapse_one(struct sock *sk, struct sk_buff *skb, 76937@@ -4752,7 +4752,7 @@ static struct sk_buff *tcp_collapse_one(struct sock *sk, struct sk_buff *skb,
76949 * simplifies code) 76938 * simplifies code)
76950 */ 76939 */
76951 static void 76940 static void
@@ -76955,7 +76944,7 @@ index 3acebbd..3fa7572 100644
76955 u32 start, u32 end) 76944 u32 start, u32 end)
76956 { 76945 {
76957diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c 76946diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
76958index 8f2458d..9a12fbb 100644 76947index 76f50e1..e26b039 100644
76959--- a/net/ipv4/tcp_ipv4.c 76948--- a/net/ipv4/tcp_ipv4.c
76960+++ b/net/ipv4/tcp_ipv4.c 76949+++ b/net/ipv4/tcp_ipv4.c
76961@@ -90,6 +90,10 @@ int sysctl_tcp_low_latency __read_mostly; 76950@@ -90,6 +90,10 @@ int sysctl_tcp_low_latency __read_mostly;
@@ -76969,7 +76958,7 @@ index 8f2458d..9a12fbb 100644
76969 #ifdef CONFIG_TCP_MD5SIG 76958 #ifdef CONFIG_TCP_MD5SIG
76970 static int tcp_v4_md5_hash_hdr(char *md5_hash, const struct tcp_md5sig_key *key, 76959 static int tcp_v4_md5_hash_hdr(char *md5_hash, const struct tcp_md5sig_key *key,
76971 __be32 daddr, __be32 saddr, const struct tcphdr *th); 76960 __be32 daddr, __be32 saddr, const struct tcphdr *th);
76972@@ -1642,6 +1646,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb) 76961@@ -1640,6 +1644,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
76973 return 0; 76962 return 0;
76974 76963
76975 reset: 76964 reset:
@@ -76979,7 +76968,7 @@ index 8f2458d..9a12fbb 100644
76979 tcp_v4_send_reset(rsk, skb); 76968 tcp_v4_send_reset(rsk, skb);
76980 discard: 76969 discard:
76981 kfree_skb(skb); 76970 kfree_skb(skb);
76982@@ -1704,12 +1711,19 @@ int tcp_v4_rcv(struct sk_buff *skb) 76971@@ -1702,12 +1709,19 @@ int tcp_v4_rcv(struct sk_buff *skb)
76983 TCP_SKB_CB(skb)->sacked = 0; 76972 TCP_SKB_CB(skb)->sacked = 0;
76984 76973
76985 sk = __inet_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest); 76974 sk = __inet_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest);
@@ -77002,7 +76991,7 @@ index 8f2458d..9a12fbb 100644
77002 76991
77003 if (unlikely(iph->ttl < inet_sk(sk)->min_ttl)) { 76992 if (unlikely(iph->ttl < inet_sk(sk)->min_ttl)) {
77004 NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP); 76993 NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP);
77005@@ -1759,6 +1773,10 @@ no_tcp_socket: 76994@@ -1757,6 +1771,10 @@ no_tcp_socket:
77006 bad_packet: 76995 bad_packet:
77007 TCP_INC_STATS_BH(net, TCP_MIB_INERRS); 76996 TCP_INC_STATS_BH(net, TCP_MIB_INERRS);
77008 } else { 76997 } else {
@@ -77013,7 +77002,7 @@ index 8f2458d..9a12fbb 100644
77013 tcp_v4_send_reset(NULL, skb); 77002 tcp_v4_send_reset(NULL, skb);
77014 } 77003 }
77015 77004
77016@@ -2420,7 +2438,11 @@ static void get_openreq4(const struct sock *sk, const struct request_sock *req, 77005@@ -2418,7 +2436,11 @@ static void get_openreq4(const struct sock *sk, const struct request_sock *req,
77017 0, /* non standard timer */ 77006 0, /* non standard timer */
77018 0, /* open_requests have no inode */ 77007 0, /* open_requests have no inode */
77019 atomic_read(&sk->sk_refcnt), 77008 atomic_read(&sk->sk_refcnt),
@@ -77025,7 +77014,7 @@ index 8f2458d..9a12fbb 100644
77025 len); 77014 len);
77026 } 77015 }
77027 77016
77028@@ -2470,7 +2492,12 @@ static void get_tcp4_sock(struct sock *sk, struct seq_file *f, int i, int *len) 77017@@ -2468,7 +2490,12 @@ static void get_tcp4_sock(struct sock *sk, struct seq_file *f, int i, int *len)
77029 sock_i_uid(sk), 77018 sock_i_uid(sk),
77030 icsk->icsk_probes_out, 77019 icsk->icsk_probes_out,
77031 sock_i_ino(sk), 77020 sock_i_ino(sk),
@@ -77039,7 +77028,7 @@ index 8f2458d..9a12fbb 100644
77039 jiffies_to_clock_t(icsk->icsk_rto), 77028 jiffies_to_clock_t(icsk->icsk_rto),
77040 jiffies_to_clock_t(icsk->icsk_ack.ato), 77029 jiffies_to_clock_t(icsk->icsk_ack.ato),
77041 (icsk->icsk_ack.quick << 1) | icsk->icsk_ack.pingpong, 77030 (icsk->icsk_ack.quick << 1) | icsk->icsk_ack.pingpong,
77042@@ -2498,7 +2525,13 @@ static void get_timewait4_sock(const struct inet_timewait_sock *tw, 77031@@ -2496,7 +2523,13 @@ static void get_timewait4_sock(const struct inet_timewait_sock *tw,
77043 " %02X %08X:%08X %02X:%08lX %08X %5d %8d %d %d %pK%n", 77032 " %02X %08X:%08X %02X:%08lX %08X %5d %8d %d %d %pK%n",
77044 i, src, srcp, dest, destp, tw->tw_substate, 0, 0, 77033 i, src, srcp, dest, destp, tw->tw_substate, 0, 0,
77045 3, jiffies_to_clock_t(ttd), 0, 0, 0, 0, 77034 3, jiffies_to_clock_t(ttd), 0, 0, 0, 0,
@@ -77426,7 +77415,7 @@ index 3ee2870..f19606b 100644
77426 77415
77427 static int raw6_seq_show(struct seq_file *seq, void *v) 77416 static int raw6_seq_show(struct seq_file *seq, void *v)
77428diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c 77417diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
77429index 8a8fa2d..4faf719 100644 77418index 3889e02..889d1ea 100644
77430--- a/net/ipv6/tcp_ipv6.c 77419--- a/net/ipv6/tcp_ipv6.c
77431+++ b/net/ipv6/tcp_ipv6.c 77420+++ b/net/ipv6/tcp_ipv6.c
77432@@ -94,6 +94,10 @@ static struct tcp_md5sig_key *tcp_v6_md5_do_lookup(struct sock *sk, 77421@@ -94,6 +94,10 @@ static struct tcp_md5sig_key *tcp_v6_md5_do_lookup(struct sock *sk,
@@ -77440,7 +77429,7 @@ index 8a8fa2d..4faf719 100644
77440 static void tcp_v6_hash(struct sock *sk) 77429 static void tcp_v6_hash(struct sock *sk)
77441 { 77430 {
77442 if (sk->sk_state != TCP_CLOSE) { 77431 if (sk->sk_state != TCP_CLOSE) {
77443@@ -1543,6 +1547,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) 77432@@ -1544,6 +1548,9 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
77444 return 0; 77433 return 0;
77445 77434
77446 reset: 77435 reset:
@@ -77450,7 +77439,7 @@ index 8a8fa2d..4faf719 100644
77450 tcp_v6_send_reset(sk, skb); 77439 tcp_v6_send_reset(sk, skb);
77451 discard: 77440 discard:
77452 if (opt_skb) 77441 if (opt_skb)
77453@@ -1624,12 +1631,20 @@ static int tcp_v6_rcv(struct sk_buff *skb) 77442@@ -1625,12 +1632,20 @@ static int tcp_v6_rcv(struct sk_buff *skb)
77454 TCP_SKB_CB(skb)->sacked = 0; 77443 TCP_SKB_CB(skb)->sacked = 0;
77455 77444
77456 sk = __inet6_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest); 77445 sk = __inet6_lookup_skb(&tcp_hashinfo, skb, th->source, th->dest);
@@ -77473,7 +77462,7 @@ index 8a8fa2d..4faf719 100644
77473 77462
77474 if (hdr->hop_limit < inet6_sk(sk)->min_hopcount) { 77463 if (hdr->hop_limit < inet6_sk(sk)->min_hopcount) {
77475 NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP); 77464 NET_INC_STATS_BH(net, LINUX_MIB_TCPMINTTLDROP);
77476@@ -1677,6 +1692,10 @@ no_tcp_socket: 77465@@ -1678,6 +1693,10 @@ no_tcp_socket:
77477 bad_packet: 77466 bad_packet:
77478 TCP_INC_STATS_BH(net, TCP_MIB_INERRS); 77467 TCP_INC_STATS_BH(net, TCP_MIB_INERRS);
77479 } else { 77468 } else {
@@ -77484,7 +77473,7 @@ index 8a8fa2d..4faf719 100644
77484 tcp_v6_send_reset(NULL, skb); 77473 tcp_v6_send_reset(NULL, skb);
77485 } 77474 }
77486 77475
77487@@ -1931,7 +1950,13 @@ static void get_openreq6(struct seq_file *seq, 77476@@ -1932,7 +1951,13 @@ static void get_openreq6(struct seq_file *seq,
77488 uid, 77477 uid,
77489 0, /* non standard timer */ 77478 0, /* non standard timer */
77490 0, /* open_requests have no inode */ 77479 0, /* open_requests have no inode */
@@ -77499,7 +77488,7 @@ index 8a8fa2d..4faf719 100644
77499 } 77488 }
77500 77489
77501 static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i) 77490 static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i)
77502@@ -1981,7 +2006,12 @@ static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i) 77491@@ -1982,7 +2007,12 @@ static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i)
77503 sock_i_uid(sp), 77492 sock_i_uid(sp),
77504 icsk->icsk_probes_out, 77493 icsk->icsk_probes_out,
77505 sock_i_ino(sp), 77494 sock_i_ino(sp),
@@ -77513,7 +77502,7 @@ index 8a8fa2d..4faf719 100644
77513 jiffies_to_clock_t(icsk->icsk_rto), 77502 jiffies_to_clock_t(icsk->icsk_rto),
77514 jiffies_to_clock_t(icsk->icsk_ack.ato), 77503 jiffies_to_clock_t(icsk->icsk_ack.ato),
77515 (icsk->icsk_ack.quick << 1 ) | icsk->icsk_ack.pingpong, 77504 (icsk->icsk_ack.quick << 1 ) | icsk->icsk_ack.pingpong,
77516@@ -2016,7 +2046,13 @@ static void get_timewait6_sock(struct seq_file *seq, 77505@@ -2017,7 +2047,13 @@ static void get_timewait6_sock(struct seq_file *seq,
77517 dest->s6_addr32[2], dest->s6_addr32[3], destp, 77506 dest->s6_addr32[2], dest->s6_addr32[3], destp,
77518 tw->tw_substate, 0, 0, 77507 tw->tw_substate, 0, 0,
77519 3, jiffies_to_clock_t(ttd), 0, 0, 0, 0, 77508 3, jiffies_to_clock_t(ttd), 0, 0, 0, 0,
@@ -77757,7 +77746,7 @@ index 7e5d927..cdbb54e 100644
77757 return res; 77746 return res;
77758 } 77747 }
77759diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h 77748diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
77760index 498e87b..29c1ead 100644 77749index f8b5e75..f2b4942 100644
77761--- a/net/mac80211/ieee80211_i.h 77750--- a/net/mac80211/ieee80211_i.h
77762+++ b/net/mac80211/ieee80211_i.h 77751+++ b/net/mac80211/ieee80211_i.h
77763@@ -28,6 +28,7 @@ 77752@@ -28,6 +28,7 @@
@@ -78839,7 +78828,7 @@ index 1e2eee8..ce3967e 100644
78839 assoc->assoc_id, 78828 assoc->assoc_id,
78840 assoc->sndbuf_used, 78829 assoc->sndbuf_used,
78841diff --git a/net/sctp/socket.c b/net/sctp/socket.c 78830diff --git a/net/sctp/socket.c b/net/sctp/socket.c
78842index dba20d6..9fa89aa 100644 78831index 7405355..d34ad39 100644
78843--- a/net/sctp/socket.c 78832--- a/net/sctp/socket.c
78844+++ b/net/sctp/socket.c 78833+++ b/net/sctp/socket.c
78845@@ -4577,6 +4577,8 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len, 78834@@ -4577,6 +4577,8 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len,
@@ -79114,7 +79103,7 @@ index dab3176..bea91b3 100644
79114 set_fs(KERNEL_DS); 79103 set_fs(KERNEL_DS);
79115 if (level == SOL_SOCKET) 79104 if (level == SOL_SOCKET)
79116diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c 79105diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
79117index eda32ae..1c9fa7c 100644 79106index 85b9235..03610ce 100644
79118--- a/net/sunrpc/sched.c 79107--- a/net/sunrpc/sched.c
79119+++ b/net/sunrpc/sched.c 79108+++ b/net/sunrpc/sched.c
79120@@ -240,9 +240,9 @@ static int rpc_wait_bit_killable(void *word) 79109@@ -240,9 +240,9 @@ static int rpc_wait_bit_killable(void *word)
@@ -88738,7 +88727,7 @@ index 6789d78..4afd019e 100644
88738+ 88727+
88739 #endif 88728 #endif
88740diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c 88729diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
88741index 9739b53..462f93d 100644 88730index 71b9036..6967337 100644
88742--- a/virt/kvm/kvm_main.c 88731--- a/virt/kvm/kvm_main.c
88743+++ b/virt/kvm/kvm_main.c 88732+++ b/virt/kvm/kvm_main.c
88744@@ -75,7 +75,7 @@ LIST_HEAD(vm_list); 88733@@ -75,7 +75,7 @@ LIST_HEAD(vm_list);
@@ -88750,7 +88739,7 @@ index 9739b53..462f93d 100644
88750 88739
88751 struct kmem_cache *kvm_vcpu_cache; 88740 struct kmem_cache *kvm_vcpu_cache;
88752 EXPORT_SYMBOL_GPL(kvm_vcpu_cache); 88741 EXPORT_SYMBOL_GPL(kvm_vcpu_cache);
88753@@ -707,7 +707,7 @@ int __kvm_set_memory_region(struct kvm *kvm, 88742@@ -706,7 +706,7 @@ int __kvm_set_memory_region(struct kvm *kvm,
88754 /* We can read the guest memory with __xxx_user() later on. */ 88743 /* We can read the guest memory with __xxx_user() later on. */
88755 if (user_alloc && 88744 if (user_alloc &&
88756 ((mem->userspace_addr & (PAGE_SIZE - 1)) || 88745 ((mem->userspace_addr & (PAGE_SIZE - 1)) ||
@@ -88759,7 +88748,7 @@ index 9739b53..462f93d 100644
88759 (void __user *)(unsigned long)mem->userspace_addr, 88748 (void __user *)(unsigned long)mem->userspace_addr,
88760 mem->memory_size))) 88749 mem->memory_size)))
88761 goto out; 88750 goto out;
88762@@ -2247,7 +2247,7 @@ static void hardware_enable_nolock(void *junk) 88751@@ -2244,7 +2244,7 @@ static void hardware_enable_nolock(void *junk)
88763 88752
88764 if (r) { 88753 if (r) {
88765 cpumask_clear_cpu(cpu, cpus_hardware_enabled); 88754 cpumask_clear_cpu(cpu, cpus_hardware_enabled);
@@ -88768,7 +88757,7 @@ index 9739b53..462f93d 100644
88768 printk(KERN_INFO "kvm: enabling virtualization on " 88757 printk(KERN_INFO "kvm: enabling virtualization on "
88769 "CPU%d failed\n", cpu); 88758 "CPU%d failed\n", cpu);
88770 } 88759 }
88771@@ -2301,10 +2301,10 @@ static int hardware_enable_all(void) 88760@@ -2298,10 +2298,10 @@ static int hardware_enable_all(void)
88772 88761
88773 kvm_usage_count++; 88762 kvm_usage_count++;
88774 if (kvm_usage_count == 1) { 88763 if (kvm_usage_count == 1) {
@@ -88781,7 +88770,7 @@ index 9739b53..462f93d 100644
88781 hardware_disable_all_nolock(); 88770 hardware_disable_all_nolock();
88782 r = -EBUSY; 88771 r = -EBUSY;
88783 } 88772 }
88784@@ -2667,7 +2667,7 @@ static void kvm_sched_out(struct preempt_notifier *pn, 88773@@ -2664,7 +2664,7 @@ static void kvm_sched_out(struct preempt_notifier *pn,
88785 kvm_arch_vcpu_put(vcpu); 88774 kvm_arch_vcpu_put(vcpu);
88786 } 88775 }
88787 88776
@@ -88790,7 +88779,7 @@ index 9739b53..462f93d 100644
88790 struct module *module) 88779 struct module *module)
88791 { 88780 {
88792 int r; 88781 int r;
88793@@ -2730,7 +2730,7 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, 88782@@ -2727,7 +2727,7 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
88794 if (!vcpu_align) 88783 if (!vcpu_align)
88795 vcpu_align = __alignof__(struct kvm_vcpu); 88784 vcpu_align = __alignof__(struct kvm_vcpu);
88796 kvm_vcpu_cache = kmem_cache_create("kvm_vcpu", vcpu_size, vcpu_align, 88785 kvm_vcpu_cache = kmem_cache_create("kvm_vcpu", vcpu_size, vcpu_align,
@@ -88799,7 +88788,7 @@ index 9739b53..462f93d 100644
88799 if (!kvm_vcpu_cache) { 88788 if (!kvm_vcpu_cache) {
88800 r = -ENOMEM; 88789 r = -ENOMEM;
88801 goto out_free_3; 88790 goto out_free_3;
88802@@ -2740,9 +2740,11 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, 88791@@ -2737,9 +2737,11 @@ int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align,
88803 if (r) 88792 if (r)
88804 goto out_free; 88793 goto out_free;
88805 88794
diff --git a/main/linux-grsec/xsa40.patch b/main/linux-grsec/xsa40.patch
deleted file mode 100644
index 29db917cbb..0000000000
--- a/main/linux-grsec/xsa40.patch
+++ /dev/null
@@ -1,56 +0,0 @@
1Xen: Fix stack corruption in xen_failsafe_callback for 32bit PVOPS guests.
2
3This fixes CVE-2013-0190 / XSA-40
4
5There has been an error on the xen_failsafe_callback path for failed
6iret, which causes the stack pointer to be wrong when entering the
7iret_exc error path. This can result in the kernel crashing.
8
9In the classic kernel case, the relevant code looked a little like:
10
11 popl %eax # Error code from hypervisor
12 jz 5f
13 addl $16,%esp
14 jmp iret_exc # Hypervisor said iret fault
155: addl $16,%esp
16 # Hypervisor said segment selector fault
17
18Here, there are two identical addls on either option of a branch which
19appears to have been optimised by hoisting it above the jz, and
20converting it to an lea, which leaves the flags register unaffected.
21
22In the PVOPS case, the code looks like:
23
24 popl_cfi %eax # Error from the hypervisor
25 lea 16(%esp),%esp # Add $16 before choosing fault path
26 CFI_ADJUST_CFA_OFFSET -16
27 jz 5f
28 addl $16,%esp # Incorrectly adjust %esp again
29 jmp iret_exc
30
31It is possible unprivileged userspace applications to cause this
32behaviour, for example by loading an LDT code selector, then changing
33the code selector to be not-present. At this point, there is a race
34condition where it is possible for the hypervisor to return back to
35userspace from an interrupt, fault on its own iret, and inject a
36failsafe_callback into the kernel.
37
38This bug has been present since the introduction of Xen PVOPS support
39in commit 5ead97c84 (xen: Core Xen implementation), in 2.6.23.
40
41Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com>
42Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
43
44diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
45index ff84d54..6ed91d9 100644
46--- a/arch/x86/kernel/entry_32.S
47+++ b/arch/x86/kernel/entry_32.S
48@@ -1065,7 +1065,6 @@ ENTRY(xen_failsafe_callback)
49 lea 16(%esp),%esp
50 CFI_ADJUST_CFA_OFFSET -16
51 jz 5f
52- addl $16,%esp
53 jmp iret_exc
54 5: pushl_cfi $-1 /* orig_ax = -1 => not a system call */
55 SAVE_ALL
56