32-on-64: Fix is_compat_arg_xlat_range().
authorKeir Fraser <keir.fraser@citrix.com>
Fri, 13 Jun 2008 12:48:13 +0000 (13:48 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Fri, 13 Jun 2008 12:48:13 +0000 (13:48 +0100)
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
xen/include/asm-x86/x86_64/uaccess.h

index 2450af21e3363a89af8ebc0653ba97b134dd6eb3..2080be86b11c6acfb98ebe567e57d958cd02fb6c 100644 (file)
@@ -7,7 +7,8 @@ DECLARE_PER_CPU(char, compat_arg_xlat[COMPAT_ARG_XLAT_SIZE]);
 #define is_compat_arg_xlat_range(addr, size) ({                               \
     unsigned long __off;                                                      \
     __off = (unsigned long)(addr) - (unsigned long)COMPAT_ARG_XLAT_VIRT_BASE; \
-    (__off | (__off + (unsigned long)(size))) <= PAGE_SIZE;                   \
+    (__off <= COMPAT_ARG_XLAT_SIZE) &&                                        \
+    ((__off + (unsigned long)(size)) <= COMPAT_ARG_XLAT_SIZE);                \
 })
 
 /*