linux/arch
Anthony Iliopoulos 4d5f17381e x86, mm, hugetlb: Add missing TLB page invalidation for hugetlb_cow()
commit 9844f54623 upstream.

The invalidation is required in order to maintain proper semantics
under CoW conditions. In scenarios where a process clones several
threads, a thread operating on a core whose DTLB entry for a
particular hugepage has not been invalidated, will be reading from
the hugepage that belongs to the forked child process, even after
hugetlb_cow().

The thread will not see the updated page as long as the stale DTLB
entry remains cached, the thread attempts to write into the page,
the child process exits, or the thread gets migrated to a different
processor.

Signed-off-by: Anthony Iliopoulos <anthony.iliopoulos@huawei.com>
Link: http://lkml.kernel.org/r/20140514092948.GA17391@server-36.huawei.corp
Suggested-by: Shay Goikhman <shay.goikhman@huawei.com>
Acked-by: Dave Hansen <dave.hansen@intel.com>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-06-07 13:25:31 -07:00
..
alpha Removal of GENERIC_GPIO for v3.10 2013-05-09 09:59:16 -07:00
arc ARC: !PREEMPT: Ensure Return to kernel mode is IRQ safe 2014-05-13 13:59:46 +02:00
arm ARM: multi_v7_defconfig: enable ARM_ATAG_DTB_COMPAT 2014-05-30 21:52:12 -07:00
arm64 arm64: Make DMA coherent and strongly ordered mappings not executable 2014-05-06 07:55:26 -07:00
avr32 avr32: Makefile: add '-D__linux__' flag for gcc-4.4.7 use 2014-03-06 21:30:02 -08:00
blackfin blackfin updates for Linux 3.10 2013-05-10 07:21:16 -07:00
c6x arch: c6x: mm: include "asm/uaccess.h" to pass compiling 2013-07-21 18:21:29 -07:00
cris cris: media platform drivers: fix build 2013-11-29 11:11:53 -08:00
frv Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-05-01 14:08:52 -07:00
h8300 We get rid of the general module prefix confusion with a binary config option, 2013-05-05 10:58:06 -07:00
hexagon Removal of GENERIC_GPIO for v3.10 2013-05-09 09:59:16 -07:00
ia64 exec/ptrace: fix get_dumpable() incorrect tests 2013-11-29 11:11:44 -08:00
m32r Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-05-01 14:08:52 -07:00
m68k m68k: Skip futex_atomic_cmpxchg_inatomic() test 2014-04-14 06:42:19 -07:00
metag metag: fix mm/hugetlb.c build breakage 2013-06-19 06:23:34 -10:00
microblaze microblaze: fix clone syscall 2013-08-20 08:43:02 -07:00
mips genirq: Allow forcing cpu affinity of interrupts 2014-06-07 13:25:29 -07:00
mn10300 mn10300: Use early_param() to parse "mem=" parameter 2013-06-28 16:53:03 +01:00
openrisc Removal of GENERIC_GPIO for v3.10 2013-05-09 09:59:16 -07:00
parisc parisc: fix epoll_pwait syscall on compat kernel 2014-05-30 21:52:12 -07:00
powerpc powerpc: Add vr save/restore functions 2014-05-30 21:52:12 -07:00
s390 s390/bpf,jit: initialize A register if 1st insn is BPF_S_LDX_B_MSH 2014-05-13 13:59:42 +02:00
score score: remove redundant kcore_list entries 2013-05-25 10:27:27 -07:00
sh sh: fix format string bug in stack tracer 2014-05-06 07:55:32 -07:00
sparc sparc64: Make sure %pil interrupts are enabled during hypervisor yield. 2014-04-26 17:15:36 -07:00
tile tile: remove compat_sys_lookup_dcookie declaration to fix compile error 2014-02-13 13:48:00 -08:00
um uml: check length in exitcode_proc_write() 2013-11-13 12:05:33 +09:00
unicore32 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal 2013-05-10 09:21:05 -07:00
x86 x86, mm, hugetlb: Add missing TLB page invalidation for hugetlb_cow() 2014-06-07 13:25:31 -07:00
xtensa xtensa: introduce spill_registers_kernel macro 2014-03-06 21:30:11 -08:00
.gitignore
Kconfig microblaze: fix clone syscall 2013-08-20 08:43:02 -07:00