Merge branch 'thorsten' into docs-next
[sfrench/cifs-2.6.git] / arch / alpha / include / asm / uaccess.h
index e69c4e13c3283577579e21239653a01bef64fd26..cf4ac791a592fdf8dc595e9407182c85bdac4243 100644 (file)
  * Address valid if:
  *  - "addr" doesn't have any high-bits set
  *  - AND "size" doesn't have any high-bits set
- *  - AND "addr+size" doesn't have any high-bits set
+ *  - AND "addr+size-(size != 0)" doesn't have any high-bits set
  *  - OR we are in kernel mode.
  */
-#define __access_ok(addr, size) \
-       ((get_fs().seg & (addr | size | (addr+size))) == 0)
+#define __access_ok(addr, size) ({                             \
+       unsigned long __ao_a = (addr), __ao_b = (size);         \
+       unsigned long __ao_end = __ao_a + __ao_b - !!__ao_b;    \
+       (get_fs().seg & (__ao_a | __ao_b | __ao_end)) == 0; })
 
 #define access_ok(addr, size)                          \
 ({                                                     \