changeset 6570:bbfcb773718e

6698415 on zfs root, ace_walk oversteps its bounds, causing panic when kmem_flags is set to 0x4f 6698707 zfs_mountroot() shouldn't release rootvp
author marks
date Wed, 07 May 2008 14:09:56 -0700
parents 90c99f858ba3
children 87a1002a7f3b
files usr/src/common/acl/acl_common.c usr/src/uts/common/fs/zfs/zfs_vfsops.c
diffstat 2 files changed, 5 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/common/acl/acl_common.c	Wed May 07 11:05:00 2008 -0700
+++ b/usr/src/common/acl/acl_common.c	Wed May 07 14:09:56 2008 -0700
@@ -293,14 +293,14 @@
 {
 	ace_t *acep = datap;
 
+	if (cookie >= aclcnt)
+		return (0);
+
 	*flags = acep[cookie].a_flags;
 	*type = acep[cookie].a_type;
 	*mask = acep[cookie++].a_access_mask;
 
-	if (cookie > aclcnt)
-		return (0);
-	else
-		return (cookie);
+	return (cookie);
 }
 
 int
--- a/usr/src/uts/common/fs/zfs/zfs_vfsops.c	Wed May 07 11:05:00 2008 -0700
+++ b/usr/src/uts/common/fs/zfs/zfs_vfsops.c	Wed May 07 14:09:56 2008 -0700
@@ -930,10 +930,8 @@
 		rootvp = vp;
 
 		/*
-		 * The zfs_zget call above returns with a hold on vp, we release
-		 * it here.
+		 * Leave rootvp held.  The root file system is never unmounted.
 		 */
-		VN_RELE(vp);
 
 		vfs_add((struct vnode *)0, vfsp,
 		    (vfsp->vfs_flag & VFS_RDONLY) ? MS_RDONLY : 0);