Messages in this thread | | | Date | Tue, 08 Sep 2020 21:59:24 -0700 (PDT) | Subject | Re: [PATCH 5/8] riscv: use memcpy based uaccess for nommu again | From | Palmer Dabbelt <> |
| |
On Sun, 06 Sep 2020 22:58:22 PDT (-0700), Christoph Hellwig wrote: > This reverts commit adccfb1a805ea84d2db38eb53032533279bdaa97. > > Now that the generic uaccess by mempcy code handles unaligned addresses > the generic code can be used for all RISC-V CPUs. > > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- > arch/riscv/Kconfig | 1 + > arch/riscv/include/asm/uaccess.h | 36 ++++++++++++++++---------------- > arch/riscv/lib/Makefile | 2 +- > 3 files changed, 20 insertions(+), 19 deletions(-) > > diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig > index 07d53044013ede..460e3971a80fde 100644 > --- a/arch/riscv/Kconfig > +++ b/arch/riscv/Kconfig > @@ -87,6 +87,7 @@ config RISCV > select SYSCTL_EXCEPTION_TRACE > select THREAD_INFO_IN_TASK > select SET_FS > + select UACCESS_MEMCPY if !MMU > > config ARCH_MMAP_RND_BITS_MIN > default 18 if 64BIT > diff --git a/arch/riscv/include/asm/uaccess.h b/arch/riscv/include/asm/uaccess.h > index f56c66b3f5fe21..e8eedf22e90747 100644 > --- a/arch/riscv/include/asm/uaccess.h > +++ b/arch/riscv/include/asm/uaccess.h > @@ -13,24 +13,6 @@ > /* > * User space memory access functions > */ > - > -extern unsigned long __must_check __asm_copy_to_user(void __user *to, > - const void *from, unsigned long n); > -extern unsigned long __must_check __asm_copy_from_user(void *to, > - const void __user *from, unsigned long n); > - > -static inline unsigned long > -raw_copy_from_user(void *to, const void __user *from, unsigned long n) > -{ > - return __asm_copy_from_user(to, from, n); > -} > - > -static inline unsigned long > -raw_copy_to_user(void __user *to, const void *from, unsigned long n) > -{ > - return __asm_copy_to_user(to, from, n); > -} > - > #ifdef CONFIG_MMU > #include <linux/errno.h> > #include <linux/compiler.h> > @@ -385,6 +367,24 @@ do { \ > -EFAULT; \ > }) > > + > +unsigned long __must_check __asm_copy_to_user(void __user *to, > + const void *from, unsigned long n); > +unsigned long __must_check __asm_copy_from_user(void *to, > + const void __user *from, unsigned long n); > + > +static inline unsigned long > +raw_copy_from_user(void *to, const void __user *from, unsigned long n) > +{ > + return __asm_copy_from_user(to, from, n); > +} > + > +static inline unsigned long > +raw_copy_to_user(void __user *to, const void *from, unsigned long n) > +{ > + return __asm_copy_to_user(to, from, n); > +} > + > extern long strncpy_from_user(char *dest, const char __user *src, long count); > > extern long __must_check strlen_user(const char __user *str); > diff --git a/arch/riscv/lib/Makefile b/arch/riscv/lib/Makefile > index 0d0db80800c4ed..47e7a82044608d 100644 > --- a/arch/riscv/lib/Makefile > +++ b/arch/riscv/lib/Makefile > @@ -2,5 +2,5 @@ > lib-y += delay.o > lib-y += memcpy.o > lib-y += memset.o > -lib-y += uaccess.o > +lib-$(CONFIG_MMU) += uaccess.o > lib-$(CONFIG_64BIT) += tishift.o
Reviewed-by: Palmer Dabbelt <palmerdabbelt@google.com> Acked-by: Palmer Dabbelt <palmerdabbelt@google.com>
| |