Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1495911
| From | Adam Borowski <kilobyte@angband.pl> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH resend] vfs: allow FILE_EXTENT_SAME (dedupe_file_range) on a file opened ro |
| Date | 2016-10-05 17:10 +0200 |
| Message-ID | <soVZw-2AE-29@gated-at.bofh.it> (permalink) |
| Organization | linux.* mail to news gateway |
Instead of checking the mode of the file descriptor, let's check whether it
could have been opened rw. This allows fixing intermittent exec failures
when deduping a live system: anyone trying to exec a file currently being
deduped gets ETXTBSY.
Issuing this ioctl on a ro file was already allowed for root/cap.
Tested on btrfs and not-yet-merged xfs, as only them implement this ioctl.
Signed-off-by: Adam Borowski <kilobyte@angband.pl>
Reviewed-by: Mark Fasheh <mfasheh@suse.de>
---
fs/read_write.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/read_write.c b/fs/read_write.c
index 66215a7..8ea5297 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -1741,7 +1741,7 @@ int vfs_dedupe_file_range(struct file *file, struct file_dedupe_range *same)
if (info->reserved) {
info->status = -EINVAL;
- } else if (!(is_admin || (dst_file->f_mode & FMODE_WRITE))) {
+ } else if (!(is_admin || !inode_permission(dst, MAY_WRITE))) {
info->status = -EINVAL;
} else if (file->f_path.mnt != dst_file->f_path.mnt) {
info->status = -EXDEV;
--
2.9.3
Back to linux.kernel | Previous | Next — Next in thread | Find similar | Unroll thread
[PATCH resend] vfs: allow FILE_EXTENT_SAME (dedupe_file_range) on a file opened ro Adam Borowski <kilobyte@angband.pl> - 2016-10-05 17:10 +0200 ping howto (was Re: [PATCH resend] vfs: allow FILE_EXTENT_SAME (dedupe_file_range) on a file opened ro) Adam Borowski <kilobyte@angband.pl> - 2016-10-13 00:20 +0200
csiph-web