On 06/02/2011 02:04 PM, Eric Paris wrote:
The audit system previously expected arches calling to audit_syscall_exit to
supply as arguments if the syscall was a success and what the return code was.
Audit also provides a helper AUDITSC_RESULT which was supposed to simplify by
converting from negative retcodes to an audit internal magic value stating
success or failure. This helper was wrong and could indicate that a valid
pointer returned to userspace was a failed syscall. The fix is to fix the
layering foolishness. We now pass audit_syscall_exit a struct pt_reg and it
in turns calls back into arch code to collect the return value and to
determine if the syscall was a success or failure.
In arch/sh/kernel/ptrace_64.c I see that we were using regs[9] in the old
audit code. But the ptrace_64.h code was previously using regs[3] for the
regs_return_value(). I have no idea which one is correct, but this patch now
uses regs[3].
Signed-off-by: Eric Paris <eparis@redhat.com>
For the x86 portions:
Acked-by: H. Peter Anvin <hpa@zytor.com>
-hpa