lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 23 Apr 2020 16:17:56 +0530 From: Ritesh Harjani <riteshh@...ux.ibm.com> To: linux-ext4@...r.kernel.org Cc: jack@...e.cz, tytso@....edu, adilger@...ger.ca, darrick.wong@...cle.com, hch@...radead.org, Alexander Viro <viro@...iv.linux.org.uk>, Dan Carpenter <dan.carpenter@...cle.com>, "Aneesh Kumar K . V" <aneesh.kumar@...ux.ibm.com>, Ritesh Harjani <riteshh@...ux.ibm.com>, Murphy Zhou <jencce.kernel@...il.com>, Miklos Szeredi <miklos@...redi.hu>, Amir Goldstein <amir73il@...il.com>, linux-fsdevel@...r.kernel.org, linux-unionfs@...r.kernel.org Subject: [PATCH 4/5] overlayfs: Check for range bounds before calling i_op->fiemap() Underlying fs may not be able to handle the length in fiemap beyond sb->s_maxbytes. So similar to how VFS ioctl does it, add fiemap_check_ranges() check in ovl_fiemap() as well before calling underlying fs i_op->fiemap() call. Signed-off-by: Ritesh Harjani <riteshh@...ux.ibm.com> --- fs/overlayfs/inode.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c index 79e8994e3bc1..9bcd2e96faad 100644 --- a/fs/overlayfs/inode.c +++ b/fs/overlayfs/inode.c @@ -455,16 +455,21 @@ static int ovl_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, int err; struct inode *realinode = ovl_inode_real(inode); const struct cred *old_cred; + u64 length; if (!realinode->i_op->fiemap) return -EOPNOTSUPP; + err = fiemap_check_ranges(realinode->i_sb, start, len, &length); + if (err) + return err; + old_cred = ovl_override_creds(inode->i_sb); if (fieinfo->fi_flags & FIEMAP_FLAG_SYNC) filemap_write_and_wait(realinode->i_mapping); - err = realinode->i_op->fiemap(realinode, fieinfo, start, len); + err = realinode->i_op->fiemap(realinode, fieinfo, start, length); revert_creds(old_cred); return err; -- 2.21.0
Powered by blists - more mailing lists