[PATCH 3/3] proc: use MTX_NEW flag in proc_init
Mateusz Guzik
mjguzik at gmail.com
Sat Mar 21 01:00:49 UTC 2015
From: Mateusz Guzik <mjg at freebsd.org>
This allows us to get rid of bzero which was added specifically to make
mtx_init on p_mtx reliable.
This also fixes a potential problem where mtx_init on other mutexes
could trip over on unitialized memory and fire an assertion.
---
sys/kern/kern_proc.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c
index a607d7b1..f72269d 100644
--- a/sys/kern/kern_proc.c
+++ b/sys/kern/kern_proc.c
@@ -225,12 +225,11 @@ proc_init(void *mem, int size, int flags)
p = (struct proc *)mem;
SDT_PROBE(proc, kernel, init, entry, p, size, flags, 0, 0);
p->p_sched = (struct p_sched *)&p[1];
- bzero(&p->p_mtx, sizeof(struct mtx));
- mtx_init(&p->p_mtx, "process lock", NULL, MTX_DEF | MTX_DUPOK);
- mtx_init(&p->p_slock, "process slock", NULL, MTX_SPIN);
- mtx_init(&p->p_statmtx, "pstatl", NULL, MTX_SPIN);
- mtx_init(&p->p_itimmtx, "pitiml", NULL, MTX_SPIN);
- mtx_init(&p->p_profmtx, "pprofl", NULL, MTX_SPIN);
+ mtx_init(&p->p_mtx, "process lock", NULL, MTX_DEF | MTX_DUPOK | MTX_NEW);
+ mtx_init(&p->p_slock, "process slock", NULL, MTX_SPIN | MTX_NEW);
+ mtx_init(&p->p_statmtx, "pstatl", NULL, MTX_SPIN | MTX_NEW);
+ mtx_init(&p->p_itimmtx, "pitiml", NULL, MTX_SPIN | MTX_NEW);
+ mtx_init(&p->p_profmtx, "pprofl", NULL, MTX_SPIN | MTX_NEW);
cv_init(&p->p_pwait, "ppwait");
cv_init(&p->p_dbgwait, "dbgwait");
TAILQ_INIT(&p->p_threads); /* all threads in proc */
--
2.3.2
More information about the freebsd-current
mailing list