diff options
author | Christoph Hellwig <hch@lst.de> | 2009-02-12 19:56:00 +0100 |
---|---|---|
committer | Christoph Hellwig <hch@brick.lst.de> | 2009-02-12 19:56:00 +0100 |
commit | 7c8f7af67de19a7ae33a6fc06764771265b0cc56 (patch) | |
tree | c27e78738c144e7a8e63ec1fa69a758394406985 /fs/xfs/xfs_dfrag.c | |
parent | 264307520b120593ba63c4a23c58dd5e2ec5e822 (diff) | |
download | linux-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.c | 6 |
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); |