]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blobdiff - security/selinux/ss/mls.c
Merge branch 'linus' into core/softlockup
[mirror_ubuntu-hirsute-kernel.git] / security / selinux / ss / mls.c
index 8b1706b7b3ccc72dc6c373423a66f0b012fc1a39..77d745da48bb6e4c2153fc3a64852b9c08f80e51 100644 (file)
@@ -239,7 +239,8 @@ int mls_context_isvalid(struct policydb *p, struct context *c)
  * Policy read-lock must be held for sidtab lookup.
  *
  */
-int mls_context_to_sid(char oldc,
+int mls_context_to_sid(struct policydb *pol,
+                      char oldc,
                       char **scontext,
                       struct context *context,
                       struct sidtab *s,
@@ -286,7 +287,7 @@ int mls_context_to_sid(char oldc,
                *p++ = 0;
 
        for (l = 0; l < 2; l++) {
-               levdatum = hashtab_search(policydb.p_levels.table, scontextp);
+               levdatum = hashtab_search(pol->p_levels.table, scontextp);
                if (!levdatum) {
                        rc = -EINVAL;
                        goto out;
@@ -311,7 +312,7 @@ int mls_context_to_sid(char oldc,
                                        *rngptr++ = 0;
                                }
 
-                               catdatum = hashtab_search(policydb.p_cats.table,
+                               catdatum = hashtab_search(pol->p_cats.table,
                                                          scontextp);
                                if (!catdatum) {
                                        rc = -EINVAL;
@@ -327,7 +328,7 @@ int mls_context_to_sid(char oldc,
                                if (rngptr) {
                                        int i;
 
-                                       rngdatum = hashtab_search(policydb.p_cats.table, rngptr);
+                                       rngdatum = hashtab_search(pol->p_cats.table, rngptr);
                                        if (!rngdatum) {
                                                rc = -EINVAL;
                                                goto out;
@@ -395,7 +396,7 @@ int mls_from_string(char *str, struct context *context, gfp_t gfp_mask)
        if (!tmpstr) {
                rc = -ENOMEM;
        } else {
-               rc = mls_context_to_sid(':', &tmpstr, context,
+               rc = mls_context_to_sid(&policydb, ':', &tmpstr, context,
                                        NULL, SECSID_NULL);
                kfree(freestr);
        }
@@ -436,13 +437,13 @@ int mls_setup_user_range(struct context *fromcon, struct user_datum *user,
                struct mls_level *usercon_clr = &(usercon->range.level[1]);
 
                /* Honor the user's default level if we can */
-               if (mls_level_between(user_def, fromcon_sen, fromcon_clr)) {
+               if (mls_level_between(user_def, fromcon_sen, fromcon_clr))
                        *usercon_sen = *user_def;
-               } else if (mls_level_between(fromcon_sen, user_def, user_clr)) {
+               else if (mls_level_between(fromcon_sen, user_def, user_clr))
                        *usercon_sen = *fromcon_sen;
-               } else if (mls_level_between(fromcon_clr, user_low, user_def)) {
+               else if (mls_level_between(fromcon_clr, user_low, user_def))
                        *usercon_sen = *user_low;
-               else
+               else
                        return -EINVAL;
 
                /* Lower the clearance of available contexts