On Thu, Apr 23, 2020 at 04:17:52PM +0530, Ritesh Harjani wrote: > Hello All, > > Here are some changes, which as I understand, takes the right approach in fixing > the offset/length bounds check problem reported in threads [1]-[2]. > These warnings in iomap_apply/ext4 path are reported after ext4_fiemap() > was moved to use iomap framework and when overlayfs is mounted on top of ext4. > Though the issues were identified after ext4 moved to iomap framework, but > these changes tries to fix the problem which are anyways present in current code > irrespective of ext4 using iomap framework for fiemap or not. Ping? > > Patch 1 & 4 commit msg may give more details of the problem. > > Tests done > ========== > 1. Tested xfstest-suite with "-g quick" & "-overlay -g quick" configuration > on a 4k blocksize on x86 & Power. There were no new failures reported > due to these changes. > 2. Tested syzcaller reported problem with this change. [1] > 3. Tested below change which was reported by Murphy. [2] > The minimal reproducer is: > ------------------------------------- > fallocate -l 256M test.img > mkfs.ext4 -Fq -b 4096 -I 256 test.img > mkdir -p test > mount -o loop test.img test || exit > pushd test > rm -rf l u w m > mkdir -p l u w m > mount -t overlay -o lowerdir=l,upperdir=u,workdir=w overlay m || exit > xfs_io -f -c "pwrite 0 4096" -c "fiemap" m/tf > umount m > rm -rf l u w m > popd > umount -d test > rm -rf test test.img > ------------------------------------- > > Comments/feedback are much welcome!! > > References > ========== > [1]: https://lkml.org/lkml/2020/4/11/46 > [2]: https://patchwork.ozlabs.org/project/linux-ext4/patch/20200418233231.z767yvfiupy7hwgp@xxxxxxxxxxxxxxxxxxxxxxxxx/ > > > Ritesh Harjani (5): > ext4: Fix EXT4_MAX_LOGICAL_BLOCK macro > ext4: Rename fiemap_check_ranges() to make it ext4 specific > vfs: EXPORT_SYMBOL for fiemap_check_ranges() > overlayfs: Check for range bounds before calling i_op->fiemap() > ext4: Get rid of ext4_fiemap_check_ranges > > fs/ext4/ext4.h | 2 +- > fs/ext4/ioctl.c | 23 ----------------------- > fs/ioctl.c | 5 +++-- > fs/overlayfs/inode.c | 7 ++++++- > include/linux/fs.h | 2 ++ > 5 files changed, 12 insertions(+), 27 deletions(-) > > -- > 2.21.0 > -- Murphy