diff options
author | Darrick J. Wong <darrick.wong@oracle.com> | 2018-10-30 00:40:46 +0100 |
---|---|---|
committer | Dave Chinner <david@fromorbit.com> | 2018-10-30 00:40:46 +0100 |
commit | 9fd91a90cb9837372af24a804853e15c11aed93e (patch) | |
tree | 28bf526bcccd9d6250a7451e5c2d734a419c70f4 /fs/read_write.c | |
parent | vfs: exit early from zero length remap operations (diff) | |
download | linux-9fd91a90cb9837372af24a804853e15c11aed93e.tar.xz linux-9fd91a90cb9837372af24a804853e15c11aed93e.zip |
vfs: strengthen checking of file range inputs to generic_remap_checks
File range remapping, if allowed to run past the destination file's EOF,
is an optimization on a regular file write. Regular file writes that
extend the file length are subject to various constraints which are not
checked by range cloning.
This is a correctness problem because we're never allowed to touch
ranges that the page cache can't support (s_maxbytes); we're not
supposed to deal with large offsets (MAX_NON_LFS) if O_LARGEFILE isn't
set; and we must obey resource limits (RLIMIT_FSIZE).
Therefore, add these checks to the new generic_remap_checks function so
that we curtail unexpected behavior.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
Diffstat (limited to 'fs/read_write.c')
0 files changed, 0 insertions, 0 deletions