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. 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. Arnd