diff options
author | phk <phk@FreeBSD.org> | 1997-05-06 15:19:38 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 1997-05-06 15:19:38 +0000 |
commit | d8e3734a094ebf25dc5971228ebeb15ff2c6a0cf (patch) | |
tree | 5d897d4f176b8c11424ae0f403d3714ec7f37110 /sys/kern/vfs_export.c | |
parent | 7af09e9fc1a2e032df6e3292831e44e363438aa2 (diff) | |
download | FreeBSD-src-d8e3734a094ebf25dc5971228ebeb15ff2c6a0cf.zip FreeBSD-src-d8e3734a094ebf25dc5971228ebeb15ff2c6a0cf.tar.gz |
Fix a race condition that did, after all, exist.
Reviewed by: phk
Submitted by: dfr
Diffstat (limited to 'sys/kern/vfs_export.c')
-rw-r--r-- | sys/kern/vfs_export.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/kern/vfs_export.c b/sys/kern/vfs_export.c index 295c233..353c867 100644 --- a/sys/kern/vfs_export.c +++ b/sys/kern/vfs_export.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95 - * $Id: vfs_subr.c,v 1.84 1997/04/30 03:09:15 dyson Exp $ + * $Id: vfs_subr.c,v 1.85 1997/05/04 09:17:29 phk Exp $ */ /* @@ -2149,8 +2149,10 @@ vtouch(vp) return; } if (simple_lock_try(&vnode_free_list_slock)) { - TAILQ_REMOVE(&vnode_free_list, vp, v_freelist); - TAILQ_INSERT_TAIL(&vnode_free_list, vp, v_freelist); + if (vp->v_freelist.tqe_prev != (struct vnode **)0xdeadb) { + TAILQ_REMOVE(&vnode_free_list, vp, v_freelist); + TAILQ_INSERT_TAIL(&vnode_free_list, vp, v_freelist); + } simple_unlock(&vnode_free_list_slock); } simple_unlock(&vp->v_interlock); |