diff options
author | Amir Goldstein <[email protected]> | 2023-11-30 16:16:24 +0200 |
---|---|---|
committer | Christian Brauner <[email protected]> | 2023-12-05 12:58:02 +0100 |
commit | 730651268664070dbd582d7d0338b47d066d6323 (patch) | |
tree | 4b91e63d7f64e112cc3431d0c9f1bc39bffc42eb /tools/testing/selftests/bpf/prog_tests/autoload.c | |
parent | da40448ce4eb4de18eb7b0db61dddece32677939 (diff) |
fs: use do_splice_direct() for nfsd/ksmbd server-side-copy
nfsd/ksmbd call vfs_copy_file_range() with flag COPY_FILE_SPLICE to
perform kernel copy between two files on any two filesystems.
Splicing input file, while holding file_start_write() on the output file
which is on a different sb, posses a risk for fanotify related deadlocks.
We only need to call splice_file_range() from within the context of
->copy_file_range() filesystem methods with file_start_write() held.
To avoid the possible deadlocks, always use do_splice_direct() instead of
splice_file_range() for the kernel copy fallback in vfs_copy_file_range()
without holding file_start_write().
Reported-and-tested-by: Bert Karwatzki <[email protected]>
Signed-off-by: Amir Goldstein <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Reviewed-by: Jan Kara <[email protected]>
Signed-off-by: Christian Brauner <[email protected]>
Diffstat (limited to 'tools/testing/selftests/bpf/prog_tests/autoload.c')
0 files changed, 0 insertions, 0 deletions