xfs: reject swapext ioctl on swapfiles
authorChristoph Hellwig <hch@lst.de>
Thu, 12 Feb 2009 18:56:00 +0000 (19:56 +0100)
committerChristoph Hellwig <hch@brick.lst.de>
Thu, 12 Feb 2009 18:56:00 +0000 (19:56 +0100)
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>
fs/xfs/xfs_dfrag.c

index ac96ab9..e6d839b 100644 (file)
@@ -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);