mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-23 04:04:26 +08:00
convert vfs_dedupe_file_range().
fdput() is followed by checking fatal_signal_pending() (and aborting the loop in such case). fdput() is transposable with that check. Yes, it'll probably end up with slightly fatter code (call after the check has returned false + call on the almost never taken out-of-line path instead of one call before the check), but it's not worth bothering with explicit extra scope there (or dragging the check into the loop condition, for that matter). Reviewed-by: Christian Brauner <brauner@kernel.org> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
9bd812744d
commit
6b1a5ae9b5
@ -536,7 +536,7 @@ int vfs_dedupe_file_range(struct file *file, struct file_dedupe_range *same)
|
||||
}
|
||||
|
||||
for (i = 0, info = same->info; i < count; i++, info++) {
|
||||
struct fd dst_fd = fdget(info->dest_fd);
|
||||
CLASS(fd, dst_fd)(info->dest_fd);
|
||||
|
||||
if (fd_empty(dst_fd)) {
|
||||
info->status = -EBADF;
|
||||
@ -545,7 +545,7 @@ int vfs_dedupe_file_range(struct file *file, struct file_dedupe_range *same)
|
||||
|
||||
if (info->reserved) {
|
||||
info->status = -EINVAL;
|
||||
goto next_fdput;
|
||||
goto next_loop;
|
||||
}
|
||||
|
||||
deduped = vfs_dedupe_file_range_one(file, off, fd_file(dst_fd),
|
||||
@ -558,8 +558,6 @@ int vfs_dedupe_file_range(struct file *file, struct file_dedupe_range *same)
|
||||
else
|
||||
info->bytes_deduped = len;
|
||||
|
||||
next_fdput:
|
||||
fdput(dst_fd);
|
||||
next_loop:
|
||||
if (fatal_signal_pending(current))
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user