diff options
Diffstat (limited to 'fs/xfs/libxfs/xfs_inode_fork.c')
| -rw-r--r-- | fs/xfs/libxfs/xfs_inode_fork.c | 22 | 
1 files changed, 14 insertions, 8 deletions
diff --git a/fs/xfs/libxfs/xfs_inode_fork.c b/fs/xfs/libxfs/xfs_inode_fork.c index c643beeb5a24..ad2b9c313fd2 100644 --- a/fs/xfs/libxfs/xfs_inode_fork.c +++ b/fs/xfs/libxfs/xfs_inode_fork.c @@ -75,11 +75,15 @@ xfs_iformat_fork(  			error = xfs_iformat_btree(ip, dip, XFS_DATA_FORK);  			break;  		default: +			xfs_inode_verifier_error(ip, -EFSCORRUPTED, __func__, +					dip, sizeof(*dip), __this_address);  			return -EFSCORRUPTED;  		}  		break;  	default: +		xfs_inode_verifier_error(ip, -EFSCORRUPTED, __func__, dip, +				sizeof(*dip), __this_address);  		return -EFSCORRUPTED;  	}  	if (error) @@ -110,14 +114,16 @@ xfs_iformat_fork(  		error = xfs_iformat_btree(ip, dip, XFS_ATTR_FORK);  		break;  	default: +		xfs_inode_verifier_error(ip, error, __func__, dip, +				sizeof(*dip), __this_address);  		error = -EFSCORRUPTED;  		break;  	}  	if (error) { -		kmem_zone_free(xfs_ifork_zone, ip->i_afp); +		kmem_cache_free(xfs_ifork_zone, ip->i_afp);  		ip->i_afp = NULL;  		if (ip->i_cowfp) -			kmem_zone_free(xfs_ifork_zone, ip->i_cowfp); +			kmem_cache_free(xfs_ifork_zone, ip->i_cowfp);  		ip->i_cowfp = NULL;  		xfs_idestroy_fork(ip, XFS_DATA_FORK);  	} @@ -129,7 +135,7 @@ xfs_init_local_fork(  	struct xfs_inode	*ip,  	int			whichfork,  	const void		*data, -	int			size) +	int64_t			size)  {  	struct xfs_ifork	*ifp = XFS_IFORK_PTR(ip, whichfork);  	int			mem_size = size, real_size = 0; @@ -467,11 +473,11 @@ xfs_iroot_realloc(  void  xfs_idata_realloc(  	struct xfs_inode	*ip, -	int			byte_diff, +	int64_t			byte_diff,  	int			whichfork)  {  	struct xfs_ifork	*ifp = XFS_IFORK_PTR(ip, whichfork); -	int			new_size = (int)ifp->if_bytes + byte_diff; +	int64_t			new_size = ifp->if_bytes + byte_diff;  	ASSERT(new_size >= 0);  	ASSERT(new_size <= XFS_IFORK_SIZE(ip, whichfork)); @@ -525,10 +531,10 @@ xfs_idestroy_fork(  	}  	if (whichfork == XFS_ATTR_FORK) { -		kmem_zone_free(xfs_ifork_zone, ip->i_afp); +		kmem_cache_free(xfs_ifork_zone, ip->i_afp);  		ip->i_afp = NULL;  	} else if (whichfork == XFS_COW_FORK) { -		kmem_zone_free(xfs_ifork_zone, ip->i_cowfp); +		kmem_cache_free(xfs_ifork_zone, ip->i_cowfp);  		ip->i_cowfp = NULL;  	}  } @@ -552,7 +558,7 @@ xfs_iextents_copy(  	struct xfs_ifork	*ifp = XFS_IFORK_PTR(ip, whichfork);  	struct xfs_iext_cursor	icur;  	struct xfs_bmbt_irec	rec; -	int			copied = 0; +	int64_t			copied = 0;  	ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL | XFS_ILOCK_SHARED));  	ASSERT(ifp->if_bytes > 0);  |