diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2013-01-22 14:06:18 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2013-01-22 14:06:18 +0000 |
commit | 89f3ffa762b6e2612964336dd98ff7716280b2fb (patch) | |
tree | 2b727dbe3321f4b072c9dcee302a7f5442114474 | |
parent | 3317df2fee671d71e4507ea0a0b656000f833835 (diff) | |
download | alpine_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.patch | 52 | ||||
-rw-r--r-- | main/linux-grsec/0001-r8169-remove-the-obsolete-and-incorrect-AMD-workarou.patch | 58 | ||||
-rw-r--r-- | main/linux-grsec/APKBUILD | 12 | ||||
-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.patch | 56 |
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 @@ | |||
1 | From 7dbb491878a2c51d372a8890fa45a8ff80358af1 Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?fran=C3=A7ois=20romieu?= <romieu@fr.zoreil.com> | ||
3 | Date: Sat, 9 Jun 2012 10:53:16 +0000 | ||
4 | Subject: [PATCH] r8169: avoid NAPI scheduling delay. | ||
5 | |||
6 | While reworking the r8169 driver a few months ago to perform the | ||
7 | smallest amount of work in the irq handler, I took care of avoiding | ||
8 | any irq mask register operation in the slow work dedicated user | ||
9 | context thread. The slow work thread scheduled an extra round of NAPI | ||
10 | work which would ultimately set the irq mask register as required, | ||
11 | thus keeping such irq mask operations in the NAPI handler. | ||
12 | It would eventually race with the irq handler and delay NAPI execution | ||
13 | for - assuming no further irq - a whole ksoftirqd period. Mildly a | ||
14 | problem for rare link changes or corner case PCI events. | ||
15 | |||
16 | The race was always lost after the last bh disabling lock had been | ||
17 | removed from the work thread and people started wondering where those | ||
18 | pesky "NOHZ: local_softirq_pending 08" messages came from. | ||
19 | |||
20 | Actually the irq mask register _can_ be set up directly in the slow | ||
21 | work thread. | ||
22 | |||
23 | Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> | ||
24 | Reported-by: Dave Jones <davej@redhat.com> | ||
25 | Tested-by: Marc Dionne <marc.c.dionne@gmail.com> | ||
26 | Cc: Thomas Gleixner <tglx@linutronix.de> | ||
27 | Cc: Hayes Wang <hayeswang@realtek.com> | ||
28 | Signed-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 | |||
33 | diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c | ||
34 | index 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 | -- | ||
51 | 1.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 @@ | |||
1 | From f5829ee75361832b9b52e7230f57ecadc1db0125 Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi> | ||
3 | Date: Tue, 22 Jan 2013 10:39:08 +0200 | ||
4 | Subject: [PATCH] r8169: remove the obsolete and incorrect AMD workaround | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
9 | This was introduced in commit 6dccd16 "r8169: merge with version | ||
10 | 6.001.00 of Realtek's r8169 driver". I did not find the version | ||
11 | 6.001.00 online, but in 6.002.00 or any later r8169 from Realtek | ||
12 | this hunk is no longer present. | ||
13 | |||
14 | Also commit 05af214 "r8169: fix Ethernet Hangup for RTL8110SC | ||
15 | rev d" claims to have fixed this issue otherwise. | ||
16 | |||
17 | The magic compare mask of 0xfffe000 is dubious as it masks | ||
18 | parts of the Reserved part, and parts of the VLAN tag. But this | ||
19 | does not make much sense as the VLAN tag parts are perfectly | ||
20 | valid there. In matter of fact this seems to be triggered with | ||
21 | any VLAN tagged packet as RxVlanTag bit is matched. I would | ||
22 | suspect 0xfffe0000 was intended to test reserved part only. | ||
23 | |||
24 | Finally, this hunk is evil as it can cause more packets to be | ||
25 | handled than what was NAPI quota causing net/core/dev.c: | ||
26 | net_rx_action(): WARN_ON_ONCE(work > weight) to trigger, and | ||
27 | mess up the NAPI state causing device to hang. | ||
28 | |||
29 | As result, any system using VLANs and having high receive | ||
30 | traffic (so that NAPI poll budget limits rtl_rx) would result | ||
31 | in device hang. | ||
32 | |||
33 | Signed-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 | |||
38 | diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c | ||
39 | index 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 | -- | ||
57 | 1.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 |
4 | pkgname=linux-${_flavor} | 4 | pkgname=linux-${_flavor} |
5 | pkgver=3.4.24 | 5 | pkgver=3.4.27 |
6 | _kernver=3.4 | 6 | _kernver=3.4 |
7 | pkgrel=3 | 7 | pkgrel=3 |
8 | pkgdesc="Linux kernel with grsecurity" | 8 | pkgdesc="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 | ||
147 | md5sums="967f72983655e2479f951195953e8480 linux-3.4.tar.xz | 146 | md5sums="967f72983655e2479f951195953e8480 linux-3.4.tar.xz |
148 | 429bd5732ce4511fde2706e359cd4c9c patch-3.4.24.xz | 147 | 7ce968758159f77ce96a11aea20c6cf7 patch-3.4.27.xz |
149 | f23a2fcf6562f3219e43385c787cff23 grsecurity-2.9.1-3.4.24-0.patch | 148 | 39f631bed428b974f72576e77c4832af grsecurity-2.9.1-3.4.27-0.patch |
150 | 776adeeb5272093574f8836c5037dd7d 0004-arp-flush-arp-cache-on-device-change.patch | 149 | 776adeeb5272093574f8836c5037dd7d 0004-arp-flush-arp-cache-on-device-change.patch |
151 | cb6fcd6e966e73c87a839c4c0183f81f 0001-Revert-ipv4-Don-t-use-the-cached-pmtu-informations-f.patch | 150 | cb6fcd6e966e73c87a839c4c0183f81f 0001-Revert-ipv4-Don-t-use-the-cached-pmtu-informations-f.patch |
152 | d2f7ba780ff7567c21381428264d7fdd intel_idle.patch | 151 | d2f7ba780ff7567c21381428264d7fdd intel_idle.patch |
153 | 8e5611c6bf3dfb0008d4e58051a8b0ff 0001-r8169-avoid-NAPI-scheduling-delay.patch | ||
154 | daf2cbb558588c49c138fe9ca2482b64 r8169-num-rx-desc.patch | 152 | daf2cbb558588c49c138fe9ca2482b64 r8169-num-rx-desc.patch |
155 | d9de28f8a74fe0347866705b4bd6db85 xsa40.patch | 153 | 63468b44e34fa19237e0a2a1f6737b14 0001-r8169-remove-the-obsolete-and-incorrect-AMD-workarou.patch |
156 | 50a13359236dbd676fa355f0b4fd27ff kernelconfig.x86 | 154 | 50a13359236dbd676fa355f0b4fd27ff kernelconfig.x86 |
157 | c402f52babc729d1280c1677075aa0d7 kernelconfig.x86_64" | 155 | c402f52babc729d1280c1677075aa0d7 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 | ||
271 | diff --git a/Makefile b/Makefile | 271 | diff --git a/Makefile b/Makefile |
272 | index a3e12e6..1825c04 100644 | 272 | index 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 | /* |
3017 | diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c | 3017 | diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c |
3018 | index e9a5fd7..378809a 100644 | 3018 | index 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 |
14258 | diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c | 14258 | diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c |
14259 | index 146bb62..ac9c74a 100644 | 14259 | index 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> |
15079 | diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S | 15079 | diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S |
15080 | index 6d4f7ba..437381b 100644 | 15080 | index 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: |
19309 | diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c | 19309 | diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c |
19310 | index ae98dbb..9f69d99 100644 | 19310 | index 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 |
28062 | diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c | 28062 | diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c |
28063 | index cf4837f..37996a1 100644 | 28063 | index 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 | ||
29007 | diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c | 29007 | diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c |
29008 | index 9851093..adb2b1e 100644 | 29008 | index 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 | } |
30754 | diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h | 30754 | diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h |
30755 | index 5fabc6c..0b08aa1 100644 | 30755 | index 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; |
30819 | diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c | 30819 | diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c |
30820 | index 26c67a7..8d4cbcb 100644 | 30820 | index 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); |
30868 | diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c | 30868 | diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c |
30869 | index dd3e7e4..85fbec5 100644 | 30869 | index 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); |
31607 | diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c | 31596 | diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c |
31608 | index 41d4437..631c2e5 100644 | 31597 | index 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 | ||
32670 | diff --git a/drivers/infiniband/hw/nes/nes.h b/drivers/infiniband/hw/nes/nes.h | 32659 | diff --git a/drivers/infiniband/hw/nes/nes.h b/drivers/infiniband/hw/nes/nes.h |
32671 | index c438e46..ca30356 100644 | 32660 | index 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 | /** |
33026 | diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c | 33015 | diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c |
33027 | index 8b8812d..a5e1133 100644 | 33016 | index 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"); |
33464 | diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c | 33453 | diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c |
33465 | index a1a3e6d..1918bfc 100644 | 33454 | index 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; |
34796 | diff --git a/drivers/misc/sgi-xp/xpc_main.c b/drivers/misc/sgi-xp/xpc_main.c | 34785 | diff --git a/drivers/misc/sgi-xp/xpc_main.c b/drivers/misc/sgi-xp/xpc_main.c |
34797 | index 8d082b4..aa749ae 100644 | 34786 | index 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) |
35367 | diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c | 35356 | diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c |
35368 | index 0dc70c2..9cc0215 100644 | 35357 | index 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 && |
37548 | diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c | 37537 | diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c |
37549 | index 08d48a3..2be990d 100644 | 37538 | index 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); |
37996 | diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c | 37985 | diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c |
37997 | index 69f3f7d..8d190b5 100644 | 37986 | index 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 | } |
44122 | diff --git a/fs/exec.c b/fs/exec.c | 44111 | diff --git a/fs/exec.c b/fs/exec.c |
44123 | index 6c4791d..2ae58c1 100644 | 44112 | index 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) |
47583 | diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c | 47572 | diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c |
47584 | index 5686661..80a9a3a 100644 | 47573 | index 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) { |
49694 | diff --git a/fs/splice.c b/fs/splice.c | 49683 | diff --git a/fs/splice.c b/fs/splice.c |
49695 | index 5cac690..f833a99 100644 | 49684 | index 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 | }; |
60602 | diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h | 60591 | diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h |
60603 | index 366422b..1fa7f84 100644 | 60592 | index 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 | { |
64902 | diff --git a/include/net/tcp.h b/include/net/tcp.h | 64891 | diff --git a/include/net/tcp.h b/include/net/tcp.h |
64903 | index f75a04d..e8f5101 100644 | 64892 | index 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; |
65133 | diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h | 65122 | diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h |
65134 | index 3ad5b33..1fa86f4 100644 | 65123 | index 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; |
70387 | diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c | 70376 | diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c |
70388 | index cf8d11e..a0e2ba8 100644 | 70377 | index 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 | ||
71346 | diff --git a/mm/huge_memory.c b/mm/huge_memory.c | 71335 | diff --git a/mm/huge_memory.c b/mm/huge_memory.c |
71347 | index f0e5306..cb9398e 100644 | 71336 | index 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; |
71664 | diff --git a/mm/memory.c b/mm/memory.c | 71653 | diff --git a/mm/memory.c b/mm/memory.c |
71665 | index 6105f47..3363489 100644 | 71654 | index 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 | } |
72308 | diff --git a/mm/mempolicy.c b/mm/mempolicy.c | 72297 | diff --git a/mm/mempolicy.c b/mm/mempolicy.c |
72309 | index 458dede..b9d786e 100644 | 72298 | index 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 | ||
74105 | diff --git a/mm/page_alloc.c b/mm/page_alloc.c | 74094 | diff --git a/mm/page_alloc.c b/mm/page_alloc.c |
74106 | index 88a6d87..ae1c51c 100644 | 74095 | index 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 | ||
74381 | diff --git a/mm/slab.c b/mm/slab.c | 74370 | diff --git a/mm/slab.c b/mm/slab.c |
74382 | index da2bb68..e5ae5e71 100644 | 74371 | index 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 | } |
75737 | diff --git a/net/batman-adv/bat_iv_ogm.c b/net/batman-adv/bat_iv_ogm.c | 75726 | diff --git a/net/batman-adv/bat_iv_ogm.c b/net/batman-adv/bat_iv_ogm.c |
75738 | index a6d5d63..1cc6c2b 100644 | 75727 | index 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; |
75936 | diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c | 75925 | diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c |
75937 | index 717c43a..d7f68b7 100644 | 75926 | index 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)); |
76674 | diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c | 76663 | diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c |
76675 | index 3727e23..517f5df 100644 | 76664 | index 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; |
76944 | diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c | 76933 | diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c |
76945 | index 3acebbd..3fa7572 100644 | 76934 | index 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 | { |
76957 | diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c | 76946 | diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c |
76958 | index 8f2458d..9a12fbb 100644 | 76947 | index 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) |
77428 | diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c | 77417 | diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c |
77429 | index 8a8fa2d..4faf719 100644 | 77418 | index 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 | } |
77759 | diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h | 77748 | diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h |
77760 | index 498e87b..29c1ead 100644 | 77749 | index 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, |
78841 | diff --git a/net/sctp/socket.c b/net/sctp/socket.c | 78830 | diff --git a/net/sctp/socket.c b/net/sctp/socket.c |
78842 | index dba20d6..9fa89aa 100644 | 78831 | index 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) |
79116 | diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c | 79105 | diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c |
79117 | index eda32ae..1c9fa7c 100644 | 79106 | index 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 |
88740 | diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c | 88729 | diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c |
88741 | index 9739b53..462f93d 100644 | 88730 | index 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 @@ | |||
1 | Xen: Fix stack corruption in xen_failsafe_callback for 32bit PVOPS guests. | ||
2 | |||
3 | This fixes CVE-2013-0190 / XSA-40 | ||
4 | |||
5 | There has been an error on the xen_failsafe_callback path for failed | ||
6 | iret, which causes the stack pointer to be wrong when entering the | ||
7 | iret_exc error path. This can result in the kernel crashing. | ||
8 | |||
9 | In 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 | ||
15 | 5: addl $16,%esp | ||
16 | # Hypervisor said segment selector fault | ||
17 | |||
18 | Here, there are two identical addls on either option of a branch which | ||
19 | appears to have been optimised by hoisting it above the jz, and | ||
20 | converting it to an lea, which leaves the flags register unaffected. | ||
21 | |||
22 | In 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 | |||
31 | It is possible unprivileged userspace applications to cause this | ||
32 | behaviour, for example by loading an LDT code selector, then changing | ||
33 | the code selector to be not-present. At this point, there is a race | ||
34 | condition where it is possible for the hypervisor to return back to | ||
35 | userspace from an interrupt, fault on its own iret, and inject a | ||
36 | failsafe_callback into the kernel. | ||
37 | |||
38 | This bug has been present since the introduction of Xen PVOPS support | ||
39 | in commit 5ead97c84 (xen: Core Xen implementation), in 2.6.23. | ||
40 | |||
41 | Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com> | ||
42 | Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> | ||
43 | |||
44 | diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S | ||
45 | index 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 | |||