diff options
author | Miklos Szeredi <mszeredi@redhat.com> | 2020-02-03 13:41:53 +0300 |
---|---|---|
committer | Miklos Szeredi <mszeredi@redhat.com> | 2020-02-03 13:41:53 +0300 |
commit | a4ac9d45c0cd14a2adc872186431c79804b77dbf (patch) | |
tree | c37419075e0c8749613de0955bf8678b9ff342fa /fs/overlayfs/file.c | |
parent | 1a980b8cbf0059a5308eea61522f232fd03002e2 (diff) | |
download | linux-a4ac9d45c0cd14a2adc872186431c79804b77dbf.tar.xz |
ovl: fix lseek overflow on 32bit
ovl_lseek() is using ssize_t to return the value from vfs_llseek(). On a
32-bit kernel ssize_t is a 32-bit signed int, which overflows above 2 GB.
Assign the return value of vfs_llseek() to loff_t to fix this.
Reported-by: Boris Gjenero <boris.gjenero@gmail.com>
Fixes: 9e46b840c705 ("ovl: support stacked SEEK_HOLE/SEEK_DATA")
Cc: <stable@vger.kernel.org> # v4.19
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Diffstat (limited to 'fs/overlayfs/file.c')
-rw-r--r-- | fs/overlayfs/file.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/overlayfs/file.c b/fs/overlayfs/file.c index 67ef4c8cfdc7..a5317216de73 100644 --- a/fs/overlayfs/file.c +++ b/fs/overlayfs/file.c @@ -157,7 +157,7 @@ static loff_t ovl_llseek(struct file *file, loff_t offset, int whence) struct inode *inode = file_inode(file); struct fd real; const struct cred *old_cred; - ssize_t ret; + loff_t ret; /* * The two special cases below do not need to involve real fs, |