summaryrefslogtreecommitdiffstats
path: root/include/asm-sparc/uaccess.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-sparc/uaccess.h')
-rw-r--r--include/asm-sparc/uaccess.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/include/asm-sparc/uaccess.h b/include/asm-sparc/uaccess.h
index 638e234a0..3f4a58601 100644
--- a/include/asm-sparc/uaccess.h
+++ b/include/asm-sparc/uaccess.h
@@ -318,11 +318,14 @@ if (__copy_to_user(to,from,n)) \
})
#define copy_from_user(to,from,n) ({ \
+void *__copy_to = (void *) (to); \
void *__copy_from = (void *) (from); \
__kernel_size_t __copy_size = (__kernel_size_t) (n); \
__kernel_size_t __copy_res; \
if(__copy_size && __access_ok((unsigned long)__copy_from, __copy_size)) { \
-__copy_res = __copy_user((void *) (to), __copy_from, __copy_size); \
+__copy_res = __copy_user(__copy_to, __copy_from, __copy_size); \
+if(__copy_res) \
+memset((char *)__copy_to + __copy_size - __copy_res, 0, __copy_res); \
} else __copy_res = __copy_size; \
__copy_res; })