ARM: 7595/1: syscall: rework ordering in syscall_trace_exit
authorWill Deacon <will.deacon@arm.com>
Fri, 7 Dec 2012 16:34:37 +0000 (17:34 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Tue, 11 Dec 2012 00:18:26 +0000 (00:18 +0000)
commitb10bca0bc699af201770989a88fa293155e9d8de
tree7e9a997cd61232170a37bca7e99b170965991f41
parent39b175a0092d4a8e0875c67df82285475b1da591
ARM: 7595/1: syscall: rework ordering in syscall_trace_exit

syscall_trace_exit is currently doing things back-to-front; invoking
the audit hook *after* signalling the debugger, which presents an
opportunity for the registers to be re-written by userspace in order to
bypass auditing constaints.

This patch fixes the ordering by moving the audit code first and the
tracehook code last. On the face of it, it looks like
current_thread_info()->syscall may be incorrect for the sys_exit
tracepoint, but that's actually not an issue because it will have been
set during syscall entry and cannot have changed since then.

Reported-by: Andrew Gabbasov <Andrew_Gabbasov@mentor.com>
Tested-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/kernel/entry-common.S
arch/arm/kernel/ptrace.c