[PATCH 2/3] ARM: convert to generated system call tables

Arnd Bergmann
2016-10-25T10:28:16Z

On Tuesday, October 25, 2016 10:12:10 PM CEST Michael Cree wrote:
> On Fri, Oct 21, 2016 at 03:06:45PM +0200, Arnd Bergmann wrote:
> > I see your point, but I think there are serious issues with the current
> > approach as well:
> >
> > - a lot of the less common architectures just don't get updated
> > in time, out of 22 architectures that don't use asm-generic/unistd.h,
> > only 12 have pwritev2 in linux-next, and only three have pkey_mprotect
> >
> > - some architectures that add all syscalls sometimes make a mistake
> > and forget one, e.g. alpha apparently never added __NR_bpf, but it
> > did add the later __NR_execveat.
>
> __NR_bpf was not forgotten on Alpha. It was not wired up because
> extra architecture support is needed which has not been implemented.
>
> But maybe we should just wire it up to sys_ni_syscall in the meantime
> so a syscall number is reserved for it, and user space can call it to
> get -ENOSYS returned.

Ah, I must have misinterpreted the code then. I assumed that the
bpf syscall always works on all architectures, but that only the
jit compiler for it required architecture specific code to make it
more efficient.

The implementation of sys_bfp is compile-time selectable at the moment
and falls back to sys_no_syscall if CONFIG_BPF_SYSCALL is disabled.
If it doesn't work on Alpha, maybe that symbol could have a "depends
on !ALPHA" or "depends on BPF_SUPPORT"?

sys_seccomp is another one that falls into a similar category, but
it already depends on HAVE_ARCH_SECCOMP_FILTER, and most other
architectures have assigned a syscall number but not set this symbol.
This one will actually allow you to set strict seccomp mode even
without the Kconfig symbol, just not allow to set a filter.

Arnd