Re: [PATCH v6 02/17] ima: Define ns_status for storing namespaced iint data
From: Stefan Berger <stefanb@linux.ibm.com>
Date: 2021-12-16 02:37:27
Also in:
linux-integrity, lkml
On 12/15/21 16:12, Mimi Zohar wrote:
Hi Stefan, On Fri, 2021-12-10 at 14:47 -0500, Stefan Berger wrote:quoted
From: Mehmet Kayaalp <redacted> This patch adds an rbtree to the IMA namespace structure that stores a namespaced version of iint->flags in ns_status struct. Similar to the integrity_iint_cache, both the iint ns_struct are looked up using the inode pointer value. The lookup, allocate, and insertion code is also similar, except ns_struct is not free'd when the inode is free'd. Instead, the lookup verifies the i_ino and i_generation fields are also a match. Signed-off-by: Mehmet Kayaalp <redacted> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>Again, hopefully it isn't premature for generic comments: - Function/inline comments would be appreciated, especially when the code differs from the original code. Example below.quoted
diff --git a/security/integrity/ima/ima_init_ima_ns.c b/security/integrity/ima/ima_init_ima_ns.c index f820686baf9f..08781a44f7bf 100644 --- a/security/integrity/ima/ima_init_ima_ns.c +++ b/security/integrity/ima/ima_init_ima_ns.c@@ -14,11 +14,18 @@ #include <linux/user_namespace.h> #include <linux/ima.h> #include <linux/proc_ns.h> +#include <linux/slab.h> #include "ima.h" int ima_init_namespace(struct ima_namespace *ns) { + ns->ns_status_tree = RB_ROOT; + rwlock_init(&ns->ns_status_lock); + ns->ns_status_cache = KMEM_CACHE(ns_status, SLAB_PANIC); + if (!ns->ns_status_cache) + return -ENOMEM; +For example, using KMEM_CACHE() is probably correct here, at least for now, but it is different than the original code which uses kmem_cache_alloc() with init_once(). Memory cleanup is done on free, before it is re-used.
KMEM_CACHE + kmem_cache_alloc/zalloc() are pretty common. What kind of comment would be helpful here? Stefan
thanks, Mimiquoted
return 0; }