diff options
author | Darrick J. Wong <darrick.wong@oracle.com> | 2017-08-24 13:22:06 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-10-18 09:15:15 +0200 |
commit | 6d1c3f7ed291c3139eccc3248d908aa7e0ac9e91 (patch) | |
tree | 156fb75480a143cf838cc7e4d6c7b1e90104b434 /fs | |
parent | 3e2bb7d281edae5a0732023061402e4a7231dffc (diff) | |
download | linux-stable-6d1c3f7ed291c3139eccc3248d908aa7e0ac9e91.tar.gz linux-stable-6d1c3f7ed291c3139eccc3248d908aa7e0ac9e91.tar.bz2 linux-stable-6d1c3f7ed291c3139eccc3248d908aa7e0ac9e91.zip |
ext4: in ext4_seek_{hole,data}, return -ENXIO for negative offsets
commit 1bd8d6cd3e413d64e543ec3e69ff43e75a1cf1ea upstream.
In the ext4 implementations of SEEK_HOLE and SEEK_DATA, make sure we
return -ENXIO for negative offsets instead of banging around inside
the extent code and returning -EFSCORRUPTED.
Reported-by: Mateusz S <muttdini@gmail.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ext4/file.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/ext4/file.c b/fs/ext4/file.c index 9dfb324de119..64623537f3b0 100644 --- a/fs/ext4/file.c +++ b/fs/ext4/file.c @@ -399,7 +399,7 @@ static loff_t ext4_seek_data(struct file *file, loff_t offset, loff_t maxsize) mutex_lock(&inode->i_mutex); isize = i_size_read(inode); - if (offset >= isize) { + if (offset < 0 || offset >= isize) { mutex_unlock(&inode->i_mutex); return -ENXIO; } @@ -472,7 +472,7 @@ static loff_t ext4_seek_hole(struct file *file, loff_t offset, loff_t maxsize) mutex_lock(&inode->i_mutex); isize = i_size_read(inode); - if (offset >= isize) { + if (offset < 0 || offset >= isize) { mutex_unlock(&inode->i_mutex); return -ENXIO; } |