Browse Source

perf_counter: Add mmap event hooks to mprotect()

Some JIT compilers allocate memory for generated code with
posix_memalign() + mprotect() so we need to hook into mprotect()
to make sure 'perf' is aware that we're executing code in
anonymous memory.

[ penberg@cs.helsinki.fi: move the hook to sys_mprotect() ]
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
LKML-Reference: <Pine.LNX.4.64.0906082111030.12407@melkki.cs.Helsinki.FI>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Peter Zijlstra 16 years ago
parent
commit
dab5855b12
1 changed files with 2 additions and 0 deletions
  1. 2 0
      mm/mprotect.c

+ 2 - 0
mm/mprotect.c

@@ -23,6 +23,7 @@
 #include <linux/swapops.h>
 #include <linux/swapops.h>
 #include <linux/mmu_notifier.h>
 #include <linux/mmu_notifier.h>
 #include <linux/migrate.h>
 #include <linux/migrate.h>
+#include <linux/perf_counter.h>
 #include <asm/uaccess.h>
 #include <asm/uaccess.h>
 #include <asm/pgtable.h>
 #include <asm/pgtable.h>
 #include <asm/cacheflush.h>
 #include <asm/cacheflush.h>
@@ -299,6 +300,7 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
 		error = mprotect_fixup(vma, &prev, nstart, tmp, newflags);
 		error = mprotect_fixup(vma, &prev, nstart, tmp, newflags);
 		if (error)
 		if (error)
 			goto out;
 			goto out;
+		perf_counter_mmap(vma);
 		nstart = tmp;
 		nstart = tmp;
 
 
 		if (nstart < prev->vm_end)
 		if (nstart < prev->vm_end)