]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
[S390] perf_counter: fix vdso detection
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Tue, 6 Oct 2009 08:34:08 +0000 (10:34 +0200)
committerMartin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com>
Tue, 6 Oct 2009 08:35:09 +0000 (10:35 +0200)
s390 version of f2053f1a "powerpc/perf_counter: Fix vdso detection".

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/vdso.c

index 45a3e9a7ae21db6f5705eac145fe62790e4c5b0f..adfb32aa6d59a9b31ae5ac84d9134d360e5fadf5 100644 (file)
@@ -246,6 +246,13 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
                goto out_up;
        }
 
+       /*
+        * 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.
@@ -267,14 +274,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
                                     VM_ALWAYSDUMP,
                                     vdso_pagelist);
        if (rc)
-               goto out_up;
-
-       /* Put vDSO base into mm struct */
-       current->mm->context.vdso_base = vdso_base;
-
-       up_write(&mm->mmap_sem);
-       return 0;
-
+               current->mm->context.vdso_base = 0;
 out_up:
        up_write(&mm->mmap_sem);
        return rc;