summaryrefslogtreecommitdiffstats
path: root/include/asm-m68knommu
diff options
context:
space:
mode:
authorGreg Ungerer <gerg@snapgear.com>2006-07-13 09:32:41 +1000
committerLinus Torvalds <torvalds@g5.osdl.org>2006-07-13 07:51:48 -0700
commit1b0f06d0b4860a8a73dc0b48540d82d8897ead71 (patch)
treedaeca25611fa75a1439f35b54d1586e24ea77478 /include/asm-m68knommu
parentb43c7cec6bf9558336fb033d1217fc765d259c47 (diff)
downloadlinux-1b0f06d0b4860a8a73dc0b48540d82d8897ead71.tar.gz
linux-1b0f06d0b4860a8a73dc0b48540d82d8897ead71.tar.bz2
linux-1b0f06d0b4860a8a73dc0b48540d82d8897ead71.zip
[PATCH] m68knommu: fix result type in get_user() macro
Keep the result holder variable the same type as the quantity we are retreiving in the get_user() macro - don't go through a pointer version of the user space address type. Using the address type causes problems if the address type was const (newer versions of gcc quite rightly error out for that condition). Signed-off-by: Greg Ungerer <gerg@uclinux.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/asm-m68knommu')
-rw-r--r--include/asm-m68knommu/uaccess.h12
1 files changed, 6 insertions, 6 deletions
diff --git a/include/asm-m68knommu/uaccess.h b/include/asm-m68knommu/uaccess.h
index 05be9515a2d2..62b29b10bc6d 100644
--- a/include/asm-m68knommu/uaccess.h
+++ b/include/asm-m68knommu/uaccess.h
@@ -93,7 +93,7 @@ extern int __put_user_bad(void);
#define get_user(x, ptr) \
({ \
int __gu_err = 0; \
- typeof(*(ptr)) __gu_val = 0; \
+ typeof(x) __gu_val = 0; \
switch (sizeof(*(ptr))) { \
case 1: \
__get_user_asm(__gu_err, __gu_val, ptr, b, "=d"); \
@@ -105,23 +105,23 @@ extern int __put_user_bad(void);
__get_user_asm(__gu_err, __gu_val, ptr, l, "=r"); \
break; \
case 8: \
- memcpy(&__gu_val, ptr, sizeof (*(ptr))); \
+ memcpy((void *) &__gu_val, ptr, sizeof (*(ptr))); \
break; \
default: \
__gu_val = 0; \
__gu_err = __get_user_bad(); \
break; \
} \
- (x) = __gu_val; \
+ (x) = (typeof(*(ptr))) __gu_val; \
__gu_err; \
})
#define __get_user(x, ptr) get_user(x, ptr)
extern int __get_user_bad(void);
-#define __get_user_asm(err,x,ptr,bwl,reg) \
- __asm__ ("move" #bwl " %1,%0" \
- : "=d" (x) \
+#define __get_user_asm(err,x,ptr,bwl,reg) \
+ __asm__ ("move" #bwl " %1,%0" \
+ : "=d" (x) \
: "m" (*__ptr(ptr)))
#define copy_from_user(to, from, n) (memcpy(to, from, n), 0)