selinux: cleanup the internal AVC counters on error in avc_update()

In avc_update_node() after calling avc_alloc_node() which,
increments avc->avc_cache.active_nodes counter,
but kmem_cache_free() were called when avc_xperms_populate()
fails , which does not decrements the active_nodes count,
resulting in the avc->avc_cache.active_nodes counter having
false value.so calling avc_node_node() to fix it.

Change-Id: Ic0298162cc766c0f21be7ab232e259766654dad3
Signed-off-by: Jaihind Yadav <jaihindyadav@codeaurora.org>
Signed-off-by: vijay.rayabarapu <vijay.rayabarapu@codeaurora.org>
Signed-off-by: Ravi Kumar Siddojigari <rsiddoji@codeaurora.org>
This commit is contained in:
vijay.rayabarapu 2019-12-17 17:25:47 +05:30 committed by Gerrit - the friendly Code Review server
parent 5f02f3bd36
commit 40425d2700

View File

@ -863,7 +863,7 @@ static int avc_update_node(u32 event, u32 perms, u8 driver, u8 xperm, u32 ssid,
if (orig->ae.xp_node) {
rc = avc_xperms_populate(node, orig->ae.xp_node);
if (rc) {
kmem_cache_free(avc_node_cachep, node);
avc_node_kill(node);
goto out_unlock;
}
}