Messages in this thread Patch in this message | | | Date | Wed, 01 Jul 2009 09:00:51 +1000 | From | Anton Blanchard <> | 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 <anton@samba.org> ---
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; --
| |