tmp_suning_uos_patched/arch/s390/kernel
Al Viro 8f2961c39e [S390] audit: get s390 ret_from_fork in sync with other architectures
On s390 we have ret_from_fork jump not to the "do all work we
normally do on return from syscall" as on x86, ppc, etc., but to the
"do all such work except audit".  Historical reasons - the codepath
triggered when we have AUDIT process flag set is separated from the
normall one and they converge at sysc_return, which is the common
part of post-syscall work.  And does not include calling audit_syscall_exit() -
that's done in the end of sysc_tracesys path, just before that path jumps
to sysc_return.

	IOW, the child returning from fork()/clone()/vfork() doesn't
call audit_syscall_exit() at all, so no matter what we do with its
audit context, we are not going to see the audit entry.

	The fix is simple: have ret_from_fork go to the point just past
the call of sys_.... in the 'we have AUDIT flag set' path.  There we
have (64bit variant; for 31bit the situation is the same):
sysc_tracenogo:
        tm      __TI_flags+7(%r9),(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT)
        jz      sysc_return
        la      %r2,SP_PTREGS(%r15)     # load pt_regs
        larl    %r14,sysc_return        # return point is sysc_return
        jg      do_syscall_trace_exit
which is precisely what we need - check the flag, bugger off to sysc_return
if not set, otherwise call do_syscall_trace_exit() and bugger off to
sysc_return.  r9 has just been properly set by ret_from_fork itself,
so we are fine.

	Tested on s390x, seems to work fine.  WARNING: it's been about
16 years since my last contact with 3X0 assembler[1], so additional
review would be very welcome.  I don't think I've managed to screw it
up, but...

[1] that *was* in another country and besides, the box is dead...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2008-12-25 13:38:07 +01:00
..
asm-offsets.c [S390] fix system call parameter functions. 2008-11-27 11:06:56 +01:00
audit.c [S390] Get rid of a bunch of sparse warnings again. 2007-10-12 16:13:06 +02:00
audit.h [S390] Get rid of a bunch of sparse warnings again. 2007-10-12 16:13:06 +02:00
base.S [S390] Convert memory detection into C code. 2007-02-05 21:18:37 +01:00
bitmap.S
compat_audit.c [S390] Get rid of a bunch of sparse warnings again. 2007-10-12 16:13:06 +02:00
compat_exec_domain.c [S390] Get rid of a lot of sparse warnings. 2007-02-05 21:16:47 +01:00
compat_linux.c compat: generic compat get/settimeofday 2008-10-16 11:21:33 -07:00
compat_linux.h compat: generic compat get/settimeofday 2008-10-16 11:21:33 -07:00
compat_ptrace.h [S390] CVE-2008-1514: prevent ptrace padding area read/write in 31-bit mode 2008-09-09 12:39:06 +02:00
compat_signal.c [S390] fix system call parameter functions. 2008-11-27 11:06:56 +01:00
compat_wrapper.S compat: generic compat get/settimeofday 2008-10-16 11:21:33 -07:00
cpcmd.c [S390] cpcmd: fix inline assembly usage. 2007-10-12 16:13:09 +02:00
crash.c [S390] Get rid of a lot of sparse warnings. 2007-02-05 21:16:47 +01:00
debug.c [S390] Cleanup s390 debug feature print messages. 2008-07-14 10:02:22 +02:00
diag.c [S390] vmur: fix diag14 exceptions with addresses > 2GB. 2007-08-22 13:51:47 +02:00
dis.c [S390] disassembler: fix idte instruction format. 2008-05-30 10:03:36 +02:00
early.c [S390] Remove P390 support. 2008-07-14 10:02:25 +02:00
ebcdic.c [S390] Get rid of a lot of sparse warnings. 2007-02-05 21:16:47 +01:00
entry64.S [S390] audit: get s390 ret_from_fork in sync with other architectures 2008-12-25 13:38:07 +01:00
entry.h [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
entry.S [S390] audit: get s390 ret_from_fork in sync with other architectures 2008-12-25 13:38:07 +01:00
head31.S [S390] Convert machine feature detection code to C. 2008-04-30 13:38:47 +02:00
head64.S [S390] System z large page support. 2008-04-30 13:38:47 +02:00
head.S [S390] Get rid of new section mismatch warnings. 2007-07-27 12:29:18 +02:00
init_task.c [S390] Fix alignment of initial kernel stack. 2008-11-27 11:06:58 +01:00
ipl.c [S390] ipl: Reboot from alternate device does not work when booting from file 2008-08-01 16:39:30 +02:00
irq.c [S390] show_interrupts: prevent cpu hotplug when walking cpu_online_map. 2008-05-15 16:52:41 +02:00
kprobes.c stop_machine: Wean existing callers off stop_machine_run() 2008-07-28 12:16:31 +10:00
machine_kexec.c [S390] Cleanup kprobes printk messages. 2008-07-14 10:02:24 +02:00
Makefile [S390] Move memory detection code to own file. 2008-07-14 10:02:17 +02:00
mem_detect.c [S390] Remove diag 0x260 call from memory detection. 2008-08-01 16:39:34 +02:00
module.c [S390] Use generic bug. 2007-04-27 16:01:42 +02:00
process.c [S390] ftrace: disable tracing on idle psw 2008-11-14 18:18:53 +01:00
ptrace.c [S390] fix system call parameter functions. 2008-11-27 11:06:56 +01:00
reipl64.S [S390] reipl: move dump_prefix_page out of text section. 2007-03-05 23:35:43 +01:00
reipl.S [S390] reipl: move dump_prefix_page out of text section. 2007-03-05 23:35:43 +01:00
relocate_kernel64.S [S390] Reset infrastructure for re-IPL. 2006-12-04 15:40:26 +01:00
relocate_kernel.S [S390] Reset infrastructure for re-IPL. 2006-12-04 15:40:26 +01:00
s390_ext.c [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
s390_ksyms.c Generic semaphore implementation 2008-04-17 10:42:34 -04:00
setup.c [S390] Fix range for add_active_range() in setup_memory() 2008-11-14 18:18:51 +01:00
signal.c [S390] fix system call parameter functions. 2008-11-27 11:06:56 +01:00
smp.c [S390] Fix sysdev class file creation. 2008-10-28 11:12:03 +01:00
stacktrace.c [S390] Fix stacktrace compile bug. 2008-07-17 17:22:09 +02:00
sys_s390.c [S390] fix s390x_newuname 2008-11-14 18:18:55 +01:00
syscalls.S compat: generic compat get/settimeofday 2008-10-16 11:21:33 -07:00
time.c [S390] fix/cleanup sched_clock 2008-11-27 11:06:57 +01:00
topology.c [S390] cpu topology: fix cpu_core_map initialization 2008-12-25 13:38:07 +01:00
traps.c [S390] Move show_regs to traps.c. 2008-04-30 13:38:43 +02:00
vmlinux.lds.S [S390] Fix alignment of initial kernel stack. 2008-11-27 11:06:58 +01:00
vtime.c [S390] Cleanup vtime printk messages. 2008-07-14 10:02:18 +02:00