Author: pjd
Date: Sun Aug 30 21:03:40 2009
New Revision: 196662
URL: http://svn.freebsd.org/changeset/base/196662

Log:
  Add missing mountpoint vnode locking.
  
  This fixes panic on assertion with DEBUG_VFS_LOCKS and vfs.usermount=1 when
  regular user tries to mount dataset owned by him.
  
  MFC after:    1 week

Modified:
  head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c

Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c    Sun Aug 
30 20:45:24 2009        (r196661)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c    Sun Aug 
30 21:03:40 2009        (r196662)
@@ -729,7 +729,9 @@ zfs_mount(vfs_t *vfsp)
 
                        vattr.va_mask = AT_UID;
 
+                       vn_lock(mvp, LK_SHARED | LK_RETRY);
                        if (error = VOP_GETATTR(mvp, &vattr, cr)) {
+                               VOP_UNLOCK(mvp, 0);
                                goto out;
                        }
 
@@ -741,12 +743,15 @@ zfs_mount(vfs_t *vfsp)
                        }
 #else
                        if (error = secpolicy_vnode_owner(mvp, cr, 
vattr.va_uid)) {
+                               VOP_UNLOCK(mvp, 0);
                                goto out;
                        }
 
                        if (error = VOP_ACCESS(mvp, VWRITE, cr, td)) {
+                               VOP_UNLOCK(mvp, 0);
                                goto out;
                        }
+                       VOP_UNLOCK(mvp, 0);
 #endif
 
                        secpolicy_fs_mount_clearopts(cr, vfsp);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to