]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ima: Introduce _ima_measurements_start() and _ima_measurements_next()
authorRoberto Sassu <roberto.sassu@huawei.com>
Fri, 5 Jun 2026 17:22:29 +0000 (19:22 +0200)
committerMimi Zohar <zohar@linux.ibm.com>
Mon, 8 Jun 2026 15:43:03 +0000 (11:43 -0400)
Introduce _ima_measurements_start() and _ima_measurements_next(), renamed
from ima_measurements_start() and ima_measurements_next(), to include the
list head as an additional parameter, so that iteration on different lists
can be implemented by calling those functions.

No functional change: ima_measurements_start() and ima_measurements_next()
pass the ima_measurements list head, used before. They become wrappers for
the new functions.

Link: https://github.com/linux-integrity/linux/issues/1
Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com>
Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
security/integrity/ima/ima_fs.c

index fcfcf7b6eae297a01449dbfbf465d3e2c173cbb9..dcdc4cb8fa0fa0b1c1b3c129584c3bf7ebcd3b14 100644 (file)
@@ -72,14 +72,15 @@ static const struct file_operations ima_measurements_count_ops = {
 };
 
 /* returns pointer to hlist_node */
-static void *ima_measurements_start(struct seq_file *m, loff_t *pos)
+static void *_ima_measurements_start(struct seq_file *m, loff_t *pos,
+                                    struct list_head *head)
 {
        loff_t l = *pos;
        struct ima_queue_entry *qe;
 
        /* we need a lock since pos could point beyond last element */
        rcu_read_lock();
-       list_for_each_entry_rcu(qe, &ima_measurements, later) {
+       list_for_each_entry_rcu(qe, head, later) {
                if (!l--) {
                        rcu_read_unlock();
                        return qe;
@@ -89,7 +90,13 @@ static void *ima_measurements_start(struct seq_file *m, loff_t *pos)
        return NULL;
 }
 
-static void *ima_measurements_next(struct seq_file *m, void *v, loff_t *pos)
+static void *ima_measurements_start(struct seq_file *m, loff_t *pos)
+{
+       return _ima_measurements_start(m, pos, &ima_measurements);
+}
+
+static void *_ima_measurements_next(struct seq_file *m, void *v, loff_t *pos,
+                                   struct list_head *head)
 {
        struct ima_queue_entry *qe = v;
 
@@ -101,7 +108,12 @@ static void *ima_measurements_next(struct seq_file *m, void *v, loff_t *pos)
        rcu_read_unlock();
        (*pos)++;
 
-       return (&qe->later == &ima_measurements) ? NULL : qe;
+       return (&qe->later == head) ? NULL : qe;
+}
+
+static void *ima_measurements_next(struct seq_file *m, void *v, loff_t *pos)
+{
+       return _ima_measurements_next(m, v, pos, &ima_measurements);
 }
 
 static void ima_measurements_stop(struct seq_file *m, void *v)