Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Sep 2013 07:35:08 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r255728 - stable/9/sys/kern
Message-ID:  <201309200735.r8K7Z8Hk066219@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201309200735.r8K7Z8Hk066219>