This will be needed for introducing condref variants into policy.c:update_to_newest_parent.
Signed-off-by: Ryan Lee <[email protected]> --- security/apparmor/include/policy.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/security/apparmor/include/policy.h b/security/apparmor/include/policy.h index 240b2eba7687..2b210fc0dd9e 100644 --- a/security/apparmor/include/policy.h +++ b/security/apparmor/include/policy.h @@ -324,6 +324,19 @@ static inline struct aa_profile *aa_get_newest_profile(struct aa_profile *p) { return labels_profile(aa_get_newest_label(&p->label)); } +/** + * aa_get_newest_profile_condref - simple wrapper fn to wrap the label version + * @p: profile (NOT NULL) + * @needput: returns whether the reference needs put + * + * Returns refcount to newest version of the profile (maybe @p) + * + * Requires: @p must be held with a valid refcount + */ +static inline struct aa_profile *aa_get_newest_profile_condref(struct aa_profile *p, bool *needput) +{ + return labels_profile(aa_get_newest_label_condref(&p->label, needput)); +} static inline aa_state_t RULE_MEDIATES(struct aa_ruleset *rules, unsigned char class) @@ -428,6 +441,16 @@ static inline void aa_put_profile(struct aa_profile *p) if (p) kref_put(&p->label.count.count, aa_label_kref); } +/** + * aa_put_profile_condref - conditionally decrement refcount on profile @p + * @p: profile (MAYBE NULL) + * @needput: whether to put the profile + */ +static inline void aa_put_profile_condref(struct aa_profile *p, bool needput) +{ + if (unlikely(needput)) + aa_put_profile(p); +} static inline int AUDIT_MODE(struct aa_profile *profile) { -- 2.43.0
