linux/fs/ext2
Jan Kara 2ff1126f0e ext2: Fix underflow in ext2_max_size()
commit 1c2d14212b upstream.

When ext2 filesystem is created with 64k block size, ext2_max_size()
will return value less than 0. Also, we cannot write any file in this fs
since the sb->maxbytes is less than 0. The core of the problem is that
the size of block index tree for such large block size is more than
i_blocks can carry. So fix the computation to count with this
possibility.

File size limits computed with the new function for the full range of
possible block sizes look like:

bits file_size
10     17247252480
11    275415851008
12   2196873666560
13   2197948973056
14   2198486220800
15   2198754754560
16   2198888906752

Reported-by: yangerkun <yangerkun@huawei.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2019-07-09 22:03:52 +01:00
..
acl.c ext2: preserve i_mode if ext2_set_acl() fails 2017-10-12 15:28:07 +01:00
acl.h ext2/3/4: use generic posix ACL infrastructure 2014-01-25 23:58:19 -05:00
balloc.c Ext2: remove the static function release_blocks to optimize the kernel 2013-02-07 16:44:56 +01:00
dir.c [readdir] simple local unixlike: switch to ->iterate() 2013-06-29 12:46:47 +04:00
ext2.h userns: Convert ext2 to use kuid/kgid where appropriate. 2012-05-15 14:59:26 -07:00
file.c ->splice_write() via ->write_iter() 2014-06-12 00:18:51 -04:00
ialloc.c ext2/3: use prandom_u32() instead of get_random_bytes() 2014-03-04 12:19:03 +01:00
inode.c ext2: fix a block leak 2018-10-21 08:46:16 +01:00
ioctl.c new helper: file_inode(file) 2013-02-22 23:31:31 -05:00
Kconfig fs/Kconfig: move ext2, ext3, ext4, JBD, JBD2 out 2008-10-20 11:43:59 -07:00
Makefile switch ext2 to simple_fsync() 2009-06-11 21:36:12 -04:00
namei.c do d_instantiate/unlock_new_inode combinations safely 2018-10-21 08:46:03 +01:00
super.c ext2: Fix underflow in ext2_max_size() 2019-07-09 22:03:52 +01:00
symlink.c ext2: symlink must be handled via filesystem specific operation 2010-04-12 21:11:25 +02:00
xattr.c ext2: fix potential use after free 2019-02-11 17:54:14 +00:00
xattr.h ext2/3/4: use generic posix ACL infrastructure 2014-01-25 23:58:19 -05:00
xattr_security.c fs: Mark function as static in ext2/xattr_security.c 2014-03-03 11:30:59 +01:00
xattr_trusted.c migrate ext2_fs.h guts to fs/ext2/ext2.h 2012-03-31 16:03:16 -04:00
xattr_user.c ext2/3/4: delete unneeded includes of module.h 2012-01-09 13:52:10 +01:00
xip.c ext2: Fix fs corruption in ext2_get_xip_mem() 2013-11-05 11:26:47 +01:00
xip.h xip: support non-struct page backed memory 2008-04-28 08:58:23 -07:00