From: Alex Zhuravlev Date: Wed, 31 Jan 2024 05:16:12 +0000 (+0300) Subject: LU-17486 ldiskfs: fix race in ext4_destroy_inode X-Git-Tag: 2.15.61~7 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=4b51f1df05c4219cd8f910ac8ad58e8de946bb56;p=fs%2Flustre-release.git LU-17486 ldiskfs: fix race in ext4_destroy_inode ext4_i_callback() can race with the access to i_reserved_data_blocks in ext4_destroy_inode() when used with preemption-enabled kernel. Signed-off-by: Alex Zhuravlev Change-Id: I69c6bcfbb24e6c07d28ebcd2bdd9d9e6f06ec8d1 Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/53868 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: Li Dongyang Reviewed-by: Neil Brown Reviewed-by: Oleg Drokin --- diff --git a/ldiskfs/kernel_patches/patches/rhel8/ext4-race-in-ext4-destroy-inode.patch b/ldiskfs/kernel_patches/patches/rhel8/ext4-race-in-ext4-destroy-inode.patch new file mode 100644 index 0000000..3ce9fcd --- /dev/null +++ b/ldiskfs/kernel_patches/patches/rhel8/ext4-race-in-ext4-destroy-inode.patch @@ -0,0 +1,20 @@ +Index: linux-4.18.0-32.el8.x86_64/fs/ext4/ext4.h +=================================================================== +--- linux-4.18.0-32.el8.x86_64.orig/fs/ext4/super.c ++++ linux-4.18.0-32.el8.x86_64/fs/ext4/super.c +@@ -1186,13 +1186,14 @@ static void ext4_destroy_inode(struct in + true); + dump_stack(); + } +- call_rcu(&inode->i_rcu, ext4_i_callback); + + if (EXT4_I(inode)->i_reserved_data_blocks) + ext4_msg(inode->i_sb, KERN_ERR, + "Inode %lu (%p): i_reserved_data_blocks (%u) not cleared!", + inode->i_ino, EXT4_I(inode), + EXT4_I(inode)->i_reserved_data_blocks); ++ ++ call_rcu(&inode->i_rcu, ext4_i_callback); + } + + static void init_once(void *foo) diff --git a/ldiskfs/kernel_patches/series/ldiskfs-4.18-rhel8.8.series b/ldiskfs/kernel_patches/series/ldiskfs-4.18-rhel8.8.series index 811065a..cb5726a 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-4.18-rhel8.8.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-4.18-rhel8.8.series @@ -38,3 +38,4 @@ rhel8.7/ext4-filename-encode.patch rhel8/ext4-old_ea_inodes_handling_fix.patch rhel8.4/ext4-optimize-find_delayed_extent.patch rhel8/ext4-encdata.patch +rhel8/ext4-race-in-ext4-destroy-inode.patch