Re: Compat syscall instrumentation and return from execve issue

Mathieu Desnoyers
2015-11-18T14:57:31Z

----- On Nov 11, 2015, at 8:08 PM, Andy Lutomirski luto@amacapital.net wrote:

> 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.

I guess there are no plans to do this kind of change to other
architectures in the near future ? If so, we might want to
investigate the thread status flag approach for other architectures,
and use the AUDIT_ARCH_* approach for x86.

Thoughts ?

Thanks,

Mathieu

>
> --Andy
>
>
>
>
> --
> Andy Lutomirski
> AMA Capital Management, LLC

--
Mathieu Desnoyers
EfficiOS Inc.