diff options
Diffstat (limited to 'fs/xfs/xfs_ioctl32.c')
| -rw-r--r-- | fs/xfs/xfs_ioctl32.c | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/fs/xfs/xfs_ioctl32.c b/fs/xfs/xfs_ioctl32.c index c4f2da0d2bf..1244274a567 100644 --- a/fs/xfs/xfs_ioctl32.c +++ b/fs/xfs/xfs_ioctl32.c @@ -600,7 +600,11 @@ xfs_file_compat_ioctl(  		if (xfs_compat_growfs_data_copyin(&in, arg))  			return -XFS_ERROR(EFAULT); +		error = mnt_want_write_file(filp); +		if (error) +			return error;  		error = xfs_growfs_data(mp, &in); +		mnt_drop_write_file(filp);  		return -error;  	}  	case XFS_IOC_FSGROWFSRT_32: { @@ -608,7 +612,11 @@ xfs_file_compat_ioctl(  		if (xfs_compat_growfs_rt_copyin(&in, arg))  			return -XFS_ERROR(EFAULT); +		error = mnt_want_write_file(filp); +		if (error) +			return error;  		error = xfs_growfs_rt(mp, &in); +		mnt_drop_write_file(filp);  		return -error;  	}  #endif @@ -627,7 +635,11 @@ xfs_file_compat_ioctl(  				   offsetof(struct xfs_swapext, sx_stat)) ||  		    xfs_ioctl32_bstat_copyin(&sxp.sx_stat, &sxu->sx_stat))  			return -XFS_ERROR(EFAULT); +		error = mnt_want_write_file(filp); +		if (error) +			return error;  		error = xfs_swapext(&sxp); +		mnt_drop_write_file(filp);  		return -error;  	}  	case XFS_IOC_FSBULKSTAT_32:  |