}
-static void label_destroy(struct aa_label *label)
+void aa_label_destroy(struct aa_label *label)
{
AA_BUG(!label);
}
}
- if (rcu_dereference_protected(label->proxy->label, true) == label)
- rcu_assign_pointer(label->proxy->label, NULL);
-
+ if (label->proxy) {
+ if (rcu_dereference_protected(label->proxy->label, true) == label)
+ rcu_assign_pointer(label->proxy->label, NULL);
+ aa_put_proxy(label->proxy);
+ }
aa_free_secid(label->secid);
- aa_put_proxy(label->proxy);
label->proxy = (struct aa_proxy *) PROXY_POISON + 1;
}
if (!label)
return;
- label_destroy(label);
+ aa_label_destroy(label);
kfree(label);
}