summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Borntraeger <borntraeger@de.ibm.com>2014-11-21 16:29:40 +0100
committerChristian Borntraeger <borntraeger@de.ibm.com>2014-12-18 09:54:38 +0100
commit14cf3d977b80f5e355f8ac7547cf1b9ff9fb3e09 (patch)
tree26dff7a852d6e5c5f48c55404662c67cd94c604b
parentx86/spinlock: Replace ACCESS_ONCE with READ_ONCE (diff)
downloadlinux-14cf3d977b80f5e355f8ac7547cf1b9ff9fb3e09.tar.xz
linux-14cf3d977b80f5e355f8ac7547cf1b9ff9fb3e09.zip
x86/gup: Replace ACCESS_ONCE with READ_ONCE
ACCESS_ONCE does not work reliably on non-scalar types. For example gcc 4.6 and 4.7 might remove the volatile tag for such accesses during the SRA (scalar replacement of aggregates) step (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58145) Change the gup code to replace ACCESS_ONCE with READ_ONCE. Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
-rw-r--r--arch/x86/mm/gup.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/mm/gup.c b/arch/x86/mm/gup.c
index 207d9aef662d..d7547824e763 100644
--- a/arch/x86/mm/gup.c
+++ b/arch/x86/mm/gup.c
@@ -15,7 +15,7 @@
static inline pte_t gup_get_pte(pte_t *ptep)
{
#ifndef CONFIG_X86_PAE
- return ACCESS_ONCE(*ptep);
+ return READ_ONCE(*ptep);
#else
/*
* With get_user_pages_fast, we walk down the pagetables without taking