lkml.org 
[lkml]   [2023]   [Jan]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [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

    \
     
     \ /
      Last update: 2023-03-26 23:27    [W:4.535 / U:0.204 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site