summaryrefslogtreecommitdiff
path: root/arch/ia64
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2018-05-30 11:03:51 +0100
committerMark Brown <broonie@kernel.org>2018-05-30 11:03:51 +0100
commit031155013b5ac4b5a86f7c7d87ed4b379f62ff21 (patch)
tree3127ba78a133c7b4a8e95261ad6aaeeb6ff0b40c /arch/ia64
parent0e7fcfff8dc3b5f08f0bee84ce00d3234992e0d2 (diff)
parent712a231848027a1728d90784cc1f7aec6c017abd (diff)
Merge tag 'v4.4.134' into linux-linaro-lsk-v4.4
This is the 4.4.134 stable release
Diffstat (limited to 'arch/ia64')
-rw-r--r--arch/ia64/include/asm/futex.h25
1 files changed, 4 insertions, 21 deletions
diff --git a/arch/ia64/include/asm/futex.h b/arch/ia64/include/asm/futex.h
index 76acbcd5c060..6d67dc1eaf2b 100644
--- a/arch/ia64/include/asm/futex.h
+++ b/arch/ia64/include/asm/futex.h
@@ -45,18 +45,9 @@ do { \
} while (0)
static inline int
-futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr)
+arch_futex_atomic_op_inuser(int op, int oparg, int *oval, u32 __user *uaddr)
{
- int op = (encoded_op >> 28) & 7;
- int cmp = (encoded_op >> 24) & 15;
- int oparg = (encoded_op << 8) >> 20;
- int cmparg = (encoded_op << 20) >> 20;
int oldval = 0, ret;
- if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
- oparg = 1 << oparg;
-
- if (! access_ok (VERIFY_WRITE, uaddr, sizeof(u32)))
- return -EFAULT;
pagefault_disable();
@@ -84,17 +75,9 @@ futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr)
pagefault_enable();
- if (!ret) {
- switch (cmp) {
- case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
- case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
- case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
- case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
- case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
- case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
- default: ret = -ENOSYS;
- }
- }
+ if (!ret)
+ *oval = oldval;
+
return ret;
}