Re: Compat syscall instrumentation and return from execve issue

Andy Lutomirski
2015-11-12T01:08:49Z

On Mon, Nov 9, 2015 at 6:31 PM, Steven Rostedt <rostedt@goodmis.org> wrote:
> On Mon, 9 Nov 2015 17:51:25 -0800
> Andy Lutomirski <luto@amacapital.net> wrote:
>
>
>> do_syscall_32_irqs_on would call syscall_return_slowpath(regs,
>> AUDIT_ARCH_I386). do_syscall_64 (which doesn't exist yet) would call
>> syscall_return_slowpath(regs, AUDIT_ARCH_X86_64).
>>
>
> OK, so you are saying that a execve that switches the current state
> into ia32 will return from the do_syscall_64 regardless? Then we would
> have to add tracepoints that would be for both ia32 and x86_64. But
> that would solve the current issue at hand.
>

Indeed. Unlike fork/clone, execve is only magical insofar as it does
magical things to task_struct and it enters in the 64-bit native case
through a nasty asm path. The former has no effect on the entry code
(except most likely blocking opportunistic sysret because we're a bit
silly and it might break ABI to change that), and the latter barely
matters for this purpose. In any event, I'm planning on getting rid
of the asm stub for 4.5 if I can get the code written and tested in
time.

--Andy

--
Andy Lutomirski
AMA Capital Management, LLC