diff options
author | Jan Kara <jack@suse.cz> | 2019-01-29 17:17:24 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-03-23 08:44:36 +0100 |
commit | 64847df5bff163f4f0ded9dd29b0e9d8ce8832c6 (patch) | |
tree | 684768b1829399f35c31931696e48a093859d94d /crypto/crct10dif_generic.c | |
parent | 8b710dc8a5e2a4c3202f61e6cfa3bae07c70fec9 (diff) | |
download | linux-stable-64847df5bff163f4f0ded9dd29b0e9d8ce8832c6.tar.gz linux-stable-64847df5bff163f4f0ded9dd29b0e9d8ce8832c6.tar.bz2 linux-stable-64847df5bff163f4f0ded9dd29b0e9d8ce8832c6.zip |
ext2: Fix underflow in ext2_max_size()
commit 1c2d14212b15a60300a2d4f6364753e87394c521 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
CC: stable@vger.kernel.org
Reported-by: yangerkun <yangerkun@huawei.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'crypto/crct10dif_generic.c')
0 files changed, 0 insertions, 0 deletions