While working on a glibc patch to support the fstatat() functions[1], I noticed that the o32 implementation behaves differently on 32-bit and 64-bit kernels; the former provides a stat64 while the latter provides a plain (o32) stat. I think the former is what's intended, as there is no separate fstatat64. It's also what x86 does. I think this is just a case of a compat too far. The o32 stat64 is the same as plain stat on n64, so 64-bit kernels can just use newfstatat. (n32 already does this, and works correctly as-is.) Tested with the glibc patch, where it fixes the test I'd written. Please install if OK. Richard [1] I've seen Khem's patch, but I don't think it's right. Signed-off-by: Richard Sandiford <richard@xxxxxxxxxxxxxxxx> diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S index 2ac0141..288ee4a 100644 --- a/arch/mips/kernel/scall64-o32.S +++ b/arch/mips/kernel/scall64-o32.S @@ -498,7 +498,7 @@ sys_call_table: PTR sys_mknodat /* 4290 */ PTR sys_fchownat PTR compat_sys_futimesat - PTR compat_sys_newfstatat + PTR sys_newfstatat PTR sys_unlinkat PTR sys_renameat /* 4295 */ PTR sys_linkat