Re: [PATCH v10 05/27] ima: Define ima_namespace struct and start moving variables into it

Mimi Zohar <[email protected]>
Newsgroups dev.linux.lists.containers,org.kernel.vger.linux-integrity,org.kernel.vger.linux-kernel,org.kernel.vger.linux-security-module
Message-ID <[email protected]>
On Tue, 2022-02-01 at 15:37 -0500, Stefan Berger wrote:
> Define the ima_namespace structure and the ima_namespace variable
> init_ima_ns for the host's IMA namespace. Implement basic functions for
> namespacing support.

Implement the basic functions - ima_ns_init()  and ima_init_namespace()
- for namespacing support.

> 
> Move variables related to the IMA policy into the ima_namespace. This way
> the IMA policy of an IMA namespace can be set and displayed using a
> front-end like securityfs.

> Implement ima_ns_from_file() to get the IMA namespace via the user
> namespace of the securityfs superblock that a file belongs to.

Currently, ima_ns_from_file() doesn't exist in this patch.

> 
> To get the current ima_namespace use &init_ima_ns when a function
> that is related to a policy rule is called.

In preparation for IMA namespacing, update the existing functions to
pass the ima_namespace struct.  For now, ...

> 
> 
> Signed-off-by: Stefan Berger <[email protected]>
> Acked-by: Christian Brauner <[email protected]>

After addressing the one inline comment,
	Reviewed-by: Mimi Zohar <[email protected]>
> 
> ---

>  
> @@ -119,6 +117,17 @@ struct ima_kexec_hdr {
>  	u64 count;
>  };
>  
> +struct ima_namespace {
> +	/* policy rules */
> +	struct list_head ima_default_rules;
> +	struct list_head ima_policy_rules;
> +	struct list_head ima_temp_rules;

These local policy variables weren't previously commented, but with the
move to a structure it would be good to add comments.  For example, the
architecture policy rules persist even after a custom policy is loaded.

ima_default_rules: /* Kconfig, builtin, & arch rules */
ima_policy_rules:  /* arch & custom rules */

> +
> +	struct list_head __rcu *ima_rules;	/* current policy */

/* Pointer to the current policy */.

> +	int ima_policy_flag;
> +} __randomize_layout;
> +extern struct ima_namespace init_ima_ns;
> +
>  extern const int read_idmap[];
>  
>  #ifdef CONFIG_HAVE_IMA_KEXEC
> 
>  {
> +	struct ima_namespace *ns = &init_ima_ns;
>  	char *data;
>  	ssize_t result;
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.