Messages in this thread | | | Date | Tue, 08 Sep 2020 21:59:27 -0700 (PDT) | Subject | Re: [PATCH 7/8] riscv: implement __get_kernel_nofault and __put_user_nofault | From | Palmer Dabbelt <> |
| |
On Sun, 06 Sep 2020 22:58:24 PDT (-0700), Christoph Hellwig wrote: > Implement the non-faulting kernel access helpers directly instead of > abusing the uaccess routines under set_fs(KERNEL_DS). > > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- > arch/riscv/include/asm/uaccess.h | 20 ++++++++++++++++++++ > 1 file changed, 20 insertions(+) > > diff --git a/arch/riscv/include/asm/uaccess.h b/arch/riscv/include/asm/uaccess.h > index b67d1c616ec348..264e52fb62b143 100644 > --- a/arch/riscv/include/asm/uaccess.h > +++ b/arch/riscv/include/asm/uaccess.h > @@ -486,6 +486,26 @@ unsigned long __must_check clear_user(void __user *to, unsigned long n) > __ret; \ > }) > > +#define HAVE_GET_KERNEL_NOFAULT > + > +#define __get_kernel_nofault(dst, src, type, err_label) \ > +do { \ > + long __kr_err; \ > + \ > + __get_user_nocheck(*((type *)(dst)), (type *)(src), __kr_err); \ > + if (unlikely(__kr_err)) \ > + goto err_label; \ > +} while (0) > + > +#define __put_kernel_nofault(dst, src, type, err_label) \ > +do { \ > + long __kr_err; \ > + \ > + __put_user_nocheck(*((type *)(dst)), (type *)(src), __kr_err); \ > + if (unlikely(__kr_err)) \ > + goto err_label; \ > +} while (0) > + > #else /* CONFIG_MMU */ > #include <asm-generic/uaccess.h> > #endif /* CONFIG_MMU */
Reviewed-by: Palmer Dabbelt <palmerdabbelt@google.com> Acked-by: Palmer Dabbelt <palmerdabbelt@google.com>
| |