@ -61,8 +61,11 @@
# include "audit.h"
/* No auditing will take place until audit_initialized != 0 .
/* No auditing will take place until audit_initialized == AUDIT_INITIALIZED .
* ( Initialization happens after skb_init is called . ) */
# define AUDIT_DISABLED -1
# define AUDIT_UNINITIALIZED 0
# define AUDIT_INITIALIZED 1
static int audit_initialized ;
# define AUDIT_OFF 0
@ -965,6 +968,9 @@ static int __init audit_init(void)
{
int i ;
if ( audit_initialized = = AUDIT_DISABLED )
return 0 ;
printk ( KERN_INFO " audit: initializing netlink socket (%s) \n " ,
audit_default ? " enabled " : " disabled " ) ;
audit_sock = netlink_kernel_create ( & init_net , NETLINK_AUDIT , 0 ,
@ -976,7 +982,7 @@ static int __init audit_init(void)
skb_queue_head_init ( & audit_skb_queue ) ;
skb_queue_head_init ( & audit_skb_hold_queue ) ;
audit_initialized = 1 ;
audit_initialized = AUDIT_INITIALIZED ;
audit_enabled = audit_default ;
audit_ever_enabled | = ! ! audit_default ;
@ -999,13 +1005,21 @@ __initcall(audit_init);
static int __init audit_enable ( char * str )
{
audit_default = ! ! simple_strtol ( str , NULL , 0 ) ;
printk ( KERN_INFO " audit: %s%s \n " ,
audit_default ? " enabled " : " disabled " ,
audit_initialized ? " " : " (after initialization) " ) ;
if ( audit_initialized ) {
if ( ! audit_default )
audit_initialized = AUDIT_DISABLED ;
printk ( KERN_INFO " audit: %s " , audit_default ? " enabled " : " disabled " ) ;
if ( audit_initialized = = AUDIT_INITIALIZED ) {
audit_enabled = audit_default ;
audit_ever_enabled | = ! ! audit_default ;
} else if ( audit_initialized = = AUDIT_UNINITIALIZED ) {
printk ( " (after initialization) " ) ;
} else {
printk ( " (until reboot) " ) ;
}
printk ( " \n " ) ;
return 1 ;
}
@ -1146,7 +1160,7 @@ struct audit_buffer *audit_log_start(struct audit_context *ctx, gfp_t gfp_mask,
int reserve ;
unsigned long timeout_start = jiffies ;
if ( ! audit_initialized )
if ( audit_initialized ! = AUDIT_INITIALIZED )
return NULL ;
if ( unlikely ( audit_filter_type ( type ) ) )