···307307 return NULL;308308}309309310310-static void free_profile(struct aa_profile *profile);311310/**312311 * free_namespace - free a profile namespace313312 * @ns: the namespace to free (MAYBE NULL)···323324 aa_put_namespace(ns->parent);324325325326 ns->unconfined->ns = NULL;326326- free_profile(ns->unconfined);327327+ aa_free_profile(ns->unconfined);327328 kzfree(ns);328329}329330···567568}568569569570/**570570- * free_profile - free a profile571571+ * aa_free_profile - free a profile571572 * @profile: the profile to free (MAYBE NULL)572573 *573574 * Free a profile, its hats and null_profile. All references to the profile,···576577 * If the profile was referenced from a task context, free_profile() will577578 * be called from an rcu callback routine, so we must not sleep here.578579 */579579-static void free_profile(struct aa_profile *profile)580580+void aa_free_profile(struct aa_profile *profile)580581{581582 AA_DEBUG("%s(%p)\n", __func__, profile);582583···611612 if (p->flags & PFLAG_NS_COUNT)612613 free_namespace(p->ns);613614 else614614- free_profile(p);615615+ aa_free_profile(p);615616}616617617618/**
+2-2
security/apparmor/policy_unpack.c
···616616 else if (!name)617617 name = "unknown";618618 audit_iface(profile, name, "failed to unpack profile", e, error);619619- aa_put_profile(profile);619619+ aa_free_profile(profile);620620621621 return ERR_PTR(error);622622}···763763764764 error = verify_profile(profile);765765 if (error) {766766- aa_put_profile(profile);766766+ aa_free_profile(profile);767767 goto fail;768768 }769769