Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f0ede66fca23cfee4ee80b48298007d930f49bbe
Commit:     f0ede66fca23cfee4ee80b48298007d930f49bbe
Parent:     b9e82af823c10d8f981072e0d7c3a8a31f73e0bd
Author:     Ulrich Drepper <[EMAIL PROTECTED]>
AuthorDate: Fri Jun 1 00:46:41 2007 -0700
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Fri Jun 1 08:18:28 2007 -0700

    fix compat futex code for private futexes
    
    When the private futex support was added the compat code wasn't changed.
    The result is that code using compat code which fail, e.g., because the
    timeout values are not correctly passed.  The following patch should fix
    that.
    
    Signed-off-by: Ulrich Drepper <[EMAIL PROTECTED]>
    Cc: Eric Dumazet <[EMAIL PROTECTED]>
    Cc: Ingo Molnar <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 kernel/futex_compat.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/kernel/futex_compat.c b/kernel/futex_compat.c
index 338a9b4..2747894 100644
--- a/kernel/futex_compat.c
+++ b/kernel/futex_compat.c
@@ -144,20 +144,21 @@ asmlinkage long compat_sys_futex(u32 __user *uaddr, int 
op, u32 val,
        struct timespec ts;
        ktime_t t, *tp = NULL;
        int val2 = 0;
+       int cmd = op & FUTEX_CMD_MASK;
 
-       if (utime && (op == FUTEX_WAIT || op == FUTEX_LOCK_PI)) {
+       if (utime && (cmd == FUTEX_WAIT || cmd == FUTEX_LOCK_PI)) {
                if (get_compat_timespec(&ts, utime))
                        return -EFAULT;
                if (!timespec_valid(&ts))
                        return -EINVAL;
 
                t = timespec_to_ktime(ts);
-               if (op == FUTEX_WAIT)
+               if (cmd == FUTEX_WAIT)
                        t = ktime_add(ktime_get(), t);
                tp = &t;
        }
-       if (op == FUTEX_REQUEUE || op == FUTEX_CMP_REQUEUE
-           || op == FUTEX_CMP_REQUEUE_PI)
+       if (cmd == FUTEX_REQUEUE || cmd == FUTEX_CMP_REQUEUE
+           || cmd == FUTEX_CMP_REQUEUE_PI)
                val2 = (int) (unsigned long) utime;
 
        return do_futex(uaddr, op, val, tp, uaddr2, val2, val3);
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to