diff options
author | trasz <trasz@FreeBSD.org> | 2011-10-03 16:23:20 +0000 |
---|---|---|
committer | trasz <trasz@FreeBSD.org> | 2011-10-03 16:23:20 +0000 |
commit | 82df9bbbc475882013138f9a5205f8a1e3c88070 (patch) | |
tree | 525c99c9f4e41ee0a50aad6f301ce45842ec7446 /sys/kern/kern_racct.c | |
parent | 138a535460213399389b2c4da12e1d65b6061ef3 (diff) | |
download | FreeBSD-src-82df9bbbc475882013138f9a5205f8a1e3c88070.zip FreeBSD-src-82df9bbbc475882013138f9a5205f8a1e3c88070.tar.gz |
Fix another bug introduced in r225641, which caused rctl to access certain
fields in 'struct proc' before they got initialized in do_fork().
MFC after: 3 days
Diffstat (limited to 'sys/kern/kern_racct.c')
-rw-r--r-- | sys/kern/kern_racct.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/sys/kern/kern_racct.c b/sys/kern/kern_racct.c index 525866c..8414cda 100644 --- a/sys/kern/kern_racct.c +++ b/sys/kern/kern_racct.c @@ -585,6 +585,24 @@ out: return (error); } +/* + * Called at the end of fork1(), to handle rules that require the process + * to be fully initialized. + */ +void +racct_proc_fork_done(struct proc *child) +{ + +#ifdef RCTL + PROC_LOCK(child); + mtx_lock(&racct_lock); + rctl_enforce(child, RACCT_NPROC, 0); + rctl_enforce(child, RACCT_NTHR, 0); + mtx_unlock(&racct_lock); + PROC_UNLOCK(child); +#endif +} + void racct_proc_exit(struct proc *p) { @@ -810,6 +828,11 @@ racct_proc_fork(struct proc *parent, struct proc *child) } void +racct_proc_fork_done(struct proc *child) +{ +} + +void racct_proc_exit(struct proc *p) { } |