forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/security/selinux/ss/mls.c
....@@ -165,8 +165,8 @@
165165
166166 if (!l->sens || l->sens > p->p_levels.nprim)
167167 return 0;
168
- levdatum = hashtab_search(p->p_levels.table,
169
- sym_name(p, SYM_LEVELS, l->sens - 1));
168
+ levdatum = symtab_search(&p->p_levels,
169
+ sym_name(p, SYM_LEVELS, l->sens - 1));
170170 if (!levdatum)
171171 return 0;
172172
....@@ -293,7 +293,7 @@
293293 *(next_cat++) = '\0';
294294
295295 /* Parse sensitivity. */
296
- levdatum = hashtab_search(pol->p_levels.table, sensitivity);
296
+ levdatum = symtab_search(&pol->p_levels, sensitivity);
297297 if (!levdatum)
298298 return -EINVAL;
299299 context->range.level[l].sens = levdatum->level->sens;
....@@ -312,7 +312,7 @@
312312 *rngptr++ = '\0';
313313 }
314314
315
- catdatum = hashtab_search(pol->p_cats.table, cur_cat);
315
+ catdatum = symtab_search(&pol->p_cats, cur_cat);
316316 if (!catdatum)
317317 return -EINVAL;
318318
....@@ -325,7 +325,7 @@
325325 if (rngptr == NULL)
326326 continue;
327327
328
- rngdatum = hashtab_search(pol->p_cats.table, rngptr);
328
+ rngdatum = symtab_search(&pol->p_cats, rngptr);
329329 if (!rngdatum)
330330 return -EINVAL;
331331
....@@ -458,9 +458,10 @@
458458 return 0;
459459
460460 for (l = 0; l < 2; l++) {
461
- levdatum = hashtab_search(newp->p_levels.table,
462
- sym_name(oldp, SYM_LEVELS,
463
- oldc->range.level[l].sens - 1));
461
+ char *name = sym_name(oldp, SYM_LEVELS,
462
+ oldc->range.level[l].sens - 1);
463
+
464
+ levdatum = symtab_search(&newp->p_levels, name);
464465
465466 if (!levdatum)
466467 return -EINVAL;
....@@ -470,8 +471,8 @@
470471 node, i) {
471472 int rc;
472473
473
- catdatum = hashtab_search(newp->p_cats.table,
474
- sym_name(oldp, SYM_CATS, i));
474
+ catdatum = symtab_search(&newp->p_cats,
475
+ sym_name(oldp, SYM_CATS, i));
475476 if (!catdatum)
476477 return -EINVAL;
477478 rc = ebitmap_set_bit(&newc->range.level[l].cat,
....@@ -506,7 +507,7 @@
506507 rtr.source_type = scontext->type;
507508 rtr.target_type = tcontext->type;
508509 rtr.target_class = tclass;
509
- r = hashtab_search(p->range_tr, &rtr);
510
+ r = policydb_rangetr_search(p, &rtr);
510511 if (r)
511512 return mls_range_set(newcontext, r);
512513
....@@ -529,11 +530,14 @@
529530 return mls_context_cpy_high(newcontext, tcontext);
530531 case DEFAULT_TARGET_LOW_HIGH:
531532 return mls_context_cpy(newcontext, tcontext);
533
+ case DEFAULT_GLBLUB:
534
+ return mls_context_glblub(newcontext,
535
+ scontext, tcontext);
532536 }
533537
534
- /* Fallthrough */
538
+ fallthrough;
535539 case AVTAB_CHANGE:
536
- if ((tclass == p->process_class) || (sock == true))
540
+ if ((tclass == p->process_class) || sock)
537541 /* Use the process MLS attributes. */
538542 return mls_context_cpy(newcontext, scontext);
539543 else
....@@ -542,8 +546,6 @@
542546 case AVTAB_MEMBER:
543547 /* Use the process effective MLS attributes. */
544548 return mls_context_cpy_low(newcontext, scontext);
545
-
546
- /* fall through */
547549 }
548550 return -EINVAL;
549551 }