On Wed, Dec 22, 2021 at 2:15 AM Arnd Bergmann <arnd@xxxxxxxx> wrote: > > On Tue, Dec 21, 2021 at 5:35 PM <guoren@xxxxxxxxxx> wrote: > > > > From: Guo Ren <guoren@xxxxxxxxxxxxxxxxx> > > > > Implement compat_syscall_table.c with compat_sys_call_table & fixup > > system call such as truncate64,pread64,fallocate which need two > > regs to indicate 64bit-arg (copied from arm64). > > > > Signed-off-by: Guo Ren <guoren@xxxxxxxxxxxxxxxxx> > > --- > > arch/riscv/include/asm/syscall.h | 3 + > > arch/riscv/kernel/compat_syscall_table.c | 84 ++++++++++++++++++++++++ > > Same here, I think most of these should go next to the actual syscalls, with the > duplicates removed from other platforms, Agree, I will try that next version. > > > +#define __SYSCALL_COMPAT > > +#undef __LP64__ > > What is the #undef for? See arch/riscv/include/uapi/asm/unistd.h: #ifdef __LP64__ #define __ARCH_WANT_NEW_STAT #define __ARCH_WANT_SET_GET_RLIMIT #endif /* __LP64__ */ > > > +SYSCALL_DEFINE6(mmap2, unsigned long, addr, unsigned long, len, > > + unsigned long, prot, unsigned long, flags, > > + unsigned long, fd, unsigned long, offset) > > +{ > > + if ((prot & PROT_WRITE) && (prot & PROT_EXEC)) > > + if (unlikely(!(prot & PROT_READ))) > > + return -EINVAL; > > + > > + return ksys_mmap_pgoff(addr, len, prot, flags, fd, offset); > > +} > > This is one that we may have to deal with separately, introducing > sys_mmap_pgoff() was a mistake in my opinion, and we should just have #if __BITS_PER_LONG == 32 || defined(__SYSCALL_COMPAT) #define __SC_3264(_nr, _32, _64) __SYSCALL(_nr, _32) #else #define __SC_3264(_nr, _32, _64) __SYSCALL(_nr, _64) #endif #define __NR3264_mmap 222 __SC_3264(__NR3264_mmap, sys_mmap2, sys_mmap) > added a sys_mmap2() for all architectures that don't explicitly override it. That should be another patch, right? Let's keep it here. > > Arnd -- Best Regards Guo Ren ML: https://lore.kernel.org/linux-csky/