diff options
Diffstat (limited to 'arch/m68k/kernel/sys_m68k.c')
| -rw-r--r-- | arch/m68k/kernel/sys_m68k.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/m68k/kernel/sys_m68k.c b/arch/m68k/kernel/sys_m68k.c index 8623f8dc16f..9a5932ec368 100644 --- a/arch/m68k/kernel/sys_m68k.c +++ b/arch/m68k/kernel/sys_m68k.c @@ -479,9 +479,13 @@ sys_atomic_cmpxchg_32(unsigned long newval, int oldval, int d3, int d4, int d5,  			goto bad_access;  		} -		mem_value = *mem; +		/* +		 * No need to check for EFAULT; we know that the page is +		 * present and writable. +		 */ +		__get_user(mem_value, mem);  		if (mem_value == oldval) -			*mem = newval; +			__put_user(newval, mem);  		pte_unmap_unlock(pte, ptl);  		up_read(&mm->mmap_sem);  |