diff options
Diffstat (limited to 'arch/s390/lib/uaccess_std.c')
| -rw-r--r-- | arch/s390/lib/uaccess_std.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/s390/lib/uaccess_std.c b/arch/s390/lib/uaccess_std.c index a6c4f7ed24a4..bb1a7eed42ce 100644 --- a/arch/s390/lib/uaccess_std.c +++ b/arch/s390/lib/uaccess_std.c @@ -255,7 +255,7 @@ size_t strncpy_from_user_std(size_t size, const char __user *src, char *dst)  		: "0" (-EFAULT), "d" (oparg), "a" (uaddr),		\  		  "m" (*uaddr) : "cc"); -int futex_atomic_op_std(int op, int __user *uaddr, int oparg, int *old) +int futex_atomic_op_std(int op, u32 __user *uaddr, int oparg, int *old)  {  	int oldval = 0, newval, ret; @@ -287,19 +287,21 @@ int futex_atomic_op_std(int op, int __user *uaddr, int oparg, int *old)  	return ret;  } -int futex_atomic_cmpxchg_std(int __user *uaddr, int oldval, int newval) +int futex_atomic_cmpxchg_std(u32 *uval, u32 __user *uaddr, +			     u32 oldval, u32 newval)  {  	int ret;  	asm volatile(  		"   sacf 256\n"  		"0: cs   %1,%4,0(%5)\n" -		"1: lr   %0,%1\n" +		"1: la   %0,0\n"  		"2: sacf 0\n"  		EX_TABLE(0b,2b) EX_TABLE(1b,2b)  		: "=d" (ret), "+d" (oldval), "=m" (*uaddr)  		: "0" (-EFAULT), "d" (newval), "a" (uaddr), "m" (*uaddr)  		: "cc", "memory" ); +	*uval = oldval;  	return ret;  }  | 
