Messages in this thread | | | Subject | Re: [PATCH 10/11] powerpc: use non-set_fs based maccess routines | From | Christophe Leroy <> | Date | Mon, 17 Aug 2020 17:47:55 +0200 |
| |
Le 17/08/2020 à 09:32, Christoph Hellwig a écrit : > Provide __get_kernel_nofault and __put_kernel_nofault routines to > implement the maccess routines without messing with set_fs and without > opening up access to user space.
__get_user_size() opens access to user space. You have to use __get_user_size_allowed() when user access is already allowed (or when not needed to allow it).
Christophe
> > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- > arch/powerpc/include/asm/uaccess.h | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/arch/powerpc/include/asm/uaccess.h b/arch/powerpc/include/asm/uaccess.h > index 00699903f1efca..a31de40ac00b62 100644 > --- a/arch/powerpc/include/asm/uaccess.h > +++ b/arch/powerpc/include/asm/uaccess.h > @@ -623,4 +623,20 @@ do { \ > __put_user_goto(*(u8*)(_src + _i), (u8 __user *)(_dst + _i), e);\ > } while (0) > > +#define HAVE_GET_KERNEL_NOFAULT > + > +#define __get_kernel_nofault(dst, src, type, err_label) \ > +do { \ > + int __kr_err; \ > + \ > + __get_user_size(*((type *)(dst)), (__force type __user *)(src), \ > + sizeof(type), __kr_err); \ > + if (unlikely(__kr_err)) \ > + goto err_label; \ > +} while (0) > + > +#define __put_kernel_nofault(dst, src, type, err_label) \ > + __put_user_size_goto(*((type *)(src)), \ > + (__force type __user *)(dst), sizeof(type), err_label) > + > #endif /* _ARCH_POWERPC_UACCESS_H */ >
| |