diff options
Diffstat (limited to 'security/selinux/ss/context.h')
| -rw-r--r-- | security/selinux/ss/context.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/security/selinux/ss/context.h b/security/selinux/ss/context.h index 0562bacb7b99..2eee0dab524d 100644 --- a/security/selinux/ss/context.h +++ b/security/selinux/ss/context.h | |||
| @@ -55,6 +55,29 @@ out: | |||
| 55 | return rc; | 55 | return rc; |
| 56 | } | 56 | } |
| 57 | 57 | ||
| 58 | /* | ||
| 59 | * Sets both levels in the MLS range of 'dst' to the low level of 'src'. | ||
| 60 | */ | ||
| 61 | static inline int mls_context_cpy_low(struct context *dst, struct context *src) | ||
| 62 | { | ||
| 63 | int rc; | ||
| 64 | |||
| 65 | if (!selinux_mls_enabled) | ||
| 66 | return 0; | ||
| 67 | |||
| 68 | dst->range.level[0].sens = src->range.level[0].sens; | ||
| 69 | rc = ebitmap_cpy(&dst->range.level[0].cat, &src->range.level[0].cat); | ||
| 70 | if (rc) | ||
| 71 | goto out; | ||
| 72 | |||
| 73 | dst->range.level[1].sens = src->range.level[0].sens; | ||
| 74 | rc = ebitmap_cpy(&dst->range.level[1].cat, &src->range.level[0].cat); | ||
| 75 | if (rc) | ||
| 76 | ebitmap_destroy(&dst->range.level[0].cat); | ||
| 77 | out: | ||
| 78 | return rc; | ||
| 79 | } | ||
| 80 | |||
| 58 | static inline int mls_context_cmp(struct context *c1, struct context *c2) | 81 | static inline int mls_context_cmp(struct context *c1, struct context *c2) |
| 59 | { | 82 | { |
| 60 | if (!selinux_mls_enabled) | 83 | if (!selinux_mls_enabled) |
