apparmor: cleanup: move perm accumulation into perms.h
authorJohn Johansen <john.johansen@canonical.com>
Tue, 6 Sep 2022 06:57:51 +0000 (23:57 -0700)
committerJohn Johansen <john.johansen@canonical.com>
Mon, 3 Oct 2022 21:49:04 +0000 (14:49 -0700)
Perm accumulation is going to be used much more frequently so let
the compiler figure out if it can be optimized when used.

Signed-off-by: John Johansen <john.johansen@canonical.com>
security/apparmor/include/perms.h
security/apparmor/lib.c

index 0de8c3f..9fa7195 100644 (file)
@@ -96,6 +96,59 @@ struct aa_perms {
 extern struct aa_perms nullperms;
 extern struct aa_perms allperms;
 
+/**
+ * aa_perms_accum_raw - accumulate perms with out masking off overlapping perms
+ * @accum - perms struct to accumulate into
+ * @addend - perms struct to add to @accum
+ */
+static inline void aa_perms_accum_raw(struct aa_perms *accum,
+                                     struct aa_perms *addend)
+{
+       accum->deny |= addend->deny;
+       accum->allow &= addend->allow & ~addend->deny;
+       accum->audit |= addend->audit & addend->allow;
+       accum->quiet &= addend->quiet & ~addend->allow;
+       accum->kill |= addend->kill & ~addend->allow;
+       accum->complain |= addend->complain & ~addend->allow & ~addend->deny;
+       accum->cond |= addend->cond & ~addend->allow & ~addend->deny;
+       accum->hide &= addend->hide & ~addend->allow;
+       accum->prompt |= addend->prompt & ~addend->allow & ~addend->deny;
+       accum->subtree |= addend->subtree & ~addend->deny;
+
+       if (!accum->xindex)
+               accum->xindex = addend->xindex;
+       if (!accum->tag)
+               accum->tag = addend->tag;
+       if (!accum->label)
+               accum->label = addend->label;
+}
+
+/**
+ * aa_perms_accum - accumulate perms, masking off overlapping perms
+ * @accum - perms struct to accumulate into
+ * @addend - perms struct to add to @accum
+ */
+static inline void aa_perms_accum(struct aa_perms *accum,
+                                 struct aa_perms *addend)
+{
+       accum->deny |= addend->deny;
+       accum->allow &= addend->allow & ~accum->deny;
+       accum->audit |= addend->audit & accum->allow;
+       accum->quiet &= addend->quiet & ~accum->allow;
+       accum->kill |= addend->kill & ~accum->allow;
+       accum->complain |= addend->complain & ~accum->allow & ~accum->deny;
+       accum->cond |= addend->cond & ~accum->allow & ~accum->deny;
+       accum->hide &= addend->hide & ~accum->allow;
+       accum->prompt |= addend->prompt & ~accum->allow & ~accum->deny;
+       accum->subtree &= addend->subtree & ~accum->deny;
+
+       if (!accum->xindex)
+               accum->xindex = addend->xindex;
+       if (!accum->tag)
+               accum->tag = addend->tag;
+       if (!accum->label)
+               accum->label = addend->label;
+}
 
 #define xcheck(FN1, FN2)       \
 ({                             \
index d6a8c36..10e3b11 100644 (file)
@@ -331,58 +331,6 @@ void aa_apply_modes_to_perms(struct aa_profile *profile, struct aa_perms *perms)
                perms->prompt = ALL_PERMS_MASK;
 }
 
-/**
- * aa_perms_accum_raw - accumulate perms with out masking off overlapping perms
- * @accum - perms struct to accumulate into
- * @addend - perms struct to add to @accum
- */
-void aa_perms_accum_raw(struct aa_perms *accum, struct aa_perms *addend)
-{
-       accum->deny |= addend->deny;
-       accum->allow &= addend->allow & ~addend->deny;
-       accum->audit |= addend->audit & addend->allow;
-       accum->quiet &= addend->quiet & ~addend->allow;
-       accum->kill |= addend->kill & ~addend->allow;
-       accum->complain |= addend->complain & ~addend->allow & ~addend->deny;
-       accum->cond |= addend->cond & ~addend->allow & ~addend->deny;
-       accum->hide &= addend->hide & ~addend->allow;
-       accum->prompt |= addend->prompt & ~addend->allow & ~addend->deny;
-       accum->subtree |= addend->subtree & ~addend->deny;
-
-       if (!accum->xindex)
-               accum->xindex = addend->xindex;
-       if (!accum->tag)
-               accum->tag = addend->tag;
-       if (!accum->label)
-               accum->label = addend->label;
-}
-
-/**
- * aa_perms_accum - accumulate perms, masking off overlapping perms
- * @accum - perms struct to accumulate into
- * @addend - perms struct to add to @accum
- */
-void aa_perms_accum(struct aa_perms *accum, struct aa_perms *addend)
-{
-       accum->deny |= addend->deny;
-       accum->allow &= addend->allow & ~accum->deny;
-       accum->audit |= addend->audit & accum->allow;
-       accum->quiet &= addend->quiet & ~accum->allow;
-       accum->kill |= addend->kill & ~accum->allow;
-       accum->complain |= addend->complain & ~accum->allow & ~accum->deny;
-       accum->cond |= addend->cond & ~accum->allow & ~accum->deny;
-       accum->hide &= addend->hide & ~accum->allow;
-       accum->prompt |= addend->prompt & ~accum->allow & ~accum->deny;
-       accum->subtree &= addend->subtree & ~accum->deny;
-
-       if (!accum->xindex)
-               accum->xindex = addend->xindex;
-       if (!accum->tag)
-               accum->tag = addend->tag;
-       if (!accum->label)
-               accum->label = addend->label;
-}
-
 void aa_profile_match_label(struct aa_profile *profile, struct aa_label *label,
                            int type, u32 request, struct aa_perms *perms)
 {