diff options
author | fenner <fenner@FreeBSD.org> | 2002-11-26 18:04:12 +0000 |
---|---|---|
committer | fenner <fenner@FreeBSD.org> | 2002-11-26 18:04:12 +0000 |
commit | 6566f8bda92ab53c67dd4d818a5233f949d12820 (patch) | |
tree | 333d7e080d0246b4bc0fb6c968de9242424f1374 /sys/kern/kern_acct.c | |
parent | 19ffbf8983f81706ba2b3ec9152d598291c0215f (diff) | |
download | FreeBSD-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.c | 13 |
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, |