Thread (36 messages) 36 messages, 4 authors, 2014-10-06

[PATCH v6 2/6] arm64: ptrace: allow tracer to skip a system call

From: Will Deacon <hidden>
Date: 2014-09-01 11:38:12
Also in: lkml

On Wed, Aug 27, 2014 at 06:55:46AM +0100, AKASHI Takahiro wrote:
On 08/27/2014 02:51 AM, Will Deacon wrote:
quoted
On Fri, Aug 22, 2014 at 01:35:17AM +0100, AKASHI Takahiro wrote:
quoted
Oops, you're absolutely right. I didn't think of this case.
syscall_trace_enter() should not return a syscallno directly, but always
return -1 if syscallno < 0. (except when secure_computing() returns with -1)
This also implies that tracehook_report_syscall() should also have a return value.

Will, is this fine with you?
Well, the first thing that jumps out at me is why this is being done
completely differently for arm64 and arm. I thought adding the new ptrace
requests would reconcile the differences?
I'm not sure what portion of my code you mentioned as "completely different", but

1)
setting x0 to -ENOSYS is necessary because, otherwise, user-issued syscall(-1) will
return a bogus value when audit tracing is on.

Please note that, on arm,
                  not traced      traced
                  ------          ------
syscall(-1)      aborted         OOPs(BUG_ON)
syscall(-3000)   aborted         aborted
syscall(1000)    ENOSYS          ENOSYS

So, anyhow, its a bit difficult and meaningless to mimic these invalid cases.
I'm not suggesting we make ourselves bug-compatible with ARM. Instead, I'd
rather see a series of patches getting the ARM code working correctly,
before we go off doing something different for arm64.
2)
branching a new label, syscall_trace_return_skip (see entry.S), after syscall_trace_enter()
is necessary in order to avoid OOPS in audit_syscall_enter() as we discussed.

Did I make it clear?
Sure. So let's fix ARM, then look at the arm64 port after that. I really
want to avoid divergence in this area.

Will
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help