Re: [PATCH 05/12] update FTRACE_SYSCALL_MAX

Paul Mundt
2009-08-24T13:41:53Z

On Tue, Aug 11, 2009 at 01:00:25PM +0200, Frederic Weisbecker wrote:
> On Mon, Aug 10, 2009 at 04:52:35PM -0400, Jason Baron wrote:
> > update FTRACE_SYSCALL_MAX to the current number of syscalls
> >
> > Signed-off-by: Jason Baron <jbaron@redhat.com>
> >
> > ---
> > arch/x86/include/asm/ftrace.h | 4 ++--
> > 1 files changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/arch/x86/include/asm/ftrace.h b/arch/x86/include/asm/ftrace.h
> > index bd2c651..7113654 100644
> > --- a/arch/x86/include/asm/ftrace.h
> > +++ b/arch/x86/include/asm/ftrace.h
> > @@ -30,9 +30,9 @@
> >
> > /* FIXME: I don't want to stay hardcoded */
> > #ifdef CONFIG_X86_64
> > -# define FTRACE_SYSCALL_MAX 296
> > +# define FTRACE_SYSCALL_MAX 299
> > #else
> > -# define FTRACE_SYSCALL_MAX 333
> > +# define FTRACE_SYSCALL_MAX 337
> > #endif
>
>
> I don't remember why we had to use a hardcoded number.
> Is there no way to keep being sync with the current number of
> syscalls? We dwant to avoid patching the kernel each time we
> have a new syscall :-)
>
I hope you can clarify what the meaning of this is supposed to be
exactly. Is this number supposed to be the last usable syscall, or is it
supposed to be the equivalent of NR_syscalls?

Presently on SH we have this as NR_syscalls - 1, while on s390 I see it
is treated as NR_syscalls directly. s390 opencodes the NR_syscalls
directly and so presently blows up in -next due to a missing
FTRACE_SYSCALL_MAX definition:

http://kisskb.ellerman.id.au/kisskb/buildresult/1120523/

I was in the process of fixing that up when I noticed this difference.
x86 seems to also treat this as NR_syscalls - 1, but that looks to me
like there is an off-by-1 in arch_init_ftrace_syscalls() causing the last
syscall to be skipped?