diff options
author | luoqi <luoqi@FreeBSD.org> | 1998-08-28 20:07:13 +0000 |
---|---|---|
committer | luoqi <luoqi@FreeBSD.org> | 1998-08-28 20:07:13 +0000 |
commit | 71cc3d284fa78b67d69f126996e2b68b99d069e1 (patch) | |
tree | 55a34cb9fc03e8475428f07bf5b648c490840644 /sys | |
parent | 3ecbceb35a1c299db84d6002b6e2c87e72c9d35e (diff) | |
download | FreeBSD-src-71cc3d284fa78b67d69f126996e2b68b99d069e1.zip FreeBSD-src-71cc3d284fa78b67d69f126996e2b68b99d069e1.tar.gz |
Close a race window for getnewbuf() between shared lock holders of the vnode.
Reviewed by: Mike Smith
Diffstat (limited to 'sys')
-rw-r--r-- | sys/kern/vfs_bio.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c index 40d5a73..9ecd7a0 100644 --- a/sys/kern/vfs_bio.c +++ b/sys/kern/vfs_bio.c @@ -11,7 +11,7 @@ * 2. Absolutely no warranty of function or purpose is made by the author * John S. Dyson. * - * $Id: vfs_bio.c,v 1.171 1998/08/24 17:47:25 phk Exp $ + * $Id: vfs_bio.c,v 1.172 1998/08/25 14:41:42 phk Exp $ */ /* @@ -1518,7 +1518,7 @@ loop1: * Normally the vnode is locked so this isn't a problem. * VBLK type I/O requests, however, don't lock the vnode. */ - if (!VOP_ISLOCKED(vp) && gbincore(vp, blkno)) { + if (VOP_ISLOCKED(vp) != LK_EXCLUSIVE && gbincore(vp, blkno)) { bp->b_flags |= B_INVAL; brelse(bp); goto loop; |