Re: [PATCH 4/6] tracing: add tracing support for compat syscalls

Jason Baron
2010-02-08T15:44:39Z

On Wed, Feb 03, 2010 at 01:52:51PM +0100, Heiko Carstens wrote:
> On Tue, Feb 02, 2010 at 04:21:51PM -0500, Jason Baron wrote:
> > Add core support to event tracing for compat syscalls. The basic idea is that we
> > check if we have a compat task via 'is_compat_task()'. If so, we lookup in the
> > new compat_syscalls_metadata table, the corresponding struct syscall_metadata, to
> > check syscall arguments and whether or not we are enabled.
> >
> > Signed-off-by: Jason Baron <jbaron@redhat.com>
> > ---
> > include/linux/compat.h | 8 +++++
> > include/trace/syscall.h | 4 ++
> > kernel/trace/trace.h | 2 +
> > kernel/trace/trace_syscalls.c | 63 +++++++++++++++++++++++++++++++++++-----
> > 4 files changed, 69 insertions(+), 8 deletions(-)
> >
> > diff --git a/include/linux/compat.h b/include/linux/compat.h
> > index ef68119..ab2cda2 100644
> > --- a/include/linux/compat.h
> > +++ b/include/linux/compat.h
> > @@ -353,5 +353,13 @@ asmlinkage long compat_sys_newfstatat(unsigned int dfd, char __user * filename,
> > asmlinkage long compat_sys_openat(unsigned int dfd, const char __user *filename,
> > int flags, int mode);
> >
> > +#else /* CONFIG_COMPAT */
> > +
> > +#define NR_syscalls_compat 0
> > +static inline int is_compat_task(void)
> > +{
> > + return 0;
> > +}
> > +
> > #endif /* CONFIG_COMPAT */
> > #endif /* _LINUX_COMPAT_H */
>
> This part will break compilation on s390, since it has already the same
> function defined for !CONFIG_COMPAT.

If multiple arches want this definition, then it seems the the common
include/linux/compat.h is good place for it.

> In order to avoid the whole ifdef mess some s390 files do include
> asm/compat.h instead of linux/compat.h. This will get messy :)

is there a way for s390 to use the common include/linux/compat.h file?
what other arch defs are required?

thanks,

-Jason