MCPcopy Create free account
hub / github.com/F-Stack/f-stack / prison_racct_modify

Function prison_racct_modify

freebsd/kern/kern_jail.c:4317–4363  ·  view source on GitHub ↗

* Handle jail renaming. From the racct point of view, renaming means * moving from one prison_racct to another. */

Source from the content-addressed store, hash-verified

4315 * moving from one prison_racct to another.
4316 */
4317static void
4318prison_racct_modify(struct prison *pr)
4319{
4320#ifdef RCTL
4321 struct proc *p;
4322 struct ucred *cred;
4323#endif
4324 struct prison_racct *oldprr;
4325
4326 ASSERT_RACCT_ENABLED();
4327
4328 sx_slock(&allproc_lock);
4329 sx_xlock(&allprison_lock);
4330
4331 if (strcmp(pr->pr_name, pr->pr_prison_racct->prr_name) == 0) {
4332 sx_xunlock(&allprison_lock);
4333 sx_sunlock(&allproc_lock);
4334 return;
4335 }
4336
4337 oldprr = pr->pr_prison_racct;
4338 pr->pr_prison_racct = NULL;
4339
4340 prison_racct_attach(pr);
4341
4342 /*
4343 * Move resource utilisation records.
4344 */
4345 racct_move(pr->pr_prison_racct->prr_racct, oldprr->prr_racct);
4346
4347#ifdef RCTL
4348 /*
4349 * Force rctl to reattach rules to processes.
4350 */
4351 FOREACH_PROC_IN_SYSTEM(p) {
4352 PROC_LOCK(p);
4353 cred = crhold(p->p_ucred);
4354 PROC_UNLOCK(p);
4355 rctl_proc_ucred_changed(p, cred);
4356 crfree(cred);
4357 }
4358#endif
4359
4360 sx_sunlock(&allproc_lock);
4361 prison_racct_free_locked(oldprr);
4362 sx_xunlock(&allprison_lock);
4363}
4364
4365static void
4366prison_racct_detach(struct prison *pr)

Callers 1

kern_jail_setFunction · 0.85

Calls 7

strcmpFunction · 0.85
prison_racct_attachFunction · 0.85
racct_moveFunction · 0.85
rctl_proc_ucred_changedFunction · 0.85
prison_racct_free_lockedFunction · 0.85
crholdFunction · 0.70
crfreeFunction · 0.70

Tested by

no test coverage detected