On Fri, Feb 3, 2023, at 20:04, Nhat Pham wrote: > +SYSCALL_DEFINE5(cachestat, unsigned int, fd, loff_t, off, size_t, len, > + struct cachestat __user *, cstat, unsigned int, flags) > +{ > + return ksys_cachestat(fd, off, len, cstat, flags); > +} > + > +#ifdef CONFIG_COMPAT > +COMPAT_SYSCALL_DEFINE6(cachestat, unsigned int, fd, > compat_arg_u64_dual(off), > + size_t, len, struct cachestat __user *, cstat, unsigned int, flags) > +{ > + return ksys_cachestat(fd, compat_arg_u64_glue(off), len, cstat, > flags); > +} This still looks wrong to me, as this compat definition does not match the native variant on architectures that require 64-bit arguments to be passed in aligned register pairs, such as arm, mips or ppc, but not x86, s390 or riscv. Arnd