Commit 899838b2 authored by Eric Paris's avatar Eric Paris

SELinux: unify the selinux_audit_data and selinux_late_audit_data

We no longer need the distinction.  We only need data after we decide to do an
audit.  So turn the "late" audit data into just "data" and remove what we
currently have as "data".
Signed-off-by: default avatarEric Paris <eparis@redhat.com>
parent 1d349292
...@@ -436,9 +436,9 @@ static void avc_audit_pre_callback(struct audit_buffer *ab, void *a) ...@@ -436,9 +436,9 @@ static void avc_audit_pre_callback(struct audit_buffer *ab, void *a)
{ {
struct common_audit_data *ad = a; struct common_audit_data *ad = a;
audit_log_format(ab, "avc: %s ", audit_log_format(ab, "avc: %s ",
ad->selinux_audit_data->slad->denied ? "denied" : "granted"); ad->selinux_audit_data->denied ? "denied" : "granted");
avc_dump_av(ab, ad->selinux_audit_data->slad->tclass, avc_dump_av(ab, ad->selinux_audit_data->tclass,
ad->selinux_audit_data->slad->audited); ad->selinux_audit_data->audited);
audit_log_format(ab, " for "); audit_log_format(ab, " for ");
} }
...@@ -452,9 +452,9 @@ static void avc_audit_post_callback(struct audit_buffer *ab, void *a) ...@@ -452,9 +452,9 @@ static void avc_audit_post_callback(struct audit_buffer *ab, void *a)
{ {
struct common_audit_data *ad = a; struct common_audit_data *ad = a;
audit_log_format(ab, " "); audit_log_format(ab, " ");
avc_dump_query(ab, ad->selinux_audit_data->slad->ssid, avc_dump_query(ab, ad->selinux_audit_data->ssid,
ad->selinux_audit_data->slad->tsid, ad->selinux_audit_data->tsid,
ad->selinux_audit_data->slad->tclass); ad->selinux_audit_data->tclass);
} }
/* This is the slow part of avc audit with big stack footprint */ /* This is the slow part of avc audit with big stack footprint */
...@@ -464,13 +464,11 @@ noinline int slow_avc_audit(u32 ssid, u32 tsid, u16 tclass, ...@@ -464,13 +464,11 @@ noinline int slow_avc_audit(u32 ssid, u32 tsid, u16 tclass,
unsigned flags) unsigned flags)
{ {
struct common_audit_data stack_data; struct common_audit_data stack_data;
struct selinux_audit_data sad = {0,}; struct selinux_audit_data sad;
struct selinux_late_audit_data slad;
if (!a) { if (!a) {
a = &stack_data; a = &stack_data;
a->type = LSM_AUDIT_DATA_NONE; a->type = LSM_AUDIT_DATA_NONE;
a->selinux_audit_data = &sad;
} }
/* /*
...@@ -484,14 +482,15 @@ noinline int slow_avc_audit(u32 ssid, u32 tsid, u16 tclass, ...@@ -484,14 +482,15 @@ noinline int slow_avc_audit(u32 ssid, u32 tsid, u16 tclass,
(flags & MAY_NOT_BLOCK)) (flags & MAY_NOT_BLOCK))
return -ECHILD; return -ECHILD;
slad.tclass = tclass; sad.tclass = tclass;
slad.requested = requested; sad.requested = requested;
slad.ssid = ssid; sad.ssid = ssid;
slad.tsid = tsid; sad.tsid = tsid;
slad.audited = audited; sad.audited = audited;
slad.denied = denied; sad.denied = denied;
a->selinux_audit_data = &sad;
a->selinux_audit_data->slad = &slad;
common_lsm_audit(a, avc_audit_pre_callback, avc_audit_post_callback); common_lsm_audit(a, avc_audit_pre_callback, avc_audit_post_callback);
return 0; return 0;
} }
......
This diff is collapsed.
...@@ -49,7 +49,7 @@ struct avc_cache_stats { ...@@ -49,7 +49,7 @@ struct avc_cache_stats {
/* /*
* We only need this data after we have decided to send an audit message. * We only need this data after we have decided to send an audit message.
*/ */
struct selinux_late_audit_data { struct selinux_audit_data {
u32 ssid; u32 ssid;
u32 tsid; u32 tsid;
u16 tclass; u16 tclass;
...@@ -59,13 +59,6 @@ struct selinux_late_audit_data { ...@@ -59,13 +59,6 @@ struct selinux_late_audit_data {
int result; int result;
}; };
/*
* We collect this at the beginning or during an selinux security operation
*/
struct selinux_audit_data {
struct selinux_late_audit_data *slad;
};
/* /*
* AVC operations * AVC operations
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment