diff options
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/vfs_export.c | 6 | ||||
-rw-r--r-- | sys/kern/vfs_subr.c | 6 |
2 files changed, 8 insertions, 4 deletions
diff --git a/sys/kern/vfs_export.c b/sys/kern/vfs_export.c index 8beb3e6..d7a9436 100644 --- a/sys/kern/vfs_export.c +++ b/sys/kern/vfs_export.c @@ -1479,10 +1479,11 @@ vrele(vp) struct proc *p = curproc; /* XXX */ KASSERT(vp != NULL, ("vrele: null vp")); - KASSERT(vp->v_writecount < vp->v_usecount, ("vrele: missed vn_close")); simple_lock(&vp->v_interlock); + KASSERT(vp->v_writecount < vp->v_usecount, ("vrele: missed vn_close")); + if (vp->v_usecount > 1) { vp->v_usecount--; @@ -1525,10 +1526,11 @@ vput(vp) struct proc *p = curproc; /* XXX */ KASSERT(vp != NULL, ("vput: null vp")); - KASSERT(vp->v_writecount < vp->v_usecount, ("vput: missed vn_close")); simple_lock(&vp->v_interlock); + KASSERT(vp->v_writecount < vp->v_usecount, ("vput: missed vn_close")); + if (vp->v_usecount > 1) { vp->v_usecount--; diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 8beb3e6..d7a9436 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -1479,10 +1479,11 @@ vrele(vp) struct proc *p = curproc; /* XXX */ KASSERT(vp != NULL, ("vrele: null vp")); - KASSERT(vp->v_writecount < vp->v_usecount, ("vrele: missed vn_close")); simple_lock(&vp->v_interlock); + KASSERT(vp->v_writecount < vp->v_usecount, ("vrele: missed vn_close")); + if (vp->v_usecount > 1) { vp->v_usecount--; @@ -1525,10 +1526,11 @@ vput(vp) struct proc *p = curproc; /* XXX */ KASSERT(vp != NULL, ("vput: null vp")); - KASSERT(vp->v_writecount < vp->v_usecount, ("vput: missed vn_close")); simple_lock(&vp->v_interlock); + KASSERT(vp->v_writecount < vp->v_usecount, ("vput: missed vn_close")); + if (vp->v_usecount > 1) { vp->v_usecount--; |