From: Ondrej Mosnacek Date: Tue, 30 Mar 2021 13:16:45 +0000 (+0200) Subject: selinux: simplify duplicate_policydb_cond_list() by using kmemdup() X-Git-Tag: accepted/tizen/unified/20230118.172025~6713^2~10 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fba472bb38e2d2b9a676364ade4be4e5df665a82;p=platform%2Fkernel%2Flinux-rpi.git selinux: simplify duplicate_policydb_cond_list() by using kmemdup() We can do the allocation + copying of expr.nodes in one go using kmemdup(). Signed-off-by: Ondrej Mosnacek Signed-off-by: Paul Moore --- diff --git a/security/selinux/ss/conditional.c b/security/selinux/ss/conditional.c index 1ef74c0..f6dfa9c 100644 --- a/security/selinux/ss/conditional.c +++ b/security/selinux/ss/conditional.c @@ -628,7 +628,8 @@ static int cond_dup_av_list(struct cond_av_list *new, static int duplicate_policydb_cond_list(struct policydb *newp, struct policydb *origp) { - int rc, i, j; + int rc; + u32 i; rc = avtab_alloc_dup(&newp->te_cond_avtab, &origp->te_cond_avtab); if (rc) @@ -648,12 +649,12 @@ static int duplicate_policydb_cond_list(struct policydb *newp, newp->cond_list_len++; newn->cur_state = orign->cur_state; - newn->expr.nodes = kcalloc(orign->expr.len, - sizeof(*newn->expr.nodes), GFP_KERNEL); + newn->expr.nodes = kmemdup(orign->expr.nodes, + orign->expr.len * sizeof(*orign->expr.nodes), + GFP_KERNEL); if (!newn->expr.nodes) goto error; - for (j = 0; j < orign->expr.len; j++) - newn->expr.nodes[j] = orign->expr.nodes[j]; + newn->expr.len = orign->expr.len; rc = cond_dup_av_list(&newn->true_list, &orign->true_list,