summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Johansen <john.johansen@canonical.com>2016-04-11 16:55:10 -0700
committerJiri Slaby <jslaby@suse.cz>2017-01-27 11:16:04 +0100
commit6265dbd49067df7b38b0ed20deaee10d9dae0e1f (patch)
tree2925b6af36a08fd8f1ec0b41262a99003844f1af
parentf75bde091d91a839aabdd83cac9ad73e09f42429 (diff)
downloadlinux-stable-6265dbd49067df7b38b0ed20deaee10d9dae0e1f.tar.gz
linux-stable-6265dbd49067df7b38b0ed20deaee10d9dae0e1f.tar.bz2
linux-stable-6265dbd49067df7b38b0ed20deaee10d9dae0e1f.zip
apparmor: fix refcount bug in profile replacement
commit dcda617a0c5160c73e0aa02813c871339ea08004 upstream. Signed-off-by: John Johansen <john.johansen@canonical.com> Acked-by: Seth Arnold <seth.arnold@canonical.com> Signed-off-by: Jiri Slaby <jslaby@suse.cz>
-rw-r--r--security/apparmor/policy.c4
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)
aa_get_profile(newest);
aa_put_profile(parent);
rcu_assign_pointer(ent->new->parent, newest);
- } else
- aa_put_profile(newest);
+ }
/* aafs interface uses replacedby */
rcu_assign_pointer(ent->new->replacedby->profile,
aa_get_profile(ent->new));
__list_add_profile(&parent->base.profiles, ent->new);
+ aa_put_profile(newest);
} else {
/* aafs interface uses replacedby */
rcu_assign_pointer(ent->new->replacedby->profile,