Re: [PATCH] syscalls: Update the syscall #defines to match uapi

From: Arnd Bergmann
Date: Tue Aug 13 2019 - 15:41:36 EST


On Tue, Aug 13, 2019 at 9:01 PM Alistair Francis <alistair23@xxxxxxxxx> wrote:
> On Mon, Aug 12, 2019 at 2:49 AM Arnd Bergmann <arnd@xxxxxxxx> wrote:

> > > diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
> > > index 2bcef4c70183..e4bf5e480d60 100644
> > > --- a/include/linux/syscalls.h
> > > +++ b/include/linux/syscalls.h
> > > @@ -512,7 +512,7 @@ asmlinkage long sys_readlinkat(int dfd, const char __user *path, char __user *bu
> > > asmlinkage long sys_newfstatat(int dfd, const char __user *filename,
> > > struct stat __user *statbuf, int flag);
> > > asmlinkage long sys_newfstat(unsigned int fd, struct stat __user *statbuf);
> > > -#if defined(__ARCH_WANT_STAT64) || defined(__ARCH_WANT_COMPAT_STAT64)
> > > +#if defined(__ARCH_WANT_NEW_STAT) || defined(__ARCH_WANT_STAT64)
> > > asmlinkage long sys_fstat64(unsigned long fd, struct stat64 __user *statbuf);
> > > asmlinkage long sys_fstatat64(int dfd, const char __user *filename,
> > > struct stat64 __user *statbuf, int flag);
> >
> > I think this is wrong: when __ARCH_WANT_NEW_STAT is set, we are
> > on a 64-bit architecture and only want the sys_newfstat{,at} system
> > calls, not sys_fstat{,at}64 that gets used on 32-bit machines.
>
> Ah, that would make sense then. I don't think you will see the error then.

So we don't need this patch to build riscv32 kernels, right? It's possible
that it was the result of an incorrect forward port of some other patch,
as older riscv32 kernels did provide stat64(), but newer ones only have
statx().

Arnd