From: Greg Kroah-Hartman Date: Tue, 8 Oct 2024 10:37:11 +0000 (+0200) Subject: 4.19-stable patches X-Git-Tag: v6.6.55~30 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=34197b76273964256c0117e2440c54e9f1ad3ccd;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches added patches: ext4-fix-inode-tree-inconsistency-caused-by-enomem.patch --- diff --git a/queue-4.19/ext4-fix-inode-tree-inconsistency-caused-by-enomem.patch b/queue-4.19/ext4-fix-inode-tree-inconsistency-caused-by-enomem.patch new file mode 100644 index 00000000000..1fa3ad37721 --- /dev/null +++ b/queue-4.19/ext4-fix-inode-tree-inconsistency-caused-by-enomem.patch @@ -0,0 +1,45 @@ +From 3f5424790d4377839093b68c12b130077a4e4510 Mon Sep 17 00:00:00 2001 +From: zhanchengbin +Date: Tue, 3 Jan 2023 10:28:12 +0800 +Subject: ext4: fix inode tree inconsistency caused by ENOMEM + +From: zhanchengbin + +commit 3f5424790d4377839093b68c12b130077a4e4510 upstream. + +If ENOMEM fails when the extent is splitting, we need to restore the length +of the split extent. +In the ext4_split_extent_at function, only in ext4_ext_create_new_leaf will +it alloc memory and change the shape of the extent tree,even if an ENOMEM +is returned at this time, the extent tree is still self-consistent, Just +restore the split extent lens in the function ext4_split_extent_at. + +ext4_split_extent_at + ext4_ext_insert_extent + ext4_ext_create_new_leaf + 1)ext4_ext_split + ext4_find_extent + 2)ext4_ext_grow_indepth + ext4_find_extent + +Signed-off-by: zhanchengbin +Reviewed-by: Jan Kara +Link: https://lore.kernel.org/r/20230103022812.130603-1-zhanchengbin1@huawei.com +Signed-off-by: Theodore Ts'o +Cc: Baokun Li +Signed-off-by: Greg Kroah-Hartman +--- + fs/ext4/extents.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/fs/ext4/extents.c ++++ b/fs/ext4/extents.c +@@ -3293,7 +3293,7 @@ static int ext4_split_extent_at(handle_t + ext4_ext_mark_unwritten(ex2); + + err = ext4_ext_insert_extent(handle, inode, ppath, &newex, flags); +- if (err != -ENOSPC && err != -EDQUOT) ++ if (err != -ENOSPC && err != -EDQUOT && err != -ENOMEM) + goto out; + + /* diff --git a/queue-4.19/series b/queue-4.19/series index d838dd46567..cf0fbb47105 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -225,3 +225,4 @@ rtc-at91sam9-drop-platform_data-support.patch rtc-at91sam9-fix-of-node-leak-in-probe-error-path.patch acpi-battery-simplify-battery-hook-locking.patch acpi-battery-fix-possible-crash-when-unregistering-a.patch +ext4-fix-inode-tree-inconsistency-caused-by-enomem.patch