2009-06-30 23:19:21

by Anton Blanchard

[permalink] [raw]
Subject: [patch 8/8] powerpc: Fix PCL vdso detection

PCL 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 <[email protected]>
---

Index: linux-2.6-tip/arch/powerpc/kernel/vdso.c
===================================================================
--- linux-2.6-tip.orig/arch/powerpc/kernel/vdso.c 2009-06-30 09:57:23.000000000 +1000
+++ linux-2.6-tip/arch/powerpc/kernel/vdso.c 2009-06-30 09:58:37.000000000 +1000
@@ -235,6 +235,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
@@ -254,11 +261,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;

--


2009-06-30 23:23:46

by Ingo Molnar

[permalink] [raw]
Subject: Re: [patch 8/8] powerpc: Fix PCL vdso detection


* Anton Blanchard <[email protected]> wrote:

> PCL 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.

This too should go via the PowerPC tree i think.

I've applied the rest - nice stuff!!

Ingo