svn commit: r255728 - stable/9/sys/kern

Konstantin Belousov kib at FreeBSD.org
Fri Sep 20 07:35:08 UTC 2013


Author: kib
Date: Fri Sep 20 07:35:08 2013
New Revision: 255728
URL: http://svnweb.freebsd.org/changeset/base/255728

Log:
  MFC r255510:
  When opening or closing fifo, ensure that the vnode is locked exclusively.

Modified:
  stable/9/sys/kern/vfs_vnops.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/kern/vfs_vnops.c
==============================================================================
--- stable/9/sys/kern/vfs_vnops.c	Fri Sep 20 07:31:32 2013	(r255727)
+++ stable/9/sys/kern/vfs_vnops.c	Fri Sep 20 07:35:08 2013	(r255728)
@@ -254,6 +254,8 @@ restart:
 				goto bad;
 		}
 	}
+	if (vp->v_type == VFIFO && VOP_ISLOCKED(vp) != LK_EXCLUSIVE)
+		vn_lock(vp, LK_UPGRADE | LK_RETRY);
 	if ((error = VOP_OPEN(vp, fmode, cred, td, fp)) != 0)
 		goto bad;
 
@@ -307,7 +309,7 @@ vn_close(vp, flags, file_cred, td)
 	struct mount *mp;
 	int error, lock_flags;
 
-	if (!(flags & FWRITE) && vp->v_mount != NULL &&
+	if (vp->v_type != VFIFO && !(flags & FWRITE) && vp->v_mount != NULL &&
 	    vp->v_mount->mnt_kern_flag & MNTK_EXTENDED_SHARED)
 		lock_flags = LK_SHARED;
 	else


More information about the svn-src-all mailing list