|
@@ -527,22 +527,9 @@ int ima_check_policy(void)
|
|
*/
|
|
*/
|
|
void ima_update_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) {
|
|
if (ima_rules != policy) {
|
|
ima_policy_flag = 0;
|
|
ima_policy_flag = 0;
|