linux-uconsole/arch/mips
David Daney c45e0a8635 MIPS: Make set_pte() SMP safe.
commit 46011e6ea3 upstream.

On MIPS the GLOBAL bit of the PTE must have the same value in any
aligned pair of PTEs.  These pairs of PTEs are referred to as
"buddies".  In a SMP system is is possible for two CPUs to be calling
set_pte() on adjacent PTEs at the same time.  There is a race between
setting the PTE and a different CPU setting the GLOBAL bit in its
buddy PTE.

This race can be observed when multiple CPUs are executing
vmap()/vfree() at the same time.

Make setting the buddy PTE's GLOBAL bit an atomic operation to close
the race condition.

The case of CONFIG_64BIT_PHYS_ADDR && CONFIG_CPU_MIPS32 is *not*
handled.

Signed-off-by: David Daney <david.daney@cavium.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/10835/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-08-16 20:51:35 -07:00
..
alchemy MIPS: Idle: Consolidate all declarations in <asm/idle.h>. 2013-05-22 01:34:27 +02:00
ar7 MIPS: FW: Remove obsolete header file for MTI platforms. 2013-05-08 12:30:10 +02:00
ath79 MIPS: ath79: Fix ar933x watchdog clock 2013-09-26 17:18:27 -07:00
bcm47xx Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into mips-for-linux-next 2013-02-22 10:07:30 +01:00
bcm63xx Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-05-10 07:48:05 -07:00
boot MIPS: ZBOOT: add missing <linux/string.h> include 2014-10-05 14:54:10 -07:00
cavium-octeon MIPS: OCTEON: make get_system_type() thread-safe 2014-09-17 09:03:58 -07:00
cobalt MIPS: Idle: Consolidate all declarations in <asm/idle.h>. 2013-05-22 01:34:27 +02:00
configs USB: remove remaining instances of USB_SUSPEND 2013-05-15 13:44:44 -04:00
dec MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
emma MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
fw MIPS: FW: Add environment variable processing. 2013-05-08 12:30:09 +02:00
include MIPS: Make set_pte() SMP safe. 2015-08-16 20:51:35 -07:00
jazz Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-03-02 07:44:16 -08:00
jz4740 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
kernel MIPS: Fix sched_getaffinity with MT FPAFF enabled 2015-08-16 20:51:35 -07:00
kvm MIPS: KVM: Do not sign extend on unsigned MMIO load 2015-08-03 09:29:47 -07:00
lantiq mips: dts: Fix missing device_type="memory" property in memory nodes 2014-06-07 13:25:28 -07:00
lasat procfs: new helper - PDE_DATA(inode) 2013-04-09 14:13:32 -04:00
lib Revert "MIPS: Allow ASID size to be determined at boot time." 2013-05-16 20:35:42 +02:00
loongson MIPS: Loongson: Make platform serial setup always built-in. 2014-12-06 15:05:46 -08:00
loongson1 MIPS: Idle: Consolidate all declarations in <asm/idle.h>. 2013-05-22 01:34:27 +02:00
math-emu MIPS: microMIPS: Floating point support. 2013-05-09 17:55:18 +02:00
mm vm: add VM_FAULT_SIGSEGV handling support 2015-04-29 10:34:00 +02:00
mti-malta Merge branch 'mti-next' of git://git.linux-mips.org/pub/scm/sjhill/linux-sjhill into mips-for-linux-next 2013-05-09 17:57:30 +02:00
mti-sead3 MIPS: Move 'gic_present' to common location. 2013-05-09 17:55:20 +02:00
netlogic MIPS: Idle: Consolidate all declarations in <asm/idle.h>. 2013-05-22 01:34:27 +02:00
oprofile MIPS: oprofile: Fix backtrace on 64-bit kernel 2014-12-06 15:05:46 -08:00
pci Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-05-10 07:48:05 -07:00
pmcs-msp71xx MIPS: Idle: Consolidate all declarations in <asm/idle.h>. 2013-05-22 01:34:27 +02:00
pnx833x MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
power nosave: consolidate __nosave_{begin,end} in <asm/sections.h> 2015-05-06 21:56:28 +02:00
powertv MIPS: FW: Remove obsolete header file for MTI platforms. 2013-05-08 12:30:10 +02:00
ralink mips: dts: Fix missing device_type="memory" property in memory nodes 2014-06-07 13:25:28 -07:00
rb532 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sgi-ip22 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sgi-ip27 Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-05-10 07:48:05 -07:00
sgi-ip32 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sibyte mips: single_open() leaks 2013-05-05 00:10:21 -04:00
sni Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-03-02 07:44:16 -08:00
txx9 MIPS: Idle: Consolidate all declarations in <asm/idle.h>. 2013-05-22 01:34:27 +02:00
vr41xx MIPS: Idle: Consolidate all declarations in <asm/idle.h>. 2013-05-22 01:34:27 +02:00
wrppmc MIPS: Idle: Consolidate all declarations in <asm/idle.h>. 2013-05-22 01:34:27 +02:00
Kbuild KVM/MIPS32: Infrastructure/build files. 2013-05-08 03:55:34 +02:00
Kbuild.platforms Merge branch 'mips-next-3.9' of git://git.linux-mips.org/pub/scm/john/linux-john into mips-for-linux-next 2013-02-21 12:51:33 +01:00
Kconfig MIPS: Expose missing pci_io{map,unmap} declarations 2013-08-14 22:59:10 -07:00
Kconfig.debug Fix typo in various Kconfig file 2012-04-16 14:40:08 +02:00
Makefile MIPS: microMIPS: Add configuration option for microMIPS kernel. 2013-05-09 17:55:19 +02:00