Blame view
include/asm-generic/futex.h
1.25 KB
f8aaeacec [PATCH] consolida... |
1 2 |
#ifndef _ASM_GENERIC_FUTEX_H #define _ASM_GENERIC_FUTEX_H |
f8aaeacec [PATCH] consolida... |
3 |
#include <linux/futex.h> |
730f412c0 asm-*/futex.h sho... |
4 |
#include <linux/uaccess.h> |
f8aaeacec [PATCH] consolida... |
5 |
#include <asm/errno.h> |
f8aaeacec [PATCH] consolida... |
6 7 |
static inline int |
8d7718aa0 futex: Sanitize f... |
8 |
futex_atomic_op_inuser (int encoded_op, u32 __user *uaddr) |
f8aaeacec [PATCH] consolida... |
9 10 11 12 13 14 15 16 |
{ 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; |
8d7718aa0 futex: Sanitize f... |
17 |
if (! access_ok (VERIFY_WRITE, uaddr, sizeof(u32))) |
f8aaeacec [PATCH] consolida... |
18 |
return -EFAULT; |
a866374ae [PATCH] mm: pagef... |
19 |
pagefault_disable(); |
f8aaeacec [PATCH] consolida... |
20 21 22 23 24 25 26 27 28 29 |
switch (op) { case FUTEX_OP_SET: case FUTEX_OP_ADD: case FUTEX_OP_OR: case FUTEX_OP_ANDN: case FUTEX_OP_XOR: default: ret = -ENOSYS; } |
a866374ae [PATCH] mm: pagef... |
30 |
pagefault_enable(); |
f8aaeacec [PATCH] consolida... |
31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
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; } } return ret; } |
e9056f13b [PATCH] lightweig... |
45 |
static inline int |
8d7718aa0 futex: Sanitize f... |
46 47 |
futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, u32 oldval, u32 newval) |
e9056f13b [PATCH] lightweig... |
48 49 50 |
{ return -ENOSYS; } |
f8aaeacec [PATCH] consolida... |
51 |
#endif |