Commit 0790b31b authored by Lukas Czerner's avatar Lukas Czerner Committed by Theodore Ts'o

fs: disallow all fallocate operation on active swapfile

Currently some file system have IS_SWAPFILE check in their fallocate
implementations and some do not. However we should really prevent any
fallocate operation on swapfile so move the check to vfs and remove the
redundant checks from the file systems fallocate implementations.
Signed-off-by: default avatarLukas Czerner <lczerner@redhat.com>
Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
parent 23fffa92
...@@ -1215,9 +1215,6 @@ static long ceph_fallocate(struct file *file, int mode, ...@@ -1215,9 +1215,6 @@ static long ceph_fallocate(struct file *file, int mode,
if (!S_ISREG(inode->i_mode)) if (!S_ISREG(inode->i_mode))
return -EOPNOTSUPP; return -EOPNOTSUPP;
if (IS_SWAPFILE(inode))
return -ETXTBSY;
mutex_lock(&inode->i_mutex); mutex_lock(&inode->i_mutex);
if (ceph_snap(inode) != CEPH_NOSNAP) { if (ceph_snap(inode) != CEPH_NOSNAP) {
......
...@@ -5405,11 +5405,6 @@ int ext4_collapse_range(struct inode *inode, loff_t offset, loff_t len) ...@@ -5405,11 +5405,6 @@ int ext4_collapse_range(struct inode *inode, loff_t offset, loff_t len)
goto out_mutex; goto out_mutex;
} }
if (IS_SWAPFILE(inode)) {
ret = -ETXTBSY;
goto out_mutex;
}
/* Currently just for extent based files */ /* Currently just for extent based files */
if (!ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) { if (!ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) {
ret = -EOPNOTSUPP; ret = -EOPNOTSUPP;
......
...@@ -3542,11 +3542,6 @@ int ext4_punch_hole(struct inode *inode, loff_t offset, loff_t length) ...@@ -3542,11 +3542,6 @@ int ext4_punch_hole(struct inode *inode, loff_t offset, loff_t length)
mutex_lock(&inode->i_mutex); mutex_lock(&inode->i_mutex);
if (IS_SWAPFILE(inode)) {
ret = -ETXTBSY;
goto out_mutex;
}
/* No need to punch hole beyond i_size */ /* No need to punch hole beyond i_size */
if (offset >= inode->i_size) if (offset >= inode->i_size)
goto out_mutex; goto out_mutex;
......
...@@ -262,6 +262,13 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len) ...@@ -262,6 +262,13 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len)
if (IS_IMMUTABLE(inode)) if (IS_IMMUTABLE(inode))
return -EPERM; return -EPERM;
/*
* We can not allow to do any fallocate operation on an active
* swapfile
*/
if (IS_SWAPFILE(inode))
ret = -ETXTBSY;
/* /*
* Revalidate the write permissions, in case security policy has * Revalidate the write permissions, in case security policy has
* changed since the files were opened. * changed since the files were opened.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment