Thread (17 messages) 17 messages, 3 authors, 2022-11-14

Re: [PATCH v5 2/2] ima: Handle -ESTALE returned by ima_filter_rule_match()

From: Guozihua (Scott) <hidden>
Date: 2022-09-23 04:02:01
Also in: linux-integrity

On 2022/9/22 19:09, Mimi Zohar wrote:
Hi Scott,

On Wed, 2022-09-21 at 20:58 +0800, GUO Zihua wrote:
quoted
                 }
-               if (!rc)
-                       return false;
+
+               if (rc == -ESTALE && !rule_reinitialized) {
Ok, this limits allocating ima_lsm_copy_rule() to the first -ESTALE,
quoted
+                       lsm_rule = ima_lsm_copy_rule(rule);
+                       if (lsm_rule) {
+                               rule_reinitialized = true;
+                               goto retry;
but "retry" is also limited to the first -ESTALE.
Technically we would only need one retry. This loop is looping on all 
the lsm members of one rule, and ima_lsm_copy_rule would update all the 
lsm members of this rule. The "lsm member" here refers to LSM defined 
properties like obj_user, obj_role etc. These members are of AND 
relation, meaning all lsm members together would form one LSM rule.

As of the scenario you mentioned, I think it should be really rare. 
Spending to much time and code on this might not worth it.
quoted
+                       }
+               }
+               if (!rc) {
+                       result = false;
+                       goto out;
+               }
         }
-       return true;
+       result = true;
+
+out:
+       if (rule_reinitialized) {
+               for (i = 0; i < MAX_LSM_RULES; i++)
+                       ima_filter_rule_free(lsm_rule->lsm[i].rule);
+               kfree(lsm_rule);
+       }
+       return result;
  }

-- 
Best
GUO Zihua
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help