| From 0b5d6273491a3b5dc69b794b0e6c678884f68157 Mon Sep 17 00:00:00 2001 |
| From: Al Viro <viro@zeniv.linux.org.uk> |
| Date: Wed, 22 Mar 2017 13:08:32 -0400 |
| Subject: [PATCH 102/103] nios2: switch to RAW_COPY_USER |
| |
| Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> |
| --- |
| arch/nios2/Kconfig | 1 + |
| arch/nios2/include/asm/uaccess.h | 31 ++++++------------------------- |
| arch/nios2/mm/uaccess.c | 16 ++++++++-------- |
| 3 files changed, 15 insertions(+), 33 deletions(-) |
| |
| --- a/arch/nios2/Kconfig |
| +++ b/arch/nios2/Kconfig |
| @@ -16,6 +16,7 @@ config NIOS2 |
| select SPARSE_IRQ |
| select USB_ARCH_HAS_HCD if USB_SUPPORT |
| select CPU_NO_EFFICIENT_FFS |
| + select ARCH_HAS_RAW_COPY_USER |
| |
| config GENERIC_CSUM |
| def_bool y |
| --- a/arch/nios2/include/asm/uaccess.h |
| +++ b/arch/nios2/include/asm/uaccess.h |
| @@ -95,36 +95,17 @@ static inline unsigned long __must_check |
| return __clear_user(to, n); |
| } |
| |
| -extern long __copy_from_user(void *to, const void __user *from, |
| - unsigned long n); |
| -extern long __copy_to_user(void __user *to, const void *from, unsigned long n); |
| - |
| -static inline long copy_from_user(void *to, const void __user *from, |
| - unsigned long n) |
| -{ |
| - unsigned long res = n; |
| - if (access_ok(VERIFY_READ, from, n)) |
| - res = __copy_from_user(to, from, n); |
| - if (unlikely(res)) |
| - memset(to + (n - res), 0, res); |
| - return res; |
| -} |
| - |
| -static inline long copy_to_user(void __user *to, const void *from, |
| - unsigned long n) |
| -{ |
| - if (!access_ok(VERIFY_WRITE, to, n)) |
| - return n; |
| - return __copy_to_user(to, from, n); |
| -} |
| +extern unsigned long |
| +raw_copy_from_user(void *to, const void __user *from, unsigned long n); |
| +extern unsigned long |
| +raw_copy_to_user(void __user *to, const void *from, unsigned long n); |
| +#define INLINE_COPY_FROM_USER |
| +#define INLINE_COPY_TO_USER |
| |
| extern long strncpy_from_user(char *__to, const char __user *__from, |
| long __len); |
| extern long strnlen_user(const char __user *s, long n); |
| |
| -#define __copy_from_user_inatomic __copy_from_user |
| -#define __copy_to_user_inatomic __copy_to_user |
| - |
| /* Optimized macros */ |
| #define __get_user_asm(val, insn, addr, err) \ |
| { \ |
| --- a/arch/nios2/mm/uaccess.c |
| +++ b/arch/nios2/mm/uaccess.c |
| @@ -10,9 +10,9 @@ |
| #include <linux/export.h> |
| #include <linux/uaccess.h> |
| |
| -asm(".global __copy_from_user\n" |
| - " .type __copy_from_user, @function\n" |
| - "__copy_from_user:\n" |
| +asm(".global raw_copy_from_user\n" |
| + " .type raw_copy_from_user, @function\n" |
| + "raw_copy_from_user:\n" |
| " movi r2,7\n" |
| " mov r3,r4\n" |
| " bge r2,r6,1f\n" |
| @@ -65,12 +65,12 @@ asm(".global __copy_from_user\n" |
| ".word 7b,13b\n" |
| ".previous\n" |
| ); |
| -EXPORT_SYMBOL(__copy_from_user); |
| +EXPORT_SYMBOL(raw_copy_from_user); |
| |
| asm( |
| - " .global __copy_to_user\n" |
| - " .type __copy_to_user, @function\n" |
| - "__copy_to_user:\n" |
| + " .global raw_copy_to_user\n" |
| + " .type raw_copy_to_user, @function\n" |
| + "raw_copy_to_user:\n" |
| " movi r2,7\n" |
| " mov r3,r4\n" |
| " bge r2,r6,1f\n" |
| @@ -127,7 +127,7 @@ asm( |
| ".word 11b,13b\n" |
| ".word 12b,13b\n" |
| ".previous\n"); |
| -EXPORT_SYMBOL(__copy_to_user); |
| +EXPORT_SYMBOL(raw_copy_to_user); |
| |
| long strncpy_from_user(char *__to, const char __user *__from, long __len) |
| { |