From: Ralf Baechle Date: Mon, 27 Apr 2009 13:31:34 +0000 (+0200) Subject: MIPS: Make access_ok() sideeffect proof. X-Git-Tag: v2.6.30-rc6~13^2~14 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d0aab922b19aaaef13c946236cc71ab9b7f895ee;p=platform%2Fkernel%2Flinux-3.10.git MIPS: Make access_ok() sideeffect proof. Signed-off-by: Ralf Baechle --- diff --git a/arch/mips/include/asm/uaccess.h b/arch/mips/include/asm/uaccess.h index 09ff5bb..42b9cec 100644 --- a/arch/mips/include/asm/uaccess.h +++ b/arch/mips/include/asm/uaccess.h @@ -104,11 +104,21 @@ #define __access_mask get_fs().seg -#define __access_ok(addr, size, mask) \ - (((signed long)((mask) & ((addr) | ((addr) + (size)) | __ua_size(size)))) == 0) +#define __access_ok(addr, size, mask) \ +({ \ + const volatile void __user *__up = addr; \ + unsigned long __addr = (unsigned long) __up; \ + unsigned long __size = size; \ + unsigned long __mask = mask; \ + unsigned long __ok; \ + \ + __ok = (signed long)(__mask & (__addr | (__addr + __size) | \ + __ua_size(__size))); \ + __ok == 0; \ +}) #define access_ok(type, addr, size) \ - likely(__access_ok((unsigned long)(addr), (size), __access_mask)) + likely(__access_ok((addr), (size), __access_mask)) /* * put_user: - Write a simple value into user space.