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
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
To unsubscribe, send any mail to "[email protected]"

Reply via email to