m68k: Make sys_atomic_cmpxchg_32 work on classic m68k

User space access must always go through uaccess accessors, since on
classic m68k user space and kernel space are completely separate.

Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
Tested-by: Thorsten Glaser <tg@debian.org>
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: stable@vger.kernel.org
This commit is contained in:
Andreas Schwab 2012-07-28 00:20:34 +02:00 committed by Geert Uytterhoeven
parent 1525e06e44
commit 9e2760d18b

View File

@ -479,9 +479,13 @@ sys_atomic_cmpxchg_32(unsigned long newval, int oldval, int d3, int d4, int d5,
goto bad_access; 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) if (mem_value == oldval)
*mem = newval; __put_user(newval, mem);
pte_unmap_unlock(pte, ptl); pte_unmap_unlock(pte, ptl);
up_read(&mm->mmap_sem); up_read(&mm->mmap_sem);