Re: [PATCH 06/14] tracing: add tracing support for compat syscalls

From: Frederic Weisbecker
Date: Sat Mar 27 2010 - 00:40:27 EST


On Mon, Mar 22, 2010 at 04:21:42PM -0400, Jason Baron wrote:
> On Sat, Mar 20, 2010 at 07:12:17AM +0100, Frederic Weisbecker wrote:
> > > #else /* CONFIG_COMPAT */
> > >
> > > +#define NR_syscalls_compat 0
> > > +
> > > static inline int is_compat_task(void)
> > > {
> > > return 0;
> > > diff --git a/include/trace/syscall.h b/include/trace/syscall.h
> > > index 8f5ac38..1cc1d1e 100644
> > > --- a/include/trace/syscall.h
> > > +++ b/include/trace/syscall.h
> > > @@ -22,6 +22,7 @@
> > > struct syscall_metadata {
> > > const char *name;
> > > int syscall_nr;
> > > + int compat_syscall_nr;
> >
> >
> >
> > Why do you need both syscall_nr and compat_syscall_nr?
> > Compat and usual syscalls never share the same syscall
> > metadata.
> >
> >
>
> For example, something like 'sys_read()' is pointed to by both
> syscalls_metadata and compat_syscalls_metadata. Thus, the same syscall
> metadata record is referenced by two different tables. That said, I'm not
> making use of compat_syscall_nr. Although it could be added to the
> checks in 'reg_event_syscall_enter()', to make sure that the
> compat_syscall_nr is valid.



Yep, but we need it to be referenced by two different tables
as normal and compat syscalls don't have the exact same
parameters. It is not about the same syscall metadata.

Once we'll get support for user pointer dereferencing to get
user parameters content in the traces, we'll need to build a
table of types to be aware of the type. And these types will
be different between compat and normal syscalls.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/