aboutsummaryrefslogtreecommitdiffstats
path: root/security/security.c
diff options
context:
space:
mode:
authorJanne Karhunen <janne.karhunen@gmail.com>2019-06-14 08:20:14 -0400
committerMimi Zohar <zohar@linux.ibm.com>2019-06-14 09:02:42 -0400
commit42df744c4166af6959eda2df1ee5cde744d4a1c3 (patch)
tree0596cb76c814d03ee71a967fe3bd48b50ca42eb1 /security/security.c
parent9e1e5d4372d641d3cd6d6cb8dc0b488a7850d222 (diff)
LSM: switch to blocking policy update notifiers
Atomic policy updaters are not very useful as they cannot usually perform the policy updates on their own. Since it seems that there is no strict need for the atomicity, switch to the blocking variant. While doing so, rename the functions accordingly. Signed-off-by: Janne Karhunen <janne.karhunen@gmail.com> Acked-by: Paul Moore <paul@paul-moore.com> Acked-by: James Morris <jamorris@linux.microsoft.com> Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
Diffstat (limited to 'security/security.c')
-rw-r--r--security/security.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/security/security.c b/security/security.c
index 613a5c00e602..47e5849d7557 100644
--- a/security/security.c
+++ b/security/security.c
@@ -39,7 +39,7 @@
39#define LSM_COUNT (__end_lsm_info - __start_lsm_info) 39#define LSM_COUNT (__end_lsm_info - __start_lsm_info)
40 40
41struct security_hook_heads security_hook_heads __lsm_ro_after_init; 41struct security_hook_heads security_hook_heads __lsm_ro_after_init;
42static ATOMIC_NOTIFIER_HEAD(lsm_notifier_chain); 42static BLOCKING_NOTIFIER_HEAD(blocking_lsm_notifier_chain);
43 43
44static struct kmem_cache *lsm_file_cache; 44static struct kmem_cache *lsm_file_cache;
45static struct kmem_cache *lsm_inode_cache; 45static struct kmem_cache *lsm_inode_cache;
@@ -430,23 +430,26 @@ void __init security_add_hooks(struct security_hook_list *hooks, int count,
430 panic("%s - Cannot get early memory.\n", __func__); 430 panic("%s - Cannot get early memory.\n", __func__);
431} 431}
432 432
433int call_lsm_notifier(enum lsm_event event, void *data) 433int call_blocking_lsm_notifier(enum lsm_event event, void *data)
434{ 434{
435 return atomic_notifier_call_chain(&lsm_notifier_chain, event, data); 435 return blocking_notifier_call_chain(&blocking_lsm_notifier_chain,
436 event, data);
436} 437}
437EXPORT_SYMBOL(call_lsm_notifier); 438EXPORT_SYMBOL(call_blocking_lsm_notifier);
438 439
439int register_lsm_notifier(struct notifier_block *nb) 440int register_blocking_lsm_notifier(struct notifier_block *nb)
440{ 441{
441 return atomic_notifier_chain_register(&lsm_notifier_chain, nb); 442 return blocking_notifier_chain_register(&blocking_lsm_notifier_chain,
443 nb);
442} 444}
443EXPORT_SYMBOL(register_lsm_notifier); 445EXPORT_SYMBOL(register_blocking_lsm_notifier);
444 446
445int unregister_lsm_notifier(struct notifier_block *nb) 447int unregister_blocking_lsm_notifier(struct notifier_block *nb)
446{ 448{
447 return atomic_notifier_chain_unregister(&lsm_notifier_chain, nb); 449 return blocking_notifier_chain_unregister(&blocking_lsm_notifier_chain,
450 nb);
448} 451}
449EXPORT_SYMBOL(unregister_lsm_notifier); 452EXPORT_SYMBOL(unregister_blocking_lsm_notifier);
450 453
451/** 454/**
452 * lsm_cred_alloc - allocate a composite cred blob 455 * lsm_cred_alloc - allocate a composite cred blob