On Fri, 30 Aug 2019 21:54:43 +0200 Arnd Bergmann <a...@arndb.de> wrote:
> On Fri, Aug 30, 2019 at 9:46 PM Michal Suchanek <msucha...@suse.de> wrote: > > > > This reverts commit caf6f9c8a326cffd1d4b3ff3f1cfba75d159d70b. > > > > Maybe it was needed after all. > > > > When CONFIG_COMPAT is disabled on ppc64 the kernel does not build. > > > > There is resistance to both removing the llseek syscall from the 64bit > > syscall tables and building the llseek interface unconditionally. > > > > Link: https://lore.kernel.org/lkml/20190828151552.ga16...@infradead.org/ > > Link: https://lore.kernel.org/lkml/20190829214319.498c7de2@naga/ > > > > Signed-off-by: Michal Suchanek <msucha...@suse.de> > > This seems like the right idea in principle. > > > index 5bbf587f5bc1..2f3c4bb138c4 100644 > > --- a/fs/read_write.c > > +++ b/fs/read_write.c > > @@ -331,7 +331,7 @@ COMPAT_SYSCALL_DEFINE3(lseek, unsigned int, fd, > > compat_off_t, offset, unsigned i > > } > > #endif > > > > -#if !defined(CONFIG_64BIT) || defined(CONFIG_COMPAT) > > +#ifdef __ARCH_WANT_SYS_LLSEEK > > SYSCALL_DEFINE5(llseek, unsigned int, fd, unsigned long, offset_high, > > unsigned long, offset_low, loff_t __user *, result, > > unsigned int, whence) > > However, only reverting the patch will now break all newly added > 32-bit architectures that don't define __ARCH_WANT_SYS_LLSEEK: > at least nds32 and riscv32 come to mind, not sure if there is another. AFAICT nds32 never had the syscall. Its headers were added without __ARCH_WANT_SYS_LLSEEK before the define was removed. The new architecture csky should be handled. > > I think the easiest way however would be to combine the two checks > above and make it > > #if !defined(CONFIG_64BIT) || defined(CONFIG_COMPAT) || > defined(__ARCH_WANT_SYS_LLSEEK) > > and then only set __ARCH_WANT_SYS_LLSEEK for powerpc. Yes, that limits the use of __ARCH_WANT_SYS_LLSEEK, does not require resurrecting the old headers, and may fix some architectures like nds32 that forgot to add it. Thanks Michal