Messages in this thread | | | Date | Wed, 04 Jan 2023 16:07:32 +0100 | From | "Arnd Bergmann" <> | Subject | Re: [RFC PATCH 12/25] kvx: Add system call support |
| |
On Tue, Jan 3, 2023, at 17:43, Yann Sionneau wrote:
> + > +/* > + * Ensure that the range [addr, addr+size) is within the process's > + * address space > + */ > +static inline int __access_ok(unsigned long addr, unsigned long size) > +{ > + return size <= TASK_SIZE && addr <= TASK_SIZE - size; > +}
This is the same as the generic version, so just use that instead.
> +#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 *)(src)), (type *)(dst), __kr_err); \ > + if (unlikely(__kr_err)) \ > + goto err_label; \ > +} while (0)
The wrapper around __get_user_nocheck/__put_user_nocheck is not ideal here. Since I think you only support new compilers anyway, you can use the asm-goto-with-output feature to define the asm to branch to the label directly, and use the same thing to build __get_user()/__put_user().
> +++ b/arch/kvx/include/uapi/asm/unistd.h > @@ -0,0 +1,16 @@
> + > +#define __ARCH_WANT_RENAMEAT > +#define __ARCH_WANT_NEW_STAT > +#define __ARCH_WANT_SET_GET_RLIMIT > +#define __ARCH_WANT_SYS_CLONE3
It's good to have clone3() but the other three sets of syscalls should no longer be defined for new architectures, so please remove those.
Arnd
| |