mirror of
				https://git.proxmox.com/git/mirror_zfs
				synced 2025-10-31 20:33:04 +00:00 
			
		
		
		
	|  73c383f541 During a mount, zpl_mount_impl(), uses sget() with the callback zpl_test_super() to find a super_block with a matching objset, stored in z_os. It does so without taking the teardown lock on the zfsvfs. The problem is that operations like rollback will replace the z_os. And, there is a window where the objset in the rollback is freed, but z_os still points to it. Then, a mount like operation, for instance a clone, can reallocate that exact same pointer and zpl_test_super() will then match the super_block associated with the rollback as opposed to the clone. This fix tests for a match and if so, takes the teardown lock before doing the final match test. Reviewed-by: Richard Yao <richard.yao@alumni.stonybrook.edu> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: John Poduska <jpoduska@datto.com> Closes #14518 | ||
|---|---|---|
| .. | ||
| abd_os.c | ||
| arc_os.c | ||
| mmp_os.c | ||
| policy.c | ||
| qat_compress.c | ||
| qat_crypt.c | ||
| qat.c | ||
| spa_misc_os.c | ||
| trace.c | ||
| vdev_disk.c | ||
| vdev_file.c | ||
| zfs_acl.c | ||
| zfs_ctldir.c | ||
| zfs_debug.c | ||
| zfs_dir.c | ||
| zfs_file_os.c | ||
| zfs_ioctl_os.c | ||
| zfs_racct.c | ||
| zfs_sysfs.c | ||
| zfs_uio.c | ||
| zfs_vfsops.c | ||
| zfs_vnops_os.c | ||
| zfs_znode.c | ||
| zio_crypt.c | ||
| zpl_ctldir.c | ||
| zpl_export.c | ||
| zpl_file.c | ||
| zpl_inode.c | ||
| zpl_super.c | ||
| zpl_xattr.c | ||
| zvol_os.c | ||