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 <omosnace@redhat.com> Signed-off-by: Paul Moore <paul@paul-moore.com>
This commit is contained in:
committed by
Paul Moore
parent
6efb943b86
commit
fba472bb38
@@ -628,7 +628,8 @@ static int cond_dup_av_list(struct cond_av_list *new,
|
|||||||
static int duplicate_policydb_cond_list(struct policydb *newp,
|
static int duplicate_policydb_cond_list(struct policydb *newp,
|
||||||
struct policydb *origp)
|
struct policydb *origp)
|
||||||
{
|
{
|
||||||
int rc, i, j;
|
int rc;
|
||||||
|
u32 i;
|
||||||
|
|
||||||
rc = avtab_alloc_dup(&newp->te_cond_avtab, &origp->te_cond_avtab);
|
rc = avtab_alloc_dup(&newp->te_cond_avtab, &origp->te_cond_avtab);
|
||||||
if (rc)
|
if (rc)
|
||||||
@@ -648,12 +649,12 @@ static int duplicate_policydb_cond_list(struct policydb *newp,
|
|||||||
newp->cond_list_len++;
|
newp->cond_list_len++;
|
||||||
|
|
||||||
newn->cur_state = orign->cur_state;
|
newn->cur_state = orign->cur_state;
|
||||||
newn->expr.nodes = kcalloc(orign->expr.len,
|
newn->expr.nodes = kmemdup(orign->expr.nodes,
|
||||||
sizeof(*newn->expr.nodes), GFP_KERNEL);
|
orign->expr.len * sizeof(*orign->expr.nodes),
|
||||||
|
GFP_KERNEL);
|
||||||
if (!newn->expr.nodes)
|
if (!newn->expr.nodes)
|
||||||
goto error;
|
goto error;
|
||||||
for (j = 0; j < orign->expr.len; j++)
|
|
||||||
newn->expr.nodes[j] = orign->expr.nodes[j];
|
|
||||||
newn->expr.len = orign->expr.len;
|
newn->expr.len = orign->expr.len;
|
||||||
|
|
||||||
rc = cond_dup_av_list(&newn->true_list, &orign->true_list,
|
rc = cond_dup_av_list(&newn->true_list, &orign->true_list,
|
||||||
|
|||||||
Reference in New Issue
Block a user