summaryrefslogtreecommitdiff
path: root/kernel/auditsc.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2008-11-12 18:37:41 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2008-12-09 02:27:38 -0500
commita64e64944f4b8ce3288519555dbaa0232414b8ac (patch)
tree6b37f5444c49379580b6b4fead84a75ca474d0ab /kernel/auditsc.c
parenta3f07114e3359fb98683069ae397220e8992a24a (diff)
downloadkernel-common-a64e64944f4b8ce3288519555dbaa0232414b8ac.tar.gz
kernel-common-a64e64944f4b8ce3288519555dbaa0232414b8ac.tar.bz2
kernel-common-a64e64944f4b8ce3288519555dbaa0232414b8ac.zip
[PATCH] return records for fork() both to child and parent
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'kernel/auditsc.c')
-rw-r--r--kernel/auditsc.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/kernel/auditsc.c b/kernel/auditsc.c
index cf5bc2f5f9c3..de8468050afa 100644
--- a/kernel/auditsc.c
+++ b/kernel/auditsc.c
@@ -1548,6 +1548,23 @@ void audit_syscall_entry(int arch, int major,
context->ppid = 0;
}
+void audit_finish_fork(struct task_struct *child)
+{
+ struct audit_context *ctx = current->audit_context;
+ struct audit_context *p = child->audit_context;
+ if (!p || !ctx || !ctx->auditable)
+ return;
+ p->arch = ctx->arch;
+ p->major = ctx->major;
+ memcpy(p->argv, ctx->argv, sizeof(ctx->argv));
+ p->ctime = ctx->ctime;
+ p->dummy = ctx->dummy;
+ p->auditable = ctx->auditable;
+ p->in_syscall = ctx->in_syscall;
+ p->filterkey = kstrdup(ctx->filterkey, GFP_KERNEL);
+ p->ppid = current->pid;
+}
+
/**
* audit_syscall_exit - deallocate audit context after a system call
* @tsk: task being audited