diff options
Diffstat (limited to 'security/selinux/ss/context.h')
| -rw-r--r-- | security/selinux/ss/context.h | 20 | 
1 files changed, 20 insertions, 0 deletions
diff --git a/security/selinux/ss/context.h b/security/selinux/ss/context.h index 45e8fb0515f..212e3479a0d 100644 --- a/security/selinux/ss/context.h +++ b/security/selinux/ss/context.h @@ -74,6 +74,26 @@ out:  	return rc;  } +/* + * Sets both levels in the MLS range of 'dst' to the high level of 'src'. + */ +static inline int mls_context_cpy_high(struct context *dst, struct context *src) +{ +	int rc; + +	dst->range.level[0].sens = src->range.level[1].sens; +	rc = ebitmap_cpy(&dst->range.level[0].cat, &src->range.level[1].cat); +	if (rc) +		goto out; + +	dst->range.level[1].sens = src->range.level[1].sens; +	rc = ebitmap_cpy(&dst->range.level[1].cat, &src->range.level[1].cat); +	if (rc) +		ebitmap_destroy(&dst->range.level[0].cat); +out: +	return rc; +} +  static inline int mls_context_cmp(struct context *c1, struct context *c2)  {  	return ((c1->range.level[0].sens == c2->range.level[0].sens) &&  | 
