|
|
@@ -2628,6 +2628,16 @@ long do_futex(u32 __user *uaddr, int op, u32 val, ktime_t *timeout,
|
|
|
return -ENOSYS;
|
|
|
}
|
|
|
|
|
|
+ switch (cmd) {
|
|
|
+ case FUTEX_LOCK_PI:
|
|
|
+ case FUTEX_UNLOCK_PI:
|
|
|
+ case FUTEX_TRYLOCK_PI:
|
|
|
+ case FUTEX_WAIT_REQUEUE_PI:
|
|
|
+ case FUTEX_CMP_REQUEUE_PI:
|
|
|
+ if (!futex_cmpxchg_enabled)
|
|
|
+ return -ENOSYS;
|
|
|
+ }
|
|
|
+
|
|
|
switch (cmd) {
|
|
|
case FUTEX_WAIT:
|
|
|
val3 = FUTEX_BITSET_MATCH_ANY;
|
|
|
@@ -2649,16 +2659,13 @@ long do_futex(u32 __user *uaddr, int op, u32 val, ktime_t *timeout,
|
|
|
ret = futex_wake_op(uaddr, flags, uaddr2, val, val2, val3);
|
|
|
break;
|
|
|
case FUTEX_LOCK_PI:
|
|
|
- if (futex_cmpxchg_enabled)
|
|
|
- ret = futex_lock_pi(uaddr, flags, val, timeout, 0);
|
|
|
+ ret = futex_lock_pi(uaddr, flags, val, timeout, 0);
|
|
|
break;
|
|
|
case FUTEX_UNLOCK_PI:
|
|
|
- if (futex_cmpxchg_enabled)
|
|
|
- ret = futex_unlock_pi(uaddr, flags);
|
|
|
+ ret = futex_unlock_pi(uaddr, flags);
|
|
|
break;
|
|
|
case FUTEX_TRYLOCK_PI:
|
|
|
- if (futex_cmpxchg_enabled)
|
|
|
- ret = futex_lock_pi(uaddr, flags, 0, timeout, 1);
|
|
|
+ ret = futex_lock_pi(uaddr, flags, 0, timeout, 1);
|
|
|
break;
|
|
|
case FUTEX_WAIT_REQUEUE_PI:
|
|
|
val3 = FUTEX_BITSET_MATCH_ANY;
|