2010-02-24 10:39:21

by Xiaotian Feng

[permalink] [raw]
Subject: [PATCH] security: fix error return path in ima_inode_alloc

If radix_tree_preload is failed in ima_inode_alloc, we don't need
radix_tree_preload_end because kernel is alread preempt enabled

Signed-off-by: Xiaotian Feng <[email protected]>
Cc: Mimi Zohar <[email protected]>
Cc: James Morris <[email protected]>
Cc: Eric Paris <[email protected]>
Cc: Al Viro <[email protected]>
Cc: Amit K. Arora <[email protected]>
---
security/integrity/ima/ima_iint.c | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/security/integrity/ima/ima_iint.c b/security/integrity/ima/ima_iint.c
index 0d83edc..2d4d05d 100644
--- a/security/integrity/ima/ima_iint.c
+++ b/security/integrity/ima/ima_iint.c
@@ -63,12 +63,11 @@ int ima_inode_alloc(struct inode *inode)
spin_lock(&ima_iint_lock);
rc = radix_tree_insert(&ima_iint_store, (unsigned long)inode, iint);
spin_unlock(&ima_iint_lock);
+ radix_tree_preload_end();
out:
if (rc < 0)
kmem_cache_free(iint_cache, iint);

- radix_tree_preload_end();
-
return rc;
}

--
1.6.6


2010-02-24 15:41:51

by Mimi Zohar

[permalink] [raw]
Subject: Re: [PATCH] security: fix error return path in ima_inode_alloc

On Wed, 2010-02-24 at 18:39 +0800, Xiaotian Feng wrote:
> If radix_tree_preload is failed in ima_inode_alloc, we don't need
> radix_tree_preload_end because kernel is alread preempt enabled
>
> Signed-off-by: Xiaotian Feng <[email protected]>

Signed-off-by: Mimi Zohar <[email protected]>

thanks,
Mimi

> Cc: Mimi Zohar <[email protected]>
> Cc: James Morris <[email protected]>
> Cc: Eric Paris <[email protected]>
> Cc: Al Viro <[email protected]>
> Cc: Amit K. Arora <[email protected]>
> ---
> security/integrity/ima/ima_iint.c | 3 +--
> 1 files changed, 1 insertions(+), 2 deletions(-)
>
> diff --git a/security/integrity/ima/ima_iint.c b/security/integrity/ima/ima_iint.c
> index 0d83edc..2d4d05d 100644
> --- a/security/integrity/ima/ima_iint.c
> +++ b/security/integrity/ima/ima_iint.c
> @@ -63,12 +63,11 @@ int ima_inode_alloc(struct inode *inode)
> spin_lock(&ima_iint_lock);
> rc = radix_tree_insert(&ima_iint_store, (unsigned long)inode, iint);
> spin_unlock(&ima_iint_lock);
> + radix_tree_preload_end();
> out:
> if (rc < 0)
> kmem_cache_free(iint_cache, iint);
>
> - radix_tree_preload_end();
> -
> return rc;
> }
>