Skip to content

Commit

Permalink
AUDIT: Defer freeing aux items until audit_free_context()
Browse files Browse the repository at this point in the history
While they were all just simple blobs it made sense to just free them
as we walked through and logged them. Now that there are pointers to
other objects which need refcounting, we might as well revert to
_only_ logging them in audit_log_exit(), and put the code to free them
properly in only one place -- in audit_free_aux().

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
----------------------------------------------------------
  • Loading branch information
David Woodhouse committed May 26, 2005
1 parent 37ca538 commit 7551ced
Showing 1 changed file with 2 additions and 8 deletions.
10 changes: 2 additions & 8 deletions kernel/auditsc.c
Original file line number Diff line number Diff line change
Expand Up @@ -675,6 +675,7 @@ static void audit_log_exit(struct audit_context *context)
{
int i;
struct audit_buffer *ab;
struct audit_aux_data *aux;

ab = audit_log_start(context, AUDIT_SYSCALL);
if (!ab)
Expand Down Expand Up @@ -705,10 +706,8 @@ static void audit_log_exit(struct audit_context *context)
context->egid, context->sgid, context->fsgid);
audit_log_task_info(ab);
audit_log_end(ab);
while (context->aux) {
struct audit_aux_data *aux;

aux = context->aux;
for (aux = context->aux; aux; aux = aux->next) {

ab = audit_log_start(context, aux->type);
if (!ab)
Expand Down Expand Up @@ -740,15 +739,10 @@ static void audit_log_exit(struct audit_context *context)
case AUDIT_AVC_PATH: {
struct audit_aux_data_path *axi = (void *)aux;
audit_log_d_path(ab, "path=", axi->dentry, axi->mnt);
dput(axi->dentry);
mntput(axi->mnt);
break; }

}
audit_log_end(ab);

context->aux = aux->next;
kfree(aux);
}

for (i = 0; i < context->name_count; i++) {
Expand Down

0 comments on commit 7551ced

Please sign in to comment.