[PATCH] return records for fork() both to child and parent
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
a3f07114e3
commit
a64e64944f
3 changed files with 20 additions and 0 deletions
|
@ -391,6 +391,7 @@ extern int audit_classify_arch(int arch);
|
|||
#ifdef CONFIG_AUDITSYSCALL
|
||||
/* These are defined in auditsc.c */
|
||||
/* Public API */
|
||||
extern void audit_finish_fork(struct task_struct *child);
|
||||
extern int audit_alloc(struct task_struct *task);
|
||||
extern void audit_free(struct task_struct *task);
|
||||
extern void audit_syscall_entry(int arch,
|
||||
|
@ -504,6 +505,7 @@ static inline int audit_mq_getsetattr(mqd_t mqdes, struct mq_attr *mqstat)
|
|||
extern int audit_n_rules;
|
||||
extern int audit_signals;
|
||||
#else
|
||||
#define audit_finish_fork(t)
|
||||
#define audit_alloc(t) ({ 0; })
|
||||
#define audit_free(t) do { ; } while (0)
|
||||
#define audit_syscall_entry(ta,a,b,c,d,e) do { ; } while (0)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1398,6 +1398,7 @@ long do_fork(unsigned long clone_flags,
|
|||
init_completion(&vfork);
|
||||
}
|
||||
|
||||
audit_finish_fork(p);
|
||||
tracehook_report_clone(trace, regs, clone_flags, nr, p);
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue