diff options
Diffstat (limited to 'security/smack/smack_lsm.c')
| -rw-r--r-- | security/smack/smack_lsm.c | 44 | 
1 files changed, 33 insertions, 11 deletions
diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c index 10056f2f6df..45c32f07416 100644 --- a/security/smack/smack_lsm.c +++ b/security/smack/smack_lsm.c @@ -3640,8 +3640,38 @@ struct security_operations smack_ops = {  }; -static __init void init_smack_know_list(void) +static __init void init_smack_known_list(void)  { +	/* +	 * Initialize CIPSO locks +	 */ +	spin_lock_init(&smack_known_huh.smk_cipsolock); +	spin_lock_init(&smack_known_hat.smk_cipsolock); +	spin_lock_init(&smack_known_star.smk_cipsolock); +	spin_lock_init(&smack_known_floor.smk_cipsolock); +	spin_lock_init(&smack_known_invalid.smk_cipsolock); +	spin_lock_init(&smack_known_web.smk_cipsolock); +	/* +	 * Initialize rule list locks +	 */ +	mutex_init(&smack_known_huh.smk_rules_lock); +	mutex_init(&smack_known_hat.smk_rules_lock); +	mutex_init(&smack_known_floor.smk_rules_lock); +	mutex_init(&smack_known_star.smk_rules_lock); +	mutex_init(&smack_known_invalid.smk_rules_lock); +	mutex_init(&smack_known_web.smk_rules_lock); +	/* +	 * Initialize rule lists +	 */ +	INIT_LIST_HEAD(&smack_known_huh.smk_rules); +	INIT_LIST_HEAD(&smack_known_hat.smk_rules); +	INIT_LIST_HEAD(&smack_known_star.smk_rules); +	INIT_LIST_HEAD(&smack_known_floor.smk_rules); +	INIT_LIST_HEAD(&smack_known_invalid.smk_rules); +	INIT_LIST_HEAD(&smack_known_web.smk_rules); +	/* +	 * Create the known labels list +	 */  	list_add(&smack_known_huh.list, &smack_known_list);  	list_add(&smack_known_hat.list, &smack_known_list);  	list_add(&smack_known_star.list, &smack_known_list); @@ -3676,16 +3706,8 @@ static __init int smack_init(void)  	cred = (struct cred *) current->cred;  	cred->security = tsp; -	/* initialize the smack_know_list */ -	init_smack_know_list(); -	/* -	 * Initialize locks -	 */ -	spin_lock_init(&smack_known_huh.smk_cipsolock); -	spin_lock_init(&smack_known_hat.smk_cipsolock); -	spin_lock_init(&smack_known_star.smk_cipsolock); -	spin_lock_init(&smack_known_floor.smk_cipsolock); -	spin_lock_init(&smack_known_invalid.smk_cipsolock); +	/* initialize the smack_known_list */ +	init_smack_known_list();  	/*  	 * Register with LSM  |