diff options
Diffstat (limited to 'fs/xfs/xfs_dir2_readdir.c')
| -rw-r--r-- | fs/xfs/xfs_dir2_readdir.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/xfs/xfs_dir2_readdir.c b/fs/xfs/xfs_dir2_readdir.c index cc6dc56f455d..cf9296b7e06f 100644 --- a/fs/xfs/xfs_dir2_readdir.c +++ b/fs/xfs/xfs_dir2_readdir.c @@ -118,8 +118,10 @@ xfs_dir2_sf_getdents(  		ctx->pos = off & 0x7fffffff;  		if (XFS_IS_CORRUPT(dp->i_mount,  				   !xfs_dir2_namecheck(sfep->name, -						       sfep->namelen))) +						       sfep->namelen))) { +			xfs_dirattr_mark_sick(dp, XFS_DATA_FORK);  			return -EFSCORRUPTED; +		}  		if (!dir_emit(ctx, (char *)sfep->name, sfep->namelen, ino,  			    xfs_dir3_get_dtype(mp, filetype)))  			return 0; @@ -211,6 +213,7 @@ xfs_dir2_block_getdents(  		if (XFS_IS_CORRUPT(dp->i_mount,  				   !xfs_dir2_namecheck(dep->name,  						       dep->namelen))) { +			xfs_dirattr_mark_sick(dp, XFS_DATA_FORK);  			error = -EFSCORRUPTED;  			goto out_rele;  		} @@ -465,6 +468,7 @@ xfs_dir2_leaf_getdents(  		if (XFS_IS_CORRUPT(dp->i_mount,  				   !xfs_dir2_namecheck(dep->name,  						       dep->namelen))) { +			xfs_dirattr_mark_sick(dp, XFS_DATA_FORK);  			error = -EFSCORRUPTED;  			break;  		} @@ -522,7 +526,7 @@ xfs_readdir(  		return -EIO;  	ASSERT(S_ISDIR(VFS_I(dp)->i_mode)); -	ASSERT(xfs_isilocked(dp, XFS_IOLOCK_SHARED | XFS_IOLOCK_EXCL)); +	xfs_assert_ilocked(dp, XFS_IOLOCK_SHARED | XFS_IOLOCK_EXCL);  	XFS_STATS_INC(dp->i_mount, xs_dir_getdents);  	args.dp = dp;  | 
