summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_acct.c
diff options
context:
space:
mode:
authorfenner <fenner@FreeBSD.org>2002-11-26 18:04:12 +0000
committerfenner <fenner@FreeBSD.org>2002-11-26 18:04:12 +0000
commit6566f8bda92ab53c67dd4d818a5233f949d12820 (patch)
tree333d7e080d0246b4bc0fb6c968de9242424f1374 /sys/kern/kern_acct.c
parent19ffbf8983f81706ba2b3ec9152d598291c0215f (diff)
downloadFreeBSD-src-6566f8bda92ab53c67dd4d818a5233f949d12820.zip
FreeBSD-src-6566f8bda92ab53c67dd4d818a5233f949d12820.tar.gz
Don't hold acct_mtx over limcopy(), since it's unnecessary and
limcopy() can sleep. Approved by: re
Diffstat (limited to 'sys/kern/kern_acct.c')
-rw-r--r--sys/kern/kern_acct.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/sys/kern/kern_acct.c b/sys/kern/kern_acct.c
index b970f98..9188e30 100644
--- a/sys/kern/kern_acct.c
+++ b/sys/kern/kern_acct.c
@@ -286,6 +286,13 @@ acct_process(td)
acct.ac_flag = p->p_acflag;
/*
+ * Write the accounting information to the file.
+ */
+ uc = crhold(acctcred);
+ vref(vp);
+ mtx_unlock(&acct_mtx);
+
+ /*
* Eliminate any file size rlimit.
*/
if (p->p_limit->p_refcnt > 1 &&
@@ -295,12 +302,6 @@ acct_process(td)
}
p->p_rlimit[RLIMIT_FSIZE].rlim_cur = RLIM_INFINITY;
- /*
- * Write the accounting information to the file.
- */
- uc = crhold(acctcred);
- vref(vp);
- mtx_unlock(&acct_mtx);
VOP_LEASE(vp, td, uc, LEASE_WRITE);
ret = vn_rdwr(UIO_WRITE, vp, (caddr_t)&acct, sizeof (acct),
(off_t)0, UIO_SYSSPACE, IO_APPEND|IO_UNIT, uc, NOCRED,
OpenPOWER on IntegriCloud