diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-06-15 11:35:01 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-06-19 16:55:16 +0200 |
commit | 0c87197142427063e096f11603543ca874045952 (patch) | |
tree | 0382a5fbe462f5a88056b3f4e7b460e82f4795bb /arch/x86/mm | |
parent | e5289d4a181fb6c0b7a7607649af2ffdc491335c (diff) | |
download | op-kernel-dev-0c87197142427063e096f11603543ca874045952.zip op-kernel-dev-0c87197142427063e096f11603543ca874045952.tar.gz |
perf_counter, x86: Improve interactions with fast-gup
Improve a few details in perfcounter call-chain recording that
makes use of fast-GUP:
- Use ACCESS_ONCE() to observe the pte value. ptes are fundamentally
racy and can be changed on another CPU, so we have to be careful
about how we access them. The PAE branch is already careful with
read-barriers - but the non-PAE and 64-bit side needs an
ACCESS_ONCE() to make sure the pte value is observed only once.
- make the checks a bit stricter so that we can feed it any kind of
cra^H^H^H user-space input ;-)
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/mm')
-rw-r--r-- | arch/x86/mm/gup.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/mm/gup.c b/arch/x86/mm/gup.c index 697d572..2d1d784 100644 --- a/arch/x86/mm/gup.c +++ b/arch/x86/mm/gup.c @@ -14,7 +14,7 @@ static inline pte_t gup_get_pte(pte_t *ptep) { #ifndef CONFIG_X86_PAE - return *ptep; + return ACCESS_ONCE(*ptep); #else /* * With get_user_pages_fast, we walk down the pagetables without taking |