Messages in this thread | | | Subject | Re: [PATCH v6 02/17] ima: Define ns_status for storing namespaced iint data | From | Mimi Zohar <> | Date | Wed, 15 Dec 2021 16:12:17 -0500 |
| |
Hi Stefan,
On Fri, 2021-12-10 at 14:47 -0500, Stefan Berger wrote: > From: Mehmet Kayaalp <mkayaalp@linux.vnet.ibm.com> > > 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 <mkayaalp@linux.vnet.ibm.com> > 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.
> 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.
thanks,
Mimi
> return 0; > }
| |