summaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_dfrag.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2009-02-12 19:56:00 +0100
committerChristoph Hellwig <hch@brick.lst.de>2009-02-12 19:56:00 +0100
commit7c8f7af67de19a7ae33a6fc06764771265b0cc56 (patch)
treec27e78738c144e7a8e63ec1fa69a758394406985 /fs/xfs/xfs_dfrag.c
parent264307520b120593ba63c4a23c58dd5e2ec5e822 (diff)
downloadlinux-7c8f7af67de19a7ae33a6fc06764771265b0cc56.tar.gz
linux-7c8f7af67de19a7ae33a6fc06764771265b0cc56.tar.bz2
linux-7c8f7af67de19a7ae33a6fc06764771265b0cc56.zip
xfs: reject swapext ioctl on swapfiles
Swapfiles are magic - I/O is directly initialized by the VM without involving the filesystem. Swapping out extents underneath the VM thus can cause severe problems. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Felix Blyakher <felixb@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_dfrag.c')
-rw-r--r--fs/xfs/xfs_dfrag.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/xfs/xfs_dfrag.c b/fs/xfs/xfs_dfrag.c
index ac96ab9f70a2..e6d839bddbf0 100644
--- a/fs/xfs/xfs_dfrag.c
+++ b/fs/xfs/xfs_dfrag.c
@@ -79,6 +79,12 @@ xfs_swapext(
goto out_put_target_file;
}
+ if (IS_SWAPFILE(file->f_path.dentry->d_inode) ||
+ IS_SWAPFILE(target_file->f_path.dentry->d_inode)) {
+ error = XFS_ERROR(EINVAL);
+ goto out_put_target_file;
+ }
+
ip = XFS_I(file->f_path.dentry->d_inode);
tip = XFS_I(target_file->f_path.dentry->d_inode);