diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 0f9005cb1035..42fa3730e2d5 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -336,6 +336,12 @@ stop_handle: ext4_xattr_inode_array_free(ea_inode_array); return; no_delete: + /* + * Check out some where else accidentally dirty the evicting inode, + * which may probably cause inode use-after-free issues later. + */ + WARN_ON_ONCE(!list_empty_careful(&inode->i_io_list)); + if (!list_empty(&EXT4_I(inode)->i_fc_list)) ext4_fc_mark_ineligible(inode->i_sb, EXT4_FC_REASON_NOMEM); ext4_clear_inode(inode); /* We must guarantee clearing of inode... */