| 949 | } |
| 950 | |
| 951 | static void |
| 952 | rctl_rule_acquire_subject(struct rctl_rule *rule) |
| 953 | { |
| 954 | |
| 955 | ASSERT_RACCT_ENABLED(); |
| 956 | |
| 957 | switch (rule->rr_subject_type) { |
| 958 | case RCTL_SUBJECT_TYPE_UNDEFINED: |
| 959 | case RCTL_SUBJECT_TYPE_PROCESS: |
| 960 | break; |
| 961 | case RCTL_SUBJECT_TYPE_JAIL: |
| 962 | if (rule->rr_subject.rs_prison_racct != NULL) |
| 963 | prison_racct_hold(rule->rr_subject.rs_prison_racct); |
| 964 | break; |
| 965 | case RCTL_SUBJECT_TYPE_USER: |
| 966 | if (rule->rr_subject.rs_uip != NULL) |
| 967 | uihold(rule->rr_subject.rs_uip); |
| 968 | break; |
| 969 | case RCTL_SUBJECT_TYPE_LOGINCLASS: |
| 970 | if (rule->rr_subject.rs_loginclass != NULL) |
| 971 | loginclass_hold(rule->rr_subject.rs_loginclass); |
| 972 | break; |
| 973 | default: |
| 974 | panic("rctl_rule_acquire_subject: unknown subject type %d", |
| 975 | rule->rr_subject_type); |
| 976 | } |
| 977 | } |
| 978 | |
| 979 | static void |
| 980 | rctl_rule_release_subject(struct rctl_rule *rule) |
no test coverage detected