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