* [PATCH] powerpc/perf_counter: Fix vdso detection
@ 2009-09-22 2:57 Anton Blanchard
0 siblings, 0 replies; only message in thread
From: Anton Blanchard @ 2009-09-22 2:57 UTC (permalink / raw)
To: paulus, benh, a.p.zijlstra, mingo; +Cc: linuxppc-dev
perf_counter uses arch_vma_name() to detect a vdso region which in turn uses
current->mm->context.vdso_base. We need to initialise this before doing
the mmap or else we fail to detect the vdso.
Signed-off-by: Anton Blanchard <anton@samba.org>
---
Index: linux.trees.git/arch/powerpc/kernel/vdso.c
===================================================================
--- linux.trees.git.orig/arch/powerpc/kernel/vdso.c 2009-07-15 10:00:41.000000000 +1000
+++ linux.trees.git/arch/powerpc/kernel/vdso.c 2009-07-15 10:01:40.000000000 +1000
@@ -240,6 +240,13 @@
}
/*
+ * Put vDSO base into mm struct. We need to do this before calling
+ * install_special_mapping or the perf counter mmap tracking code
+ * will fail to recognise it as a vDSO (since arch_vma_name fails).
+ */
+ current->mm->context.vdso_base = vdso_base;
+
+ /*
* our vma flags don't have VM_WRITE so by default, the process isn't
* allowed to write those pages.
* gdb can break that with ptrace interface, and thus trigger COW on
@@ -259,11 +266,10 @@
VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC|
VM_ALWAYSDUMP,
vdso_pagelist);
- if (rc)
+ if (rc) {
+ current->mm->context.vdso_base = 0;
goto fail_mmapsem;
-
- /* Put vDSO base into mm struct */
- current->mm->context.vdso_base = vdso_base;
+ }
up_write(&mm->mmap_sem);
return 0;
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2009-09-22 2:57 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-22 2:57 [PATCH] powerpc/perf_counter: Fix vdso detection Anton Blanchard
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.