commit 78d05881017eef1e9ea49571c52275dc2935e719
Author: Heiko Carstens <[EMAIL PROTECTED]>
Date:   Thu Mar 20 17:33:38 2008 +0100

    S390 futex: let futex_atomic_cmpxchg_pt survive early functional tests.
    
    a0c1e9073ef7428a14309cba010633a6cd6719ea "futex: runtime enable pi and
    robust functionality" introduces a test wether futex in atomic stuff
    works or not.
    It does that by writing to address 0 of the kernel address space. This
    will crash on older machines where addressing mode switching is enabled
    but where the mvcos instruction is not available. Page table walking is
    done by hand and therefore the code tries to access current->mm which
    is NULL.
    Therefore add an extra check, so we survive the early test.
    
    Signed-off-by: Heiko Carstens <[EMAIL PROTECTED]>
    Signed-off-by: Martin Schwidefsky <[EMAIL PROTECTED]>
    Cc: Thomas Gleixner <[EMAIL PROTECTED]>
    Signed-off-by: Chris Wright <[EMAIL PROTECTED]>

diff --git a/arch/s390/lib/uaccess_pt.c b/arch/s390/lib/uaccess_pt.c
index 7e8efaa..5efdfe9 100644
--- a/arch/s390/lib/uaccess_pt.c
+++ b/arch/s390/lib/uaccess_pt.c
@@ -406,6 +406,8 @@ int futex_atomic_cmpxchg_pt(int __user *uaddr, int oldval, 
int newval)
 {
        int ret;
 
+       if (!current->mm)
+               return -EFAULT;
        spin_lock(&current->mm->page_table_lock);
        uaddr = (int __user *) __dat_user_addr((unsigned long) uaddr);
        if (!uaddr) {
_______________________________________________
unionfs-cvs mailing list: http://unionfs.filesystems.org/
[email protected]
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs-cvs

Reply via email to