mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	Fix page fault in zfsctl_snapdir_getattr
Must acquire the z_teardown_lock before accessing the zfsvfs_t object. I can't reproduce this panic on demand, but this looks like the correct solution. Reviewed-by: Ryan Moeller <ryan@ixsystems.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Authored-by: asomers <asomers@FreeBSD.org> Signed-off-by: Matt Macy <mmacy@FreeBSD.org> Closes #10656
This commit is contained in:
		
							parent
							
								
									8fb79fdddb
								
							
						
					
					
						commit
						fe628bc21d
					
				@ -1088,11 +1088,12 @@ zfsctl_snapdir_getattr(struct vop_getattr_args *ap)
 | 
				
			|||||||
	vnode_t *vp = ap->a_vp;
 | 
						vnode_t *vp = ap->a_vp;
 | 
				
			||||||
	vattr_t *vap = ap->a_vap;
 | 
						vattr_t *vap = ap->a_vap;
 | 
				
			||||||
	zfsvfs_t *zfsvfs = vp->v_vfsp->vfs_data;
 | 
						zfsvfs_t *zfsvfs = vp->v_vfsp->vfs_data;
 | 
				
			||||||
	dsl_dataset_t *ds = dmu_objset_ds(zfsvfs->z_os);
 | 
						dsl_dataset_t *ds;
 | 
				
			||||||
	uint64_t snap_count;
 | 
						uint64_t snap_count;
 | 
				
			||||||
	int err;
 | 
						int err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ZFS_ENTER(zfsvfs);
 | 
						ZFS_ENTER(zfsvfs);
 | 
				
			||||||
 | 
						ds = dmu_objset_ds(zfsvfs->z_os);
 | 
				
			||||||
	zfsctl_common_getattr(vp, vap);
 | 
						zfsctl_common_getattr(vp, vap);
 | 
				
			||||||
	vap->va_ctime = dmu_objset_snap_cmtime(zfsvfs->z_os);
 | 
						vap->va_ctime = dmu_objset_snap_cmtime(zfsvfs->z_os);
 | 
				
			||||||
	vap->va_mtime = vap->va_ctime;
 | 
						vap->va_mtime = vap->va_ctime;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user