Subject: Re: [PATCH v17 07/15] asm/syscall.h: add syscall_get_arch

From: Andrew Morton <[email-masked]>
Date: Fri, 6 Apr 2012 13:05:44 -0700

On Thu, 29 Mar 2012 15:01:52 -0500
Will Drewry <[email-masked]> wrote:

> Adds a stub for a function that will return the AUDIT_ARCH_*
> value appropriate to the supplied task based on the system
> call convention.
> 
> For audit's use, the value can generally be hard-coded at the
> audit-site.  However, for other functionality not inlined into
> syscall entry/exit, this makes that information available.
> seccomp_filter is the first planned consumer and, as such,
> the comment indicates a tie to HAVE_ARCH_SECCOMP_FILTER.  That

Should be "CONFIG_HAVE_ARCH_SECCOMP_FILTER", I hope.

> is probably an unneeded detail.
> 
> ...
>
> --- a/include/asm-generic/syscall.h
> +++ b/include/asm-generic/syscall.h
> @@ -142,4 +142,18 @@ void syscall_set_arguments(struct task_struct *task, struct pt_regs *regs,
>  			   unsigned int i, unsigned int n,
>  			   const unsigned long *args);
>  
> +/**
> + * syscall_get_arch - return the AUDIT_ARCH for the current system call
> + * @task:	task of interest, must be in system call entry tracing
> + * @regs:	task_pt_regs() of @task
> + *
> + * Returns the AUDIT_ARCH_* based on the system call convention in use.
> + *
> + * It's only valid to call this when @task is stopped on entry to a system
> + * call, due to %TIF_SYSCALL_TRACE, %TIF_SYSCALL_AUDIT, or %TIF_SECCOMP.
> + *
> + * Note, at present this function is only required with
> + * CONFIG_HAVE_ARCH_SECCOMP_FILTER.
> + */
> +int syscall_get_arch(struct task_struct *task, struct pt_regs *regs);
>  #endif	/* _ASM_SYSCALL_H */

So architectures which permit CONFIG_HAVE_ARCH_SECCOMP_FILTER must
provide an implementation of this.