diff options
author | John Johansen <john.johansen@canonical.com> | 2016-04-11 19:55:10 -0400 |
---|---|---|
committer | John Johansen <john.johansen@canonical.com> | 2016-07-12 11:43:10 -0400 |
commit | dcda617a0c5160c73e0aa02813c871339ea08004 (patch) | |
tree | 6bea67854d3f63fea51e4199d5f87a2c2d31a2a6 /security | |
parent | e1e5fa961612d774c122fc79f93a50a9dc8db321 (diff) |
apparmor: fix refcount bug in profile replacement
Signed-off-by: John Johansen <john.johansen@canonical.com>
Acked-by: Seth Arnold <seth.arnold@canonical.com>
Diffstat (limited to 'security')
-rw-r--r-- | security/apparmor/policy.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/security/apparmor/policy.c b/security/apparmor/policy.c index 705c2879d3a9..222052f64e2c 100644 --- a/security/apparmor/policy.c +++ b/security/apparmor/policy.c | |||
@@ -1189,12 +1189,12 @@ ssize_t aa_replace_profiles(void *udata, size_t size, bool noreplace) | |||
1189 | aa_get_profile(newest); | 1189 | aa_get_profile(newest); |
1190 | aa_put_profile(parent); | 1190 | aa_put_profile(parent); |
1191 | rcu_assign_pointer(ent->new->parent, newest); | 1191 | rcu_assign_pointer(ent->new->parent, newest); |
1192 | } else | 1192 | } |
1193 | aa_put_profile(newest); | ||
1194 | /* aafs interface uses replacedby */ | 1193 | /* aafs interface uses replacedby */ |
1195 | rcu_assign_pointer(ent->new->replacedby->profile, | 1194 | rcu_assign_pointer(ent->new->replacedby->profile, |
1196 | aa_get_profile(ent->new)); | 1195 | aa_get_profile(ent->new)); |
1197 | __list_add_profile(&parent->base.profiles, ent->new); | 1196 | __list_add_profile(&parent->base.profiles, ent->new); |
1197 | aa_put_profile(newest); | ||
1198 | } else { | 1198 | } else { |
1199 | /* aafs interface uses replacedby */ | 1199 | /* aafs interface uses replacedby */ |
1200 | rcu_assign_pointer(ent->new->replacedby->profile, | 1200 | rcu_assign_pointer(ent->new->replacedby->profile, |