]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
IMA: use list_splice_tail_init_rcu() instead of its open coded variant
authorPetko Manolov <petkan@nucleusys.com>
Tue, 22 May 2018 14:06:55 +0000 (17:06 +0300)
committerMimi Zohar <zohar@linux.vnet.ibm.com>
Thu, 31 May 2018 14:13:22 +0000 (10:13 -0400)
Use list_splice_tail_init_rcu() to extend the existing custom IMA policy
with additional IMA policy rules.

Signed-off-by: Petko Manolov <petko.manolov@konsulko.com>
Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
security/integrity/ima/ima_policy.c

index 8bbc18eb07eba555c40b88f2b09528889692168d..cdcc9a7b4e24825bcc9c41d0e81c14b03993acb0 100644 (file)
@@ -527,22 +527,9 @@ int ima_check_policy(void)
  */
 void ima_update_policy(void)
 {
-       struct list_head *first, *last, *policy;
+       struct list_head *policy = &ima_policy_rules;
 
-       /* append current policy with the new rules */
-       first = (&ima_temp_rules)->next;
-       last = (&ima_temp_rules)->prev;
-       policy = &ima_policy_rules;
-
-       synchronize_rcu();
-
-       last->next = policy;
-       rcu_assign_pointer(list_next_rcu(policy->prev), first);
-       first->prev = policy->prev;
-       policy->prev = last;
-
-       /* prepare for the next policy rules addition */
-       INIT_LIST_HEAD(&ima_temp_rules);
+       list_splice_tail_init_rcu(&ima_temp_rules, policy, synchronize_rcu);
 
        if (ima_rules != policy) {
                ima_policy_flag = 0;