Skip to content

Commit

Permalink
lsm_audit: don't specify the audit pre/post callbacks in 'struct comm…
Browse files Browse the repository at this point in the history
…on_audit_data'

It just bloats the audit data structure for no good reason, since the
only time those fields are filled are just before calling the
common_lsm_audit() function, which is also the only user of those
fields.

So just make them be the arguments to common_lsm_audit(), rather than
bloating that structure that is passed around everywhere, and is
initialized in hot paths.

Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
torvalds committed Apr 3, 2012
1 parent 3f0882c commit b61c37f
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 17 deletions.
7 changes: 3 additions & 4 deletions include/linux/lsm_audit.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,6 @@ struct common_audit_data {
struct apparmor_audit_data *apparmor_audit_data;
#endif
}; /* per LSM data pointer union */
/* these callback will be implemented by a specific LSM */
void (*lsm_pre_audit)(struct audit_buffer *, void *);
void (*lsm_post_audit)(struct audit_buffer *, void *);
};

#define v4info fam.v4
Expand All @@ -101,6 +98,8 @@ int ipv6_skb_to_auditdata(struct sk_buff *skb,
{ memset((_d), 0, sizeof(struct common_audit_data)); \
(_d)->type = LSM_AUDIT_DATA_##_t; }

void common_lsm_audit(struct common_audit_data *a);
void common_lsm_audit(struct common_audit_data *a,
void (*pre_audit)(struct audit_buffer *, void *),
void (*post_audit)(struct audit_buffer *, void *));

#endif
4 changes: 1 addition & 3 deletions security/apparmor/audit.c
Original file line number Diff line number Diff line change
Expand Up @@ -160,9 +160,7 @@ void aa_audit_msg(int type, struct common_audit_data *sa,
void (*cb) (struct audit_buffer *, void *))
{
sa->aad->type = type;
sa->lsm_pre_audit = audit_pre;
sa->lsm_post_audit = cb;
common_lsm_audit(sa);
common_lsm_audit(sa, audit_pre, cb);
}

/**
Expand Down
14 changes: 9 additions & 5 deletions security/lsm_audit.c
Original file line number Diff line number Diff line change
Expand Up @@ -378,11 +378,15 @@ static void dump_common_audit_data(struct audit_buffer *ab,
/**
* common_lsm_audit - generic LSM auditing function
* @a: auxiliary audit data
* @pre_audit: lsm-specific pre-audit callback
* @post_audit: lsm-specific post-audit callback
*
* setup the audit buffer for common security information
* uses callback to print LSM specific information
*/
void common_lsm_audit(struct common_audit_data *a)
void common_lsm_audit(struct common_audit_data *a,
void (*pre_audit)(struct audit_buffer *, void *),
void (*post_audit)(struct audit_buffer *, void *))
{
struct audit_buffer *ab;

Expand All @@ -394,13 +398,13 @@ void common_lsm_audit(struct common_audit_data *a)
if (ab == NULL)
return;

if (a->lsm_pre_audit)
a->lsm_pre_audit(ab, a);
if (pre_audit)
pre_audit(ab, a);

dump_common_audit_data(ab, a);

if (a->lsm_post_audit)
a->lsm_post_audit(ab, a);
if (post_audit)
post_audit(ab, a);

audit_log_end(ab);
}
4 changes: 1 addition & 3 deletions security/selinux/avc.c
Original file line number Diff line number Diff line change
Expand Up @@ -492,9 +492,7 @@ static noinline int slow_avc_audit(u32 ssid, u32 tsid, u16 tclass,
slad.denied = denied;

a->selinux_audit_data->slad = &slad;
a->lsm_pre_audit = avc_audit_pre_callback;
a->lsm_post_audit = avc_audit_post_callback;
common_lsm_audit(a);
common_lsm_audit(a, avc_audit_pre_callback, avc_audit_post_callback);
return 0;
}

Expand Down
3 changes: 1 addition & 2 deletions security/smack/smack_access.c
Original file line number Diff line number Diff line change
Expand Up @@ -321,9 +321,8 @@ void smack_log(char *subject_label, char *object_label, int request,
sad->object = object_label;
sad->request = request_buffer;
sad->result = result;
a->lsm_pre_audit = smack_log_callback;

common_lsm_audit(a);
common_lsm_audit(a, smack_log_callback, NULL);
}
#else /* #ifdef CONFIG_AUDIT */
void smack_log(char *subject_label, char *object_label, int request,
Expand Down

0 comments on commit b61c37f

Please sign in to comment.