X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=kernel%2Ffutex_compat.c;h=27478948b318968a052e4b9fad9a27dd881ca67f;hb=f0ede66fca23cfee4ee80b48298007d930f49bbe;hp=338a9b489fbc34fc2ca2ceeecd19f44f2889dd21;hpb=2ecf042ef530dd0943e41d84b6344f507941af3e;p=powerpc.git diff --git a/kernel/futex_compat.c b/kernel/futex_compat.c index 338a9b489f..27478948b3 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);