diff options
author | Russell King <rmk+kernel@armlinux.org.uk> | 2016-10-06 09:56:43 +0200 |
---|---|---|
committer | Russell King <rmk+kernel@armlinux.org.uk> | 2016-10-06 09:56:43 +0200 |
commit | 301a36fa700f9add6e14f5a95c7573e01578343a (patch) | |
tree | 6ff94ff3b08b838353b9127eb5f8055b3de6b25f /arch/alpha | |
parent | ARM: 8611/1: l2x0: add PMU support (diff) | |
parent | ARM: sa1111: provide to_sa1111_device() macro (diff) | |
download | linux-301a36fa700f9add6e14f5a95c7573e01578343a.tar.xz linux-301a36fa700f9add6e14f5a95c7573e01578343a.zip |
Merge branches 'misc' and 'sa1111-base' into for-linus
Diffstat (limited to 'arch/alpha')
-rw-r--r-- | arch/alpha/include/asm/uaccess.h | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/arch/alpha/include/asm/uaccess.h b/arch/alpha/include/asm/uaccess.h index c419b43c461d..466e42e96bfa 100644 --- a/arch/alpha/include/asm/uaccess.h +++ b/arch/alpha/include/asm/uaccess.h @@ -371,14 +371,6 @@ __copy_tofrom_user_nocheck(void *to, const void *from, long len) return __cu_len; } -extern inline long -__copy_tofrom_user(void *to, const void *from, long len, const void __user *validate) -{ - if (__access_ok((unsigned long)validate, len, get_fs())) - len = __copy_tofrom_user_nocheck(to, from, len); - return len; -} - #define __copy_to_user(to, from, n) \ ({ \ __chk_user_ptr(to); \ @@ -393,17 +385,22 @@ __copy_tofrom_user(void *to, const void *from, long len, const void __user *vali #define __copy_to_user_inatomic __copy_to_user #define __copy_from_user_inatomic __copy_from_user - extern inline long copy_to_user(void __user *to, const void *from, long n) { - return __copy_tofrom_user((__force void *)to, from, n, to); + if (likely(__access_ok((unsigned long)to, n, get_fs()))) + n = __copy_tofrom_user_nocheck((__force void *)to, from, n); + return n; } extern inline long copy_from_user(void *to, const void __user *from, long n) { - return __copy_tofrom_user(to, (__force void *)from, n, from); + if (likely(__access_ok((unsigned long)from, n, get_fs()))) + n = __copy_tofrom_user_nocheck(to, (__force void *)from, n); + else + memset(to, 0, n); + return n; } extern void __do_clear_user(void); |