summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_racct.c
diff options
context:
space:
mode:
authortrasz <trasz@FreeBSD.org>2011-10-03 16:23:20 +0000
committertrasz <trasz@FreeBSD.org>2011-10-03 16:23:20 +0000
commit82df9bbbc475882013138f9a5205f8a1e3c88070 (patch)
tree525c99c9f4e41ee0a50aad6f301ce45842ec7446 /sys/kern/kern_racct.c
parent138a535460213399389b2c4da12e1d65b6061ef3 (diff)
downloadFreeBSD-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.c23
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)
{
}
OpenPOWER on IntegriCloud