diff options
Diffstat (limited to 'security/selinux/ss/conditional.c')
| -rw-r--r-- | security/selinux/ss/conditional.c | 12 | 
1 files changed, 6 insertions, 6 deletions
| diff --git a/security/selinux/ss/conditional.c b/security/selinux/ss/conditional.c index 0b32f3ab025e..1ef74c085f2b 100644 --- a/security/selinux/ss/conditional.c +++ b/security/selinux/ss/conditional.c @@ -605,7 +605,6 @@ static int cond_dup_av_list(struct cond_av_list *new,  			struct cond_av_list *orig,  			struct avtab *avtab)  { -	struct avtab_node *avnode;  	u32 i;  	memset(new, 0, sizeof(*new)); @@ -615,10 +614,11 @@ static int cond_dup_av_list(struct cond_av_list *new,  		return -ENOMEM;  	for (i = 0; i < orig->len; i++) { -		avnode = avtab_search_node(avtab, &orig->nodes[i]->key); -		if (WARN_ON(!avnode)) -			return -EINVAL; -		new->nodes[i] = avnode; +		new->nodes[i] = avtab_insert_nonunique(avtab, +						       &orig->nodes[i]->key, +						       &orig->nodes[i]->datum); +		if (!new->nodes[i]) +			return -ENOMEM;  		new->len++;  	} @@ -630,7 +630,7 @@ static int duplicate_policydb_cond_list(struct policydb *newp,  {  	int rc, i, j; -	rc = avtab_duplicate(&newp->te_cond_avtab, &origp->te_cond_avtab); +	rc = avtab_alloc_dup(&newp->te_cond_avtab, &origp->te_cond_avtab);  	if (rc)  		return rc; |