With the introduction of syscall wrappers all wrappers for syscalls with
64-bit arguments must be handled specially, not only those that have
unaligned 64-bit arguments. This left out the fallocate() and
sync_file_range2() syscalls.
Fixes: 7e92e01b7245 ("powerpc: Provide syscall wrapper")
Fixes: e23750623835 ("powerpc/32: fix syscall wrappers with 64-bit arguments of unaligned register-pairs")
Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/87mt9cxd6g.fsf_-_@igel.home
                         unsigned long len1, unsigned long len2);
 long sys_ppc32_fadvise64(int fd, u32 unused, u32 offset1, u32 offset2,
                         size_t len, int advice);
+long sys_ppc_sync_file_range2(int fd, unsigned int flags,
+                             unsigned int offset1,
+                             unsigned int offset2,
+                             unsigned int nbytes1,
+                             unsigned int nbytes2);
+long sys_ppc_fallocate(int fd, int mode, u32 offset1, u32 offset2,
+                      u32 len1, u32 len2);
 #endif
 #ifdef CONFIG_COMPAT
 long compat_sys_mmap2(unsigned long addr, size_t len,
 
                                 advice);
 }
 
-COMPAT_SYSCALL_DEFINE6(ppc_sync_file_range2,
+PPC32_SYSCALL_DEFINE6(ppc_sync_file_range2,
                       int, fd, unsigned int, flags,
                       unsigned int, offset1, unsigned int, offset2,
                       unsigned int, nbytes1, unsigned int, nbytes2)
 
        return ksys_sync_file_range(fd, offset, nbytes, flags);
 }
+
+#ifdef CONFIG_PPC32
+SYSCALL_DEFINE6(ppc_fallocate,
+               int, fd, int, mode,
+               u32, offset1, u32, offset2, u32, len1, u32, len2)
+{
+       return ksys_fallocate(fd, mode,
+                             merge_64(offset1, offset2),
+                             merge_64(len1, len2));
+}
+#endif
 
 305    common  signalfd                        sys_signalfd                    compat_sys_signalfd
 306    common  timerfd_create                  sys_timerfd_create
 307    common  eventfd                         sys_eventfd
-308    common  sync_file_range2                sys_sync_file_range2            compat_sys_ppc_sync_file_range2
-309    nospu   fallocate                       sys_fallocate                   compat_sys_fallocate
+308    32      sync_file_range2                sys_ppc_sync_file_range2        compat_sys_ppc_sync_file_range2
+308    64      sync_file_range2                sys_sync_file_range2
+308    spu     sync_file_range2                sys_sync_file_range2
+309    32      fallocate                       sys_ppc_fallocate               compat_sys_fallocate
+309    64      fallocate                       sys_fallocate
 310    nospu   subpage_prot                    sys_subpage_prot
 311    32      timerfd_settime                 sys_timerfd_settime32
 311    64      timerfd_settime                 sys_timerfd_settime