WSL2-Linux-Kernel/fs/ext4
Luis Henriques (SUSE) 0619f7750f ext4: fix infinite loop when replaying fast_commit
[ Upstream commit 907c3fe532253a6ef4eb9c4d67efb71fab58c706 ]

When doing fast_commit replay an infinite loop may occur due to an
uninitialized extent_status struct.  ext4_ext_determine_insert_hole() does
not detect the replay and calls ext4_es_find_extent_range(), which will
return immediately without initializing the 'es' variable.

Because 'es' contains garbage, an integer overflow may happen causing an
infinite loop in this function, easily reproducible using fstest generic/039.

This commit fixes this issue by unconditionally initializing the structure
in function ext4_es_find_extent_range().

Thanks to Zhang Yi, for figuring out the real problem!

Fixes: 8016e29f43 ("ext4: fast commit recovery path")
Signed-off-by: Luis Henriques (SUSE) <luis.henriques@linux.dev>
Reviewed-by: Zhang Yi <yi.zhang@huawei.com>
Link: https://patch.msgid.link/20240515082857.32730-1-luis.henriques@linux.dev
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-08-19 05:45:02 +02:00
..
.kunitconfig
Kconfig
Makefile
acl.c
acl.h ext4: apply umask if ACL support is disabled 2023-11-28 16:56:35 +00:00
balloc.c ext4: add correct group descriptors and reserved GDT blocks to system zone 2023-09-19 12:23:01 +02:00
bitmap.c
block_validity.c ext4: add correct group descriptors and reserved GDT blocks to system zone 2023-09-19 12:23:01 +02:00
dir.c
ext4.h ext4: change s_last_trim_minblks type to unsigned long 2023-10-06 13:18:01 +02:00
ext4_extents.h
ext4_jbd2.c
ext4_jbd2.h
extents.c ext4: correct the hole length returned by ext4_map_blocks() 2024-03-01 13:21:46 +01:00
extents_status.c ext4: fix infinite loop when replaying fast_commit 2024-08-19 05:45:02 +02:00
extents_status.h
fast_commit.c
fast_commit.h
file.c
fsmap.c
fsmap.h
fsync.c
hash.c
ialloc.c
indirect.c ext4: only update i_reserved_data_blocks on successful block allocation 2023-07-23 13:47:49 +02:00
inline.c
inode-test.c
inode.c ext4: only update i_reserved_data_blocks on successful block allocation 2023-07-23 13:47:49 +02:00
ioctl.c ext4: fix to check return value of freeze_bdev() in ext4_shutdown() 2023-07-23 13:47:49 +02:00
mballoc.c ext4: fix potential unnitialized variable 2024-06-16 13:39:32 +02:00
mballoc.h ext4: set type of ac_groups_linear_remaining to __u32 to avoid overflow 2024-06-16 13:40:00 +02:00
migrate.c
mmp.c
move_extent.c ext4: fix double-free of blocks due to wrong extents moved_len 2024-02-23 08:55:06 +01:00
namei.c ext4: avoid excessive credit estimate in ext4_tmpfile() 2024-06-16 13:39:31 +02:00
orphan.c
page-io.c
readpage.c
resize.c ext4: fix corruption during on-line resize 2024-04-10 16:18:40 +02:00
super.c ext4: forbid commit inconsistent quota data when errors=remount-ro 2024-04-13 13:01:45 +02:00
symlink.c
sysfs.c
truncate.h
verity.c
xattr.c ext4: fix mb_cache_entry's e_refcnt leak in ext4_xattr_block_cache_find() 2024-06-16 13:40:00 +02:00
xattr.h
xattr_hurd.c
xattr_security.c
xattr_trusted.c
xattr_user.c