[apparmor] [PATCH 15/16] apparmor: fix refcount race when finding a child profile

Seth Arnold seth.arnold at canonical.com
Thu Apr 28 03:33:59 UTC 2016


On Wed, Apr 20, 2016 at 11:52:57PM -0700, John Johansen wrote:
> When finding a child profile via an rcu critical section, the profile
> may be put and scheduled for deletion after the child is found but
> before its refcount is incremented.
> 
> Protect against this by repeating the lookup if the profiles refcount
> is 0 and is one its way to deletion.
> 
> Signed-off-by: John Johansen <john.johansen at canonical.com>

Acked-by: Seth Arnold <seth.arnold at canonical.com>

THanks

> ---
>  security/apparmor/policy.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/security/apparmor/policy.c b/security/apparmor/policy.c
> index ca402d0..7807125 100644
> --- a/security/apparmor/policy.c
> +++ b/security/apparmor/policy.c
> @@ -766,7 +766,9 @@ struct aa_profile *aa_find_child(struct aa_profile *parent, const char *name)
>  	struct aa_profile *profile;
>  
>  	rcu_read_lock();
> -	profile = aa_get_profile(__find_child(&parent->base.profiles, name));
> +	do {
> +		profile = __find_child(&parent->base.profiles, name);
> +	} while (profile && !aa_get_profile_not0(profile));
>  	rcu_read_unlock();
>  
>  	/* refcount released by caller */
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: Digital signature
URL: <https://lists.ubuntu.com/archives/apparmor/attachments/20160427/8745ee91/attachment.pgp>


More information about the AppArmor mailing list