Messages in this thread | | | From | Jia-Ju Bai <> | Subject | [BUG] fs: ext4: possible ABBA deadlock in ext4_inline_data_truncate() and ext4_punch_hole() | Date | Thu, 9 Dec 2021 19:10:44 +0800 |
| |
Hello,
My static analysis tool reports a possible ABBA deadlock in the ext4 module in Linux 5.10:
ext4_inline_data_truncate() down_write(&EXT4_I(inode)->i_data_sem); --> Line 1895 (Lock A) ext4_xattr_ibody_get() ext4_xattr_inode_get() ext4_xattr_inode_iget() inode_lock(inode); --> Line 427 (Lock B)
ext4_punch_hole() inode_lock(inode); --> Line 4018 (Lock B) ext4_update_disksize_before_punch() ext4_update_i_disksize() down_write(&EXT4_I(inode)->i_data_sem); --> Line 3248 (Lock A)
When ext4_inline_data_truncate() and ext4_punch_hole() are concurrently executed, the deadlock can occur.
I am not quite sure whether this possible deadlock is real and how to fix it if it is real. Any feedback would be appreciated, thanks :)
Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
Best wishes, Jia-Ju Bai
| |