summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_prf.c
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2005-03-17 08:44:41 +0000
committerphk <phk@FreeBSD.org>2005-03-17 08:44:41 +0000
commitd6c8765efc947151e1249f9407fd0efd6bdee75f (patch)
tree30127f90b85ee3d8ac2133807d20b6b432480798 /sys/kern/subr_prf.c
parent5deecb8ce75ed6db68309784b436bf6aac0e5ef4 (diff)
downloadFreeBSD-src-d6c8765efc947151e1249f9407fd0efd6bdee75f.zip
FreeBSD-src-d6c8765efc947151e1249f9407fd0efd6bdee75f.tar.gz
In stange circumstances we may end up being the last reference to a
session in tprintf(). SESSRELE() needs to properly dispose of the sessions mutex. Add sessrele() which does the proper cleanup and have SESSRELE() call it. Use SESSRELE also in pgdelete(). Found by: Coverity (ID:526)
Diffstat (limited to 'sys/kern/subr_prf.c')
-rw-r--r--sys/kern/subr_prf.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/sys/kern/subr_prf.c b/sys/kern/subr_prf.c
index 393906f..26d4d41 100644
--- a/sys/kern/subr_prf.c
+++ b/sys/kern/subr_prf.c
@@ -189,11 +189,8 @@ tprintf(struct proc *p, int pri, const char *fmt, ...)
va_start(ap, fmt);
kvprintf(fmt, putchar, &pca, 10, ap);
va_end(ap);
- if (sess != NULL) {
- SESS_LOCK(sess);
+ if (sess != NULL)
SESSRELE(sess);
- SESS_UNLOCK(sess);
- }
msgbuftrigger = 1;
}
OpenPOWER on IntegriCloud